summaryrefslogtreecommitdiff
path: root/missing/strstr.c
diff options
context:
space:
mode:
Diffstat (limited to 'missing/strstr.c')
-rw-r--r--missing/strstr.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/missing/strstr.c b/missing/strstr.c
index 1673518f06..e6613c5d2f 100644
--- a/missing/strstr.c
+++ b/missing/strstr.c
@@ -1,20 +1,23 @@
/* public domain rewrite of strstr(3) */
+#include "ruby/missing.h"
+
+size_t strlen(const char*);
+
char *
-strstr(haystack, needle)
- char *haystack, *needle;
+strstr(const char *haystack, const char *needle)
{
- char *hend;
- char *a, *b;
+ const char *hend;
+ const char *a, *b;
- if (*needle == 0) return haystack;
+ if (*needle == 0) return (char *)haystack;
hend = haystack + strlen(haystack) - strlen(needle) + 1;
while (haystack < hend) {
if (*haystack == *needle) {
a = haystack;
b = needle;
for (;;) {
- if (*b == 0) return haystack;
+ if (*b == 0) return (char *)haystack;
if (*a++ != *b++) {
break;
}
class='add' style='width: 0.0%;'/> -rw-r--r--COPYING56
-rw-r--r--COPYING.ja51
-rw-r--r--ChangeLog16682
-rw-r--r--GPL339
-rw-r--r--KNOWNBUGS.rb5
-rw-r--r--LEGAL533
-rw-r--r--MANIFEST186
-rw-r--r--Makefile.in658
-rw-r--r--NEWS312
-rw-r--r--README196
-rw-r--r--README.EXT1863
-rw-r--r--README.EXT.ja1634
-rw-r--r--README.ja192
-rw-r--r--README.jp150
-rw-r--r--ToDo4
-rw-r--r--addr2line.c1082
-rw-r--r--addr2line.h21
-rw-r--r--array.c5976
-rw-r--r--benchmark/bm_app_answer.rb15
-rw-r--r--benchmark/bm_app_aobench.rb292
-rw-r--r--benchmark/bm_app_erb.rb26
-rw-r--r--benchmark/bm_app_factorial.rb11
-rw-r--r--benchmark/bm_app_fib.rb10
-rw-r--r--benchmark/bm_app_mandelbrot.rb23
-rw-r--r--benchmark/bm_app_pentomino.rb259
-rw-r--r--benchmark/bm_app_raise.rb8
-rw-r--r--benchmark/bm_app_strconcat.rb5
-rw-r--r--benchmark/bm_app_tak.rb13
-rw-r--r--benchmark/bm_app_tarai.rb10
-rw-r--r--benchmark/bm_app_uri.rb8
-rw-r--r--benchmark/bm_hash_shift.rb10
-rw-r--r--benchmark/bm_io_file_create.rb13
-rw-r--r--benchmark/bm_io_file_read.rb15
-rw-r--r--benchmark/bm_io_file_write.rb14
-rw-r--r--benchmark/bm_io_select.rb9
-rw-r--r--benchmark/bm_io_select2.rb22
-rw-r--r--benchmark/bm_io_select3.rb21
-rw-r--r--benchmark/bm_loop_for.rb3
-rw-r--r--benchmark/bm_loop_generator.rb14
-rw-r--r--benchmark/bm_loop_times.rb1
-rw-r--r--benchmark/bm_loop_whileloop.rb4
-rw-r--r--benchmark/bm_loop_whileloop2.rb4
-rw-r--r--benchmark/bm_so_ackermann.rb19
-rw-r--r--benchmark/bm_so_array.rb23
-rw-r--r--benchmark/bm_so_binary_trees.rb62
-rw-r--r--benchmark/bm_so_concatenate.rb18
-rw-r--r--benchmark/bm_so_count_words.rb19
-rw-r--r--benchmark/bm_so_exception.rb61
-rw-r--r--benchmark/bm_so_fannkuch.rb45
-rw-r--r--benchmark/bm_so_fasta.rb81
-rw-r--r--benchmark/bm_so_k_nucleotide.rb48
-rw-r--r--benchmark/bm_so_lists.rb47
-rw-r--r--benchmark/bm_so_mandelbrot.rb57
-rw-r--r--benchmark/bm_so_matrix.rb48
-rw-r--r--benchmark/bm_so_meteor_contest.rb564
-rw-r--r--benchmark/bm_so_nbody.rb148
-rw-r--r--benchmark/bm_so_nested_loop.rb24
-rw-r--r--benchmark/bm_so_nsieve.rb35
-rw-r--r--benchmark/bm_so_nsieve_bits.rb43
-rw-r--r--benchmark/bm_so_object.rb56
-rw-r--r--benchmark/bm_so_partial_sums.rb31
-rw-r--r--benchmark/bm_so_pidigits.rb92
-rw-r--r--benchmark/bm_so_random.rb20
-rw-r--r--benchmark/bm_so_reverse_complement.rb30
-rw-r--r--benchmark/bm_so_sieve.rb24
-rw-r--r--benchmark/bm_so_spectralnorm.rb50
-rw-r--r--benchmark/bm_vm1_attr_ivar.rb14
-rw-r--r--benchmark/bm_vm1_attr_ivar_set.rb14
-rw-r--r--benchmark/bm_vm1_block.rb10
-rw-r--r--benchmark/bm_vm1_const.rb8
-rw-r--r--benchmark/bm_vm1_ensure.rb11
-rw-r--r--benchmark/bm_vm1_float_simple.rb7
-rw-r--r--benchmark/bm_vm1_gc_short_lived.rb10
-rw-r--r--benchmark/bm_vm1_gc_short_with_complex_long.rb27
-rw-r--r--benchmark/bm_vm1_gc_short_with_long.rb13
-rw-r--r--benchmark/bm_vm1_gc_short_with_symbol.rb15
-rw-r--r--benchmark/bm_vm1_gc_wb_ary.rb10
-rw-r--r--benchmark/bm_vm1_gc_wb_obj.rb13
-rw-r--r--benchmark/bm_vm1_ivar.rb8
-rw-r--r--benchmark/bm_vm1_ivar_set.rb6
-rw-r--r--benchmark/bm_vm1_length.rb9
-rw-r--r--benchmark/bm_vm1_lvar_init.rb18
-rw-r--r--benchmark/bm_vm1_lvar_set.rb5
-rw-r--r--benchmark/bm_vm1_neq.rb8
-rw-r--r--benchmark/bm_vm1_not.rb7
-rw-r--r--benchmark/bm_vm1_rescue.rb7
-rw-r--r--benchmark/bm_vm1_simplereturn.rb9
-rw-r--r--benchmark/bm_vm1_swap.rb8
-rw-r--r--benchmark/bm_vm1_yield.rb10
-rw-r--r--benchmark/bm_vm2_array.rb5
-rw-r--r--benchmark/bm_vm2_bigarray.rb106
-rw-r--r--benchmark/bm_vm2_bighash.rb5
-rw-r--r--benchmark/bm_vm2_case.rb14
-rw-r--r--benchmark/bm_vm2_defined_method.rb9
-rw-r--r--benchmark/bm_vm2_dstr.rb6
-rw-r--r--benchmark/bm_vm2_eval.rb6
-rw-r--r--benchmark/bm_vm2_method.rb9
-rw-r--r--benchmark/bm_vm2_method_missing.rb12
-rw-r--r--benchmark/bm_vm2_method_with_block.rb9
-rw-r--r--benchmark/bm_vm2_mutex.rb9
-rw-r--r--benchmark/bm_vm2_poly_method.rb20
-rw-r--r--benchmark/bm_vm2_poly_method_ov.rb20
-rw-r--r--benchmark/bm_vm2_proc.rb14
-rw-r--r--benchmark/bm_vm2_raise1.rb18
-rw-r--r--benchmark/bm_vm2_raise2.rb18
-rw-r--r--benchmark/bm_vm2_regexp.rb6
-rw-r--r--benchmark/bm_vm2_send.rb12
-rw-r--r--benchmark/bm_vm2_super.rb20
-rw-r--r--benchmark/bm_vm2_unif1.rb8
-rw-r--r--benchmark/bm_vm2_zsuper.rb20
-rw-r--r--benchmark/bm_vm3_backtrace.rb22
-rw-r--r--benchmark/bm_vm3_clearmethodcache.rb8
-rwxr-xr-xbenchmark/bm_vm3_gc.rb7
-rw-r--r--benchmark/bm_vm_thread_alive_check1.rb6
-rw-r--r--benchmark/bm_vm_thread_create_join.rb6
-rw-r--r--benchmark/bm_vm_thread_mutex1.rb21
-rw-r--r--benchmark/bm_vm_thread_mutex2.rb21
-rw-r--r--benchmark/bm_vm_thread_mutex3.rb20
-rw-r--r--benchmark/bm_vm_thread_pass.rb15
-rw-r--r--benchmark/bm_vm_thread_pass_flood.rb8
-rw-r--r--benchmark/bm_vm_thread_pipe.rb17
-rw-r--r--benchmark/bm_vm_thread_queue.rb18
-rw-r--r--benchmark/driver.rb301
-rw-r--r--benchmark/gc/aobench.rb1
-rw-r--r--benchmark/gc/binary_trees.rb1
-rw-r--r--benchmark/gc/gcbench.rb56
-rw-r--r--benchmark/gc/hash1.rb11
-rw-r--r--benchmark/gc/hash2.rb7
-rw-r--r--benchmark/gc/null.rb1
-rw-r--r--benchmark/gc/pentomino.rb1
-rw-r--r--benchmark/gc/rdoc.rb13
-rw-r--r--benchmark/gc/redblack.rb366
-rw-r--r--benchmark/gc/ring.rb29
-rw-r--r--benchmark/make_fasta_output.rb19
-rw-r--r--benchmark/other-lang/ack.pl11
-rw-r--r--benchmark/other-lang/ack.py16
-rw-r--r--benchmark/other-lang/ack.rb12
-rw-r--r--benchmark/other-lang/ack.scm7
-rw-r--r--benchmark/other-lang/eval.rb66
-rw-r--r--benchmark/other-lang/fact.pl13
-rw-r--r--benchmark/other-lang/fact.py18
-rw-r--r--benchmark/other-lang/fact.rb13
-rw-r--r--benchmark/other-lang/fact.scm8
-rw-r--r--benchmark/other-lang/fib.pl11
-rw-r--r--benchmark/other-lang/fib.py7
-rw-r--r--benchmark/other-lang/fib.rb9
-rw-r--r--benchmark/other-lang/fib.scm7
-rw-r--r--benchmark/other-lang/loop.pl3
-rw-r--r--benchmark/other-lang/loop.py2
-rw-r--r--benchmark/other-lang/loop.rb4
-rw-r--r--benchmark/other-lang/loop.scm1
-rw-r--r--benchmark/other-lang/loop2.rb1
-rw-r--r--benchmark/other-lang/tak.pl11
-rw-r--r--benchmark/other-lang/tak.py8
-rw-r--r--benchmark/other-lang/tak.rb13
-rw-r--r--benchmark/other-lang/tak.scm10
-rw-r--r--benchmark/prepare_so_count_words.rb15
-rw-r--r--benchmark/prepare_so_k_nucleotide.rb2
-rw-r--r--benchmark/prepare_so_reverse_complement.rb2
-rw-r--r--benchmark/report.rb79
-rw-r--r--benchmark/run.rb127
-rw-r--r--benchmark/runc.rb27
-rw-r--r--benchmark/wc.input.base25
-rw-r--r--bignum.c7577
-rwxr-xr-xbin/erb155
-rwxr-xr-xbin/gem25
-rwxr-xr-xbin/irb11
-rwxr-xr-xbin/rake33
-rwxr-xr-xbin/rdoc44
-rwxr-xr-xbin/ri12
-rwxr-xr-xbin/testrb3
-rw-r--r--bootstraptest/pending.rb39
-rwxr-xr-xbootstraptest/runner.rb485
-rw-r--r--bootstraptest/test_attr.rb36
-rw-r--r--bootstraptest/test_autoload.rb70
-rw-r--r--bootstraptest/test_block.rb599
-rw-r--r--bootstraptest/test_class.rb169
-rw-r--r--bootstraptest/test_eval.rb324
-rw-r--r--bootstraptest/test_exception.rb432
-rw-r--r--bootstraptest/test_finalizer.rb8
-rw-r--r--bootstraptest/test_flip.rb1
-rw-r--r--bootstraptest/test_flow.rb591
-rw-r--r--bootstraptest/test_fork.rb69
-rw-r--r--bootstraptest/test_gc.rb34
-rw-r--r--bootstraptest/test_io.rb112
-rw-r--r--bootstraptest/test_jump.rb308
-rw-r--r--bootstraptest/test_literal.rb231
-rw-r--r--bootstraptest/test_literal_suffix.rb54
-rw-r--r--bootstraptest/test_load.rb27
-rw-r--r--bootstraptest/test_marshal.rb5
-rw-r--r--bootstraptest/test_massign.rb183
-rw-r--r--bootstraptest/test_method.rb1220
-rw-r--r--bootstraptest/test_objectspace.rb46
-rw-r--r--bootstraptest/test_proc.rb483
-rw-r--r--bootstraptest/test_struct.rb5
-rw-r--r--bootstraptest/test_syntax.rb902
-rw-r--r--bootstraptest/test_thread.rb464
-rw-r--r--class.c1921
-rw-r--r--common.mk1103
-rw-r--r--compar.c247
-rw-r--r--compile.c5933
-rw-r--r--complex.c2256
-rw-r--r--config.dj36
-rwxr-xr-xconfig.guess613
-rwxr-xr-xconfig.sub931
-rw-r--r--configure.bat5
-rw-r--r--configure.in4071
-rw-r--r--constant.h36
-rw-r--r--cont.c1694
-rw-r--r--cygwin/GNUmakefile.in109
-rw-r--r--debug.c162
-rw-r--r--defines.h50
-rw-r--r--defs/default_gems5
-rw-r--r--defs/gmake.mk29
-rw-r--r--defs/id.def105
-rw-r--r--defs/keywords53
-rw-r--r--defs/known_errors.def145
-rw-r--r--defs/lex.c.src53
-rw-r--r--defs/opt_insn_unif.def29
-rw-r--r--defs/opt_operand.def22
-rw-r--r--dir.c2290
-rw-r--r--dln.c831
-rw-r--r--dln.h45
-rw-r--r--dln_find.c294
-rw-r--r--dmydln.c9
-rw-r--r--dmyext.c7
-rw-r--r--doc/.document4
-rw-r--r--doc/ChangeLog-1.8.024350
-rw-r--r--doc/ChangeLog-1.9.392772
-rw-r--r--doc/ChangeLog-2.0.024015
-rw-r--r--doc/ChangeLog-YARV6917
-rw-r--r--doc/NEWS-1.8.7669
-rw-r--r--doc/NEWS-1.9.1429
-rw-r--r--doc/NEWS-1.9.2509
-rw-r--r--doc/NEWS-1.9.3341
-rw-r--r--doc/NEWS-2.0.0531
-rw-r--r--doc/contributing.rdoc345
-rw-r--r--doc/etc.rd.ja75
-rw-r--r--doc/forwardable.rd.ja80
-rw-r--r--doc/globals.rdoc69
-rw-r--r--doc/images/boottime-classes.pngbin0 -> 28677 bytes-rw-r--r--doc/irb/irb-tools.rd.ja184
-rw-r--r--doc/irb/irb.rd.ja412
-rw-r--r--doc/marshal.rdoc313
-rw-r--r--doc/pty/README.expect.ja21
-rw-r--r--doc/pty/README.ja76
-rw-r--r--doc/regexp.rdoc685
-rw-r--r--doc/security.rdoc144
-rw-r--r--doc/shell.rd.ja335
-rw-r--r--doc/standard_library.rdoc126
-rw-r--r--doc/syntax.rdoc34
-rw-r--r--doc/syntax/assignment.rdoc455
-rw-r--r--doc/syntax/calling_methods.rdoc349
-rw-r--r--doc/syntax/control_expressions.rdoc500
-rw-r--r--doc/syntax/exceptions.rdoc96
-rw-r--r--doc/syntax/literals.rdoc307
-rw-r--r--doc/syntax/methods.rdoc414
-rw-r--r--doc/syntax/miscellaneous.rdoc107
-rw-r--r--doc/syntax/modules_and_classes.rdoc345
-rw-r--r--doc/syntax/precedence.rdoc60
-rw-r--r--doc/syntax/refinements.rdoc266
-rw-r--r--enc/Makefile.in82
-rw-r--r--enc/ascii.c96
-rw-r--r--enc/big5.c373
-rw-r--r--enc/cp949.c221
-rw-r--r--enc/depend160
-rw-r--r--enc/emacs_mule.c341
-rw-r--r--enc/encdb.c31
-rw-r--r--enc/encinit.c.erb26
-rw-r--r--enc/euc_jp.c644
-rw-r--r--enc/euc_kr.c194
-rw-r--r--enc/euc_tw.c227
-rw-r--r--enc/gb18030.c603
-rw-r--r--enc/gb2312.c13
-rw-r--r--enc/gbk.c224
-rw-r--r--enc/iso_2022_jp.h47
-rw-r--r--enc/iso_8859_1.c289
-rw-r--r--enc/iso_8859_10.c246
-rw-r--r--enc/iso_8859_11.c113
-rw-r--r--enc/iso_8859_13.c245
-rw-r--r--enc/iso_8859_14.c248
-rw-r--r--enc/iso_8859_15.c242
-rw-r--r--enc/iso_8859_16.c244
-rw-r--r--enc/iso_8859_2.c254
-rw-r--r--enc/iso_8859_3.c242
-rw-r--r--enc/iso_8859_4.c244
-rw-r--r--enc/iso_8859_5.c232
-rw-r--r--enc/iso_8859_6.c109
-rw-r--r--enc/iso_8859_7.c239
-rw-r--r--enc/iso_8859_8.c109
-rw-r--r--enc/iso_8859_9.c245
-rw-r--r--enc/koi8_r.c221
-rw-r--r--enc/koi8_u.c223
-rwxr-xr-xenc/make_encmake.rb136
-rw-r--r--enc/mktable.c1162
-rw-r--r--enc/prelude.rb6
-rw-r--r--enc/shift_jis.c614
-rw-r--r--enc/trans/CP/CP932UDA%UCS.src1912
-rw-r--r--enc/trans/CP/CP932VDC@IBM%UCS.src420
-rw-r--r--enc/trans/CP/CP932VDC@NEC_IBM%UCS.src406
-rw-r--r--enc/trans/CP/UCS%CP932UDA.src1912
-rw-r--r--enc/trans/CP/UCS%CP932VDC@IBM.src420
-rw-r--r--enc/trans/CP/UCS%CP932VDC@NEC_IBM.src406
-rw-r--r--enc/trans/EMOJI/EMOJI_ISO-2022-JP-KDDI%UCS.src658
-rw-r--r--enc/trans/EMOJI/EMOJI_SHIFT_JIS-DOCOMO%UCS.src293
-rw-r--r--enc/trans/EMOJI/EMOJI_SHIFT_JIS-KDDI%UCS.src658
-rw-r--r--enc/trans/EMOJI/EMOJI_SHIFT_JIS-KDDI-UNDOC%UCS.src658
-rw-r--r--enc/trans/EMOJI/EMOJI_SHIFT_JIS-SOFTBANK%UCS.src496
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_ISO-2022-JP-KDDI-UNDOC.src658
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_ISO-2022-JP-KDDI.src658
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_SHIFT_JIS-DOCOMO.src293
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_SHIFT_JIS-KDDI-UNDOC.src658
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_SHIFT_JIS-KDDI.src658
-rw-r--r--enc/trans/EMOJI/UCS%EMOJI_SHIFT_JIS-SOFTBANK.src496
-rw-r--r--enc/trans/GB/GB12345%UCS.src7618
-rw-r--r--enc/trans/GB/GB2312%UCS.src7535
-rw-r--r--enc/trans/GB/UCS%GB12345.src7620
-rw-r--r--enc/trans/GB/UCS%GB2312.src7531
-rw-r--r--enc/trans/JIS/JISX0201-KANA%UCS.src127
-rw-r--r--enc/trans/JIS/JISX0208@1990%UCS.src6972
-rw-r--r--enc/trans/JIS/JISX0208@MS%UCS.src6893
-rw-r--r--enc/trans/JIS/JISX0208UDC%UCS.src954
-rw-r--r--enc/trans/JIS/JISX0208VDC@NEC%UCS.src97
-rw-r--r--enc/trans/JIS/JISX0212%UCS.src6167
-rw-r--r--enc/trans/JIS/JISX0212@MS%UCS.src6081
-rw-r--r--enc/trans/JIS/JISX0212UDC%UCS.src954
-rw-r--r--enc/trans/JIS/JISX0212VDC@IBM%UCS.src120
-rw-r--r--enc/trans/JIS/JISX0213-1%UCS@BMP.src1926
-rw-r--r--enc/trans/JIS/JISX0213-1%UCS@SIP.src60
-rw-r--r--enc/trans/JIS/JISX0213-2%UCS@BMP.src2193
-rw-r--r--enc/trans/JIS/JISX0213-2%UCS@SIP.src311
-rw-r--r--enc/trans/JIS/UCS%JISX0201-KANA.src127
-rw-r--r--enc/trans/JIS/UCS%JISX0208@1990.src6974
-rw-r--r--enc/trans/JIS/UCS%JISX0208@MS.src6894
-rw-r--r--enc/trans/JIS/UCS%JISX0208UDC.src955
-rw-r--r--enc/trans/JIS/UCS%JISX0208VDC@NEC.src98
-rw-r--r--enc/trans/JIS/UCS%JISX0212.src6170
-rw-r--r--enc/trans/JIS/UCS%JISX0212@MS.src6082
-rw-r--r--enc/trans/JIS/UCS%JISX0212UDC.src955
-rw-r--r--enc/trans/JIS/UCS%JISX0212VDC@IBM.src121
-rw-r--r--enc/trans/JIS/UCS@BMP%JISX0213-1.src1922
-rw-r--r--enc/trans/JIS/UCS@BMP%JISX0213-2.src2189
-rw-r--r--enc/trans/JIS/UCS@SIP%JISX0213-1.src56
-rw-r--r--enc/trans/JIS/UCS@SIP%JISX0213-2.src307
-rw-r--r--enc/trans/big5-hkscs-tbl.rb37302
-rw-r--r--enc/trans/big5-uao-tbl.rb19784
-rw-r--r--enc/trans/big5.trans32
-rw-r--r--enc/trans/chinese.trans31
-rw-r--r--enc/trans/cp850-tbl.rb130
-rw-r--r--enc/trans/cp852-tbl.rb130
-rw-r--r--enc/trans/cp855-tbl.rb130
-rw-r--r--enc/trans/cp949-tbl.rb8831
-rw-r--r--enc/trans/emoji-exchange-tbl.rb8407
-rw-r--r--enc/trans/emoji.trans36
-rw-r--r--enc/trans/emoji_iso2022_kddi.trans216
-rw-r--r--enc/trans/emoji_sjis_docomo.trans32
-rw-r--r--enc/trans/emoji_sjis_kddi.trans33
-rw-r--r--enc/trans/emoji_sjis_softbank.trans32
-rw-r--r--enc/trans/escape.trans93
-rw-r--r--enc/trans/euckr-tbl.rb8228
-rw-r--r--enc/trans/gb18030-tbl.rb63362
-rw-r--r--enc/trans/gb18030.trans183
-rw-r--r--enc/trans/gbk-tbl.rb21794
-rw-r--r--enc/trans/gbk.trans15
-rw-r--r--enc/trans/ibm437-tbl.rb130
-rw-r--r--enc/trans/ibm737-tbl.rb130
-rw-r--r--enc/trans/ibm775-tbl.rb130
-rw-r--r--enc/trans/ibm852-tbl.rb130
-rw-r--r--enc/trans/ibm855-tbl.rb130
-rw-r--r--enc/trans/ibm857-tbl.rb127
-rw-r--r--enc/trans/ibm860-tbl.rb130
-rw-r--r--enc/trans/ibm861-tbl.rb130
-rw-r--r--enc/trans/ibm862-tbl.rb130
-rw-r--r--enc/trans/ibm863-tbl.rb130
-rw-r--r--enc/trans/ibm865-tbl.rb130
-rw-r--r--enc/trans/ibm866-tbl.rb130
-rw-r--r--enc/trans/ibm869-tbl.rb121
-rw-r--r--enc/trans/iso-8859-1-tbl.rb98
-rw-r--r--enc/trans/iso-8859-10-tbl.rb98
-rw-r--r--enc/trans/iso-8859-11-tbl.rb90
-rw-r--r--enc/trans/iso-8859-13-tbl.rb98
-rw-r--r--enc/trans/iso-8859-14-tbl.rb98
-rw-r--r--enc/trans/iso-8859-15-tbl.rb98
-rw-r--r--enc/trans/iso-8859-16-tbl.rb98
-rw-r--r--enc/trans/iso-8859-2-tbl.rb98
-rw-r--r--enc/trans/iso-8859-3-tbl.rb91
-rw-r--r--enc/trans/iso-8859-4-tbl.rb98
-rw-r--r--enc/trans/iso-8859-5-tbl.rb98
-rw-r--r--enc/trans/iso-8859-6-tbl.rb53
-rw-r--r--enc/trans/iso-8859-7-tbl.rb95
-rw-r--r--enc/trans/iso-8859-8-tbl.rb62
-rw-r--r--enc/trans/iso-8859-9-tbl.rb98
-rw-r--r--enc/trans/iso2022.trans567
-rw-r--r--enc/trans/japanese.trans97
-rw-r--r--enc/trans/japanese_euc.trans57
-rw-r--r--enc/trans/japanese_sjis.trans33
-rw-r--r--enc/trans/koi8-r-tbl.rb130
-rw-r--r--enc/trans/koi8-u-tbl.rb130
-rw-r--r--enc/trans/korean.trans18
-rw-r--r--enc/trans/maccroatian-tbl.rb129
-rw-r--r--enc/trans/maccyrillic-tbl.rb130
-rw-r--r--enc/trans/macgreek-tbl.rb129
-rw-r--r--enc/trans/maciceland-tbl.rb129
-rw-r--r--enc/trans/macroman-tbl.rb129
-rw-r--r--enc/trans/macromania-tbl.rb129
-rw-r--r--enc/trans/macturkish-tbl.rb128
-rw-r--r--enc/trans/macukraine-tbl.rb130
-rw-r--r--enc/trans/newline.trans135
-rw-r--r--enc/trans/single_byte.trans91
-rw-r--r--enc/trans/tis-620-tbl.rb89
-rw-r--r--enc/trans/transdb.c18
-rw-r--r--enc/trans/ucm/glibc-BIG5-2.3.3.ucm14087
-rw-r--r--enc/trans/ucm/glibc-BIG5HKSCS-2.3.3.ucm18332
-rw-r--r--enc/trans/ucm/windows-950-2000.ucm20379
-rw-r--r--enc/trans/ucm/windows-950_hkscs-2001.ucm23446
-rw-r--r--enc/trans/utf8_mac-tbl.rb23154
-rw-r--r--enc/trans/utf8_mac.trans256
-rw-r--r--enc/trans/utf_16_32.trans556
-rw-r--r--enc/trans/windows-1250-tbl.rb125
-rw-r--r--enc/trans/windows-1251-tbl.rb129
-rw-r--r--enc/trans/windows-1252-tbl.rb125
-rw-r--r--enc/trans/windows-1253-tbl.rb113
-rw-r--r--enc/trans/windows-1254-tbl.rb123
-rw-r--r--enc/trans/windows-1255-tbl.rb141
-rw-r--r--enc/trans/windows-1256-tbl.rb130
-rw-r--r--enc/trans/windows-1257-tbl.rb118
-rw-r--r--enc/trans/windows-874-tbl.rb99
-rw-r--r--enc/unicode.c680
-rw-r--r--enc/unicode/casefold.h2238
-rw-r--r--enc/unicode/name2ctype.h28722
-rw-r--r--enc/unicode/name2ctype.h.blt28722
-rw-r--r--enc/unicode/name2ctype.kwd26550
-rw-r--r--enc/unicode/name2ctype.src26550
-rw-r--r--enc/us_ascii.c33
-rw-r--r--enc/utf_16_32.h5
-rw-r--r--enc/utf_16be.c256
-rw-r--r--enc/utf_16le.c248
-rw-r--r--enc/utf_32be.c193
-rw-r--r--enc/utf_32le.c192
-rw-r--r--enc/utf_7.h5
-rw-r--r--enc/utf_8.c457
-rw-r--r--enc/windows_1251.c210
-rw-r--r--enc/windows_31j.c80
-rw-r--r--enc/x_emoji.h26
-rw-r--r--encoding.c1947
-rw-r--r--enum.c2889
-rw-r--r--enumerator.c2087
-rw-r--r--env.h49
-rw-r--r--error.c2560
-rw-r--r--eval.c6068
-rw-r--r--eval_error.c304
-rw-r--r--eval_intern.h260
-rw-r--r--eval_jump.c142
-rw-r--r--ext/-test-/array/resize/extconf.rb1
-rw-r--r--ext/-test-/array/resize/resize.c14
-rw-r--r--ext/-test-/bignum/big2str.c54
-rw-r--r--ext/-test-/bignum/bigzero.c26
-rw-r--r--ext/-test-/bignum/depend7
-rw-r--r--ext/-test-/bignum/div.c36
-rw-r--r--ext/-test-/bignum/extconf.rb7
-rw-r--r--ext/-test-/bignum/init.c11
-rw-r--r--ext/-test-/bignum/intpack.c88
-rw-r--r--ext/-test-/bignum/mul.c66
-rw-r--r--ext/-test-/bignum/str2big.c39
-rw-r--r--ext/-test-/bug-3571/bug.c23
-rw-r--r--ext/-test-/bug-3571/extconf.rb1
-rw-r--r--ext/-test-/bug-3662/bug.c16
-rw-r--r--ext/-test-/bug-3662/extconf.rb1
-rw-r--r--ext/-test-/bug-5832/bug.c14
-rw-r--r--ext/-test-/bug-5832/extconf.rb1
-rw-r--r--ext/-test-/bug_reporter/bug_reporter.c24
-rw-r--r--ext/-test-/bug_reporter/extconf.rb1
-rw-r--r--ext/-test-/class/class2name.c14
-rw-r--r--ext/-test-/class/extconf.rb7
-rw-r--r--ext/-test-/class/init.c11
-rw-r--r--ext/-test-/debug/depend3
-rw-r--r--ext/-test-/debug/extconf.rb6
-rw-r--r--ext/-test-/debug/init.c11
-rw-r--r--ext/-test-/debug/inspector.c32
-rw-r--r--ext/-test-/debug/profile_frames.c43
-rw-r--r--ext/-test-/exception/depend3
-rw-r--r--ext/-test-/exception/enc_raise.c15
-rw-r--r--ext/-test-/exception/ensured.c25
-rw-r--r--ext/-test-/exception/extconf.rb6
-rw-r--r--ext/-test-/exception/init.c11
-rw-r--r--ext/-test-/fatal/extconf.rb1
-rw-r--r--ext/-test-/fatal/rb_fatal.c19
-rw-r--r--ext/-test-/file/depend2
-rw-r--r--ext/-test-/file/extconf.rb7
-rw-r--r--ext/-test-/file/init.c11
-rw-r--r--ext/-test-/file/stat.c27
-rw-r--r--ext/-test-/funcall/extconf.rb2
-rw-r--r--ext/-test-/funcall/passing_block.c30
-rw-r--r--ext/-test-/iter/break.c25
-rw-r--r--ext/-test-/iter/extconf.rb1
-rw-r--r--ext/-test-/load/dot.dot/dot.dot.c1
-rw-r--r--ext/-test-/load/dot.dot/extconf.rb1
-rw-r--r--ext/-test-/marshal/compat/extconf.rb1
-rw-r--r--ext/-test-/marshal/compat/usrcompat.c32
-rw-r--r--ext/-test-/marshal/usr/extconf.rb1
-rw-r--r--ext/-test-/marshal/usr/usrmarshal.c35
-rw-r--r--ext/-test-/method/arity.c22
-rw-r--r--ext/-test-/method/extconf.rb6
-rw-r--r--ext/-test-/method/init.c11
-rw-r--r--ext/-test-/num2int/extconf.rb1
-rw-r--r--ext/-test-/num2int/num2int.c136
-rw-r--r--ext/-test-/old_thread_select/depend4
-rw-r--r--ext/-test-/old_thread_select/extconf.rb4
-rw-r--r--ext/-test-/old_thread_select/old_thread_select.c75
-rw-r--r--ext/-test-/path_to_class/extconf.rb6
-rw-r--r--ext/-test-/path_to_class/path_to_class.c15
-rw-r--r--ext/-test-/postponed_job/depend1
-rw-r--r--ext/-test-/postponed_job/extconf.rb1
-rw-r--r--ext/-test-/postponed_job/postponed_job.c53
-rw-r--r--ext/-test-/printf/depend3
-rw-r--r--ext/-test-/printf/extconf.rb1
-rw-r--r--ext/-test-/printf/printf.c100
-rw-r--r--ext/-test-/rational/depend3
-rw-r--r--ext/-test-/rational/extconf.rb7
-rw-r--r--ext/-test-/rational/rat.c38
-rw-r--r--ext/-test-/st/numhash/extconf.rb1
-rw-r--r--ext/-test-/st/numhash/numhash.c120
-rw-r--r--ext/-test-/st/update/extconf.rb1
-rw-r--r--ext/-test-/st/update/update.c34
-rw-r--r--ext/-test-/string/coderange.c30
-rw-r--r--ext/-test-/string/cstr.c26
-rw-r--r--ext/-test-/string/depend5
-rw-r--r--ext/-test-/string/ellipsize.c13
-rw-r--r--ext/-test-/string/enc_associate.c14
-rw-r--r--ext/-test-/string/enc_str_buf_cat.c14
-rw-r--r--ext/-test-/string/extconf.rb7
-rw-r--r--ext/-test-/string/init.c11
-rw-r--r--ext/-test-/string/modify.c22
-rw-r--r--ext/-test-/string/normalize.c18
-rw-r--r--ext/-test-/string/qsort.c61
-rw-r--r--ext/-test-/string/set_len.c14
-rw-r--r--ext/-test-/symbol/extconf.rb6
-rw-r--r--ext/-test-/symbol/init.c11
-rw-r--r--ext/-test-/symbol/intern.c14
-rw-r--r--ext/-test-/symbol/type.c43
-rw-r--r--ext/-test-/tracepoint/depend1
-rw-r--r--ext/-test-/tracepoint/extconf.rb1
-rw-r--r--ext/-test-/tracepoint/tracepoint.c77
-rw-r--r--ext/-test-/typeddata/extconf.rb1
-rw-r--r--ext/-test-/typeddata/typeddata.c20
-rw-r--r--ext/-test-/wait_for_single_fd/depend4
-rw-r--r--ext/-test-/wait_for_single_fd/extconf.rb1
-rw-r--r--ext/-test-/wait_for_single_fd/wait_for_single_fd.c30
-rw-r--r--ext/-test-/win32/dln/dlntest.c17
-rw-r--r--ext/-test-/win32/dln/extconf.rb37
-rw-r--r--ext/-test-/win32/dln/libdlntest.c4
-rw-r--r--ext/-test-/win32/dln/libdlntest.def2
-rw-r--r--ext/-test-/win32/fd_setsize/depend2
-rw-r--r--ext/-test-/win32/fd_setsize/extconf.rb3
-rw-r--r--ext/-test-/win32/fd_setsize/fd_setsize.c55
-rw-r--r--ext/.document102
-rw-r--r--ext/Setup28
-rw-r--r--ext/Setup.atheos31
-rw-r--r--ext/Setup.dj12
-rw-r--r--ext/Setup.emx33
-rw-r--r--ext/Setup.nacl49
-rw-r--r--ext/Setup.nt44
-rw-r--r--ext/Setup.x6812
-rw-r--r--ext/aix_ld.rb73
-rw-r--r--ext/bigdecimal/README60
-rw-r--r--ext/bigdecimal/bigdecimal.c6205
-rw-r--r--ext/bigdecimal/bigdecimal.gemspec30
-rw-r--r--ext/bigdecimal/bigdecimal.h322
-rw-r--r--ext/bigdecimal/depend1
-rw-r--r--ext/bigdecimal/extconf.rb6
-rw-r--r--ext/bigdecimal/lib/bigdecimal/jacobian.rb87
-rw-r--r--ext/bigdecimal/lib/bigdecimal/ludcmp.rb88
-rw-r--r--ext/bigdecimal/lib/bigdecimal/math.rb244
-rw-r--r--ext/bigdecimal/lib/bigdecimal/newton.rb79
-rw-r--r--ext/bigdecimal/lib/bigdecimal/util.rb127
-rw-r--r--ext/bigdecimal/sample/linear.rb72
-rw-r--r--ext/bigdecimal/sample/nlsolve.rb38
-rw-r--r--ext/bigdecimal/sample/pi.rb20
-rw-r--r--ext/continuation/continuation.c8
-rw-r--r--ext/continuation/extconf.rb3
-rw-r--r--ext/coverage/coverage.c109
-rw-r--r--ext/coverage/depend11
-rw-r--r--ext/coverage/extconf.rb4
-rw-r--r--ext/curses/MANIFEST6
-rw-r--r--ext/curses/curses.c4222
-rw-r--r--ext/curses/depend5
-rw-r--r--ext/curses/extconf.rb150
-rw-r--r--ext/curses/hello.rb28
-rw-r--r--ext/curses/rain.rb76
-rw-r--r--ext/curses/view.rb90
-rw-r--r--ext/date/date_core.c9564
-rw-r--r--ext/date/date_parse.c3128
-rw-r--r--ext/date/date_strftime.c633
-rw-r--r--ext/date/date_strptime.c699
-rw-r--r--ext/date/date_tmx.h56
-rw-r--r--ext/date/depend7
-rw-r--r--ext/date/extconf.rb2
-rw-r--r--ext/date/lib/date.rb61
-rw-r--r--ext/date/lib/date/format.rb1
-rw-r--r--ext/dbm/MANIFEST4
-rw-r--r--ext/dbm/dbm.c1049
-rw-r--r--ext/dbm/depend1
-rw-r--r--ext/dbm/extconf.rb273
-rw-r--r--ext/digest/bubblebabble/bubblebabble.c146
-rw-r--r--ext/digest/bubblebabble/depend1
-rw-r--r--ext/digest/bubblebabble/extconf.rb6
-rw-r--r--ext/digest/defs.h19
-rw-r--r--ext/digest/depend1
-rw-r--r--ext/digest/digest.c724
-rw-r--r--ext/digest/digest.h32
-rw-r--r--ext/digest/extconf.rb10
-rw-r--r--ext/digest/lib/digest.rb90
-rw-r--r--ext/digest/lib/digest/hmac.rb302
-rw-r--r--ext/digest/md5/depend3
-rw-r--r--ext/digest/md5/extconf.rb28
-rw-r--r--ext/digest/md5/md5.c422
-rw-r--r--ext/digest/md5/md5.h80
-rw-r--r--ext/digest/md5/md5init.c43
-rw-r--r--ext/digest/md5/md5ossl.c9
-rw-r--r--ext/digest/md5/md5ossl.h13
-rw-r--r--ext/digest/rmd160/depend3
-rw-r--r--ext/digest/rmd160/extconf.rb27
-rw-r--r--ext/digest/rmd160/rmd160.c461
-rw-r--r--ext/digest/rmd160/rmd160.h56
-rw-r--r--ext/digest/rmd160/rmd160init.c43
-rw-r--r--ext/digest/rmd160/rmd160ossl.c8
-rw-r--r--ext/digest/rmd160/rmd160ossl.h19
-rw-r--r--ext/digest/sha1/depend3
-rw-r--r--ext/digest/sha1/extconf.rb27
-rw-r--r--ext/digest/sha1/sha1.c269
-rw-r--r--ext/digest/sha1/sha1.h39
-rw-r--r--ext/digest/sha1/sha1init.c43
-rw-r--r--ext/digest/sha1/sha1ossl.c10
-rw-r--r--ext/digest/sha1/sha1ossl.h20
-rw-r--r--ext/digest/sha2/depend3
-rw-r--r--ext/digest/sha2/extconf.rb33
-rw-r--r--ext/digest/sha2/lib/sha2.rb107
-rw-r--r--ext/digest/sha2/sha2.c1075
-rw-r--r--ext/digest/sha2/sha2.h225
-rw-r--r--ext/digest/sha2/sha2init.c56
-rw-r--r--ext/digest/sha2/sha2ossl.c13
-rw-r--r--ext/digest/sha2/sha2ossl.h17
-rw-r--r--ext/digest/test.sh30
-rw-r--r--ext/dl/callback/depend15
-rw-r--r--ext/dl/callback/extconf.rb14
-rw-r--r--ext/dl/callback/mkcallback.rb242
-rw-r--r--ext/dl/cfunc.c677
-rw-r--r--ext/dl/cptr.c670
-rw-r--r--ext/dl/depend14
-rw-r--r--ext/dl/dl.c569
-rw-r--r--ext/dl/dl.h217
-rw-r--r--ext/dl/extconf.rb43
-rw-r--r--ext/dl/handle.c430
-rw-r--r--ext/dl/lib/dl.rb15
-rw-r--r--ext/dl/lib/dl/callback.rb112
-rw-r--r--ext/dl/lib/dl/cparser.rb156
-rw-r--r--ext/dl/lib/dl/func.rb251
-rw-r--r--ext/dl/lib/dl/import.rb268
-rw-r--r--ext/dl/lib/dl/pack.rb128
-rw-r--r--ext/dl/lib/dl/stack.rb116
-rw-r--r--ext/dl/lib/dl/struct.rb236
-rw-r--r--ext/dl/lib/dl/types.rb71
-rw-r--r--ext/dl/lib/dl/value.rb114
-rw-r--r--ext/etc/MANIFEST5
-rw-r--r--ext/etc/depend4
-rw-r--r--ext/etc/etc.c779
-rw-r--r--ext/etc/etc.doc73
-rw-r--r--ext/etc/extconf.rb25
-rwxr-xr-xext/extmk.rb731
-rw-r--r--ext/extmk.rb.in468
-rw-r--r--ext/extmk.rb.nt480
-rw-r--r--ext/fcntl/MANIFEST3
-rw-r--r--ext/fcntl/depend1
-rw-r--r--ext/fcntl/extconf.rb2
-rw-r--r--ext/fcntl/fcntl.c157
-rw-r--r--ext/fiber/extconf.rb3
-rw-r--r--ext/fiber/fiber.c8
-rw-r--r--ext/fiddle/closure.c316
-rw-r--r--ext/fiddle/closure.h8
-rw-r--r--ext/fiddle/conversions.c141
-rw-r--r--ext/fiddle/conversions.h44
-rw-r--r--ext/fiddle/depend4
-rw-r--r--ext/fiddle/extconf.rb59
-rw-r--r--ext/fiddle/fiddle.c454
-rw-r--r--ext/fiddle/fiddle.h143
-rw-r--r--ext/fiddle/function.c254
-rw-r--r--ext/fiddle/function.h8
-rw-r--r--ext/fiddle/handle.c477
-rw-r--r--ext/fiddle/lib/fiddle.rb55
-rw-r--r--ext/fiddle/lib/fiddle/closure.rb48
-rw-r--r--ext/fiddle/lib/fiddle/cparser.rb176
-rw-r--r--ext/fiddle/lib/fiddle/function.rb17
-rw-r--r--ext/fiddle/lib/fiddle/import.rb314
-rw-r--r--ext/fiddle/lib/fiddle/pack.rb128
-rw-r--r--ext/fiddle/lib/fiddle/struct.rb243
-rw-r--r--ext/fiddle/lib/fiddle/types.rb71
-rw-r--r--ext/fiddle/lib/fiddle/value.rb112
-rw-r--r--ext/fiddle/pointer.c713
-rw-r--r--ext/gdbm/README1
-rw-r--r--ext/gdbm/extconf.rb7
-rw-r--r--ext/gdbm/gdbm.c1286
-rw-r--r--ext/io/console/console.c798
-rw-r--r--ext/io/console/depend4
-rw-r--r--ext/io/console/extconf.rb26
-rw-r--r--ext/io/console/io-console.gemspec21
-rw-r--r--ext/io/console/lib/console/size.rb22
-rw-r--r--ext/io/nonblock/depend4
-rw-r--r--ext/io/nonblock/extconf.rb8
-rw-r--r--ext/io/nonblock/nonblock.c135
-rw-r--r--ext/io/wait/depend4
-rw-r--r--ext/io/wait/extconf.rb18
-rw-r--r--ext/io/wait/wait.c187
-rw-r--r--ext/json/extconf.rb3
-rw-r--r--ext/json/fbuffer/fbuffer.h181
-rw-r--r--ext/json/generator/depend1
-rw-r--r--ext/json/generator/extconf.rb4
-rw-r--r--ext/json/generator/generator.c1435
-rw-r--r--ext/json/generator/generator.h148
-rw-r--r--ext/json/lib/json.rb62
-rw-r--r--ext/json/lib/json/add/bigdecimal.rb28
-rw-r--r--ext/json/lib/json/add/complex.rb22
-rw-r--r--ext/json/lib/json/add/core.rb11
-rw-r--r--ext/json/lib/json/add/date.rb34
-rw-r--r--ext/json/lib/json/add/date_time.rb50
-rw-r--r--ext/json/lib/json/add/exception.rb31
-rw-r--r--ext/json/lib/json/add/ostruct.rb31
-rw-r--r--ext/json/lib/json/add/range.rb29
-rw-r--r--ext/json/lib/json/add/rational.rb22
-rw-r--r--ext/json/lib/json/add/regexp.rb30
-rw-r--r--ext/json/lib/json/add/struct.rb30
-rw-r--r--ext/json/lib/json/add/symbol.rb25
-rw-r--r--ext/json/lib/json/add/time.rb38
-rw-r--r--ext/json/lib/json/common.rb484
-rw-r--r--ext/json/lib/json/ext.rb21
-rw-r--r--ext/json/lib/json/generic_object.rb70
-rw-r--r--ext/json/lib/json/version.rb8
-rw-r--r--ext/json/parser/depend1
-rw-r--r--ext/json/parser/extconf.rb3
-rw-r--r--ext/json/parser/parser.c2204
-rw-r--r--ext/json/parser/parser.h77
-rw-r--r--ext/json/parser/parser.rl927
-rw-r--r--ext/json/parser/prereq.mk9
-rw-r--r--ext/kconv/MANIFEST3
-rw-r--r--ext/kconv/depend1
-rw-r--r--ext/kconv/kconv.c1881
-rw-r--r--ext/marshal/MANIFEST5
-rw-r--r--ext/marshal/depend2
-rw-r--r--ext/marshal/extconf.rb1
-rw-r--r--ext/marshal/marshal.c850
-rw-r--r--ext/marshal/marshal.doc48
-rw-r--r--ext/mathn/complex/complex.c7
-rw-r--r--ext/mathn/complex/extconf.rb3
-rw-r--r--ext/mathn/rational/extconf.rb3
-rw-r--r--ext/mathn/rational/rational.c7
-rw-r--r--ext/md5/MANIFEST6
-rw-r--r--ext/md5/depend2
-rw-r--r--ext/md5/md5.doc36
-rw-r--r--ext/md5/md5.h86
-rw-r--r--ext/md5/md5c.c337
-rw-r--r--ext/md5/md5init.c90
-rw-r--r--ext/nkf/depend6
-rw-r--r--ext/nkf/extconf.rb2
-rw-r--r--ext/nkf/lib/kconv.rb282
-rw-r--r--ext/nkf/nkf-utf8/config.h51
-rw-r--r--ext/nkf/nkf-utf8/nkf.c7191
-rw-r--r--ext/nkf/nkf-utf8/nkf.h189
-rw-r--r--ext/nkf/nkf-utf8/utf8tbl.c14628
-rw-r--r--ext/nkf/nkf-utf8/utf8tbl.h72
-rw-r--r--ext/nkf/nkf.c507
-rw-r--r--ext/objspace/depend14
-rw-r--r--ext/objspace/extconf.rb2
-rw-r--r--ext/objspace/gc_hook.c103
-rw-r--r--ext/objspace/object_tracing.c490
-rw-r--r--ext/objspace/objspace.c773
-rw-r--r--ext/objspace/objspace.h20
-rw-r--r--ext/objspace/objspace_dump.c409
-rw-r--r--ext/openssl/depend6
-rw-r--r--ext/openssl/deprecation.rb21
-rw-r--r--ext/openssl/extconf.rb160
-rw-r--r--ext/openssl/lib/openssl.rb24
-rw-r--r--ext/openssl/lib/openssl/bn.rb38
-rw-r--r--ext/openssl/lib/openssl/buffering.rb456
-rw-r--r--ext/openssl/lib/openssl/cipher.rb65
-rw-r--r--ext/openssl/lib/openssl/config.rb472
-rw-r--r--ext/openssl/lib/openssl/digest.rb94
-rw-r--r--ext/openssl/lib/openssl/ssl.rb208
-rw-r--r--ext/openssl/lib/openssl/x509.rb162
-rw-r--r--ext/openssl/openssl_missing.c356
-rw-r--r--ext/openssl/openssl_missing.h198
-rw-r--r--ext/openssl/ossl.c1157
-rw-r--r--ext/openssl/ossl.h247
-rw-r--r--ext/openssl/ossl_asn1.c1997
-rw-r--r--ext/openssl/ossl_asn1.h59
-rw-r--r--ext/openssl/ossl_bio.c87
-rw-r--r--ext/openssl/ossl_bio.h21
-rw-r--r--ext/openssl/ossl_bn.c898
-rw-r--r--ext/openssl/ossl_bn.h25
-rw-r--r--ext/openssl/ossl_cipher.c970
-rw-r--r--ext/openssl/ossl_cipher.h22
-rw-r--r--ext/openssl/ossl_config.c83
-rw-r--r--ext/openssl/ossl_config.h22
-rw-r--r--ext/openssl/ossl_digest.c438
-rw-r--r--ext/openssl/ossl_digest.h22
-rw-r--r--ext/openssl/ossl_engine.c591
-rw-r--r--ext/openssl/ossl_engine.h20
-rw-r--r--ext/openssl/ossl_hmac.c364
-rw-r--r--ext/openssl/ossl_hmac.h19
-rw-r--r--ext/openssl/ossl_ns_spki.c389
-rw-r--r--ext/openssl/ossl_ns_spki.h21
-rw-r--r--ext/openssl/ossl_ocsp.c786
-rw-r--r--ext/openssl/ossl_ocsp.h24
-rw-r--r--ext/openssl/ossl_pkcs12.c212
-rw-r--r--ext/openssl/ossl_pkcs12.h15
-rw-r--r--ext/openssl/ossl_pkcs5.c189
-rw-r--r--ext/openssl/ossl_pkcs5.h6
-rw-r--r--ext/openssl/ossl_pkcs7.c1046
-rw-r--r--ext/openssl/ossl_pkcs7.h22
-rw-r--r--ext/openssl/ossl_pkey.c436
-rw-r--r--ext/openssl/ossl_pkey.h151
-rw-r--r--ext/openssl/ossl_pkey_dh.c667
-rw-r--r--ext/openssl/ossl_pkey_dsa.c623
-rw-r--r--ext/openssl/ossl_pkey_ec.c1683
-rw-r--r--ext/openssl/ossl_pkey_rsa.c701
-rw-r--r--ext/openssl/ossl_rand.c202
-rw-r--r--ext/openssl/ossl_rand.h20
-rw-r--r--ext/openssl/ossl_ssl.c2271
-rw-r--r--ext/openssl/ossl_ssl.h36
-rw-r--r--ext/openssl/ossl_ssl_session.c323
-rw-r--r--ext/openssl/ossl_version.h16
-rw-r--r--ext/openssl/ossl_x509.c104
-rw-r--r--ext/openssl/ossl_x509.h114
-rw-r--r--ext/openssl/ossl_x509attr.c275
-rw-r--r--ext/openssl/ossl_x509cert.c866
-rw-r--r--ext/openssl/ossl_x509crl.c537
-rw-r--r--ext/openssl/ossl_x509ext.c471
-rw-r--r--ext/openssl/ossl_x509name.c509
-rw-r--r--ext/openssl/ossl_x509req.c468
-rw-r--r--ext/openssl/ossl_x509revoked.c229
-rw-r--r--ext/openssl/ossl_x509store.c677
-rw-r--r--ext/openssl/ruby_missing.h28
-rw-r--r--ext/pathname/depend3
-rw-r--r--ext/pathname/extconf.rb2
-rw-r--r--ext/pathname/lib/pathname.rb571
-rw-r--r--ext/pathname/pathname.c1442
-rw-r--r--ext/psych/.gitignore11
-rw-r--r--ext/psych/depend3
-rw-r--r--ext/psych/extconf.rb38
-rw-r--r--ext/psych/lib/psych.rb497
-rw-r--r--ext/psych/lib/psych/class_loader.rb101
-rw-r--r--ext/psych/lib/psych/coder.rb94
-rw-r--r--ext/psych/lib/psych/core_ext.rb35
-rw-r--r--ext/psych/lib/psych/deprecated.rb85
-rw-r--r--ext/psych/lib/psych/exception.rb13
-rw-r--r--ext/psych/lib/psych/handler.rb249
-rw-r--r--ext/psych/lib/psych/handlers/document_stream.rb22
-rw-r--r--ext/psych/lib/psych/handlers/recorder.rb39
-rw-r--r--ext/psych/lib/psych/json/ruby_events.rb19
-rw-r--r--ext/psych/lib/psych/json/stream.rb16
-rw-r--r--ext/psych/lib/psych/json/tree_builder.rb12
-rw-r--r--ext/psych/lib/psych/json/yaml_events.rb29
-rw-r--r--ext/psych/lib/psych/nodes.rb77
-rw-r--r--ext/psych/lib/psych/nodes/alias.rb18
-rw-r--r--ext/psych/lib/psych/nodes/document.rb60
-rw-r--r--ext/psych/lib/psych/nodes/mapping.rb56
-rw-r--r--ext/psych/lib/psych/nodes/node.rb55
-rw-r--r--ext/psych/lib/psych/nodes/scalar.rb67
-rw-r--r--ext/psych/lib/psych/nodes/sequence.rb81
-rw-r--r--ext/psych/lib/psych/nodes/stream.rb37
-rw-r--r--ext/psych/lib/psych/omap.rb4
-rw-r--r--ext/psych/lib/psych/parser.rb51
-rw-r--r--ext/psych/lib/psych/scalar_scanner.rb149
-rw-r--r--ext/psych/lib/psych/set.rb4
-rw-r--r--ext/psych/lib/psych/stream.rb37
-rw-r--r--ext/psych/lib/psych/streaming.rb27
-rw-r--r--ext/psych/lib/psych/syntax_error.rb21
-rw-r--r--ext/psych/lib/psych/tree_builder.rb96
-rw-r--r--ext/psych/lib/psych/visitors.rb6
-rw-r--r--ext/psych/lib/psych/visitors/depth_first.rb26
-rw-r--r--ext/psych/lib/psych/visitors/emitter.rb51
-rw-r--r--ext/psych/lib/psych/visitors/json_tree.rb24
-rw-r--r--ext/psych/lib/psych/visitors/to_ruby.rb368
-rw-r--r--ext/psych/lib/psych/visitors/visitor.rb19
-rw-r--r--ext/psych/lib/psych/visitors/yaml_tree.rb512
-rw-r--r--ext/psych/lib/psych/y.rb9
-rw-r--r--ext/psych/psych.c34
-rw-r--r--ext/psych/psych.gemspec23
-rw-r--r--ext/psych/psych.h20
-rw-r--r--ext/psych/psych_emitter.c538
-rw-r--r--ext/psych/psych_emitter.h8
-rw-r--r--ext/psych/psych_parser.c579
-rw-r--r--ext/psych/psych_parser.h6
-rw-r--r--ext/psych/psych_to_ruby.c43
-rw-r--r--ext/psych/psych_to_ruby.h8
-rw-r--r--ext/psych/psych_yaml_tree.c24
-rw-r--r--ext/psych/psych_yaml_tree.h8
-rw-r--r--ext/psych/yaml/LICENSE19
-rw-r--r--ext/psych/yaml/api.c1392
-rw-r--r--ext/psych/yaml/config.h11
-rw-r--r--ext/psych/yaml/dumper.c394
-rw-r--r--ext/psych/yaml/emitter.c2329
-rw-r--r--ext/psych/yaml/loader.c432
-rw-r--r--ext/psych/yaml/parser.c1374
-rw-r--r--ext/psych/yaml/reader.c465
-rw-r--r--ext/psych/yaml/scanner.c3570
-rw-r--r--ext/psych/yaml/writer.c141
-rw-r--r--ext/psych/yaml/yaml.h1971
-rw-r--r--ext/psych/yaml/yaml_private.h643
-rw-r--r--ext/pty/depend6
-rw-r--r--ext/pty/extconf.rb19
-rw-r--r--ext/pty/lib/expect.rb71
-rw-r--r--ext/pty/pty.c754
-rw-r--r--ext/racc/cparse/README10
-rw-r--r--ext/racc/cparse/cparse.c831
-rw-r--r--ext/racc/cparse/extconf.rb5
-rw-r--r--ext/rbconfig/sizeof/depend3
-rw-r--r--ext/rbconfig/sizeof/extconf.rb2
-rw-r--r--ext/readline/README10
-rw-r--r--ext/readline/README.ja386
-rw-r--r--ext/readline/depend5
-rw-r--r--ext/readline/extconf.rb97
-rw-r--r--ext/readline/readline.c1988
-rw-r--r--ext/ripper/README30
-rw-r--r--ext/ripper/depend56
-rw-r--r--ext/ripper/eventids2.c293
-rw-r--r--ext/ripper/extconf.rb21
-rw-r--r--ext/ripper/lib/ripper.rb73
-rw-r--r--ext/ripper/lib/ripper/core.rb70
-rw-r--r--ext/ripper/lib/ripper/filter.rb77
-rw-r--r--ext/ripper/lib/ripper/lexer.rb186
-rw-r--r--ext/ripper/lib/ripper/sexp.rb114
-rwxr-xr-xext/ripper/tools/generate-param-macros.rb14
-rwxr-xr-xext/ripper/tools/generate.rb154
-rwxr-xr-xext/ripper/tools/preproc.rb91
-rwxr-xr-xext/ripper/tools/strip.rb12
-rw-r--r--ext/sdbm/_sdbm.c953
-rw-r--r--ext/sdbm/depend2
-rw-r--r--ext/sdbm/extconf.rb4
-rw-r--r--ext/sdbm/init.c1045
-rw-r--r--ext/sdbm/sdbm.h86
-rw-r--r--ext/socket/.document17
-rw-r--r--ext/socket/MANIFEST4
-rw-r--r--ext/socket/addrinfo.h189
-rw-r--r--ext/socket/ancdata.c1834
-rw-r--r--ext/socket/basicsocket.c776
-rw-r--r--ext/socket/constants.c145
-rw-r--r--ext/socket/depend30
-rw-r--r--ext/socket/extconf.rb644
-rw-r--r--ext/socket/getaddrinfo.c678
-rw-r--r--ext/socket/getnameinfo.c261
-rw-r--r--ext/socket/ifaddr.c457
-rw-r--r--ext/socket/init.c632
-rw-r--r--ext/socket/ipsocket.c333
-rw-r--r--ext/socket/lib/socket.rb852
-rw-r--r--ext/socket/mkconstants.rb773
-rw-r--r--ext/socket/option.c1127
-rw-r--r--ext/socket/raddrinfo.c2455
-rw-r--r--ext/socket/rubysocket.h383
-rw-r--r--ext/socket/socket.c3020
-rw-r--r--ext/socket/sockport.h101
-rw-r--r--ext/socket/sockssocket.c71
-rw-r--r--ext/socket/tcpserver.c178
-rw-r--r--ext/socket/tcpsocket.c82
-rw-r--r--ext/socket/udpsocket.c266
-rw-r--r--ext/socket/unixserver.c155
-rw-r--r--ext/socket/unixsocket.c525
-rw-r--r--ext/stringio/README18
-rw-r--r--ext/stringio/depend4
-rw-r--r--ext/stringio/extconf.rb2
-rw-r--r--ext/stringio/stringio.c1604
-rw-r--r--ext/strscan/depend7
-rw-r--r--ext/strscan/extconf.rb3
-rw-r--r--ext/strscan/strscan.c1412
-rw-r--r--ext/syslog/depend2
-rw-r--r--ext/syslog/extconf.rb10
-rw-r--r--ext/syslog/lib/syslog/logger.rb208
-rw-r--r--ext/syslog/syslog.c592
-rw-r--r--ext/syslog/syslog.txt124
-rw-r--r--ext/thread/extconf.rb3
-rw-r--r--ext/thread/thread.c579
-rw-r--r--ext/tk/ChangeLog.tkextlib949
-rw-r--r--ext/tk/MANUAL_tcltklib.eng473
-rw-r--r--ext/tk/MANUAL_tcltklib.ja584
-rw-r--r--ext/tk/README.1st19
-rw-r--r--ext/tk/README.ActiveTcl62
-rw-r--r--ext/tk/README.fork34
-rw-r--r--ext/tk/README.macosx-aqua67
-rw-r--r--ext/tk/README.tcltklib152
-rw-r--r--ext/tk/config_list.in41
-rw-r--r--ext/tk/depend2
-rw-r--r--ext/tk/extconf.rb2051
-rw-r--r--ext/tk/lib/README30
-rw-r--r--ext/tk/lib/multi-tk.rb3754
-rw-r--r--ext/tk/lib/remote-tk.rb530
-rw-r--r--ext/tk/lib/tcltk.rb367
-rw-r--r--ext/tk/lib/tk.rb5761
-rw-r--r--ext/tk/lib/tk/after.rb6
-rw-r--r--ext/tk/lib/tk/autoload.rb760
-rw-r--r--ext/tk/lib/tk/bgerror.rb29
-rw-r--r--ext/tk/lib/tk/bindtag.rb138
-rw-r--r--ext/tk/lib/tk/busy.rb118
-rw-r--r--ext/tk/lib/tk/button.rb31
-rw-r--r--ext/tk/lib/tk/canvas.rb846
-rw-r--r--ext/tk/lib/tk/canvastag.rb459
-rw-r--r--ext/tk/lib/tk/checkbutton.rb32
-rw-r--r--ext/tk/lib/tk/clipboard.rb75
-rw-r--r--ext/tk/lib/tk/clock.rb71
-rw-r--r--ext/tk/lib/tk/composite.rb484
-rw-r--r--ext/tk/lib/tk/console.rb52
-rw-r--r--ext/tk/lib/tk/dialog.rb326
-rw-r--r--ext/tk/lib/tk/encodedstr.rb187
-rw-r--r--ext/tk/lib/tk/entry.rb120
-rw-r--r--ext/tk/lib/tk/event.rb562
-rw-r--r--ext/tk/lib/tk/font.rb2351
-rw-r--r--ext/tk/lib/tk/fontchooser.rb176
-rw-r--r--ext/tk/lib/tk/frame.rb132
-rw-r--r--ext/tk/lib/tk/grid.rb279
-rw-r--r--ext/tk/lib/tk/image.rb395
-rw-r--r--ext/tk/lib/tk/itemconfig.rb1222
-rw-r--r--ext/tk/lib/tk/itemfont.rb327
-rw-r--r--ext/tk/lib/tk/kinput.rb71
-rw-r--r--ext/tk/lib/tk/label.rb22
-rw-r--r--ext/tk/lib/tk/labelframe.rb31
-rw-r--r--ext/tk/lib/tk/listbox.rb284
-rw-r--r--ext/tk/lib/tk/macpkg.rb80
-rw-r--r--ext/tk/lib/tk/menu.rb718
-rw-r--r--ext/tk/lib/tk/menubar.rb137
-rw-r--r--ext/tk/lib/tk/menuspec.rb456
-rw-r--r--ext/tk/lib/tk/message.rb24
-rw-r--r--ext/tk/lib/tk/mngfocus.rb33
-rw-r--r--ext/tk/lib/tk/msgcat.rb296
-rw-r--r--ext/tk/lib/tk/namespace.rb551
-rw-r--r--ext/tk/lib/tk/optiondb.rb377
-rw-r--r--ext/tk/lib/tk/optionobj.rb212
-rw-r--r--ext/tk/lib/tk/pack.rb107
-rw-r--r--ext/tk/lib/tk/package.rb143
-rw-r--r--ext/tk/lib/tk/palette.rb55
-rw-r--r--ext/tk/lib/tk/panedwindow.rb260
-rw-r--r--ext/tk/lib/tk/place.rb128
-rw-r--r--ext/tk/lib/tk/radiobutton.rb73
-rw-r--r--ext/tk/lib/tk/root.rb95
-rw-r--r--ext/tk/lib/tk/scale.rb112
-rw-r--r--ext/tk/lib/tk/scrollable.rb82
-rw-r--r--ext/tk/lib/tk/scrollbar.rb183
-rw-r--r--ext/tk/lib/tk/scrollbox.rb39
-rw-r--r--ext/tk/lib/tk/selection.rb86
-rw-r--r--ext/tk/lib/tk/spinbox.rb144
-rw-r--r--ext/tk/lib/tk/tagfont.rb43
-rw-r--r--ext/tk/lib/tk/text.rb1604
-rw-r--r--ext/tk/lib/tk/textimage.rb88
-rw-r--r--ext/tk/lib/tk/textmark.rb204
-rw-r--r--ext/tk/lib/tk/texttag.rb321
-rw-r--r--ext/tk/lib/tk/textwindow.rb154
-rw-r--r--ext/tk/lib/tk/timer.rb669
-rw-r--r--ext/tk/lib/tk/toplevel.rb264
-rw-r--r--ext/tk/lib/tk/ttk_selector.rb98
-rw-r--r--ext/tk/lib/tk/txtwin_abst.rb39
-rw-r--r--ext/tk/lib/tk/validation.rb397
-rw-r--r--ext/tk/lib/tk/variable.rb1799
-rw-r--r--ext/tk/lib/tk/virtevent.rb139
-rw-r--r--ext/tk/lib/tk/winfo.rb392
-rw-r--r--ext/tk/lib/tk/winpkg.rb156
-rw-r--r--ext/tk/lib/tk/wm.rb552
-rw-r--r--ext/tk/lib/tk/xim.rb122
-rw-r--r--ext/tk/lib/tkafter.rb4
-rw-r--r--ext/tk/lib/tkbgerror.rb4
-rw-r--r--ext/tk/lib/tkcanvas.rb4
-rw-r--r--ext/tk/lib/tkclass.rb47
-rw-r--r--ext/tk/lib/tkconsole.rb4
-rw-r--r--ext/tk/lib/tkdialog.rb4
-rw-r--r--ext/tk/lib/tkentry.rb4
-rw-r--r--ext/tk/lib/tkextlib/ICONS.rb13
-rw-r--r--ext/tk/lib/tkextlib/ICONS/icons.rb129
-rw-r--r--ext/tk/lib/tkextlib/ICONS/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/SUPPORT_STATUS198
-rw-r--r--ext/tk/lib/tkextlib/blt.rb189
-rw-r--r--ext/tk/lib/tkextlib/blt/barchart.rb79
-rw-r--r--ext/tk/lib/tkextlib/blt/bitmap.rb112
-rw-r--r--ext/tk/lib/tkextlib/blt/busy.rb83
-rw-r--r--ext/tk/lib/tkextlib/blt/component.rb2218
-rw-r--r--ext/tk/lib/tkextlib/blt/container.rb28
-rw-r--r--ext/tk/lib/tkextlib/blt/cutbuffer.rb23
-rw-r--r--ext/tk/lib/tkextlib/blt/dragdrop.rb269
-rw-r--r--ext/tk/lib/tkextlib/blt/eps.rb32
-rw-r--r--ext/tk/lib/tkextlib/blt/graph.rb67
-rw-r--r--ext/tk/lib/tkextlib/blt/htext.rb112
-rw-r--r--ext/tk/lib/tkextlib/blt/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/blt/spline.rb23
-rw-r--r--ext/tk/lib/tkextlib/blt/stripchart.rb74
-rw-r--r--ext/tk/lib/tkextlib/blt/table.rb412
-rw-r--r--ext/tk/lib/tkextlib/blt/tabnotebook.rb110
-rw-r--r--ext/tk/lib/tkextlib/blt/tabset.rb504
-rw-r--r--ext/tk/lib/tkextlib/blt/ted.rb68
-rw-r--r--ext/tk/lib/tkextlib/blt/tile.rb25
-rw-r--r--ext/tk/lib/tkextlib/blt/tile/button.rb16
-rw-r--r--ext/tk/lib/tkextlib/blt/tile/checkbutton.rb17
-rw-r--r--ext/tk/lib/tkextlib/blt/tile/frame.rb16
-rw-r--r--ext/tk/lib/tkextlib/blt/tile/label.rb16
-rw-r--r--ext/tk/lib/tkextlib/blt/tile/radiobutton.rb17
-rw-r--r--ext/tk/lib/tkextlib/blt/tile/scrollbar.rb16
-rw-r--r--ext/tk/lib/tkextlib/blt/tile/toplevel.rb16
-rw-r--r--ext/tk/lib/tkextlib/blt/tree.rb1058
-rw-r--r--ext/tk/lib/tkextlib/blt/treeview.rb1287
-rw-r--r--ext/tk/lib/tkextlib/blt/unix_dnd.rb141
-rw-r--r--ext/tk/lib/tkextlib/blt/vector.rb256
-rw-r--r--ext/tk/lib/tkextlib/blt/watch.rb175
-rw-r--r--ext/tk/lib/tkextlib/blt/win_printer.rb61
-rw-r--r--ext/tk/lib/tkextlib/blt/winop.rb107
-rw-r--r--ext/tk/lib/tkextlib/bwidget.rb153
-rw-r--r--ext/tk/lib/tkextlib/bwidget/arrowbutton.rb21
-rw-r--r--ext/tk/lib/tkextlib/bwidget/bitmap.rb21
-rw-r--r--ext/tk/lib/tkextlib/bwidget/button.rb31
-rw-r--r--ext/tk/lib/tkextlib/bwidget/buttonbox.rb90
-rw-r--r--ext/tk/lib/tkextlib/bwidget/combobox.rb62
-rw-r--r--ext/tk/lib/tkextlib/bwidget/dialog.rb194
-rw-r--r--ext/tk/lib/tkextlib/bwidget/dragsite.rb31
-rw-r--r--ext/tk/lib/tkextlib/bwidget/dropsite.rb39
-rw-r--r--ext/tk/lib/tkextlib/bwidget/dynamichelp.rb63
-rw-r--r--ext/tk/lib/tkextlib/bwidget/entry.rb43
-rw-r--r--ext/tk/lib/tkextlib/bwidget/label.rb41
-rw-r--r--ext/tk/lib/tkextlib/bwidget/labelentry.rb80
-rw-r--r--ext/tk/lib/tkextlib/bwidget/labelframe.rb52
-rw-r--r--ext/tk/lib/tkextlib/bwidget/listbox.rb361
-rw-r--r--ext/tk/lib/tkextlib/bwidget/mainframe.rb132
-rw-r--r--ext/tk/lib/tkextlib/bwidget/messagedlg.rb192
-rw-r--r--ext/tk/lib/tkextlib/bwidget/notebook.rb166
-rw-r--r--ext/tk/lib/tkextlib/bwidget/pagesmanager.rb73
-rw-r--r--ext/tk/lib/tkextlib/bwidget/panedwindow.rb42
-rw-r--r--ext/tk/lib/tkextlib/bwidget/panelframe.rb67
-rw-r--r--ext/tk/lib/tkextlib/bwidget/passwddlg.rb44
-rw-r--r--ext/tk/lib/tkextlib/bwidget/progressbar.rb20
-rw-r--r--ext/tk/lib/tkextlib/bwidget/progressdlg.rb58
-rw-r--r--ext/tk/lib/tkextlib/bwidget/scrollableframe.rb40
-rw-r--r--ext/tk/lib/tkextlib/bwidget/scrolledwindow.rb48
-rw-r--r--ext/tk/lib/tkextlib/bwidget/scrollview.rb25
-rw-r--r--ext/tk/lib/tkextlib/bwidget/selectcolor.rb73
-rw-r--r--ext/tk/lib/tkextlib/bwidget/selectfont.rb91
-rw-r--r--ext/tk/lib/tkextlib/bwidget/separator.rb20
-rw-r--r--ext/tk/lib/tkextlib/bwidget/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/bwidget/spinbox.rb98
-rw-r--r--ext/tk/lib/tkextlib/bwidget/statusbar.rb62
-rw-r--r--ext/tk/lib/tkextlib/bwidget/titleframe.rb33
-rw-r--r--ext/tk/lib/tkextlib/bwidget/tree.rb500
-rw-r--r--ext/tk/lib/tkextlib/bwidget/widget.rb129
-rw-r--r--ext/tk/lib/tkextlib/itcl.rb13
-rw-r--r--ext/tk/lib/tkextlib/itcl/incr_tcl.rb178
-rw-r--r--ext/tk/lib/tkextlib/itcl/setup.rb13
-rw-r--r--ext/tk/lib/tkextlib/itk.rb13
-rw-r--r--ext/tk/lib/tkextlib/itk/incr_tk.rb446
-rw-r--r--ext/tk/lib/tkextlib/itk/setup.rb13
-rw-r--r--ext/tk/lib/tkextlib/iwidgets.rb94
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/buttonbox.rb121
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/calendar.rb125
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/canvasprintbox.rb53
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/canvasprintdialog.rb38
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/checkbox.rb130
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/combobox.rb104
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/dateentry.rb20
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/datefield.rb58
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/dialog.rb20
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/dialogshell.rb121
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/disjointlistbox.rb50
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/entryfield.rb185
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/extbutton.rb40
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/extfileselectionbox.rb46
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/extfileselectiondialog.rb33
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/feedback.rb35
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/fileselectionbox.rb46
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/fileselectiondialog.rb33
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/finddialog.rb42
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/hierarchy.rb365
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/hyperhelp.rb50
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/labeledframe.rb39
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/labeledwidget.rb45
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/mainwindow.rb67
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/menubar.rb212
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/messagebox.rb93
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/messagedialog.rb20
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/notebook.rb175
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/optionmenu.rb92
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/panedwindow.rb134
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/promptdialog.rb131
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/pushbutton.rb35
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/radiobox.rb121
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/scopedobject.rb24
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb353
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/scrolledframe.rb59
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/scrolledhtml.rb58
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb207
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb568
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/scrolledwidget.rb20
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/selectionbox.rb102
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb92
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/shell.rb38
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/spindate.rb48
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/spinint.rb30
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/spinner.rb169
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/spintime.rb48
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb181
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/tabset.rb145
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/timeentry.rb25
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/timefield.rb58
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/toolbar.rb112
-rw-r--r--ext/tk/lib/tkextlib/iwidgets/watch.rb56
-rwxr-xr-xext/tk/lib/tkextlib/pkg_checker.rb184
-rw-r--r--ext/tk/lib/tkextlib/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/tcllib.rb105
-rw-r--r--ext/tk/lib/tkextlib/tcllib/README135
-rw-r--r--ext/tk/lib/tkextlib/tcllib/autoscroll.rb158
-rw-r--r--ext/tk/lib/tkextlib/tcllib/calendar.rb55
-rw-r--r--ext/tk/lib/tkextlib/tcllib/canvas_sqmap.rb36
-rw-r--r--ext/tk/lib/tkextlib/tcllib/canvas_zoom.rb21
-rw-r--r--ext/tk/lib/tkextlib/tcllib/chatwidget.rb151
-rw-r--r--ext/tk/lib/tkextlib/tcllib/crosshair.rb117
-rw-r--r--ext/tk/lib/tkextlib/tcllib/ctext.rb160
-rw-r--r--ext/tk/lib/tkextlib/tcllib/cursor.rb97
-rw-r--r--ext/tk/lib/tkextlib/tcllib/dateentry.rb62
-rw-r--r--ext/tk/lib/tkextlib/tcllib/datefield.rb57
-rw-r--r--ext/tk/lib/tkextlib/tcllib/diagrams.rb224
-rw-r--r--ext/tk/lib/tkextlib/tcllib/dialog.rb84
-rw-r--r--ext/tk/lib/tkextlib/tcllib/getstring.rb134
-rw-r--r--ext/tk/lib/tkextlib/tcllib/history.rb73
-rw-r--r--ext/tk/lib/tkextlib/tcllib/ico.rb146
-rw-r--r--ext/tk/lib/tkextlib/tcllib/ip_entry.rb75
-rw-r--r--ext/tk/lib/tkextlib/tcllib/khim.rb68
-rw-r--r--ext/tk/lib/tkextlib/tcllib/menuentry.rb47
-rw-r--r--ext/tk/lib/tkextlib/tcllib/ntext.rb146
-rw-r--r--ext/tk/lib/tkextlib/tcllib/panelframe.rb78
-rw-r--r--ext/tk/lib/tkextlib/tcllib/plotchart.rb1404
-rw-r--r--ext/tk/lib/tkextlib/tcllib/ruler.rb65
-rw-r--r--ext/tk/lib/tkextlib/tcllib/screenruler.rb68
-rw-r--r--ext/tk/lib/tkextlib/tcllib/scrolledwindow.rb57
-rw-r--r--ext/tk/lib/tkextlib/tcllib/scrollwin.rb61
-rw-r--r--ext/tk/lib/tkextlib/tcllib/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/tcllib/statusbar.rb79
-rw-r--r--ext/tk/lib/tkextlib/tcllib/style.rb61
-rw-r--r--ext/tk/lib/tkextlib/tcllib/superframe.rb51
-rw-r--r--ext/tk/lib/tkextlib/tcllib/swaplist.rb150
-rw-r--r--ext/tk/lib/tkextlib/tcllib/tablelist.rb28
-rw-r--r--ext/tk/lib/tkextlib/tcllib/tablelist_core.rb1072
-rw-r--r--ext/tk/lib/tkextlib/tcllib/tablelist_tile.rb43
-rw-r--r--ext/tk/lib/tkextlib/tcllib/tkpiechart.rb314
-rw-r--r--ext/tk/lib/tkextlib/tcllib/toolbar.rb175
-rw-r--r--ext/tk/lib/tkextlib/tcllib/tooltip.rb104
-rw-r--r--ext/tk/lib/tkextlib/tcllib/widget.rb82
-rw-r--r--ext/tk/lib/tkextlib/tclx.rb13
-rw-r--r--ext/tk/lib/tkextlib/tclx/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/tclx/tclx.rb74
-rw-r--r--ext/tk/lib/tkextlib/tile.rb449
-rw-r--r--ext/tk/lib/tkextlib/tile/dialog.rb102
-rw-r--r--ext/tk/lib/tkextlib/tile/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/tile/sizegrip.rb32
-rw-r--r--ext/tk/lib/tkextlib/tile/style.rb336
-rw-r--r--ext/tk/lib/tkextlib/tile/tbutton.rb34
-rw-r--r--ext/tk/lib/tkextlib/tile/tcheckbutton.rb38
-rw-r--r--ext/tk/lib/tkextlib/tile/tcombobox.rb55
-rw-r--r--ext/tk/lib/tkextlib/tile/tentry.rb49
-rw-r--r--ext/tk/lib/tkextlib/tile/tframe.rb34
-rw-r--r--ext/tk/lib/tkextlib/tile/tlabel.rb34
-rw-r--r--ext/tk/lib/tkextlib/tile/tlabelframe.rb38
-rw-r--r--ext/tk/lib/tkextlib/tile/tmenubutton.rb38
-rw-r--r--ext/tk/lib/tkextlib/tile/tnotebook.rb147
-rw-r--r--ext/tk/lib/tkextlib/tile/tpaned.rb245
-rw-r--r--ext/tk/lib/tkextlib/tile/tprogressbar.rb57
-rw-r--r--ext/tk/lib/tkextlib/tile/tradiobutton.rb38
-rw-r--r--ext/tk/lib/tkextlib/tile/treeview.rb1306
-rw-r--r--ext/tk/lib/tkextlib/tile/tscale.rb56
-rw-r--r--ext/tk/lib/tkextlib/tile/tscrollbar.rb63
-rw-r--r--ext/tk/lib/tkextlib/tile/tseparator.rb34
-rw-r--r--ext/tk/lib/tkextlib/tile/tspinbox.rb107
-rw-r--r--ext/tk/lib/tkextlib/tile/tsquare.rb30
-rw-r--r--ext/tk/lib/tkextlib/tkDND.rb18
-rw-r--r--ext/tk/lib/tkextlib/tkDND/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/tkDND/shape.rb125
-rw-r--r--ext/tk/lib/tkextlib/tkDND/tkdnd.rb182
-rw-r--r--ext/tk/lib/tkextlib/tkHTML.rb13
-rw-r--r--ext/tk/lib/tkextlib/tkHTML/htmlwidget.rb453
-rw-r--r--ext/tk/lib/tkextlib/tkHTML/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/tkimg.rb36
-rw-r--r--ext/tk/lib/tkextlib/tkimg/README26
-rw-r--r--ext/tk/lib/tkextlib/tkimg/bmp.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/gif.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/ico.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/jpeg.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/pcx.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/pixmap.rb44
-rw-r--r--ext/tk/lib/tkextlib/tkimg/png.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/ppm.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/ps.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/tkimg/sgi.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/sun.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/tga.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/tiff.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/window.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/xbm.rb33
-rw-r--r--ext/tk/lib/tkextlib/tkimg/xpm.rb33
-rw-r--r--ext/tk/lib/tkextlib/tktable.rb14
-rw-r--r--ext/tk/lib/tkextlib/tktable/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/tktable/tktable.rb966
-rw-r--r--ext/tk/lib/tkextlib/tktrans.rb14
-rw-r--r--ext/tk/lib/tkextlib/tktrans/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/tktrans/tktrans.rb64
-rw-r--r--ext/tk/lib/tkextlib/treectrl.rb13
-rw-r--r--ext/tk/lib/tkextlib/treectrl/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/treectrl/tktreectrl.rb2522
-rw-r--r--ext/tk/lib/tkextlib/trofs.rb13
-rw-r--r--ext/tk/lib/tkextlib/trofs/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/trofs/trofs.rb51
-rw-r--r--ext/tk/lib/tkextlib/version.rb6
-rw-r--r--ext/tk/lib/tkextlib/vu.rb48
-rw-r--r--ext/tk/lib/tkextlib/vu/bargraph.rb61
-rw-r--r--ext/tk/lib/tkextlib/vu/charts.rb53
-rw-r--r--ext/tk/lib/tkextlib/vu/dial.rb102
-rw-r--r--ext/tk/lib/tkextlib/vu/pie.rb286
-rw-r--r--ext/tk/lib/tkextlib/vu/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/vu/spinbox.rb22
-rw-r--r--ext/tk/lib/tkextlib/winico.rb14
-rw-r--r--ext/tk/lib/tkextlib/winico/setup.rb8
-rw-r--r--ext/tk/lib/tkextlib/winico/winico.rb224
-rw-r--r--ext/tk/lib/tkfont.rb4
-rw-r--r--ext/tk/lib/tkmacpkg.rb4
-rw-r--r--ext/tk/lib/tkmenubar.rb4
-rw-r--r--ext/tk/lib/tkmngfocus.rb4
-rw-r--r--ext/tk/lib/tkpalette.rb4
-rw-r--r--ext/tk/lib/tkscrollbox.rb4
-rw-r--r--ext/tk/lib/tktext.rb4
-rw-r--r--ext/tk/lib/tkvirtevent.rb4
-rw-r--r--ext/tk/lib/tkwinpkg.rb4
-rw-r--r--ext/tk/old-README.tcltklib.ja159
-rw-r--r--ext/tk/old-extconf.rb440
-rw-r--r--ext/tk/sample/24hr_clock.rb286
-rw-r--r--ext/tk/sample/binding_sample.rb87
-rw-r--r--ext/tk/sample/bindtag_sample.rb127
-rw-r--r--ext/tk/sample/binstr_usage.rb45
-rw-r--r--ext/tk/sample/btn_with_frame.rb20
-rw-r--r--ext/tk/sample/cd_timer.rb81
-rw-r--r--ext/tk/sample/cmd_res_test.rb17
-rw-r--r--ext/tk/sample/cmd_resource5
-rw-r--r--ext/tk/sample/demos-en/ChangeLog64
-rw-r--r--ext/tk/sample/demos-en/ChangeLog.prev9
-rw-r--r--ext/tk/sample/demos-en/README138
-rw-r--r--ext/tk/sample/demos-en/README.1st18
-rw-r--r--ext/tk/sample/demos-en/README.tkencoding29
-rw-r--r--ext/tk/sample/demos-en/anilabel.rb174
-rw-r--r--ext/tk/sample/demos-en/aniwave.rb118
-rw-r--r--ext/tk/sample/demos-en/arrow.rb249
-rw-r--r--ext/tk/sample/demos-en/bind.rb127
-rw-r--r--ext/tk/sample/demos-en/bitmap.rb75
-rw-r--r--ext/tk/sample/demos-en/browse163
-rw-r--r--ext/tk/sample/demos-en/browse282
-rw-r--r--ext/tk/sample/demos-en/button.rb84
-rw-r--r--ext/tk/sample/demos-en/check.rb72
-rw-r--r--ext/tk/sample/demos-en/check2.rb109
-rw-r--r--ext/tk/sample/demos-en/clrpick.rb87
-rw-r--r--ext/tk/sample/demos-en/colors.rb158
-rw-r--r--ext/tk/sample/demos-en/combo.rb96
-rw-r--r--ext/tk/sample/demos-en/cscroll.rb136
-rw-r--r--ext/tk/sample/demos-en/ctext.rb207
-rw-r--r--ext/tk/sample/demos-en/dialog1.rb38
-rw-r--r--ext/tk/sample/demos-en/dialog2.rb41
-rw-r--r--ext/tk/sample/demos-en/doc.org/README7
-rw-r--r--ext/tk/sample/demos-en/doc.org/README.JP14
-rw-r--r--ext/tk/sample/demos-en/doc.org/README.tk8046
-rw-r--r--ext/tk/sample/demos-en/doc.org/license.terms39
-rw-r--r--ext/tk/sample/demos-en/doc.org/license.terms.tk8039
-rw-r--r--ext/tk/sample/demos-en/entry1.rb58
-rw-r--r--ext/tk/sample/demos-en/entry2.rb93
-rw-r--r--ext/tk/sample/demos-en/entry3.rb220
-rw-r--r--ext/tk/sample/demos-en/filebox.rb102
-rw-r--r--ext/tk/sample/demos-en/floor.rb1723
-rw-r--r--ext/tk/sample/demos-en/floor2.rb1722
-rw-r--r--ext/tk/sample/demos-en/form.rb64
-rw-r--r--ext/tk/sample/demos-en/goldberg.rb2006
-rw-r--r--ext/tk/sample/demos-en/hello14
-rw-r--r--ext/tk/sample/demos-en/hscale.rb75
-rw-r--r--ext/tk/sample/demos-en/icon.rb105
-rw-r--r--ext/tk/sample/demos-en/image1.rb65
-rw-r--r--ext/tk/sample/demos-en/image2.rb107
-rw-r--r--ext/tk/sample/demos-en/image3.rb125
-rw-r--r--ext/tk/sample/demos-en/items.rb381
-rw-r--r--ext/tk/sample/demos-en/ixset333
-rw-r--r--ext/tk/sample/demos-en/ixset2367
-rw-r--r--ext/tk/sample/demos-en/knightstour.rb271
-rw-r--r--ext/tk/sample/demos-en/label.rb72
-rw-r--r--ext/tk/sample/demos-en/labelframe.rb95
-rw-r--r--ext/tk/sample/demos-en/mclist.rb117
-rw-r--r--ext/tk/sample/demos-en/menu.rb196
-rw-r--r--ext/tk/sample/demos-en/menu84.rb215
-rw-r--r--ext/tk/sample/demos-en/menubu.rb237
-rw-r--r--ext/tk/sample/demos-en/msgbox.rb90
-rw-r--r--ext/tk/sample/demos-en/msgbox2.rb91
-rw-r--r--ext/tk/sample/demos-en/paned1.rb47
-rw-r--r--ext/tk/sample/demos-en/paned2.rb94
-rw-r--r--ext/tk/sample/demos-en/pendulum.rb240
-rw-r--r--ext/tk/sample/demos-en/plot.rb124
-rw-r--r--ext/tk/sample/demos-en/puzzle.rb134
-rw-r--r--ext/tk/sample/demos-en/radio.rb86
-rw-r--r--ext/tk/sample/demos-en/radio2.rb109
-rw-r--r--ext/tk/sample/demos-en/radio3.rb117
-rw-r--r--ext/tk/sample/demos-en/rmt268
-rw-r--r--ext/tk/sample/demos-en/rolodex320
-rw-r--r--ext/tk/sample/demos-en/ruler.rb205
-rw-r--r--ext/tk/sample/demos-en/sayings.rb106
-rw-r--r--ext/tk/sample/demos-en/search.rb187
-rw-r--r--ext/tk/sample/demos-en/spin.rb65
-rw-r--r--ext/tk/sample/demos-en/square81
-rw-r--r--ext/tk/sample/demos-en/states.rb80
-rw-r--r--ext/tk/sample/demos-en/style.rb231
-rw-r--r--ext/tk/sample/demos-en/tcolor526
-rw-r--r--ext/tk/sample/demos-en/text.rb128
-rw-r--r--ext/tk/sample/demos-en/textpeer.rb76
-rw-r--r--ext/tk/sample/demos-en/timer136
-rw-r--r--ext/tk/sample/demos-en/tkencoding.rb42
-rw-r--r--ext/tk/sample/demos-en/toolbar.rb130
-rw-r--r--ext/tk/sample/demos-en/tree.rb119
-rw-r--r--ext/tk/sample/demos-en/ttkbut.rb139
-rw-r--r--ext/tk/sample/demos-en/ttkmenu.rb85
-rw-r--r--ext/tk/sample/demos-en/ttknote.rb89
-rw-r--r--ext/tk/sample/demos-en/ttkpane.rb213
-rw-r--r--ext/tk/sample/demos-en/ttkprogress.rb66
-rw-r--r--ext/tk/sample/demos-en/twind.rb291
-rw-r--r--ext/tk/sample/demos-en/twind2.rb384
-rw-r--r--ext/tk/sample/demos-en/unicodeout.rb114
-rw-r--r--ext/tk/sample/demos-en/vscale.rb79
-rw-r--r--ext/tk/sample/demos-en/widget1087
-rw-r--r--ext/tk/sample/demos-jp/README54
-rw-r--r--ext/tk/sample/demos-jp/README.1st20
-rw-r--r--ext/tk/sample/demos-jp/anilabel.rb177
-rw-r--r--ext/tk/sample/demos-jp/aniwave.rb120
-rw-r--r--ext/tk/sample/demos-jp/arrow.rb247
-rw-r--r--ext/tk/sample/demos-jp/bind.rb125
-rw-r--r--ext/tk/sample/demos-jp/bitmap.rb74
-rw-r--r--ext/tk/sample/demos-jp/browse163
-rw-r--r--ext/tk/sample/demos-jp/browse282
-rw-r--r--ext/tk/sample/demos-jp/button.rb83
-rw-r--r--ext/tk/sample/demos-jp/check.rb70
-rw-r--r--ext/tk/sample/demos-jp/check2.rb110
-rw-r--r--ext/tk/sample/demos-jp/clrpick.rb84
-rw-r--r--ext/tk/sample/demos-jp/colors.rb155
-rw-r--r--ext/tk/sample/demos-jp/combo.rb98
-rw-r--r--ext/tk/sample/demos-jp/cscroll.rb134
-rw-r--r--ext/tk/sample/demos-jp/ctext.rb204
-rw-r--r--ext/tk/sample/demos-jp/dialog1.rb39
-rw-r--r--ext/tk/sample/demos-jp/dialog2.rb43
-rw-r--r--ext/tk/sample/demos-jp/doc.org/README7
-rw-r--r--ext/tk/sample/demos-jp/doc.org/README.JP14
-rw-r--r--ext/tk/sample/demos-jp/doc.org/README.tk8046
-rw-r--r--ext/tk/sample/demos-jp/doc.org/license.terms39
-rw-r--r--ext/tk/sample/demos-jp/doc.org/license.terms.tk8039
-rw-r--r--ext/tk/sample/demos-jp/entry1.rb60
-rw-r--r--ext/tk/sample/demos-jp/entry2.rb91
-rw-r--r--ext/tk/sample/demos-jp/entry3.rb225
-rw-r--r--ext/tk/sample/demos-jp/filebox.rb102
-rw-r--r--ext/tk/sample/demos-jp/floor.rb1721
-rw-r--r--ext/tk/sample/demos-jp/floor2.rb1719
-rw-r--r--ext/tk/sample/demos-jp/form.rb66
-rw-r--r--ext/tk/sample/demos-jp/goldberg.rb2011
-rw-r--r--ext/tk/sample/demos-jp/hello10
-rw-r--r--ext/tk/sample/demos-jp/hscale.rb78
-rw-r--r--ext/tk/sample/demos-jp/icon.rb103
-rw-r--r--ext/tk/sample/demos-jp/image1.rb64
-rw-r--r--ext/tk/sample/demos-jp/image2.rb106
-rw-r--r--ext/tk/sample/demos-jp/image3.rb127
-rw-r--r--ext/tk/sample/demos-jp/items.rb379
-rw-r--r--ext/tk/sample/demos-jp/ixset333
-rw-r--r--ext/tk/sample/demos-jp/ixset2369
-rw-r--r--ext/tk/sample/demos-jp/knightstour.rb273
-rw-r--r--ext/tk/sample/demos-jp/label.rb69
-rw-r--r--ext/tk/sample/demos-jp/labelframe.rb102
-rw-r--r--ext/tk/sample/demos-jp/mclist.rb121
-rw-r--r--ext/tk/sample/demos-jp/menu.rb201
-rw-r--r--ext/tk/sample/demos-jp/menu84.rb213
-rw-r--r--ext/tk/sample/demos-jp/menu8x.rb233
-rw-r--r--ext/tk/sample/demos-jp/menubu.rb238
-rw-r--r--ext/tk/sample/demos-jp/msgbox.rb89
-rw-r--r--ext/tk/sample/demos-jp/msgbox2.rb90
-rw-r--r--ext/tk/sample/demos-jp/paned1.rb52
-rw-r--r--ext/tk/sample/demos-jp/paned2.rb100
-rw-r--r--ext/tk/sample/demos-jp/pendulum.rb242
-rw-r--r--ext/tk/sample/demos-jp/plot.rb126
-rw-r--r--ext/tk/sample/demos-jp/puzzle.rb131
-rw-r--r--ext/tk/sample/demos-jp/radio.rb84
-rw-r--r--ext/tk/sample/demos-jp/radio2.rb112
-rw-r--r--ext/tk/sample/demos-jp/radio3.rb119
-rw-r--r--ext/tk/sample/demos-jp/rmt268
-rw-r--r--ext/tk/sample/demos-jp/rolodex320
-rw-r--r--ext/tk/sample/demos-jp/rolodex-j300
-rw-r--r--ext/tk/sample/demos-jp/ruler.rb203
-rw-r--r--ext/tk/sample/demos-jp/sayings.rb103
-rw-r--r--ext/tk/sample/demos-jp/search.rb184
-rw-r--r--ext/tk/sample/demos-jp/spin.rb71
-rw-r--r--ext/tk/sample/demos-jp/square81
-rw-r--r--ext/tk/sample/demos-jp/states.rb74
-rw-r--r--ext/tk/sample/demos-jp/style.rb270
-rw-r--r--ext/tk/sample/demos-jp/tcolor534
-rw-r--r--ext/tk/sample/demos-jp/text.rb120
-rw-r--r--ext/tk/sample/demos-jp/textpeer.rb82
-rw-r--r--ext/tk/sample/demos-jp/timer136
-rw-r--r--ext/tk/sample/demos-jp/toolbar.rb136
-rw-r--r--ext/tk/sample/demos-jp/tree.rb120
-rw-r--r--ext/tk/sample/demos-jp/ttkbut.rb145
-rw-r--r--ext/tk/sample/demos-jp/ttkmenu.rb91
-rw-r--r--ext/tk/sample/demos-jp/ttknote.rb97
-rw-r--r--ext/tk/sample/demos-jp/ttkpane.rb216
-rw-r--r--ext/tk/sample/demos-jp/ttkprogress.rb71
-rw-r--r--ext/tk/sample/demos-jp/twind.rb292
-rw-r--r--ext/tk/sample/demos-jp/twind2.rb384
-rw-r--r--ext/tk/sample/demos-jp/unicodeout.rb119
-rw-r--r--ext/tk/sample/demos-jp/vscale.rb80
-rw-r--r--ext/tk/sample/demos-jp/widget1122
-rw-r--r--ext/tk/sample/editable_listbox.rb148
-rw-r--r--ext/tk/sample/encstr_usage.rb30
-rw-r--r--ext/tk/sample/figmemo_sample.rb456
-rw-r--r--ext/tk/sample/images/earth.gifbin0 -> 51712 bytes-rw-r--r--ext/tk/sample/images/earthris.gifbin0 -> 6343 bytes-rw-r--r--ext/tk/sample/images/face.xbm173
-rw-r--r--ext/tk/sample/images/flagdown.xbm27
-rw-r--r--ext/tk/sample/images/flagup.xbm27
-rw-r--r--ext/tk/sample/images/gray25.xbm6
-rw-r--r--ext/tk/sample/images/grey.256
-rw-r--r--ext/tk/sample/images/grey.56
-rw-r--r--ext/tk/sample/images/letters.xbm27
-rw-r--r--ext/tk/sample/images/noletter.xbm27
-rw-r--r--ext/tk/sample/images/pattern.xbm6
-rw-r--r--ext/tk/sample/images/tcllogo.gifbin0 -> 2341 bytes-rw-r--r--ext/tk/sample/images/teapot.ppm31
-rw-r--r--ext/tk/sample/irbtk.rb30
-rw-r--r--ext/tk/sample/irbtkw.rbw156
-rw-r--r--ext/tk/sample/iso2022-kr.txt2
-rw-r--r--ext/tk/sample/menubar1.rb51
-rw-r--r--ext/tk/sample/menubar2.rb56
-rw-r--r--ext/tk/sample/menubar3.rb72
-rw-r--r--ext/tk/sample/msgs_rb/README3
-rw-r--r--ext/tk/sample/msgs_rb/cs.msg84
-rw-r--r--ext/tk/sample/msgs_rb/de.msg88
-rw-r--r--ext/tk/sample/msgs_rb/el.msg98
-rw-r--r--ext/tk/sample/msgs_rb/en.msg83
-rw-r--r--ext/tk/sample/msgs_rb/en_gb.msg7
-rw-r--r--ext/tk/sample/msgs_rb/eo.msg87
-rw-r--r--ext/tk/sample/msgs_rb/es.msg84
-rw-r--r--ext/tk/sample/msgs_rb/fr.msg84
-rw-r--r--ext/tk/sample/msgs_rb/it.msg84
-rw-r--r--ext/tk/sample/msgs_rb/ja.msg13
-rw-r--r--ext/tk/sample/msgs_rb/nl.msg123
-rw-r--r--ext/tk/sample/msgs_rb/pl.msg87
-rw-r--r--ext/tk/sample/msgs_rb/ru.msg87
-rw-r--r--ext/tk/sample/msgs_rb2/README5
-rw-r--r--ext/tk/sample/msgs_rb2/de.msg88
-rw-r--r--ext/tk/sample/msgs_rb2/ja.msg85
-rw-r--r--ext/tk/sample/msgs_tk/README4
-rw-r--r--ext/tk/sample/msgs_tk/cs.msg84
-rw-r--r--ext/tk/sample/msgs_tk/de.msg88
-rw-r--r--ext/tk/sample/msgs_tk/el.msg103
-rw-r--r--ext/tk/sample/msgs_tk/en.msg83
-rw-r--r--ext/tk/sample/msgs_tk/en_gb.msg7
-rw-r--r--ext/tk/sample/msgs_tk/eo.msg87
-rw-r--r--ext/tk/sample/msgs_tk/es.msg84
-rw-r--r--ext/tk/sample/msgs_tk/fr.msg84
-rw-r--r--ext/tk/sample/msgs_tk/it.msg84
-rw-r--r--ext/tk/sample/msgs_tk/ja.msg13
-rw-r--r--ext/tk/sample/msgs_tk/license.terms39
-rw-r--r--ext/tk/sample/msgs_tk/nl.msg123
-rw-r--r--ext/tk/sample/msgs_tk/pl.msg87
-rw-r--r--ext/tk/sample/msgs_tk/ru.msg87
-rw-r--r--ext/tk/sample/multi-ip_sample.rb103
-rw-r--r--ext/tk/sample/multi-ip_sample2.rb29
-rw-r--r--ext/tk/sample/optobj_sample.rb67
-rw-r--r--ext/tk/sample/propagate.rb30
-rw-r--r--ext/tk/sample/remote-ip_sample.rb33
-rw-r--r--ext/tk/sample/remote-ip_sample2.rb56
-rw-r--r--ext/tk/sample/resource.en13
-rw-r--r--ext/tk/sample/resource.ja13
-rw-r--r--ext/tk/sample/safe-tk.rb134
-rw-r--r--ext/tk/sample/scrollframe.rb247
-rw-r--r--ext/tk/sample/tcltklib/batsu.gifbin0 -> 538 bytes-rw-r--r--ext/tk/sample/tcltklib/lines0.tcl42
-rw-r--r--ext/tk/sample/tcltklib/lines1.rb50
-rw-r--r--ext/tk/sample/tcltklib/lines2.rb54
-rw-r--r--ext/tk/sample/tcltklib/lines3.rb54
-rw-r--r--ext/tk/sample/tcltklib/lines4.rb54
-rw-r--r--ext/tk/sample/tcltklib/maru.gifbin0 -> 481 bytes-rw-r--r--ext/tk/sample/tcltklib/safeTk.rb22
-rw-r--r--ext/tk/sample/tcltklib/sample0.rb39
-rw-r--r--ext/tk/sample/tcltklib/sample1.rb634
-rw-r--r--ext/tk/sample/tcltklib/sample2.rb451
-rw-r--r--ext/tk/sample/tkalignbox.rb235
-rw-r--r--ext/tk/sample/tkballoonhelp.rb220
-rw-r--r--ext/tk/sample/tkbiff.rb155
-rw-r--r--ext/tk/sample/tkbrowse.rb79
-rw-r--r--ext/tk/sample/tkcombobox.rb497
-rw-r--r--ext/tk/sample/tkdialog.rb61
-rw-r--r--ext/tk/sample/tkextlib/ICONS/Orig_LICENSE.txt61
-rw-r--r--ext/tk/sample/tkextlib/ICONS/tkIcons195
-rw-r--r--ext/tk/sample/tkextlib/ICONS/tkIcons-sample.kde658
-rw-r--r--ext/tk/sample/tkextlib/ICONS/tkIcons.kde195
-rw-r--r--ext/tk/sample/tkextlib/ICONS/viewIcons.rb329
-rw-r--r--ext/tk/sample/tkextlib/blt/barchart5.rb101
-rw-r--r--ext/tk/sample/tkextlib/blt/calendar.rb117
-rw-r--r--ext/tk/sample/tkextlib/blt/graph6.rb2222
-rw-r--r--ext/tk/sample/tkextlib/blt/graph7.rb40
-rw-r--r--ext/tk/sample/tkextlib/blt/graph7a.rb63
-rw-r--r--ext/tk/sample/tkextlib/blt/graph7b.rb41
-rw-r--r--ext/tk/sample/tkextlib/blt/graph7c.rb45
-rw-r--r--ext/tk/sample/tkextlib/blt/images/buckskin.gifbin0 -> 7561 bytes-rw-r--r--ext/tk/sample/tkextlib/blt/images/chalk.gifbin0 -> 4378 bytes-rw-r--r--ext/tk/sample/tkextlib/blt/images/qv100.t.gifbin0 -> 2694 bytes-rw-r--r--ext/tk/sample/tkextlib/blt/images/rain.gifbin0 -> 3785 bytes-rw-r--r--ext/tk/sample/tkextlib/blt/images/sample.gifbin0 -> 186103 bytes-rw-r--r--ext/tk/sample/tkextlib/blt/pareto.rb90
-rw-r--r--ext/tk/sample/tkextlib/blt/plot1.rb9
-rw-r--r--ext/tk/sample/tkextlib/blt/plot1b.rb10
-rw-r--r--ext/tk/sample/tkextlib/blt/readme.txt2
-rw-r--r--ext/tk/sample/tkextlib/blt/scripts/stipples.rb156
-rw-r--r--ext/tk/sample/tkextlib/blt/winop1.rb40
-rw-r--r--ext/tk/sample/tkextlib/blt/winop2.rb28
-rw-r--r--ext/tk/sample/tkextlib/bwidget/Orig_LICENSE.txt53
-rw-r--r--ext/tk/sample/tkextlib/bwidget/basic.rb198
-rw-r--r--ext/tk/sample/tkextlib/bwidget/bwidget.xbm46
-rw-r--r--ext/tk/sample/tkextlib/bwidget/demo.rb243
-rw-r--r--ext/tk/sample/tkextlib/bwidget/dnd.rb46
-rw-r--r--ext/tk/sample/tkextlib/bwidget/manager.rb150
-rw-r--r--ext/tk/sample/tkextlib/bwidget/select.rb82
-rw-r--r--ext/tk/sample/tkextlib/bwidget/tmpldlg.rb221
-rw-r--r--ext/tk/sample/tkextlib/bwidget/tree.rb289
-rw-r--r--ext/tk/sample/tkextlib/bwidget/x1.xbm2258
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/Orig_LICENSE.txt42
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/box.xbm14
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/clear.gifbin0 -> 279 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/close.gifbin0 -> 249 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/copy.gifbin0 -> 269 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/cut.gifbin0 -> 179 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/exit.gifbin0 -> 396 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/find.gifbin0 -> 386 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/help.gifbin0 -> 591 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/line.xbm14
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/mag.gifbin0 -> 183 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/new.gifbin0 -> 212 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/open.gifbin0 -> 258 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/oval.xbm14
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/paste.gifbin0 -> 376 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/points.xbm14
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/poly.gifbin0 -> 141 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/print.gifbin0 -> 263 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/ruler.gifbin0 -> 174 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/save.gifbin0 -> 270 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/select.gifbin0 -> 124 bytes-rw-r--r--ext/tk/sample/tkextlib/iwidgets/catalog_demo/images/text.xbm14
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/buttonbox.rb22
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/calendar.rb10
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/canvasprintbox.rb8
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/canvasprintdialog.rb8
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/checkbox.rb12
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/combobox.rb32
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/dateentry.rb7
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/datefield.rb8
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/dialog.rb20
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/dialogshell.rb14
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/disjointlistbox.rb16
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/entryfield-1.rb39
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/entryfield-2.rb44
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/entryfield-3.rb40
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/extbutton.rb20
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/extfileselectionbox.rb8
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/extfileselectiondialog.rb29
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/feedback.rb10
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/fileselectionbox.rb8
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/fileselectiondialog.rb28
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/finddialog.rb15
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/hierarchy.rb25
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/hyperhelp.rb14
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/labeledframe.rb14
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/labeledwidget.rb13
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/mainwindow.rb64
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/menubar.rb124
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/menubar2.rb44
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/messagebox1.rb19
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/messagebox2.rb19
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/messagedialog.rb44
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/notebook.rb30
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/notebook2.rb30
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/optionmenu.rb14
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/panedwindow.rb22
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/panedwindow2.rb22
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/promptdialog.rb17
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/pushbutton.rb9
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/radiobox.rb13
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/scrolledcanvas.rb13
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/scrolledframe.rb18
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/scrolledhtml.rb15
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/scrolledlistbox.rb22
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/scrolledtext.rb11
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/selectionbox.rb19
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/selectiondialog.rb12
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/shell.rb17
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/spindate.rb7
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/spinint.rb10
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/spinner.rb33
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/spintime.rb7
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/tabnotebook.rb26
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/tabnotebook2.rb30
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/tabset.rb34
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/timeentry.rb7
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/timefield.rb8
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/toolbar.rb152
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/watch.rb18
-rw-r--r--ext/tk/sample/tkextlib/tcllib/Orig_LICENSE.txt46
-rw-r--r--ext/tk/sample/tkextlib/tcllib/datefield.rb29
-rw-r--r--ext/tk/sample/tkextlib/tcllib/plotdemos1.rb158
-rw-r--r--ext/tk/sample/tkextlib/tcllib/plotdemos2.rb71
-rw-r--r--ext/tk/sample/tkextlib/tcllib/plotdemos3.rb83
-rw-r--r--ext/tk/sample/tkextlib/tcllib/xyplot.rb17
-rw-r--r--ext/tk/sample/tkextlib/tile/Orig_LICENSE.txt30
-rw-r--r--ext/tk/sample/tkextlib/tile/demo.rb983
-rw-r--r--ext/tk/sample/tkextlib/tile/iconlib.tcl110
-rw-r--r--ext/tk/sample/tkextlib/tile/readme.txt2
-rw-r--r--ext/tk/sample/tkextlib/tile/repeater.tcl117
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue.tcl149
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowdown-h.gifbin0 -> 315 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowdown-p.gifbin0 -> 312 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowdown.gifbin0 -> 313 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowleft-h.gifbin0 -> 329 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowleft-p.gifbin0 -> 327 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowleft.gifbin0 -> 323 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowright-h.gifbin0 -> 330 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowright-p.gifbin0 -> 327 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowright.gifbin0 -> 324 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowup-h.gifbin0 -> 309 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowup-p.gifbin0 -> 313 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/arrowup.gifbin0 -> 314 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/button-h.gifbin0 -> 696 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/button-n.gifbin0 -> 770 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/button-n.xcfbin0 -> 1942 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/button-p.gifbin0 -> 769 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/check-hc.gifbin0 -> 254 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/check-hu.gifbin0 -> 234 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/check-nc.gifbin0 -> 249 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/check-nu.gifbin0 -> 229 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-hc.gifbin0 -> 1098 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-hu.gifbin0 -> 626 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-nc.gifbin0 -> 389 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/radio-nu.gifbin0 -> 401 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-thumb-p.gifbin0 -> 343 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-thumb.gifbin0 -> 316 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-vthumb-p.gifbin0 -> 333 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/sb-vthumb.gifbin0 -> 308 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/slider-p.gifbin0 -> 182 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/slider.gifbin0 -> 182 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/vslider-p.gifbin0 -> 183 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/blue/vslider.gifbin0 -> 283 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/blue/pkgIndex.tcl6
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik.tcl194
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowdown-n.gifbin0 -> 273 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowdown-p.gifbin0 -> 258 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowleft-n.gifbin0 -> 292 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowleft-p.gifbin0 -> 272 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowright-n.gifbin0 -> 274 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowright-p.gifbin0 -> 258 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowup-n.gifbin0 -> 286 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/arrowup-p.gifbin0 -> 271 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-d.gifbin0 -> 1266 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-h.gifbin0 -> 896 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-n.gifbin0 -> 881 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-p.gifbin0 -> 625 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/button-s.gifbin0 -> 859 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/check-c.gifbin0 -> 434 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/check-u.gifbin0 -> 423 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/hsb-n.gifbin0 -> 401 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/hsb-p.gifbin0 -> 395 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/hslider-n.gifbin0 -> 592 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-a.gifbin0 -> 1116 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-arrow-n.gifbin0 -> 61 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-d.gifbin0 -> 1057 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/mbut-n.gifbin0 -> 1095 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/radio-c.gifbin0 -> 695 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/radio-u.gifbin0 -> 686 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tab-n.gifbin0 -> 383 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tab-p.gifbin0 -> 878 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tbar-a.gifbin0 -> 907 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tbar-n.gifbin0 -> 238 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/tbar-p.gifbin0 -> 927 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/vsb-n.gifbin0 -> 405 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/vsb-p.gifbin0 -> 399 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik/vslider-n.gifbin0 -> 587 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/pkgIndex.tcl15
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc.rb226
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc.tcl163
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/button-h.gifbin0 -> 522 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/button-n.gifbin0 -> 554 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/button-p.gifbin0 -> 548 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-hc.gifbin0 -> 281 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-hu.gifbin0 -> 273 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-nc.gifbin0 -> 303 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/check-nu.gifbin0 -> 294 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-hc.gifbin0 -> 652 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-hu.gifbin0 -> 644 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-nc.gifbin0 -> 632 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/kroc/radio-nu.gifbin0 -> 621 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/pkgIndex.tcl15
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/pkgIndex.tcl16
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik.tcl125
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowdown-n.gifbin0 -> 362 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowdown-p.gifbin0 -> 250 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowleft-n.gifbin0 -> 378 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowleft-p.gifbin0 -> 267 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowright-n.gifbin0 -> 379 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowright-p.gifbin0 -> 266 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowup-n.gifbin0 -> 363 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/arrowup-p.gifbin0 -> 251 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/button-h.gifbin0 -> 439 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/button-n.gifbin0 -> 443 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/button-p.gifbin0 -> 302 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-hc.gifbin0 -> 169 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-hu.gifbin0 -> 170 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-nc.gifbin0 -> 235 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-nu.gifbin0 -> 226 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/check-pc.gifbin0 -> 169 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/hsb-n.gifbin0 -> 269 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/hslider-n.gifbin0 -> 342 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-hc.gifbin0 -> 178 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-hu.gifbin0 -> 179 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-nc.gifbin0 -> 236 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-nu.gifbin0 -> 178 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/radio-pc.gifbin0 -> 178 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/vsb-n.gifbin0 -> 366 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik/vslider-n.gifbin0 -> 336 bytes-rw-r--r--ext/tk/sample/tkextlib/tile/toolbutton.tcl152
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/Orig_COPYRIGHT.txt12
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/README12
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/hv.rb313
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image1bin0 -> 8995 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image10bin0 -> 3095 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image11bin0 -> 1425 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image12bin0 -> 2468 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image13bin0 -> 4073 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image14bin0 -> 53 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image2bin0 -> 42 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image3bin0 -> 3473 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image4bin0 -> 1988 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image5bin0 -> 973 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image6bin0 -> 2184 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image7bin0 -> 2022 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image8bin0 -> 1186 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/image9bin0 -> 139 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/index.html115
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image1bin0 -> 1966 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image10bin0 -> 255 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image11bin0 -> 590 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image12bin0 -> 254 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image13bin0 -> 493 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image14bin0 -> 195 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image15bin0 -> 68 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image16bin0 -> 157 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image17bin0 -> 81 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image18bin0 -> 545 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image19bin0 -> 53 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image2bin0 -> 49 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image20bin0 -> 533 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image21bin0 -> 564 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image22bin0 -> 81 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image23bin0 -> 539 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image24bin0 -> 151 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image25bin0 -> 453 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image26bin0 -> 520 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image27bin0 -> 565 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image28bin0 -> 416 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image29bin0 -> 121 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image3bin0 -> 10835 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image30bin0 -> 663 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image31bin0 -> 78 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image32bin0 -> 556 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image33bin0 -> 598 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image34bin0 -> 496 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image35bin0 -> 724 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image36bin0 -> 404 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image37bin0 -> 124 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image38bin0 -> 8330 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image39bin0 -> 369 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image4bin0 -> 268 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image5bin0 -> 492 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image6bin0 -> 246 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image7bin0 -> 551 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image8bin0 -> 497 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/image9bin0 -> 492 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page2/index.html433
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image1bin0 -> 113 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image10bin0 -> 5088 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image11bin0 -> 4485 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image12bin0 -> 3579 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image13bin0 -> 5119 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image14bin0 -> 3603 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image2bin0 -> 74 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image3bin0 -> 681 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image4bin0 -> 3056 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image5bin0 -> 2297 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image6bin0 -> 79 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image7bin0 -> 1613 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image8bin0 -> 864 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/image9bin0 -> 2379 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/index.html2787
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page4/image1bin0 -> 42 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page4/image2bin0 -> 14343 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page4/image3bin0 -> 17750 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page4/image4bin0 -> 61 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page4/image5bin0 -> 201 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page4/image6bin0 -> 214 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page4/image7bin0 -> 149 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page4/image8bin0 -> 203 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page4/image9bin0 -> 1504 bytes-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page4/index.html768
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/ss.rb436
-rw-r--r--ext/tk/sample/tkextlib/tkimg/demo.rb1478
-rw-r--r--ext/tk/sample/tkextlib/tkimg/license_terms_of_Img_extension41
-rw-r--r--ext/tk/sample/tkextlib/tkimg/readme.txt3
-rw-r--r--ext/tk/sample/tkextlib/tktable/Orig_LICENSE.txt52
-rw-r--r--ext/tk/sample/tkextlib/tktable/basic.rb60
-rw-r--r--ext/tk/sample/tkextlib/tktable/buttons.rb76
-rw-r--r--ext/tk/sample/tkextlib/tktable/command.rb89
-rw-r--r--ext/tk/sample/tkextlib/tktable/debug.rb101
-rw-r--r--ext/tk/sample/tkextlib/tktable/dynarows.rb99
-rw-r--r--ext/tk/sample/tkextlib/tktable/maxsize.rb67
-rw-r--r--ext/tk/sample/tkextlib/tktable/spreadsheet.rb137
-rw-r--r--ext/tk/sample/tkextlib/tktable/tcllogo.gifbin0 -> 2341 bytes-rw-r--r--ext/tk/sample/tkextlib/tktable/valid.rb88
-rw-r--r--ext/tk/sample/tkextlib/treectrl/bitmaps.rb76
-rw-r--r--ext/tk/sample/tkextlib/treectrl/demo.rb1305
-rw-r--r--ext/tk/sample/tkextlib/treectrl/explorer.rb430
-rw-r--r--ext/tk/sample/tkextlib/treectrl/help.rb404
-rw-r--r--ext/tk/sample/tkextlib/treectrl/imovie.rb130
-rw-r--r--ext/tk/sample/tkextlib/treectrl/layout.rb159
-rw-r--r--ext/tk/sample/tkextlib/treectrl/mailwasher.rb269
-rw-r--r--ext/tk/sample/tkextlib/treectrl/outlook-folders.rb124
-rw-r--r--ext/tk/sample/tkextlib/treectrl/outlook-newgroup.rb448
-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/big-dll.gifbin0 -> 437 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/big-exe.gifbin0 -> 368 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/big-file.gifbin0 -> 466 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/big-folder.gifbin0 -> 459 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/big-txt.gifbin0 -> 392 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/checked.gifbin0 -> 78 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/file.gifbin0 -> 279 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/folder-closed.gifbin0 -> 111 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/folder-open.gifbin0 -> 120 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/help-book-closed.gifbin0 -> 115 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/help-book-open.gifbin0 -> 128 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/help-page.gifbin0 -> 132 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/imovie-01.gifbin0 -> 5406 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/imovie-02.gifbin0 -> 5912 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/imovie-03.gifbin0 -> 4696 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/imovie-04.gifbin0 -> 5783 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/imovie-05.gifbin0 -> 3238 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/imovie-06.gifbin0 -> 3509 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/imovie-07.gifbin0 -> 2091 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/internet-check-off.gifbin0 -> 70 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/internet-check-on.gifbin0 -> 76 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/internet-print.gifbin0 -> 124 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/internet-radio-off.gifbin0 -> 68 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/internet-radio-on.gifbin0 -> 71 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/internet-search.gifbin0 -> 114 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/internet-security.gifbin0 -> 108 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/mac-collapse.gifbin0 -> 275 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/mac-expand.gifbin0 -> 277 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-arrow.gifbin0 -> 73 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-clip.gifbin0 -> 73 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-deleted.gifbin0 -> 138 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-draft.gifbin0 -> 134 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-folder.gifbin0 -> 133 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-group.gifbin0 -> 144 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-inbox.gifbin0 -> 133 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-local.gifbin0 -> 146 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-main.gifbin0 -> 174 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-outbox.gifbin0 -> 136 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-read-2.gifbin0 -> 343 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-read.gifbin0 -> 304 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-sent.gifbin0 -> 132 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-server.gifbin0 -> 163 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-unread.gifbin0 -> 303 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/outlook-watch.gifbin0 -> 98 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/sky.gifbin0 -> 6454 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/small-dll.gifbin0 -> 311 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/small-exe.gifbin0 -> 115 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/small-file.gifbin0 -> 338 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/small-folder.gifbin0 -> 307 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/small-txt.gifbin0 -> 302 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/pics/unchecked.gifbin0 -> 72 bytes-rw-r--r--ext/tk/sample/tkextlib/treectrl/random.rb508
-rw-r--r--ext/tk/sample/tkextlib/treectrl/readme.txt2
-rw-r--r--ext/tk/sample/tkextlib/treectrl/www-options.rb303
-rw-r--r--ext/tk/sample/tkextlib/vu/Orig_LICENSE.txt51
-rw-r--r--ext/tk/sample/tkextlib/vu/README.txt50
-rw-r--r--ext/tk/sample/tkextlib/vu/canvItems.rb90
-rw-r--r--ext/tk/sample/tkextlib/vu/canvSticker.rb82
-rw-r--r--ext/tk/sample/tkextlib/vu/canvSticker2.rb101
-rw-r--r--ext/tk/sample/tkextlib/vu/dial_demo.rb113
-rw-r--r--ext/tk/sample/tkextlib/vu/m128_000.xbm174
-rw-r--r--ext/tk/sample/tkextlib/vu/oscilloscope.rb68
-rw-r--r--ext/tk/sample/tkextlib/vu/pie.rb56
-rw-r--r--ext/tk/sample/tkextlib/vu/vu_demo.rb67
-rw-r--r--ext/tk/sample/tkfrom.rb132
-rw-r--r--ext/tk/sample/tkhello.rb10
-rw-r--r--ext/tk/sample/tkline.rb47
-rw-r--r--ext/tk/sample/tkmenubutton.rb135
-rw-r--r--ext/tk/sample/tkmsgcat-load_rb.rb102
-rw-r--r--ext/tk/sample/tkmsgcat-load_rb2.rb102
-rw-r--r--ext/tk/sample/tkmsgcat-load_tk.rb118
-rw-r--r--ext/tk/sample/tkmulticolumnlist.rb743
-rw-r--r--ext/tk/sample/tkmultilistbox.rb654
-rw-r--r--ext/tk/sample/tkmultilistframe.rb940
-rw-r--r--ext/tk/sample/tkoptdb-safeTk.rb73
-rw-r--r--ext/tk/sample/tkoptdb.rb106
-rw-r--r--ext/tk/sample/tkrttimer.rb77
-rw-r--r--ext/tk/sample/tksleep_sample.rb29
-rw-r--r--ext/tk/sample/tktextframe.rb281
-rw-r--r--ext/tk/sample/tktextio.rb1060
-rw-r--r--ext/tk/sample/tktimer.rb50
-rw-r--r--ext/tk/sample/tktimer2.rb47
-rw-r--r--ext/tk/sample/tktimer3.rb59
-rw-r--r--ext/tk/sample/tktree.rb103
-rw-r--r--ext/tk/sample/tktree.tcl305
-rw-r--r--ext/tk/sample/ttk_wrapper.rb154
-rw-r--r--ext/tk/stubs.c594
-rw-r--r--ext/tk/stubs.h33
-rw-r--r--ext/tk/tcltklib.c11059
-rw-r--r--ext/tk/tkutil/depend1
-rw-r--r--ext/tk/tkutil/extconf.rb18
-rw-r--r--ext/tk/tkutil/tkutil.c1866
-rw-r--r--ext/tkutil/MANIFEST3
-rw-r--r--ext/tkutil/depend1
-rw-r--r--ext/tkutil/tkutil.c46
-rw-r--r--ext/win32/extconf.rb3
-rw-r--r--ext/win32/lib/Win32API.rb31
-rw-r--r--ext/win32/lib/win32/importer.rb14
-rw-r--r--ext/win32/lib/win32/registry.rb898
-rw-r--r--ext/win32/lib/win32/resolv.rb378
-rw-r--r--ext/win32/lib/win32/sspi.rb330
-rw-r--r--ext/win32ole/depend1
-rw-r--r--ext/win32ole/extconf.rb44
-rw-r--r--ext/win32ole/lib/win32ole/property.rb16
-rw-r--r--ext/win32ole/sample/excel1.rb33
-rw-r--r--ext/win32ole/sample/excel2.rb30
-rw-r--r--ext/win32ole/sample/excel3.rb13
-rw-r--r--ext/win32ole/sample/ie.rb11
-rw-r--r--ext/win32ole/sample/ieconst.rb32
-rw-r--r--ext/win32ole/sample/ienavi.rb40
-rw-r--r--ext/win32ole/sample/ienavi2.rb40
-rw-r--r--ext/win32ole/sample/oledirs.rb23
-rw-r--r--ext/win32ole/sample/olegen.rb347
-rw-r--r--ext/win32ole/sample/xml.rb7306
-rw-r--r--ext/win32ole/win32ole.c9360
-rw-r--r--ext/zlib/depend5
-rw-r--r--ext/zlib/extconf.rb64
-rw-r--r--ext/zlib/zlib.c4619
-rw-r--r--file.c5987
-rw-r--r--fnmatch.c190
-rw-r--r--fnmatch.h36
-rw-r--r--gc.c7208
-rw-r--r--gc.h101
-rw-r--r--gem_prelude.rb1
-rw-r--r--glob.c574
-rw-r--r--golf_prelude.rb123
-rw-r--r--goruby.c58
-rw-r--r--hash.c3819
-rw-r--r--ia64.s42
-rw-r--r--include/ruby.h35
-rw-r--r--include/ruby/backward/classext.h18
-rw-r--r--include/ruby/backward/rubyio.h6
-rw-r--r--include/ruby/backward/rubysig.h52
-rw-r--r--include/ruby/backward/st.h6
-rw-r--r--include/ruby/backward/util.h6
-rw-r--r--include/ruby/debug.h110
-rw-r--r--include/ruby/defines.h326
-rw-r--r--include/ruby/encoding.h363
-rw-r--r--include/ruby/intern.h953
-rw-r--r--include/ruby/io.h214
-rw-r--r--include/ruby/missing.h244
-rw-r--r--include/ruby/oniguruma.h835
-rw-r--r--include/ruby/re.h71
-rw-r--r--include/ruby/regex.h46
-rw-r--r--include/ruby/ruby.h1842
-rw-r--r--include/ruby/st.h143
-rw-r--r--include/ruby/subst.h19
-rw-r--r--include/ruby/thread.h45
-rw-r--r--include/ruby/util.h95
-rw-r--r--include/ruby/version.h74
-rw-r--r--include/ruby/vm.h64
-rw-r--r--include/ruby/win32.h827
-rw-r--r--inits.c91
-rw-r--r--insns.def2173
-rwxr-xr-xinstall-sh238
-rw-r--r--internal.h849
-rw-r--r--io.c12654
-rw-r--r--io.h53
-rw-r--r--iseq.c2312
-rw-r--r--iseq.h136
-rw-r--r--lex.c.blt219
-rw-r--r--lib/English.rb163
-rwxr-xr-xlib/abbrev.rb136
-rw-r--r--lib/base64.rb131
-rw-r--r--lib/benchmark.rb568
-rw-r--r--lib/cgi-lib.rb56
-rw-r--r--lib/cgi.rb297
-rw-r--r--lib/cgi/cookie.rb170
-rw-r--r--lib/cgi/core.rb858
-rw-r--r--lib/cgi/html.rb1034
-rw-r--r--lib/cgi/session.rb531
-rw-r--r--lib/cgi/session/pstore.rb111
-rw-r--r--lib/cgi/util.rb202
-rw-r--r--lib/cmath.rb400
-rw-r--r--lib/complex.rb492
-rw-r--r--lib/csv.rb2316
-rw-r--r--lib/date.rb227
-rw-r--r--lib/debug.rb1283
-rw-r--r--lib/delegate.rb436
-rw-r--r--lib/drb.rb2
-rw-r--r--lib/drb/acl.rb250
-rw-r--r--lib/drb/drb.rb1833
-rw-r--r--lib/drb/eq.rb14
-rw-r--r--lib/drb/extserv.rb73
-rw-r--r--lib/drb/extservm.rb93
-rw-r--r--lib/drb/gw.rb160
-rw-r--r--lib/drb/invokemethod.rb34
-rw-r--r--lib/drb/observer.rb25
-rw-r--r--lib/drb/ssl.rb343
-rw-r--r--lib/drb/timeridconv.rb101
-rw-r--r--lib/drb/unix.rb115
-rw-r--r--lib/e2mmap.rb250
-rw-r--r--lib/e2mmap1_0.rb71
-rw-r--r--lib/erb.rb1008
-rw-r--r--lib/fileutils.rb1764
-rw-r--r--lib/finalize.rb205
-rw-r--r--lib/find.rb100
-rw-r--r--lib/forwardable.rb289
-rw-r--r--lib/ftplib.rb617
-rw-r--r--lib/getoptlong.rb612
-rw-r--r--lib/getopts.rb142
-rw-r--r--lib/gserver.rb310
-rw-r--r--lib/ipaddr.rb935
-rw-r--r--lib/irb.rb704
-rw-r--r--lib/irb/cmd/chws.rb33
-rw-r--r--lib/irb/cmd/fork.rb39
-rw-r--r--lib/irb/cmd/help.rb41
-rw-r--r--lib/irb/cmd/load.rb68
-rw-r--r--lib/irb/cmd/nop.rb39
-rw-r--r--lib/irb/cmd/pushws.rb40
-rw-r--r--lib/irb/cmd/subirb.rb42
-rw-r--r--lib/irb/completion.rb235
-rw-r--r--lib/irb/context.rb422
-rw-r--r--lib/irb/ext/change-ws.rb69
-rw-r--r--lib/irb/ext/history.rb120
-rw-r--r--lib/irb/ext/loader.rb130
-rw-r--r--lib/irb/ext/math-mode.rb47
-rw-r--r--lib/irb/ext/multi-irb.rb286
-rw-r--r--lib/irb/ext/save-history.rb120
-rw-r--r--lib/irb/ext/tracer.rb71
-rw-r--r--lib/irb/ext/use-loader.rb73
-rw-r--r--lib/irb/ext/workspaces.rb66
-rw-r--r--lib/irb/extend-command.rb322
-rw-r--r--lib/irb/frame.rb80
-rw-r--r--lib/irb/help.rb36
-rw-r--r--lib/irb/init.rb310
-rw-r--r--lib/irb/input-method.rb193
-rw-r--r--lib/irb/inspector.rb145
-rw-r--r--lib/irb/lc/.document4
-rw-r--r--lib/irb/lc/error.rb31
-rw-r--r--lib/irb/lc/help-message50
-rw-r--r--lib/irb/lc/ja/encoding_aliases.rb10
-rw-r--r--lib/irb/lc/ja/error.rb30
-rw-r--r--lib/irb/lc/ja/help-message53
-rw-r--r--lib/irb/locale.rb182
-rw-r--r--lib/irb/magic-file.rb37
-rw-r--r--lib/irb/notifier.rb231
-rw-r--r--lib/irb/output-method.rb91
-rw-r--r--lib/irb/ruby-lex.rb1211
-rw-r--r--lib/irb/ruby-token.rb267
-rw-r--r--lib/irb/slex.rb284
-rw-r--r--lib/irb/src_encoding.rb4
-rw-r--r--lib/irb/version.rb15
-rw-r--r--lib/irb/workspace.rb114
-rw-r--r--lib/irb/ws-for-case-2.rb14
-rw-r--r--lib/irb/xmp.rb173
-rw-r--r--lib/jcode.rb207
-rw-r--r--lib/logger.rb845
-rw-r--r--lib/mailread.rb48
-rw-r--r--lib/mathn.rb442
-rw-r--r--lib/matrix.rb2088
-rw-r--r--lib/matrix/eigenvalue_decomposition.rb882
-rw-r--r--lib/matrix/lup_decomposition.rb218
-rw-r--r--lib/minitest/.document2
-rw-r--r--lib/minitest/README.txt457
-rw-r--r--lib/minitest/autorun.rb19
-rw-r--r--lib/minitest/benchmark.rb423
-rw-r--r--lib/minitest/hell.rb20
-rw-r--r--lib/minitest/mock.rb200
-rw-r--r--lib/minitest/parallel_each.rb80
-rw-r--r--lib/minitest/pride.rb119
-rw-r--r--lib/minitest/spec.rb551
-rw-r--r--lib/minitest/unit.rb1422
-rw-r--r--lib/mkmf.rb2622
-rw-r--r--lib/monitor.rb300
-rw-r--r--lib/mutex_m.rb248
-rw-r--r--lib/net/ftp.rb1120
-rw-r--r--lib/net/http.rb1555
-rw-r--r--lib/net/http/backward.rb25
-rw-r--r--lib/net/http/exceptions.rb25
-rw-r--r--lib/net/http/generic_request.rb329
-rw-r--r--lib/net/http/header.rb452
-rw-r--r--lib/net/http/proxy_delta.rb16
-rw-r--r--lib/net/http/request.rb20
-rw-r--r--lib/net/http/requests.rb122
-rw-r--r--lib/net/http/response.rb405
-rw-r--r--lib/net/http/responses.rb268
-rw-r--r--lib/net/https.rb22
-rw-r--r--lib/net/imap.rb3761
-rw-r--r--lib/net/pop.rb1021
-rw-r--r--lib/net/protocol.rb416
-rw-r--r--lib/net/smtp.rb1065
-rw-r--r--lib/net/telnet.rb763
-rw-r--r--lib/observer.rb197
-rw-r--r--lib/open-uri.rb788
-rw-r--r--lib/open3.rb663
-rw-r--r--lib/optparse.rb1956
-rw-r--r--lib/optparse/ac.rb50
-rw-r--r--lib/optparse/date.rb17
-rw-r--r--lib/optparse/shellwords.rb6
-rw-r--r--lib/optparse/time.rb10
-rw-r--r--lib/optparse/uri.rb6
-rw-r--r--lib/optparse/version.rb70
-rw-r--r--lib/ostruct.rb286
-rw-r--r--lib/parsearg.rb84
-rw-r--r--lib/parsedate.rb42
-rw-r--r--lib/ping.rb55
-rw-r--r--lib/pp.rb544
-rw-r--r--lib/prettyprint.rb576
-rw-r--r--lib/prime.rb490
-rw-r--r--lib/profile.rb10
-rw-r--r--lib/profiler.rb148
-rw-r--r--lib/pstore.rb506
-rw-r--r--lib/racc/parser.rb624
-rw-r--r--lib/racc/rdoc/grammar.en.rdoc226
-rw-r--r--lib/rake.rb73
-rw-r--r--lib/rake/alt_system.rb108
-rw-r--r--lib/rake/application.rb728
-rw-r--r--lib/rake/backtrace.rb20
-rw-r--r--lib/rake/clean.rb55
-rw-r--r--lib/rake/cloneable.rb16
-rw-r--r--lib/rake/contrib/compositepublisher.rb21
-rw-r--r--lib/rake/contrib/ftptools.rb139
-rw-r--r--lib/rake/contrib/publisher.rb73
-rw-r--r--lib/rake/contrib/rubyforgepublisher.rb16
-rw-r--r--lib/rake/contrib/sshpublisher.rb50
-rw-r--r--lib/rake/contrib/sys.rb2
-rw-r--r--lib/rake/default_loader.rb10
-rw-r--r--lib/rake/dsl_definition.rb157
-rw-r--r--lib/rake/early_time.rb18
-rw-r--r--lib/rake/ext/core.rb28
-rw-r--r--lib/rake/ext/module.rb1
-rw-r--r--lib/rake/ext/string.rb166
-rw-r--r--lib/rake/ext/time.rb15
-rw-r--r--lib/rake/file_creation_task.rb24
-rw-r--r--lib/rake/file_list.rb416
-rw-r--r--lib/rake/file_task.rb46
-rw-r--r--lib/rake/file_utils.rb116
-rw-r--r--lib/rake/file_utils_ext.rb144
-rw-r--r--lib/rake/gempackagetask.rb2
-rw-r--r--lib/rake/invocation_chain.rb57
-rw-r--r--lib/rake/invocation_exception_mixin.rb16
-rw-r--r--lib/rake/lib/.document1
-rw-r--r--lib/rake/lib/project.rake21
-rw-r--r--lib/rake/linked_list.rb103
-rw-r--r--lib/rake/loaders/makefile.rb40
-rw-r--r--lib/rake/multi_task.rb13
-rw-r--r--lib/rake/name_space.rb25
-rw-r--r--lib/rake/packagetask.rb190
-rw-r--r--lib/rake/pathmap.rb1
-rw-r--r--lib/rake/phony.rb15
-rw-r--r--lib/rake/private_reader.rb20
-rw-r--r--lib/rake/promise.rb99
-rw-r--r--lib/rake/pseudo_status.rb29
-rw-r--r--lib/rake/rake_module.rb37
-rw-r--r--lib/rake/rake_test_loader.rb22
-rw-r--r--lib/rake/rdoctask.rb2
-rw-r--r--lib/rake/ruby182_test_unit_fix.rb27
-rw-r--r--lib/rake/rule_recursion_overflow_error.rb20
-rw-r--r--lib/rake/runtest.rb22
-rw-r--r--lib/rake/scope.rb42
-rw-r--r--lib/rake/task.rb378
-rw-r--r--lib/rake/task_argument_error.rb7
-rw-r--r--lib/rake/task_arguments.rb89
-rw-r--r--lib/rake/task_manager.rb297
-rw-r--r--lib/rake/tasklib.rb22
-rw-r--r--lib/rake/testtask.rb201
-rw-r--r--lib/rake/thread_history_display.rb48
-rw-r--r--lib/rake/thread_pool.rb161
-rw-r--r--lib/rake/trace_output.rb22
-rw-r--r--lib/rake/version.rb9
-rw-r--r--lib/rake/win32.rb56
-rw-r--r--lib/rational.rb366
-rw-r--r--lib/rbconfig/.document1
-rw-r--r--lib/rbconfig/datadir.rb13
-rw-r--r--lib/rbconfig/obsolete.rb38
-rw-r--r--lib/rdoc.rb183
-rw-r--r--lib/rdoc/alias.rb111
-rw-r--r--lib/rdoc/anon_class.rb10
-rw-r--r--lib/rdoc/any_method.rb308
-rw-r--r--lib/rdoc/attr.rb175
-rw-r--r--lib/rdoc/class_module.rb799
-rw-r--r--lib/rdoc/code_object.rb429
-rw-r--r--lib/rdoc/code_objects.rb5
-rw-r--r--lib/rdoc/comment.rb229
-rw-r--r--lib/rdoc/constant.rb186
-rw-r--r--lib/rdoc/context.rb1208
-rw-r--r--lib/rdoc/context/section.rb238
-rw-r--r--lib/rdoc/cross_reference.rb183
-rw-r--r--lib/rdoc/encoding.rb97
-rw-r--r--lib/rdoc/erb_partial.rb18
-rw-r--r--lib/rdoc/erbio.rb37
-rw-r--r--lib/rdoc/extend.rb9
-rw-r--r--lib/rdoc/generator.rb50
-rw-r--r--lib/rdoc/generator/darkfish.rb759
-rw-r--r--lib/rdoc/generator/json_index.rb248
-rw-r--r--lib/rdoc/generator/markup.rb169
-rw-r--r--lib/rdoc/generator/ri.rb30
-rw-r--r--lib/rdoc/generator/template/darkfish/.document0
-rw-r--r--lib/rdoc/generator/template/darkfish/_footer.rhtml5
-rw-r--r--lib/rdoc/generator/template/darkfish/_head.rhtml22
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml19
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml9
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml15
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml9
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml15
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml15
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml12
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml11
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml12
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml11
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml15
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml11
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml18
-rw-r--r--lib/rdoc/generator/template/darkfish/class.rhtml174
-rw-r--r--lib/rdoc/generator/template/darkfish/fonts.css167
-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttfbin0 -> 94668 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttfbin0 -> 94196 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttfbin0 -> 96184 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttfbin0 -> 95316 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttfbin0 -> 71200 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttfbin0 -> 71692 bytes-rwxr-xr-xlib/rdoc/generator/template/darkfish/images/add.pngbin0 -> 733 bytes-rwxr-xr-xlib/rdoc/generator/template/darkfish/images/arrow_up.pngbin0 -> 372 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/brick.pngbin0 -> 452 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/brick_link.pngbin0 -> 764 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/bug.pngbin0 -> 774 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/bullet_black.pngbin0 -> 211 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.pngbin0 -> 207 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.pngbin0 -> 209 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/date.pngbin0 -> 626 bytes-rwxr-xr-xlib/rdoc/generator/template/darkfish/images/delete.pngbin0 -> 715 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/find.pngbin0 -> 659 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/loadingAnimation.gifbin0 -> 5886 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/macFFBgHack.pngbin0 -> 207 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/package.pngbin0 -> 853 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/page_green.pngbin0 -> 621 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/page_white_text.pngbin0 -> 342 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/page_white_width.pngbin0 -> 309 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/plugin.pngbin0 -> 591 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/ruby.pngbin0 -> 592 bytes-rwxr-xr-xlib/rdoc/generator/template/darkfish/images/tag_blue.pngbin0 -> 1880 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/tag_green.pngbin0 -> 613 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/transparent.pngbin0 -> 97 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/wrench.pngbin0 -> 610 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/wrench_orange.pngbin0 -> 584 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/zoom.pngbin0 -> 692 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/index.rhtml23
-rw-r--r--lib/rdoc/generator/template/darkfish/js/darkfish.js140
-rw-r--r--lib/rdoc/generator/template/darkfish/js/jquery.js18
-rw-r--r--lib/rdoc/generator/template/darkfish/js/search.js102
-rw-r--r--lib/rdoc/generator/template/darkfish/page.rhtml18
-rw-r--r--lib/rdoc/generator/template/darkfish/rdoc.css580
-rw-r--r--lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml18
-rw-r--r--lib/rdoc/generator/template/darkfish/servlet_root.rhtml63
-rw-r--r--lib/rdoc/generator/template/darkfish/table_of_contents.rhtml58
-rw-r--r--lib/rdoc/generator/template/json_index/.document1
-rw-r--r--lib/rdoc/generator/template/json_index/js/navigation.js142
-rw-r--r--lib/rdoc/generator/template/json_index/js/searcher.js228
-rw-r--r--lib/rdoc/ghost_method.rb6
-rw-r--r--lib/rdoc/include.rb9
-rw-r--r--lib/rdoc/known_classes.rb73
-rw-r--r--lib/rdoc/markdown.rb15961
-rw-r--r--lib/rdoc/markdown/entities.rb2131
-rw-r--r--lib/rdoc/markdown/literals_1_9.rb420
-rw-r--r--lib/rdoc/markup.rb869
-rw-r--r--lib/rdoc/markup/attr_changer.rb22
-rw-r--r--lib/rdoc/markup/attr_span.rb29
-rw-r--r--lib/rdoc/markup/attribute_manager.rb343
-rw-r--r--lib/rdoc/markup/attributes.rb70
-rw-r--r--lib/rdoc/markup/blank_line.rb27
-rw-r--r--lib/rdoc/markup/block_quote.rb14
-rw-r--r--lib/rdoc/markup/document.rb164
-rw-r--r--lib/rdoc/markup/formatter.rb264
-rw-r--r--lib/rdoc/markup/formatter_test_case.rb767
-rw-r--r--lib/rdoc/markup/hard_break.rb31
-rw-r--r--lib/rdoc/markup/heading.rb78
-rw-r--r--lib/rdoc/markup/include.rb42
-rw-r--r--lib/rdoc/markup/indented_paragraph.rb47
-rw-r--r--lib/rdoc/markup/inline.rb1
-rw-r--r--lib/rdoc/markup/list.rb101
-rw-r--r--lib/rdoc/markup/list_item.rb99
-rw-r--r--lib/rdoc/markup/paragraph.rb28
-rw-r--r--lib/rdoc/markup/parser.rb558
-rw-r--r--lib/rdoc/markup/pre_process.rb293
-rw-r--r--lib/rdoc/markup/raw.rb69
-rw-r--r--lib/rdoc/markup/rule.rb20
-rw-r--r--lib/rdoc/markup/special.rb40
-rw-r--r--lib/rdoc/markup/text_formatter_test_case.rb114
-rw-r--r--lib/rdoc/markup/to_ansi.rb93
-rw-r--r--lib/rdoc/markup/to_bs.rb78
-rw-r--r--lib/rdoc/markup/to_html.rb397
-rw-r--r--lib/rdoc/markup/to_html_crossref.rb160
-rw-r--r--lib/rdoc/markup/to_html_snippet.rb284
-rw-r--r--lib/rdoc/markup/to_joined_paragraph.rb71
-rw-r--r--lib/rdoc/markup/to_label.rb74
-rw-r--r--lib/rdoc/markup/to_markdown.rb191
-rw-r--r--lib/rdoc/markup/to_rdoc.rb333
-rw-r--r--lib/rdoc/markup/to_table_of_contents.rb87
-rw-r--r--lib/rdoc/markup/to_test.rb69
-rw-r--r--lib/rdoc/markup/to_tt_only.rb120
-rw-r--r--lib/rdoc/markup/verbatim.rb83
-rw-r--r--lib/rdoc/meta_method.rb6
-rw-r--r--lib/rdoc/method_attr.rb410
-rw-r--r--lib/rdoc/mixin.rb120
-rw-r--r--lib/rdoc/normal_class.rb92
-rw-r--r--lib/rdoc/normal_module.rb73
-rw-r--r--lib/rdoc/options.rb1199
-rw-r--r--lib/rdoc/parser.rb308
-rw-r--r--lib/rdoc/parser/c.rb1229
-rw-r--r--lib/rdoc/parser/changelog.rb194
-rw-r--r--lib/rdoc/parser/markdown.rb23
-rw-r--r--lib/rdoc/parser/rd.rb22
-rw-r--r--lib/rdoc/parser/ruby.rb2160
-rw-r--r--lib/rdoc/parser/ruby_tools.rb167
-rw-r--r--lib/rdoc/parser/simple.rb61
-rw-r--r--lib/rdoc/parser/text.rb11
-rw-r--r--lib/rdoc/rd.rb99
-rw-r--r--lib/rdoc/rd/block_parser.rb1055
-rw-r--r--lib/rdoc/rd/inline.rb71
-rw-r--r--lib/rdoc/rd/inline_parser.rb1207
-rw-r--r--lib/rdoc/rdoc.rb568
-rw-r--r--lib/rdoc/require.rb51
-rw-r--r--lib/rdoc/ri.rb20
-rw-r--r--lib/rdoc/ri/driver.rb1497
-rw-r--r--lib/rdoc/ri/formatter.rb5
-rw-r--r--lib/rdoc/ri/paths.rb187
-rw-r--r--lib/rdoc/ri/store.rb6
-rw-r--r--lib/rdoc/ruby_lex.rb1377
-rw-r--r--lib/rdoc/ruby_token.rb460
-rw-r--r--lib/rdoc/rubygems_hook.rb247
-rw-r--r--lib/rdoc/servlet.rb441
-rw-r--r--lib/rdoc/single_class.rb21
-rw-r--r--lib/rdoc/stats.rb457
-rw-r--r--lib/rdoc/stats/normal.rb48
-rw-r--r--lib/rdoc/stats/quiet.rb59
-rw-r--r--lib/rdoc/stats/verbose.rb45
-rw-r--r--lib/rdoc/store.rb979
-rw-r--r--lib/rdoc/task.rb330
-rw-r--r--lib/rdoc/test_case.rb217
-rw-r--r--lib/rdoc/text.rb315
-rw-r--r--lib/rdoc/token_stream.rb95
-rw-r--r--lib/rdoc/tom_doc.rb257
-rw-r--r--lib/rdoc/top_level.rb282
-rw-r--r--lib/resolv-replace.rb74
-rw-r--r--lib/resolv.rb2819
-rw-r--r--lib/rexml/attlistdecl.rb62
-rw-r--r--lib/rexml/attribute.rb191
-rw-r--r--lib/rexml/cdata.rb67
-rw-r--r--lib/rexml/child.rb96
-rw-r--r--lib/rexml/comment.rb80
-rw-r--r--lib/rexml/doctype.rb269
-rw-r--r--lib/rexml/document.rb286
-rw-r--r--lib/rexml/dtd/attlistdecl.rb10
-rw-r--r--lib/rexml/dtd/dtd.rb51
-rw-r--r--lib/rexml/dtd/elementdecl.rb17
-rw-r--r--lib/rexml/dtd/entitydecl.rb56
-rw-r--r--lib/rexml/dtd/notationdecl.rb39
-rw-r--r--lib/rexml/element.rb1242
-rw-r--r--lib/rexml/encoding.rb50
-rw-r--r--lib/rexml/entity.rb166
-rw-r--r--lib/rexml/formatters/default.rb111
-rw-r--r--lib/rexml/formatters/pretty.rb141
-rw-r--r--lib/rexml/formatters/transitive.rb57
-rw-r--r--lib/rexml/functions.rb394
-rw-r--r--lib/rexml/instruction.rb70
-rw-r--r--lib/rexml/light/node.rb195
-rw-r--r--lib/rexml/namespace.rb47
-rw-r--r--lib/rexml/node.rb75
-rw-r--r--lib/rexml/output.rb29
-rw-r--r--lib/rexml/parent.rb167
-rw-r--r--lib/rexml/parseexception.rb51
-rw-r--r--lib/rexml/parsers/baseparser.rb532
-rw-r--r--lib/rexml/parsers/lightparser.rb58
-rw-r--r--lib/rexml/parsers/pullparser.rb196
-rw-r--r--lib/rexml/parsers/sax2parser.rb273
-rw-r--r--lib/rexml/parsers/streamparser.rb52
-rw-r--r--lib/rexml/parsers/treeparser.rb100
-rw-r--r--lib/rexml/parsers/ultralightparser.rb56
-rw-r--r--lib/rexml/parsers/xpathparser.rb697
-rw-r--r--lib/rexml/quickpath.rb265
-rw-r--r--lib/rexml/rexml.rb31
-rw-r--r--lib/rexml/sax2listener.rb97
-rw-r--r--lib/rexml/security.rb27
-rw-r--r--lib/rexml/source.rb296
-rw-r--r--lib/rexml/streamlistener.rb92
-rw-r--r--lib/rexml/syncenumerator.rb32
-rw-r--r--lib/rexml/text.rb425
-rw-r--r--lib/rexml/undefinednamespaceexception.rb8
-rw-r--r--lib/rexml/validation/relaxng.rb559
-rw-r--r--lib/rexml/validation/validation.rb155
-rw-r--r--lib/rexml/validation/validationexception.rb9
-rw-r--r--lib/rexml/xmldecl.rb115
-rw-r--r--lib/rexml/xmltokens.rb18
-rw-r--r--lib/rexml/xpath.rb80
-rw-r--r--lib/rexml/xpath_parser.rb803
-rw-r--r--lib/rinda/rinda.rb327
-rw-r--r--lib/rinda/ring.rb499
-rw-r--r--lib/rinda/tuplespace.rb642
-rw-r--r--lib/rss.rb91
-rw-r--r--lib/rss/0.9.rb461
-rw-r--r--lib/rss/1.0.rb484
-rw-r--r--lib/rss/2.0.rb142
-rw-r--r--lib/rss/atom.rb839
-rw-r--r--lib/rss/content.rb33
-rw-r--r--lib/rss/content/1.0.rb9
-rw-r--r--lib/rss/content/2.0.rb11
-rw-r--r--lib/rss/converter.rb170
-rw-r--r--lib/rss/dublincore.rb163
-rw-r--r--lib/rss/dublincore/1.0.rb12
-rw-r--r--lib/rss/dublincore/2.0.rb12
-rw-r--r--lib/rss/dublincore/atom.rb16
-rw-r--r--lib/rss/image.rb197
-rw-r--r--lib/rss/itunes.rb412
-rw-r--r--lib/rss/maker.rb78
-rw-r--r--lib/rss/maker/0.9.rb508
-rw-r--r--lib/rss/maker/1.0.rb435
-rw-r--r--lib/rss/maker/2.0.rb223
-rw-r--r--lib/rss/maker/atom.rb172
-rw-r--r--lib/rss/maker/base.rb944
-rw-r--r--lib/rss/maker/content.rb21
-rw-r--r--lib/rss/maker/dublincore.rb121
-rw-r--r--lib/rss/maker/entry.rb163
-rw-r--r--lib/rss/maker/feed.rb426
-rw-r--r--lib/rss/maker/image.rb111
-rw-r--r--lib/rss/maker/itunes.rb242
-rw-r--r--lib/rss/maker/slash.rb33
-rw-r--r--lib/rss/maker/syndication.rb18
-rw-r--r--lib/rss/maker/taxonomy.rb118
-rw-r--r--lib/rss/maker/trackback.rb61
-rw-r--r--lib/rss/parser.rb570
-rw-r--r--lib/rss/rexmlparser.rb49
-rw-r--r--lib/rss/rss.rb1352
-rw-r--r--lib/rss/slash.rb51
-rw-r--r--lib/rss/syndication.rb68
-rw-r--r--lib/rss/taxonomy.rb147
-rw-r--r--lib/rss/trackback.rb290
-rw-r--r--lib/rss/utils.rb199
-rw-r--r--lib/rss/xml-stylesheet.rb105
-rw-r--r--lib/rss/xml.rb71
-rw-r--r--lib/rss/xmlparser.rb94
-rw-r--r--lib/rss/xmlscanner.rb121
-rw-r--r--lib/rubygems.rb1221
-rw-r--r--lib/rubygems/LICENSE.txt54
-rw-r--r--lib/rubygems/available_set.rb161
-rw-r--r--lib/rubygems/basic_specification.rb212
-rw-r--r--lib/rubygems/command.rb579
-rw-r--r--lib/rubygems/command_manager.rb217
-rw-r--r--lib/rubygems/commands/build_command.rb60
-rw-r--r--lib/rubygems/commands/cert_command.rb278
-rw-r--r--lib/rubygems/commands/check_command.rb93
-rw-r--r--lib/rubygems/commands/cleanup_command.rb165
-rw-r--r--lib/rubygems/commands/contents_command.rb170
-rw-r--r--lib/rubygems/commands/dependency_command.rb207
-rw-r--r--lib/rubygems/commands/environment_command.rb155
-rw-r--r--lib/rubygems/commands/fetch_command.rb77
-rw-r--r--lib/rubygems/commands/generate_index_command.rb84
-rw-r--r--lib/rubygems/commands/help_command.rb205
-rw-r--r--lib/rubygems/commands/install_command.rb270
-rw-r--r--lib/rubygems/commands/list_command.rb40
-rw-r--r--lib/rubygems/commands/lock_command.rb110
-rw-r--r--lib/rubygems/commands/mirror_command.rb23
-rw-r--r--lib/rubygems/commands/outdated_command.rb32
-rw-r--r--lib/rubygems/commands/owner_command.rb97
-rw-r--r--lib/rubygems/commands/pristine_command.rb151
-rw-r--r--lib/rubygems/commands/push_command.rb98
-rw-r--r--lib/rubygems/commands/query_command.rb343
-rw-r--r--lib/rubygems/commands/rdoc_command.rb96
-rw-r--r--lib/rubygems/commands/search_command.rb40
-rw-r--r--lib/rubygems/commands/server_command.rb86
-rw-r--r--lib/rubygems/commands/setup_command.rb483
-rw-r--r--lib/rubygems/commands/sources_command.rb210
-rw-r--r--lib/rubygems/commands/specification_command.rb145
-rw-r--r--lib/rubygems/commands/stale_command.rb38
-rw-r--r--lib/rubygems/commands/uninstall_command.rb152
-rw-r--r--lib/rubygems/commands/unpack_command.rb182
-rw-r--r--lib/rubygems/commands/update_command.rb275
-rw-r--r--lib/rubygems/commands/which_command.rb90
-rw-r--r--lib/rubygems/commands/yank_command.rb112
-rw-r--r--lib/rubygems/compatibility.rb58
-rw-r--r--lib/rubygems/config_file.rb471
-rw-r--r--lib/rubygems/core_ext/kernel_gem.rb59
-rwxr-xr-xlib/rubygems/core_ext/kernel_require.rb149
-rw-r--r--lib/rubygems/defaults.rb144
-rw-r--r--lib/rubygems/dependency.rb313
-rw-r--r--lib/rubygems/dependency_installer.rb439
-rw-r--r--lib/rubygems/dependency_list.rb244
-rw-r--r--lib/rubygems/deprecate.rb70
-rw-r--r--lib/rubygems/doctor.rb131
-rw-r--r--lib/rubygems/errors.rb107
-rw-r--r--lib/rubygems/exceptions.rb250
-rw-r--r--lib/rubygems/ext.rb18
-rw-r--r--lib/rubygems/ext/build_error.rb6
-rw-r--r--lib/rubygems/ext/builder.rb218
-rw-r--r--lib/rubygems/ext/cmake_builder.rb16
-rw-r--r--lib/rubygems/ext/configure_builder.rb23
-rw-r--r--lib/rubygems/ext/ext_conf_builder.rb70
-rw-r--r--lib/rubygems/ext/rake_builder.rb36
-rw-r--r--lib/rubygems/gem_runner.rb81
-rw-r--r--lib/rubygems/gemcutter_utilities.rb154
-rw-r--r--lib/rubygems/indexer.rb498
-rw-r--r--lib/rubygems/install_default_message.rb12
-rw-r--r--lib/rubygems/install_message.rb12
-rw-r--r--lib/rubygems/install_update_options.rb169
-rw-r--r--lib/rubygems/installer.rb787
-rw-r--r--lib/rubygems/installer_test_case.rb196
-rw-r--r--lib/rubygems/local_remote_options.rb148
-rw-r--r--lib/rubygems/mock_gem_ui.rb88
-rw-r--r--lib/rubygems/name_tuple.rb121
-rw-r--r--lib/rubygems/package.rb600
-rw-r--r--lib/rubygems/package/digest_io.rb64
-rw-r--r--lib/rubygems/package/old.rb178
-rw-r--r--lib/rubygems/package/tar_header.rb229
-rw-r--r--lib/rubygems/package/tar_reader.rb123
-rw-r--r--lib/rubygems/package/tar_reader/entry.rb145
-rw-r--r--lib/rubygems/package/tar_test_case.rb137
-rw-r--r--lib/rubygems/package/tar_writer.rb320
-rw-r--r--lib/rubygems/package_task.rb128
-rw-r--r--lib/rubygems/path_support.rb87
-rw-r--r--lib/rubygems/platform.rb203
-rw-r--r--lib/rubygems/psych_additions.rb9
-rw-r--r--lib/rubygems/psych_tree.rb31
-rw-r--r--lib/rubygems/rdoc.rb336
-rw-r--r--lib/rubygems/remote_fetcher.rb338
-rw-r--r--lib/rubygems/request.rb274
-rw-r--r--lib/rubygems/request_set.rb273
-rw-r--r--lib/rubygems/request_set/gem_dependency_api.rb513
-rw-r--r--lib/rubygems/request_set/lockfile.rb356
-rw-r--r--lib/rubygems/requirement.rb254
-rw-r--r--lib/rubygems/resolver.rb415
-rw-r--r--lib/rubygems/resolver/activation_request.rb138
-rw-r--r--lib/rubygems/resolver/api_set.rb110
-rw-r--r--lib/rubygems/resolver/api_specification.rb75
-rw-r--r--lib/rubygems/resolver/best_set.rb21
-rw-r--r--lib/rubygems/resolver/composed_set.rb39
-rw-r--r--lib/rubygems/resolver/conflict.rb123
-rw-r--r--lib/rubygems/resolver/current_set.rb13
-rw-r--r--lib/rubygems/resolver/dependency_request.rb71
-rw-r--r--lib/rubygems/resolver/git_set.rb70
-rw-r--r--lib/rubygems/resolver/git_specification.rb16
-rw-r--r--lib/rubygems/resolver/index_set.rb50
-rw-r--r--lib/rubygems/resolver/index_specification.rb69
-rw-r--r--lib/rubygems/resolver/installed_specification.rb34
-rw-r--r--lib/rubygems/resolver/installer_set.rb152
-rw-r--r--lib/rubygems/resolver/lock_set.rb60
-rw-r--r--lib/rubygems/resolver/requirement_list.rb44
-rw-r--r--lib/rubygems/resolver/set.rb27
-rw-r--r--lib/rubygems/resolver/spec_specification.rb58
-rw-r--r--lib/rubygems/resolver/specification.rb60
-rw-r--r--lib/rubygems/resolver/vendor_set.rb66
-rw-r--r--lib/rubygems/resolver/vendor_specification.rb16
-rw-r--r--lib/rubygems/security.rb595
-rw-r--r--lib/rubygems/security/policies.rb115
-rw-r--r--lib/rubygems/security/policy.rb294
-rw-r--r--lib/rubygems/security/signer.rb154
-rw-r--r--lib/rubygems/security/trust_dir.rb104
-rw-r--r--lib/rubygems/server.rb833
-rw-r--r--lib/rubygems/source.rb217
-rw-r--r--lib/rubygems/source/git.rb186
-rw-r--r--lib/rubygems/source/installed.rb34
-rw-r--r--lib/rubygems/source/local.rb128
-rw-r--r--lib/rubygems/source/specific_file.rb67
-rw-r--r--lib/rubygems/source/vendor.rb25
-rw-r--r--lib/rubygems/source_list.rb149
-rw-r--r--lib/rubygems/source_local.rb5
-rw-r--r--lib/rubygems/source_specific_file.rb4
-rw-r--r--lib/rubygems/spec_fetcher.rb276
-rw-r--r--lib/rubygems/specification.rb2758
-rw-r--r--lib/rubygems/ssl_certs/.document1
-rw-r--r--lib/rubygems/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem14
-rw-r--r--lib/rubygems/ssl_certs/DigiCertHighAssuranceEVRootCA.pem23
-rw-r--r--lib/rubygems/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem28
-rw-r--r--lib/rubygems/ssl_certs/GeoTrustGlobalCA.pem20
-rw-r--r--lib/rubygems/stub_specification.rb176
-rw-r--r--lib/rubygems/syck_hack.rb76
-rw-r--r--lib/rubygems/test_case.rb1358
-rw-r--r--lib/rubygems/test_utilities.rb348
-rw-r--r--lib/rubygems/text.rb65
-rw-r--r--lib/rubygems/uninstaller.rb342
-rw-r--r--lib/rubygems/uri_formatter.rb49
-rw-r--r--lib/rubygems/user_interaction.rb700
-rw-r--r--lib/rubygems/util.rb63
-rw-r--r--lib/rubygems/util/list.rb48
-rw-r--r--lib/rubygems/util/stringio.rb34
-rw-r--r--lib/rubygems/validator.rb164
-rw-r--r--lib/rubygems/version.rb346
-rw-r--r--lib/rubygems/version_option.rb71
-rw-r--r--lib/scanf.rb771
-rw-r--r--lib/securerandom.rb260
-rw-r--r--lib/set.rb767
-rw-r--r--lib/shell.rb427
-rw-r--r--lib/shell/builtin-command.rb160
-rw-r--r--lib/shell/command-processor.rb670
-rw-r--r--lib/shell/error.rb25
-rw-r--r--lib/shell/filter.rb137
-rw-r--r--lib/shell/process-controller.rb319
-rw-r--r--lib/shell/system-command.rb159
-rw-r--r--lib/shell/version.rb15
-rw-r--r--lib/shellwords.rb215
-rw-r--r--lib/singleton.rb172
-rw-r--r--lib/sync.rb506
-rw-r--r--lib/tempfile.rb389
-rw-r--r--lib/test/unit.rb876
-rw-r--r--lib/test/unit/assertions.rb396
-rw-r--r--lib/test/unit/parallel.rb184
-rw-r--r--lib/test/unit/test-unit.gemspec14
-rw-r--r--lib/test/unit/testcase.rb34
-rw-r--r--lib/thread.rb110
-rw-r--r--lib/thwait.rb162
-rw-r--r--lib/time.rb638
-rw-r--r--lib/timeout.rb116
-rw-r--r--lib/tk.rb829
-rw-r--r--lib/tkcanvas.rb326
-rw-r--r--lib/tkclass.rb38
-rw-r--r--lib/tkcore.rb528
-rw-r--r--lib/tkentry.rb67
-rw-r--r--lib/tkscrollbox.rb27
-rw-r--r--lib/tktext.rb164
-rw-r--r--lib/tkthcore.rb550
-rw-r--r--lib/tmpdir.rb152
-rw-r--r--lib/tracer.rb309
-rw-r--r--lib/tsort.rb448
-rw-r--r--lib/ubygems.rb10
-rw-r--r--lib/un.rb375
-rw-r--r--lib/uri.rb111
-rw-r--r--lib/uri/common.rb1239
-rw-r--r--lib/uri/ftp.rb259
-rw-r--r--lib/uri/generic.rb1675
-rw-r--r--lib/uri/http.rb106
-rw-r--r--lib/uri/https.rb22
-rw-r--r--lib/uri/ldap.rb260
-rw-r--r--lib/uri/ldaps.rb20
-rw-r--r--lib/uri/mailto.rb280
-rw-r--r--lib/weakref.rb117
-rw-r--r--lib/webrick.rb226
-rw-r--r--lib/webrick/accesslog.rb158
-rw-r--r--lib/webrick/cgi.rb308
-rw-r--r--lib/webrick/compat.rb35
-rw-r--r--lib/webrick/config.rb151
-rw-r--r--lib/webrick/cookie.rb171
-rw-r--r--lib/webrick/htmlutils.rb29
-rw-r--r--lib/webrick/httpauth.rb95
-rw-r--r--lib/webrick/httpauth/authenticator.rb116
-rw-r--r--lib/webrick/httpauth/basicauth.rb108
-rw-r--r--lib/webrick/httpauth/digestauth.rb408
-rw-r--r--lib/webrick/httpauth/htdigest.rb131
-rw-r--r--lib/webrick/httpauth/htgroup.rb93
-rw-r--r--lib/webrick/httpauth/htpasswd.rb124
-rw-r--r--lib/webrick/httpauth/userdb.rb52
-rw-r--r--lib/webrick/httpproxy.rb339
-rw-r--r--lib/webrick/httprequest.rb583
-rw-r--r--lib/webrick/httpresponse.rb466
-rw-r--r--lib/webrick/https.rb86
-rw-r--r--lib/webrick/httpserver.rb278
-rw-r--r--lib/webrick/httpservlet.rb22
-rw-r--r--lib/webrick/httpservlet/abstract.rb153
-rw-r--r--lib/webrick/httpservlet/cgi_runner.rb46
-rw-r--r--lib/webrick/httpservlet/cgihandler.rb123
-rw-r--r--lib/webrick/httpservlet/erbhandler.rb87
-rw-r--r--lib/webrick/httpservlet/filehandler.rb520
-rw-r--r--lib/webrick/httpservlet/prochandler.rb46
-rw-r--r--lib/webrick/httpstatus.rb194
-rw-r--r--lib/webrick/httputils.rb509
-rw-r--r--lib/webrick/httpversion.rb75
-rw-r--r--lib/webrick/log.rb155
-rw-r--r--lib/webrick/server.rb325
-rw-r--r--lib/webrick/ssl.rb195
-rw-r--r--lib/webrick/utils.rb231
-rw-r--r--lib/webrick/version.rb17
-rw-r--r--lib/xmlrpc.rb301
-rw-r--r--lib/xmlrpc/base64.rb62
-rw-r--r--lib/xmlrpc/client.rb618
-rw-r--r--lib/xmlrpc/config.rb42
-rw-r--r--lib/xmlrpc/create.rb286
-rw-r--r--lib/xmlrpc/datetime.rb129
-rw-r--r--lib/xmlrpc/httpserver.rb173
-rw-r--r--lib/xmlrpc/marshal.rb66
-rw-r--r--lib/xmlrpc/parser.rb838
-rw-r--r--lib/xmlrpc/server.rb707
-rw-r--r--lib/xmlrpc/utils.rb171
-rw-r--r--lib/yaml.rb89
-rw-r--r--lib/yaml/dbm.rb279
-rw-r--r--lib/yaml/store.rb81
-rw-r--r--load.c1184
-rw-r--r--loadpath.c92
-rw-r--r--localeinit.c65
-rw-r--r--main.c41
-rw-r--r--man/erb.1157
-rw-r--r--man/goruby.139
-rw-r--r--man/irb.1173
-rw-r--r--man/rake.1205
-rw-r--r--man/ri.1181
-rw-r--r--man/ruby.1518
-rw-r--r--marshal.c2149
-rw-r--r--math.c981
-rw-r--r--method.h141
-rw-r--r--miniinit.c30
-rw-r--r--misc/README12
-rw-r--r--misc/inf-ruby.el418
-rw-r--r--misc/rb_optparse.bash20
-rwxr-xr-xmisc/rb_optparse.zsh38
-rw-r--r--misc/rdoc-mode.el132
-rw-r--r--misc/ruby-additional.el113
-rw-r--r--misc/ruby-electric.el473
-rw-r--r--misc/ruby-mode.el1544
-rw-r--r--misc/ruby-style.el79
-rw-r--r--misc/rubydb2x.el (renamed from sample/rubydb2x.el)0
-rw-r--r--misc/rubydb3x.el115
-rw-r--r--missing/acosh.c93
-rw-r--r--missing/alloca.c18
-rw-r--r--missing/cbrt.c11
-rw-r--r--missing/close.c72
-rw-r--r--missing/crt_externs.h8
-rw-r--r--missing/crypt.c1185
-rw-r--r--missing/dir.h248
-rw-r--r--missing/dup2.c68
-rw-r--r--missing/erf.c89
-rw-r--r--missing/ffs.c49
-rw-r--r--missing/file.h53
-rw-r--r--missing/fileblocks.c1
-rw-r--r--missing/finite.c9
-rw-r--r--missing/flock.c84
-rw-r--r--missing/hypot.c17
-rw-r--r--missing/isinf.c69
-rw-r--r--missing/isnan.c32
-rw-r--r--missing/langinfo.c148
-rw-r--r--missing/lgamma_r.c80
-rw-r--r--missing/memcmp.c18
-rw-r--r--missing/memmove.c38
-rw-r--r--missing/mkdir.c104
-rw-r--r--missing/nt.c2191
-rw-r--r--missing/nt.h225
-rw-r--r--missing/os2.c138
-rw-r--r--missing/setenv.c77
-rw-r--r--missing/setproctitle.c170
-rw-r--r--missing/signbit.c19
-rw-r--r--missing/strcasecmp.c13
-rw-r--r--missing/strchr.c32
-rw-r--r--missing/strdup.c25
-rw-r--r--missing/strerror.c13
-rw-r--r--missing/strftime.c889
-rw-r--r--missing/strlcat.c74
-rw-r--r--missing/strlcpy.c70
-rw-r--r--missing/strstr.c82
-rw-r--r--missing/strtol.c87
-rw-r--r--missing/strtoul.c184
-rw-r--r--missing/tgamma.c92
-rw-r--r--missing/x68.c12
-rw-r--r--missing/x86_64-chkstk.s10
-rw-r--r--nacl/GNUmakefile.in87
-rw-r--r--nacl/README.nacl34
-rw-r--r--nacl/create_nmf.rb70
-rw-r--r--nacl/dirent.h15
-rw-r--r--nacl/example.html150
-rw-r--r--nacl/ioctl.h7
-rw-r--r--nacl/nacl-config.rb61
-rw-r--r--nacl/package.rb109
-rw-r--r--nacl/pepper_main.c870
-rw-r--r--nacl/resource.h8
-rw-r--r--nacl/select.h7
-rw-r--r--nacl/signal.h6
-rw-r--r--nacl/stat.h10
-rw-r--r--nacl/unistd.h9
-rw-r--r--nacl/utime.h11
-rw-r--r--node.c899
-rw-r--r--node.h503
-rw-r--r--numeric.c4355
-rw-r--r--object.c3484
-rw-r--r--pack.c2048
-rw-r--r--parse.y12077
-rw-r--r--prelude.rb15
-rw-r--r--probes.d223
-rw-r--r--probes_helper.h67
-rw-r--r--proc.c2716
-rw-r--r--process.c7868
-rw-r--r--random.c1399
-rw-r--r--range.c1397
-rw-r--r--rational.c2638
-rw-r--r--re.c3716
-rw-r--r--re.h34
-rw-r--r--regcomp.c6694
-rw-r--r--regenc.c955
-rw-r--r--regenc.h223
-rw-r--r--regerror.c402
-rw-r--r--regex.c2807
-rw-r--r--regex.h291
-rw-r--r--regexec.c4343
-rw-r--r--regint.h911
-rw-r--r--regparse.c6328
-rw-r--r--regparse.h363
-rw-r--r--regsyntax.c387
-rw-r--r--ruby.1329
-rw-r--r--ruby.c2114
-rw-r--r--ruby.h380
-rw-r--r--ruby_atomic.h136
-rw-r--r--safe.c143
-rw-r--r--sample/README45
-rw-r--r--sample/biorhythm.rb156
-rw-r--r--sample/cal.rb166
-rw-r--r--sample/cbreak.rb36
-rw-r--r--sample/clnt.rb12
-rw-r--r--sample/coverage.rb62
-rw-r--r--sample/curses/hello.rb27
-rw-r--r--sample/curses/mouse.rb52
-rw-r--r--sample/curses/rain.rb74
-rw-r--r--sample/curses/view.rb91
-rw-r--r--sample/curses/view2.rb149
-rw-r--r--sample/dbmtest.rb14
-rw-r--r--sample/dir.rb6
-rw-r--r--sample/drb/README.ja.rdoc59
-rw-r--r--sample/drb/README.rdoc56
-rw-r--r--sample/drb/darray.rb12
-rw-r--r--sample/drb/darrayc.rb47
-rw-r--r--sample/drb/dbiff.rb51
-rw-r--r--sample/drb/dcdbiff.rb43
-rw-r--r--sample/drb/dchatc.rb41
-rw-r--r--sample/drb/dchats.rb70
-rw-r--r--sample/drb/dhasen.rb42
-rw-r--r--sample/drb/dhasenc.rb14
-rw-r--r--sample/drb/dlogc.rb16
-rw-r--r--sample/drb/dlogd.rb39
-rw-r--r--sample/drb/dqin.rb13
-rw-r--r--sample/drb/dqlib.rb14
-rw-r--r--sample/drb/dqout.rb14
-rw-r--r--sample/drb/dqueue.rb12
-rw-r--r--sample/drb/drbc.rb45
-rw-r--r--sample/drb/drbch.rb48
-rw-r--r--sample/drb/drbm.rb60
-rw-r--r--sample/drb/drbmc.rb22
-rw-r--r--sample/drb/drbs-acl.rb51
-rw-r--r--sample/drb/drbs.rb64
-rw-r--r--sample/drb/drbssl_c.rb19
-rw-r--r--sample/drb/drbssl_s.rb31
-rw-r--r--sample/drb/extserv_test.rb80
-rw-r--r--sample/drb/gw_ct.rb29
-rw-r--r--sample/drb/gw_cu.rb28
-rw-r--r--sample/drb/gw_s.rb10
-rw-r--r--sample/drb/holderc.rb22
-rw-r--r--sample/drb/holders.rb63
-rw-r--r--sample/drb/http0.rb77
-rw-r--r--sample/drb/http0serv.rb119
-rw-r--r--sample/drb/name.rb117
-rw-r--r--sample/drb/namec.rb36
-rw-r--r--sample/drb/old_tuplespace.rb214
-rw-r--r--sample/drb/rinda_ts.rb7
-rw-r--r--sample/drb/rindac.rb17
-rw-r--r--sample/drb/rindas.rb18
-rw-r--r--sample/drb/ring_echo.rb30
-rw-r--r--sample/drb/ring_inspect.rb30
-rw-r--r--sample/drb/ring_place.rb25
-rw-r--r--sample/drb/simpletuple.rb91
-rw-r--r--sample/drb/speedc.rb21
-rw-r--r--sample/drb/speeds.rb31
-rw-r--r--sample/dualstack-fetch.rb48
-rw-r--r--sample/dualstack-httpd.rb55
-rw-r--r--sample/eval.rb21
-rw-r--r--sample/exyacc.rb32
-rw-r--r--sample/fact.rb9
-rw-r--r--sample/fib.awk8
-rw-r--r--sample/fib.pl19
-rw-r--r--sample/fib.py10
-rw-r--r--sample/fib.scm8
-rw-r--r--sample/freq.rb15
-rw-r--r--[-rwxr-xr-x]sample/from.rb156
-rw-r--r--sample/fullpath.rb16
-rwxr-xr-xsample/getopts.test36
-rw-r--r--sample/io.rb44
-rw-r--r--[-rwxr-xr-x]sample/less.rb0
-rw-r--r--sample/list.rb17
-rw-r--r--sample/list2.rb2
-rw-r--r--sample/list3.rb2
-rw-r--r--sample/logger/app.rb46
-rw-r--r--sample/logger/log.rb27
-rw-r--r--sample/logger/shifting.rb26
-rwxr-xr-xsample/mine.rb176
-rw-r--r--sample/mkproto.rb30
-rw-r--r--[-rwxr-xr-x]sample/mpart.rb2
-rw-r--r--sample/mrshtest.rb14
-rw-r--r--sample/observ.rb19
-rw-r--r--sample/occur.pl8
-rw-r--r--sample/occur.rb14
-rw-r--r--sample/occur2.rb13
-rw-r--r--sample/openssl/c_rehash.rb174
-rw-r--r--sample/openssl/cert2text.rb23
-rw-r--r--sample/openssl/certstore.rb161
-rw-r--r--sample/openssl/cipher.rb54
-rw-r--r--sample/openssl/crlstore.rb122
-rw-r--r--sample/openssl/echo_cli.rb44
-rw-r--r--sample/openssl/echo_svr.rb65
-rw-r--r--sample/openssl/gen_csr.rb51
-rw-r--r--sample/openssl/smime_read.rb23
-rw-r--r--sample/openssl/smime_write.rb23
-rw-r--r--sample/openssl/wget.rb34
-rwxr-xr-xsample/optparse/opttest.rb125
-rwxr-xr-xsample/optparse/subcommand.rb19
-rw-r--r--sample/philos.rb6
-rw-r--r--sample/pi.rb2
-rw-r--r--sample/pty/expect_sample.rb48
-rw-r--r--sample/pty/script.rb37
-rw-r--r--sample/pty/shl.rb92
-rw-r--r--sample/rcs.awk54
-rw-r--r--sample/rcs.rb30
-rw-r--r--sample/rdoc/markup/rdoc2latex.rb15
-rw-r--r--sample/rdoc/markup/sample.rb40
-rw-r--r--sample/regx.rb23
-rw-r--r--sample/ripper/ruby2html.rb112
-rw-r--r--sample/ripper/strip-comment.rb19
-rwxr-xr-xsample/rss/blend.rb79
-rwxr-xr-xsample/rss/convert.rb69
-rwxr-xr-xsample/rss/list_description.rb91
-rwxr-xr-xsample/rss/re_read.rb64
-rwxr-xr-xsample/rss/rss_recent.rb85
-rw-r--r--sample/ruby-mode.el644
-rw-r--r--sample/rubydb3x.el104
-rw-r--r--sample/sieve.rb22
-rw-r--r--sample/svr.rb14
-rwxr-xr-x[-rw-r--r--]sample/test.rb2254
-rw-r--r--sample/testunit/adder.rb13
-rw-r--r--sample/testunit/subtracter.rb12
-rw-r--r--sample/testunit/tc_adder.rb18
-rw-r--r--sample/testunit/tc_subtracter.rb18
-rw-r--r--sample/testunit/ts_examples.rb7
-rw-r--r--[-rwxr-xr-x]sample/time.rb16
-rw-r--r--sample/timeout.rb42
-rw-r--r--sample/tkbiff.rb149
-rw-r--r--sample/tkbrowse.rb69
-rw-r--r--sample/tkdialog.rb62
-rw-r--r--sample/tkfrom.rb126
-rw-r--r--sample/tkhello.rb13
-rw-r--r--sample/tkline.rb46
-rw-r--r--sample/tktimer.rb50
-rw-r--r--sample/trojan.rb11
-rw-r--r--sample/tsvr.rb17
-rw-r--r--[-rwxr-xr-x]sample/uumerge.rb46
-rw-r--r--sample/webrick/demo-app.rb66
-rw-r--r--sample/webrick/demo-multipart.cgi12
-rw-r--r--sample/webrick/demo-servlet.rb6
-rw-r--r--sample/webrick/demo-urlencoded.cgi12
-rw-r--r--sample/webrick/hello.cgi11
-rw-r--r--sample/webrick/hello.rb8
-rw-r--r--sample/webrick/httpd.rb23
-rw-r--r--sample/webrick/httpproxy.rb25
-rw-r--r--sample/webrick/httpsd.rb33
-rw-r--r--sig.h53
-rw-r--r--signal.c1263
-rw-r--r--siphash.c483
-rw-r--r--siphash.h48
-rw-r--r--sparc.c40
-rw-r--r--spec/README31
-rw-r--r--spec/default.mspec21
-rw-r--r--sprintf.c1492
-rw-r--r--st.c1665
-rw-r--r--st.h52
-rw-r--r--strftime.c1163
-rw-r--r--string.c9415
-rw-r--r--struct.c1221
-rw-r--r--symbian/README.SYMBIAN93
-rw-r--r--symbian/configure.bat123
-rw-r--r--symbian/missing-aeabi.c18
-rw-r--r--symbian/missing-pips.c65
-rw-r--r--symbian/pre-build83
-rw-r--r--symbian/setup440
-rw-r--r--template/Doxyfile.tmpl265
-rw-r--r--template/GNUmakefile.in6
-rw-r--r--template/encdb.h.tmpl91
-rw-r--r--template/fake.rb.in47
-rw-r--r--template/id.c.tmpl27
-rw-r--r--template/id.h.tmpl111
-rw-r--r--template/insns.inc.tmpl20
-rw-r--r--template/insns_info.inc.tmpl83
-rw-r--r--template/known_errors.inc.tmpl14
-rw-r--r--template/minsns.inc.tmpl14
-rw-r--r--template/opt_sc.inc.tmpl32
-rw-r--r--template/optinsn.inc.tmpl30
-rw-r--r--template/optunifs.inc.tmpl35
-rw-r--r--template/ruby.pc.in56
-rw-r--r--template/sizes.c.tmpl30
-rw-r--r--template/transdb.h.tmpl59
-rw-r--r--template/verconf.h.in61
-rw-r--r--template/vm.inc.tmpl29
-rw-r--r--template/vmtc.inc.tmpl18
-rw-r--r--template/yarvarch.en7
-rw-r--r--template/yarvarch.ja454
-rw-r--r--template/yasmdata.rb.tmpl20
-rw-r--r--test/-ext-/array/test_resize.rb29
-rw-r--r--test/-ext-/bignum/test_big2str.rb29
-rw-r--r--test/-ext-/bignum/test_bigzero.rb13
-rw-r--r--test/-ext-/bignum/test_div.rb28
-rw-r--r--test/-ext-/bignum/test_mul.rb137
-rw-r--r--test/-ext-/bignum/test_pack.rb374
-rw-r--r--test/-ext-/bignum/test_str2big.rb37
-rw-r--r--test/-ext-/bug_reporter/test_bug_reporter.rb9
-rw-r--r--test/-ext-/class/test_class2name.rb18
-rw-r--r--test/-ext-/debug/test_debug.rb58
-rw-r--r--test/-ext-/debug/test_profile_frames.rb104
-rw-r--r--test/-ext-/exception/test_enc_raise.rb15
-rw-r--r--test/-ext-/exception/test_ensured.rb32
-rw-r--r--test/-ext-/file/test_stat.rb14
-rw-r--r--test/-ext-/funcall/test_passing_block.rb22
-rw-r--r--test/-ext-/iter/test_iter_break.rb12
-rw-r--r--test/-ext-/load/test_dot_dot.rb10
-rw-r--r--test/-ext-/marshal/test_usrmarshal.rb33
-rw-r--r--test/-ext-/method/test_arity.rb37
-rw-r--r--test/-ext-/num2int/test_num2int.rb267
-rw-r--r--test/-ext-/old_thread_select/test_old_thread_select.rb103
-rw-r--r--test/-ext-/path_to_class/test_path_to_class.rb12
-rw-r--r--test/-ext-/postponed_job/test_postponed_job.rb28
-rw-r--r--test/-ext-/rational/test_rat.rb31
-rw-r--r--test/-ext-/st/test_numhash.rb49
-rw-r--r--test/-ext-/st/test_update.rb50
-rw-r--r--test/-ext-/string/test_cstr.rb42
-rw-r--r--test/-ext-/string/test_ellipsize.rb46
-rw-r--r--test/-ext-/string/test_enc_associate.rb12
-rw-r--r--test/-ext-/string/test_enc_str_buf_cat.rb15
-rw-r--r--test/-ext-/string/test_modify_expand.rb15
-rw-r--r--test/-ext-/string/test_normalize.rb106
-rw-r--r--test/-ext-/string/test_qsort.rb19
-rw-r--r--test/-ext-/string/test_set_len.rb25
-rw-r--r--test/-ext-/symbol/test_inadvertent_creation.rb266
-rw-r--r--test/-ext-/symbol/test_type.rb110
-rw-r--r--test/-ext-/test_bug-3571.rb21
-rw-r--r--test/-ext-/test_bug-3662.rb10
-rw-r--r--test/-ext-/test_bug-5832.rb21
-rw-r--r--test/-ext-/test_printf.rb184
-rw-r--r--test/-ext-/tracepoint/test_tracepoint.rb53
-rw-r--r--test/-ext-/typeddata/test_typeddata.rb16
-rw-r--r--test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb45
-rw-r--r--test/-ext-/win32/test_dln.rb13
-rw-r--r--test/-ext-/win32/test_fd_setsize.rb25
-rw-r--r--test/base64/test_base64.rb100
-rw-r--r--test/benchmark/test_benchmark.rb169
-rw-r--r--test/bigdecimal/test_bigdecimal.rb1510
-rw-r--r--test/bigdecimal/test_bigdecimal_util.rb44
-rw-r--r--test/bigdecimal/test_bigmath.rb63
-rw-r--r--test/bigdecimal/testbase.rb27
-rw-r--r--test/cgi/test_cgi_cookie.rb110
-rw-r--r--test/cgi/test_cgi_core.rb373
-rw-r--r--test/cgi/test_cgi_header.rb185
-rw-r--r--test/cgi/test_cgi_modruby.rb146
-rw-r--r--test/cgi/test_cgi_multipart.rb370
-rw-r--r--test/cgi/test_cgi_session.rb172
-rw-r--r--test/cgi/test_cgi_tag_helper.rb355
-rw-r--r--test/cgi/test_cgi_util.rb89
-rw-r--r--test/cgi/testdata/file1.html10
-rw-r--r--test/cgi/testdata/large.pngbin0 -> 156414 bytes-rw-r--r--test/cgi/testdata/small.pngbin0 -> 82 bytes-rw-r--r--test/coverage/test_coverage.rb64
-rw-r--r--test/csv/base.rb8
-rw-r--r--test/csv/line_endings.gzbin0 -> 59 bytes-rwxr-xr-xtest/csv/test_csv_parsing.rb221
-rwxr-xr-xtest/csv/test_csv_writing.rb97
-rwxr-xr-xtest/csv/test_data_converters.rb263
-rwxr-xr-xtest/csv/test_encodings.rb339
-rwxr-xr-xtest/csv/test_features.rb310
-rwxr-xr-xtest/csv/test_headers.rb289
-rwxr-xr-xtest/csv/test_interface.rb343
-rwxr-xr-xtest/csv/test_row.rb344
-rwxr-xr-xtest/csv/test_table.rb420
-rw-r--r--test/csv/ts_all.rb20
-rw-r--r--test/date/test_date.rb144
-rw-r--r--test/date/test_date_arith.rb286
-rw-r--r--test/date/test_date_attr.rb112
-rw-r--r--test/date/test_date_base.rb442
-rw-r--r--test/date/test_date_compat.rb21
-rw-r--r--test/date/test_date_conv.rb137
-rw-r--r--test/date/test_date_marshal.rb41
-rw-r--r--test/date/test_date_new.rb271
-rw-r--r--test/date/test_date_parse.rb1137
-rw-r--r--test/date/test_date_strftime.rb422
-rw-r--r--test/date/test_date_strptime.rb492
-rw-r--r--test/date/test_switch_hitter.rb662
-rw-r--r--test/dbm/test_dbm.rb627
-rwxr-xr-xtest/digest/test_digest.rb198
-rw-r--r--test/digest/test_digest_extend.rb158
-rw-r--r--test/digest/test_digest_hmac.rb2
-rw-r--r--test/dl/test_base.rb143
-rw-r--r--test/dl/test_c_struct_entry.rb55
-rw-r--r--test/dl/test_c_union_entity.rb31
-rw-r--r--test/dl/test_callback.rb72
-rw-r--r--test/dl/test_cfunc.rb80
-rw-r--r--test/dl/test_cparser.rb33
-rw-r--r--test/dl/test_cptr.rb222
-rw-r--r--test/dl/test_dl2.rb140
-rw-r--r--test/dl/test_func.rb184
-rw-r--r--test/dl/test_handle.rb187
-rw-r--r--test/dl/test_import.rb165
-rw-r--r--test/dl/test_win32.rb54
-rw-r--r--test/drb/drbtest.rb362
-rw-r--r--test/drb/ignore_test_drb.rb10
-rw-r--r--test/drb/test_acl.rb195
-rw-r--r--test/drb/test_drb.rb322
-rw-r--r--test/drb/test_drbssl.rb62
-rw-r--r--test/drb/test_drbunix.rb46
-rw-r--r--test/drb/ut_array.rb15
-rw-r--r--test/drb/ut_array_drbssl.rb35
-rw-r--r--test/drb/ut_array_drbunix.rb15
-rw-r--r--test/drb/ut_drb.rb163
-rw-r--r--test/drb/ut_drb_drbssl.rb36
-rw-r--r--test/drb/ut_drb_drbunix.rb16
-rw-r--r--test/drb/ut_eq.rb30
-rw-r--r--test/drb/ut_eval.rb31
-rw-r--r--test/drb/ut_large.rb38
-rw-r--r--test/drb/ut_port.rb14
-rw-r--r--test/drb/ut_safe1.rb15
-rw-r--r--test/drb/ut_timerholder.rb49
-rw-r--r--test/dtrace/dummy.rb1
-rw-r--r--test/dtrace/helper.rb51
-rw-r--r--test/dtrace/test_array_create.rb35
-rw-r--r--test/dtrace/test_cmethod.rb49
-rw-r--r--test/dtrace/test_function_entry.rb87
-rw-r--r--test/dtrace/test_gc.rb26
-rw-r--r--test/dtrace/test_hash_create.rb52
-rw-r--r--test/dtrace/test_load.rb52
-rw-r--r--test/dtrace/test_object_create_start.rb35
-rw-r--r--test/dtrace/test_raise.rb29
-rw-r--r--test/dtrace/test_require.rb34
-rw-r--r--test/dtrace/test_singleton_function.rb55
-rw-r--r--test/dtrace/test_string.rb27
-rw-r--r--test/erb/hello.erb4
-rw-r--r--test/erb/test_erb.rb485
-rw-r--r--test/erb/test_erb_m17n.rb123
-rw-r--r--test/etc/test_etc.rb115
-rw-r--r--test/fiddle/helper.rb122
-rw-r--r--test/fiddle/test_c_struct_entry.rb76
-rw-r--r--test/fiddle/test_c_union_entity.rb34
-rw-r--r--test/fiddle/test_closure.rb84
-rw-r--r--test/fiddle/test_cparser.rb35
-rw-r--r--test/fiddle/test_fiddle.rb16
-rw-r--r--test/fiddle/test_func.rb92
-rw-r--r--test/fiddle/test_function.rb74
-rw-r--r--test/fiddle/test_handle.rb189
-rw-r--r--test/fiddle/test_import.rb140
-rw-r--r--test/fiddle/test_pointer.rb234
-rw-r--r--test/fileutils/clobber.rb91
-rw-r--r--test/fileutils/fileasserts.rb93
-rw-r--r--test/fileutils/test_dryrun.rb17
-rw-r--r--test/fileutils/test_fileutils.rb1297
-rw-r--r--test/fileutils/test_nowrite.rb17
-rw-r--r--test/fileutils/test_verbose.rb17
-rw-r--r--test/fileutils/visibility_tests.rb41
-rw-r--r--test/gdbm/test_gdbm.rb720
-rw-r--r--test/inlinetest.rb55
-rw-r--r--test/io/console/test_io_console.rb302
-rw-r--r--test/io/nonblock/test_flush.rb46
-rw-r--r--test/io/wait/test_io_wait.rb108
-rw-r--r--test/irb/test_completion.rb22
-rw-r--r--test/irb/test_option.rb12
-rw-r--r--test/json/fixtures/fail1.json1
-rw-r--r--test/json/fixtures/fail10.json1
-rw-r--r--test/json/fixtures/fail11.json1
-rw-r--r--test/json/fixtures/fail12.json1
-rw-r--r--test/json/fixtures/fail13.json1
-rw-r--r--test/json/fixtures/fail14.json1
-rw-r--r--test/json/fixtures/fail18.json1
-rw-r--r--test/json/fixtures/fail19.json1
-rw-r--r--test/json/fixtures/fail2.json1
-rw-r--r--test/json/fixtures/fail20.json1
-rw-r--r--test/json/fixtures/fail21.json1
-rw-r--r--test/json/fixtures/fail22.json1
-rw-r--r--test/json/fixtures/fail23.json1
-rw-r--r--test/json/fixtures/fail24.json1
-rw-r--r--test/json/fixtures/fail25.json1
-rw-r--r--test/json/fixtures/fail27.json2
-rw-r--r--test/json/fixtures/fail28.json2
-rw-r--r--test/json/fixtures/fail3.json1
-rw-r--r--test/json/fixtures/fail4.json1
-rw-r--r--test/json/fixtures/fail5.json1
-rw-r--r--test/json/fixtures/fail6.json1
-rw-r--r--test/json/fixtures/fail7.json1
-rw-r--r--test/json/fixtures/fail8.json1
-rw-r--r--test/json/fixtures/fail9.json1
-rw-r--r--test/json/fixtures/pass1.json56
-rw-r--r--test/json/fixtures/pass15.json1
-rw-r--r--test/json/fixtures/pass16.json1
-rw-r--r--test/json/fixtures/pass17.json1
-rw-r--r--test/json/fixtures/pass2.json1
-rw-r--r--test/json/fixtures/pass26.json1
-rw-r--r--test/json/fixtures/pass3.json6
-rw-r--r--test/json/setup_variant.rb11
-rwxr-xr-xtest/json/test_json.rb545
-rwxr-xr-xtest/json/test_json_addition.rb196
-rw-r--r--test/json/test_json_encoding.rb65
-rwxr-xr-xtest/json/test_json_fixtures.rb35
-rwxr-xr-xtest/json/test_json_generate.rb323
-rw-r--r--test/json/test_json_generic_object.rb75
-rw-r--r--test/json/test_json_string_matching.rb39
-rwxr-xr-xtest/json/test_json_unicode.rb72
-rw-r--r--test/logger/test_logger.rb609
-rw-r--r--test/matrix/test_matrix.rb426
-rw-r--r--test/matrix/test_vector.rb149
-rw-r--r--test/minitest/metametameta.rb74
-rw-r--r--test/minitest/test_minitest_benchmark.rb135
-rw-r--r--test/minitest/test_minitest_mock.rb412
-rw-r--r--test/minitest/test_minitest_spec.rb811
-rw-r--r--test/minitest/test_minitest_unit.rb1867
-rw-r--r--test/misc/test_ruby_mode.rb181
-rw-r--r--test/mkmf/base.rb129
-rw-r--r--test/mkmf/test_config.rb17
-rw-r--r--test/mkmf/test_constant.rb37
-rw-r--r--test/mkmf/test_convertible.rb34
-rw-r--r--test/mkmf/test_find_executable.rb50
-rw-r--r--test/mkmf/test_flags.rb35
-rw-r--r--test/mkmf/test_framework.rb46
-rw-r--r--test/mkmf/test_have_func.rb14
-rw-r--r--test/mkmf/test_have_library.rb55
-rw-r--r--test/mkmf/test_have_macro.rb35
-rw-r--r--test/mkmf/test_libs.rb86
-rw-r--r--test/mkmf/test_signedness.rb29
-rw-r--r--test/mkmf/test_sizeof.rb47
-rw-r--r--test/monitor/test_monitor.rb190
-rw-r--r--test/net/ftp/test_ftp.rb813
-rw-r--r--test/net/http/test_buffered_io.rb17
-rw-r--r--test/net/http/test_http.rb918
-rw-r--r--test/net/http/test_http_request.rb79
-rw-r--r--test/net/http/test_httpheader.rb334
-rw-r--r--test/net/http/test_httpresponse.rb254
-rw-r--r--test/net/http/test_httpresponses.rb24
-rw-r--r--test/net/http/test_https.rb153
-rw-r--r--test/net/http/test_https_proxy.rb43
-rw-r--r--test/net/http/utils.rb117
-rw-r--r--test/net/imap/cacert.pem60
-rw-r--r--test/net/imap/server.crt61
-rw-r--r--test/net/imap/server.key15
-rw-r--r--test/net/imap/test_imap.rb536
-rw-r--r--test/net/imap/test_imap_response_parser.rb251
-rw-r--r--test/net/pop/test_pop.rb132
-rw-r--r--test/net/protocol/test_protocol.rb19
-rw-r--r--test/net/smtp/test_response.rb99
-rw-r--r--test/net/smtp/test_smtp.rb41
-rw-r--r--test/net/smtp/test_ssl_socket.rb91
-rw-r--r--test/nkf/test_kconv.rb81
-rw-r--r--test/nkf/test_nkf.rb22
-rw-r--r--test/objspace/test_objspace.rb269
-rw-r--r--test/open-uri/test_open-uri.rb716
-rw-r--r--test/open-uri/test_ssl.rb325
-rw-r--r--test/openssl/ssl_server.rb81
-rw-r--r--test/openssl/test_asn1.rb609
-rw-r--r--test/openssl/test_bn.rb52
-rw-r--r--test/openssl/test_buffering.rb87
-rw-r--r--test/openssl/test_cipher.rb255
-rw-r--r--test/openssl/test_config.rb297
-rw-r--r--test/openssl/test_digest.rb126
-rw-r--r--test/openssl/test_engine.rb75
-rw-r--r--test/openssl/test_fips.rb14
-rw-r--r--test/openssl/test_hmac.rb32
-rw-r--r--test/openssl/test_ns_spki.rb51
-rw-r--r--test/openssl/test_ocsp.rb47
-rw-r--r--test/openssl/test_pair.rb308
-rw-r--r--test/openssl/test_pkcs12.rb209
-rw-r--r--test/openssl/test_pkcs5.rb97
-rw-r--r--test/openssl/test_pkcs7.rb156
-rw-r--r--test/openssl/test_pkey_dh.rb82
-rw-r--r--test/openssl/test_pkey_dsa.rb240
-rw-r--r--test/openssl/test_pkey_ec.rb211
-rw-r--r--test/openssl/test_pkey_rsa.rb283
-rw-r--r--test/openssl/test_ssl.rb679
-rw-r--r--test/openssl/test_ssl_session.rb367
-rw-r--r--test/openssl/test_x509cert.rb219
-rw-r--r--test/openssl/test_x509crl.rb220
-rw-r--r--test/openssl/test_x509ext.rb69
-rw-r--r--test/openssl/test_x509name.rb367
-rw-r--r--test/openssl/test_x509req.rb150
-rw-r--r--test/openssl/test_x509store.rb232
-rw-r--r--test/openssl/utils.rb331
-rw-r--r--test/optparse/test_acceptable.rb195
-rw-r--r--test/optparse/test_autoconf.rb63
-rw-r--r--test/optparse/test_bash_completion.rb42
-rw-r--r--test/optparse/test_getopts.rb34
-rw-r--r--test/optparse/test_noarg.rb57
-rw-r--r--test/optparse/test_optarg.rb46
-rw-r--r--test/optparse/test_optparse.rb66
-rw-r--r--test/optparse/test_placearg.rb56
-rw-r--r--test/optparse/test_reqarg.rb77
-rw-r--r--test/optparse/test_summary.rb46
-rw-r--r--test/optparse/test_zsh_completion.rb22
-rw-r--r--test/ostruct/test_ostruct.rb138
-rw-r--r--test/pathname/test_pathname.rb1317
-rw-r--r--test/profile_test_all.rb90
-rw-r--r--test/psych/handlers/test_recorder.rb25
-rw-r--r--test/psych/helper.rb114
-rw-r--r--test/psych/json/test_stream.rb109
-rw-r--r--test/psych/nodes/test_enumerable.rb43
-rw-r--r--test/psych/test_alias_and_anchor.rb96
-rw-r--r--test/psych/test_array.rb57
-rw-r--r--test/psych/test_boolean.rb36
-rw-r--r--test/psych/test_class.rb36
-rw-r--r--test/psych/test_coder.rb184
-rw-r--r--test/psych/test_date_time.rb25
-rw-r--r--test/psych/test_deprecated.rb214
-rw-r--r--test/psych/test_document.rb46
-rw-r--r--test/psych/test_emitter.rb94
-rw-r--r--test/psych/test_encoding.rb254
-rw-r--r--test/psych/test_engine_manager.rb47
-rw-r--r--test/psych/test_exception.rb151
-rw-r--r--test/psych/test_hash.rb44
-rw-r--r--test/psych/test_json_tree.rb65
-rw-r--r--test/psych/test_merge_keys.rb150
-rw-r--r--test/psych/test_nil.rb18
-rw-r--r--test/psych/test_null.rb19
-rw-r--r--test/psych/test_numeric.rb45
-rw-r--r--test/psych/test_object.rb44
-rw-r--r--test/psych/test_object_references.rb67
-rw-r--r--test/psych/test_omap.rb75
-rw-r--r--test/psych/test_parser.rb339
-rw-r--r--test/psych/test_psych.rb168
-rw-r--r--test/psych/test_safe_load.rb97
-rw-r--r--test/psych/test_scalar.rb11
-rw-r--r--test/psych/test_scalar_scanner.rb106
-rw-r--r--test/psych/test_serialize_subclasses.rb38
-rw-r--r--test/psych/test_set.rb49
-rw-r--r--test/psych/test_stream.rb93
-rw-r--r--test/psych/test_string.rb158
-rw-r--r--test/psych/test_struct.rb49
-rw-r--r--test/psych/test_symbol.rb17
-rw-r--r--test/psych/test_tainted.rb130
-rw-r--r--test/psych/test_to_yaml_properties.rb63
-rw-r--r--test/psych/test_tree_builder.rb79
-rw-r--r--test/psych/test_yaml.rb1289
-rw-r--r--test/psych/test_yamldbm.rb197
-rw-r--r--test/psych/test_yamlstore.rb87
-rw-r--r--test/psych/visitors/test_depth_first.rb49
-rw-r--r--test/psych/visitors/test_emitter.rb144
-rw-r--r--test/psych/visitors/test_to_ruby.rb326
-rw-r--r--test/psych/visitors/test_yaml_tree.rb173
-rw-r--r--test/rake/file_creation.rb34
-rw-r--r--test/rake/helper.rb128
-rw-r--r--test/rake/support/rakefile_definitions.rb444
-rw-r--r--test/rake/support/ruby_runner.rb33
-rw-r--r--test/rake/test_private_reader.rb42
-rw-r--r--test/rake/test_rake.rb40
-rw-r--r--test/rake/test_rake_application.rb517
-rw-r--r--test/rake/test_rake_application_options.rb457
-rw-r--r--test/rake/test_rake_backtrace.rb113
-rw-r--r--test/rake/test_rake_clean.rb52
-rw-r--r--test/rake/test_rake_definitions.rb79
-rw-r--r--test/rake/test_rake_directory_task.rb57
-rw-r--r--test/rake/test_rake_dsl.rb40
-rw-r--r--test/rake/test_rake_early_time.rb31
-rw-r--r--test/rake/test_rake_extension.rb59
-rw-r--r--test/rake/test_rake_file_creation_task.rb56
-rw-r--r--test/rake/test_rake_file_list.rb627
-rw-r--r--test/rake/test_rake_file_list_path_map.rb8
-rw-r--r--test/rake/test_rake_file_task.rb122
-rw-r--r--test/rake/test_rake_file_utils.rb309
-rw-r--r--test/rake/test_rake_ftp_file.rb74
-rw-r--r--test/rake/test_rake_functional.rb466
-rw-r--r--test/rake/test_rake_invocation_chain.rb64
-rw-r--r--test/rake/test_rake_linked_list.rb84
-rw-r--r--test/rake/test_rake_makefile_loader.rb46
-rw-r--r--test/rake/test_rake_multi_task.rb58
-rw-r--r--test/rake/test_rake_name_space.rb43
-rw-r--r--test/rake/test_rake_package_task.rb79
-rw-r--r--test/rake/test_rake_path_map.rb168
-rw-r--r--test/rake/test_rake_path_map_explode.rb34
-rw-r--r--test/rake/test_rake_path_map_partial.rb18
-rw-r--r--test/rake/test_rake_pseudo_status.rb21
-rw-r--r--test/rake/test_rake_rake_test_loader.rb20
-rw-r--r--test/rake/test_rake_reduce_compat.rb26
-rw-r--r--test/rake/test_rake_require.rb40
-rw-r--r--test/rake/test_rake_rules.rb362
-rw-r--r--test/rake/test_rake_scope.rb44
-rw-r--r--test/rake/test_rake_task.rb376
-rw-r--r--test/rake/test_rake_task_argument_parsing.rb103
-rw-r--r--test/rake/test_rake_task_arguments.rb121
-rw-r--r--test/rake/test_rake_task_lib.rb9
-rw-r--r--test/rake/test_rake_task_manager.rb158
-rw-r--r--test/rake/test_rake_task_manager_argument_resolution.rb19
-rw-r--r--test/rake/test_rake_task_with_arguments.rb171
-rw-r--r--test/rake/test_rake_test_task.rb119
-rw-r--r--test/rake/test_rake_thread_pool.rb142
-rw-r--r--test/rake/test_rake_top_level_functions.rb71
-rw-r--r--test/rake/test_rake_win32.rb72
-rw-r--r--test/rake/test_thread_history_display.rb101
-rw-r--r--test/rake/test_trace_output.rb52
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Amps and angle encoding.text21
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Auto links.text13
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Backslash escapes.text120
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Blockquotes with code blocks.text11
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Code Blocks.text14
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Code Spans.text6
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Hard-wrapped paragraphs with list-like lines.text8
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Horizontal rules.text67
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Inline HTML (Advanced).text15
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Inline HTML (Simple).text69
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Inline HTML comments.text13
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Links, inline style.text12
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Links, reference style.text71
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Links, shortcut references.text20
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Literal quotes in titles.text7
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Markdown Documentation - Basics.text306
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Markdown Documentation - Syntax.text888
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Nested blockquotes.text5
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Ordered and unordered lists.text131
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Strong and em together.text7
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Tabs.text21
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Tidyness.text5
-rw-r--r--test/rdoc/README1
-rw-r--r--test/rdoc/binary.datbin0 -> 1024 bytes-rw-r--r--test/rdoc/hidden.zip.txt1
-rw-r--r--test/rdoc/test.ja.large.rdoc3
-rw-r--r--test/rdoc/test.ja.largedoc3
-rw-r--r--test/rdoc/test.ja.rdoc10
-rw-r--r--test/rdoc/test.ja.txt8
-rw-r--r--test/rdoc/test.txt1
-rw-r--r--test/rdoc/test_attribute_manager.rb120
-rw-r--r--test/rdoc/test_rdoc_alias.rb13
-rw-r--r--test/rdoc/test_rdoc_any_method.rb431
-rw-r--r--test/rdoc/test_rdoc_attr.rb190
-rw-r--r--test/rdoc/test_rdoc_class_module.rb1492
-rw-r--r--test/rdoc/test_rdoc_code_object.rb450
-rw-r--r--test/rdoc/test_rdoc_comment.rb504
-rw-r--r--test/rdoc/test_rdoc_constant.rb151
-rw-r--r--test/rdoc/test_rdoc_context.rb899
-rw-r--r--test/rdoc/test_rdoc_context_section.rb130
-rw-r--r--test/rdoc/test_rdoc_cross_reference.rb192
-rw-r--r--test/rdoc/test_rdoc_encoding.rb204
-rw-r--r--test/rdoc/test_rdoc_extend.rb94
-rw-r--r--test/rdoc/test_rdoc_generator_darkfish.rb229
-rw-r--r--test/rdoc/test_rdoc_generator_json_index.rb264
-rw-r--r--test/rdoc/test_rdoc_generator_markup.rb59
-rw-r--r--test/rdoc/test_rdoc_generator_ri.rb78
-rw-r--r--test/rdoc/test_rdoc_include.rb108
-rw-r--r--test/rdoc/test_rdoc_markdown.rb980
-rw-r--r--test/rdoc/test_rdoc_markdown_test.rb1884
-rw-r--r--test/rdoc/test_rdoc_markup.rb95
-rw-r--r--test/rdoc/test_rdoc_markup_attribute_manager.rb358
-rw-r--r--test/rdoc/test_rdoc_markup_attributes.rb39
-rw-r--r--test/rdoc/test_rdoc_markup_document.rb207
-rw-r--r--test/rdoc/test_rdoc_markup_formatter.rb175
-rw-r--r--test/rdoc/test_rdoc_markup_hard_break.rb31
-rw-r--r--test/rdoc/test_rdoc_markup_heading.rb29
-rw-r--r--test/rdoc/test_rdoc_markup_include.rb19
-rw-r--r--test/rdoc/test_rdoc_markup_indented_paragraph.rb53
-rw-r--r--test/rdoc/test_rdoc_markup_paragraph.rb32
-rw-r--r--test/rdoc/test_rdoc_markup_parser.rb1680
-rw-r--r--test/rdoc/test_rdoc_markup_pre_process.rb473
-rw-r--r--test/rdoc/test_rdoc_markup_raw.rb22
-rw-r--r--test/rdoc/test_rdoc_markup_to_ansi.rb369
-rw-r--r--test/rdoc/test_rdoc_markup_to_bs.rb366
-rw-r--r--test/rdoc/test_rdoc_markup_to_html.rb643
-rw-r--r--test/rdoc/test_rdoc_markup_to_html_crossref.rb225
-rw-r--r--test/rdoc/test_rdoc_markup_to_html_snippet.rb710
-rw-r--r--test/rdoc/test_rdoc_markup_to_joined_paragraph.rb32
-rw-r--r--test/rdoc/test_rdoc_markup_to_label.rb112
-rw-r--r--test/rdoc/test_rdoc_markup_to_markdown.rb389
-rw-r--r--test/rdoc/test_rdoc_markup_to_rdoc.rb377
-rw-r--r--test/rdoc/test_rdoc_markup_to_table_of_contents.rb126
-rw-r--r--test/rdoc/test_rdoc_markup_to_tt_only.rb246
-rw-r--r--test/rdoc/test_rdoc_markup_verbatim.rb29
-rw-r--r--test/rdoc/test_rdoc_method_attr.rb163
-rw-r--r--test/rdoc/test_rdoc_normal_class.rb47
-rw-r--r--test/rdoc/test_rdoc_normal_module.rb42
-rw-r--r--test/rdoc/test_rdoc_options.rb747
-rw-r--r--test/rdoc/test_rdoc_parser.rb302
-rw-r--r--test/rdoc/test_rdoc_parser_c.rb1825
-rw-r--r--test/rdoc/test_rdoc_parser_changelog.rb315
-rw-r--r--test/rdoc/test_rdoc_parser_markdown.rb61
-rw-r--r--test/rdoc/test_rdoc_parser_rd.rb55
-rw-r--r--test/rdoc/test_rdoc_parser_ruby.rb3310
-rw-r--r--test/rdoc/test_rdoc_parser_simple.rb115
-rw-r--r--test/rdoc/test_rdoc_rd.rb30
-rw-r--r--test/rdoc/test_rdoc_rd_block_parser.rb533
-rw-r--r--test/rdoc/test_rdoc_rd_inline.rb63
-rw-r--r--test/rdoc/test_rdoc_rd_inline_parser.rb177
-rw-r--r--test/rdoc/test_rdoc_rdoc.rb434
-rw-r--r--test/rdoc/test_rdoc_require.rb25
-rw-r--r--test/rdoc/test_rdoc_ri_driver.rb1436
-rw-r--r--test/rdoc/test_rdoc_ri_paths.rb155
-rw-r--r--test/rdoc/test_rdoc_ruby_lex.rb410
-rw-r--r--test/rdoc/test_rdoc_ruby_token.rb19
-rw-r--r--test/rdoc/test_rdoc_rubygems_hook.rb254
-rw-r--r--test/rdoc/test_rdoc_servlet.rb535
-rw-r--r--test/rdoc/test_rdoc_single_class.rb12
-rw-r--r--test/rdoc/test_rdoc_stats.rb667
-rw-r--r--test/rdoc/test_rdoc_store.rb993
-rw-r--r--test/rdoc/test_rdoc_task.rb120
-rw-r--r--test/rdoc/test_rdoc_text.rb554
-rw-r--r--test/rdoc/test_rdoc_token_stream.rb42
-rw-r--r--test/rdoc/test_rdoc_tom_doc.rb520
-rw-r--r--test/rdoc/test_rdoc_top_level.rb287
-rw-r--r--test/rdoc/xref_data.rb76
-rw-r--r--test/rdoc/xref_test_case.rb67
-rw-r--r--test/readline/test_readline.rb518
-rw-r--r--test/readline/test_readline_history.rb292
-rw-r--r--test/resolv/test_addr.rb16
-rw-r--r--test/resolv/test_dns.rb153
-rw-r--r--test/rexml/data/LostineRiver.kml.gzbin0 -> 50154 bytes-rw-r--r--test/rexml/data/ProductionSupport.xml29
-rw-r--r--test/rexml/data/axis.xml25
-rw-r--r--test/rexml/data/bad.xml5
-rw-r--r--test/rexml/data/basic.xml11
-rw-r--r--test/rexml/data/basicupdate.xml47
-rw-r--r--test/rexml/data/broken.rss20
-rw-r--r--test/rexml/data/contents.xml70
-rw-r--r--test/rexml/data/dash.xml12
-rw-r--r--test/rexml/data/defaultNamespace.xml6
-rw-r--r--test/rexml/data/doctype_test.xml34
-rw-r--r--test/rexml/data/documentation.xml542
-rw-r--r--test/rexml/data/euc.xml296
-rw-r--r--test/rexml/data/evaluate.xml28
-rw-r--r--test/rexml/data/fibo.xml29
-rw-r--r--test/rexml/data/foo.xml10
-rw-r--r--test/rexml/data/google.2.xml156
-rw-r--r--test/rexml/data/id.xml21
-rw-r--r--test/rexml/data/iso8859-1.xml4
-rw-r--r--test/rexml/data/jaxen24.xml2
-rw-r--r--test/rexml/data/jaxen3.xml15
-rw-r--r--test/rexml/data/lang.xml11
-rw-r--r--test/rexml/data/lang0.xml18
-rw-r--r--test/rexml/data/message.xml27
-rw-r--r--test/rexml/data/moreover.xml244
-rw-r--r--test/rexml/data/much_ado.xml6850
-rw-r--r--test/rexml/data/namespaces.xml18
-rw-r--r--test/rexml/data/nitf.xml67
-rw-r--r--test/rexml/data/numbers.xml18
-rw-r--r--test/rexml/data/ofbiz-issues-full-177.xml13971
-rw-r--r--test/rexml/data/pi.xml13
-rw-r--r--test/rexml/data/pi2.xml6
-rw-r--r--test/rexml/data/project.xml1
-rw-r--r--test/rexml/data/simple.xml2
-rw-r--r--test/rexml/data/stream_accents.xml4
-rw-r--r--test/rexml/data/t63-1.xmlbin0 -> 161690 bytes-rw-r--r--test/rexml/data/t63-2.svg2828
-rw-r--r--test/rexml/data/t75.xml31
-rw-r--r--test/rexml/data/test/tests.xml683
-rw-r--r--test/rexml/data/test/tests.xsl369
-rw-r--r--test/rexml/data/testNamespaces.xml22
-rw-r--r--test/rexml/data/testsrc.xml64
-rw-r--r--test/rexml/data/text.xml10
-rw-r--r--test/rexml/data/ticket_110_utf16.xmlbin0 -> 207464 bytes-rw-r--r--test/rexml/data/ticket_61.xml4
-rw-r--r--test/rexml/data/ticket_68.xml590
-rw-r--r--test/rexml/data/tutorial.xml678
-rw-r--r--test/rexml/data/underscore.xml6
-rw-r--r--test/rexml/data/web.xml42
-rw-r--r--test/rexml/data/web2.xml7
-rw-r--r--test/rexml/data/working.rss202
-rw-r--r--test/rexml/data/xmlfile-bug.xml15
-rw-r--r--test/rexml/data/xp.tst27
-rw-r--r--test/rexml/data/yahoo.xml80
-rw-r--r--test/rexml/listener.rb50
-rw-r--r--test/rexml/parse/test_document_type_declaration.rb47
-rw-r--r--test/rexml/parse/test_notation_declaration.rb97
-rw-r--r--test/rexml/parser/test_sax2.rb200
-rw-r--r--test/rexml/parser/test_tree.rb40
-rw-r--r--test/rexml/parser/test_ultra_light.rb67
-rw-r--r--test/rexml/rexml_test_utils.rb6
-rw-r--r--test/rexml/test_attributes.rb220
-rw-r--r--test/rexml/test_attributes_mixin.rb29
-rw-r--r--test/rexml/test_changing_encoding.rb43
-rw-r--r--test/rexml/test_comment.rb25
-rw-r--r--test/rexml/test_contrib.rb581
-rw-r--r--test/rexml/test_core.rb1462
-rw-r--r--test/rexml/test_doctype.rb104
-rw-r--r--test/rexml/test_document.rb319
-rw-r--r--test/rexml/test_elements.rb116
-rw-r--r--test/rexml/test_encoding.rb94
-rw-r--r--test/rexml/test_encoding_2.rb59
-rw-r--r--test/rexml/test_entity.rb187
-rw-r--r--test/rexml/test_functions.rb223
-rw-r--r--test/rexml/test_functions_number.rb32
-rw-r--r--test/rexml/test_jaxen.rb126
-rw-r--r--test/rexml/test_light.rb104
-rw-r--r--test/rexml/test_lightparser.rb12
-rw-r--r--test/rexml/test_listener.rb129
-rw-r--r--test/rexml/test_martin_fowler.rb37
-rw-r--r--test/rexml/test_namespace.rb38
-rw-r--r--test/rexml/test_order.rb105
-rw-r--r--test/rexml/test_preceding_sibling.rb38
-rw-r--r--test/rexml/test_pullparser.rb100
-rw-r--r--test/rexml/test_rexml_issuezilla.rb14
-rw-r--r--test/rexml/test_sax.rb279
-rw-r--r--test/rexml/test_stream.rb127
-rw-r--r--test/rexml/test_text.rb19
-rw-r--r--test/rexml/test_ticket_80.rb56
-rw-r--r--test/rexml/test_validation_rng.rb790
-rw-r--r--test/rexml/test_xml_declaration.rb33
-rw-r--r--test/rexml/test_xpath.rb1079
-rw-r--r--test/rexml/test_xpath_attribute_query.rb89
-rw-r--r--test/rexml/test_xpath_msw.rb38
-rw-r--r--test/rexml/test_xpath_pred.rb80
-rw-r--r--test/rexml/test_xpathtext.rb72
-rw-r--r--test/rinda/test_rinda.rb699
-rw-r--r--test/rinda/test_tuplebag.rb172
-rw-r--r--test/ripper/dummyparser.rb216
-rw-r--r--test/ripper/test_files.rb24
-rw-r--r--test/ripper/test_filter.rb83
-rw-r--r--test/ripper/test_parser_events.rb1190
-rw-r--r--test/ripper/test_ripper.rb49
-rw-r--r--test/ripper/test_scanner_events.rb888
-rw-r--r--test/rss/dot.pngbin0 -> 111 bytes-rw-r--r--test/rss/rss-assertions.rb2090
-rw-r--r--test/rss/rss-testcase.rb478
-rw-r--r--test/rss/test_1.0.rb307
-rw-r--r--test/rss/test_2.0.rb411
-rw-r--r--test/rss/test_accessor.rb103
-rw-r--r--test/rss/test_atom.rb683
-rw-r--r--test/rss/test_content.rb104
-rw-r--r--test/rss/test_dublincore.rb269
-rw-r--r--test/rss/test_image.rb214
-rw-r--r--test/rss/test_inherit.rb40
-rw-r--r--test/rss/test_itunes.rb347
-rw-r--r--test/rss/test_maker_0.9.rb474
-rw-r--r--test/rss/test_maker_1.0.rb516
-rw-r--r--test/rss/test_maker_2.0.rb757
-rw-r--r--test/rss/test_maker_atom_entry.rb393
-rw-r--r--test/rss/test_maker_atom_feed.rb454
-rw-r--r--test/rss/test_maker_content.rb47
-rw-r--r--test/rss/test_maker_dc.rb149
-rw-r--r--test/rss/test_maker_image.rb62
-rw-r--r--test/rss/test_maker_itunes.rb471
-rw-r--r--test/rss/test_maker_slash.rb37
-rw-r--r--test/rss/test_maker_sy.rb44
-rw-r--r--test/rss/test_maker_taxo.rb81
-rw-r--r--test/rss/test_maker_trackback.rb41
-rw-r--r--test/rss/test_maker_xml-stylesheet.rb83
-rw-r--r--test/rss/test_parser.rb64
-rw-r--r--test/rss/test_parser_1.0.rb528
-rw-r--r--test/rss/test_parser_2.0.rb122
-rw-r--r--test/rss/test_parser_atom_entry.rb163
-rw-r--r--test/rss/test_parser_atom_feed.rb276
-rw-r--r--test/rss/test_setup_maker_0.9.rb246
-rw-r--r--test/rss/test_setup_maker_1.0.rb550
-rw-r--r--test/rss/test_setup_maker_2.0.rb308
-rw-r--r--test/rss/test_setup_maker_atom_entry.rb409
-rw-r--r--test/rss/test_setup_maker_atom_feed.rb445
-rw-r--r--test/rss/test_setup_maker_itunes.rb144
-rw-r--r--test/rss/test_setup_maker_slash.rb38
-rw-r--r--test/rss/test_slash.rb64
-rw-r--r--test/rss/test_syndication.rb125
-rw-r--r--test/rss/test_taxonomy.rb172
-rw-r--r--test/rss/test_to_s.rb670
-rw-r--r--test/rss/test_trackback.rb135
-rw-r--r--test/rss/test_version.rb9
-rw-r--r--test/rss/test_xml-stylesheet.rb108
-rw-r--r--test/ruby/allpairs.rb102
-rw-r--r--test/ruby/beginmainend.rb80
-rw-r--r--test/ruby/enc/test_big5.rb28
-rw-r--r--test/ruby/enc/test_cp949.rb28
-rw-r--r--test/ruby/enc/test_emoji.rb442
-rw-r--r--test/ruby/enc/test_euc_jp.rb24
-rw-r--r--test/ruby/enc/test_euc_kr.rb28
-rw-r--r--test/ruby/enc/test_euc_tw.rb28
-rw-r--r--test/ruby/enc/test_gb18030.rb126
-rw-r--r--test/ruby/enc/test_gbk.rb28
-rw-r--r--test/ruby/enc/test_iso_8859.rb163
-rw-r--r--test/ruby/enc/test_koi8.rb22
-rw-r--r--test/ruby/enc/test_shift_jis.rb27
-rw-r--r--test/ruby/enc/test_utf16.rb384
-rw-r--r--test/ruby/enc/test_utf32.rb93
-rw-r--r--test/ruby/enc/test_windows_1251.rb16
-rw-r--r--test/ruby/endblockwarn_rb12
-rw-r--r--test/ruby/envutil.rb448
-rw-r--r--test/ruby/lbtest.rb49
-rw-r--r--test/ruby/marshaltestlib.rb436
-rw-r--r--test/ruby/memory_status.rb114
-rw-r--r--test/ruby/sentence.rb668
-rw-r--r--test/ruby/test_alias.rb122
-rw-r--r--test/ruby/test_argf.rb853
-rw-r--r--test/ruby/test_arity.rb71
-rw-r--r--test/ruby/test_array.rb2362
-rw-r--r--test/ruby/test_assignment.rb695
-rw-r--r--test/ruby/test_autoload.rb176
-rw-r--r--test/ruby/test_backtrace.rb165
-rw-r--r--test/ruby/test_basicinstructions.rb700
-rw-r--r--test/ruby/test_beginendblock.rb187
-rw-r--r--test/ruby/test_bignum.rb711
-rw-r--r--test/ruby/test_call.rb19
-rw-r--r--test/ruby/test_case.rb106
-rw-r--r--test/ruby/test_class.rb381
-rw-r--r--test/ruby/test_clone.rb28
-rw-r--r--test/ruby/test_comparable.rb86
-rw-r--r--test/ruby/test_complex.rb1163
-rw-r--r--test/ruby/test_complex2.rb735
-rw-r--r--test/ruby/test_complexrational.rb407
-rw-r--r--test/ruby/test_condition.rb16
-rw-r--r--test/ruby/test_const.rb58
-rw-r--r--test/ruby/test_continuation.rb135
-rw-r--r--test/ruby/test_defined.rb212
-rw-r--r--test/ruby/test_dir.rb245
-rw-r--r--test/ruby/test_dir_m17n.rb331
-rw-r--r--test/ruby/test_econv.rb924
-rw-r--r--test/ruby/test_encoding.rb120
-rw-r--r--test/ruby/test_enum.rb450
-rw-r--r--test/ruby/test_enumerator.rb606
-rw-r--r--test/ruby/test_env.rb411
-rw-r--r--test/ruby/test_eval.rb476
-rw-r--r--test/ruby/test_exception.rb519
-rw-r--r--test/ruby/test_fiber.rb345
-rw-r--r--test/ruby/test_file.rb386
-rw-r--r--test/ruby/test_file_exhaustive.rb1171
-rw-r--r--test/ruby/test_fixnum.rb302
-rw-r--r--test/ruby/test_flip.rb42
-rw-r--r--test/ruby/test_float.rb622
-rw-r--r--test/ruby/test_fnmatch.rb132
-rw-r--r--test/ruby/test_gc.rb198
-rw-r--r--test/ruby/test_hash.rb1072
-rw-r--r--test/ruby/test_ifunless.rb14
-rw-r--r--test/ruby/test_integer.rb280
-rw-r--r--test/ruby/test_integer_comb.rb625
-rw-r--r--test/ruby/test_io.rb2971
-rw-r--r--test/ruby/test_io_m17n.rb2538
-rw-r--r--test/ruby/test_iseq.rb119
-rw-r--r--test/ruby/test_iterator.rb497
-rw-r--r--test/ruby/test_keyword.rb418
-rw-r--r--test/ruby/test_lambda.rb136
-rw-r--r--test/ruby/test_lazy_enumerator.rb493
-rw-r--r--test/ruby/test_literal.rb437
-rw-r--r--test/ruby/test_m17n.rb1556
-rw-r--r--test/ruby/test_m17n_comb.rb1603
-rw-r--r--test/ruby/test_marshal.rb598
-rw-r--r--test/ruby/test_math.rb284
-rw-r--r--test/ruby/test_metaclass.rb167
-rw-r--r--test/ruby/test_method.rb655
-rw-r--r--test/ruby/test_mixed_unicode_escapes.rb25
-rw-r--r--test/ruby/test_module.rb1851
-rw-r--r--test/ruby/test_not.rb12
-rw-r--r--test/ruby/test_notimp.rb84
-rw-r--r--test/ruby/test_numeric.rb281
-rw-r--r--test/ruby/test_object.rb808
-rw-r--r--test/ruby/test_objectspace.rb101
-rw-r--r--test/ruby/test_optimization.rb202
-rw-r--r--test/ruby/test_pack.rb703
-rw-r--r--test/ruby/test_parse.rb852
-rw-r--r--test/ruby/test_path.rb259
-rw-r--r--test/ruby/test_pipe.rb16
-rw-r--r--test/ruby/test_primitive.rb423
-rw-r--r--test/ruby/test_proc.rb1244
-rw-r--r--test/ruby/test_process.rb1829
-rw-r--r--test/ruby/test_rand.rb527
-rw-r--r--test/ruby/test_range.rb561
-rw-r--r--test/ruby/test_rational.rb1169
-rw-r--r--test/ruby/test_rational2.rb1386
-rw-r--r--test/ruby/test_readpartial.rb72
-rw-r--r--test/ruby/test_refinement.rb1115
-rw-r--r--test/ruby/test_regexp.rb1057
-rw-r--r--test/ruby/test_require.rb668
-rw-r--r--test/ruby/test_rubyoptions.rb681
-rw-r--r--test/ruby/test_settracefunc.rb1027
-rw-r--r--test/ruby/test_signal.rb268
-rw-r--r--test/ruby/test_sleep.rb22
-rw-r--r--test/ruby/test_sprintf.rb376
-rw-r--r--test/ruby/test_sprintf_comb.rb553
-rw-r--r--test/ruby/test_string.rb2226
-rw-r--r--test/ruby/test_stringchar.rb181
-rw-r--r--test/ruby/test_struct.rb305
-rw-r--r--test/ruby/test_super.rb410
-rw-r--r--test/ruby/test_symbol.rb209
-rw-r--r--test/ruby/test_syntax.rb432
-rw-r--r--test/ruby/test_system.rb163
-rw-r--r--test/ruby/test_thread.rb943
-rw-r--r--test/ruby/test_threadgroup.rb55
-rw-r--r--test/ruby/test_time.rb1005
-rw-r--r--test/ruby/test_time_tz.rb353
-rw-r--r--test/ruby/test_trace.rb61
-rw-r--r--test/ruby/test_transcode.rb2083
-rw-r--r--test/ruby/test_undef.rb37
-rw-r--r--test/ruby/test_unicode_escape.rb271
-rw-r--r--test/ruby/test_variable.rb97
-rw-r--r--test/ruby/test_whileuntil.rb83
-rw-r--r--test/ruby/test_yield.rb393
-rw-r--r--test/ruby/ut_eof.rb128
-rw-r--r--test/rubygems/alternate_cert.pem18
-rw-r--r--test/rubygems/alternate_cert_32.pem18
-rw-r--r--test/rubygems/alternate_key.pem27
-rw-r--r--test/rubygems/bad_rake.rb1
-rw-r--r--test/rubygems/bogussources.rb8
-rw-r--r--test/rubygems/ca_cert.pem68
-rw-r--r--test/rubygems/child_cert.pem18
-rw-r--r--test/rubygems/child_cert_32.pem18
-rw-r--r--test/rubygems/child_key.pem27
-rw-r--r--test/rubygems/client.pem49
-rw-r--r--test/rubygems/data/gem-private_key.pem27
-rw-r--r--test/rubygems/data/gem-public_cert.pem20
-rw-r--r--test/rubygems/data/null-type.gemspec.rzbin0 -> 554 bytes-rw-r--r--test/rubygems/encrypted_private_key.pem30
-rw-r--r--test/rubygems/expired_cert.pem18
-rw-r--r--test/rubygems/fake_certlib/openssl.rb7
-rw-r--r--test/rubygems/fix_openssl_warnings.rb12
-rw-r--r--test/rubygems/foo/discover.rb0
-rw-r--r--test/rubygems/future_cert.pem18
-rw-r--r--test/rubygems/future_cert_32.pem18
-rw-r--r--test/rubygems/good_rake.rb1
-rw-r--r--test/rubygems/grandchild_cert.pem18
-rw-r--r--test/rubygems/grandchild_cert_32.pem18
-rw-r--r--test/rubygems/grandchild_key.pem27
-rw-r--r--test/rubygems/invalid_client.pem49
-rw-r--r--test/rubygems/invalid_issuer_cert.pem18
-rw-r--r--test/rubygems/invalid_issuer_cert_32.pem18
-rw-r--r--test/rubygems/invalid_key.pem27
-rw-r--r--test/rubygems/invalid_signer_cert.pem18
-rw-r--r--test/rubygems/invalid_signer_cert_32.pem18
-rw-r--r--test/rubygems/invalidchild_cert.pem18
-rw-r--r--test/rubygems/invalidchild_cert_32.pem18
-rw-r--r--test/rubygems/invalidchild_key.pem27
-rw-r--r--test/rubygems/plugin/exception/rubygems_plugin.rb2
-rw-r--r--test/rubygems/plugin/load/rubygems_plugin.rb3
-rw-r--r--test/rubygems/plugin/standarderror/rubygems_plugin.rb2
-rw-r--r--test/rubygems/private_key.pem27
-rw-r--r--test/rubygems/public_cert.pem18
-rw-r--r--test/rubygems/public_cert_32.pem18
-rw-r--r--test/rubygems/public_key.pem9
-rw-r--r--test/rubygems/rubygems/commands/crash_command.rb5
-rw-r--r--test/rubygems/rubygems_plugin.rb21
-rw-r--r--test/rubygems/sff/discover.rb0
-rw-r--r--test/rubygems/simple_gem.rb66
-rw-r--r--test/rubygems/specifications/bar-0.0.2.gemspec9
-rw-r--r--test/rubygems/specifications/foo-0.0.1.gemspecbin0 -> 269 bytes-rw-r--r--test/rubygems/ssl_cert.pem19
-rw-r--r--test/rubygems/ssl_key.pem15
-rw-r--r--test/rubygems/test_bundled_ca.rb60
-rw-r--r--test/rubygems/test_config.rb14
-rw-r--r--test/rubygems/test_deprecate.rb76
-rw-r--r--test/rubygems/test_gem.rb1395
-rw-r--r--test/rubygems/test_gem_available_set.rb106
-rw-r--r--test/rubygems/test_gem_command.rb188
-rw-r--r--test/rubygems/test_gem_command_manager.rb263
-rw-r--r--test/rubygems/test_gem_commands_build_command.rb110
-rw-r--r--test/rubygems/test_gem_commands_cert_command.rb669
-rw-r--r--test/rubygems/test_gem_commands_check_command.rb68
-rw-r--r--test/rubygems/test_gem_commands_cleanup_command.rb167
-rw-r--r--test/rubygems/test_gem_commands_contents_command.rb196
-rw-r--r--test/rubygems/test_gem_commands_dependency_command.rb221
-rw-r--r--test/rubygems/test_gem_commands_environment_command.rb152
-rw-r--r--test/rubygems/test_gem_commands_fetch_command.rb126
-rw-r--r--test/rubygems/test_gem_commands_generate_index_command.rb50
-rw-r--r--test/rubygems/test_gem_commands_help_command.rb67
-rw-r--r--test/rubygems/test_gem_commands_install_command.rb849
-rw-r--r--test/rubygems/test_gem_commands_list_command.rb33
-rw-r--r--test/rubygems/test_gem_commands_lock_command.rb68
-rw-r--r--test/rubygems/test_gem_commands_mirror.rb32
-rw-r--r--test/rubygems/test_gem_commands_outdated_command.rb33
-rw-r--r--test/rubygems/test_gem_commands_owner_command.rb204
-rw-r--r--test/rubygems/test_gem_commands_pristine_command.rb370
-rw-r--r--test/rubygems/test_gem_commands_push_command.rb262
-rw-r--r--test/rubygems/test_gem_commands_query_command.rb668
-rw-r--r--test/rubygems/test_gem_commands_search_command.rb17
-rw-r--r--test/rubygems/test_gem_commands_server_command.rb59
-rw-r--r--test/rubygems/test_gem_commands_setup_command.rb129
-rw-r--r--test/rubygems/test_gem_commands_sources_command.rb248
-rw-r--r--test/rubygems/test_gem_commands_specification_command.rb250
-rw-r--r--test/rubygems/test_gem_commands_stale_command.rb40
-rw-r--r--test/rubygems/test_gem_commands_uninstall_command.rb245
-rw-r--r--test/rubygems/test_gem_commands_unpack_command.rb210
-rw-r--r--test/rubygems/test_gem_commands_update_command.rb467
-rw-r--r--test/rubygems/test_gem_commands_which_command.rb85
-rw-r--r--test/rubygems/test_gem_commands_yank_command.rb97
-rw-r--r--test/rubygems/test_gem_config_file.rb455
-rw-r--r--test/rubygems/test_gem_dependency.rb223
-rw-r--r--test/rubygems/test_gem_dependency_installer.rb1265
-rw-r--r--test/rubygems/test_gem_dependency_list.rb259
-rw-r--r--test/rubygems/test_gem_dependency_resolution_error.rb28
-rw-r--r--test/rubygems/test_gem_doctor.rb168
-rw-r--r--test/rubygems/test_gem_ext_builder.rb265
-rw-r--r--test/rubygems/test_gem_ext_cmake_builder.rb84
-rw-r--r--test/rubygems/test_gem_ext_configure_builder.rb82
-rw-r--r--test/rubygems/test_gem_ext_ext_conf_builder.rb192
-rw-r--r--test/rubygems/test_gem_ext_rake_builder.rb64
-rw-r--r--test/rubygems/test_gem_gem_runner.rb68
-rw-r--r--test/rubygems/test_gem_gemcutter_utilities.rb225
-rw-r--r--test/rubygems/test_gem_impossible_dependencies_error.rb45
-rw-r--r--test/rubygems/test_gem_indexer.rb366
-rw-r--r--test/rubygems/test_gem_install_update_options.rb150
-rw-r--r--test/rubygems/test_gem_installer.rb1444
-rw-r--r--test/rubygems/test_gem_local_remote_options.rb120
-rw-r--r--test/rubygems/test_gem_name_tuple.rb37
-rw-r--r--test/rubygems/test_gem_package.rb805
-rw-r--r--test/rubygems/test_gem_package_old.rb89
-rw-r--r--test/rubygems/test_gem_package_tar_header.rb130
-rw-r--r--test/rubygems/test_gem_package_tar_reader.rb79
-rw-r--r--test/rubygems/test_gem_package_tar_reader_entry.rb119
-rw-r--r--test/rubygems/test_gem_package_tar_writer.rb249
-rw-r--r--test/rubygems/test_gem_package_task.rb80
-rw-r--r--test/rubygems/test_gem_path_support.rb84
-rw-r--r--test/rubygems/test_gem_platform.rb292
-rw-r--r--test/rubygems/test_gem_rdoc.rb269
-rw-r--r--test/rubygems/test_gem_remote_fetcher.rb827
-rw-r--r--test/rubygems/test_gem_request.rb279
-rw-r--r--test/rubygems/test_gem_request_set.rb239
-rw-r--r--test/rubygems/test_gem_request_set_gem_dependency_api.rb663
-rw-r--r--test/rubygems/test_gem_request_set_lockfile.rb404
-rw-r--r--test/rubygems/test_gem_requirement.rb356
-rw-r--r--test/rubygems/test_gem_resolver.rb550
-rw-r--r--test/rubygems/test_gem_resolver_activation_request.rb63
-rw-r--r--test/rubygems/test_gem_resolver_api_set.rb167
-rw-r--r--test/rubygems/test_gem_resolver_api_specification.rb68
-rw-r--r--test/rubygems/test_gem_resolver_best_set.rb30
-rw-r--r--test/rubygems/test_gem_resolver_conflict.rb75
-rw-r--r--test/rubygems/test_gem_resolver_dependency_request.rb20
-rw-r--r--test/rubygems/test_gem_resolver_git_set.rb102
-rw-r--r--test/rubygems/test_gem_resolver_git_specification.rb36
-rw-r--r--test/rubygems/test_gem_resolver_index_set.rb28
-rw-r--r--test/rubygems/test_gem_resolver_index_specification.rb67
-rw-r--r--test/rubygems/test_gem_resolver_installed_specification.rb18
-rw-r--r--test/rubygems/test_gem_resolver_installer_set.rb22
-rw-r--r--test/rubygems/test_gem_resolver_lock_set.rb56
-rw-r--r--test/rubygems/test_gem_resolver_requirement_list.rb19
-rw-r--r--test/rubygems/test_gem_resolver_vendor_set.rb65
-rw-r--r--test/rubygems/test_gem_resolver_vendor_specification.rb71
-rw-r--r--test/rubygems/test_gem_security.rb306
-rw-r--r--test/rubygems/test_gem_security_policy.rb540
-rw-r--r--test/rubygems/test_gem_security_signer.rb208
-rw-r--r--test/rubygems/test_gem_security_trust_dir.rb98
-rw-r--r--test/rubygems/test_gem_server.rb339
-rw-r--r--test/rubygems/test_gem_silent_ui.rb111
-rw-r--r--test/rubygems/test_gem_source.rb211
-rw-r--r--test/rubygems/test_gem_source_fetch_problem.rb19
-rw-r--r--test/rubygems/test_gem_source_git.rb183
-rw-r--r--test/rubygems/test_gem_source_installed.rb28
-rw-r--r--test/rubygems/test_gem_source_list.rb111
-rw-r--r--test/rubygems/test_gem_source_local.rb106
-rw-r--r--test/rubygems/test_gem_source_specific_file.rb71
-rw-r--r--test/rubygems/test_gem_source_vendor.rb27
-rw-r--r--test/rubygems/test_gem_spec_fetcher.rb310
-rw-r--r--test/rubygems/test_gem_specification.rb2918
-rw-r--r--test/rubygems/test_gem_stream_ui.rb238
-rw-r--r--test/rubygems/test_gem_stub_specification.rb143
-rw-r--r--test/rubygems/test_gem_text.rb58
-rw-r--r--test/rubygems/test_gem_uninstaller.rb443
-rw-r--r--test/rubygems/test_gem_uri_formatter.rb28
-rw-r--r--test/rubygems/test_gem_util.rb15
-rw-r--r--test/rubygems/test_gem_validator.rb36
-rw-r--r--test/rubygems/test_gem_version.rb203
-rw-r--r--test/rubygems/test_gem_version_option.rb151
-rw-r--r--test/rubygems/test_kernel.rb55
-rw-r--r--test/rubygems/test_require.rb215
-rw-r--r--test/rubygems/wrong_key_cert.pem18
-rw-r--r--test/rubygems/wrong_key_cert_32.pem18
-rw-r--r--test/runner.rb35
-rw-r--r--test/scanf/data.txt6
-rw-r--r--test/scanf/test_scanf.rb325
-rw-r--r--test/scanf/test_scanfblocks.rb81
-rw-r--r--test/scanf/test_scanfio.rb20
-rw-r--r--test/sdbm/test_sdbm.rb542
-rw-r--r--test/shell/test_command_processor.rb69
-rw-r--r--test/socket/test_addrinfo.rb640
-rw-r--r--test/socket/test_ancdata.rb66
-rw-r--r--test/socket/test_basicsocket.rb88
-rw-r--r--test/socket/test_nonblock.rb298
-rw-r--r--test/socket/test_socket.rb578
-rw-r--r--test/socket/test_sockopt.rb51
-rw-r--r--test/socket/test_tcp.rb80
-rw-r--r--test/socket/test_udp.rb72
-rw-r--r--test/socket/test_unix.rb607
-rw-r--r--test/stringio/test_stringio.rb543
-rw-r--r--test/strscan/test_stringscanner.rb719
-rw-r--r--test/syslog/test_syslog_logger.rb572
-rw-r--r--test/test_abbrev.rb54
-rw-r--r--test/test_cmath.rb16
-rw-r--r--test/test_curses.rb74
-rw-r--r--test/test_delegate.rb171
-rw-r--r--test/test_find.rb260
-rw-r--r--test/test_ipaddr.rb3
-rw-r--r--test/test_mathn.rb118
-rw-r--r--test/test_mutex_m.rb26
-rw-r--r--test/test_open3.rb243
-rw-r--r--test/test_pp.rb187
-rw-r--r--test/test_prettyprint.rb519
-rw-r--r--test/test_prime.rb174
-rw-r--r--test/test_pstore.rb137
-rw-r--r--test/test_pty.rb220
-rw-r--r--test/test_rbconfig.rb53
-rw-r--r--test/test_securerandom.rb185
-rw-r--r--test/test_set.rb718
-rw-r--r--test/test_shellwords.rb61
-rw-r--r--test/test_singleton.rb103
-rw-r--r--test/test_syslog.rb185
-rw-r--r--test/test_tempfile.rb343
-rw-r--r--test/test_time.rb416
-rw-r--r--test/test_timeout.rb60
-rw-r--r--test/test_tmpdir.rb33
-rw-r--r--test/test_tracer.rb61
-rw-r--r--test/test_tsort.rb100
-rw-r--r--test/test_weakref.rb58
-rw-r--r--test/testunit/test4test_hideskip.rb7
-rw-r--r--test/testunit/test4test_redefinition.rb11
-rw-r--r--test/testunit/test4test_sorting.rb15
-rw-r--r--test/testunit/test_assertion.rb8
-rw-r--r--test/testunit/test_hideskip.rb16
-rw-r--r--test/testunit/test_parallel.rb189
-rw-r--r--test/testunit/test_rake_integration.rb35
-rw-r--r--test/testunit/test_redefinition.rb15
-rw-r--r--test/testunit/test_sorting.rb17
-rw-r--r--test/testunit/tests_for_parallel/ptest_first.rb7
-rw-r--r--test/testunit/tests_for_parallel/ptest_forth.rb21
-rw-r--r--test/testunit/tests_for_parallel/ptest_second.rb11
-rw-r--r--test/testunit/tests_for_parallel/ptest_third.rb10
-rw-r--r--test/testunit/tests_for_parallel/runner.rb10
-rw-r--r--test/thread/test_cv.rb191
-rw-r--r--test/thread/test_queue.rb158
-rw-r--r--test/thread/test_sync.rb57
-rw-r--r--test/uri/test_common.rb167
-rw-r--r--test/uri/test_ftp.rb66
-rw-r--r--test/uri/test_generic.rb816
-rw-r--r--test/uri/test_http.rb64
-rw-r--r--test/uri/test_ldap.rb100
-rw-r--r--test/uri/test_mailto.rb132
-rw-r--r--test/uri/test_parser.rb41
-rw-r--r--test/webrick/.htaccess1
-rw-r--r--test/webrick/test_cgi.rb140
-rw-r--r--test/webrick/test_cookie.rb131
-rw-r--r--test/webrick/test_filehandler.rb287
-rw-r--r--test/webrick/test_htmlutils.rb20
-rw-r--r--test/webrick/test_httpauth.rb169
-rw-r--r--test/webrick/test_httpproxy.rb284
-rw-r--r--test/webrick/test_httprequest.rb411
-rw-r--r--test/webrick/test_httpresponse.rb141
-rw-r--r--test/webrick/test_httpserver.rb369
-rw-r--r--test/webrick/test_httputils.rb100
-rw-r--r--test/webrick/test_httpversion.rb40
-rw-r--r--test/webrick/test_server.rb92
-rw-r--r--test/webrick/test_utils.rb64
-rw-r--r--test/webrick/utils.rb64
-rw-r--r--test/webrick/webrick.cgi36
-rw-r--r--test/webrick/webrick_long_filename.cgi36
-rw-r--r--test/win32ole/err_in_callback.rb9
-rw-r--r--test/win32ole/orig_data.csv5
-rw-r--r--test/win32ole/test_err_in_callback.rb55
-rw-r--r--test/win32ole/test_folderitem2_invokeverb.rb65
-rw-r--r--test/win32ole/test_nil2vtempty.rb36
-rw-r--r--test/win32ole/test_ole_methods.rb36
-rw-r--r--test/win32ole/test_propertyputref.rb30
-rw-r--r--test/win32ole/test_thread.rb33
-rw-r--r--test/win32ole/test_win32ole.rb524
-rw-r--r--test/win32ole/test_win32ole_event.rb334
-rw-r--r--test/win32ole/test_win32ole_method.rb146
-rw-r--r--test/win32ole/test_win32ole_param.rb106
-rw-r--r--test/win32ole/test_win32ole_type.rb249
-rw-r--r--test/win32ole/test_win32ole_typelib.rb116
-rw-r--r--test/win32ole/test_win32ole_variable.rb61
-rw-r--r--test/win32ole/test_win32ole_variant.rb656
-rw-r--r--test/win32ole/test_win32ole_variant_m.rb35
-rw-r--r--test/win32ole/test_win32ole_variant_outarg.rb68
-rw-r--r--test/win32ole/test_word.rb72
-rw-r--r--test/with_different_ofs.rb17
-rw-r--r--test/xmlrpc/data/blog.xml18
-rw-r--r--test/xmlrpc/data/bug_bool.expected3
-rw-r--r--test/xmlrpc/data/bug_bool.xml8
-rw-r--r--test/xmlrpc/data/bug_cdata.expected3
-rw-r--r--test/xmlrpc/data/bug_cdata.xml8
-rw-r--r--test/xmlrpc/data/bug_covert.expected10
-rw-r--r--test/xmlrpc/data/bug_covert.xml6
-rw-r--r--test/xmlrpc/data/datetime_iso8601.xml8
-rw-r--r--test/xmlrpc/data/fault.xml16
-rw-r--r--test/xmlrpc/data/value.expected7
-rw-r--r--test/xmlrpc/data/value.xml22
-rw-r--r--test/xmlrpc/data/xml1.expected243
-rw-r--r--test/xmlrpc/data/xml1.xml1
-rw-r--r--test/xmlrpc/htpasswd2
-rw-r--r--test/xmlrpc/test_client.rb316
-rw-r--r--test/xmlrpc/test_cookie.rb97
-rw-r--r--test/xmlrpc/test_datetime.rb161
-rw-r--r--test/xmlrpc/test_features.rb50
-rw-r--r--test/xmlrpc/test_marshal.rb110
-rw-r--r--test/xmlrpc/test_parser.rb93
-rw-r--r--test/xmlrpc/test_webrick_server.rb135
-rw-r--r--test/xmlrpc/webrick_testing.rb48
-rw-r--r--test/zlib/test_zlib.rb1094
-rw-r--r--thread.c5302
-rw-r--r--thread_native.h23
-rw-r--r--thread_pthread.c1614
-rw-r--r--thread_pthread.h56
-rw-r--r--thread_win32.c782
-rw-r--r--thread_win32.h45
-rw-r--r--time.c5191
-rw-r--r--timev.h42
-rw-r--r--tool/asm_parse.rb51
-rwxr-xr-xtool/bisect.sh42
-rwxr-xr-xtool/build-transcode16
-rwxr-xr-xtool/change_maker.rb34
-rw-r--r--tool/compile_prelude.rb198
-rw-r--r--tool/config_files.rb8
-rw-r--r--tool/enc-emoji-citrus-gen.rb131
-rw-r--r--tool/enc-emoji4unicode.rb133
-rwxr-xr-xtool/enc-unicode.rb365
-rw-r--r--tool/eval.rb159
-rwxr-xr-xtool/file2lastrev.rb63
-rwxr-xr-xtool/gen_dummy_probes.rb28
-rwxr-xr-xtool/gen_ruby_tapset.rb105
-rw-r--r--tool/generic_erb.rb42
-rwxr-xr-xtool/get-config_files7
-rwxr-xr-xtool/id2token.rb24
-rwxr-xr-xtool/ifchange61
-rwxr-xr-xtool/insns2vm.rb15
-rw-r--r--tool/install-sh17
-rwxr-xr-xtool/instruction.rb1343
-rw-r--r--tool/jisx0208.rb84
-rwxr-xr-xtool/make-snapshot286
-rwxr-xr-xtool/mdoc2man.rb465
-rwxr-xr-xtool/merger.rb242
-rwxr-xr-xtool/mkconfig.rb283
-rwxr-xr-xtool/mkrunnable.rb116
-rwxr-xr-xtool/node_name.rb6
-rw-r--r--tool/parse.rb13
-rw-r--r--tool/probes_to_wiki.rb16
-rwxr-xr-xtool/rbinstall.rb795
-rwxr-xr-xtool/rbuninstall.rb67
-rwxr-xr-xtool/rmdirs11
-rwxr-xr-xtool/rubytest.rb30
-rwxr-xr-xtool/runruby.rb99
-rwxr-xr-xtool/strip-rdoc.rb22
-rw-r--r--tool/test/test_jisx0208.rb40
-rw-r--r--tool/transcode-tblgen.rb1074
-rwxr-xr-xtool/update-deps157
-rw-r--r--tool/vcs.rb112
-rw-r--r--tool/vpath.rb82
-rw-r--r--tool/vtlh.rb15
-rwxr-xr-xtool/ytab.sed37
-rw-r--r--top.sed52
-rw-r--r--transcode.c4550
-rw-r--r--transcode_data.h123
-rw-r--r--util.c4168
-rw-r--r--util.h18
-rw-r--r--variable.c2704
-rw-r--r--version.c80
-rw-r--r--version.h55
-rw-r--r--vm.c2882
-rw-r--r--vm_backtrace.c1368
-rw-r--r--vm_core.h1043
-rw-r--r--vm_debug.h37
-rw-r--r--vm_dump.c805
-rw-r--r--vm_eval.c1979
-rw-r--r--vm_exec.c156
-rw-r--r--vm_exec.h175
-rw-r--r--vm_insnhelper.c2446
-rw-r--r--vm_insnhelper.h273
-rw-r--r--vm_method.c1709
-rw-r--r--vm_opts.h56
-rw-r--r--vm_trace.c1495
-rw-r--r--vsnprintf.c1339
-rw-r--r--win32/Makefile233
-rw-r--r--win32/Makefile.sub1152
-rw-r--r--win32/README.win32141
-rw-r--r--win32/config.h60
-rwxr-xr-xwin32/configure.bat211
-rw-r--r--win32/dir.h45
-rw-r--r--win32/enc-setup.mak10
-rw-r--r--win32/file.c706
-rwxr-xr-xwin32/ifchange.bat95
-rwxr-xr-xwin32/makedirs.bat3
-rwxr-xr-xwin32/mkexports.rb172
-rw-r--r--win32/ntsetup.bat10
-rwxr-xr-xwin32/resource.rb97
-rwxr-xr-xwin32/rm.bat18
-rwxr-xr-xwin32/rmall.bat6
-rwxr-xr-xwin32/rmdirs.bat29
-rw-r--r--win32/rtname.cmd18
-rw-r--r--win32/ruby.def55
-rw-r--r--win32/setup.mak212
-rw-r--r--win32/stub.c42
-rw-r--r--win32/win32.c7119
-rw-r--r--win32/winmain.c10
-rw-r--r--x68/_dtos18.c250
-rw-r--r--x68/_round.c45
-rw-r--r--x68/fconvert.c81
-rw-r--r--x68/select.c167
4286 files changed, 1686174 insertions, 53201 deletions
diff --git a/.document b/.document
new file mode 100644
index 0000000000..9a5067bc52
--- /dev/null
+++ b/.document
@@ -0,0 +1,28 @@
+# This file determines which files in the
+# Ruby hierarchy will be processed by the RDoc
+# tool when it is given the top-level directory
+# as an argument
+
+# Process all the C source files
+*.c
+
+# prelude
+prelude.rb
+
+# the lib/ directory (which has its own .document file)
+lib
+
+# and some of the ext/ directory (which has its own .document file)
+ext
+
+# rdoc files
+ChangeLog
+
+NEWS
+
+README
+README.EXT
+README.EXT.ja
+README.ja
+
+doc
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000000..67abf4b978
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,16 @@
+root = true
+
+[*]
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+tab_width = 8
+indent_style = tab
+indent_size = 4
+
+[**.bat]
+end_of_line = crlf
+
+[**.rb]
+indent_style = space
+indent_size = 2
diff --git a/.gdbinit b/.gdbinit
new file mode 100644
index 0000000000..78ab191c40
--- /dev/null
+++ b/.gdbinit
@@ -0,0 +1,881 @@
+define hook-run
+ set $color_type = 0
+ set $color_highlite = 0
+ set $color_end = 0
+end
+
+define ruby_gdb_init
+ if !$color_type
+ set $color_type = "\033[31m"
+ end
+ if !$color_highlite
+ set $color_highlite = "\033[36m"
+ end
+ if !$color_end
+ set $color_end = "\033[m"
+ end
+end
+
+# set prompt \033[36m(gdb)\033[m\040
+
+define rp
+ ruby_gdb_init
+ if ruby_dummy_gdb_enums.special_consts
+ end
+ if (VALUE)($arg0) & RUBY_FIXNUM_FLAG
+ printf "FIXNUM: %ld\n", (long)($arg0) >> 1
+ else
+ if ((VALUE)($arg0) & ~(~(VALUE)0<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG
+ set $id = (($arg0) >> RUBY_SPECIAL_SHIFT)
+ printf "%sSYMBOL%s: ", $color_type, $color_end
+ rp_id $id
+ else
+ if ($arg0) == RUBY_Qfalse
+ echo false\n
+ else
+ if ($arg0) == RUBY_Qtrue
+ echo true\n
+ else
+ if ($arg0) == RUBY_Qnil
+ echo nil\n
+ else
+ if ($arg0) == RUBY_Qundef
+ echo undef\n
+ else
+ if (VALUE)($arg0) & RUBY_IMMEDIATE_MASK
+ if ((VALUE)($arg0) & RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG
+ printf "%sFLONUM%s: %g\n", $color_type, $color_end, (double)rb_float_value($arg0)
+ else
+ echo immediate\n
+ end
+ else
+ set $flags = ((struct RBasic*)($arg0))->flags
+ if ($flags & RUBY_FL_PROMOTED)
+ printf "[PROMOTED] "
+ end
+ if ($flags & RUBY_T_MASK) == RUBY_T_NONE
+ printf "%sT_NONE%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_NIL
+ printf "%sT_NIL%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_OBJECT
+ printf "%sT_OBJECT%s: ", $color_type, $color_end
+ print (struct RObject *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_CLASS
+ printf "%sT_CLASS%s%s: ", $color_type, ($flags & RUBY_FL_SINGLETON) ? "*" : "", $color_end
+ rp_class $arg0
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_ICLASS
+ printf "%sT_ICLASS%s: ", $color_type, $color_end
+ rp_class $arg0
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_MODULE
+ printf "%sT_MODULE%s: ", $color_type, $color_end
+ rp_class $arg0
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_FLOAT
+ printf "%sT_FLOAT%s: %.16g ", $color_type, $color_end, (((struct RFloat*)($arg0))->float_value)
+ print (struct RFloat *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_STRING
+ printf "%sT_STRING%s: ", $color_type, $color_end
+ rp_string $arg0 $flags
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_REGEXP
+ set $regsrc = ((struct RRegexp*)($arg0))->src
+ set $rsflags = ((struct RBasic*)$regsrc)->flags
+ printf "%sT_REGEXP%s: ", $color_type, $color_end
+ set print address off
+ output (char *)(($rsflags & RUBY_FL_USER1) ? \
+ ((struct RString*)$regsrc)->as.heap.ptr : \
+ ((struct RString*)$regsrc)->as.ary)
+ set print address on
+ printf " len:%ld ", ($rsflags & RUBY_FL_USER1) ? \
+ ((struct RString*)$regsrc)->as.heap.len : \
+ (($rsflags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
+ if $flags & RUBY_FL_USER6
+ printf "(none) "
+ end
+ if $flags & RUBY_FL_USER5
+ printf "(literal) "
+ end
+ if $flags & RUBY_FL_USER4
+ printf "(fixed) "
+ end
+ printf "encoding:%d ", ($flags & RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT
+ print (struct RRegexp *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_ARRAY
+ if ($flags & RUBY_FL_USER1)
+ set $len = (($flags & (RUBY_FL_USER3|RUBY_FL_USER4)) >> (RUBY_FL_USHIFT+3))
+ printf "%sT_ARRAY%s: len=%ld ", $color_type, $color_end, $len
+ printf "(embed) "
+ if ($len == 0)
+ printf "{(empty)} "
+ else
+ output/x *((VALUE*)((struct RArray*)($arg0))->as.ary) @ $len
+ printf " "
+ end
+ else
+ set $len = ((struct RArray*)($arg0))->as.heap.len
+ printf "%sT_ARRAY%s: len=%ld ", $color_type, $color_end, $len
+ if ($flags & RUBY_FL_USER2)
+ printf "(shared) shared="
+ output/x ((struct RArray*)($arg0))->as.heap.aux.shared
+ printf " "
+ else
+ printf "(ownership) capa=%ld ", ((struct RArray*)($arg0))->as.heap.aux.capa
+ end
+ if ($len == 0)
+ printf "{(empty)} "
+ else
+ output/x *((VALUE*)((struct RArray*)($arg0))->as.heap.ptr) @ $len
+ printf " "
+ end
+ end
+ print (struct RArray *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_FIXNUM
+ printf "%sT_FIXNUM%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_HASH
+ printf "%sT_HASH%s: ", $color_type, $color_end,
+ if ((struct RHash *)($arg0))->ntbl
+ printf "len=%ld ", ((struct RHash *)($arg0))->ntbl->num_entries
+ end
+ print (struct RHash *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_STRUCT
+ printf "%sT_STRUCT%s: len=%ld ", $color_type, $color_end, \
+ (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? \
+ ($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) >> (RUBY_FL_USHIFT+1) : \
+ ((struct RStruct *)($arg0))->as.heap.len)
+ print (struct RStruct *)($arg0)
+ x/xw (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? \
+ ((struct RStruct *)($arg0))->as.ary : \
+ ((struct RStruct *)($arg0))->as.heap.ptr)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_BIGNUM
+ printf "%sT_BIGNUM%s: sign=%d len=%ld ", $color_type, $color_end, \
+ (($flags & RUBY_FL_USER1) != 0), \
+ (($flags & RUBY_FL_USER2) ? \
+ ($flags & (RUBY_FL_USER5|RUBY_FL_USER4|RUBY_FL_USER3)) >> (RUBY_FL_USHIFT+3) : \
+ ((struct RBignum*)($arg0))->as.heap.len)
+ if $flags & RUBY_FL_USER2
+ printf "(embed) "
+ end
+ print (struct RBignum *)($arg0)
+ x/xw (($flags & RUBY_FL_USER2) ? \
+ ((struct RBignum*)($arg0))->as.ary : \
+ ((struct RBignum*)($arg0))->as.heap.digits)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_RATIONAL
+ printf "%sT_RATIONAL%s: ", $color_type, $color_end
+ print (struct RRational *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_COMPLEX
+ printf "%sT_COMPLEX%s: ", $color_type, $color_end
+ print (struct RComplex *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_FILE
+ printf "%sT_FILE%s: ", $color_type, $color_end
+ print (struct RFile *)($arg0)
+ output *((struct RFile *)($arg0))->fptr
+ printf "\n"
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_TRUE
+ printf "%sT_TRUE%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_FALSE
+ printf "%sT_FALSE%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_DATA
+ if ((struct RTypedData *)($arg0))->typed_flag == 1
+ printf "%sT_DATA%s(%s): ", $color_type, $color_end, ((struct RTypedData *)($arg0))->type->wrap_struct_name
+ print (struct RTypedData *)($arg0)
+ else
+ printf "%sT_DATA%s: ", $color_type, $color_end
+ print (struct RData *)($arg0)
+ end
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_MATCH
+ printf "%sT_MATCH%s: ", $color_type, $color_end
+ print (struct RMatch *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_SYMBOL
+ printf "%sT_SYMBOL%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_UNDEF
+ printf "%sT_UNDEF%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_NODE
+ printf "%sT_NODE%s(", $color_type, $color_end
+ output (enum node_type)(($flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT)
+ printf "): "
+ print *(NODE *)($arg0)
+ else
+ if ($flags & RUBY_T_MASK) == RUBY_T_ZOMBIE
+ printf "%sT_ZOMBIE%s: ", $color_type, $color_end
+ print (struct RData *)($arg0)
+ else
+ printf "%sunknown%s: ", $color_type, $color_end
+ print (struct RBasic *)($arg0)
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
+document rp
+ Print a Ruby's VALUE.
+end
+
+define rp_id
+ set $id = (ID)$arg0
+ if $id == '!' || $id == '+' || $id == '-' || $id == '*' || $id == '/' || $id == '%' || $id == '<' || $id == '>' || $id == '`'
+ printf "(:%c)\n", $id
+ else
+ if $id == idDot2
+ printf "(:..)\n"
+ else
+ if $id == idDot3
+ printf "(:...)\n"
+ else
+ if $id == idUPlus
+ printf "(:+@)\n"
+ else
+ if $id == idUMinus
+ printf "(:-@)\n"
+ else
+ if $id == idPow
+ printf "(:**)\n"
+ else
+ if $id == idCmp
+ printf "(:<=>)\n"
+ else
+ if $id == idLTLT
+ printf "(:<<)\n"
+ else
+ if $id == idLE
+ printf "(:<=)\n"
+ else
+ if $id == idGE
+ printf "(:>=)\n"
+ else
+ if $id == idEq
+ printf "(:==)\n"
+ else
+ if $id == idEqq
+ printf "(:===)\n"
+ else
+ if $id == idNeq
+ printf "(:!=)\n"
+ else
+ if $id == idEqTilde
+ printf "(:=~)\n"
+ else
+ if $id == idNeqTilde
+ printf "(:!~)\n"
+ else
+ if $id == idAREF
+ printf "(:[])\n"
+ else
+ if $id == idASET
+ printf "(:[]=)\n"
+ else
+ if $id <= tLAST_OP_ID
+ printf "O"
+ else
+ set $id_type = $id & RUBY_ID_SCOPE_MASK
+ if $id_type == RUBY_ID_LOCAL
+ printf "l"
+ else
+ if $id_type == RUBY_ID_INSTANCE
+ printf "i"
+ else
+ if $id_type == RUBY_ID_GLOBAL
+ printf "G"
+ else
+ if $id_type == RUBY_ID_ATTRSET
+ printf "a"
+ else
+ if $id_type == RUBY_ID_CONST
+ printf "C"
+ else
+ if $id_type == RUBY_ID_CLASS
+ printf "c"
+ else
+ printf "j"
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ printf "(%ld): ", $id
+ rb_numtable_entry global_symbols.id_str $id
+ if $rb_numtable_rec
+ rp_string $rb_numtable_rec
+ else
+ echo undef\n
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
+document rp_id
+ Print an ID.
+end
+
+define rp_string
+ set $flags = ((struct RBasic*)($arg0))->flags
+ set print address off
+ output (char *)(($flags & RUBY_FL_USER1) ? \
+ ((struct RString*)($arg0))->as.heap.ptr : \
+ ((struct RString*)($arg0))->as.ary)
+ set print address on
+ printf " bytesize:%ld ", ($flags & RUBY_FL_USER1) ? \
+ ((struct RString*)($arg0))->as.heap.len : \
+ (($flags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
+ if !($flags & RUBY_FL_USER1)
+ printf "(embed) "
+ else
+ if ($flags & RUBY_FL_USER2)
+ printf "(shared) "
+ end
+ if ($flags & RUBY_FL_USER3)
+ printf "(assoc) "
+ end
+ end
+ printf "encoding:%d ", ($flags & RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT
+ if ($flags & RUBY_ENC_CODERANGE_MASK) == 0
+ printf "coderange:unknown "
+ else
+ if ($flags & RUBY_ENC_CODERANGE_MASK) == RUBY_ENC_CODERANGE_7BIT
+ printf "coderange:7bit "
+ else
+ if ($flags & RUBY_ENC_CODERANGE_MASK) == RUBY_ENC_CODERANGE_VALID
+ printf "coderange:valid "
+ else
+ printf "coderange:broken "
+ end
+ end
+ end
+ print (struct RString *)($arg0)
+end
+document rp_string
+ Print the content of a String.
+end
+
+define rp_class
+ printf "(struct RClass *) %p", (void*)$arg0
+ if ((struct RClass *)($arg0))->ptr.origin != $arg0
+ printf " -> %p", ((struct RClass *)($arg0))->ptr.origin
+ end
+ printf "\n"
+ rb_classname $arg0
+ print *(struct RClass *)($arg0)
+ print *((struct RClass *)($arg0))->ptr
+end
+document rp_class
+ Print the content of a Class/Module.
+end
+
+define nd_type
+ print (enum node_type)((((NODE*)($arg0))->flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT)
+end
+document nd_type
+ Print a Ruby' node type.
+end
+
+define nd_file
+ print ((NODE*)($arg0))->nd_file
+end
+document nd_file
+ Print the source file name of a node.
+end
+
+define nd_line
+ print ((unsigned int)((((NODE*)($arg0))->flags>>RUBY_NODE_LSHIFT)&RUBY_NODE_LMASK))
+end
+document nd_line
+ Print the source line number of a node.
+end
+
+# Print members of ruby node.
+
+define nd_head
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_alen
+ printf "%su2.argc%s: ", $color_highlite, $color_end
+ p ($arg0).u2.argc
+end
+
+define nd_next
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_cond
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_body
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+define nd_else
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_orig
+ printf "%su3.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.value
+end
+
+
+define nd_resq
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+define nd_ensr
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_1st
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_2nd
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+
+define nd_stts
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+
+define nd_entry
+ printf "%su3.entry%s: ", $color_highlite, $color_end
+ p ($arg0).u3.entry
+end
+
+define nd_vid
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_cflag
+ printf "%su2.id%s: ", $color_highlite, $color_end
+ p ($arg0).u2.id
+end
+
+define nd_cval
+ printf "%su3.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.value
+end
+
+
+define nd_cnt
+ printf "%su3.cnt%s: ", $color_highlite, $color_end
+ p ($arg0).u3.cnt
+end
+
+define nd_tbl
+ printf "%su1.tbl%s: ", $color_highlite, $color_end
+ p ($arg0).u1.tbl
+end
+
+
+define nd_var
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_ibdy
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+define nd_iter
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_value
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+define nd_aid
+ printf "%su3.id%s: ", $color_highlite, $color_end
+ p ($arg0).u3.id
+end
+
+
+define nd_lit
+ printf "%su1.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.value
+end
+
+
+define nd_frml
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_rest
+ printf "%su2.argc%s: ", $color_highlite, $color_end
+ p ($arg0).u2.argc
+end
+
+define nd_opt
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+
+define nd_recv
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_mid
+ printf "%su2.id%s: ", $color_highlite, $color_end
+ p ($arg0).u2.id
+end
+
+define nd_args
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_noex
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_defn
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_old
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_new
+ printf "%su2.id%s: ", $color_highlite, $color_end
+ p ($arg0).u2.id
+end
+
+
+define nd_cfnc
+ printf "%su1.cfunc%s: ", $color_highlite, $color_end
+ p ($arg0).u1.cfunc
+end
+
+define nd_argc
+ printf "%su2.argc%s: ", $color_highlite, $color_end
+ p ($arg0).u2.argc
+end
+
+
+define nd_cname
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_super
+ printf "%su3.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u3.node
+end
+
+
+define nd_modl
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_clss
+ printf "%su1.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.value
+end
+
+
+define nd_beg
+ printf "%su1.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u1.node
+end
+
+define nd_end
+ printf "%su2.node%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.node
+end
+
+define nd_state
+ printf "%su3.state%s: ", $color_highlite, $color_end
+ p ($arg0).u3.state
+end
+
+define nd_rval
+ printf "%su2.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.value
+end
+
+
+define nd_nth
+ printf "%su2.argc%s: ", $color_highlite, $color_end
+ p ($arg0).u2.argc
+end
+
+
+define nd_tag
+ printf "%su1.id%s: ", $color_highlite, $color_end
+ p ($arg0).u1.id
+end
+
+define nd_tval
+ printf "%su2.value%s: ", $color_highlite, $color_end
+ rp ($arg0).u2.value
+end
+
+define rb_p
+ call rb_p($arg0)
+end
+
+define rb_numtable_entry
+ set $rb_numtable_tbl = $arg0
+ set $rb_numtable_id = (st_data_t)$arg1
+ set $rb_numtable_key = 0
+ set $rb_numtable_rec = 0
+ if $rb_numtable_tbl->entries_packed
+ set $rb_numtable_p = $rb_numtable_tbl->as.packed.bins
+ while $rb_numtable_p && $rb_numtable_p < $rb_numtable_tbl->as.packed.bins+$rb_numtable_tbl->num_entries
+ if $rb_numtable_p.k == $rb_numtable_id
+ set $rb_numtable_key = $rb_numtable_p.k
+ set $rb_numtable_rec = $rb_numtable_p.v
+ set $rb_numtable_p = 0
+ else
+ set $rb_numtable_p = $rb_numtable_p + 1
+ end
+ end
+ else
+ set $rb_numtable_p = $rb_numtable_tbl->as.big.bins[$rb_numtable_id % $rb_numtable_tbl->num_bins]
+ while $rb_numtable_p
+ if $rb_numtable_p->key == $rb_numtable_id
+ set $rb_numtable_key = $rb_numtable_p->key
+ set $rb_numtable_rec = $rb_numtable_p->record
+ set $rb_numtable_p = 0
+ else
+ set $rb_numtable_p = $rb_numtable_p->next
+ end
+ end
+ end
+end
+
+define rb_id2name
+ printf "%sID%s: ", $color_type, $color_end
+ rp_id $arg0
+end
+document rb_id2name
+ Print the name of id
+end
+
+define rb_method_entry
+ set $rb_method_entry_klass = (struct RClass *)$arg0
+ set $rb_method_entry_id = (ID)$arg1
+ set $rb_method_entry_me = (rb_method_entry_t *)0
+ while !$rb_method_entry_me && $rb_method_entry_klass
+ rb_numtable_entry $rb_method_entry_klass->m_tbl $rb_method_entry_id
+ set $rb_method_entry_me = (rb_method_entry_t *)$rb_numtable_rec
+ if !$rb_method_entry_me
+ set $rb_method_entry_klass = (struct RClass *)$rb_method_entry_klass->ptr->super
+ end
+ end
+ if $rb_method_entry_me
+ print *$rb_method_entry_klass
+ print *$rb_method_entry_me
+ else
+ echo method not found\n
+ end
+end
+document rb_method_entry
+ Search method entry by class and id
+end
+
+define rb_classname
+ # up to 128bit int
+ set $rb_classname_permanent = "0123456789ABCDEF"
+ set $rb_classname = classname($arg0, $rb_classname_permanent)
+ if $rb_classname != RUBY_Qnil
+ rp $rb_classname
+ else
+ echo anonymous class/module\n
+ end
+end
+
+define rb_ancestors
+ set $rb_ancestors_module = $arg0
+ while $rb_ancestors_module
+ rp_class $rb_ancestors_module
+ set $rb_ancestors_module = ((struct RClass *)($rb_ancestors_module))->ptr.super
+ end
+end
+document rb_ancestors
+ Print ancestors.
+end
+
+define rb_backtrace
+ call rb_backtrace()
+end
+
+define iseq
+ if ruby_dummy_gdb_enums.special_consts
+ end
+ if ($arg0)->type == ISEQ_ELEMENT_NONE
+ echo [none]\n
+ end
+ if ($arg0)->type == ISEQ_ELEMENT_LABEL
+ print *(LABEL*)($arg0)
+ end
+ if ($arg0)->type == ISEQ_ELEMENT_INSN
+ print *(INSN*)($arg0)
+ if ((INSN*)($arg0))->insn_id != YARVINSN_jump
+ set $i = 0
+ set $operand_size = ((INSN*)($arg0))->operand_size
+ set $operands = ((INSN*)($arg0))->operands
+ while $i < $operand_size
+ rp $operands[$i++]
+ end
+ end
+ end
+ if ($arg0)->type == ISEQ_ELEMENT_ADJUST
+ print *(ADJUST*)($arg0)
+ end
+end
+
+define rb_ps
+ rb_ps_vm ruby_current_vm
+end
+document rb_ps
+Dump all threads and their callstacks
+end
+
+define rb_ps_vm
+ print $ps_vm = (rb_vm_t*)$arg0
+ set $ps_threads = (st_table*)$ps_vm->living_threads
+ if $ps_threads->entries_packed
+ set $ps_threads_i = 0
+ while $ps_threads_i < $ps_threads->num_entries
+ set $ps_threads_key = (st_data_t)$ps_threads->as.packed.entries[$ps_threads_i].key
+ set $ps_threads_val = (st_data_t)$ps_threads->as.packed.entries[$ps_threads_i].val
+ rb_ps_thread $ps_threads_key $ps_threads_val
+ set $ps_threads_i = $ps_threads_i + 1
+ end
+ else
+ set $ps_threads_ptr = (st_table_entry*)$ps_threads->head
+ while $ps_threads_ptr
+ set $ps_threads_key = (st_data_t)$ps_threads_ptr->key
+ set $ps_threads_val = (st_data_t)$ps_threads_ptr->record
+ rb_ps_thread $ps_threads_key $ps_threads_val
+ set $ps_threads_ptr = (st_table_entry*)$ps_threads_ptr->fore
+ end
+ end
+end
+document rb_ps_vm
+Dump all threads in a (rb_vm_t*) and their callstacks
+end
+
+define rb_ps_thread
+ set $ps_thread = (struct RTypedData*)$arg0
+ set $ps_thread_id = $arg1
+ print $ps_thread_th = (rb_thread_t*)$ps_thread->data
+end
+
+# Details: https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/MachineInstructionsTraceWithGDB
+define trace_machine_instructions
+ set logging on
+ set height 0
+ set width 0
+ display/i $pc
+ while !$exit_code
+ info line *$pc
+ si
+ end
+end
+
+define SDR
+ call rb_vmdebug_stack_dump_raw_current()
+end
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..9cd98beee1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,135 @@
+*-*-*.def
+*.a
+*.bak
+*.dSYM
+*.dmyh
+*.dylib
+*.elc
+*.inc
+*.log
+*.o
+*.orig
+*.rej
+*.sav
+*.swp
+*~
+.*-*
+.*.list
+.*.time
+.DS_Store
+.ccmalloc
+.ext
+.pc
+.ppack
+.svn
+Makefile
+extconf.h
+y.output
+y.tab.c
+
+# /
+/*.pc
+/*_prelude.c
+/COPYING.LIB
+/ChangeLog-1.8.0
+/ChangeLog.pre-alpha
+/ChangeLog.pre1_1
+/Doxyfile
+/GNUmakefile
+/README.atheos
+/README.fat-patch
+/README.v6
+/TAGS
+/archive
+/autom4te*.cache
+/automake
+/beos
+/breakpoints.gdb
+/config.cache
+/config.h
+/config.h.in
+/config.status
+/config.status.lineno
+/configure
+/doc/capi
+/enc.mk
+/encdb.h
+/exts.mk
+/goruby
+/id.[ch]
+/largefile.h
+/lex.c
+/libruby*.*
+/miniprelude.c
+/miniruby
+/newdate.rb
+/newline.c
+/newver.rb
+/parse.c
+/parse.h
+/patches
+/patches-master
+/pitest.rb
+/ppack
+/prelude.c
+/preview
+/probes.h
+/rbconfig.rb
+/rename2.h
+/repack
+/revision.h
+/riscos
+/rubicon
+/ruby
+/ruby-man.rd.gz
+/sizes.c
+/test.rb
+/tmp
+/transdb.h
+/uncommon.mk
+/verconf.h
+/web
+/yasmdata.rb
+
+# /benchmark/
+/benchmark/bmx_*.rb
+
+# /enc/trans/
+/enc/trans/*.c
+
+# /ext/
+/ext/extinit.c
+
+# /ext/dl/callback/
+/ext/dl/callback/callback-*.c
+/ext/dl/callback/callback.c
+
+# /ext/rbconfig/
+/ext/rbconfig/sizeof/sizes.c
+
+# /ext/ripper/
+/ext/ripper/eventids1.c
+/ext/ripper/eventids2table.c
+/ext/ripper/ripper.*
+/ext/ripper/ids1
+/ext/ripper/ids2
+
+# /ext/socket/
+/ext/socket/constants.h
+/ext/socket/constdefs.h
+/ext/socket/constdefs.c
+
+# /ext/tk/
+/ext/tk/config_list
+
+# /spec/
+/spec/mspec
+/spec/rubyspec
+
+# /tool/
+/tool/config.guess
+/tool/config.sub
+
+# /win32/
+/win32/*.ico
+/win32/.time
diff --git a/.indent.pro b/.indent.pro
new file mode 100644
index 0000000000..6a207a0554
--- /dev/null
+++ b/.indent.pro
@@ -0,0 +1,21 @@
+-bap
+-nbbb
+-nbc
+-br
+-nbs
+-ncdb
+-ce
+-cli0.5
+-ndj
+-ei
+-nfc1
+-i4
+-l120
+-lp
+-npcs
+-psl
+-sc
+-sob
+
+-TID
+-TVALUE
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000000..8db00587d6
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,86 @@
+# Copyright (C) 2011 Urabe, Shyouhei. All rights reserved.
+#
+# This file is a part of the programming language Ruby. Permission is hereby
+# granted, to either redistribute or modify this file, provided that the
+# conditions mentioned in the file COPYING are met. Consult the file for
+# details.
+
+# This is a Travis-CI build configuration file. The list of configurations
+# available is located in
+#
+# http://about.travis-ci.org/docs/user/build-configuration/
+#
+# and as Ruby itself is a project written in C language,
+#
+# http://about.travis-ci.org/docs/user/languages/c/
+#
+# is also a good place to look at.
+
+# Language specification.
+language: c
+
+# Compilers. Several compilers are provided in Travis, so we try them all.
+# The value set here is visible via $CC environment variable.
+compiler:
+ - gcc
+ - clang
+
+# Dependencies. Some header files are missing in a Travis' worker VM, so we
+# have to install them. The "1.9.1" here is OK. It is the most adopted
+# version string for Debian/Ubuntu, and no dependencies have been changed so
+# far since the 1.9.1 release.
+before_install:
+ - "sudo apt-get -qq update"
+ - "sudo apt-get -qq install $CC" # upgrade if any
+install: "sudo apt-get -qq build-dep ruby1.9.1 2>/dev/null"
+
+# Script is where the test runs. Note we just do "make test", not other tests
+# like test-all, test-rubyspec. This is because they take too much time,
+# enough for Travis to shut down the VM as being stalled.
+before_script:
+ - "make -f common.mk BASERUBY=ruby srcdir=. update-config_files"
+ - "autoconf"
+ - "mkdir config_1st config_2nd"
+ - "./configure -C --with-gcc=$CC"
+ - "cp -pr config.status .ext/include config_1st"
+ - "make reconfig"
+ - "cp -pr config.status .ext/include config_2nd"
+ - "diff -ru config_1st config_2nd"
+ - "make -sj encs"
+ - "make -sj exts"
+script:
+ - "make test OPTS=-v"
+# - "make test-all TESTS='-v'"
+
+# Branch matrix. Not all branches are Travis-ready so we limit branches here.
+branches:
+ only:
+ - trunk
+ - ruby_1_9_3
+
+# We want to be notified when something happens.
+notifications:
+ irc:
+ channels:
+ - "irc.freenode.org#ruby-core"
+ - "irc.freenode.org#ruby-ja"
+ on_success: change # [always|never|change] # default: always
+ on_failure: change # [always|never|change] # default: always
+ template:
+ - "%{message} by @%{author}: See %{build_url}"
+
+ # Update ruby-head installed on Travis CI so other projects can test against it.
+ webhooks:
+ urls:
+ - "https://rubies.travis-ci.org/rebuild/ruby-head"
+ on_success: always
+ on_failure: never
+
+# Local Variables:
+# mode: YAML
+# coding: utf-8-unix
+# indent-tabs-mode: nil
+# tab-width: 4
+# fill-column: 79
+# default-justification: full
+# End:
diff --git a/BSDL b/BSDL
new file mode 100644
index 0000000000..a009caefea
--- /dev/null
+++ b/BSDL
@@ -0,0 +1,22 @@
+Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000000..a1f19ff99d
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,56 @@
+Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
+You can redistribute it and/or modify it under either the terms of the
+2-clause BSDL (see the file BSDL), or the conditions below:
+
+ 1. You may make and give away verbatim copies of the source form of the
+ software without restriction, provided that you duplicate all of the
+ original copyright notices and associated disclaimers.
+
+ 2. You may modify your copy of the software in any way, provided that
+ you do at least ONE of the following:
+
+ a) place your modifications in the Public Domain or otherwise
+ make them Freely Available, such as by posting said
+ modifications to Usenet or an equivalent medium, or by allowing
+ the author to include your modifications in the software.
+
+ b) use the modified software only within your corporation or
+ organization.
+
+ c) give non-standard binaries non-standard names, with
+ instructions on where to get the original software distribution.
+
+ d) make other distribution arrangements with the author.
+
+ 3. You may distribute the software in object code or binary form,
+ provided that you do at least ONE of the following:
+
+ a) distribute the binaries and library files of the software,
+ together with instructions (in the manual page or equivalent)
+ on where to get the original distribution.
+
+ b) accompany the distribution with the machine-readable source of
+ the software.
+
+ c) give non-standard binaries non-standard names, with
+ instructions on where to get the original software distribution.
+
+ d) make other distribution arrangements with the author.
+
+ 4. You may modify and include the part of the software into any other
+ software (possibly commercial). But some files in the distribution
+ are not written by the author, so that they are not under these terms.
+
+ For the list of those files and their copying conditions, see the
+ file LEGAL.
+
+ 5. The scripts and library files supplied as input to or produced as
+ output from the software do not automatically fall under the
+ copyright of the software, but belong to whomever generated them,
+ and may be sold commercially, and may be aggregated with this
+ software.
+
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE.
diff --git a/COPYING.ja b/COPYING.ja
new file mode 100644
index 0000000000..e50d01c8d1
--- /dev/null
+++ b/COPYING.ja
@@ -0,0 +1,51 @@
+本プログラムã¯ãƒ•リーソフトウェアã§ã™ï¼Ž2-clause BSDL
+ã¾ãŸã¯ä»¥ä¸‹ã«ç¤ºã™æ¡ä»¶ã§æœ¬ãƒ—ログラムをå†é…布ã§ãã¾ã™
+2-clause BSDLã«ã¤ã„ã¦ã¯BSDLファイルをå‚ç…§ã—ã¦ä¸‹ã•ã„.
+
+ 1. 複製ã¯åˆ¶é™ãªã自由ã§ã™ï¼Ž
+
+ 2. ä»¥ä¸‹ã®æ¡ä»¶ã®ã„ãšã‚Œã‹ã‚’満ãŸã™æ™‚ã«æœ¬ãƒ—ログラムã®ã‚½ãƒ¼ã‚¹ã‚’
+ 自由ã«å¤‰æ›´ã§ãã¾ã™ï¼Ž
+
+ (a) ãƒãƒƒãƒˆãƒ‹ãƒ¥ãƒ¼ã‚ºã«ãƒã‚¹ãƒˆã—ãŸã‚Šï¼Œä½œè€…ã«å¤‰æ›´ã‚’é€ä»˜ã™ã‚‹
+ ãªã©ã®æ–¹æ³•ã§ï¼Œå¤‰æ›´ã‚’公開ã™ã‚‹ï¼Ž
+
+ (b) 変更ã—ãŸæœ¬ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã‚’è‡ªåˆ†ã®æ‰€å±žã™ã‚‹çµ„織内部ã ã‘ã§
+ 使ã†ï¼Ž
+
+ (c) 変更点を明示ã—ãŸã†ãˆï¼Œã‚½ãƒ•トウェアã®åå‰ã‚’変更ã™ã‚‹ï¼Ž
+ ãã®ã‚½ãƒ•トウェアをé…布ã™ã‚‹æ™‚ã«ã¯å¤‰æ›´å‰ã®æœ¬ãƒ—ログラ
+ ãƒ ã‚‚åŒæ™‚ã«é…布ã™ã‚‹ï¼Žã¾ãŸã¯å¤‰æ›´å‰ã®æœ¬ãƒ—ログラムã®ã‚½ãƒ¼
+ スã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
+
+ (d) ãã®ä»–ã®å¤‰æ›´æ¡ä»¶ã‚’作者ã¨åˆæ„ã™ã‚‹ï¼Ž
+
+ 3. ä»¥ä¸‹ã®æ¡ä»¶ã®ã„ãšã‚Œã‹ã‚’満ãŸã™æ™‚ã«æœ¬ãƒ—ログラムをコンパイ
+ ルã—ãŸã‚ªãƒ–ジェクトコードや実行形å¼ã§ã‚‚é…布ã§ãã¾ã™ï¼Ž
+
+ (a) ãƒã‚¤ãƒŠãƒªã‚’å—ã‘å–ã£ãŸäººãŒã‚½ãƒ¼ã‚¹ã‚’入手ã§ãるよã†ã«ï¼Œ
+ ソースã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
+
+ (b) 機械å¯èª­ãªã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’添付ã™ã‚‹ï¼Ž
+
+ (c) 変更を行ã£ãŸãƒã‚¤ãƒŠãƒªã¯åå‰ã‚’変更ã—ãŸã†ãˆï¼Œã‚ªãƒªã‚¸ãƒŠ
+ ルã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®å…¥æ‰‹æ³•を明示ã™ã‚‹ï¼Ž
+
+ (d) ãã®ä»–ã®é…布æ¡ä»¶ã‚’作者ã¨åˆæ„ã™ã‚‹ï¼Ž
+
+ 4. ä»–ã®ãƒ—ログラムã¸ã®å¼•用ã¯ã„ã‹ãªã‚‹ç›®çš„ã§ã‚れ自由ã§ã™ï¼ŽãŸ
+ ã ã—,本プログラムã«å«ã¾ã‚Œã‚‹ä»–ã®ä½œè€…ã«ã‚ˆã‚‹ã‚³ãƒ¼ãƒ‰ã¯ï¼Œã
+ れãžã‚Œã®ä½œè€…ã®æ„å‘ã«ã‚ˆã‚‹åˆ¶é™ãŒåŠ ãˆã‚‰ã‚Œã‚‹å ´åˆãŒã‚りã¾ã™ï¼Ž
+
+ ãれらファイルã®ä¸€è¦§ã¨ãれãžã‚Œã®é…布æ¡ä»¶ãªã©ã«ä»˜ã„ã¦ã¯
+ LEGALファイルをå‚ç…§ã—ã¦ãã ã•ã„.
+
+ 5. 本プログラムã¸ã®å…¥åŠ›ã¨ãªã‚‹ã‚¹ã‚¯ãƒªãƒ—トãŠã‚ˆã³ï¼Œæœ¬ãƒ—ログラ
+ ムã‹ã‚‰ã®å‡ºåŠ›ã®æ¨©åˆ©ã¯æœ¬ãƒ—ログラムã®ä½œè€…ã§ã¯ãªã,ãれãž
+ れã®å…¥å‡ºåŠ›ã‚’ç”Ÿæˆã—ãŸäººã«å±žã—ã¾ã™ï¼Žã¾ãŸï¼Œæœ¬ãƒ—ログラムã«
+ 組ã¿è¾¼ã¾ã‚Œã‚‹ãŸã‚ã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã«ã¤ã„ã¦ã‚‚åŒæ§˜ã§ã™ï¼Ž
+
+ 6. 本プログラムã¯ç„¡ä¿è¨¼ã§ã™ï¼Žä½œè€…ã¯æœ¬ãƒ—ログラムをサãƒãƒ¼ãƒˆ
+ ã™ã‚‹æ„å¿—ã¯ã‚りã¾ã™ãŒï¼Œãƒ—ログラム自身ã®ãƒã‚°ã‚ã‚‹ã„ã¯æœ¬ãƒ—
+ ログラムã®å®Ÿè¡Œãªã©ã‹ã‚‰ç™ºç”Ÿã™ã‚‹ã„ã‹ãªã‚‹æå®³ã«å¯¾ã—ã¦ã‚‚責
+ 任をæŒã¡ã¾ã›ã‚“.
diff --git a/ChangeLog b/ChangeLog
index 8c4a1eaa39..2540307c53 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4305 +1,16191 @@
-Thu Dec 25 17:06:30 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Sat Nov 23 03:44:03 2013 Eric Hodel <drbrain@segment7.net>
- * version 1.0-971225
+ * lib/rubygems: Update to RubyGems master dcce4ff. Important changes
+ in this commit:
- * some minor bug fixes.
+ Remove automatic detection of gem dependencies files. This prevents a
+ security hole as described in [ruby-core:58490]
-Tue Dec 9 17:54:56 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ Fixed bugs for installing git gems.
- * version 1.0-971209
+ * test/rubygems: ditto.
- * sample/ruby-mode.el (ruby-expr-beg): forgot to handle modifiers.
+Fri Nov 22 22:30:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * parse.y (tokadd): token buffer overrun.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power):
+ Round the result value only if the precision is given.
-Thu Dec 4 14:29:59 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Fri Nov 22 17:20:50 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * version 1.0-971204
+ * transcode.c (str_transcode0): don't scrub invalid chars if
+ str.encode doesn't have explicit invalid: :replace.
+ workaround fix for see #8995
-Mon Dec 1 15:24:41 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Fri Nov 22 17:11:26 2013 Narihiro Nakamura <authornari@gmail.com>
- * compar.c (cmp_between): wrong comparison made.
+ * include/ruby/intern.h, internal.h: Expose rb_gc_count().
-Wed Nov 26 18:18:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Fri Nov 22 17:07:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * numeric.c (fix2str): enlarge buffer to prevent overflow on some
- machines.
+ * ext/bigdecimal/bigdecimal.gemspec: version 1.2.2.
-Tue Nov 25 15:03:28 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Fri Nov 22 17:04:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * version 1.0-971125
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_data_type):
+ Use RUBY_TYPED_FREE_IMMEDIATELY only if it is available.
-Fri Nov 21 13:17:12 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Fri Nov 22 16:49:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * parse.y (yylex): skip multibyte characters in comments.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): Round the result value.
+ [Bug #8818] [ruby-core:56802]
-Wed Nov 19 17:19:20 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * test/bigdecimal/test_bigdecimal.rb: Add a test for the above fix.
- * parse.y (call_args): wrong node generation.
+Fri Nov 22 16:25:43 2013 Koichi Sasada <ko1@atdot.net>
-Tue Nov 18 13:59:59 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * gc.c (heap_set_increment): accept minimum additional page number.
- * version 1.0-971118
+ * gc.c (gc_after_sweep): allocate pages to allocate at least
+ RUBY_HEAP_MIN_SLOTS.
+ [Bug #9137]
-Tue Nov 18 10:13:08 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Fri Nov 22 16:19:52 2013 Narihiro Nakamura <authornari@gmail.com>
- * regex.c (re_compile_pattern): insert initialize code for jump_n,
- before entering loops.
+ * include/ruby/intern.h (rb_gc_set_params): Deprecate
+ rb_gc_set_params because it's only used in ruby internal.
-Sat Nov 15 00:11:36 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * internal.h (ruby_gc_set_params): Declare rb_gc_set_params's
+ alias function.
- * io.c (io_s_popen): "rb" detection
+ * gc.c: ditto.
-Wed Nov 12 13:44:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * ruby.c: use ruby_gc_set_params.
- * time.c: remove coerce from Time class.
+Fri Nov 22 14:55:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Wed Nov 2 16:00:00 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Insert rb_thread_check_ints.
- * string.c (str_sub_s): "".sub! "", "" => "\000"
+Fri Nov 22 14:35:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Thu Oct 30 16:54:01 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Fix the inserting points
+ of RB_GC_GUARDs.
- * string.c (str_chop_bang): "".chop caused SEGV.
+Fri Nov 22 14:31:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Mon Oct 27 13:49:13 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * ext/bigdecimal/bigdecimal.c: Fix indentation.
- * ext/extmk.rb.in: library may have pathname contains `.'
+Fri Nov 22 14:03:00 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * eval.c (rb_rescue): should not protect SystemError.
+ * ext/nkf: merge nkf 2.1.3 2a2f2c5.
-Thu Oct 23 11:17:44 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Fri Nov 22 12:43:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * range.c (range_eqq): fixnum check for last needed too.
+ * util.c (ruby_strtod): ignore too long fraction part, which does not
+ affect the result.
-Wed Oct 22 12:52:30 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Fri Nov 22 12:17:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * array.c (ary_join): call ary_join() recursively for the 1st
- array element.
+ * ext/openssl/lib/openssl/buffering.rb (OpenSSL::Buffering#initialize):
+ initialize of a module should pass arguments to super.
-Tue Oct 21 13:31:29 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Fri Nov 22 12:02:58 2013 Tanaka Akira <akr@fsij.org>
- * version 1.0-971021
+ * test/ruby/test_settracefunc.rb: Ignore events from other threads.
-Mon Oct 20 12:18:29 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+Fri Nov 22 10:35:57 2013 Koichi Sasada <ko1@atdot.net>
- * ruby.c (load_file): wrong condition for #! check with -x.
+ * vm.c (ruby_vm_destruct): do not use ruby_xfree() after freeing
+ objspace.
- * file.c (file_s_dirname): did return "" for "/a".
+ * gc.c (ruby_mimfree): added. It is similar to ruby_mimmalloc().
-Fri Oct 17 14:29:09 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * internal.h: ditto.
- * bignum.c (bigadd): some undefined side effect order assumed.
+Fri Nov 22 09:42:35 2013 Zachary Scott <e@zzak.io>
-Wed Oct 15 18:08:37 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * test/digest/test_digest.rb: Reverse order of assert_equal
+ Reported by @splattael
- * version 1.0-971015
+Fri Nov 22 09:03:16 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Oct 3 10:51:10 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * gc.c: fix build failure on FreeBSD introduced by r43763.
+ malloc_usable_size() is defined by malloc_np.h on FreeBSD.
- * version 1.0-971003
+ * configure.in: check malloc.h and malloc_np.h.
- * eval.c (ruby_options): f_require() called too early.
+Fri Nov 22 08:27:13 2013 Eric Hodel <drbrain@segment7.net>
- * eval.c (rb_provide): module extentions should always be `.o'.
+ * lib/rubygems: Update to RubyGems master 50a8210. Important changes
+ in this commit:
-Thu Oct 2 17:59:18 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ RubyGems now automatically checks for gem.deps.rb or Gemfile when
+ running ruby executables. This behavior is similar to `bundle exec
+ rake`. This change may be reverted before Ruby 2.1.0 if too many bugs
+ are found.
- * ext/marshal/marshal.c (r_object): remove temporal regist for
- structs. (caused problem if structs form cycles.)
+ * test/rubygems: ditto.
- * version 1.0-971002
+Thu Nov 21 22:33:59 2013 Koichi Sasada <ko1@atdot.net>
-Wed Oct 1 14:01:49 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * gc.c: RGENGC_CHECK_MODE should be 0.
- * ext/marshal/marshal.c (w_byte): argument must be char.
+Thu Nov 21 21:40:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Wed Oct 1 10:30:22 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * ext/bigdecimal/bigdecimal.c (VpAlloc): Fix the expr to adjust the size
+ of the digit array.
- * ext/marshal/marshal.c (marshal_dump): try to set binmode.
+Thu Nov 21 21:36:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * ext/marshal/marshal.c (r_object): forgot to re-regist structs in
- the object table.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_sqrt): Fix the precision of
+ the result BigDecimal of sqrt.
+ [Bug #5266] [ruby-dev:44450]
- * eval.c (ruby_options): call Init_ext() before any require()
- calls by `-r'.
+ * test/bigdecimal/test_bigdecimal.rb: add tests for the above changes.
-Tue Sep 30 14:51:07 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Thu Nov 21 18:49:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 1.0-970930
+ * gc.c (vm_xrealloc, vm_xfree): use malloc_usable_size() to obtain old
+ size if available.
-Fri Sep 30 14:29:22 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+Thu Nov 21 18:47:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/marshal/marshal.c (w_object): marshal dumped core.
+ * lib/delegate.rb (SimpleDelegator#__getobj__): target object must be set.
-Tue Sep 30 10:27:39 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * lib/delegate.rb (DelegateClass#__getobj__): ditto.
- * sample/test.rb: bignum test suits added.
+Thu Nov 21 18:28:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Sep 29 13:37:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * lib/tempfile.rb (Tempfile#initialize): use class method to get rid
+ of warnings when $VERBOSE.
- * ruby.c (forbid_setid): forbid some options in suid mode.
+Thu Nov 21 17:43:29 2013 Koichi Sasada <ko1@atdot.net>
-Mon Sep 27 09:53:48 1997 EGUCHI Matsumoto <eguchi@shizuokanet.or.jp>
+ * gc.c: rename initial_xxx variables to gc_params.xxx.
+ They are not only used initial values.
- * bignum.c: modified for speeding.
+ Chikanaga-san: Congratulations on RubyPrize!
-Fri Sep 26 18:27:59 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+Thu Nov 21 17:16:00 2013 Koichi Sasada <ko1@atdot.net>
- * sample/from.rb: some extensions.
+ * gc.c: enable "RGENGC_ESTIMATE_OLDSPACE" option as default.
+ Without this option, some application consumes huge memory.
+ (and there are only a few performance down)
-Mon Sep 29 13:15:56 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ Introduced new environment variables:
+ * RUBY_GC_HEAP_OLDSPACE (default 16MB)
+ * RUBY_GC_HEAP_OLDSPACE_MAX (default 128 MB)
+ * RUBY_GC_HEAP_OLDSPACE_GROWTH_FACTOR (default 1.2)
- * parse.y (lhs): no more syntax error on `obj.CONSTANT = value'.
+ * gc.c (initial_malloc_limit): rename to initial_malloc_limit_min.
-Fri Sep 26 14:41:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Thu Nov 21 16:51:34 2013 Zachary Scott <e@zzak.io>
- * eval.c (ruby_run): deferred calling Init_ext() just before eval_node.
+ * ext/digest/bubblebabble/bubblebabble.c: Teach RDoc digest/bubblebabble
-Fri Sep 26 13:27:24 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+Thu Nov 21 16:50:16 2013 Zachary Scott <e@zzak.io>
- * io.c (io_isatty): forgot to return TRUE value.
+ * test/digest/test_digest.rb: Add more tests for digest/bubblebabble
-Fri Sep 25 11:10:58 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
+Thu Nov 21 16:32:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c: use _setjmp/_longjmp instead of setjmp/longjmp on some
- platforms.
+ * lib/delegate.rb (Delegator#method_missing): try private methods defined in
+ Kernel after the target. [Fixes GH-449]
-Wed Sep 24 17:43:13 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Thu Nov 21 16:25:08 2013 Akinori MUSHA <knu@iDaemons.org>
- * string.c (Init_String): String#taint and String#taint? added.
+ * test/uri/test_generic.rb (URI#test_merge): Test uri + URI(path)
+ in addition to uri + path.
-Wed Sep 24 00:57:00 1997 Katsuyuki Okabe <HGC02147@niftyserve.or.jp>
+Thu Nov 21 15:36:08 2013 Zachary Scott <e@zzak.io>
- * X68000 patch.
+ * ext/openssl/lib/openssl/buffering.rb: [DOC] Fix HEREDOC comment for
+ OpenSSL::Buffering which breaks overview because of RDoc bug
-Tue Sep 23 20:42:30 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
+Thu Nov 21 14:46:57 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * parse.y (node_newnode): SEGV on null node setup.
+ * eval_intern.h (SAVE_ROOT_JMPBUF): workaround for the failure of
+ test/ruby/test_exception.rb on Windows.
+ wrap by __try and __exception statements on mswin to raise SIGSEGV
+ when EXCEPTION_STACK_OVERFLOW is occurred, because MSVCRT doesn't
+ handle the exception.
+ however, (1) mingw-gcc doesn't support __try and __exception
+ statements, and (2) we cannot retry SystemStackError after this
+ change yet (maybe crashed) because SEH and longjmp() are too
+ uncongenial.
-Mon Sep 22 11:22:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * signal.c (check_stack_overflow, CHECK_STACK_OVERFLOW): now defined on
+ Windows, too.
- * ruby.c (ruby_prog_init): wrong safe condition check.
+ * thread_win32.c (ruby_stack_overflowed_p): ditto.
-Sun Sep 21 14:46:02 1997 MAEDA shugo <shugo@po.aianet.ne.jp>
+Thu Nov 21 14:18:24 2013 Zachary Scott <e@zzak.io>
- * error.c (exc_inspect): garbage added to classpath.
+ * object.c: [DOC] Clarify Object#dup vs #clone [Bug #9128]
+ Moving existing doc for this comparison to separate section of #dup
+ Adding examples to document behavior of #dup with Module#extend.
+ Based on a patch by stevegoobermanhill
-Fri Sep 19 11:49:23 1997 <matz@netlab.co.jp>
+Thu Nov 21 14:06:02 2013 Koichi Sasada <ko1@atdot.net>
- * version 1.0-970919
+ * gc.c (gc_marks_check): do not dump all refs.
- * parse.y (newtok): forgot to adjust buffer size when shrinking
- the token buffer.
+ * gc.c (allrefs_dump_i): fix output format.
- * enum.c (enum_find): rb_eval_cmd() does not return value.
+Thu Nov 21 13:43:07 2013 Koichi Sasada <ko1@atdot.net>
- * io.c (pipe_open): close fds on pipe exec. fcntl(fd, F_SETFD, 1)
- no longer used.
+ * gc.c: change RGENGC_CHECK_MODE (>= 2) logic.
+ Basically, make an object graph of all of living objects before and
+ after marking and check status.
-Tue Sep 16 17:54:25 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ [Before marking: check WB sanity]
+ If there is a non-old object `obj' pointed from old object
+ (`parent') then `parent' or `obj' should be remembered.
- * file.c (f_test): problem if wrong command specified.
+ [After marking: check marking miss]
+ Traversible objects with the object graph should be marked.
+ (However, this alert about objects pointed by machine context
+ can be false positive. We only display alert.)
- * ruby.c (ruby_prog_init): close stdaux and stdprn for MSDOS.
+ [Implementation memo]
+ objspace_allrefs() creates an object graph.
+ The object graph is represented by st_table, key is object (VALUE)
+ and value is referring objects. Referring objects are stored by
+ "struct reflist".
- * ruby.c (ruby_prog_init): should not add path from environment
- variable, if ruby is running under seuid.
+ * gc.c (init_mark_stack): do not use push_mark_stack_chunk() at init.
+ This pre-allocation causes failure on is_mark_stask_empty()
+ without any pushing.
- * process.c (init_ids): check suid check for setuid/seteuid etc.
+Thu Nov 21 13:40:20 2013 Zachary Scott <e@zzak.io>
-Mon Sep 15 00:42:04 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * lib/observer.rb: [DOC] Clarify default observer method.
+ By @edward [Fixes GH-450] https://github.com/ruby/ruby/pull/450
- * regex.c (re_compile_pattern): \w{3} and \W{3} did not work.
+Thu Nov 21 13:32:53 2013 Zachary Scott <e@zzak.io>
-Thu Sep 11 10:31:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * ext/openssl/ossl_engine.c: [DOC] Documentation for OpenSSL::Engine
+ This patch is based off work by @vbatts in GH-436 completing the
+ documentation for this class and its methods.
+ https://github.com/ruby/ruby/pull/436
- * version 1.0-970911
+Thu Nov 21 10:45:22 2013 Zachary Scott <e@zzak.io>
- * ext/socket/socket.c (sock_new): no setbuf() for NT.
+ * ext/openssl/lib/openssl/buffering.rb: Remove unused arguments from
+ OpenSSL::Buffering.new [Fixes GH-445]
- * io.c (rb_fopen,rb_fdopen): set close-on-exec for every fd.
+Thu Nov 21 10:30:47 2013 Zachary Scott <e@zzak.io>
-Wed Sep 10 15:55:31 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * test/digest/test_digest.rb: Add test for Digest::SHA256.bubblebabble
- * version 1.0-970910
+Wed Nov 20 20:54:01 2013 Masaya Tarui <tarui@ruby-lang.org>
- * ext/marshal/marshal.c (r_bytes0): extra big length check.
+ * tool/instruction.rb : fix typo.
-Tue Sep 9 16:27:14 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Wed Nov 20 19:45:22 2013 Tanaka Akira <akr@fsij.org>
- * io.c (pipe_fptr_atexit): clean up popen()'ed fptr.
+ * random.c (rand_init): Make it possible to specify arbitrary array
+ for init_genrand().
- * error.c (set_syserr): some system has error code that is bigger
- than sys_nerr. grrr.
+Wed Nov 20 17:34:13 2013 Koichi Sasada <ko1@atdot.net>
-Tue Sep 9 16:27:14 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * parse.y (rb_gc_mark_symbols): set global_symbols.minor_marked only
+ when full_mark is 0.
+ rb_gc_mark_symbols() (with full_mark == 1) can be called by other
+ than GC (such as rb_objspace_reachable_objects_from_root()).
- * version 1.0-970909
+Wed Nov 20 11:46:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * error.c (set_syserr): some system has error code that is bigger
- than sys_nerr. grrr.
+ * ext/json: merge JSON 1.8.1.
+ https://github.com/nurse/json/compare/002ac2771ce32776b32ccd2d06e5604de6c36dcd...e09ffc0d7da25d0393873936c118c188c78dbac3
+ * Remove Rubinius exception since transcoding should be working now.
+ * Fix https://github.com/flori/json/issues/162 reported by Marc-Andre
+ Lafortune <github_rocks@marc-andre.ca>. Thanks!
+ * Applied patches by Yui NARUSE <naruse@airemix.jp> to suppress
+ warning with -Wchar-subscripts and better validate UTF-8 strings.
+ * Applied patch by ginriki@github to remove unnecessary if.
+ * Add load/dump interface to JSON::GenericObject to make
+ serialize :some_attribute, JSON::GenericObject
+ work in Rails active models for convenient
+ SomeModel#some_attribute.foo.bar access to serialised JSON data.
-Wed Sep 3 18:11:00 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Wed Nov 20 01:39:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 1.0-970903
+ * lib/rdoc/constant.rb (RDoc::Constant#documented?): workaround for
+ NoMethodError when the original of alias is not found.
- * eval.c (f_load): expand path if fname begins with `~'.
+Tue Nov 19 23:38:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Sep 1 13:42:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * configure.in (--with-os-version-style): option to transform target
+ OS version string.
- * eval.c (rb_call): alias occured in the module body caused SEGV.
+Tue Nov 19 21:27:33 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 29 11:10:21 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * test/net/http/utils.rb (spawn_server): Specify zero for port to
+ avoid reusing an allocated port.
- * parse.y (yylex): spaces can follow =begin/=end.
+ * test/net/http/test_http.rb: Don't specify port here.
- * variable.c (find_class_path): look for class_tbl also for
- unnamed fundamental classes, such as Object, String, etc.
+ * test/net/http/test_https.rb: Ditto.
- * variable.c (rb_name_class): can't name class before String class
- is initilialized.
+Tue Nov 19 18:52:10 2013 Koichi Sasada <ko1@atdot.net>
- * inits.c (rb_call_inits): unrecognized dependency from GC to
- Array.
+ * gc.c (heap_is_swept_object): use heap_page::before_sweep flag.
- * variable.c (find_class_path): could not find class if Object's
- iv_tbl is NULL.
+Tue Nov 19 18:49:32 2013 Koichi Sasada <ko1@atdot.net>
-Thu Aug 28 13:12:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * gc.c (rb_objspace_reachable_objects_from_root): do major marking.
- * parse.y (yylex): revised `=begin' skip code.
+Tue Nov 19 18:45:40 2013 Koichi Sasada <ko1@atdot.net>
- * eval.c (is_defined): separated from rb_eval().
+ * gc.c (rb_gc_resurrect): added.
+ rb_fstring() used rb_gc_mark() to avoid freeing used string.
+ However, rb_gc_mark() set mark bit *and* pushes mark_stack.
+ rb_gc_resurrect() does only set mark bit if it is before sweeping.
-Wed Aug 27 11:32:42 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * string.c (rb_fstring): use rb_gc_resurrect.
- * variable.c (fc_i): some classes/modules does not have iv_tbl.
+ * internal.h: add decl.
- * variable.c (find_class_path): avoid inifinite loop.
+Tue Nov 19 09:47:02 2013 Eric Hodel <drbrain@segment7.net>
-Tue Aug 26 13:43:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * lib/rdoc: Update to RDoc master a1195ce. Changes include:
- * eval.c (rb_eval): undef'ing non-existing method will raise
- NameError exception.
+ Improved accessibility of the main sidebar navigation.
- * object.c (class_s_new): needed to create metaclass too.
+ Fixed handling of regexp options in HTML source highlighting.
- * eval.c (error_print): no class name print for anonymous class.
+ * test/rdoc: ditto.
- * eval.c (rb_longjmp): proper exception raised if raise() called
- without arguments, with $! or $@ set.
+Tue Nov 19 09:33:52 2013 Eric Hodel <drbrain@segment7.net>
- * object.c (Init_Object): superclass()'s method argument setting
- was wrong again.
+ * lib/rubygems: Update to RubyGems master 6a3d9f9. Changes include:
-Mon Aug 25 11:53:11 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ Compatibly renamed Gem::DependencyResolver to Gem::Resolver.
- * sample/ruby-mode.el (ruby-parse-region): auto-indent now
- supports "\\" in the strings.
+ Added support for git gems in gem.deps.rb and Gemfile.
- * struct.c (struct_getmember): new API to get member value from C
- language side.
+ Fixed resolver bugs.
-Fri Aug 22 14:26:40 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * test/rubygems: ditto.
- * eval.c (error_print): modified exception print format.
+ * lib/rubygems/LICENSE.txt: Updated to license from RubyGems trunk.
+ [ruby-trunk - Bug #9086]
-Thu Aug 21 16:10:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * lib/rubygems/commands/which_command.rb: RubyGems now indicates
+ failure when any file is missing. [ruby-trunk - Bug #9004]
- * sample/ruby-mode.el (ruby-calculate-indent): wrong indent level
- calculated with keyword operators.
+ * lib/rubygems/ext/builder: Extensions are now installed into the
+ extension install directory and the first directory in the require
+ path from the gem. This allows backwards compatibility with msgpack
+ and other gems that calculate full require paths.
+ [ruby-trunk - Bug #9106]
-Thu Aug 21 11:55:41 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
- * version 1.0-970821
+Tue Nov 19 07:21:56 2013 Tanaka Akira <akr@fsij.org>
-Thu Aug 21 11:36:58 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * configure.in (LOCALTIME_OVERFLOW_PROBLEM): Define it for cross
+ compiling.
+ [ruby-core:58391] [Bug #9119] Reported by Luis Lavena.
+ Analyzed by Heesob Park.
- * parse.y (arg): ary[0] += 1 cause SEGV
+Tue Nov 19 05:55:05 2013 Eric Hodel <drbrain@segment7.net>
-Wed Aug 20 14:24:42 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * lib/rdoc/rubygems_hook.rb: Remove debugging puts committed by
+ accident.
- * version 1.0-970820
+Mon Nov 18 22:47:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_call): infinite loop bug
+ * eval_intern.h (TH_PUSH_TAG, TH_EXEC_TAG): refine stack overflow
+ detection. chain local tag after setjmp() successed on it, because
+ calling setjmp() also can overflow the stack.
+ [ruby-dev:47804] [Bug #9109]
-Tue Aug 19 00:15:38 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * vm_eval.c (rb_catch_obj): now th->tag points previous tag until
+ TH_EXEC_TAG().
- * version 1.0-970819
+ * thread_pthread.c (ruby_init_stack): set stack_start properly by
+ get_main_stack() if possible.
- * eval.c (rb_call): did not raise ArgumentError if too many
- arguments more than optional arguments (without rest arg).
+Mon Nov 18 22:45:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_eval): did not work well for op_asgn2 (attribute
- self assignment).
+ * eval_jump.c (rb_exec_end_proc): unlink and free procs data before
+ calling for each procs. [Bug #9110]
-Mon Aug 18 09:25:56 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Sun Nov 17 06:33:32 2013 Shota Fukumori <her@sorah.jp>
- * object.c (inspect_i): did not display T_DATA instance variables.
+ * configure.in: Use $LIBS for base of $SOLIBS, also in darwin.
+ By this fix, environment that libgmp is located in $LIBS can build
+ ruby.
- * parse.y: provides more accurate line number information.
+Sun Nov 17 01:56:32 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (thread_value): include value's backtrace information in
- the variable `$@'.
+ * thread_pthread.c (rb_thread_create_timer_thread): Show error
+ message instead of error number.
+ (thread_create_core): Ditto.
- * eval.c (f_abort): print backtrace and exit.
+ * cont.c (fiber_machine_stack_alloc): Ditto.
-Sat Aug 16 00:17:44 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Sat Nov 16 18:28:08 2013 Kouhei Sutou <kou@cozmixng.org>
- * object.c (class_s_new): do not make subclass of singleton class.
+ * lib/rexml/parsers/ultralightparser.rb
+ (REXML::Parsers::UltraLightParser#parse): Fix wrong :start_doctype
+ position.
+ [Bug #9061] [ruby-dev:47778]
+ Patch by Ippei Obayashi. Thanks!!!
-Fri Aug 15 15:49:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * test/rexml/parser/test_ultra_light.rb: Add a test for this case.
- * eval.c (call_trace_func): block context switch in the trace
- function.
+Sat Nov 16 02:13:56 2013 Masaya Tarui <tarui@ruby-lang.org>
- * eval.c (rb_eval): clear method cache at class extention.
+ * cont.c : Introduce ensure rollback mechanism. Please see below.
-Fri Aug 15 19:40:43 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * internal.h (ruby_register_rollback_func_for_ensure): catch up above change.
+ Add rollback mechanism API.
- * ext/socket/socket.c (Init_socket): small typo caused SEGV.
+ * vm_core.h (typedef struct rb_vm_struct): catch up above change.
+ Introduce ensure-rollback relation table.
-Tue Aug 12 16:02:18 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * vm_core.h (typedef struct rb_thread_struct): catch up above change.
+ Introduce ensure stack.
- * variable.c: option variables: $-0, $-p(readonly), $-v,
- $-I(load_path), $-a(readonly), $-K, $-d, $-F, $-i, $-l.
+ * eval.c (rb_ensure): catch up above change.
+ Introduce ensure stack.
- * parse.y (yylex): ignore rd (ruby document) in the code.
+ * hash.c : New function for rollback ensure, and register it to
+ ensure-rollback relation table. [ruby-dev:47803] [Bug #9105]
-Mon Aug 11 12:37:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ Ensure Rollback Mechanism:
+ A rollback's function is a function to rollback a state before ensure's
+ function execution.
+ When the jump of callcc is across the scope of rb_ensure,
+ ensure's functions and rollback's functions are executed appropriately
+ for keeping consistency.
- * re.c (Init_Regexp): $-K as alias to the $KCODE.
+ Current API is unstable, and only internal use.
- * io.c (Init_IO): new virtual variable $-i for the value of -i
- option.
+ ruby_register_rollback_func_for_ensure(ensure_func,rollback_func)
+ This API create relation ensure's function to rollback's function.
+ By registered rollback's function, it is executed When jumping into
+ corresponding rb_ensure scope.
- * enum.c (Init_Enumerable): include? as alias of member?
+Sat Nov 16 00:18:36 2013 Masaki Matsushita <glass.saga@gmail.com>
-Fri Aug 8 11:16:50 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * eval_jump.c (rb_exec_end_proc): fix double free or corruption error
+ when reentering by callcc. [ruby-core:58329] [Bug #9110]
- * io.c (io_foreach): now the record separator can be specified.
+ * test/ruby/test_beginendblock.rb: test for above.
- * io.c (io_s_readlines): new method to read in whole file (or
- command output) from path.
+Fri Nov 15 01:06:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/socket.c (Init_socket): recvfrom did not work.
+ * ext/objspace/objspace_dump.c (dump_output): allow IO object as
+ output, and use Tempfile.create and return open file instead of
+ mkstemp() and path name for :file output.
+ [ruby-core:58266] [Bug #9102]
- * ext/socket/socket.c (sock_send): forgot to check nil for false
- value.
+ * test/objspace/test_objspace.rb (TestObjSpace#dump_my_heap_please):
+ remove temporary output file.
+
+Thu Nov 14 23:39:00 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] remove example of
+ Rational#to_d without argument. [Bug #8958]
+
+Thu Nov 14 20:24:15 2013 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ruby_atomic.h (ATOMIC_SIZE_CAS): fix compile error on Solaris
+ since r43460.
+
+Thu Nov 14 19:53:00 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/openssl/test_cipher.rb (test_aes_gcm_wrong_tag): Don't use
+ String#succ because it can make modified (wrong) auth_tag longer
+ than 16 bytes. The longer auth_tag makes that
+ EVP_CIPHER_CTX_ctrl (and internally aes_gcm_ctrl) fail.
+ [ruby-core:55143] [Bug #8439] reported by Vit Ondruch.
+
+Thu Nov 14 11:33:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (foreach_safe_i, hash_foreach_iter): deal with error detected
+ by ST_CHECK.
+
+ * st.c (st_foreach_check): call with non-error argument in normal case.
+
+Thu Nov 14 02:37:14 2013 Zachary Scott <e@zzak.io>
+
+ * ext/thread/thread.c: [DOC] This patch accomplishes the following:
+
+ - Teach RDoc about ConditionVariable
+ - Teach RDoc about Queue
+ - Teach RDoc about SizedQueue
+ - Use fully-qualified namespace for Document-method
+ This is necessary to separate definitions between classes
+ - Fix rdoc bug in call_seq vs. call-seq
+ - Correct doc for SizedQueue#pop patch by @jackdanger [Bug #8988]
+
+Thu Nov 14 01:11:54 2013 Zachary Scott <e@zzak.io>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] +precision+ is required
+
+Wed Nov 13 19:21:36 2013 Zachary Scott <e@zzak.io>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] Document the required
+ +precision+ argument for Rational#to_d [Bug #8958]
+
+Wed Nov 13 19:02:05 2013 Zachary Scott <e@zzak.io>
+
+ * ext/digest/*: [DOC] Fix several typos and broken http links.
+ Improved examples for Digest overview and fixed a broken example in
+ Digest::HMAC overview. This patch also adds a description of
+ Digest::SHA256.bubblebabble to the Digest overview.
+
+ Patched by @stomar [Bug #9027]
+
+Wed Nov 13 18:32:12 2013 Zachary Scott <e@zzak.io>
+
+ * ext/openssl/ossl_config.c: [DOC] Document the following:
+
+ - OpenSSL::ConfigError
+ - OpenSSL::Config::DEFAULT_CONFIG_FILE
+
+ Patched by @vbatts via GH-436
+ https://github.com/ruby/ruby/pull/436
+
+Wed Nov 13 18:03:00 2013 Zachary Scott <e@zzak.io>
+
+ * ext/openssl/ossl_asn1.c: [DOC] Document parts of
+ OpenSSL::ASN1::ObjectId included a fix for the class overview, which
+ previously showed the documentation for Constructive due to missing
+ ObjectId overview. This patch also includes a note for Primitive.
+
+ Based on a patch by @vbatts via GH-436
+ https://github.com/ruby/ruby/pull/436
+
+Wed Nov 13 17:19:36 2013 Zachary Scott <e@zzak.io>
+
+ * ext/openssl/lib/openssl/config.rb: In #parse use +string+ for +str+
+
+Wed Nov 13 17:09:45 2013 Zachary Scott <e@zzak.io>
+
+ * ext/openssl/lib/openssl/*.rb: [DOC] Document the following:
+
+ - Integer#to_bn
+ - OpenSSL::Buffering module
+ - Deprecated OpenSSL::Digest::Digest compatibility class
+ - OpenSSL::Config
+
+ These changes were based on a patch by @vbatts via GH-436
+ https://github.com/ruby/ruby/pull/436
+
+Wed Nov 13 10:55:43 2013 Zachary Scott <e@zzak.io>
+
+ * doc/regexp.rdoc: [DOC] Fix typo in Special global variables section.
+ Reported by Alex Johnson on ruby-doc.org
+
+Wed Nov 13 10:43:19 2013 Zachary Scott <e@zzak.io>
+
+ * hash.c: [DOC] Adds an example for Hash#store
+
+Wed Nov 13 09:03:40 2013 Zachary Scott <e@zzak.io>
+
+ * doc/regexp.rdoc: [DOC] add note about Bug #4044 as suggested by
+ duerst-san in [ruby-core:43612] [Fixes GH-443] Patched by @rosenfeld
+ https://github.com/ruby/ruby/pull/443
+
+Tue Nov 12 10:15:14 2013 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/insure_session.rb: Remove unused test file.
+
+Tue Nov 12 09:16:24 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master b9213d7. Changes include:
+
+ Fixed tests on Windows (I hope) by forcing platform for
+ platform-dependent tests.
+
+ Fixed File.exists? warnings.
+
+ Improved testing infrastructure.
+
+ * test/rubygems: ditto.
+
+ * test/rdoc/test_rdoc_rubygems_hook.rb: Switch to util_spec like
+ RubyGems.
+
+Mon Nov 11 18:31:12 2013 Aman Gupta <ruby@tmm1.net>
+
+ * internal.h: move common string/hash flags to include file.
+ * ext/objspace/objspace_dump.c: remove flags shared above.
+ * hash.c: ditto.
+ * string.c: ditto.
+
+Mon Nov 11 04:36:14 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Include 2.2.0.preview.2 when checking
+ if extensions should be built. Fixes a ruby-ci failure.
+ * test/rubygems/test_gem_specification.rb: Test for the above.
+
+Mon Nov 11 03:15:56 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (symbol2event_flag): add secret feature.
+ add a_call/a_return events.
+ a_call is call | b_call | c_call, and same as a_return.
+
+Mon Nov 11 02:51:17 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 4bdc4f2. Important changes
+ in this commit:
+
+ RubyGems now chooses the test server port reliably. Patch by akr.
+
+ Partial implementation of bundler's Gemfile format.
+
+ Refactorings to improve the new resolver.
+
+ Fixes bugs in the resolver.
+
+ * test/rubygems: Tests for the above.
+
+Mon Nov 11 01:02:06 2013 Zachary Scott <e@zzak.io>
+
+ * lib/timeout.rb: [DOC] Add note about change from #8730 [Fixes GH-440]
+ * NEWS: [DOC] Improve grammar on change to Timeout
+ Patched by @srawlins in https://github.com/ruby/ruby/pull/440
+
+Sun Nov 10 23:47:05 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * gc.c (rb_gcdebug_print_obj_condition): catch up recent changes
+ to compile on GC_DEBUG.
+
+Sun Nov 10 22:16:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exc_cause): captured previous exception.
+
+ * eval.c (make_exception): capture previous exception automagically.
+ [Feature #8257]
+
+Sun Nov 10 08:37:20 2013 Zachary Scott <e@zzak.io>
+
+ * thread.c: [DOC] Remove duplicate reference
+
+Sun Nov 10 08:09:29 2013 Zachary Scott <e@zzak.io>
+
+ * lib/drb/drb.rb: [DOC] promote better windows-safe filename regular
+ expression in DRb Logger example. Reported by Chris Pheonix
+ [Bug #9074]
+
+Sun Nov 10 08:03:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_define_finalizer, rb_undefine_finalizer): rename and export
+ finalizer functions.
+
+Sun Nov 10 07:41:22 2013 Zachary Scott <e@zzak.io>
+
+ * lib/weakref.rb: [DOC] fix typos by @xaviershay [Fixes GH-439]
+ https://github.com/ruby/ruby/pull/439
+
+Sun Nov 10 06:14:39 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): emit opt_str_freeze if the #freeze
+ method is called on a static string literal with no arguments.
+
+ * defs/id.def (firstline): add freeze so idFreeze is available
+
+ * insns.def (opt_str_freeze): add opt_str_freeze instruction which
+ pushes a frozen string literal without allocating a new object if
+ String#freeze is not overridden
+
+ * string.c (Init_String): define String#freeze
+
+ * vm.c (vm_init_redefined_flag): define BOP_FREEZE on String class as
+ a basic operation
+
+ * vm_insnhelper.h: ditto
+
+ [Feature #8992] [ruby-core:57705]
+
+Sun Nov 10 01:34:14 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (vm_malloc_increase): sweep immediately on GC due to malloc().
+ To reduce memory usage, sweep as soon as possible.
+ This behavior is same as Ruby 2.0.0 and before.
+
+Sun Nov 10 00:39:26 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/gc/gcbench.rb: output version description and GC::OPTS.
+
+Sun Nov 10 00:36:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (should_be_callable): allow private call since rb_eval_cmd
+ calls even private methods.
+
+Sun Nov 10 00:33:17 2013 Zachary Scott <e@zzak.io>
+
+ * lib/racc/rdoc/grammar.en.rdoc: [DOC] fix typo by Tsuyoshi Sawada
+ [Bug #9077]
+
+Sat Nov 9 22:35:35 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (Gem::Specification.load): obtain spec date from
+ VCS for the case using git, RUBY_RELEASE_DATE is the last resort.
+ probably fixes [Bug #9085].
+
+Sat Nov 9 20:56:12 2013 Narihiro Nakamura <authornari@gmail.com>
+
+ * ext/objspace/object_tracing.c: use declarations in internal.h.
+
+ * ext/objspace/objspace.c: ditto
+
+Sat Nov 9 20:32:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/objspace/test_objspace.rb (test_dump_all): Make the test string
+ shorter to be an embedded string on 32bit environment as well as
+ 64bit environment.
+
+Sat Nov 9 15:00:16 2013 Zachary Scott <e@zzak.io>
+
+ * io.c: [DOC] ARGF.gets may return nil [Bug #9029] patch by znz
+
+Sat Nov 9 14:54:52 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rss/*: [DOC] document various constants @steveklabnik [Bug #8812]
+
+Sat Nov 9 14:50:09 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rss/rss.rb: [DOC] document Time#w3cdtf by @steveklabnik
+ [Bug #8821]
+
+Sat Nov 9 14:29:04 2013 Zachary Scott <e@zzak.io>
+
+ * ext/dl/cfunc.c: [DOC] fix typo in example [Bug #8944]
+ Patched by Heesob Park
+
+Sat Nov 9 13:59:58 2013 Zachary Scott <e@zzak.io>
+
+ * lib/test/unit/assertions.rb: [DOC] better example for assert_send()
+ Patch by Andrew Grimm [Bug #8975]
+
+Sat Nov 9 12:45:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * insns.def: unify ic_constant_serial and ic_class_serial into one field
+ ic_serial. This is possible because these fields are only ever used
+ exclusively with each other.
+
+ * insns.def: ditto
+ * vm_core.h: ditto
+ * vm_insnhelper.c: ditto
+
+Sat Nov 9 12:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * class.c: unify names of vm state version counters to 'serial'.
+ This includes renaming 'vm_state_version_t' to 'rb_serial_t',
+ 'method_state' to 'method_serial', 'seq' to 'class_serial',
+ 'vmstat' to 'constant_serial', etc.
+
+ * insns.def: ditto
+ * internal.h: ditto
+ * vm.c: ditto
+ * vm_core.h: ditto
+ * vm_insnhelper.c: ditto
+ * vm_insnhelper.h: ditto
+ * vm_method.c: ditto
+
+Sat Nov 9 09:22:29 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (gc_page_sweep, rgengc_rememberset_mark): Refactoring.
+ Get bitmaps directly.
+
+Sat Nov 9 09:16:36 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (RVALUE_PROMOTE_INFANT): Refactoring. Remove duplicated nonsense
+ code.
+
+Sat Nov 9 09:04:48 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (gc_marks_test): Bugfix. Fix a struct member name for build
+ with RGENGC_CHECK_MODE.
+
+Sat Nov 9 08:58:23 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c : Add GC_PROFILE_DETAIL_MEMORY option.
+ If GC_PROFILE_MORE_DETAIL && GC_PROFILE_DETAIL_MEMORY,
+ maxrss, minflt and majflt are added to each profile record.
+
+Sat Nov 9 07:41:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (rb_vm_backtrace_object, rb_gc_count): make prototype
+ declarations, not old-K&R style.
+
+Sat Nov 9 06:11:14 2013 vo.x (Vit Ondruch) <vondruch@redhat.com>
+
+ * tool/rbinstall.rb (Gem::Specification#collect): make stable
+ Gem::Specification.files in default .gemspecs the different order of
+ "files" in .gemspec files makes them different therefore possibly
+ conflicting in multilib scenario. patch by vo.x (Vit Ondruch) at
+ [ruby-core:57544] [Bug #8623].
+
+Sat Nov 9 01:59:18 2013 Aman Gupta <ruby@tmm1.net>
+
+ * ext/objspace/objspace_dump.c: Add experimental methods to
+ dump objectspace as json: ObjectSpace.dump_all and
+ ObjectSpace.dump(obj). These methods are useful for debugging
+ reference leaks and memory growth in large ruby applications.
+ [Bug #9026] [ruby-core:57893] [Fixes GH-423]
+ * test/objspace/test_objspace.rb: tests for above.
+
+Sat Nov 9 00:26:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (GetLastError): already defined in windows.h on nowadays
+ cygwin, and caused the confliction with the system provided
+ definition on cygwin64. by @kou1okada [Fixes GH-433].
+
+Fri Nov 8 18:35:31 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * lib/open3.rb: receive arguments as keyword arguments.
+
+Fri Nov 8 13:19:26 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * io.c (rb_io_open_with_args): use RARRAY_CONST_PTR().
+
+ * io.c (rb_scan_open_args): use const qualifier for above.
+
+ * io.c (rb_open_file): ditto.
+
+ * io.c (rb_io_open_with_args): ditto.
+
+Fri Nov 8 11:35:06 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * dir.c, pack.c, ruby.c, struct.c, vm_eval.c: use RARRAY_CONST_PTR().
+
+Fri Nov 8 10:58:02 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * compile.c (iseq_build_from_ary_exception): use RARRAY_CONST_PTR().
+
+ * compile.c (iseq_build_from_ary_body): ditto.
+
+Fri Nov 8 10:49:34 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * enumerator.c (append_method): use RARRAY_CONST_PTR().
+
+ * enumerator.c (lazy_init_iterator): ditto.
+
+Fri Nov 8 02:44:29 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (vm_malloc_increase): check GVL before gc_rest_sweep().
+ vm_malloc_increase() can be called without GVL.
+ However, gc_rest_sweep() assumes acquiring GVL.
+ To avoid this problem, check GVL before gc_rest_sweep().
+ [Bug #9090]
+
+ This workaround introduces possibility to set malloc_limit as
+ wrong value (*1). However, this may be rare case. So I commit it.
+
+ *1: Without rest_sweep() here, gc_rest_sweep() can decrease
+ malloc_increase due to ruby_sized_xfree().
+
+Fri Nov 8 02:50:25 2013 Zachary Scott <e@zzak.io>
+
+ * lib/securerandom.rb: [DOC] specify arguments passed to ::random_bytes
+ By @chastell [Fixes GH-412] https://github.com/ruby/ruby/pull/412
+
+Fri Nov 8 02:43:01 2013 Zachary Scott <e@zzak.io>
+
+ * ext/objspace/object_tracing.c: [DOC] trace_object_allocations_stop
+ By @srawlins [Fixes GH-421] https://github.com/ruby/ruby/pull/421
+
+Fri Nov 8 02:34:20 2013 Zachary Scott <e@zzak.io>
+
+ * lib/net/ftp.rb: [DOC] Document Net::FTP.mdtm and .set_socket and fix
+ spelling typo, based on patch by @artfuldodger [Fixes GH-426]
+ https://github.com/ruby/ruby/pull/426
+
+Fri Nov 8 02:14:37 2013 Zachary Scott <e@zzak.io>
+
+ * array.c: [DOC] Add note about negative indices in Array overview
+ By @ckaenzig [Fixes GH-427] https://github.com/ruby/ruby/pull/427
+
+Fri Nov 8 02:09:12 2013 Zachary Scott <e@zzak.io>
+
+ * lib/csv.rb: [DOC] Fix typo in CSV.parse_line by @funky-bibimbap
+ [Fixes GH-430] https://github.com/ruby/ruby/pull/430
+
+Fri Nov 8 01:01:54 2013 Zachary Scott <e@zzak.io>
+
+ * golf_prelude.rb: syntax formatting for whitespace [Fixes GH-425]
+ Patch by @edward https://github.com/ruby/ruby/pull/425
+
+Thu Nov 7 19:36:09 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: modify malloc_limit strategy.
+
+ * fix default values:
+ GC_MALLOC_LIMIT_GROWTH_FACTOR
+ GC_MALLOC_LIMIT: 8MB -> 16MB
+ GC_MALLOC_LIMIT_MAX: 384MB -> 32MB
+
+ * algorithm of malloc_limit increment.
+ if (malloc_increase < malloc_limit) {
+ next_malloc_limit = malloc_limit * factor
+ if (malloc_limit > malloc_limit_max) {
+ malloc_limit = malloc_increase
+ }
+ }
+ This algorithm change malloc_limit from
+ 16MB -> 32MB slowly.
+ If malloc_limit exceeds malloc_limit_max, then
+ increase with malloc_increase.
+
+Thu Nov 7 11:06:05 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_shuffle_bang): use RARRAY_PTR_USE() without WB
+ because there are not new relations.
+
+Thu Nov 7 10:34:12 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_sample): use rb_ary_dup().
+
+Thu Nov 7 09:39:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks_orig): errinfo should not
+ be propagated to trace blocks so that no argument raise does not
+ throw internal objects. [ruby-dev:47793] [Bug #9088]
+
+Wed Nov 6 21:30:55 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (gc_before_sweep): Change algorithm of malloc_limit to
+ conservative for closing to memory consumption of ruby 2.0.
+
+ * gc.c (GC_MALLOC_LIMIT, GC_MALLOC_LIMIT_GROWTH_FACTOR):
+ Adjust parameters for new algorithm.
+
+Wed Nov 6 21:16:51 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_shift_m): use RARRAY_PTR_USE() without WB because
+ there are not new relations.
+
+Wed Nov 6 21:05:20 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_reverse): use RARRAY_PTR_USE().
+
+Wed Nov 6 19:30:44 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * common.mk (help): add texts about gcbench.
+
+Wed Nov 6 16:32:32 2013 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * lib/open3.rb: tweaked grammar in comments
+
+Wed Nov 6 11:46:36 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_sample): use RARRAY_AREF() and RARRAY_PTR_USE()
+ instead of RARRAY_PTR().
+
+Wed Nov 6 10:37:07 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_and): defer hash creation and some refactoring.
+
+Wed Nov 6 09:14:31 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm1_gc_short_lived.rb: added.
+ These GC benchmarks do not reflect practical applications.
+ They are only for tuning.
+
+ * benchmark/bm_vm1_gc_short_with_complex_long.rb: added.
+
+ * benchmark/bm_vm1_gc_short_with_long.rb: added.
+
+ * benchmark/bm_vm1_gc_short_with_symbol.rb: added.
+
+ * benchmark/bm_vm1_gc_wb_ary.rb: added.
+
+ * benchmark/bm_vm1_gc_wb_obj.rb: added.
+
+ * benchmark/bm_vm_thread_queue.rb: added.
+ This benchmark is added to know how fast C version of thread.so.
+
+Wed Nov 6 09:13:32 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: define RGENGC_ESTIMATE_OLDSPACE == 0 if USE_RGENGC is 0.
+
+Wed Nov 6 07:13:18 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (Init_GC): add GC::OPTS to show options.
+
+Wed Nov 6 07:12:17 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/gc/gcbench.rb: add some options to make quiet.
+
+Wed Nov 6 04:14:25 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: process merge keys before
+ reviving objects. Fixes GH psych #168
+ * test/psych/test_merge_keys.rb: test for change
+ https://github.com/tenderlove/psych/issues/168
+
+Tue Nov 5 21:21:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_thread.rb (test_thread_join_in_trap):
+ Run the test in a different process.
+
+Tue Nov 5 20:14:32 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (is_live_object): A hidden object may be a live object.
+ [ruby-dev:47788] [Bug #9072]
+
+Tue Nov 5 13:37:19 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: add support to estimate increase of oldspace memory usage.
+ This is another approach to solve an issue discussed at r43530.
+ This feature is disabled as default.
+
+ This feature measures an increment of memory consumption by oldgen
+ objects. It measures memory consumption for each objects when
+ the object is promoted. However, measurement of memory consumption
+ is not accurate now. So that this measurement is `estimation'.
+
+ To implement this feature, move memsize_of() function from
+ ext/objspace/objspace.c and expose rb_obj_memsize_of().
+
+ Some memsize() functions for T_DATA (T_TYPEDDATA) have problem to
+ measure memory size, so that we ignores T_DATA objects now.
+ For example, some functions skip NULL check for pointer.
+
+ The macro RGENGC_ESTIMATE_OLDSPACE enables/disables this feature,
+ and turned off as default.
+
+ We need to compare 3gen GC and this feature carefully.
+ (it is possible to enable both feature)
+ We need a help to compare them.
+
+ * internal.h: expose rb_obj_memsize_of().
+
+ * ext/objspace/objspace.c: use rb_obj_memsize_of() function.
+
+ * cont.c (fiber_memsize): fix to check NULL.
+
+ * variable.c (autoload_memsize): ditto.
+
+ * vm.c (vm_memsize): ditto.
+
+Tue Nov 5 04:03:07 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (GC_MALLOC_LIMIT_MAX): fix default value 512MB -> 384MB.
+ 512MB is huge.
+
+Tue Nov 5 03:31:23 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: add 3gen GC patch, but disabled as default.
+
+ RGenGC is designed as 2 generational GC, young and old generation.
+ Young objects will be promoted to old objects after one GC.
+ Old objects are not collect until major (full) GC.
+
+ The issue of this approach is some objects can promoted as old
+ objects accidentally and not freed until major GC.
+ Major GC is not frequently so short-lived but accidentally becoming
+ old objects are not freed.
+
+ For example, the program "loop{Array.new(1_000_000)}" consumes huge
+ memories because short lived objects (an array which has 1M
+ elements) are promoted while GC and they are not freed before major
+ GC.
+
+ To solve this problem, generational GC with more generations
+ technique is known. This patch implements three generations gen GC.
+
+ At first, newly created objects are "Infant" objects.
+ After surviving one GC, "Infant" objects are promoted to "Young"
+ objects.
+ "Young" objects are promoted to "Old" objects after surviving
+ next GC.
+ "Infant" and "Young" objects are collected if it is not marked
+ while minor GC. So that this technique solves this problem.
+
+ Representation of generations:
+ * Infant: !FL_PROMOTED and !oldgen_bitmap [00]
+ * Young : FL_PROMOTED and !oldgen_bitmap [10]
+ * Old : FL_PROMOTED and oldgen_bitmap [11]
+
+ The macro "RGENGC_THREEGEN" enables/disables this feature, and
+ turned off as default because there are several problems.
+ (1) Failed sometimes (Heisenbugs).
+ (2) Performance down.
+ Especially on write barriers. We need to detect Young or Old
+ object by oldgen_bitmap. It is slower than checking flags.
+
+ To evaluate this feature on more applications, I commit this patch.
+ Reports are very welcome.
+
+ This patch includes some refactoring (renaming names, etc).
+
+ * include/ruby/ruby.h: catch up 3gen GC.
+
+ * .gdbinit: fix to show a prompt "[PROMOTED]" for promoted objects.
+
+Tue Nov 5 00:05:51 2013 Koichi Sasada <ko1@atdot.net>
+
+ * node.h: catch up comments for last commit.
+
+Tue Nov 5 00:02:00 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: rename FL_OLDGEN to FL_PROMOTED.
+ This flag represents that "this object is promoted at least once."
+
+ * gc.c, debug.c, object.c: catch up this change.
+
+Mon Nov 4 22:20:16 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/xmlrpc: Don't use fixed ports: 8070 and 8071.
+
+Mon Nov 4 15:25:52 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/xmlrpc/webrick_testing.rb (start_server): Initialize the server
+ at main thread to fail early.
+
+Mon Nov 4 10:08:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (TH_EXEC_TAG, TH_JUMP_TAG): get rid of undefined
+ behavior of setjmp() in rhs of assignment expression.
+ [ISO/IEC 9899:1999] 7.13.1.1
+
+Sun Nov 3 23:06:51 2013 Tanaka Akira <akr@fsij.org>
+
+ * sample/test.rb: Make temporary file names unique.
+
+Sun Nov 3 20:41:17 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/xmlrpc: Wrap definitions by TestXMLRPC module.
+
+Sun Nov 3 20:23:38 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/xmlrpc/webrick_testing.rb (stop_server): Don't try to shutdown
+ the server if the server is not started.
-Thu Aug 7 11:40:01 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Sun Nov 3 09:35:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c (Init_Object): remove private_attr/public_attr.
+ * load.c (rb_feature_p): deal with default loadable suffixes.
-Wed Aug 6 14:21:36 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * load.c (load_lock): initialize statically linked extensions.
- * object.c (mod_attr): forgot to check nil for false value.
+ * load.c (search_required, rb_require_safe): deal with statically
+ linked extensions.
-Mon Aug 4 11:50:28 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * load.c (ruby_init_ext): defer initialization of statically linked
+ extensions until required actually. [Bug #8883]
- * variable.c (rb_class_path): scan class constants for anonymous
- classes/modules to make up pathes.
+Sat Nov 2 15:14:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jul 30 08:45:12 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * lib/logger.rb (Logger::LogDevice::LogDeviceMutex#lock_shift_log):
+ open file can't be removed or renamed on Windows. [ruby-dev:47790]
+ [Bug #9046]
- * eval.c (rb_eval): stop to cache const value in nodes.
+ * test/logger/test_logger.rb (TestLogDevice#run_children): don't use
+ fork.
-Sat Jul 26 03:17:22 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+Sat Nov 2 07:08:43 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * numeric.c (flo_to_s): wrong .0 at end.
+ * lib/logger.rb: Inter-process locking for log rotation
+ Current implementation fails log rotation on multi process env.
+ by sonots <sonots@gmail.com>
+ https://github.com/ruby/ruby/pull/428 fix GH-428 [Bug #9046]
-Sat Jul 26 00:36:36 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+Fri Nov 1 23:24:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (error_print): always print exception type in the
- toplevel exception handler.
+ * gc.c (wmap_mark_map): mark live objects only, but delete zombies.
+ [ruby-dev:47787] [Bug #9069]
- * string.c (str_hash): wrong hash value.
+Fri Nov 1 22:45:54 2013 Masaya Tarui <tarui@ruby-lang.org>
-Thu Jul 24 11:05:51 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+ * gc.c (struct heap_page, gc_page_sweep, gc_sweep): Refactoring for
+ performance. Add before_sweep condition to heap_page structure.
- * string.c (uscore_get): proper error message for unset $_.
+ * gc.c (rb_gc_force_recycle): Use before_sweep member.
-Wed Jul 23 09:56:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * gc.c (heap_is_before_sweep, is_before_sweep): Remove. They have not
+ already been used.
- * object.c (obj_methods): returns list of method names of the
- specified object.
+Fri Nov 1 22:20:28 2013 Masaya Tarui <tarui@ruby-lang.org>
- * class.c (mod_instance_methods): returns list of method names of
- the class instnace.
+ * gc.c (make_deferred): Refactoring. Collect codes which should be
+ atomic.
-Fri Jul 11 22:38:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * gc.c (make_io_deferred, obj_free, rb_objspace_call_finalizer,
+ gc_page_sweep): Correspond to the above.
- * object.c (class_superclass): returns class's superclass
- itself. (1.1)
+Fri Nov 1 21:40:35 2013 Masaya Tarui <tarui@ruby-lang.org>
- * object.c (obj_type): returns object's class itself. (1.1)
+ * gc.c (typedef struct rb_objspace): Refactoring. Move some members
+ into profile member.
- * class.c (mod_included_modules): list included modules.
+ * gc.c (newobj_of): Correspond to the above.
- * object.c (class_superclass): raises error for Object.
+ * gc.c (finalize_list): Ditto.
-Thu Jul 3 09:54:02 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * gc.c (objspace_live_num): Ditto.
- * eval.c (SETUP_ARGS): save source position, remove nd_line().
+ * gc.c (gc_page_sweep): Ditto.
- * eval.c (rb_call): replace modulo by bit-masking.
+ * gc.c (rb_gc_force_recycle): Ditto.
- * eval.c (POP_SCOPE): force recycle scope object to reduce gc rate.
+ * gc.c (garbage_collect_body): Ditto.
- * gc.c (obj_free): aboid calling run_final() when no finalizer is set.
+ * gc.c (rb_gc_count): Ditto.
- * eval.c (PUSH_VARS): do not allocate the dynamic scope's end-mark
- object.
+ * gc.c (gc_stat): Ditto.
-Wed Jul 2 14:25:07 1997 KIMURA Koichi <kkimura@pure.cpdc.canon.co.jp>
+ * gc.c (gc_prof_set_heap_info): Ditto.
- * Native mswin32 support.
+ * gc.c (gc_profile_dump_on): Ditto.
-Tue Jul 1 09:59:00 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Nov 1 20:53:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 1.0-970701
+ * string.c (rb_str_scrub): fix typo, should yield invalid byte
+ sequence to be scrubbed. reported by znz at IRC.
- * parse.y (mrhs): allow rest-star(*) in right hand side.
+Fri Nov 1 17:25:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Jun 24 19:04:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * gc.c (is_live_object): finalizer may not run because of lazy-sweep.
+ [ruby-dev:47786] [Bug #9069]
- * version 1.0-970624
+Fri Nov 1 16:55:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jun 20 22:22:51 1997 Michio "Karl" Jinbo <karl@marcer.nagaokaut.ac.jp>
+ * string.c (rb_str_scrub): export with fixed length arguments, and
+ allow nil as replacement string instead of omitting.
- * eval.c: freebsd 3.0 <sys/select.h> support.
+Fri Nov 1 06:20:44 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Jun 20 01:24:45 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread.c (rb_mutex_struct): reduce rb_mutex_t size by 8 bytes
+ on 64bit platform. Patch by Eric Wong. [Feature #9068][ruby-core:58114]
- * version 1.0-970620
+Fri Nov 1 01:08:33 2013 Koichi Sasada <ko1@atdot.net>
- * gc.c: eliminate uninitilalized field of Hash, Array etc., to
- avoid dumping core.
+ * benchmark/gc/gcbench.rb: print HWM (high water mark) if possible.
-Thu Jun 19 01:29:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Oct 31 21:48:31 2013 Kouhei Sutou <kou@cozmixng.org>
- * version 1.0-970619
+ * lib/rexml/parsers/streamparser.rb: Add dependency file require.
+ [Bug #9062] [ruby-dev:47779]
+ Reported by Ippei Obayashi. Thanks!!!
- * string.c (str_split_method): wrong limit.
+Thu Oct 31 14:09:32 2013 Koichi Sasada <ko1@atdot.net>
-Sat Jun 14 01:54:16 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * vm_method.c (rb_method_entry_make): fix to pass an ISeq value.
+ OBJ_WRITTEN() accepts only VALUE.
- * class.c (rb_singleton_class): no singleton for special
- constants (now raises exception).
+Wed Oct 30 19:07:57 2013 Akinori MUSHA <knu@iDaemons.org>
- * eval.c (ruby_init): cbase in TOPLEVEL_BINDING need to be
+ * misc/ruby-additional.el (ruby-brace-to-do-end)
+ (ruby-do-end-to-brace, ruby-toggle-block): Remove functions that
+ are already in the latest released version of Emacs (24.3).
+ [Bug #7565]
+
+Wed Oct 30 12:44:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): add missing variables,
+ PLATFORM_DIR and THREAD_MODEL.
+
+Wed Oct 30 12:20:32 2013 Tanaka Akira <akr@fsij.org>
+
+ * time.c (v2w): Normalize a rational value to an integer if possible.
+ [ruby-core:58070] [Bug #9059] reported by Isaac Schwabacher.
+
+Wed Oct 30 12:08:41 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_uniq_bang): use rb_ary_modify_check() instead of
+ rb_ary_modify() because the array will be unshared soon.
+
+Wed Oct 30 03:25:10 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: make less garbage when
+ testing if a string is binary.
+
+Wed Oct 30 03:08:24 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: string subclasses should
+ not be considered to be binary. Fixes Psych / GH 166
+ https://github.com/tenderlove/psych/issues/166
+
+ * test/psych/test_string.rb: test for fix
+
+Tue Oct 29 23:01:18 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_zip): some refactoring.
+
+Tue Oct 29 22:11:37 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_uniq_bang): use st_foreach() instead of for loop.
+
+Tue Oct 29 20:01:58 2013 Koichi Sasada <ko1@atdot.net>
+
+ * add RUBY_TYPED_FREE_IMMEDIATELY to data types which only use
+ safe functions during garbage collection such as xfree().
+
+ On default, T_DATA objects are freed at same points as finalizers.
+ This approach protects issues such as reported by [ruby-dev:35578].
+ However, freeing T_DATA objects immediately helps heap usage.
+
+ Most of T_DATA (in other words, most of dfree functions) are safe.
+ However, we turned off RUBY_TYPED_FREE_IMMEDIATELY by default
+ for safety.
+
+ * cont.c: ditto.
+
+ * dir.c: ditto.
+
+ * encoding.c: ditto.
+
+ * enumerator.c: ditto.
+
+ * error.c: ditto.
+
+ * file.c: ditto.
+
+ * gc.c: ditto.
+
+ * io.c: ditto.
+
+ * iseq.c: ditto.
+
+ * marshal.c: ditto.
+
+ * parse.y: ditto.
+
+ * proc.c: ditto.
+
+ * process.c: ditto.
+
+ * random.c: ditto.
+
+ * thread.c: ditto.
+
+ * time.c: ditto.
+
+ * transcode.c: ditto.
+
+ * variable.c: ditto.
+
+ * vm.c: ditto.
+
+ * vm_backtrace.c: ditto.
+
+ * vm_trace.c: ditto.
+
+ * ext/bigdecimal/bigdecimal.c: ditto.
+
+ * ext/objspace/objspace.c: ditto.
+
+ * ext/stringio/stringio.c: ditto.
+
+ * ext/strscan/strscan.c: ditto.
+
+Tue Oct 29 19:48:33 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: fix typo (FL_WB_PROTECT -> FL_WB_PROTECTED).
+
+Tue Oct 29 18:45:08 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (tp_free): removed because empty free function.
+ Use RUBY_TYPED_NEVER_FREE instead.
+
+Tue Oct 29 18:37:33 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: introduce new flags for T_TYPEDDATA.
+ * RUBY_TYPED_FREE_IMMEDIATELY: free the data given by DATA_PTR()
+ with dfree function immediately. Otherwise (default), the data
+ freed at finalization point.
+ * RUBY_TYPED_WB_PROTECTED: make this object with FL_WB_PROTECT
+ (not shady).
+
+ * gc.c (obj_free): support RUBY_TYPED_FREE_IMMEDIATELY.
+
+Tue Oct 29 16:49:03 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (vm_malloc_increase): decrease it more carefully.
+
+Tue Oct 29 16:24:52 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (heap_page_resurrect): return a page in tomb heap even if
+ freelist is NULL.
+
+Tue Oct 29 15:46:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby_atomic.h (ATOMIC_SIZE_CAS): new macro, compare and swap size_t.
+
+Tue Oct 29 12:08:05 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/readline/readline.c (readline_getc): Consider
+ NULL as input.
+
+Tue Oct 29 11:10:08 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (gc_profile_total_time): fix off-by-one error in
+ GC::Profiler.total_time.
+ * test/ruby/test_gc.rb (class TestGc): test for above.
+
+Tue Oct 29 09:53:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * insns.def, vm.c, vm_insnhelper.c, vm_insnhelper.h, vm_method.c: split
+ ruby_vm_global_state_version into two separate counters - one for the
+ global method state and one for the global constant state. This means
+ changes to constants do not affect method caches, and changes to
+ methods do not affect constant caches. In particular, this means
+ inclusions of modules containing constants no longer globally
+ invalidate the method cache.
+
+ * class.c, eval.c, include/ruby/intern.h, insns.def, vm.c, vm_method.c:
+ rename rb_clear_cache_by_class to rb_clear_method_cache_by_class
+
+ * class.c, include/ruby/intern.h, variable.c, vm_method.c: add
+ rb_clear_constant_cache
+
+ * compile.c, vm_core.h, vm_insnhelper.c: rename vmstat field in
+ rb_call_info_struct to method_state
+
+ * vm_method.c: rename vmstat field in struct cache_entry to method_state
+
+Mon Oct 28 23:26:04 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/readline/test_readline.rb (teardown): Clear Readline.input and
+ Readline.output.
+
+Mon Oct 28 21:35:31 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/-test-/file/depend, ext/-test-/postponed_job/depend,
+ ext/-test-/tracepoint/depend: New files for dependencies.
+
+Mon Oct 28 15:32:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/depend (ossl.o): work around of dependency of
+ thread_native.h, which depends on headers by THREAD_MODEL.
+ [ruby-dev:47777]
+
+ * ext/openssl/extconf.rb: need THREAD_MODEL.
+
+Mon Oct 28 14:57:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (ruby_init_ext): share feature names between frame name and
+ provided features.
+
+Mon Oct 28 14:41:27 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el: Import ruby-electric.el 2.1 from
+ https://github.com/knu/ruby-electric.el.
+
+ * Hitting the newline-and-indent key within a comment fires
+ comment-indent-new-line.
+
+ * Introduce a new feature
+ `ruby-electric-autoindent-on-closing-char`.
+
+ * Fix fallback behavior of ruby-electric-space/return that
+ caused error with auto-complete.
+
+Mon Oct 28 13:17:17 2013 Or Cohen <orc@fewbytes.com>
+
+ * error.c (name_err_to_s): remove no longer needed overriding, since
+ r30455 which made exc_to_s almost same. Fixes [GH-413].
+
+Mon Oct 28 12:42:11 2013 Tanaka Akira <akr@fsij.org>
+
+ * common.mk, ext/objspace/depend, ext/coverage/depend,
+ ext/-test-/debug/depend, ext/date/depend: Update dependencies.
+
+Mon Oct 28 09:29:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * vm.c: vm_clear_all_cache is not necessary now we use a 64 bit counter
+ for global state version.
+
+ * vm_insnhelper.h: ruby_vm_global_state_version overflow is unnecessary
+
+Mon Oct 28 07:47:32 2013 Aman Gupta <ruby@tmm1.net>
+
+ * vm_backtrace.c (rb_profile_frame_classpath): do not use rb_inspect
+ directly, since it might have a custom implementation or show ivars.
+
+Mon Oct 28 04:10:41 2013 Aman Gupta <ruby@tmm1.net>
+
+ * vm_backtrace.c (rb_profile_frame_classpath): handle singleton
+ methods defined directly on an object.
+ * test/-ext-/debug/test_profile_frames.rb: test for above.
+
+Mon Oct 28 00:52:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (new_struct): fix warning message, class name and encoding.
+
+Sun Oct 27 20:53:08 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/readline/readline.c: Include ruby/thread.h for
+ rb_thread_call_without_gvl2.
+ (readline_rl_instream, readline_rl_outstream): Record FILE
+ structures allocated by this extension.
+ (getc_body): New function extracted from readline_getc.
+ (getc_func): New function.
+ (readline_getc): Use rb_thread_call_without_gvl2 to invoke getc_func.
+ [ruby-dev:47033] [Bug #8749]
+ (clear_rl_instream, clear_rl_outstream): Close FILE structure
+ allocated by this extension reliably. [ruby-core:57951] [Bug #9040]
+ (readline_readline): Use clear_rl_instream and clear_rl_outstream.
+ (readline_s_set_input): Set readline_rl_instream.
+ (readline_s_set_output): Set readline_rl_outstream.
+ (Init_readline): Don't call readline_s_set_input because
+ readline_getc doesn't block other threads for any FILE structure now.
+
+ [ruby-dev:47033] [Bug #8749] reported by Nobuhiro IMAI.
+ [ruby-core:57951] [Bug #9040] reported by Eamonn Webster.
+
+Sat Oct 26 19:31:28 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * gc.c: catch up recent changes to compile on GC_DEBUG,
+ RGENGC_CHECK_MODE.
+
+Sat Oct 26 19:08:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_initialize_copy): disallow to modify after
initialized.
-Sat Jun 14 01:01:16 1997 maeda shugo <shugo@po.aianet.ne.jp>
+Sat Oct 26 17:48:54 2013 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (meta_add_field): : Re-implemented.
+ [ruby-core:58017] [Bug #9051] patch by Eamonn Webster.
+
+Sat Oct 26 14:35:09 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_profile_dump_on): use "Page" terminology.
+
+Sat Oct 26 13:25:45 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_sweep, gc_heap_lazy_sweep): fix measurement code.
+ We only need one sweep time measurement without lazy sweep.
+
+Sat Oct 26 11:59:13 2013 Tanaka Akira <akr@fsij.org>
+
+ * addr2line.c: Include ELF header after system headers (especially
+ sys/types.h) to avoid compilation failure,
+ "usr/include/sh3/elf_machdep.h:4:2: error: #error Define _BYTE_ORDER!",
+ on NetBSD/sh3 (dreamcast, hpcsh, landisk, mmeye).
+
+Sat Oct 26 11:35:22 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: tuning parameters.
+
+ * gc.c (GC_MALLOC_LIMIT): change default value to 16MB.
+
+ * gc.c (GC_MALLOC_LIMIT_GROWTH_FACTOR): change default value to 2.0.
+
+ * gc.c (gc_before_sweep): change decrease ratio of `malloc_limit'
+ from 1/4 to 1/10.
+
+Sat Oct 26 11:30:07 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (vm_malloc_increase): do gc_rest_sweep() before GC.
+ gc_rest_sweep() can reduce malloc_increase, so try it before GC.
+ Otherwise, malloc_increase can be less than malloc_limit at
+ gc_before_sweep(). This means that re-calculation of malloc_limit
+ may be wrong value.
+
+Sat Oct 26 06:35:41 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (gc_before_heap_sweep): Restructure code to mean clearly.
+ heap->freelist is connected to end of list.
+
+Sat Oct 26 04:01:35 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_before_heap_sweep): fix freelist management.
+ After rb_gc_force_recycle() for a object belonging to heap->freelist,
+ `heap->using_page->freelist' is not null.
+
+Thu Oct 24 21:57:24 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * parse.y: Remove +(binary) and -(binary) special cases
+ [Feature #9048]
+
+Thu Oct 24 12:45:53 2013 Zachary Scott <e@zzak.io>
+
+ * object.c: [DOC] Document first argument also takes string for:
+
+ rb_mod_const_get, rb_mod_const_set, rb_mod_const_defined
+
+ Also added note about NameError exception for invalid constant name
+
+Thu Oct 24 12:23:58 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_terminate_all): add a comment why we need
+ state check and call terminate_i again.
+
+Thu Oct 24 12:15:02 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_terminate_all): add a comment why infinite
+ sleep is safe.
+
+Thu Oct 24 07:41:42 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c: add new initial_growth_max tuning parameter.
+ [ruby-core:57928] [Bug #9035]
+ * gc.c (heap_set_increment): when initial_growth_max is set,
+ do not grow number of slots by more than growth_max at a time.
+ * gc.c (rb_gc_set_params): load optional new tuning value from
+ RUBY_HEAP_SLOTS_GROWTH_MAX environment variable.
+ * test/ruby/test_gc.rb (class TestGc): test for above.
+
+Thu Oct 24 01:34:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (rb_infinity_float): suppress overflow in
+ constant arithmetic warnings. [ruby-core:57981] [Bug #9044]
+
+Thu Oct 24 00:11:24 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/ostruct.rb: raise NoMethodError with a #name and #args.
+ Raise RuntimeError when modifying frozen instances
+ instead of TypeError.
+ (OpenStruct#each_pair): Return an enumerator with size
+ (OpenStruct#delete): Use the converted argument.
+ Patches by Kenichi Kamiya. [Fixes GH-383]
+
+ * test/ostruct/test_ostruct.rb: Added tests for above.
+
+Thu Oct 24 00:10:22 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c: Add Array#to_h [Feature #7292]
+
+ * enum.c: Add Enumerable#to_h
+
+Wed Oct 23 23:48:28 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c: Rename free_min to min_free_slots and free_min_page to
+ max_free_slots. The algorithm for heap growth is:
+ if (swept_slots < min_free_slots) pages++
+ if (swept_slots > max_free_slots) pages--
+
+Wed Oct 23 22:51:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): VC 2013 supports C99 mathematics
+ functions. [ruby-core:57981] [Bug #9044]
+
+Wed Oct 23 19:13:18 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: move increment from heap to heap_pages.
+ Share `increment' information with heaps.
+
+ * gc.c: change ratio of heap_pages_free_min_page
+ to 0.80.
+ This change means slow down page freeing speed.
+
+Wed Oct 23 17:52:03 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (heap_pages_free_unused_pages): cast to (int) for size_t
+ variable `i'.
+
+Wed Oct 23 17:39:35 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: introduce tomb heap.
+ Tomb heap is where zombie objects and ghost (freed slot) lived in.
+ Separate from other heaps (now there is only eden heap) at sweeping
+ helps freeing pages more efficiently.
+ Before this patch, even if there is an empty page at former phase
+ of sweeping, we can't free it.
+
+ Algorithm:
+ (1) Sweeping all pages in a heap and move empty pages from the
+ heap to tomb_heap.
+ (2) Check all existing pages and free a page
+ if all slots of this page are empty and
+ there is enough empty slots (checking by swept_num)
+
+ To introduce this patch, there are several tuning of GC parameters.
+
+Wed Oct 23 14:20:56 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_prof_sweep_timer_stop): catch up recent changes
+ to compile on GC_PROFILE_MORE_DETAIL=1.
+
+Wed Oct 23 11:43:27 2013 Zachary Scott <e@zzak.io>
+
+ * file.c: [DOC] fix rdoc format of File#expand_path from r43386
+
+Tue Oct 22 21:58:28 2013 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm_core.h (enum): avoid syntax error.
+
+ * method.h: ditto.
+
+ * internal.h: ditto.
+
+Tue Oct 22 19:53:16 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (Init_heap): move logics from heap_pages_init() and remove
+ heap_pages_init().
+
+Tue Oct 22 19:19:05 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: allow multiple heaps.
+ Now, objects are managed by page. And a set of pages is called heap.
+ This commit supports multiple heaps in the object space.
+
+ * Functions heap_* and rb_heap_t manages heap data structure.
+ * Functions heap_page_* and struct heap_page manage page data
+ structure.
+ * Functions heap_pages_* and struct rb_objspace_t::heap_pages
+ maintains all pages.
+ For example, pages are allocated from the heap_pages.
+
+ See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/GC_design
+ and https://bugs.ruby-lang.org/attachments/4015/data-heap_structure_with_multiple_heaps.png
+ for more details.
+
+ Now, there is only one heap called `eden', which is a space for all
+ new generated objects.
+
+Tue Oct 22 18:26:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (object_address_group): Use Kernel#to_s to obtain the class
+ name and object address.
+ This fix a problem caused by %p in C generates variable length
+ address.
+ Reported by ko1 via IRC.
+
+Tue Oct 22 16:57:48 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * file.c (File#expand_path): [DOC] improve documentation of File#expand_path.
+ Based on patch by Prathamesh Sonpatki. [ruby-core:57734] [Bug #9002]
+
+Tue Oct 22 15:59:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): don't skip current directories if FNM_DOTMATCH
+ is given. [ruby-core:53108] [Bug #8006]
+
+Tue Oct 22 14:53:11 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: exterminate Zombies.
+ There is a bug that T_ZOMBIE objects are not collected.
+ Because there is a pass to miss finalizer postponed job
+ with multi-threading. This patch solve this issue.
+
+ * vm_trace.c (rb_postponed_job_register_one): set
+ RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(th) if another same job
+ is registered.
+ There is a possibility to remain a postponed job without
+ interrupt flag.
+
+ * vm_trace.c (rb_postponed_job_register_one): check interrupt
+ carefully.
+
+ * vm_trace.c (rb_postponed_job_register_one): use additional space
+ to avoid buffer full.
+
+ * gc.c (gc_finalize_deferred_register): check failure.
+
+ * thread.c (rb_threadptr_execute_interrupts): check
+ `postponed_job_interrupt' immediately. There is a possibility
+ to miss this flag.
+
+Tue Oct 22 12:11:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check if the given CFLAGS and LDFLAGS are working, and
+ bail out early if not.
+
+Tue Oct 22 00:06:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_exists_p): warn deprecated name. [Bug #9041]
+
+Mon Oct 21 23:57:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (load_encoding): should preserve outer errinfo, so that
+ expected exception may not be lost. [ruby-core:57949] [Bug #9038]
+
+Sun Oct 20 15:41:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_reopen): create a new, temporary FD via rb_sysopen and
+ call rb_cloexec_dup2 on it to atomically replace the file fptr->fd
+ points to. This leaves no possible window where fptr->fd is invalid
+ to userspace (even for any threads running w/o GVL). based on the
+ patch by Eric Wong <normalperson@yhbt.net> at [ruby-core:57943].
+ [Bug #9036]
+
+Sun Oct 20 15:29:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_syserr_fail_path_in): new function split from
+ rb_sys_fail_path_in to raise SystemCallError without errno.
+
+ * internal.h (rb_syserr_fail_path): like rb_sys_fail_path but without
+ errno.
+
+Sun Oct 20 13:58:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_obj_wb_unprotect, rb_obj_written),
+ (rb_obj_write): suppress unused-parameter warnings.
+
+Sun Oct 20 10:32:48 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update RubyGems to master 0886307. This commit
+ improves documentation and should bring ruby above 75% documented on
+ rubyci.
+
+Sun Oct 20 09:30:56 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 3de7e0f. Changes:
+
+ Only attempt to build extensions for newly-installed gems. This
+ prevents compilation attempts at gem activation time for gems that
+ already have extensions built.
+
+ Fix crash in the dependency resolver for dependencies that cannot be
+ resolved.
+
+ * test/rubygems: ditto.
+
+Sun Oct 20 05:24:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_class2name): should return real class name, not
+ singleton class or iclass.
+
+Sun Oct 20 04:18:48 2013 Aman Gupta <ruby@tmm1.net>
+
+ * variable.c (rb_class2name): call rb_tmp_class_path() directly to
+ avoid extra rb_str_dup() from rb_class_name().
+
+Sat Oct 19 19:59:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/file.c (code_page): use simple array instead of st_table.
+
+ * encoding.c (rb_locale_encindex): defer initialization of win32 code
+ page table until encoding db loaded.
+
+Sat Oct 19 08:25:05 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: fix rb_objspace_t.
+ * make "struct heap" and move most of variables
+ in rb_objspace_t::heap.
+ * rename rb_objspace_t::heap::sorted to
+ rb_objspace_t::heap_sorted_pages
+ and make a macro heap_sorted_pages.
+ * rename rb_objspace_t::heap::range to
+ rb_objspace_t::heap_range and rename macros
+ lomem/himem to heap_lomem/heap_himem.
+
+Sat Oct 19 07:14:40 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 42543b6. Changes:
+
+ Fix `gem update` for gems with multiple platforms.
+
+ * test/rubygems: ditto.
+
+Sat Oct 19 06:55:52 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 0a3814b. Changes:
+
+ Fixed extension directory in Gem::Specification#require_paths.
+
+ Allow installation of gems when $HOME is nonexistent or unwritable.
+
+ Use proper API in InstallCommand.
+
+ Improve support for path option in gem dependency files.
+
+ Remove warnings.
+
+ * test/rubygems: ditto.
+
+Fri Oct 18 15:23:34 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: change terminology of heap.
+ Change "slot" to "page". "Slot" is a space of RVALUE.
+ 1. "Heap" consists of a set of "heap_page"s (pages).
+ 2. Each "heap_page" has "heap_page_body".
+ 3. "heap_page_body" has RVALUE (a.k.a. "slot") spaces.
+ 4. "sorted" is a sorted array of "heap_page"s, sorted
+ by address of heap_page_body (for "is_pointer_to_heap").
+
+ See https://bugs.ruby-lang.org/attachments/4008/data-heap_structure.png.
+
+Fri Oct 18 09:40:43 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master cee6788. Changes:
+
+ Fix test failure on vc10-x64 Server on rubyci.org due to attempting
+ to File.chmod where it is not supported.
+
+ Continuing work on improved gem dependencies file (Gemfile) support.
+
+ * test: ditto.
+
+Fri Oct 18 06:02:49 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master f738c67. Changes:
+
+ Fixed test bug for ruby with ENABLE_SHARED = no
+
+ * test/rubygems: ditto.
+
+Fri Oct 18 00:57:07 2013 Tanaka Akira <akr@fsij.org>
+
+ * lib/tsort.rb (TSort.tsort): Extracted from TSort#tsort.
+ (TSort.tsort_each): Extracted from TSort#tsort_each.
+ (TSort.strongly_connected_components): Extracted from
+ TSort#strongly_connected_components.
+ (TSort.each_strongly_connected_component): Extracted from
+ TSort#each_strongly_connected_component.
+
+Thu Oct 17 18:50:08 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (CALC_EXACT_MALLOC_SIZE_CHECK_OLD_SIZE): introduced.
+ This macro enable checker compare with allocated memory and
+ declared old_size of sized_xfree and sized_xrealloc.
+
+Thu Oct 17 18:45:41 2013 Koichi Sasada <ko1@atdot.net>
+
+ * string.c (STR_HEAP_SIZE): includes TERM_LEN(str).
+
+ * string.c (rb_str_memsize): use STR_HEAP_SIZE().
+
+Thu Oct 17 17:43:00 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): set ci->me to 0 when the
+ original method of a refined method is undef to avoid SEGV.
+
+ * vm_method.c (rb_method_entry_without_refinements): return 0 when
+ the original method of a refined method is undef to avoid SEGV.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Thu Oct 17 17:38:36 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, internal.h: rename ruby_xsizefree/realloc to
+ rb_sized_free/realloc.
+
+ * array.c: catch up these changes.
+
+ * string.c: ditto.
+
+Thu Oct 17 17:32:51 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c, string.c: use ruby_xsizedfree() and ruby_xsizedrealloc().
+
+ * internal.h (SIZED_REALLOC_N): define a macro as REALLOC_N().
+
+Thu Oct 17 17:11:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (console_emulator_p): check by comparison between
+ module handle of WriteConsoleW and kernel32.dll.
+
+ * configure.in, win32/Makefile.sub, win32/setup.mak: no longer need
+ psapi.lib.
+
+Thu Oct 17 16:53:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, internal.h: add new internal memory management functions.
+ * void *ruby_xsizedrealloc(void *ptr, size_t new_size, size_t old_size)
+ * void ruby_xsizedfree(void *x, size_t size)
+ These functions accept additional size parameter to calculate more
+ accurate malloc_increase parameter which control GC timing.
+ [Feature #8985]
+
+Thu Oct 17 14:21:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/file.c (rb_file_expand_path_internal): fix memory leaks at
+ a non-absolute home exception.
+
+Thu Oct 17 14:06:39 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/object_tracing.c (newobj_i): fix memory leak.
+ There is possibility to remain info due to missing FREEOBJ event.
+ FREEOBJ events are skipped while suppress_tracing state, for example,
+ during trace events are invoking.
+
+Thu Oct 17 12:30:16 2013 Tanaka Akira <akr@fsij.org>
+
+ * lib/tsort.rb (TSort.each_strongly_connected_component_from):
+ Extracted from TSort#each_strongly_connected_component_from.
+
+Thu Oct 17 11:07:06 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 941c21a. Changes:
+
+ Restored method bundler wants to remove for compatibility.
+
+ Improvements to Gemfile compatibility.
+
+ * test/rubygems: ditto.
+
+Thu Oct 17 08:08:11 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/object_tracing.c (newobj_i): add workaround.
+ some bugs hits this check.
+
+ * ext/objspace/object_tracing.c (object_allocations_reporter_i): cast as pointer.
+
+Thu Oct 17 07:36:53 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 2abce58. Changes:
+
+ Fixed documentation generation when sdoc and json are installed as
+ gems.
+
+ Added some missing documentation.
+
+Thu Oct 17 07:10:26 2013 Zachary Scott <e@zzak.io>
+
+ * ext/curses/curses.c: [DOC] Cleaned up formatting consistency of rdoc
+ comments for Curses, including period spacing and column width.
+
+ This patch also fixed some typos. Thanks to @postmodern for the patch!
+ [Fixes GH-420] https://github.com/ruby/ruby/pull/420
+
+Thu Oct 17 06:58:42 2013 Zachary Scott <e@zzak.io>
+
+ * ext/date/date_core.c: [DOC] plural grammar fixed by @scott113341
+ Contributed via documenting-ruby.org: documenting-ruby/ruby#16
+ https://github.com/documenting-ruby/ruby/pull/16
+
+Thu Oct 17 05:52:31 2013 Zachary Scott <e@zzak.io>
+
+ * ext/io/nonblock/nonblock.c: [DOC] Document io/nonblock by reprah
+ [Fixes GH-418] https://github.com/ruby/ruby/pull/418 based on the
+ original discussion from documenting-ruby/ruby#18
+
+Thu Oct 17 05:40:33 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (objspace_each_objects): do not skip empty RVALUEs.
+
+Thu Oct 17 05:31:31 2013 Koichi Sasada <ko1@atdot.net>
+
+ * error.c (rb_bug_reporter_add): return simply 0 if failed.
+ Please check return value.
+
+Thu Oct 17 05:17:33 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/object_tracing.c: add new method
+ ObjectSpace.trace_object_allocations_debug_start for GC debugging.
+ If you encounter the BUG "... is T_NONE" (and so on) on your
+ application, please try this method at the beginning of your app.
+
+Wed Oct 16 22:35:27 2013 Zachary Scott <e@zzak.io>
+
+ * ext/io/nonblock/nonblock.c: use rb_cIO instead of VALUE
+
+Wed Oct 16 17:45:13 2013 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: check nil before calling `signal?'
+ for a process status.
+
+Wed Oct 16 17:37:17 2013 Koichi Sasada <ko1@atdot.net>
+
+ * error.c, internal.h (rb_bug_reporter_add): add a new C-API.
+ rb_bug_reporter_add() allows to register a function which
+ is called at rb_bug() called.
+
+ * ext/-test-/bug_reporter/bug_reporter.c: add a test for this C-API.
+
+ * ext/-test-/bug_reporter/extconf.rb: ditto.
+
+ * test/-ext-/bug_reporter/test_bug_reporter.rb: ditto.
+
+Wed Oct 16 15:14:21 2013 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: add a line into NEWS for last commit.
+
+Wed Oct 16 15:09:14 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c: add a new method `reachable_objects_from_root'.
+ ObjectSpace.reachable_objects_from_root returns all objects referred
+ from root (called "root objects").
+ This feature is for deep object analysis.
+
+ * test/objspace/test_objspace.rb: add a test.
+
+Wed Oct 16 15:00:21 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master b955554. Changes:
+
+ Fixed NameError for Gem::Ext due to re-entering file lookup in
+ RubyGems' overridden require. Bug by Koichi Sasada.
+
+ Fixed possible circular require warning in tests.
+
+ Used existing constant for `gem install -g` dependency file list.
+
+ * test/rubygems: ditto.
+
+Wed Oct 16 09:42:42 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master 278d00d. Changes:
+
+ Fixes building extensions without a "clean" make rule
+
+ Adds gem dependency file autodetection to "gem install -g"
+
+ * test/rubygems: Tests for the above.
+
+Wed Oct 16 09:12:23 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems master commit 2a74263. This fixes
+ several bugs in RubyGems 2.2.0.preview.1.
+
+ * test/rubygems: ditto.
+
+Wed Oct 16 07:25:02 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (gc_mark_roots): rename roots to be categories
+ instead of function names.
+
+Tue Oct 15 19:18:13 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.h (rb_objspace_reachable_objects_from_root): added.
+ This API provides information which objects are root objects.
+ `category' shows what kind of root objects.
+
+ * gc.c (gc_mark_roots): separate from gc_marks_body().
+
+Tue Oct 15 17:47:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c: Fix a typo. MacOS X doesn't have ENOTSUPP.
+
+Mon Oct 14 12:32:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): load statically linked extensions before
+ rubygems, because of ext/thread.
+
+ * ruby.c (process_options): use gem_prelude instead of requiring
+ rubygems directly when --enable=gems is given.
+
+ * Makefile.in (DEFAULT_PRELUDES): always use gem_prelude regardless of
+ --disable-rubygems.
+
+Mon Oct 14 11:07:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_framework): should append framework options to
+ $LIBS, not $LDFLAGS. The former is propagated to exts.mk when
+ enable-static-linked-ext.
+
+ * lib/mkmf.rb (create_makefile): ranlib on static library, not DLLIB.
+
+Sun Oct 13 23:53:40 2013 Andrew Grimm <andrew.j.grimm@gmail.com>
+
+ * vsnprintf.c: Fix spelling from compliment to complement.
+ Patch by @agrimm.
+
+ * include/ruby/ruby.h: ditto
+
+Sun Oct 13 20:59:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (Init_BareVM): initialize defined_module_hash here,
+ Init_top_self() is too late to register core classes/modules.
+
+ * compile.c (compile_array_): no hash to merge if it is empty.
+
+ * vm.c (m_core_hash_merge_kwd): just check keys if only one argument
+ is given, without merging.
+
+Sat Oct 12 06:35:01 2013-10-11 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake: Update to rake 10.1.0
+ * bin/rake: ditto.
+ * test/rake: ditto.
+
+ * NEWS: Update NEWS to include rake 10.1.0 and links to release notes.
+
+Sat Oct 12 03:26:04 2013 Koichi Sasada <ko1@atdot.net>
+
+ * class.c, variable.c, gc.c (rb_class_tbl): removed.
+
+ * vm.c, vm_core.h (rb_vm_add_root_module): added to register as a
+ defined root module or class.
+ This guard helps mark miss from defined classes/modules they are
+ only referred from C's global variables in C-exts.
+ Basically, it is extension's bug.
+ Register to hash object VM has.
+ Marking a hash objects allows generational GC supports.
+
+ * gc.c (RGENGC_PRINT_TICK): disable (revert).
+
+Sat Oct 12 03:24:49 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c (rb_gc_mark_unlinked_live_method_entries):
+ revert last commit to introduce debug prints.
+
+Fri Oct 11 21:05:19 2013 Koichi Sasada <ko1@atdot.net>
+
+ * internal.h, parse.y: use `full_mark' instead of `full_marking'.
+
+Fri Oct 11 20:58:16 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: use terminology `full_mark' instead of `minor_gc'
+ in mark functions.
+
+Fri Oct 11 20:46:09 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: use __GNUC__ instead of __GCC__.
+
+Fri Oct 11 20:35:59 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, parse.y: support generational Symbol related marking.
+ Each symbols has String objects respectively to represent
+ Symbols.
+ These objects are marked only when:
+ * full marking
+ * new symbols are added
+ This hack reduce symbols (related strings) marking time.
+ For example, on my Linux environment, the following code
+ "20_000_000.times{''}"
+ with 40k symbols (similar symbol number on Rails 3.2.14 app,
+ @jugyo tells me) boosts, from 7.3sec to 4.2sec.
+
+ * internal.h: change prototype of rb_gc_mark_symbols().
+
+Fri Oct 11 19:27:22 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el: Import ruby-electric.el 2.0.1 which fixes
+ a bug and a flaw with auto-end introduced in the revamp.
+
+ * ruby-forward-sexp is inappropriate here because it moves the
+ cursor past the keyword.
+
+ * Fix a reversed looking-back check in
+ ruby-electric--block-beg-keyword-at-point-p.
+
+ * Do not add end again if space or return is hit repeatedly
+ after a block beginning keyword.
+
+Fri Oct 11 18:12:47 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/gc_hook.c: prohibit reentrant.
+
+Fri Oct 11 18:11:34 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_postponed_job_flush): fix bit operation.
+
+Fri Oct 11 17:33:24 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el: Import ruby-electric.el 2.0 from
+ https://github.com/knu/ruby-electric.el which integrates changes
+ from another fork by @qoobaa.
+
+ * Allow ruby-electric-mode to be disabled by introducing a
+ dedicated key map. Electric key bindings are now defined in
+ ruby-electric-mode-map instead of overwriting ruby-mode-map.
+
+ * Add ruby-electric-mode-hook.
+
+ * Use a remap in binding ruby-electric-delete-backward-char.
+
+ * Totally revamp electric keywords and then introduce electric
+ return. Modifier keywords are now properly detected making
+ use of ruby-mode's indentation level calculator, and
+
+ * block-mid keywords (then, else, elsif, when, rescue and
+ ensure) also become electric with automatic reindentation.
+
+ * Add standardized comments for ELPA integration.
+
+ * Fix interaction with smartparens-mode by disabling its end
+ keyword completion, since ruby-electric has become more clever
+ at it.
+
+ * The custom variable `ruby-electric-keywords` is changed to
+ `ruby-electric-keywords-alist`, allowing user to fine-grained
+ configuration.
+
+Fri Oct 11 16:53:28 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_postponed_job_flush): simplify.
+
+Fri Oct 11 03:36:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_threadptr_execute_interrupts): flush postponed job only
+ once at last.
+
+ * vm_trace.c (rb_postponed_job_flush): defer calling postponed jobs
+ registered while flushing to get rid of infinite reentrance of
+ ObjectSpace.after_gc_start_hook. [ruby-dev:47400] [Bug #8492]
+
+Thu Oct 10 23:04:00 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_or): remove unused variables.
+
+Thu Oct 10 23:01:16 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_or): use rb_hash_keys().
+
+Thu Oct 10 21:36:16 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_compact_bang): use ary_resize_smaller().
+
+Thu Oct 10 17:25:28 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_exec): support :b_return event for "lambda{return}.call".
+ [Bug #8622]
+
+ * test/ruby/test_settracefunc.rb: add a test.
+
+Thu Oct 10 13:52:37 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (postponed_job): use preallocated buffer.
+ Pre-allocate MAX_POSTPONED_JOB (1024) sized buffer
+ and use it.
+ If rb_postponed_job_register() cause overflow, simply it
+ fails and returns 0.
+ And maybe rb_postponed_job_register() is signal safe.
+
+ * vm_core.h: change data structure.
+
+Thu Oct 10 11:11:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (Init_VM): hide also the singleton class of frozen-core, not
+ only frozen-core itself.
+
+Thu Oct 10 06:02:08 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_rand.rb: fix r43224. local variable `e' is
+ no longer available.
+
+Thu Oct 10 00:02:35 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * numeric.c (fix_aref): avoid a possible undefined behavior.
+ 1L << 63 on 64-bit platform is undefined, at least, according to
+ ISO/IEC 9899 (C99) 6.5.7.
+
+Wed Oct 9 23:57:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (id_for_attr): avoid inadvertent symbol creation.
+
+Wed Oct 9 18:03:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_attr): preserve encoding of the attribute ID in
+ error message.
+
+Wed Oct 9 17:40:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_fstring): because of lazy sweep, str may be unmarked
+ already and swept at next time, so mark it for the time being.
+ [ruby-core:57756]
+
+Wed Oct 9 13:53:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compar.c (cmp_eq): fail if recursion. [ruby-core:57736] [Bug #9003]
+
+ * thread.c (rb_exec_recursive_paired_outer): new function which is
+ combination of paired and outer variants.
+
+Wed Oct 9 09:18:14 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h,
+ vm_backtrace.c (rb_profile_frame_full_label): add new C API
+ rb_profile_frame_full_label() which returns label with
+ qualified method name.
+ Note that in future version of Ruby label() may return
+ same return value of full_label().
+
+ * ext/-test-/debug/profile_frames.c,
+ test/-ext-/debug/test_profile_frames.rb: fix a test for this change.
+
+
+Wed Oct 9 00:55:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_lock): display backtrace to $stderr at circular
+ require.
+
+ * vm_backtrace.c (rb_backtrace_print_to): new function to print
+ backtrace to the given output.
+
+Tue Oct 8 21:03:35 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c, include/ruby/debug.h: add new APIs
+ * VALUE rb_profile_frame_method_name(VALUE frame)
+ * VALUE rb_profile_frame_qualified_method_name(VALUE frame)
+
+ * iseq.c (rb_iseq_klass), internal.h: add new internal function
+ rb_iseq_method_name().
+
+ * ext/-test-/debug/profile_frames.c (profile_frames),
+ test/-ext-/debug/test_profile_frames.rb: add a test.
+
+Tue Oct 8 16:11:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_uniq): use rb_hash_values(), as well as the case no
+ block is given.
+
+ * internal.h: define rb_hash_values() as internal API.
+
+Tue Oct 8 13:53:21 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_uniq): use rb_hash_keys().
+
+ * internal.h: define rb_hash_keys() as internal API.
+
+ * hash.c (rb_hash_keys): ditto.
+
+Tue Oct 8 10:56:39 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c: disable FIBER_USE_NATIVE on GNU/Hurd because it doesn't
+ support a combination getcontext() and threads. Patch by
+ Gabriele Giacone (1o5g4r8o@gmail.com). [Bug #8990][ruby-core:57685]
+
+Tue Oct 8 05:58:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.strptime): Time.strptime('0', '%s') returns local
+ time Time object as Ruby 2.0 and before.
+
+Tue Oct 8 05:40:37 2013 Eric Hodel <drbrain@segment7.net>
+
+ * .travis.yml: Rebuild Travis CI's "ruby-head" version on successful
+ build. Patch by Konstantin Haase. [Fixes GH-417]
+ https://github.com/ruby/ruby/pull/417
+
+Tue Oct 8 04:28:25 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-mode.el: Use preceding-char/following-char
+ (returning 0 at BOF/EOF) instead of char-before/char-after
+ (returning nil at BOF/EOF) to avoid error from char-syntax when
+ at BOF/EOF.
+
+Tue Oct 8 04:12:45 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-additional.el (ruby-mode-set-encoding): Add a missing
+ else clause to unbreak with `cp932`, etc.
+
+ * misc/ruby-mode.el (ruby-mode-set-encoding): Ditto.
+
+Tue Oct 8 03:57:34 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-additional.el (ruby-mode-set-encoding): Use
+ `default-buffer-file-coding-system` if the :prefer-utf-8
+ property is not available.
+
+ * misc/ruby-mode.el (ruby-mode-set-encoding): Ditto.
+
+ * misc/ruby-additional.el (ruby-encoding-map): Override the
+ default value.
+
+Tue Oct 8 03:19:19 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-additional.el (ruby-mode-set-encoding): Add support
+ for `prefer-utf-8` which was introduced in Emacs trunk.
+
+ * misc/ruby-additional.el (ruby-encoding-map): Add a mapping from
+ `japanese-cp932` to `cp932` to fix the problem where saving a
+ source file written in Shift_JIS twice would end up having
+ `coding: japanese-cp932` which Ruby could not recognize.
+
+ * misc/ruby-additional.el (ruby-mode-set-encoding): Add support
+ for encodings mapped to nil in `ruby-encoding-map`.
+
+ * misc/ruby-additional.el (ruby-encoding-map): Map `us-ascii` and
+ `utf-8` to nil by default, meaning they need not be explicitly
+ declared in magic comment.
+
+ * misc/ruby-additional.el (ruby-encoding-map): Add type
+ declaration for better customize UI.
+
+ * misc/ruby-mode.el: Ditto for the above.
+
+Tue Oct 8 00:14:53 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-additional.el: Add a standard header and footer,
+ including (provide 'ruby-additional).
+
+Mon Oct 7 22:52:45 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el (ruby-electric-space-can-be-expanded-p):
+ Return nil to avoid "end" insertion when in smartparens-mode
+ that is configured to insert "end" for the same keyword.
+
+ * misc/ruby-electric.el (ruby-electric-keywords): New custom
+ variable to replace `ruby-electric-simple-keywords-re` with.
+
+Mon Oct 7 22:52:16 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-additional.el: Use preceding-char/following-char
+ (returning 0 at BOF/EOF) instead of char-before/char-after
+ (returning nil at BOF/EOF) to avoid error from char-syntax when
+ at BOF/EOF.
+
+Mon Oct 7 22:45:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (FIBER_USE_NATIVE): split long conditions.
+
+Mon Oct 7 20:29:31 2013 Zachary Scott <e@zzak.io>
+
+ * lib/time.rb: [DOC] typo in Time.rb overview by @srt32 [Fixes GH-416]
+ https://github.com/ruby/ruby/pull/416
+
+Mon Oct 7 20:07:20 2013 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.strptime): Use :offset.
+ Patch by Felipe Contreras. [ruby-core:57694]
+
+Mon Oct 7 16:47:27 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/-ext-/debug/test_profile_frames.rb: rename class C to
+ something long name because one test depends on absence of
+ class ::C.
+
+Mon Oct 7 16:33:10 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/-test-/debug/profile_frames.c:
+ test/-ext-/debug/test_profile_frames.rb: add a test for new C-APIs.
+
+Mon Oct 7 16:12:36 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h: add backtrace collecting APIs for profiler.
+ * int rb_profile_frames(int start, int limit, VALUE *buff, int *lines);
+ Collect information of frame information.
+
+ * VALUE rb_profile_frame_path(VALUE frame);
+ * VALUE rb_profile_frame_absolute_path(VALUE frame);
+ * VALUE rb_profile_frame_label(VALUE frame);
+ * VALUE rb_profile_frame_base_label(VALUE frame);
+ * VALUE rb_profile_frame_first_lineno(VALUE frame);
+ * VALUE rb_profile_frame_classpath(VALUE frame);
+ * VALUE rb_profile_frame_singleton_method_p(VALUE frame);
+ Get information about each frame.
+
+ These APIs are designed for profilers, for example, no object allocation,
+ and enough information for profilers.
+ In this version, this API collects only Ruby level frames.
+ This issue will be fixed after Ruby 2.1.
+
+ * vm_backtrace.c: implement above APIs.
+
+ * iseq.c (rb_iseq_klass): return local_iseq's class.
+
+Mon Oct 7 14:26:01 2013 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c: catch up last commit.
+ Type of return value of rb_iseq_first_lineno() is now VALUE.
+
+ * vm_insnhelper.c (argument_error): ditto.
+
+ * vm_method.c (rb_method_entry_make): ditto.
+
+Mon Oct 7 14:07:45 2013 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c, internal.h: change to public (but internal) functions
+ * VALUE rb_iseq_path(VALUE iseqval);
+ * VALUE rb_iseq_absolute_path(VALUE iseqval);
+ * VALUE rb_iseq_label(VALUE iseqval);
+ * VALUE rb_iseq_base_label(VALUE iseqval);
+ * VALUE rb_iseq_first_lineno(VALUE iseqval);
+ And new (temporary) function:
+ * VALUE rb_iseq_klass(VALUE iseqval);
+
+ * iseq.c. vm_core.h (int rb_iseq_first_lineno): remove
+ function `int rb_iseq_first_lineno(const rb_iseq_t *iseq)'.
+ Use `VALUE rb_iseq_first_lineno(VALUE iseqval)' instead.
+
+ * proc.c. vm_insnhelper.c, vm_method.c: catch up this change.
+
+Sun Oct 6 08:37:39 2013 Zachary Scott <e@zzak.io>
+
+ * lib/webrick.rb: [DOC] fix grammar in WEBrick overview [Fixes GH-413]
+ Based on patch by @chastell https://github.com/ruby/ruby/pull/413
+
+Sat Oct 5 11:21:01 2013 Aaron Pfeifer <aaron.pfeifer@gmail.com>
+
+ * thread.c (terminate_atfork_i): fix locking mutexes not unlocked in
+ forks when not tracked in thread. [ruby-core:55102] [Bug #8433]
+
+Fri Oct 4 19:54:09 2013 Zachary Scott <e@zzak.io>
+
+ * ext/dbm/dbm.c: [DOC] Fix wrong constant name in DBM by @edward
+ [Fixes GH-409] https://github.com/ruby/ruby/pull/409
+
+Fri Oct 4 19:49:42 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c: rename heap.free_num as heap.swept_num to clarify meaning and
+ avoid confusion with objspace_free_num().
+
+Fri Oct 4 19:02:01 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c (objspace_free_num): new method for available/free slots on
+ heap. [ruby-core:57633] [Bug #8983]
+ * gc.c (gc_stat): change heap_free_num definition to use new method.
+ * test/ruby/test_gc.rb: test for above.
+
+Fri Oct 4 18:53:42 2013 Aman Gupta <ruby@tmm1.net>
+
+ * gc.c: add rb_objspace.limit to keep accurate count of total heap
+ slots [ruby-core:57633] [Bug #8983]
+
+Fri Oct 4 09:32:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/csv.rb (CSV.foreach): support enumerator. based on a patch by
+ Hanmac (Hans Mackowiak) at [ruby-core:57643]. [ruby-core:57283]
+ [Feature #8929]
+
+Thu Oct 3 18:20:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (console_emulator_p, constat_handle): disable built-in
+ console colorizing when console-emulator-like DLL is injected.
+ [Feature #8201]
+
+Thu Oct 3 18:01:44 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: define gc_profile_record::allocated_size if
+ CALC_EXACT_MALLOC_SIZE is true.
+
+Thu Oct 3 13:42:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (yes-test-sample): use RUNRUBY instead of MINIRUBY to set
+ runtime library path and run the built ruby. [Bug #8971]
+
+Thu Oct 3 00:17:15 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-additional.el: Properly quote the body. An unquoted
+ body given to eval-after-load is evaluated immediately!
+
+Wed Oct 2 21:38:30 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/socket/ifaddr.c (rsock_getifaddrs): fix possible memory leak.
+ When a system had no interface, this function used xmalloc for root
+ but did not return any reference to it. This patch fixes it by
+ immediately returning an empty array if no interface is found.
+ Coverity Scan found this bug.
+
+Wed Oct 2 21:37:04 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * random.c (make_seed_value): a local array declaration was accessed
+ out of scope. Coverity Scan found this bug.
+
+Wed Oct 2 18:52:40 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: relax GC condition due to malloc_limit.
+
+ * gc.c (GC_MALLOC_LIMIT_MAX): change default value
+ (256MB -> 512MB) and permit zero to ignore max value.
+
+ * gc.c (vm_malloc_increase, vm_xrealloc): do not cause GC on realloc.
+
+ * gc.c (gc_before_sweep): change debug messages.
+
+Wed Oct 2 16:26:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_close_read): duplex IO should wait its child process
+ even after close_read.
+
+Wed Oct 2 15:39:13 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_core.h: use __has_attribute() instead of __clang__major__ because
+ clang says "Note that marketing version numbers should not be used
+ to check for language features, as different vendors use different
+ numbering schemes. Instead, use the Feature Checking Macros."
+ http://clang.llvm.org/docs/LanguageExtensions.html
+
+Wed Oct 2 14:19:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_close_write): detach tied IO for writing before closing
+ to get rid of race condition. [ruby-list:49598]
+
+ * io.c (rb_io_close_read): keep fptr in write_io to be discarded, to
+ fix freed pointer access when it is in use by other threads, and get
+ rid of potential memory/fd leak.
+
+Tue Oct 1 23:44:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * vm_core.h: use __attribute__((unused)) in UNINITIALIZED_VAR on clang
+ 4.0+ instead of just on 4.2. Clang has supported the unused attribute
+ since before version 4, so this should be safe.
+
+Tue Oct 1 22:03:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#unlink): finalizer is no longer needed
+ after unlinking. patched by by normalperson (Eric Wong) at
+ [ruby-core:56521] [Bug #8768]
+
+Tue Oct 1 20:54:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (stat_new_0): constify.
+
+ * file.c (rb_stat_new): constify and export. based on a patch by
+ Hanmac (Hans Mackowiak) at [ruby-core:53225]. [Feature #8050]
+
+Tue Oct 1 16:03:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (ruby_safe_level_4_warning): needed by extension
+ libraries which check safe level 4. [ruby-dev:47517] [Bug #8652]
+
+Mon Sep 30 23:14:36 2013 Zachary Scott <e@zzak.io>
+
+ * ext/objspace/objspace.c: [DOC] Cleaned up many rdoc formatting
+ issues and several duplicate grammar bugs.
+
+Mon Sep 30 23:01:01 2013 Zachary Scott <e@zzak.io>
+
+ * ext/objspace/object_tracing.c: [DOC] Adjust rdoc formatting and fix
+ small grammar typo
+
+Mon Sep 30 17:28:39 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/object_tracing.c: [DOC] add some notes for
+ ObjectSpace::trace_object_allocations.
+
+Mon Sep 30 16:46:58 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/object_tracing.c: add new 3 methods to control tracing.
+ * ObjectSpace::trace_object_allocations_start
+ * ObjectSpace::trace_object_allocations_stop
+ * ObjectSpace::trace_object_allocations_clear
+ And some refactoring.
+
+ * test/objspace/test_objspace.rb: add a test for new methods.
+
+ * NEWS: add a description for new methods.
+
+Mon Sep 30 11:18:04 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_gc_disable): do rest_sweep() before disable GC.
+ This fix may solve a failure of
+ TestTracepointObj#test_tracks_objspace_events
+ [test/-ext-/tracepoint/test_tracepoint.rb:43].
+
+Mon Sep 30 10:40:20 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_undef): raise a NameError if the original method
+ of a refined method is not defined.
+
+ * vm_insnhelper.c (rb_method_entry_eq): added NULL check to avoid SEGV.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sun Sep 29 23:45:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_id_attrset, intern_str): allow junk attrset ID for
+ Struct.
+
+ * parse.y (rb_id_attrset): fix inconsistency with literals, allow
+ ID_ATTRSET and return it itself, but ID_JUNK cannot make ID_ATTRSET.
+ and raise a NameError instead of rb_bug() for invalid argument.
+
+Sun Sep 29 18:45:05 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_insnhelper.c (vm_callee_setup_arg_complex, vm_yield_setup_block_args):
+ clear keyword arguments to prevent GC bug which occurs
+ while marking VM stack.
+ [ruby-dev:47729] [Bug #8964]
+
+ * test/ruby/test_keyword.rb: tests for the above.
+
+Sat Sep 28 23:25:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * math.c (math_log, math_log2, math_log10): fix for Bignum argument.
+ numbits should be add only when right shifted.
+
+Sat Sep 28 14:30:29 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/dl/test_base.rb: {libc, libm} detection now handle GNU/Hurd
+ correctly. Patch by Gabriele Giacone (1o5g4r8o@gmail.com).
+ [Bug #8937][ruby-core:57311]
+ * test/fiddle/helper.rb: ditto.
+
+Sat Sep 28 00:19:41 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/extconf.rb: check the size of chtype.
+
+ * ext/curses/curses.c (NUM2CH, CH2NUM): use proper macros for
+ the size of chtype.
+
+ [ruby-core:56090] [Bug #8659]
+
+Fri Sep 27 18:33:23 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: add two GC tuning environment variables.
+ RUBY_GC_MALLOC_LIMIT_MAX and RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR.
+ See r43067 for details.
+
+ * gc.c (rb_gc_set_params): refactoring. And change verbose notation.
+ Mostly duplicated functions get_envparam_int/double is not cool.
+ Please rewrite it.
+
+ * test/ruby/test_gc.rb: fix a test for this change.
+
+Fri Sep 27 17:44:41 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (GC_MALLOC_LIMIT): 8,000,000 -> 8 * 1,024 * 1,024.
+
+Fri Sep 27 17:19:39 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_before_sweep): cast to size_t to suppress warnings.
+
+Fri Sep 27 17:07:55 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: add some fine-grained profiling codes to tuning marking phase.
+ If you enable RGENGC_PRINT_TICK to 1, then profiling results by RDTSC
+ (on x86/amd64 environment) are printed at last.
+ Thanks Yoshii-san.
+
+Fri Sep 27 16:32:27 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: simplify threshold of GC caused by malloc_increase.
+ Now, malloc_limit is increased/decreased by mysterious logic.
+ This fix simplify malloc_limit increase/decrease logic such as:
+ if (malloc_increase > malloc_limit) /* so many malloc */
+ malloc_limit += malloc_limit * (GC_MALLOC_LIMIT_FACTOR-1);
+ else
+ malloc_limit -= malloc_limit * (GC_MALLOC_LIMIT_FACTOR-1)/4;
+ Default value of GC_MALLOC_LIMIT_FACTOR is 1.8.
+ malloc_limit is bounded by GC_MALLOC_LIMIT_MAX (256MB by default).
+ This logic runs at gc_before_sweep(). So there are no effect from
+ caused by lazy sweep. And we can remove malloc_increase2.
+
+ * gc.c (HEAP_MIN_SLOTS, FREE_MIN, HEAP_GROWTH_FACTOR): rename to
+ GC_HEAP_MIN_SLOTS, GC_FREE_MIN, GC_HEAP_GROWTH_FACTOR respectively.
+ Check them by `#ifndef' so you can specify these values outside gc.c.
+
+ * gc.c (ruby_gc_params_t): add initial_malloc_limit_factor and
+ initial_malloc_limit_max.
+
+ * gc.c (vm_malloc_prepare, vm_xrealloc): use vm_malloc_increase to
+ add and check malloc_increase.
+
+Fri Sep 27 01:05:00 2013 Zachary Scott <e@zzak.io>
+
+ * re.c: [DOC] arguments of Regexp::union receive #to_regexp [Bug #8205]
+
+Fri Sep 27 00:39:27 2013 Zachary Scott <e@zzak.io>
+
+ * struct.c: [DOC] grammar of ArgumentError in Struct.new [Bug #8936]
+ Patch by Prathamesh Sonpatki
+
+Thu Sep 26 22:11:56 2013 Zachary Scott <e@zzak.io>
+
+ * ext/bigdecimal/bigdecimal.c: [DOC] several fixes by @chastell
+ This includes fixing the capitalization of Infinity, return value of
+ example "BigDecimal.new('NaN') == 0.0", and code style in example.
+ [Fixes GH-398] https://github.com/ruby/ruby/pull/398
+
+Thu Sep 26 22:08:11 2013 Zachary Scott <e@zzak.io>
+
+ * lib/observer.rb: [DOC] syntax improvement in example by @chastell
+ [Fixes GH-400] https://github.com/ruby/ruby/pull/400
+
+Thu Sep 26 22:03:15 2013 Zachary Scott <e@zzak.io>
+
+ * ext/digest/digest.c: [DOC] typo in overview by @chastell
+ [Fixes GH-399] https://github.com/ruby/ruby/pull/399
+
+Thu Sep 26 22:00:42 2013 Zachary Scott <e@zzak.io>
+
+ * ext/openssl/ossl.c: [DOC] typo in example by @zoranzaric
+ [Fixes GH-401] https://github.com/ruby/ruby/pull/401
+
+Thu Sep 26 21:07:49 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el (ruby-electric-delete-backward-char): Add
+ support for smartparens-mode.
+
+ * misc/ruby-electric.el (ruby-electric-cua-replace-region-maybe)
+ (ruby-electric-cua-delete-region-maybe): New functions that
+ combine `ruby-electric-cua-*-region` with
+ `ruby-electric-cua-*-region-p`, using a slightly better way to
+ detect if it is in cua-mode.
+
+Thu Sep 26 16:51:00 2013 Shota Fukumori <her@sorah.jp>
+
+ * insns.def (opt_regexpmatch2): Check String#=~ hasn't overridden
+ before calling rb_reg_match().
+
+ * test/ruby/test_string.rb: Test for above.
+
+ * vm.c (vm_init_redefined_flag): Add BOP flag for String#=~
+
+ [ruby-core:57385] [Bug #8953]
+
+Thu Sep 26 16:43:42 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el: Avoid use of the interactive function
+ `self-insert-command` which fires `post-self-insert-hook` and
+ `post-command-hook`, to make the ruby-electric commands work
+ nicely with those minor modes that make use of them to do
+ similar input assistance, such as electric-pair-mode,
+ autopair-mode and smartparens-mode.
+
+Thu Sep 26 16:24:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * insns.def (opt_regexpmatch1): check Regexp#=~ is not defined before
+ calling rb_reg_match()
+
+ * test/ruby/test_regexp.rb: add test
+
+ * vm.c (ruby_vm_redefined_flag): change type to short[]
+
+ * vm.c (vm_redefinition_check_flag): return REGEXP_REDEFINED_OP_FLAG if
+ klass == rb_cRegexp
+
+ * vm.c (vm_init_redefined_flag): setup BOP flag for Regexp#=~
+
+ * vm_insnhelper.h: add REGEXP_REDEFINED_OP_FLAG
+
+ [ruby-core:57385] [Bug #8953]
+
+Thu Sep 26 14:46:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (mark_locations_array): disable AddressSanitizer. based on a
+ patch by halfie (Ruby Guy) at [ruby-core:57372].
+ [ruby-core:56155] [Bug #8680]
+
+Wed Sep 25 17:41:29 2013 Koichi Sasada <ko1@atdot.net>
+
+ * README.EXT, README.EXT.ja: remove description of RARRAY_PTR()
+ and add a caution of accessing internal data structure directly.
+ Also add a description of rb_ary_store().
+ [Bug #8399]
+
+Wed Sep 25 17:12:08 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: rename RARRAY_RAWPTR() to RARRAY_CONST_PTR().
+ RARRAY_RAWPTR(ary) returns (const VALUE *) type pointer and
+ usecase of this macro is not acquire raw pointer, but acquire
+ read-only pointer. So we rename to better name.
+ RSTRUCT_RAWPTR() is also renamed to RSTRUCT_CONST_PTR()
+ (I expect that nobody use it).
+
+ * array.c, compile.c, cont.c, enumerator.c, gc.c, proc.c, random.c,
+ string.c, struct.c, thread.c, vm_eval.c, vm_insnhelper.c:
+ catch up this change.
+
+Wed Sep 25 16:58:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (rb_float_value, rb_float_new): move inline functions
+ from ruby/ruby.h.
+
+ * numeric.c (rb_float_value, rb_float_new): define external functions
+ for extension libraries.
+
+Wed Sep 25 15:37:02 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/rdoc/test_rdoc_generator_darkfish.rb: add a guard for windows.
+
+Wed Sep 25 09:53:11 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Fix CVE-2013-4363. Miscellaneous minor improvements.
+
+ * test/rubygems: Tests for the above.
+
+Tue Sep 24 17:38:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_inspect): get rid of out-of-bound access.
+
+ * string.c (rb_str_inspect): when a UTF-16/32 string doesn't have a
+ BOM, inspect as a dummy encoding string.
+
+Tue Sep 24 17:15:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/encdb.c (ENC_DUMMY_UNICODE): make BOM-encodings dummy.
+
+ * encoding.c (enc_autoload): keep dummy encodings dummy.
+
+Tue Sep 24 16:41:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32/lib/win32/registry.rb (Win32::Registry#write): data size
+ is in bytes, not chars. terminators should be placed automatically.
+
+Tue Sep 24 16:39:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32/lib/win32/registry.rb (Win32::Registry#each_value): encode
+ name.
+
+ * ext/win32/lib/win32/registry.rb (Win32::Registry#each_key): ditto.
+
+ * ext/win32/lib/win32/registry.rb (Win32::Registry#export_string):
+ encode to locale encoding if default internal is not set.
+
+Tue Sep 24 16:35:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32/lib/win32/registry.rb (Win32::Registry::API#EnumKey):
+ size of the name is in WCHARs, not in bytes.
+
+Tue Sep 24 14:07:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * gc.c (free_method_cache_entry_i): unused function
+
+ * gc.c (rb_free_mc_table): ditto
+
+ * internal.h (method_cache_entry_t): unused struct
+
+ * vm_method.c (verify_method_cache): remove unused variable
+
+ * vm_method.c (rb_method_entry): ditto
+
+Tue Sep 24 14:01:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * class.c (class_alloc): remove mc_tbl
+
+ * gc.c (obj_free): ditto
+
+ * internal.h (struct rb_classext_struct): ditto
+
+ * method.h (rb_method_entry): remove ent param
+
+ * vm_method.c: restore the global method cache. Per class cache tables
+ turned out to be far too slow.
+
+ [ruby-core:57289] [Bug #8930]
+
+Tue Sep 24 12:51:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32/lib/win32/registry.rb (Win32::Registry::API): need
+ Constants.
+
+ * ext/win32/lib/win32/registry.rb (Win32::Registry::API#EnumValue):
+ size of the name is in WCHARs, not in bytes.
+
+Mon Sep 23 22:16:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/encdb.c, enc/utf_16_32.h (ENC_DUMMY_UNICODE): Unicode with BOM
+ must be based on big endian variants, so that actual encodings would
+ work. [ruby-core:57318] [Bug #8940]
+
+Mon Sep 23 12:11:26 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (env_each_pair): do not call rb_assoc_new() if
+ it isn't needed.
+
+Mon Sep 23 10:42:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_module.rb (TestModule#test_include_toplevel): test
+ for top level main.include. based on a part of the patch by
+ kyrylo at [GH-395].
+
+Mon Sep 23 05:07:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_ary_cat): move from internal.h, since it
+ is described in README.EXT.
+
+Sun Sep 22 20:55:20 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_insnhelper.c (vm_make_proc_with_iseq): fix bug message.
+ This is follow up to changes in r42637.
+
+Sun Sep 22 20:35:38 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/-test-/tracepoint/tracepoint.c (Init_tracepoint): prevent from GC.
+
+Sun Sep 22 19:00:28 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * benchmark/bm_app_answer.rb: revert r42990, benchmark scripts should
+ be self-contained and avoid dependencies, especially such small one.
+ See https://github.com/ruby/ruby/pull/393#issuecomment-24861301.
+
+Sat Sep 21 20:11:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork_internal): remove cloexec setting on pipes
+ created by rb_cloexec_pipe. patch by normalperson (Eric Wong) at
+ [ruby-core:56523]. [Bug #8769]
+
+Sat Sep 21 01:04:25 2013 Zachary Scott <e@zzak.io>
+
+ * lib/benchmark.rb: [DOC] grammar of Benchmark#bm [Bug #8888]
+ Patch by Prathamesh Sonpatki
+
+Sat Sep 21 00:50:02 2013 Zachary Scott <e@zzak.io>
+
+ * enumerator.c: [DOC] Enumerator#each arguments documentation [GH-388]
+ Patch by @kachick https://github.com/ruby/ruby/pull/388
+
+Sat Sep 21 00:49:16 2013 Zachary Scott <e@zzak.io>
+
+ * enum.c: [DOC] Enumerable#to_a accepts arguments [GH-388]
+ Patch by @kachick https://github.com/ruby/ruby/pull/388
+
+Sat Sep 21 00:47:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_conv_enc_opts): make sure to scan coderange to get
+ rid of unnecessary conversion.
+
+Sat Sep 21 00:21:08 2013 Zachary Scott <e@zzak.io>
+
+ * ext/openssl/lib/openssl/ssl.rb: [DOC] Document OpenSSL::SSLServer
+ Based on a patch by Rafal Lisowski [Bug #8758]
+
+Fri Sep 20 23:54:03 2013 Zachary Scott <e@zzak.io>
+
+ * lib/gserver.rb: [DOC] correct gserver.rb license [Bug #8913]
+
+Fri Sep 20 23:48:34 2013 Zachary Scott <e@zzak.io>
+
+ * ext/psych/yaml/yaml.h: [DOC] merge upstream typo fix by @GreenGeorge
+ https://github.com/tenderlove/psych/pull/161
+
+Fri Sep 20 23:37:40 2013 Zachary Scott <e@zzak.io>
+
+ * lib/securerandom.rb: [DOC] SecureRandom.hex length argument
+ [Fixes GH-394] Patch by @avdi https://github.com/ruby/ruby/pull/394
+
+Fri Sep 20 23:34:48 2013 Zachary Scott <e@zzak.io>
+
+ * benchmark/bm_app_answer.rb: removed duplicate code [Fixes GH-393]
+ Patch by @gouravtiwari https://github.com/ruby/ruby/pull/393
+
+Fri Sep 20 23:24:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (btest, btest-ruby, test-knownbug): add $(RUN_OPTS) to
+ ruby to be run, so that tests are runnable before making exts.
+
+ * common.mk (test-sample): ditto, and use $(MINIRUBY) as rubytest.rb
+ does not need extension libraries.
+
+ * tool/rubytest.rb: pass $(RUN_OPTS) to testing ruby using --run-opt.
+
+Fri Sep 20 15:01:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (intern_str): sigil only names are junk, at least one
+ identifier character is needed. [ruby-dev:47723] [Bug #8928]
+
+ * parse.y (rb_enc_symname_type): fix out of bound access.
+
+Fri Sep 20 14:14:32 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/-test-/printf/printf.c (printf_test_call): Fix an end of buffer
+ argument.
+
+Thu Sep 19 16:59:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lambda): adjust position to the beginning of the block.
+
+Thu Sep 19 16:25:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): initialize cp so that size is 0 in the
+ commented case. fix an accidental bug at r16716.
+
+Thu Sep 19 14:33:14 2013 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: add a news for r42974.
+
+Thu Sep 19 14:12:02 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: make Symbol objects frozen.
+ [Feature #8906]
+ I want to freeze this good day, too.
+
+ * test/ruby/test_eval.rb: catch up this change.
+
+ * test/ruby/test_symbol.rb: add a test to check frozen symbols.
+
+Thu Sep 19 09:11:33 2013 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS: Update for RDoc 4.1.0.preview.1 and RubyGems 2.2.0.preview.1
+
+Thu Sep 19 08:59:41 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markdown/literals_1_9.rb: Fix trailing whitespace.
+
+ Previously kpeg (which generates this file) added trailing
+ whitespace, but this bug is now fixed.
+
+ * lib/rdoc/markdown.rb: ditto.
+
+Thu Sep 19 08:33:14 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 4.1.0.preview.1
+
+ RDoc 4.1.0 contains a number of enhancements including a new default
+ style and accessibility support. You can see the changelog here:
+
+ https://github.com/rdoc/rdoc/blob/v4.1.0.preview.1/History.rdoc
+
+ * test/rdoc: ditto.
+
+Thu Sep 19 07:16:26 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: updating Psych version
+
+ * ext/psych/psych.gemspec: ditto
+
+Thu Sep 19 06:39:40 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_resolver.rb: Switch the iterative resolver
+ algorithm from recursive to iterative to avoid possible
+ SystemStackError.
+
+Thu Sep 19 06:29:30 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 2.2.0.preview.1
+
+ This brings several new features to RubyGems summarized here:
+
+ https://github.com/rubygems/rubygems/blob/v2.2.0.preview.1/History.txt
+
+ * test/rubygems: ditto.
+
+Wed Sep 18 23:14:58 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_enumerate_lines): make String#each_line and
+ #lines not raise invalid byte sequence error when it is called
+ with an argument. The patch also causes performance improvement.
+ [ruby-dev:47549] [Bug #8698]
+
+ * test/ruby/test_m17n_comb.rb (test_str_each_line): remove
+ assertions which check that String#each_line and #lines will
+ raise an error if the receiver includes invalid byte sequence.
+
+Wed Sep 18 16:32:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (mnew_from_me): allocate structs after allocated wrapper
+ object successfully, to get rid of potential memory leak.
+
+Tue Sep 17 15:54:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/shell/command-processor.rb (Shell::CommandProcessor#find_system_command):
+ return executable file only, should ignore directories and
+ unexecutable files. [ruby-core:57235] [Bug #8918]
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert_throw):
+ assertion for throw. MiniTest::Assertions#assert_throws discards
+ the caught value.
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert_nothing_thrown):
+ returns the result of the given block.
+
+Tue Sep 17 12:55:58 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/regexp.rdoc: [DOC] Replace paragraphs in verbatim sections with
+ plain paragraphs to improve readability as ri and HTML.
+
+Mon Sep 16 07:32:35 2013 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: removed meaningless lines.
+ * rational.c: ditto.
+
+Mon Sep 16 00:44:23 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * ext/socket/mkconstants.rb: define MSG_FASTOPEN.
+ [ruby-core:57138] [Feature #8897]
+
+Sun Sep 15 13:31:23 2013 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_div): reverted r28844, r28886 and r28887.
+ REASON: Nobuyoshi Nakada <nobu@ruby-lang.org>'s commits are buggy.
+ So Rational#/ may produce exact number with inexact number.
+ Moreover, without reducing.
+ REALLY NONSENSE COMMITS.
+ A bug report by me [ruby-dev:44710] is also caused by this behavior.
+ Kenta Murata <mrkn@mrkn.jp> patched it up.
+ But he did not fix the origin.
+ Today, the bug is still alive in ruby 1.9.3 and 2.0.0.
+
+Sat Sep 14 06:08:10 2013 Eric Hodel <drbrain@segment7.net>
+
+ * dir.c (dir_s_glob): [DOC] Improve wording and layout.
+
+ * dir.c (file_s_fnmatch): ditto.
+
+ * dir.c (Init_Dir): [DOC] Document File::Constants::FNM_XXX
+ constants. (These won't show up in RDoc until a new RDoc is
+ imported.)
+
+Thu Sep 12 14:58:58 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic.find_proxy): return nil if
+ http_proxy environment variable is empty string.
+ [ruby-core:57140] [Bug #8898]
+
+Fri Sep 13 10:40:28 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 2.1.3
+
+ Fixed installing platform gems
+
+ Restored concurrent requires
+
+ Fixed installing gems with extensions with --install-dir
+
+ Fixed `gem fetch -v` to install the latest version
+
+ Fixed installing gems with "./" in their files entries
+
+ * test/rubygems/test_gem_package.rb: Tests for the above.
+
+ * NEWS: Updated for RubyGems 2.1.3
+
+Thu Sep 12 22:40:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIGNEDNESS): macro to check signedness of a
+ type.
+
+ * configure.in (size_t): must be unsigned.
+ [ruby-core:57149] [Feature #8890]
- * array.c (sort_2): wrong comparison.
+Thu Sep 12 22:37:08 2013 Anton Ovchinnikov <revolver112@gmail.com>
-Sat Jun 14 00:53:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/bigdecimal/bigdecimal.c, ext/digest/md5/md5.c,
+ ext/json/fbuffer/fbuffer.h, ext/json/generator/generator.c:
+ Eliminate less-than-zero checks for unsigned variables.
+ According to section 4.1.5 of C89 standard, size_t is an unsigned
+ type. These checks were found with 'cppcheck' static analysis tool.
+ [ruby-core:57117] [Feature #8890]
- * hash.c (hash_foreach): safe iteration.
+Thu Sep 12 21:35:46 2013 Naohisa Goto <ngotogenome@gmail.com>
-Fri Jun 13 14:04:56 1997 Michio "Karl" Jinbo <karl@marcer.nagaokaut.ac.jp>
+ * Makefile.in (libruby-static.a): change LDFLAGS order. LDFLAGS may
+ include library path that should be specified before LIBS.
+ [ruby-dev:47707] [Bug #8901]
- * configure.in: -Bshareable option for netbsd.
+Thu Sep 12 20:07:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jun 13 01:16:22 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * vsnprintf.c (MAXEXP, MAXFRACT): calculate depending on constants in
+ float.h.
- * io.c (pipe_open): call io_unbuffered() only for writable pipes.
+ * vsnprintf.c (BSD_vfprintf): limit length for cvt() to get rid of
+ buffer overflow. [ruby-core:57023] [Bug #8864]
-Thu Jun 12 01:14:15 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * vsnprintf.c (exponent): make expbuf size more precise.
- * version 1.0-970612
+Wed Sep 11 17:30:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/socket.c (sock_new): use io_unbuffered().
+ * configure.in (RUNRUBY): append -- only after runruby.rb, not
+ cross-compiling baseruby, so that $(RUN_OPT) can be command line
+ options. [ruby-dev:47703] [Bug #8893]
- * ext/marshal/marshal.c (w_long): compact long format, which
- supports 64 bit architectures (unless longs are >32 bit size).
+Wed Sep 11 07:55:17 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/marshal/marshal.c: allows recursive data for marshaling.
+ * thread.c (rb_mutex_unlock): Mutex#unlock no longer raise
+ an exception even if uses on trap. [Bug #8891]
- * parse.y (rb_intern): raise exception for non-internable string.
+Tue Sep 10 14:37:01 2013 Shota Fukumori <sorah@tubusu.net>
- * ext/marshal/marshal.c (marshal_load): allows direct loading from
- strings.
+ * vm_backtrace.c (vm_backtrace_to_ary): Ignore the second argument if
+ it is nil. [Bug #8884] [ruby-core:57094]
- * ext/marshal/marshal.c (marshal_dump): allows direct dump to strings.
+ * test/ruby/test_backtrace.rb (test_caller_with_nil_length):
+ Test for above.
- * ext/marshal/marshal.c (marshal_dump): interface changed.
+Tue Sep 10 12:39:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jun 11 18:26:00 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * class.c (method_entry_i): should exclude refined methods from
+ instance method list. [ruby-core:57080] [Bug #8881]
- * gc.c (rb_newobj): remove needless memset().
+Tue Sep 10 12:05:04 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Mon Jun 9 13:03:43 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * io.c (rb_f_printf): [DOC] add missing parenthesis in rdoc.
- * eval.c (rb_eval): reduce condition checks from while/until loop.
+Tue Sep 10 10:08:00 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * eval.c (rb_eval): wrong jump point for `next'.
+ * NEWS: Update RubyGems note.
-Fri Jun 6 11:47:39 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Sep 10 09:51:22 2013 Eric Hodel <drbrain@segment7.net>
- * ruby.c (ruby_set_argv): initialize dln_argv0 for dln_a_out.
+ * lib/rubygems: Update to RubyGems 2.1.0. Fixes CVE-2013-4287.
- * ext/socket/socket.c (open_unix): display path name for exceptions.
+ See http://rubygems.rubyforge.org/rubygems-update/CVE-2013-4287_txt.html
+ for CVE information.
- * ruby.c (proc_options): option -S did not work well.
+ See http://rubygems.rubyforge.org/rubygems-update/History_txt.html#label-2.1.0+%2F+2013-09-09
+ for release notes.
-Fri May 30 02:14:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/rubygems: Tests for the above.
- * version 1.0-970530
+Mon Sep 9 21:31:45 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (eval): set $! properly if exception raised in eval().
+ * process.c: Remove spaces between SI prefix and unit to follow
+ SI brochure.
+ http://www.bipm.org/en/si/si_brochure/
+ https://www.nmij.jp/library/units/si/
- * io.c (io_write): now handles non T_FILE object.
+ * time.c: Ditto.
- * io.c (io_defset): $< can be anything which has `write' method.
+ * ext/socket/ancdata.c: Ditto.
-Thu May 29 15:40:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Sep 9 16:55:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (eval): $@ is always an array (not string).
+ * vm_method.c (rb_add_refined_method_entry): clear cache in the
+ refined class since refining a method entry is modifying the class.
+ [ruby-core:57079] [Bug #8880]
- * pack.c (pack_unpack): avoid corrupting memory for unexpected
- input strings.
+Mon Sep 9 09:14:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed May 28 12:46:13 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * tool/rbinstall.rb (Gem::Specification#initialize): default date to
+ RUBY_RELEASE_DATE. [ruby-core:57072] [Bug #8878]
- * version 1.0-970528
+ * tool/rbinstall.rb (Gem::Specification#to_ruby): add date.
- * process.c (rb_waitpid): do not block other threads.
+Sun Sep 8 16:01:54 2013 Tanaka Akira <akr@fsij.org>
-Tue May 27 12:02:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * rational.c (f_gcd): Relax the condition to use GMP.
- * eval.c (ruby_init): split initialize and processing command line
- options.
+Sun Sep 8 13:56:38 2013 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * ruby.c (ruby_options): ruby_init(0, 0, envp) dumps core.
+ * ext/win32ole/win32ole.c (folevariant_initialize): check type of
+ element of array.
-Tue May 20 18:59:45 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/win32ole/test_win32ole_variant.rb (test_s_new_ary): ditto.
- * variable.c (rb_ivar_set): invalid instance variable access for
- built-in object raises TypeError.
+Sat Sep 7 21:33:10 2013 Tanaka Akira <akr@fsij.org>
-Fri May 16 17:32:21 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * math.c (math_log): Test the sign for bignums.
+ (math_log2): Ditto.
+ (math_log10): Ditto.
- * version 1.0-970516
+Sat Sep 7 20:25:47 2013 Tanaka Akira <akr@fsij.org>
- * dir.c (push_globs): was freeing non heap pointer.
+ * math.c (math_log): Support bignums bigger than 2**1024.
+ (math_log2): Ditto.
+ (math_log10): Ditto.
- * gc.c: remove some duplicated prototypes.
+Sat Sep 7 15:36:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
- * ext/kconv/kconv.c: fix prototypes.
+ * vm_eval.c (vm_call0): fix prototype, the id parameter should be of
+ type ID, not VALUE
-Fri May 9 11:38:59 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * vm_insnhelper.c (check_match): the rb_funcall family of functions
+ does not care about refinements. We need to use
+ rb_method_entry_with_refinements instead to call === with
+ refinements. Thanks to Jon Conley for reporting this bug.
+ [ruby-core:57051] [Bug #8872]
- * version 1.0-970509
+ * test/ruby/test_refinement.rb: add test
- * gc.c (obj_free): avoid free(NULL).
+Sat Sep 7 13:49:40 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * eval.c (rb_check_safe_str): argument missing for TypeError().
+ * variable.c (classname): the name of class that has
+ non class id should not be nil. This bug was introduced
+ in r36577.
-Thu May 8 01:14:28 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/thread/test_cv.rb: test for change.
- * file.c (file_s_dirname): need to return "." for path without
- slashes.
+Sat Sep 7 13:29:22 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Wed May 7 19:18:48 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/find.rb (Find.find): respect the encodings of arguments.
+ [ruby-dev:47530] [Feature #8657]
- * process.c (f_fork): child processe does not inherit parent's
- itimer setting on linux. call setitimer() again in the child
- process.
+ * test/test_find.rb: add tests.
-Sat May 3 02:49:43 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Sep 7 10:40:32 2013 Tanaka Akira <akr@fsij.org>
- * ext/curses/curses.c: modified for portability and add to the
- standard distribution.
+ * ext/socket/mkconstants.rb (TCP_FASTOPEN): Defined for TCP fast open.
+ [ruby-core:57048] [Feature #8871] patch by Masaki Matsushita.
-Wed Apr 30 00:34:00 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Sep 6 23:53:31 2013 Masaki Matsushita <glass.saga@gmail.com>
- * file.c (file_s_size): returns 0 for empty files (not FALSE).
+ * common.mk: use RUNRUBY instead of MINIRUBY because MINIRUBY can't
+ require extension libraries. The patch is from nobu
+ (Nobuyoshi Nakada).
-Fri Apr 25 02:17:50 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/thread/extconf.rb: for build ext/thread/thread.c.
- * version 1.0-970425
+ * include/ruby/intern.h: ditto.
- * eval.c (f_load): free unused name-table.
+ * thread.c: ditto.
- * eval.c (f_load): copy local variable name-table.
+ * lib/thread.rb: removed and replaced by ext/thread/thread.c.
- * gc.c (obj_free): avoid free(NULL).
+ * ext/thread/thread.c: Queue, SizedQueue and ConditionVariable
+ implementations in C. This patch is based on patches from panaggio
+ (Ricardo Panaggio) and funny_falcon (Yura Sokolov) and ko1
+ (Koichi Sasada). [ruby-core:31513] [Feature #3620]
- * eval.c (rb_eval): forgot to make link from the scope object to
- NODE_SCOPE. It may crash the interpreter.
+ * test/thread/test_queue.rb (test_queue_thread_raise): add a test for
+ ensuring that killed thread should be removed from waiting threads.
+ It is based on a code by ko1 (Koichi Sasada). [ruby-core:45950]
-Thu Apr 24 00:35:09 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Sep 6 22:47:12 2013 Tanaka Akira <akr@fsij.org>
- * random.c (f_srand): save old seed anyway. srand() returns no
- value on some systems.
+ * configure.in: Define ac_cv_func_clock_getres to yes for mingw*.
- * gc.c (obj_free): avoid double free of the local variable name
+Fri Sep 6 21:04:10 2013 Tanaka Akira <akr@fsij.org>
+
+ * rational.c: Include gmp.h if GMP is used.
+ (GMP_GCD_DIGITS): New macro.
+ (rb_gcd_gmp): New function.
+ (f_gcd_normal): Renamed from f_gcd.
+ (rb_gcd_normal): New function.
+ (f_gcd): Invoke rb_gcd_gmp or f_gcd_normal.
+
+ * internal.h (rb_gcd_normal): Declared.
+ (rb_gcd_gmp): Ditto.
+
+ * ext/-test-/rational: New directory.
+
+ * test/-ext-/rational: New directory.
+
+Fri Sep 6 14:23:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (clock_getres): required as well as clock_gettime().
+ [ruby-dev:47699] [Bug #8869]
+
+Fri Sep 6 11:45:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_econv_append): new function to append a string data
+ with converting its encoding. split from rb_econv_substr_append.
+
+Fri Sep 6 02:37:22 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: use double quotes when
+ strings start with special characters.
+ https://github.com/tenderlove/psych/issues/157
+
+ * test/psych/test_string.rb: test for change.
+
+Fri Sep 6 00:05:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rewrite_cref_stack): remove recursion.
+
+Thu Sep 5 18:05:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * string.c (fstring_cmp): take string encoding into account when
+ comparing fstrings [ruby-core:57037] [Bug #8866]
+
+ * test/ruby/test_string.rb: add test
+
+Thu Sep 5 17:25:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_fstring, rb_str_free): use st_data_t instead of VALUE.
+
+ * string.c (rb_fstring): get rid of duplicating already frozen object.
+
+Thu Sep 5 14:01:22 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/optparse.rb: The Integer acceptable now allows binary and
+ hexadecimal numbers per the documentation. [ruby-trunk - Bug #8865]
+
+ DecimalInteger, OctalInteger, DecimalNumeric now validate their input
+ before converting to a number. [ruby-trunk - Bug #8865]
+
+ * test/optparse/test_acceptable.rb: Tests for the above, tests for all
+ numeric acceptables for existing behavior.
+
+Thu Sep 5 13:49:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * include/ruby/ruby.h: add RSTRING_FSTR flag
+
+ * internal.h: add rb_fstring() prototype
+
+ * string.c (rb_fstring): deduplicate frozen string literals
+
+ * string.c (rb_str_free): delete fstrings from frozen_strings table when
+ they are GC'd
+
+ * string.c (Init_String): initialize frozen_strings table
+
+Thu Sep 5 12:48:00 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * configure.in (with_gmp): set with_gmp no if it is empty.
+
+Thu Sep 5 10:41:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_getivar): use class sequence to check class
+ identity, instead of pointer + vm state
+
+ * vm_insnhelper.c (vm_setivar): ditto
+
+Thu Sep 5 08:20:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (GMP_DIV_DIGITS): New macro.
+ (bary_divmod_gmp): New function.
+ (rb_big_divrem_gmp): Ditto.
+ (bary_divmod_branch): Ditto.
+ (bary_divmod): Use bary_divmod_branch.
+ (bigdivrem): Ditto.
+
+ * internal.h (rb_big_divrem_gmp): Declared.
+
+Thu Sep 5 06:22:42 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_divmod_normal): Reduce temporary array allocations.
+
+Thu Sep 5 02:17:06 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_divrem_normal): Add GC guards.
+
+Thu Sep 5 00:38:32 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_divrem_normal): New function.
+
+ * internal.h (rb_big_divrem_normal): Declared.
+
+ * ext/-test-/bignum/div.c: New file.
+
+ * test/-ext-/bignum/test_div.rb: New file.
+
+Thu Sep 5 00:08:44 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem_normal): Removed.
+ (bary_divmod_normal): New function.
+ (bary_divmod): Use bary_divmod_normal.
+ (bigdivrem): Use bary_divmod_normal.
+
+Wed Sep 4 23:02:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem): Useless declaration removed.
+
+Wed Sep 4 22:56:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (NUM_STEP_GET_INF): split from NUM_STEP_SCAN_ARGS(), since
+ inf is not used in num_step_size().
+
+Wed Sep 4 20:22:43 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem_normal): Add assertions.
+
+Wed Sep 4 19:18:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (vm_state_version_t): prefer LONG_LONG to uint64_t.
+
+Wed Sep 4 16:28:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (vm_state_version_t): use uint64_t when it is larger than
+ LONG_LONG, and fallback to unsigned long.
+
+Wed Sep 4 15:37:05 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac-tbl.rb: fix r42789.
+ Fix conversion table and logic. [ruby-dev:47680]
+
+Wed Sep 4 14:08:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * class.c, compile.c, eval.c, gc.h, insns.def, internal.h, method.h,
+ variable.c, vm.c, vm_core.c, vm_insnhelper.c, vm_insnhelper.h,
+ vm_method.c: Implement class hierarchy method cache invalidation.
+
+ [ruby-core:55053] [Feature #8426] [GH-387]
+
+Wed Sep 4 11:13:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_gsub): use BEG(0) for whole matched position not
+ return value from rb_reg_search(), for \K matching.
+ [ruby-dev:47694] [Bug #8856]
+
+Wed Sep 4 11:11:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (SOLIBS): LIBRUBY_SO also needs linking with gmp, to
+ run worker processes in test-all on non-ELF platforms.
+
+Tue Sep 3 23:01:41 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/parser/test_tree.rb
+ (TestTreeParser::TestInvalid#test_unmatched_close_tag):
+ Compute expected value from test value.
+
+Tue Sep 3 22:59:58 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/treeparser.rb (REXML::Parsers::TreeParser#parse):
+ Add source information to parse exception on no close tag error.
+ [Bug #8844] [ruby-dev:47672]
+ Patch by Ippei Obayashi. Thanks!!!
+ * test/rexml/parser/test_tree.rb: Add a test for the above case.
+
+Tue Sep 3 22:57:57 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/parser/test_tree.rb: Fix test name to describe test
+ content.
+
+Tue Sep 3 22:54:46 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/treeparser.rb (REXML::Parsers::TreeParser#parse):
+ Remove needless nested parse exception information.
+ [Bug #8844] [ruby-dev:47672]
+ Reported by Ippei Obayashi. Thanks!!!
+ * test/rexml/parser/test_tree.rb: Add a test for the above case.
+
+Tue Sep 3 22:03:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_enc_str_new_cstr): new function to create a string from
+ the C-string pointer with the specified encoding.
+
+Tue Sep 3 21:41:37 2013 Akira Matsuda <ronnie@dio.jp>
+
+ * eval.c (Init_eval): Make Module#include and Module#prepend public
+ [Feature #8846]
+
+ * test/ruby/test_module.rb (class TestModule): Test for above
+
+Tue Sep 3 21:35:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (sys/dyntune.h): for gettune().
+
+ * thread_pthread.c (hpux_attr_getstackaddr): fix missing *.
+ [ruby-core:56983] [Feature #8793]
+
+Tue Sep 3 20:12:46 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (GMP_STR2BIG_DIGITS): New macro.
+ (str2big_gmp): New function.
+ (rb_cstr_to_inum): Use str2big_gmp for big bignums.
+ (rb_str2big_gmp): New function.
+
+ * internal.h (rb_str2big_gmp): Declared.
+
+Tue Sep 3 19:44:40 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32/lib/win32/registry.rb (Win32::Registry#values): added.
+ [Feature #7763] [ruby-core:51783]
+
+Tue Sep 3 18:26:00 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/inf-ruby.el (inf-ruby-keys, run-ruby): Add magic autoload
+ comments.
+
+ * misc/rdoc-mode.el (rdoc-mode): Ditto.
+
+ * misc/ruby-electric.el (ruby-electric-mode): Ditto.
+
+ * misc/ruby-style.el (ruby-style-c-mode): Ditto.
+
+Tue Sep 3 17:06:15 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb
+ (TestRubyOptions::SEGVTest::ExpectedStderr): the URL was changed at
+ r42800.
+
+Tue Sep 3 14:48:25 2013 Zachary Scott <e@zzak.io>
+
+ * lib/thread.rb: [DOC] CV#wait typo by @avdi [Fixes GH-386]
+ https://github.com/ruby/ruby/pull/386
+
+Tue Sep 3 14:37:53 2013 Zachary Scott <e@zzak.io>
+
+ * error.c: [DOC] Update bug tracker url by @ScotterC [Fixes GH-390]
+ https://github.com/ruby/ruby/pull/390
+
+Tue Sep 3 12:45:23 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_str2big_poweroftwo): New function.
+ (rb_str2big_normal): Ditto.
+ (rb_str2big_karatsuba): Ditto.
+
+ * internal.h (rb_str2big_poweroftwo): Declared.
+ (rb_str2big_normal): Ditto.
+ (rb_str2big_karatsuba): Ditto.
+
+ * ext/-test-/bignum/str2big.c: New file.
+
+ * test/-ext-/bignum/test_str2big.rb: New file.
+
+ * ext/-test-/bignum/depend: Add the dependency for str2big.c.
+
+Tue Sep 3 12:09:08 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_gettime): Support times() based monotonic clock.
+ (rb_clock_getres): Ditto.
+
+Tue Sep 3 12:03:02 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (str2big_scan_digits): Extracted from rb_cstr_to_inum.
+
+Tue Sep 3 11:23:57 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_select_with_thread): rounding up the fraction of
+ tv_usec instead of rounding down.
+ this change is an experiment to get rid of failures on vc10-x64 CI.
+
+Tue Sep 3 11:00:28 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (do_select): constify timeout.
+
+ * win32/win32.c (rb_w32_select_with_thread): constify 10ms wait and
+ 0ms wait structs.
+
+Tue Sep 3 10:03:42 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/openssl/test_pair.rb
+ (OpenSSL::TestPair#test_write_nonblock_no_exceptions): on some CIs
+ such as Debian 6.0, Ubuntu 10.04, CentOS and vc10-x64 (maybe depend
+ on OpenSSL version), writing to SSLSocket after SSL_ERROR_WANT_WRITE
+ causes SSL_ERROR_SSL "bad write retry".
+
+Tue Sep 3 08:20:46 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac-tbl.rb: update conversion table to recent OS X.
+ Previous table is used on Mac OS X 10.1 or prior.
+ This table is used on 10.2 or later. [ruby-dev:47680]
+
+Tue Sep 3 07:49:25 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * numeric.c (NUM_STEP_SCAN_ARGS): On second thought, keep
+ Numeric#step backward compatible in that it raises TypeError
+ when nil is given as second argument.
+
+ * test/ruby/test_float.rb (TestFloat#test_num2dbl): Revert.
+
+ * test/ruby/test_numeric.rb (TestNumeric#test_step): Fix test
+ cases for the above change.
+
+Tue Sep 3 07:39:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bytes_2comp): Define it only for little endian
+ environment.
+
+Tue Sep 3 07:31:29 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * numeric.c (NUM_STEP_SCAN_ARGS): Numeric#step should raise
+ TypeError if a non-numeric parameter is given.
+
+ * test/ruby/test_float.rb (TestFloat#test_num2dbl): Allow nil as
+ step, as with the keyword argument.
+
+ * test/ruby/test_numeric.rb (TestNumeric#test_step): Add tests for
+ nil as step or limit.
+
+Tue Sep 3 07:28:49 2013 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (bit_length): Add casts to fix compilation error with
+ clang 3.0 -Werror,-Wshorten-64-to-32.
+ [ruby-dev:47687] reported by SASADA Koichi.
+
+Tue Sep 3 03:17:26 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_search_super_method): use ci->argc instead of
+ ci->orig_argc. ci->argc can be changed by splat arguments.
+ [ruby-list:49575]
+ This fix should be applied to Ruby 2.0.0 series.
+
+ * test/ruby/test_super.rb: add a test for above.
+
+Mon Sep 2 23:46:29 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * numeric.c (num_step): Default the limit argument to infinity and
+ allow it to be omitted. Keyword arguments (by: and to:) are
+ introduced for ease of use. [Feature #8838] [ruby-dev:47662]
+ [ruby-dev:42194]
+
+ * numeric.c (num_step): Optimize for infinite loop.
+
+Mon Sep 2 22:55:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (ISDIGIT): Unused macro removed.
+
+Mon Sep 2 22:49:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (str2big_poweroftwo): Extracted from rb_cstr_to_inum.
+ (str2big_normal): Ditto.
+ (str2big_karatsuba): Ditto.
+
+Mon Sep 2 14:39:29 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.c (Process#setproctitle): [DOC] Fix and improve rdoc.
+
+ * ruby.c (Process#argv0): [DOC] Improve rdoc.
+
+Mon Sep 2 14:15:00 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * NEWS: fix description of number literal suffixes.
+
+Mon Sep 2 14:01:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * test/rake/test_rake_rules.rb: add space after string literal to
+ prevent conflict with string options syntax "foo"opts
+
+ * test/rss/rss-assertions.rb: ditto
+
+Mon Sep 2 12:28:38 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_bignum.rb (test_interrupt_during_to_s): Disable it
+ when GMP is used.
+
+Mon Sep 2 07:02:10 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (Init_Bignum): Define Bignum::GMP_VERSION when GMP is used.
+
+Mon Sep 2 01:46:14 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_generic): Reduce arguments.
+ (big2str_gmp): Ditto.
+ (rb_big2str1): Follow the above change.
+
+Mon Sep 2 00:08:08 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (get_mach_timebase_info): Extracted from rb_clock_gettime.
+ (rb_clock_gettime): Use get_mach_timebase_info.
+ (rb_clock_getres): Support MACH_ABSOLUTE_TIME_BASED_CLOCK_MONOTONIC.
+
+Sun Sep 1 23:30:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (GMP_BIG2STR_DIGITS): New constant.
+ (big2str_gmp): New function.
+ (rb_big2str1): Use big2str_gmp for big bignums.
+
+ * internal.h (rb_big2str_gmp): Declared.
+
+ * ext/-test-/bignum/big2str.c (big2str_gmp): New method.
+
+Sun Sep 1 22:37:51 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul_gmp): Use mpz_init and mpz_clear instead of
+ mpz_inits and mpz_clears.
+ Older GMP don't have them.
+
+Sun Sep 1 21:17:54 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/net/http/test_http.rb (test_bind_to_local_port): Choose an open
+ port more reliably.
+
+Sun Sep 1 20:32:40 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_base_poweroftwo): Renamed from
+ big2str_base_powerof2.
+ (rb_big2str_poweroftwo): New function for test.
+ (big2str_generic): Extracted from rb_big2str1.
+ (rb_big2str_generic): New function for test.
+
+ * internal.h (rb_big2str_poweroftwo): Declared.
+ (rb_big2str_generic): Ditto.
+
+ * ext/-test-/bignum/big2str.c: New file.
+
+ * test/-ext-/bignum/test_big2str.rb: New file.
+
+Sun Sep 1 15:21:21 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_2bdigits): Renamed from big2str_orig.
+
+Sun Sep 1 13:02:24 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Remove BITSPERDIG >= INT_MAX test. The static assertion,
+ SIZEOF_BDIGITS <= sizeof(BDIGIT) is enough.
+
+Sun Sep 1 11:38:26 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (maxpow_in_bdigit): Removed.
+
+Sun Sep 1 10:30:42 2013 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (rb_fix_bit_length): Moved from bignum.c.
+
+Sun Sep 1 09:55:45 2013 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (bit_length): Moved from bignum.c.
+ (nlz_int): Ditto.
+ (nlz_long): Ditto.
+ (nlz_long_long): Ditto.
+ (nlz_int128): Ditto.
+
+Sun Sep 1 03:32:22 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bit_length): Renamed from bitsize.
+
+Sun Sep 1 00:07:09 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_bit_length): New method.
+ (rb_fix_bit_length): Ditto.
+ [ruby-core:56247] [Feature #8700]
+
+Sat Aug 31 22:18:29 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_getres): New method.
+ (timetick2dblnum_reciprocal): New function.
+
+ * configure.in: Check clock_getres.
+
+ [ruby-core:56780] [Feature #8809] accepted as a CRuby feature at
+ DevelopersMeeting20130831Japan
+ https://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20130831Japan
+
+Sat Aug 31 21:02:07 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Use GMP to accelerate big Bignum multiplication.
+ (bary_mul_gmp): New function.
+ (bary_mul): Use bary_mul_gmp.
+ (bigsq): Use different threshold with GMP.
+
+ * configure.in: Detect GMP.
+
+ [ruby-core:56658] [Feature #8796]
+
+Sat Aug 31 15:03:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * compile.c (NODE_MATCH3): pass CALL_INFO to opt_regexpmatch2
+
+ * insns.def (opt_regexpmatch2): use CALL_SIMPLE_METHOD to call =~ if
+ the receiver is not a T_STRING [Bug #8847] [ruby-core:56916]
+
+Sat Aug 31 14:07:11 2013 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (random_bytes): Use Process.clock_gettime.
+
+Sat Aug 31 00:25:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_{ascii8bit,utf8,usascii}_encindex): get
+ rid of conflict with macros defined in internal.h.
+
+Fri Aug 30 22:37:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (native_thread_init_stack): wait the creator thread
+ to fill machine stack info, if get_stack_of() is available.
+
+ * thread_pthread.c (native_thread_create): fill the created thread
+ stack info after starting, if get_stack_of() is available.
+
+ * thread_pthread.c (native_thread_create): define attr only if it is
+ used, and merge pthread_create() calls.
+
+ * thread_pthread.c (get_main_stack): separate function to get stack of
+ main thread.
+
+Thu Aug 29 18:05:33 2013 Koichi Sasada <ko1@atdot.net>
+
+ * struct.c (rb_struct_define_without_accessor_under): added.
+ This function is similar to rb_define_class_under() against
+ rb_define_class().
+
+ * include/ruby/intern.h: add a declaration of this function.
+
+Thu Aug 29 17:03:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): a method entry refers the based
+ class/module, so should search superclass from the origin i-class
+ where the entry belongs to, to get rid of infinite loop when zsuper
+ in a prepended class/module. [ruby-core:54105] [Bug #8238]
+
+Thu Aug 29 05:35:58 2013 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (zstream_run): Fix handling of deflate streams that
+ need a dictionary but are being decompressed by Zlib::Inflate.inflate
+ (which has no option to set a dictionary). Now Zlib::NeedDict is
+ raised instead of crashing. [ruby-trunk - Bug #8829]
+ * test/zlib/test_zlib.rb (TestZlibInflate): Test for the above.
+
+Thu Aug 29 02:40:45 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: invalid floats should be
+ treated as strings.
+ https://github.com/tenderlove/psych/issues/156
+
+ * test/psych/test_string.rb: test for change
+
+Wed Aug 28 17:20:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (hpux_attr_getstackaddr): basic support for the
+ get_stack() under HP-UX. based on the patch by michal@rokos.cz
+ (Michal Rokos) at [ruby-core:56645]. [Feature #8793]
+
+Wed Aug 28 11:24:20 2013 Michal Rokos <michal@rokos.cz>
+
+ * configure.in (sys/pstat.h): fix missing header check for
+ missing/setproctitle.c on HP-UX. [ruby-core:56644] [Bug #8792]
+
+Wed Aug 28 04:54:33 2013 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read): Replace duplicate
+ wait_writable with wait_readable.
+
+Tue Aug 27 17:18:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/timeout.rb (Timeout#timeout): skip rescue clause only when no
+ exception class is given.
+
+Tue Aug 27 17:02:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (copy_stream_body): should write in binary mode. based on a
+ patch by godfat (Lin Jen-Shin) at [ruby-core:56556].
+ [ruby-core:56518] [Bug #8767]
+
+Tue Aug 27 17:02:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (copy_stream_body): move common open flags.
+
+Tue Aug 27 16:56:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_size): use rb_check_funcall() instead of
+ respond_to? and call.
+
+ * enumerator.c (enumerator_each): ensure that argument array size
+ does not overflow at appending.
+
+Tue Aug 27 16:46:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_index, rb_ary_rindex): use optimized equality to
+ improve performance. [Feature #8820]
+
+ * vm_insnhelper.c (rb_equal_opt): optimized equality function.
+
+Tue Aug 27 16:11:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (opt_eq_func): use RBASIC_CLASS() instead of HEAP_CLASS_OF().
+
+ * insns.def (opt_plus, opt_minus, opt_mult, opt_div, opt_mod, opt_lt),
+ (opt_gt, opt_ltlt, opt_aref, opt_aset, opt_length, opt_size),
+ (opt_empty_p, opt_succ): ditto.
+
+Tue Aug 27 16:08:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_check_funcall, rb_check_funcall_with_hook): constify
+ argv.
+
+Tue Aug 27 13:03:33 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/stringio/stringio.c (strio_read_nonblock): declare local
+ variables at the first of function.
+
+Tue Aug 27 11:51:37 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Allow Enumerator size argument to be any callable.
+ Patch by Avdi Grimm. [bug #8641] [ruby-core:56032] [fix GH-362]
+
+ * test/ruby/test_enumerator.rb: Test for above
+
+Tue Aug 27 11:46:31 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_profile_clear): do rest_sweep() before clearing
+ profile.current_record.
+
+Tue Aug 27 07:35:05 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * io.c (io_read_nonblock): support non-blocking reads without raising
+ exceptions. As in: `io.read_nonblock(size, exception: false)`
+ [ruby-core:38666] [Feature #5138]
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read_internal): ditto
+ * ext/stringio/stringio.c (strio_sysread): ditto
+ * io.c (rb_io_write_nonblock): support non-blocking writes without
+ raising an exception.
+ * ext/openssl/ossl_ssl.c (ossl_ssl_write_internal): ditto
+ * test/openssl/test_pair.rb (class OpenSSL): tests
+ * test/ruby/test_io.rb (class TestIO): ditto
+ * test/socket/test_nonblock.rb (class TestSocketNonblock): ditto
+ * test/stringio/test_stringio.rb (class TestStringIO): ditto
+
+Tue Aug 27 05:24:34 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems 2.1.0 Release Candidate
+ * test/rubygems: ditto.
+
+Mon Aug 26 16:24:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_nextc): warn carriage return in middle of line.
+ [ruby-core:56240] [Feature #8699]
+
+Mon Aug 26 15:27:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/timeout.rb (Timeout#timeout): should not be caught by rescue
+ clause. [Bug #8730]
+
+Mon Aug 26 14:44:26 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_splice): use RARRAY_PTR_USE() without WB because
+ there are not new relations.
+
+ * enum.c (enum_sort_by): ditto.
+
+ * struct.c (setup_struct): use RARRAY_RAWPTR().
+
+ * vm_eval.c (yield_under): ditto.
+
+ * ext/pathname/pathname.c (path_entries): use RARRAY_AREF().
+
+ * ext/pathname/pathname.c (path_s_glob): ditto.
+
+Mon Aug 26 13:11:10 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * array.c (ary_ensure_room_for_push): fix typo in r42658.
+
+Mon Aug 26 12:37:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/sizes.c.tmpl: generate automatically by extracting
+ RUBY_CHECK_SIZEOF from configure.in.
+
+Mon Aug 26 10:16:59 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * process.c (gcd_timetick_int): Renamed from gcd_timtick_int.
+
+Sun Aug 25 21:02:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * sizes.c (Init_sizes): Define the size of clock_t.
+
+Sun Aug 25 01:47:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (BARY_SHORT_MUL): Renamed from BARY_MUL1.
+ (bary_short_mul): Renamed from bary_mul1.
+
+Sat Aug 24 10:35:09 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_gettime): The emulated clock names changed.
+
+Fri Aug 23 22:22:07 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_gettime): Add a cast to fix compile error by
+ -Werror,-Wshorten-64-to-32.
+
+Fri Aug 23 22:12:13 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_intern): no symbol cache while initialization.
+
+Fri Aug 23 22:07:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (clock_t): needs time.h.
+
+Fri Aug 23 21:37:28 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (reduce_factors): New function.
+ (timetick2dblnum): Use reduce_factors.
+ (timetick2integer): Ditto.
+ (make_clock_result): Follow the above change.
+ (rb_clock_gettime): Ditto.
+
+Fri Aug 23 21:00:55 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (timetick_int_t): Renamed from timetick_giga_count_t.
+ (gcd_timtick_int): Renamed from gcd_ul and make the arguments
+ timetick_giga_count_t.
+ (reduce_fraction): Make the arguments timetick_int_t.
+ (timetick2integer): Ditto.
+ (make_clock_result): Ditto.
+ (timetick2dblnum): Fix the return type.
+ (rb_clock_gettime): Use timetick_int_t.
+
+Fri Aug 23 20:50:40 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (gcd_ul): New function.
+ (reduce_fraction): Ditto.
+ (reduce_fraction): Ditto.
+ (timetick2dblnum): Ditto.
+ (timetick2integer): Ditto.
+ (make_clock_result): Use timetick2dblnum and timetick2integer.
+ (rb_clock_gettime): Follow the make_clock_result change.
+
+Fri Aug 23 18:39:04 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_make_shared): shared ary as shady. Need more effort to
+ make it normal object.
+
+ * array.c (rb_ary_modify): use RARRAY_PTR_USE() without WB because
+ there are not new relations.
+
+ * array.c (ary_ensure_room_for_unshift): use RARRAY_RAWPTR() because
+ there are not new relations.
+
+Fri Aug 23 11:25:57 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c: introduce ARY_SHARED_OCCUPIED(shared).
+
+Fri Aug 23 11:07:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): now SIZEOF_CLOCK_T is needed for
+ unsigned_clock_t.
+
+Thu Aug 22 22:01:04 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_gettime): Strip "s" from unit names.
+
+Thu Aug 22 20:14:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (unsigned_clock_t): Defined.
+ (rb_clock_gettime): Consider clock_t overflow for
+ ISO_C_CLOCK_BASED_CLOCK_PROCESS_CPUTIME_ID.
+
+ * configure.in: Check the size of clock_t.
+
+Thu Aug 22 16:22:48 2013 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (build_postexe_iseq): fix to setup the local table.
+
+Thu Aug 22 15:42:43 2013 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (rb_iseq_compile_node): accept NODE_IFUNC to support
+ custom compilation.
+
+ * compile.c (NODE_POSTEXE): compile to
+ "ONCE{ VMFrozenCore::core#set_postexe{...} }" with a new custom
+ compiler `build_postexe_iseq()'.
+
+ * vm.c (m_core_set_postexe): remove parameters (passed by a block).
+
+Thu Aug 22 06:54:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_gettime): Change emulation symbols for
+ Process.clock_gettime.
+
+Thu Aug 22 06:24:54 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (make_clock_result): Extracted from rb_clock_gettime.
+
+Wed Aug 21 22:30:51 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_gettime): clock() based CLOCK_PROCESS_CPUTIME_ID
+ emulation implemented.
+
+Wed Aug 21 21:02:37 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_proc_times): Use RB_GC_GUARD to guard objects from GC.
+
+Wed Aug 21 20:33:01 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (get_clk_tck): Extracted from rb_proc_times.
+ (rb_clock_gettime): times() based CLOCK_PROCESS_CPUTIME_ID emulation
+ is implemented.
+
+Wed Aug 21 19:31:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c: POSIX_GETTIMEOFDAY_CLOCK_REALTIME is renamed to
+ SUS_GETTIMEOFDAY_CLOCK_REALTIME.
+
+Wed Aug 21 19:17:46 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_gettime): CLOCK_PROCESS_CPUTIME_ID emulation
+ using getrusage is implemented.
+
+Wed Aug 21 17:34:27 2013 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (getrusage_time): Fallback clock_gettime to getrusage when
+ clock_gettime fails.
+ Reported by Eric Saxby. [ruby-core:56762] [Bug #8805]
+
+Wed Aug 21 02:32:32 2013 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: fix regexp's once option behavior.
+ fix [ruby-trunk - Bug #6701]
+
+ * insns.def: remove `onceinlinecache' and introduce `once' instruction.
+ `once' doesn't use `setinlinecache' insn any more.
+
+ * vm_core.h: `union iseq_inline_storage_entry' to store once data.
+
+ * compile.c: catch up above changes.
+
+ * iseq.c: ditto.
+
+ * vm.c, vm_insnhelper.c: ditto. fix `m_core_set_postexe()' which
+ is depend on `onceinlinecache' insn.
+
+ * test/ruby/test_regexp.rb: add tests.
+
+ * iseq.c: ISEQ_MINOR_VERSION to 1 (should increment major?)
+
+Wed Aug 21 02:30:15 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_gcdebug_print_obj_condition): add printing information.
+
+Tue Aug 20 13:38:00 2013 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/gdbm/test_gdbm.rb: skip TestGDBM#test_s_open_lock on Solaris.
+ On Solaris (and platforms which do not have flock and have lockf),
+ with GDBM 1.10, gdbm_open(3) blocks when opening already locked
+ gdbm file. [Bug #8790] [ruby-dev:47631]
+
+Tue Aug 20 02:32:52 2013 Zachary Scott <e@zzak.io>
+
+ * lib/test/: [DOC] Document Test::Unit, hide most submodules and
+ classes from rdoc. Since lib/test is only present as a compatibility
+ layer with the legacy test suite many test/unit users will be using
+ minitest or the test/unit gem instead. It is recommended to use one
+ of these alternatives for writing new tests.
+
+ This patch was based on a patch submitted by Steve Klabnik.
+ [ruby-core:56694] [Bug #8778]
+
+Tue Aug 20 02:10:19 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rss/rss.rb: [DOC] Document for constants by Steve Klabnik
+ [ruby-core:56705] [Bug #8798]
+
+Tue Aug 20 02:01:10 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rss/xmlparser.rb: [DOC] Hide legacy constant from rdoc
+ Patch by Steve Klabnik [ruby-core:56708] [Bug #8799]
+
+Tue Aug 20 01:52:05 2013 Zachary Scott <e@zzak.io>
+
+ * ext/socket/unixserver.c: [DOC] Document #accept
+ * ext/socket/tcpserver.c: ditto
+ * ext/socket/udpsocket.c: [DOC] Fix indentation of documentation
+ * ext/socket/socket.c: ditto
+ Patches by David Rodr'iguez [ruby-core:56734] [Bug #8802]
+
+Tue Aug 20 01:19:22 2013 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: Define ac_cv_func_clock_gettime to yes for mingw*.
+
+Mon Aug 19 21:31:35 2013 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/defines.h: Fix a compilation error with
+ i586-mingw32msvc-gcc of gcc-mingw32 package on Debian squeeze.
+ ruby/missing.h should be included before include/ruby/win32.h
+ because struct timespec, used in the clock_gettime declaration in
+ include/ruby/win32.h, is defined in ruby/missing.h instead of
+ system headers.
+
+Mon Aug 19 20:55:12 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: fix around GC_DEBUG.
+
+ * gc.c (RVALUE::line): should be VALUE. On some environment
+ (such as mswin64), `int' introduces alignment mismatch.
+
+ * gc.c (newobj_of): add an assertion to check VALUE alignment.
+
+ * gc.c (aligned_malloc): `&' is low priority than `=='.
+
+ * gc.c: define GC_DEBUG everytime and use it as value 0 or 1.
+
+Mon Aug 19 17:43:44 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_fiber.rb: collect garbage fibers immediately.
+
+Mon Aug 19 17:41:49 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/profile_test_all.rb: add `failed?' information.
+
+Mon Aug 19 17:00:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (retry_fork): retry with GC if ENOMEM occurred, to free
+ swap/kernel space.
+
+Mon Aug 19 13:28:47 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (CLOCK_MONOTONIC): typo.
+
+ * win32/win32.c: removed duplicated declarations.
+
+Mon Aug 19 13:03:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (clock_gettime): should not overwrite cache variable
+ with different condition. otherwise -lrt is not linked and the link
+ fails, after reconfig.
+
+Mon Aug 19 12:56:49 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (Init_process): Add constants: CLOCK_REALTIME_ALARM and
+ CLOCK_BOOTTIME_ALARM.
+
+Sun Aug 18 20:17:41 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * variable.c, vm_method.c: remove dead code.
+
+ * test/ruby/test_fiber.rb, test/ruby/test_thread.rb:
+ change accordingly.
+
+Sun Aug 18 19:32:26 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * error.c, file.c, gc.c, hash.c, thread.c, variable.c, vm_eval.c, bin/erb:
+ $SAFE=4 is obsolete.
+
+Sun Aug 18 14:30:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_gettime): Rename POSIX_TIME_CLOCK_REALTIME to
+ ISO_C_TIME_CLOCK_REALTIME.
+
+Sun Aug 18 14:22:45 2013 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: Revert r42604. It causes linking librt on systems
+ with newer glibc uselessly.
+
+Sun Aug 18 13:18:38 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (Init_process): Add constants: CLOCK_REALTIME_COARSE,
+ CLOCK_MONOTONIC_COARSE and CLOCK_BOOTTIME.
+
+Sun Aug 18 12:41:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (clock_gettime): need to check with -lrt prior to check
+ for the function only. otherwise -lrt is not linked and the link
+ fails, when ac_cv_func_clock_gettime is cached as yes.
+
+Sun Aug 18 10:05:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big2str1): Make an expression more explicit.
+
+Sun Aug 18 03:18:45 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big2str1): Use power_level instead of bitsize(xn).
+
+Sun Aug 18 00:44:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (BIGDIVREM_EXTRA_WORDS): Redefine to 1.
+ (bigdivrem_num_extra_words): Removed.
+ (bigdivrem_normal): Simplified.
+ (big2str_karatsuba): Ditto.
+
+Sat Aug 17 23:25:19 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * test/ruby/test_time.rb: use the in_timezone() helper
+ and define it at the top with other helpers.
+
+Sat Aug 17 22:20:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_mload): ignore auxiliary data, offset and zone, if
+ invalid. [ruby-core:56648] [Bug #8795]
+
+Sat Aug 17 20:11:49 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * process.c: [DOC] MACH_ABSOLUTE_TIME_CLOCK_MONOTONIC is an
+ available emulation for a monotonic clock on Darwin.
+ https://developer.apple.com/library/mac/qa/qa1398/_index.html
+
+Fri Aug 16 18:12:05 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/profile_test_all.rb: fix typo.
+
+Fri Aug 16 18:09:20 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/profile_test_all.rb: remove space characters from test names.
+
+Fri Aug 16 17:32:02 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/profile_test_all.rb: refactoring memory profiling tool for
+ test-all.
+ Add profiling targets /proc/meminfo and /proc/self/status.
+
+ * test/runner.rb: accept other than 'true'.
+
+Fri Aug 16 11:23:35 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_size, rb_file_flock): improve performance of Windows.
+
+ * file.c (rb_file_truncate): removed unnecessary #ifdef.
+
+ * test/test_file.rb (TestFile#test_truncate_size): added an assertion
+ for File#size.
+
+Fri Aug 16 10:07:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem_single1): Renamed from bigdivrem_single. Add
+ x_higher_bdigit argument.
+ (bigdivrem_single): Just call bigdivrem_single1.
+ (bigdivrem_restoring): Use bigdivrem_single1 to avoid memmove.
+
+Fri Aug 16 09:17:00 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_small_rshift): Specify the higher BDIGIT instead of
+ sign bit.
+ (big_shift3): Follow the above change.
+
+Fri Aug 16 02:20:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul_toom3): Reduce a branch.
+
+Fri Aug 16 02:14:09 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c (rb_clock_gettime): add CLOCK_MONOTONIC support on OS X.
+ http://developer.apple.com/library/mac/qa/qa1398/_index.html
+ [Feature #8658]
+
+Fri Aug 16 01:37:43 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem_single): Use shift when y is a power of two.
+
+Fri Aug 16 01:09:33 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem_restoring): Use bigdivrem_single if non-topmost
+ BDIGITs of y are zero.
+
+Fri Aug 16 00:33:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big2str1): Truncate topmost zeros of x.
+
+Fri Aug 16 00:00:57 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_divmod): Simplify an expression.
+
+Thu Aug 15 23:26:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem_normal): Remove a local variable.
+
+Thu Aug 15 23:08:32 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_karatsuba): Use bigdivrem_restoring directly to
+ reduce working buffer and memory copy.
+ (rb_big2str1): Allocate working buffer for big2str_karatsuba here.
+
+Thu Aug 15 20:51:29 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c, internal.h (rb_io_flush_raw): new function to select calling
+ fsync() (on Windows).
+
+ * io.c (rb_io_flush_raw): use above function.
+
+ * file.c (rb_file_truncate): use above function.
+
+ * test/ruby/test_file.rb (TestFile#test_truncate_size): test for
+ above changes.
+
+Thu Aug 15 18:39:31 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (clock_gettime): improve precision when freq is less
+ than and nearly equals 10**9.
+
+Thu Aug 15 17:43:15 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_lazy_sweep): remove heap_increment() here because heap_inc
+ may be 0.
+
+Thu Aug 15 16:59:56 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_rewind): remove fsync() for Windows to improve the
+ performance.
+
+Thu Aug 15 16:30:23 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_rmdir):
+ FileUtils.rmdir ignores Errno::ENOTEMPTY, so, in such cases, this
+ assertion is nonsense.
+
+Thu Aug 15 15:49:35 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_gettime): [DOC] FreeBSD 7.1 supports
+ CLOCK_THREAD_CPUTIME_ID.
+ http://www.freebsd.org/releases/7.1R/relnotes.html
+
+Thu Aug 15 14:30:23 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/Makefile.sub, win32/win32.c
+ (clock_gettime): [experimental] emulates clock_gettime(2) of posix.
+
+Thu Aug 15 02:32:40 2013 Zachary Scott <e@zzak.io>
+
+ * hash.c (rb_hash_aset): [DOC] Document key dup patch by @kachick
+ [Fixes GH-382] https://github.com/ruby/ruby/pull/382
+
+Wed Aug 14 14:28:39 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * proc.c (rb_mod_define_method): now they return the symbols of the
+ defined methods, not the methods/procs themselves.
+ [ruby-dev:42151] [Feature #3753]
+
+ * NEWS: documents about above change and def-expr (see r42337).
+
+ * test/ruby/test_module.rb: tests about above change.
+
+Wed Aug 14 00:51:14 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem_restoring): xn argument removed.
+ (bigdivrem_normal): Follow the above change.
+
+Wed Aug 14 00:18:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big_div_struct): Remove xn and j field. Add zn field.
+ (bigdivrem1): Follow the above change.
+ (bigdivrem_restoring): Ditto.
+
+Tue Aug 13 23:38:17 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big_div_struct): ynzero field removed.
+ (bigdivrem1): Follow the above change.
+ (bigdivrem_restoring): Ditto.
+
+Tue Aug 13 23:01:16 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem_restoring): Extracted from bigdivrem_normal.
+
+Tue Aug 13 22:12:59 2013 Kenichi Kamiya <kachick1@gmail.com>
+
+ * random.c (rb_random_ulong_limited): coerce before check negative.
+ [Fixes GH-379]
+
+Tue Aug 13 21:52:15 2013 Kenichi Kamiya <kachick1@gmail.com>
+
+ * object.c (Init_Object): undef Module#prepend_features on Class, as
+ well as Module#append_features. [Fixes GH-376]
+
+ * test_class.rb: Added test for above. And ensure type checking
+ on similar methods as module_function.
+
+Tue Aug 13 08:52:18 2013 Zachary Scott <e@zzak.io>
+
+ * doc/syntax/literals.rdoc: [DOC] String literal concat by @cknadler
+ [Fixes GH-380] https://github.com/ruby/ruby/pull/380
+
+Mon Aug 12 23:07:21 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (gc_marks_test): inhibit gc for st's operation.
+
+Mon Aug 12 15:59:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_whole_match_p): treat CR in middle of a line as a
+ mere whitespace.
+
+Mon Aug 12 15:16:58 2013 Koichi Sasada <ko1@atdot.net>
+
+ * class.c (rb_prepend_module): make T_ICLASS object shady because
+ this T_ICLASS object seems to share method table with other class
+ objects. It was causes WB miss.
+ TODO: need to know the data structure.
+
+ * test/ruby/test_module.rb: add a test for WB miss.
+
+Mon Aug 12 13:47:54 2013 Zachary Scott <e@zzak.io>
+
+ * process.c: [DOC] RDoc formatting of Process.clock_gettime
+
+Mon Aug 12 13:29:09 2013 Zachary Scott <e@zzak.io>
+
+ * lib/yaml/dbm.rb: [DOC] Document call-seq for YAML::DBM
+
+Mon Aug 12 12:57:26 2013 Zachary Scott <e@zzak.io>
+
+ * ext/dbm/extconf.rb: [DOC] Hide from RDoc
+ Some libraries might want to document extconf.rb so RDoc treats it
+ like any other ruby program. However, DBM users shouldn't care about
+ these methods.
+
+Mon Aug 12 12:53:39 2013 Zachary Scott <e@zzak.io>
+
+ * ext/dbm/dbm.c: [DOC] Reformat headings of DBM class
+
+Mon Aug 12 12:46:31 2013 Zachary Scott <e@zzak.io>
+
+ * lib/yaml.rb, lib/yaml/: [DOC] Document YAML::DBM#key and add
+ references to similar methods with more detail. This patch brings
+ lib/yaml to 100% documentation coverage.
+
+Mon Aug 12 02:51:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_s_set_input): on OS X with editline,
+ Readline.readline doesn't work because readline_get doesn't use
+ rl_getc. The difference is introduced by r42402 [ruby-dev:47509]
+ [Bug #8644]. Before it rb_io_stdio_file set ifp->stdio_file.
+ Therefore add manually setting the value.
+
+ * ext/readline/readline.c (readline_s_set_output): ditto.
+
+Sun Aug 11 23:27:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_str_encode_ospath): OS path encoding on Mac OS X is also
+ fixed.
+
+Sun Aug 11 22:57:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_require.rb (assert_require_nonascii_path): OS path
+ encoding on Windows is fixed, so encoding of __FILE__ should be it.
+ [ruby-core:56498] [Bug #8764]
+
+Sun Aug 11 19:11:45 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/parser/test_sax2.rb: Expand abbreviated class name.
+
+Sun Aug 11 19:06:03 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/sax2listener.rb (REXML::SAX2Listener#notationdecl): Fix
+ wrong number of arguments in the template listener.
+ [Bug #8731] [ruby-dev:47582]
+ Reported by Ippei Obayashi.
+ * test/rexml/parser/test_sax2.rb: Add tests for parsing notation
+ declarations with SAX2 API.
+
+Sun Aug 11 18:44:04 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/sax2listener.rb (REXML::SAX2Listener#elementdecl): Fix wrong
+ examples. [Bug #8731] [ruby-dev:47582]
+ Reported by Ippei Obayashi.
+
+Sun Aug 11 18:42:13 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/sax2parser.rb
+ (REXML::Parsers::SAX2Parser#handle_entitydecl): Extract.
+
+Sun Aug 11 18:40:25 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/sax2parser.rb (REXML::Parsers::SAX2Parser#parse):
+ Fix wrong "%" position in parameter entity declaration event argument.
+ * test/rexml/parser/test_sax2.rb: Add tests for the above case.
+
+Sun Aug 11 18:08:40 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/sax2parser.rb (REXML::Parsers::SAX2Parser#parse):
+ Support NDATA in external ID entity declaration.
+ * test/rexml/parser/test_sax2.rb: Add tests for the above case.
+
+Sun Aug 11 18:07:39 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb
+ (REXML::Parsers::BaseParser#pull_event): Support optional NDATA
+ in external ID entity declaration.
+
+Sun Aug 11 17:54:07 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS (REXML::Parsers::SAX2Parser): Add about this change.
+ * lib/rexml/parsers/sax2parser.rb (REXML::Parsers::SAX2Parser#parse):
+ Fix wrong number of arguments. Document says "an array of the
+ entity declaration" but it passes two or more arguments.
+ This is a bug but it break backward compatibility.
+ Reported by Ippei Obayashi. [Bug #8731] [ruby-dev:47582]
+ * lib/rexml/sax2listener.rb (REXML::SAX2Listener#entitydecl): ditto.
+ The listener template accepted two arguments.
+ * test/rexml/parser/test_sax2.rb: Add tests for external ID case.
+
+Sun Aug 11 17:41:41 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/parser/test_sax2.rb: Add SAX2 API test.
+
+Sun Aug 11 15:10:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_enc_symname_type): allow ID_ATTRSET for ID_INSTANCE,
+ ID_GLOBAL, ID_CLASS, ID_JUNK too. [Bug #8756]
+
+Sun Aug 11 13:17:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * include/ruby/encoding.h: Reduce ENCODING_INLINE_MAX to 127 as this
+ should be sufficient to represent all the encodings Ruby supports.
+
+Sun Aug 11 11:54:38 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_clock_gettime): New method.
+ This is accepted in the meeting:
+ https://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20130809
+ This method is accepted as a CRuby feature.
+ I.e. Other Ruby implementations don't need to implement it.
+ [ruby-core:56087] [Feature #8658]
+
+Sun Aug 11 10:40:48 2013 Zachary Scott <e@zzak.io>
+
+ * lib/time.rb: [DOC] Correcting rdoc visibility of time.rb constants
+ Reported by Tanaka Akira [ruby-core:56517]
+
+Sun Aug 11 04:48:14 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (rb_str_normalize_ospath):
+ HFS Plus (Mac OS Extended) uses a variant of Normal Form D in which
+ U+2000 through U+2FFF, U+F900 through U+FAFF, and U+2F800 through
+ U+2FAFF are not decomposed (this avoids problems with round trip
+ conversions from old Mac text encodings).
+ http://developer.apple.com/library/mac/qa/qa1173/_index.html
+ Therefore fix r42457 to exclude the range.
+
+Sun Aug 11 03:26:07 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bitsize): Fix a conditional expression.
+
+Sun Aug 11 02:44:03 2013 Zachary Scott <e@zzak.io>
+
+ * lib/time.rb: [DOC] Document constants by @markijbema [Fixes GH-377]
+ https://github.com/ruby/ruby/pull/377
+
+Sun Aug 11 01:28:52 2013 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: Revert r42458.
+ It removes the HAVE_CLOCK_GETTIME from config.h.
+ http://www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20130809T044800Z.diff.html.gz
+
+Sat Aug 10 13:53:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_id_attrset): allow other than ID_ATTRSET.
+
+ * parse.y (intern_str): ditto. try stem ID for ID_INSTANCE,
+ ID_GLOBAL, ID_CLASS, ID_JUNK too. [Bug #8756]
+
+Sat Aug 10 12:49:50 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb
+ (REXML::Parsers::BaseParser::CDATA_END): Use "\A" instead of "^".
+ It is not an used constant but I fix it. (Or should I remove it?)
+
+Sat Aug 10 12:47:19 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser):
+ Fix wrong constant name. "]>" pattern match is the same but
+ it is used for "<!DOCTYPE" end mark not "<![CDATA[" end mark.
+
+Sat Aug 10 12:43:15 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser):
+ Use "\A" instead of "^" in document type declaration patterns
+ because they are used as the head match in content not the head
+ match in line. They don't cause any problems in the current code
+ but it should be fixed.
+
+Sat Aug 10 12:39:00 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/parse/test_document_type_declaration.rb: Add tests for
+ parsing document type declaration.
+
+Sat Aug 10 12:00:45 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser::SYSTEM):
+ Fix loose "head" match regular expression. It doesn't cause any
+ problem in the current code but it should be fixed because readers
+ may confuse it.
+ Patch by Ippei Obayashi. Thanks!!!
+
+Sat Aug 10 11:58:24 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/parse/test_notation_declaration.rb (#test_system_public):
+ Add a test for PUBLIC notation and SYSTEM notation order case.
+
+Sat Aug 10 11:31:35 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser::PUBLIC):
+ Fix loose "head" match regular expression.
+ [Bug #8701] [ruby-dev:47551]
+ Patch by Ippei Obayashi. Thanks!!!
+ * test/rexml/parse/test_notation_declaration.rb (#test_system_public):
+ Add a test for the above case.
+
+Sat Aug 10 09:20:21 2013 Zachary Scott <e@zzak.io>
+
+ * NEWS: [DOC] typo in example reported by @moretea
+ https://github.com/ruby/ruby/commit/a39e724#commitcomment-3831489
+
+Sat Aug 10 09:19:04 2013 Zachary Scott <e@zzak.io>
+
+ * proc.c: [DOC] rdoc code formatting
+
+Sat Aug 10 09:12:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_id_attrset): check if the argument is valid type as an
+ attribute.
+
+Sat Aug 10 05:44:08 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rss/trackback.rb: [DOC] Hide RSS::Trackback from rdoc
+ Patch by Steve Klabnik [Bug #8755] [ruby-core:56456]
+
+Sat Aug 10 04:52:21 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big_div_struct): Use size_t.
+ (bigdivrem1): Ditto.
+ (bigdivrem_num_extra_words): Ditto.
+ (bigdivrem_single): Ditto.
+ (bigdivrem_normal): Ditto.
+ (bary_divmod): Ditto.
+
+Fri Aug 9 23:47:15 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rexmlparser.rb: Remove needless REXML version check.
+ Both RSS Parser and REXML are bundled in Ruby. RSS Parser can
+ always use the latest REXML. [Bug #8754] [ruby-core:56454]
+ Patch by Steve Klabnik. Thanks!!!
+
+Fri Aug 9 22:51:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XLDFLAGS, LIBRUBYARG_STATIC): CoreFoundation framework
+ option is now needed always, regardless enable-shared.
+ [ruby-core:56467] [Bug #8759]
+
+Fri Aug 9 22:20:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): use rb_parser_compile_string_path and
+ rb_parser_compile_file_path, String path name versions. [Bug #8753]
+
+Fri Aug 9 07:16:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * ext/io/console/console.c: delete redefinition of rb_cloexec_open.
+ drop support for 1.8 and 1.9 from the next release of io-console gem.
+
+Fri Aug 9 19:13:54 2013 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: update about new methods for Binding.
+
+Fri Aug 9 18:48:09 2013 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c: add Binding#local_variable_get/set/defined?
+ to access local variables which a binding contains.
+ Most part of implementation by nobu.
+
+ * test/ruby/test_proc.rb: add a tests for above.
+
+ * vm.c, vm_core.h (rb_binding_add_dynavars): add a new function
+ to add a new environment to create space for new local variables.
+
+Fri Aug 9 14:02:01 2013 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
+
+ * tool/make-snapshot: Fix order of priority for option parameter.
+
+Fri Aug 9 12:06:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_str_normalize_ospath): normalize to Normalization Form C
+ using CFString.
+
+Fri Aug 9 10:53:57 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * time.c (get_timeval, get_new_timeval): use rb_obj_class()
+ instead of CLASS_OF() because CLASS_OF() may return
+ a singleton class.
+
+Fri Aug 9 10:42:11 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_insnhelper.c (vm_invoke_block): returning from lambda proc
+ now always exits from the Proc. [ruby-core:56193] [Feature #8693]
+
+ * NEWS, test/ruby/test_lambda.rb: ditto. Patch by nobu.
+
+Fri Aug 9 00:10:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (lazy_zip_func): fix non-single argument. fix
+ out-of-bound access and pack multiple yielded values.
+ [ruby-core:56383] [Bug #8735]
+
+Thu Aug 8 23:01:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_singleton_p): new method Module#singleton_class? to
+ return whether the receiver is a singleton class or not.
+ [ruby-core:51087] [Feature #7609]
+
+Thu Aug 8 21:56:44 2013 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_overflow_p): Avoid signed integer overflow.
+ (rb_time_new): Fix overflow condition.
+
+Thu Aug 8 19:58:02 2013 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_threadptr_pending_interrupt_check_mask):
+ use RARRAY_RAWPTR() instead of RARRAY_PTR() because
+ there is no new reference.
+
+Thu Aug 8 19:56:52 2013 Koichi Sasada <ko1@atdot.net>
+
+ * string.c (rb_str_format_m): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
+
+Thu Aug 8 19:55:51 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: define USE_RGENGC_LOGGING_WB_UNPROTECT.
+
+Thu Aug 8 16:44:25 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: add old macro name `RUBY_EVENT_SWITCH'.
+ This macro name is obsolete because it is renamed to
+ RUBY_INTERNAL_EVENT_SWITCH, but it has compatibility problem
+ using this macro name like ruby-prof.
+ I want to remove this macro after ruby 2.1.
+
+Thu Aug 8 15:37:53 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/coverage/test_coverage.rb (TestCoverage#test_big_code): use `1'
+ instead of `p' to get rid of a side effect.
+ Kernel#p without any argument seems to do nothing, but flushes stdout.
+ and, if stdout is redirected to file, fsync() will be called on
+ Windows. so, when running test-all on Windows with redirection, such
+ as CI environment, this test took a lot of time.
+
+Thu Aug 8 14:54:18 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * NEWS: add description of incompatibility introduced by r42396.
+ [ruby-core:56329] [Bug #8722]
+
+Thu Aug 8 14:50:36 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (mini): portable target to build miniruby
+
+ * common.mk (bisect): run git-bisect with miniruby
+
+ * common.mk (bisect-ruby): run git-bisect with ruby
+
+ * tool/bisect.sh: script for git-bisect
+
+Thu Aug 8 12:11:43 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/webrick/test_httpresponse.rb (test_send_body_*_chunked): these
+ expectations assumes that the IOs are binmode. fixed test failures
+ introduced at r42427 on Windows.
+
+Thu Aug 8 10:27:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_last): revert r42400. [Bug #8739]
+
+Thu Aug 8 10:26:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_str_normalize_ospath): extract and move from dir.c.
+
+Thu Aug 8 05:59:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * test/openssl/test_ssl.rb: Fix test for CVE-2013-4073.
+ Patch by Antonio Terceiro. [Bug #8750] [ruby-core:56437]
+
+Thu Aug 8 03:37:38 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/httpresponse.rb: Allow #body to be an IO-like object
+ that responds to #readpartial and #read.
+ [ruby-trunk - Feature #8155]
+ * NEWS: NEWS for above
+ * test/webrick/test_httpresponse.rb: Tests for above.
+
+Wed Aug 7 23:06:26 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.c (Process.argv0): New method to return the original value
+ of $0. [Feature #8696]
+
+Wed Aug 7 23:05:55 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.c (Process.setproctitle): New method to change the title of
+ the running process that is shown in ps(1). [Feature #8696]
+
+Wed Aug 7 20:05:38 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_odd_p): Check the bignum length.
+ (rb_big_even_p): Ditto.
+
+Wed Aug 7 19:29:26 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (dbl2big): A condition simplified.
+
+Wed Aug 7 16:34:30 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/webrick/test_cgi.rb (TestWEBrickCGI#{start_cgi_server,test_cgi}):
+ mswin is not only mswin32 but also mswin64. [Bug #8746]
+
+Wed Aug 7 16:19:12 2013 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_start): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
+
+ * proc.c (curry): ditto.
+
+ * proc.c (rb_proc_call): remove line break.
+
+Wed Aug 7 13:20:12 2013 Koichi Sasada <ko1@atdot.net>
+
+ * random.c (random_load): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
+
+Wed Aug 7 12:58:23 2013 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (thread_start_func_2): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
+
+Wed Aug 7 09:00:24 2013 Zachary Scott <e@zzak.io>
+
+ * string.c: [DOC] Description of rb_str_equal [Fixes GH-375]
+ Based on a patch by @markijbema
+ https://github.com/ruby/ruby/pull/375
+
+Wed Aug 7 08:30:38 2013 Zachary Scott <e@zzak.io>
+
+ * ext/openssl/ossl_hmac.c: [DOC] Documentation for OpenSSL::HMAC
+ based on a patch by @repah documenting-ruby/ruby#14
+ https://github.com/documenting-ruby/ruby/pull/14
+
+Wed Aug 7 07:46:23 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rss/utils.rb: [DOC] RSS::Utils by Steve Klabnik [Bug #8745]
+
+Wed Aug 7 07:38:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (nlz16): Removed.
+ (nlz32): Ditto.
+ (nlz64): Ditto.
+ (nlz128): Ditto.
+ (nlz_int): New function.
+ (nlz_long): New function.
+ (nlz_long_long): New function.
+ (nlz_int128): New function.
+ (nlz): Follow above changes.
+ (bitsize): Follow above changes.
+
+Tue Aug 6 22:38:15 2013 Zachary Scott <e@zzak.io>
+
+ * time.c: [DOC] Typo in Time overview by @sparr [Fixes GH-374]
+ https://github.com/ruby/ruby/pull/374
+
+Tue Aug 6 22:35:32 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rss/1.0.rb: [DOC] Document RSS10 by Steve Klabnik [Bug #8740]
+
+Tue Aug 6 22:14:11 2013 Kouji Takao <kouji.takao@gmail.com>
+
+ * ext/readline/readline.c (readline_s_delete_text): remove
+ checking "$SAFE == 4".
+
+ * ext/readline/readline.c: fix rdoc, remove "Raises SecurityError"
+ and add "Raises NotImplementedError".
+
+Tue Aug 6 22:04:38 2013 Kouji Takao <kouji.takao@gmail.com>
+
+ * ext/readline/readline.c, test/readline/test_readline.rb: fix
+ indent.
+
+Tue Aug 6 21:59:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_last): return nil for empty range, or in the case the
+ predecessor is smaller than the begin. [Bug #8739]
+
+Tue Aug 6 21:48:31 2013 Kouji Takao <kouji.takao@gmail.com>
+
+ * ext/readline/readline.c (readline_s_set_point, Init_readline):
+ add Readline.point=(pos). Patched by naruse. [ruby-dev:47535]
+ [Feature #8675]
+
+Tue Aug 6 21:14:11 2013 Kouji Takao <kouji.takao@gmail.com>
+
+ * ext/readline/readline.c (Init_readline, readline_s_set_output)
+ (clear_rl_outstream, readline_s_set_input, clear_rl_instream)
+ (readline_readline): fix causing SEGV if closed IO object that is
+ set Readline.input or Readline.output. Patched by akr
+ [ruby-dev:47509] [Bug #8644]
+
+Tue Aug 6 17:56:40 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_push_frame): change type of stack_max to size_t.
+
+Tue Aug 6 17:42:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_last): exclude the last number of the exclusive range
+ if the end is Numeric. [ruby-dev:47587] [Bug #8739]
+
+Tue Aug 6 17:42:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_conv_from_wchar): converted string to CP_UTF8
+ should have UTF-8 encoding. otherwise no conversion takes place
+ later.
+
+Tue Aug 6 17:21:38 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_push_frame): fix stack overflow check codes.
+ Stack overflow check should be done *after* pushing a stack frame.
+ However, some stack overflow checking codes checked *before*
+ pushing a stack frame with iseq->stack_max.
+ To solve this problem, add a new parameter `stack_max' to specify
+ a possible consuming stack size.
+
+ * vm_core.h (CHECK_VM_STACK_OVERFLOW0): add to share the stack overflow
+ checking code.
+
+ * insns.def: catch up this change.
+
+ * vm.c, vm_eval.c: ditto.
+
+ * test/ruby/test_exception.rb: add a stack overflow test.
+ This code is reported by nobu.
+
+Tue Aug 6 17:02:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_conv_from_wchar): use WideCharToMultiByte(),
+ as like as mbstr_to_wstr(), in the first step of the conversion from
+ WCHAR.
+
+Tue Aug 6 16:14:32 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (eval_string_with_cref): copy cref to limit the scope of
+ refinements in the eval string. [ruby-core:56329] [Bug #8722]
+
+ * test/ruby/test_refinement.rb: related test.
+
+Tue Aug 6 12:23:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_realloc): Use VALGRIND_MAKE_MEM_UNDEFINED to
+ declare undefined memory area.
+ (bignew_1): Ditto.
+
+ * internal.h (VALGRIND_MAKE_MEM_DEFINED): Moved from gc.c
+ (VALGRIND_MAKE_MEM_UNDEFINED): Ditto.
+
+Tue Aug 6 01:40:37 2013 Zachary Scott <e@zzak.io>
+
+ * process.c: [DOC] Document caveats of command form of Process.spawn
+ with regard to the shell and OS. Patched by Steve Klabnik [Bug #8550]
+
+Tue Aug 6 01:28:35 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rss/0.9.rb: [DOC] Typo in example [Bug #8732]
+
+Tue Aug 6 01:22:37 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rss/2.0.rb: [DOC] Document RSS::Rss by Steve Klabnik #8740
+ * lib/rss/atom.rb: [DOC] Typo in rdoc by Steve Klabnik
+
+Mon Aug 5 23:47:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Rename local variables.
+
+Mon Aug 5 22:23:59 2013 Zachary Scott <e@zzak.io>
+
+ * vm_trace.c: [DOC] Fix TracePoint return values in examples
+ Based on a patch by @sho-h [Fixes GH-373]
+ https://github.com/ruby/ruby/pull/373
+
+Mon Aug 5 17:38:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_write_console): use MultiByteToWideChar() for
+ the last step of conversion to WCHAR, to get rid of warnings from
+ rb_enc_find() in miniruby. [ruby-dev:47584] [Bug #8733]
+
+ * win32/win32.c (wstr_to_mbstr, mbstr_to_wstr): fix wrong trimming.
+ WideCharToMultiByte() and MultiByteToWideChar() do not count
+ NUL-terminator in the size for conversion result, unless the input
+ length is -1.
+
+Mon Aug 5 11:51:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * include/ruby/encoding.h: document which user flags are used by
+ ENCODING_MASK for better greppability
+
+Mon Aug 5 10:01:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * object.c (rb_class_inherited_p): allow iclasses to be tested for
+ inheritance. [Bug #8686] [ruby-core:56174]
+
+ * test/ruby/test_method.rb: add test
+
+Mon Aug 5 06:13:48 2013 Zachary Scott <e@zzak.io>
+
+ * enumerator.c: [DOC] Remove reference to Enumerator::Lazy#cycle
+ Patch by @kachick [Fixes GH-372]
+ https://github.com/ruby/ruby/pull/372
+
+Mon Aug 5 03:57:16 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rss/0.9.rb: [DOC] Document RSS09 by Steve Klabnik [Bug #8732]
+
+Mon Aug 5 03:35:11 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rexml/attribute.rb: [DOC] Update example for #namespace
+ Patch by Ippei Obayashi [Bug #8685] [ruby-core:56173]
+
+Sun Aug 4 21:08:29 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_zip): performance implement by using
+ ALLOCA_N() to allocate tmp buffer.
+
+Sun Aug 4 07:14:49 2013 Tanaka Akira <akr@fsij.org>
+
+ * README.EXT, README.EXT.ja: Mention rb_integer_pack and
+ rb_integer_unpack.
+
+Sun Aug 4 01:54:45 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (BARY_TRUNC): New macro.
+ (bary_cmp): Use BARY_TRUNC.
+ (bary_mul_toom3): Ditto.
+ (bary_divmod): Ditto.
+ (abs2twocomp): Ditto.
+ (bigfixize): Ditto.
+ (rb_cstr_to_inum): Ditto.
+ (big2str_karatsuba): Ditto.
+ (bigdivrem): Ditto.
+
+Sun Aug 4 00:57:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_karatsuba): Don't allocate new temporary buffer
+ if the buffer is enough for current invocation.
+
+Sun Aug 4 00:22:34 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary2bdigitdbl): New function.
+ (bdigitdbl2bary): Ditto.
+ (bary_mul_single): Use bdigitdbl2bary.
+ (power_cache_get_power): Ditto.
+ (bary_divmod): Use bary2bdigitdbl.
+ (big2str_orig): Ditto.
+ (bigdivrem): Ditto.
+
+Sat Aug 3 22:47:11 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: The branch condition of selecting multiplication
+ algorithms should check smaller argument because Karatsuba and Toom3
+ is effective only if both arguments are big.
+ (bary_mul_toom3_branch): Compare the smaller argument to
+ TOOM3_MUL_DIGITS.
+ (bary_mul): Compare the smaller argument to KARATSUBA_MUL_DIGITS.
+
+Sat Aug 3 22:23:31 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_orig): Receive the number to stringize as
+ BDIGIT array and size.
+ (big2str_karatsuba): Receive the number to stringize as BDIGIT array
+ and size. Use an temporary array of BDIGIT.
+ (rb_big2str1): Follow the above change.
+
+Sat Aug 3 13:30:04 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (MAX_BASE36_POWER_TABLE_ENTRIES): Renamed from
+ MAX_BIG2STR_TABLE_ENTRIES.
+ (base36_power_cache): Renamed from big2str_power_cache.
+ (base36_numdigits_cache): Renamed from big2str_numdigits_cache.
+
+Sat Aug 3 10:33:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_set_integer_literal): use rb_rational_raw1() for
+ integral rational because no reduction is needed with 1.
+
+Sat Aug 3 09:46:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (setup_passwd, setup_group): set proper encodings to
+ string members.
+
+Sat Aug 3 09:30:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (rb_struct_define_under): new function to define Struct
+ under the given namespace, not under Struct. [Feature #8264]
+
+ * ext/etc/etc.c: use rb_struct_define_under.
+
+Sat Aug 3 06:55:29 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (value_expr_gen): now NODE_DEFN and NODE_DEFS are not void
+ value expressions. get rid of wrong warning with -w, and make to
+ pass tests with chkbuild. ref. [Feature #3753]
+
+Sat Aug 3 04:23:48 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/refinements.rdoc: Remove mention of instance_eval and
+ module_eval from scope section per:
+ http://twitter.com/shugomaeda/status/363219951336693761
+
+Sat Aug 3 02:22:05 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_orig): Refactored.
+
+Sat Aug 3 01:20:19 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigadd_core): Removed.
+ (bigadd): Use bary_add instead of bigadd_core.
+
+Sat Aug 3 00:52:43 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big2str1): Simplify power_level calculation.
+
+Sat Aug 3 00:34:20 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_zip): use rb_ary_new2() to create buffer
+ if rb_block_arity() > 1.
+
+Sat Aug 3 00:12:00 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * NEWS: Add the description that IO#seek supports SEEK_DATA
+ and SEEK_HOLE.
+
+Fri Aug 2 23:57:57 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm.c (m_core_define_method, m_core_define_singleton_method): now
+ the value of def-expr is the Symbol of the name of the method, not
+ nil.
+ ref. [ruby-dev:42151] [Feature #3753]
+
+ * test/ruby/test_syntax.rb (TestSyntax#test_value_of_def): test for
+ above changes.
+
+Fri Aug 2 23:54:11 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_zip): performance improvement by avoiding
+ array creation if rb_block_arity() > 1.
+
+Fri Aug 2 23:50:53 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (power_cache_get_power): Apply bigtrunc to the result of
+ bigsq.
+ (big2str_karatsuba): Fix number of leading zero characters.
+
+Fri Aug 2 23:48:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): calculate denominator directly as powers of
+ ten, not parsing string.
+
+ * parse.y (parser_number_literal_suffix): return bit set of found
+ suffixes.
+
+ * parse.y (parser_set_number_literal, parser_set_integer_literal):
+ split from parser_number_literal_suffix to set yylval.
+
+ * parse.y (parser_yylex): parse rational number literal with decimal
+ point precisely.
+
+ * parse.y (simple_numeric): integrate numeric literals and simplify
+ numeric rules.
+
+ * ext/ripper/eventids2.c (ripper_init_eventids2): ripper support for
+ new literals, tRATIONAL and tIMAGINARY.
+
+Fri Aug 2 18:33:28 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_karatsuba): Reduce power_level more than one at
+ recursion, if possible.
+ (rb_big2str1): Follow the above change.
+
+Fri Aug 2 12:25:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul): Swap x and y for bary_mul1 if x is longer than y.
+ [ruby-dev:47565] [Bug #8719] Reported by Narihiro Nakamura.
+
+Fri Aug 2 10:39:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * parse.y (negate_lit): add T_RATIONAL and T_COMPLEX to the switch
+ statement, and call rb_bug() if an unknown type is passed to
+ negate_lit(). [ruby-core:56316] [Bug #8717]
+
+ * bootstraptest/test_literal_suffix.rb (assert_equal): add test
+
+Fri Aug 2 09:14:47 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/refinements.rdoc: Improve description of where you may
+ activate refinements.
+
+Fri Aug 2 07:45:55 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_orig): Remove len argument.
+ (big2str_karatsuba): Ditto.
+ (rb_big2str1): Follow above change.
+
+Thu Aug 2 02:32:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: Add the description of number literal suffixes.
+
+Thu Aug 2 00:02:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * bootstraptest/test_literal_suffix.rb: add two test cases to
+ examine that "1if true" and "1rescue nil" are recognized as 1.
+
+Thu Aug 1 23:45:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * rational.c (rb_flt_rationalize_with_prec): new public C function
+ to rationalize a Float instance with a precision.
+
+ * rational.c (rb_flt_rationalize): new public C function to
+ rationalize a Float instance. A precision is calculated from
+ the given float number.
+
+ * include/ruby/intern.h: Add rb_flt_rationalize_with_prec and
+ rb_flt_rationalize.
+
+ * parse.y: implement number literal suffixes, 'r' and 'i'.
+ [ruby-core:55096] [Feature #8430]
+
+ * bootstraptest/test_literal_suffix.rb: add tests for parser to scan
+ number literals with the above tsuffixes.
+
+Thu Aug 1 23:55:08 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big2str1): Remove a local variable.
+
+Thu Aug 1 23:33:01 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_cstr_to_inum): Use power_cache_get_power.
+
+Thu Aug 1 21:02:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big2str1): Raise an error for too big number.
+
+Thu Aug 1 20:46:29 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (power_cache_get_power): Hide cached Bignum objects.
+
+Thu Aug 1 19:15:05 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big2str1): Remove non-trim mode.
+ (rb_big2str0): Non-trim mode implemented here.
+ (big2str_find_n1): Change the result type to long again.
+ (big2str_base_powerof2): Don't take arguments: len and trim.
+ (rb_big2str): Follow above change.
+
+Thu Aug 1 12:37:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_alloc): New function to allocate the result string.
+ It is called after actual length is calculated.
+ (big2str_struct): Add fields: negative, result and ptr.
+ (big2str_orig): Write out the result via b2s->ptr.
+ (big2str_orig): Ditto.
+ (rb_big2str1): Don't allocate the result string at beginning.
+
+Thu Aug 1 07:36:27 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_orig): Use temporary buffer when trim mode.
+
+Thu Aug 1 06:28:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_orig): Simplified because RBIGNUM_LEN(x) <= 2 now.
+ (big2str_struct): Two fields added: hbase2, hbase2_numdigits.
+ (rb_big2str1): Initialize above fields.
+
+Thu Aug 1 04:06:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/options.rb (RDoc#finish): include root path in include
+ paths, to work in another directory than the source directory.
+ [ruby-core:56282] [Bug #8712]
+
+ * test/test_rdoc_markup_pre_process.rb (TestRDocMarkupPreProcess#setup):
+ fix input_file_name, as the test script is not pre-processed.
+
+Thu Aug 1 01:45:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_karatsuba): Fix a condition of power_level.
+
+Thu Aug 1 01:09:02 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (LOG2_KARATSUBA_BIG2STR_DIGITS): Removed.
+ (KARATSUBA_BIG2STR_DIGITS): Removed.
+ (big2str_numdigits_cache): New variable.
+ (power_cache_get_power): Merged with power_cache_get_power0.
+ This function returns maxpow_in_bdigit_dbl(base)**(2**power_level).
+ (rb_big2str1): use power_cache_get_power.
+
+Wed Jul 31 23:59:28 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_find_n1): Change the return type to size_t.
+ (big2str_orig): Ditto.
+ (big2str_karatsuba): Ditto.
+ (rb_big2str1): Follow the above changes.
+
+Wed Jul 31 23:19:06 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (power_cache_get_power): Change numdigits_ret to size_t *.
+ (big2str_orig): Change len argument to size_t.
+ (big2str_karatsuba): Ditto.
+ (rb_big2str1): Follow the above changes.
+
+Wed Jul 31 22:59:47 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/parse/test_notation_declaration.rb: Change class
+ name to follow file name change.
+
+Wed Jul 31 22:57:50 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_parsetest.rb: Rename to ...
+ * test/rexml/parse/test_notation_declaration.rb: ... this.
+
+Wed Jul 31 22:54:39 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_mixin.rb: Remove duplicated tests.
+
+Wed Jul 31 22:52:55 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_parsetest.rb: Fix typos in expected
+ value.
+ pubilc ->
+ public
+ ^^
+
+Wed Jul 31 22:50:51 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_parsetest.rb: Add tests that focus
+ system literal in external ID system notation declaration.
+
+Wed Jul 31 22:36:21 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_cmp): Extracted from rb_big_cmp.
+ (power_cache_get_power): Change n1 argument (number of digits) to
+ power_level which is just passed to power_cache_get_power0.
+ (big2str_karatsuba): Ditto.
+ (rb_big2str1): Calculate the initial power_level.
+
+Wed Jul 31 22:04:36 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_parsetest.rb: Fix a typo.
+ Extern ID ->
+ ExternalID
+ ^^
+
+Wed Jul 31 22:01:36 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_parsetest.rb: Add tests that focus
+ public ID in external ID notation declaration.
+
+Wed Jul 31 22:01:24 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * parse.y: fix build error with bison-3.0.
+
+Wed Jul 31 21:58:53 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_parsetest.rb: Split test patterns.
+
+Wed Jul 31 21:42:33 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_parsetest.rb: Group tests.
+
+Wed Jul 31 21:37:51 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_mixin.rb (TestNotationDecl#test_name):
+ Move to ...
+ * test/rexml/test_notationdecl_parsetest.rb
+ (TestNotationDecl#test_name): ... here.
+
+Wed Jul 31 21:37:47 2013 Kouhei Sutou <kou@cozmixng.org>
+
+Wed Jul 31 21:31:49 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_parsetest.rb: Remove setup because it
+ doesn't share anything with other tests.
+
+Wed Jul 31 21:24:55 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_attributes_mixin.rb: Remove a needless shebang.
+ * test/rexml/test_notationdecl_mixin.rb: ditto.
+ * test/rexml/test_doctype.rb: ditto.
+ * test/rexml/test_xml_declaration.rb: ditto.
+ * test/rexml/test_changing_encoding.rb: ditto.
+
+Wed Jul 31 21:20:08 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_notationdecl_parsetest.rb: remove a needless shebang.
+
+Wed Jul 31 20:11:01 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_rindex): fix bug introduced in r42269.
+ "".rindex("") should return 0.
+ (str_rindex): ditto.
+
+Wed Jul 31 19:55:33 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (MAX_BIG2STR_TABLE_ENTRIES): Use SIZEOF_SIZE_T.
+ (power_cache_get_power0): Add rb_bug call for too bit i argument.
+ (power_cache_get_power): Simplified.
+
+Wed Jul 31 18:32:25 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/uri/common.rb (URI.decode_www_form_component): Use String#b.
+
+Wed Jul 31 18:24:02 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine, mod_using, top_using): don't show
+ warnings because Refinements are no longer experimental.
+ [ruby-core:55993] [Feature #8632]
+
+ * test/ruby/test_refinement.rb: related test.
+
+ * NEWS: fixes for the above change.
+
+Wed Jul 31 17:55:55 2013 Shota Fukumori <her@sorah.jp>
+
+ * lib/uri/common.rb (URI.decode_www_form_component):
+ Don't raise error when str includes multibyte characters.
+
+Wed Jul 31 17:45:39 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_rindex): performance improvement by using
+ memrchr(3).
+
+Wed Jul 31 16:43:30 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_rindex): refactoring and avoid to call str_nth() if
+ pos == 0.
+
+Wed Jul 31 14:41:36 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: [DOC] Add a couple of notes on Hash as storage.
+ ref. [Feature #6589]
+
+Wed Jul 31 14:38:52 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: [DOC] Fix example result. Hash is now ordered.
+
+Wed Jul 31 14:38:10 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: [DOC] Use the term "sorted" instead of "ordered"
+ when mentioning SortSet.
+
+Wed Jul 31 12:18:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_struct): New structure.
+ (big2str_orig): Use big2str_struct.
+ (big2str_karatsuba): Ditto.
+ (rb_big2str1): Ditto.
+
+Wed Jul 31 12:02:16 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rubygems.rb: [DOC] typo in url patch by @Red54 [Fixes #369]
+ https://github.com/ruby/ruby/pull/369
+
+Wed Jul 31 07:09:07 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems from master as of commit 523551c
+ * test/rubygems: ditto.
+
+Tue Jul 30 22:21:54 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * test/ruby/test_hash.rb: add a test for enumeration order of Hash.
+
+Tue Jul 30 18:52:27 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#intersect?, Set#disjoint?): Add new methods for
+ testing if two sets have any element in common.
+ [ruby-core:45641] [Feature #6588] Based on the code by marcandre.
+
+Tue Jul 30 17:16:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (ruby__sfvextra): add QUOTE flag to escape unprintable
+ characters.
+
+Tue Jul 30 11:00:52 2013 Zachary Scott <e@zzak.io>
+
+ * ext/curses/extconf.rb: [DOC] nodoc to reduce Object pollution
+
+Tue Jul 30 08:19:42 2013 Tanaka Akira <akr@fsij.org>
+
+ * sizes.c (Init_sizes): Define sizes only if the type actually exists.
+
+Mon Jul 29 22:55:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sizes.c (Init_sizes): define RbConfig::SIZEOF. [Feature #8568]
+
+Mon Jul 29 22:25:20 2013 Zachary Scott <e@zzak.io>
+
+ * ext/curses/curses.c: [DOC] Update location of samples
+ * samples/curses/*: Move Curses samples and refactor from mixin
+ The samples are included in rdoc for module and use of mixin is
+ confusing
+
+Mon Jul 29 22:16:11 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (LOG2_KARATSUBA_BIG2STR_DIGITS): Renamed from
+ LOG2_KARATSUBA_DIGITS.
+ (KARATSUBA_BIG2STR_DIGITS): Renamed from KARATSUBA_DIGITS.
+
+Mon Jul 29 22:04:45 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_compare_by_id): add function prototype.
+
+Mon Jul 29 21:53:41 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_compare_by_id): don't call rb_hash_rehash()
+ if self.compare_by_identity? == true.
+
+Mon Jul 29 21:29:48 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_assoc): performance improvement by replacing
+ compare function in RHASH(hash)->ntbl->type temporarily like r42224.
+ it falls back to rb_hash_foreach() if st_lookup() doesn't find the key.
+
+ * test/ruby/test_hash.rb: add a test for above.
+
+Mon Jul 29 21:15:30 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/ruby/test_lazy_enumerator.rb
+ (TestLazyEnumerator#test_initialize): Make sure
+ Enumerator::Lazy#initialize raises error if the object is
+ frozen. The check was performed by rb_ivar_set() before
+ rb_check_frozen() was added to enumerator_init().
+
+Mon Jul 29 21:06:42 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_init): Add a frozenness check to
+ prevent a frozen Enumerator object from being reinitialized with
+ a different enumerable object. This is the least we should do,
+ and more fixes will follow. [Fixes GH-368] Patch by Kenichi
+ Kamiya.
+
+ * enumerator.c (generator_init): Ditto.
+
+Mon Jul 29 20:14:24 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_assoc): revert r42224. table->type->compare is
+ called only if hashes are matched.
+
+ * test/ruby/test_hash.rb: add a test to check using #== to compare.
+
+Mon Jul 29 17:00:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yycompile): store file name as String to keep the encoding.
+
+ * parse.y (rb_parser_compile_string_path, rb_parser_compile_file_path):
+ new functions to pass file name as a String.
+
+ * parse.y (gettable_gen): return a copy of the original file name, not
+ a copy in filesystem encoding.
+
+ * vm_eval.c (eval_string_with_cref): use Qundef instead of "(eval)".
+
+Mon Jul 29 16:53:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_initialize_copy): copy st_table type even if empty.
+ [ruby-core:56256] [Bug #8703]
+
+Mon Jul 29 16:34:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_initialize_copy): clear old table before copy new
table.
- * parse.y (top_local_setup): modify realloc to handle offset.
+Mon Jul 29 16:34:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_assoc): aggregate object can be initialized only
+ with link time constants.
+
+Mon Jul 29 14:54:44 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_assoc): performance improvement by replacing
+ compare function in RHASH(hash)->ntbl->type temporarily.
+
+Mon Jul 29 14:52:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (xsystem): expand environment variable in all macros not
+ expanded with RbConfig. [Bug #8702]
+
+ * test/mkmf/test_framework.rb (create_framework): replace all $@ not
+ only once.
+
+Mon Jul 29 06:54:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pipe): use enum for compile time constants,
+ instead of const int for debugging.
+
+Mon Jul 29 00:11:49 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem): Specialized implementation added for
+ nx == 2 && ny == 2
+
+Sun Jul 28 20:28:41 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * io.c (io_getpartial): use rb_str_locktmp_ensure().
+ [ruby-core:56121] [Bug #8669]
+
+ * io.c (rb_io_sysread): ditto.
+
+ * test/ruby/test_io.rb: add tests for above.
+
+Sun Jul 28 20:10:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): should make static libraries for extensions
+ to be statically linked. [Bug #7948]
+
+Sun Jul 28 17:38:32 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c: add internal API rb_str_locktmp_ensure().
+
+ * io.c (io_fread): use rb_str_locktmp_ensure().
+ [ruby-core:56121] [Bug #8669]
+
+ * test/ruby/test_io.rb: add a test for above.
+
+Sun Jul 28 13:04:39 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * io.c (interpret_seek_whence): support SEEK_DATA and SEEK_HOLE.
+ These are whences for lseek(2) supported by Linux since version 3.1.
+ [ruby-core:56123] [Feature #8671]
+
+ * test/ruby/test_io.rb: Add tests for above.
+
+Sun Jul 28 12:41:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (absint_numwords_generic): The char_bit variable changed
+ to static constant.
+
+Sun Jul 28 12:03:23 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Constify bary_* functions.
+
+Sun Jul 28 11:12:07 2013 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_absint_size): Declaration moved from
+ internal.h to calculate required buffer size to pack integers.
+ (rb_absint_numwords): Ditto.
+ (rb_absint_singlebit_p): Ditto.
+ [ruby-core:42813] [Feature #6065]
+
+Sun Jul 28 10:54:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pipe): fix pipe name formatting. as "%x" may
+ not contain '0' at all, fill at fixed position instead.
+
+Sun Jul 28 00:35:14 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_size): Return the bignum "bytewise" size.
+ [ruby-core:55578] [Feature #8553]
+ This is accepted by matz on DevelopersMeeting20130727Japan.
+
+Sun Jul 28 00:07:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_integer_pack): Declaration moved from
+ internal.h.
+ (rb_integer_unpack): Ditto.
+ [ruby-core:42813] [Feature #6065]
+
+Fri Jul 26 23:18:13 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS: Add a new feature that REXML::Parsers::StreamParser
+ supports "entity" event.
+
+Fri Jul 26 23:14:31 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/streamparser.rb
+ (REXML::Parsers::StreamParser#parse): Add "entity" event support to
+ listener. [Bug #8689] [ruby-dev:47542]
+ Reported by Ippei Obayashi.
+ * test/rexml/test_stream.rb (StreamTester#entity): Add a test for
+ the above case.
+
+Fri Jul 26 23:05:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): separate numeric literal from succeeding
+ token, and treat 'e' as floating point number only if followed by
+ exponent part.
+
+Fri Jul 26 22:14:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_exec.h (CHECK_VM_STACK_OVERFLOW_FOR_INSN): surround with
+ do/while (0), and remove unnecessary casts.
+
+Fri Jul 26 20:12:07 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/lib/syslog/logger.rb (Syslog::Logger): Add facility
+ to Syslog::Logger. [Fixes GH-305] patch by Max Shytikov
+ https://github.com/ruby/ruby/pull/305
+
+Fri Jul 26 19:25:17 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.h, tool/instruction.rb: not an error, but a BUG if stack
+ overflow checking failed just before/after the beginning of an
+ instruction. It should be treated as a BUG.
+ Please tell us if your code cause BUG with this problem.
+ This check will removed soon (for performance).
+
+Fri Jul 26 18:30:14 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_memcpy): cast to int to suppress a warning.
+
+Fri Jul 26 18:21:58 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_memcpy): try to enable optimization.
+ At least on my environments, I don't see any errors
+ with many trials. Please tell us if you find any GC bugs.
+
+Fri Jul 26 17:49:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/file.c (fix_string_encoding): fix target encoding. the
+ parameter `encoding' is not the target encoding but the original
+ encoding.
+
+Fri Jul 26 14:05:19 2013 Zachary Scott <e@zzak.io>
+
+ * ext/fiddle/*: [DOC] More doc on dlopen and RTLD_DEFAULT from r42184
+
+Fri Jul 26 13:08:53 2013 Zachary Scott <e@zzak.io>
+
+ * ext/fiddle/lib/fiddle.rb: [DOC] Document Fiddle.dlopen(nil)
+ * ext/fiddle/handle.c: [DOC] Document Fiddle::Handle.new(nil)
+
+Fri Jul 26 13:04:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_load_internal): use rb_load_file_str() to keep path
+ encoding.
+
+ * load.c (rb_require_safe): search in OS path encoding for Windows.
+
+ * ruby.c (rb_load_file_str): load file with keeping path encoding.
+
+ * win32/file.c (rb_file_load_ok): use WCHAR type API assuming incoming
+ path is encoded in UTF-8. [ruby-core:56136] [Bug #8676]
+
+ * file.c (rb_str_encode_ospath): simplify using rb_str_conv_enc().
+
+ * win32/file.c (fix_string_encoding): simplify with rb_str_conv_enc().
+
+ * win32/file.c (convert_mb_to_wchar): use bare pointer instead of
+ VALUE, and remove useless argument.
+
+Fri Jul 26 11:42:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * rational.c (f_round_common): Rational is expected to be returned by
+ Rational#*, but mathn.rb breaks that assumption. [ruby-core:56177]
+ [Bug #8687]
+
+Fri Jul 26 01:37:45 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/ruby.h: check defined(USE_RGENGC_LOGGING_WB_UNPROTECT)
+
+Fri Jul 26 01:21:41 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (rb_file_expand_path_internal): fix r42160; skip '~'.
+
+Thu Jul 25 17:53:18 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#connect): disable Nagle's algorithm on
+ HTTP connection. [ruby-core:56158] [Feature #8681]
+
+Thu Jul 25 17:49:42 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_to_s): convert closing parenthesis to the target encoding
+ if it is ASCII incompatible encoding. [ruby-core:56063] [Bug #8650]
+
+Thu Jul 25 17:21:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (is_obj_encoding): new macro to check if obj is an
+ Encoding. obj can be any type while is_data_encoding expects T_DATA
+ only.
+
+Thu Jul 25 17:17:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_expand_path_internal): should clear coderange after
+ copying user name as binary data.
+
+Thu Jul 25 16:17:55 2013 Koichi Sasada <ko1@atdot.net>
+
+ * encoding.c (check_encoding): Check T_DATA or not.
+ is_data_encoding(obj) assumes that `obj' is T_DATA.
+
+Thu Jul 25 13:06:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_s_home): use rb_home_dir_of and rb_default_home_dir.
+
+ * file.c (rb_home_dir_of): split from rb_home_dir() for the home
+ directry of the given user, and the user name is a VALUE, not a bare
+ pointer. should raise if the user does not exist.
+
+ * file.c (rb_default_home_dir): split from rb_home_dir() for the home
+ directry of the current user.
+
+Thu Jul 25 12:32:11 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/openssl/ossl.c: support additional three thread synchronization
+ functions. [ruby-trunk - Bug #8386]
+
+Thu Jul 25 07:15:58 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems from master as of commit 4ff70cc
+ * test/rubygems: ditto.
+
+Wed Jul 24 20:57:44 2013 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_set_arguments): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
+
+ * compile.c (iseq_set_exception_table): ditto.
+
+Wed Jul 24 19:49:54 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb (find_proxy): raise BadURIError if the URI is
+ a relative URI. [Bug #8645]
+
+Wed Jul 24 18:56:06 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_expandarray): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR() because there is no new reference.
+
+ * vm_insnhelper.c (vm_caller_setup_args): ditto.
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): ditto.
+
+Wed Jul 24 18:40:11 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c, gc.c: move ary_unprotect_logging() into
+ rb_gc_unprotect_logging() which is general version
+
+ * include/ruby/ruby.h: add USE_RGENGC_LOGGING_WB_UNPROTECT
+ to enable.
+
+Wed Jul 24 17:37:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_expand_path_internal): preserve the file name
+ encoding in an exception message.
+
+Wed Jul 24 08:04:49 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/-ext-/tracepoint/test_tracepoint.rb: add GC on/off to count
+ GC events strictly.
+
+Tue Jul 23 23:19:24 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/extconf.rb (CRYPTO_THREADID): check exist or not.
+
+ * ext/openssl/ossl.c (ossl_thread_id): use rb_nativethread_self()
+ implemented at r42137 to allow threads which doesn't associated with
+ Ruby thread to use openssl functions.
+
+ * ext/openssl/ossl.c (Init_ossl_locks): If CRYPTO_THREADID is defined
+ (OpenSSL 1.0.0 or later has it) use CRYPTO_THREADID_set_callback()
+ instead of CRYPTO_set_id_callback() because its argument is
+ unsigned long; it may cause id collision on mswin64
+ whose sizeof(unsigned long) < sizeof(void*).
+ http://www.openssl.org/docs/crypto/threads.html
+
+ * ext/openssl/ossl.c (ossl_threadid_func): defined for above.
+
+Tue Jul 23 20:47:36 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Move functions.
+
+Tue Jul 23 20:14:55 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_divmod): Add special cases for x < y easily detected
+ and nx == 2 && ny == 2.
+
+Tue Jul 23 19:48:38 2013 Koichi Sasada <ko1@atdot.net>
+
+ * thread_(pthread|win32).h: rename rb_thread_cond_t to
+ rb_nativethread_cond_t.
+
+ * thread.c, thread_pthread.c, thread_win32.c, vm_core.h: catch up
+ renaming.
+
+Tue Jul 23 19:44:32 2013 Koichi Sasada <ko1@atdot.net>
+
+ * thread_native.h: add rb_nativethread_self() which returns
+ current running native thread identifier.
+
+ * thread_[pthread|win32].c: implement rb_nativethread_self().
+
+Tue Jul 23 19:34:11 2013 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.h, thread_win32.h: rename rb_thread_id_t to
+ rb_nativethread_id_t.
+
+ * thread_pthread.c, vm_core.h: use rb_nativethread_id_t.
+
+Tue Jul 23 18:56:11 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/openssl/ossl.c: use system native (system provided)
+ thread locking APIs added by last commit.
+ This patch fixes [Bug #8386].
+ "rb_mutex_*" APIs control only "Ruby" threads.
+ Not for native threads.
+
+Tue Jul 23 18:44:15 2013 Koichi Sasada <ko1@atdot.net>
+
+ * thread_native.h: added.
+ Move native thread related lines from vm_core.h.
+ And declare several functions "rb_nativethread_lock_*",
+ manipulate locking.
+
+ * common.mk: add thread_native.h.
+
+ * thread.c: add functions "rb_nativethread_lock_*".
+
+ * thread.c, thread_[pthread,win32].[ch]: rename rb_thread_lock_t
+ to rb_nativethread_lock_t to make it clear that this lock is for
+ native threads, not for ruby threads.
+
+Tue Jul 23 16:14:57 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_before_sweep): fix spacing.
+
+Tue Jul 23 15:57:11 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (heap_get_freeobj): clear slot->freelist here.
+ This means that this slot doesn't have any free objects.
+ And store this slot with objspace->heap.using_slot.
+
+ * gc.c (gc_before_sweep): restore objspace->freelist
+ into objspace->heap.using_slot->freelist.
+ This means that using_slot has free objects which are
+ pointed from objspace->freelist.
+
+ * gc.c (gc_slot_sweep): do not need to clear slot->freelist.
+
+Tue Jul 23 09:34:49 2013 Zachary Scott <e@zzak.io>
+
+ * sample/drb/README*.rdoc: [DOC] migrate DRb sample READMEs to rdoc
+
+Tue Jul 23 09:28:05 2013 Zachary Scott <e@zzak.io>
+
+ * lib/drb/invokemethod.rb: [DOC] nodoc InvokeMethod18Mixin
+
+Tue Jul 23 08:44:37 2013 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_asn1.c (asn1time_to_time): Implement YYMMDDhhmmZ
+ format for ASN.1 UTCTime. [ruby-trunk - Bug #8664]
+ * test/openssl/test_asn1.rb: Test for the above.
+
+Tue Jul 23 08:11:32 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rexml/streamlistener.rb: [DOC] Fix examples in
+ REXML::StreamListener#entitydecl patch by Ippei Obayashi [Bug #8665]
+
+Tue Jul 23 07:44:59 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems from master as of commit b165260
+ * test/rubygems: ditto.
+
+Tue Jul 23 07:14:31 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mulsub_1xN): New function.
+ (bary_mul_toom3): Use bary_mulsub_1xN.
+
+Tue Jul 23 03:32:23 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (KARATSUBA_BALANCED): New macro.
+ (TOOM3_BALANCED): Ditto.
+ (bary_mul_balance_with_mulfunc): Use KARATSUBA_BALANCED and
+ TOOM3_BALANCED.
+ (rb_big_mul_balance): Relax a condition.
+ (rb_big_mul_karatsuba): Use KARATSUBA_BALANCED.
+ (rb_big_mul_toom3): Use TOOM3_BALANCED.
+ (bary_mul_karatsuba_branch): Use KARATSUBA_BALANCED.
+ (bary_mul_toom3_branch): Use TOOM3_BALANCED.
+
+Tue Jul 23 01:34:45 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem_mulsub): Extracted from bigdivrem1.
+ (bigdivrem1): Use bary_add.
+
+Mon Jul 22 18:39:52 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_enumerate_chars): specify array capa
+ with str_strlen().
+
+ * string.c (rb_str_enumerate_codepoints): ditto.
+
+Mon Jul 22 18:01:33 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_enumerate_chars): specify array capa.
+
+Mon Jul 22 17:24:14 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_each_char_size): performance improvement by
+ using rb_str_length().
+
+Mon Jul 22 16:32:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (eval_string_with_cref): check by Check_TypedStruct
+ instead of rb_obj_is_kind_of.
+
+Mon Jul 22 13:19:22 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_resize_capa): use RARRAY_RAWPTR() because
+ this code creates no new references.
+
+Mon Jul 22 12:58:18 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_memfill): added.
+
+ * array.c (rb_ary_initialize): use ary_memfill().
+
+ * array.c (rb_ary_fill): ditto.
+
+ * array.c (rb_ary_slice_bang): use RARRAY_RAWPTR() because
+ this code creates no new references.
+
+Mon Jul 22 10:09:46 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_slot_sweep): need to add empty RVALUE as freeobj.
+
+Mon Jul 22 09:48:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (eval_string_with_cref): use the given file name unless
+ eval even if scope is given. additional fix for [Bug #8436].
+ based on the patch by srawlins at [ruby-core:56099] [Bug #8662].
+
+Mon Jul 22 09:24:19 2013 Kouji Takao <kouji@takao7.net>
+
+ * ext/readline/readline.c (Init_readline): added
+ Readline.delete_text. [ruby-dev:45789] [Feature #6626]
+ * ext/readline/extconf.rb: check for rl_delete_text() in Readline library.
+
+ Thanks, Nobuyoshi Nakada, for the patch.
+
+Mon Jul 22 03:15:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/date/date_parse.c (rfc2822_cb): check if wday is given, since it
+ can be omitted.
+
+Mon Jul 22 00:15:20 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_sq_fast): Refine expressions.
+
+Sun Jul 21 21:08:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul): Use simple multiplication if yl is small.
+ (rb_cstr_to_inum): Invoke bigsq instead of bigmul0.
+ (bigsq): Re-implemented.
+ (bigmul0): Invoke bigsq if two arguments are identical.
+
+Sun Jul 21 09:58:19 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul_toom3): New function based on bigmul1_toom3.
+ (bary_mul_toom3_branch): Call bary_mul_toom3.
+ (rb_big_mul_toom3): Ditto.
+ (bigmul1_toom3): Removed.
+ (big_real_len): Ditto.
+ (big_split): Ditto.
+ (big_split3): Ditto.
+
+Sun Jul 21 08:12:16 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * proc.c (proc_to_s): use PRIsVALUE to preserve the result encoding.
+
+Sun Jul 21 03:36:18 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (rb_hash_flatten): use NUM2INT to raise TypeError on 32bit
+ platform. it's introduced by r42039
+
+Sun Jul 21 01:07:45 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * common.mk (help): Fix environment variable name and argument.
+ Actually it can also be a directory or any argument for
+ test/unit runner. [Fixes GH-363]
+
+Sat Jul 20 22:44:50 2013 Zachary Scott <e@zzak.io>
+
+ * common.mk: Document running a single test [Fixes GH-363]
+ Patch by Avdi Grimm https://github.com/ruby/ruby/pull/363
+
+Sat Jul 20 22:39:56 2013 Zachary Scott <e@zzak.io>
+
+ * sample/*: whitespace patch by Sergio Campama [Fixes GH-364]
+ https://github.com/ruby/ruby/pull/364
+
+Sat Jul 20 22:33:13 2013 Zachary Scott <e@zzak.io>
+
+ * doc/regexp.rdoc: [DOC] Fix typo in example [Fixes GH-365]
+ Patch by Juanito Fatas https://github.com/ruby/ruby/pull/365
+
+Sat Jul 20 17:46:03 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_succ): add missing case NEIGHBOR_WRAPPED.
+ r42078 caused buggy behavior like "\xFF".b -> "\x01\xFF".b
+
+Sat Jul 20 15:22:38 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_resize): use simple memcpy because there are no new
+ references.
+
+Sat Jul 20 15:02:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * safe.c (ruby_safe_level_4_warning): define for old extension
+ libraries. [Bug #8652]
+
+Sat Jul 20 14:38:00 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_make_shared): make shared array shady.
+ Making non-shady shared array causes SEGV (see rubyci).
+ It seems a bug around shared array.
+
+Sat Jul 20 12:14:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (enc_succ_char, enc_pred_char): consider wchar case.
+ [ruby-core:56071] [Bug #8653]
+
+ * string.c (rb_str_succ): do not replace with invalid char.
+
+ * encoding.c (rb_enc_code_to_mbclen): add new function which returns
+ mbclen from codepoint like as rb_enc_codelen() but 0 for invalid
+ char.
+
+ * include/ruby/encoding.h (rb_enc_code_to_mbclen): declaration and
+ shortcut macro.
+
+Fri Jul 19 21:59:12 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: declare type_name() at the beginning of file.
+
+Fri Jul 19 21:35:09 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c: reduce shady operations.
+
+ * array.c (rb_ary_modify, ary_make_partial, rb_ary_splice,
+ rb_ary_replace, rb_ary_eql, rb_ary_compact_bang):
+ use RARRAY_RAWPTR() instead of RARRAY_PTR().
+
+ * array.c (rb_ary_shift): use RARRAY_PTR_USE() without WB because
+ there are not new relations.
+
+ * array.c (ary_ensure_room_for_unshift): ditto.
+
+ * array.c (rb_ary_sort_bang): ditto.
+
+ * array.c (rb_ary_delete_at): ditto.
+
+ * array.c (rb_ary_reverse_m): use RARRAY_RAWPTR() because
+ there are not new relations.
+
+Fri Jul 19 20:58:20 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c: reduce shade operations.
+
+ * array.c (rb_ary_modify): use RARRAY_RAWPTR().
+
+ * array.c (ary_make_substitution, rb_ary_s_create, ary_make_partial,
+ rb_ary_splice, rb_ary_resize, rb_ary_rotate_m, rb_ary_times):
+ use ary_memcpy().
+
+Fri Jul 19 19:55:28 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_mem_clear): added. This operation doesn't need WB
+ because this operation creates a reference to Qnil.
+
+ * array.c (ary_make_shared, rb_ary_store, rb_ary_shift_m,
+ rb_ary_splice, rb_ary_resize, rb_ary_fill): use ary_mem_clear()
+ instead of rb_mem_clear().
+
+ * array.c (ary_make_shared): use RARRAY_RAWPTR() instead of RARRAY_PTR().
+
+Fri Jul 19 19:18:51 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c: fix commit miss.
+ RGENGC_UNPROTECT_LOGGING should be 0.
+
+Fri Jul 19 19:15:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_resurrect): use RARRAY_RAWPTR() because there is no
+ writing.
+
+ * array.c (rb_ary_new_from_values): use ary_memcpy().
+
+Fri Jul 19 19:07:31 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_memcpy): add a function to copy VALUEs into ary
+ with write barrier. If ary is promoted, use write barrier correctly.
+
+ * array.c (rb_ary_cat, rb_ary_unshift_m, rb_ary_dup,
+ rb_ary_sort_bang, rb_ary_replace, rb_ary_plus): use ary_memcpy().
+
+Fri Jul 19 15:32:57 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_store): use RARRAY_PTR_USE() instead of RARRAY_PTR().
+ Clearing memory space doesn't need WBs.
+
+Fri Jul 19 15:19:37 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_ensure_room_for_push): use RARRAY_RAWPTR() instead of
+ RARRAY_PTR. In this code, there are no "write" operation.
+
+ * array.c (rb_ary_equal): ditto.
+
+ * array.c (recursive_equal): ditto.
+
+Fri Jul 19 15:09:22 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, internal.h (rb_gc_writebarrier_remember_promoted): add a new
+ function to remember an specified object. This api is only
+ experimental (strongly depend on WB/rgengc strategy).
+
+Fri Jul 19 14:56:00 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_unprotect_logging): use (void *) for first parameter
+ because VALUE is not defined before including ruby/ruby.h.
+
+Fri Jul 19 14:19:48 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/pathname/pathname.c (path_inspect): use PRIsVALUE to preserve
+ the result encoding.
+
+Fri Jul 19 12:35:41 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_tcp.rb (test_initialize_failure): Use EADDRNOTAVAIL
+ to test an error message generated by bind() failure.
+
+Fri Jul 19 11:27:38 2013 Zachary Scott <e@zzak.io>
+
+ * lib/racc/parser.rb: [DOC] Capitalize "Ruby" in documentation
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
+
+Fri Jul 19 11:26:28 2013 Zachary Scott <e@zzak.io>
+
+ * ext/psych/lib/psych*: [DOC] Capitalize "Ruby" in documentation
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
+
+Fri Jul 19 11:25:12 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rdoc/*: [DOC] Capitalize "Ruby" in documentation
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
+
+Fri Jul 19 11:23:55 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rubygems*: [DOC] Capitalize "Ruby" in documentation
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
+
+Fri Jul 19 11:16:54 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#to_set): Define Set#to_set so that aSet.to_set
+ returns self. [Fixes GH-359]
+
+Fri Jul 19 11:10:23 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rake/*: [DOC] Capitalize "Ruby" in documentation
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
+
+Fri Jul 19 01:04:14 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/-test-/bignum/intpack.c: Renamed from ext/-test-/bignum/pack.c.
+ (Init_intpack): Renamed from Init_pack.
+ Reported by Naohisa Goto. [ruby-dev:47526] [Bug #8655]
+
+Fri Jul 19 00:54:27 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * test/ruby/test_array.rb (test_count): add a test case for #count
+ with an argument. See Bug #8654.
+
+Thu Jul 18 23:45:06 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_eql): compare RARRAY_PTR() for performance
+ improvement in case of that self and other are shared.
+
+Thu Jul 18 22:46:42 2013 Zachary Scott <e@zzak.io>
+
+ * lib/cgi.rb: [DOC] Capitalize "Ruby" in documentation [Fixes GH-341]
+ Patch by Dave Worth https://github.com/ruby/ruby/pull/341
+ * lib/webrick.rb: ditto
+ * lib/scanf.rb: ditto
+ * lib/xmlrpc/config.rb: ditto
+ * lib/resolv.rb: ditto
+ * lib/e2mmap.rb: ditto
+ * lib/fileutils.rb: ditto
+ * lib/mkmf.rb: ditto
+ * lib/cgi/session.rb: ditto
+ * lib/yaml.rb: ditto
+ * lib/erb.rb: ditto
+ * lib/irb.rb: ditto
+ * lib/tracer.rb: ditto
+ * lib/net/http.rb: ditto
+ * ext/syslog/lib/syslog/logger.rb: ditto
+ * sample/pty/expect_sample.rb: ditto
+
+Thu Jul 18 21:30:50 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_sq_fast): Specialize the last iteration of the
+ outer loop.
+ (bigfixize): A condition simplified.
+
+Thu Jul 18 21:15:41 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_equal): compare RARRAY_PTR() for performance
+ improvement in case of that self and other are shared.
+
+Thu Jul 18 20:44:51 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_fill): use memfill().
+
+Thu Jul 18 20:35:14 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * array.c (rb_ary_count): check length to avoid SEGV
+ while iterating. Remove other pointer loop when arg is given.
+
+ * test/ruby/test_array.rb (test_count): add test for bug.
+ [ruby-core:56072] [Bug #8654]
+
+Thu Jul 18 18:14:36 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (rb_ary_count): iterate items appropriately.
+ [Bug #8654]
+
+Thu Jul 18 17:35:41 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_flatten): performance improvement by not using
+ rb_hash_to_a() to avoid array creation with rb_assoc_new().
+
+Thu Jul 18 16:16:17 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c: add logging feature for RGenGC's write barrier unprotect
+ event.
+
+Thu Jul 18 15:45:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RUBY_SAFE_LEVEL_CHECK): make only
+ rb_set_safe_level(4) an error always but make rb_secure(4) an error
+ only in the core. [ruby-dev:47517] [Bug #8652]
+
+Thu Jul 18 15:42:01 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: fix spell miss.
+
+Thu Jul 18 15:11:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (ruby_safe_level_4): get rid of special
+ character. [ruby-dev:47512] [misc #8646]
+
+Thu Jul 18 14:51:39 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (ary_alloc): slim setup process.
+
+Thu Jul 18 14:37:57 2013 Koichi Sasada <ko1@atdot.net>
+
+ * string.c (str_alloc): no need to clear RString (already cleared).
+
+Thu Jul 18 12:57:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (BDIGITS_ZERO): Defined.
+ (bary_pack): Use BDIGITS_ZERO.
+ (bary_unpack): Ditto.
+ (bary_mul_single): Ditto.
+ (bary_mul_normal): Ditto.
+ (bary_sq_fast): Ditto.
+ (bary_mul_balance_with_mulfunc): Ditto.
+ (bary_mul_precheck): Ditto.
+ (bary_mul_toom3_branch): Ditto.
+ (rb_cstr_to_inum): Ditto.
+ (big_shift3): Ditto.
+ (bigmul1_toom3): Ditto.
+ (bary_divmod): Ditto.
+
+Thu Jul 18 06:30:02 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: rename gc related functions with prefix "gc_".
+ * before_gc_sweep() -> gc_before_sweep().
+ * after_gc_sweep() -> gc_after_sweep().
+ * lazy_sweep() -> gc_lazy_sweep().
+ * rest_sweep() -> gc_rest_sweep().
+ * slot_sweep() -> gc_slot_sweep().
+
+ * gc.c: rename a heap management function with prefix "heap_".
+ * get_freeobj() -> heap_get_freeobj().
+
+ * gc.c: rename markable_object_p() to is_markable_object().
+
+Wed Jul 17 22:57:40 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (delete_if_i): use ST_DELETE.
+
+Wed Jul 17 22:34:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: An static assertion for relation of SIZEOF_LONG and
+ SIZEOF_BDIGITS is added.
+ (bary_mul_precheck): Reduce comparisons.
+ (bary_mul): Invoke bary_sq_fast or bary_mul1 if the bignum size is
+ small.
+ (bigfixize): Resize the argument bignum here.
+ (bignorm): Don't call bigtrunc after bigfixize.
+
+Wed Jul 17 22:13:26 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_replace): performance improvement by using
+ st_copy().
+
+Wed Jul 17 17:19:54 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: rename heap management functions with prefix "heap_".
+ * allocate_sorted_array() -> heap_allocate_sorted_array().
+ * slot_add_freeobj() -> heap_slot_add_freeobj().
+ * assign_heap_slot() -> heap_assign_slot().
+ * add_heap_slots() -> heap_add_slots().
+ * init_heap() -> heap_init().
+ * set_heap_increment() -> heap_set_increment().
+
+ * gc.c (initial_expand_heap): inlined in rb_gc_set_params().
+
+Wed Jul 17 17:12:23 2013 Matthew M. Boedicker <matthewm@boedicker.org>
+
+ * hash.c (env_fetch): Add key name to message on ENV.fetch KeyError,
+ as well as Hash#fetch. [ruby-core:56062] [Feature #8649]
+
+Wed Jul 17 15:59:33 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: catch up last changes for debugging/checking mode.
+
+Wed Jul 17 15:50:10 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_objspace_free): free slot itself.
+
+ * gc.c (objspace_each_objects): fix condition.
+ Use slot->body instead of slot.
+
+ * gc.c (count_objects): use "slot" variable.
+
+Wed Jul 17 15:21:10 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (unlink_heap_slot): fix memory leak.
+ free slot itself at free_heap_slot().
+
+ Reproduce-able code is here:
+ N1 = 100_000; N2 = 1_000_000
+ N1.times{ary = []; N2.times{ary << ''}}
+ Maybe this problem is remaining in Ruby 2.0.0.
+
+ * gc.c (unlink_heap_slot): remove not working code.
+
+Wed Jul 17 14:31:13 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: re-design the heap structure.
+
+ (1) The heap is consists of a set of slots.
+ (2) Each "slot" has a "slot_body".
+ slot::start and slot::limit specify RVALUE beginning address
+ and number of RVALUE in a "slot_body".
+ (3) "slot_body" contains a pointer to slot (slot_body::header::slot)
+ and an array of RVALUE.
+ (4) heap::sorted is an array of "slots", sorted by an address of
+ slot::body.
+
+ See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/GC_design
+ for more details (figure).
+
+ * gc.c: Avoid "heaps" terminology. It is ambiguous.
+
+Wed Jul 17 13:29:16 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: fix heaps_header and heaps_slot to reduce memory consumption.
+ (1) move heaps_header::start and limit to heaps_slot.
+ (2) remove heaps_header::end which can be calculated by start+limit.
+
+ * gc.c: catch up above change.
+
+Wed Jul 17 12:30:05 2013 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/st.h (st_strcasecmp): Macro defined for compatibility.
+ (st_strncasecmp): Ditto.
+
+Wed Jul 17 11:57:45 2013 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI::Util#escape, unescape): Avoid use of regexp
+ special global variable. [Feature #8648] Thanks to fotos.
+
+Wed Jul 17 11:57:10 2013 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Util#url_encode): Avoid use of regexp special global
+ variable. [Feature #8648] Thanks to fotos.
+
+Wed Jul 17 08:12:41 2013 Tanaka Akira <akr@fsij.org>
+
+ * st.c (st_locale_insensitive_strcasecmp): Renamed from st_strcasecmp.
+ (st_locale_insensitive_strncasecmp): Renamed from st_strncasecmp.
+
+ * include/ruby/st.h: Follow above changes.
+
+ * include/ruby/ruby.h: Ditto.
+
+Wed Jul 17 00:14:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigmul1_toom3): Use bigdivrem_single instead of bigdivrem.
+ (big_three): Removed.
+ (Init_Bignum): Don't initialize big_three.
+
+Tue Jul 16 21:46:03 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * configure.in: revert r42008. strcasecmp() uses the current locale.
+
+ * include/ruby/ruby.h: ditto.
+
+ * st.c (st_strcasecmp): ditto.
+
+Tue Jul 16 21:07:04 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * configure.in: check strcasecmp().
+
+ * include/ruby/ruby.h: use strcasecmp() as st_strcasecmp() if it
+ exists.
+
+ * st.c (st_strcasecmp): define the function only if strcasecmp()
+ doesn't exist.
+
+Tue Jul 16 20:21:28 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigsq): Renamed from bigsqr.
+
+Tue Jul 16 19:42:08 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (USHORT): Unused macro removed.
+
+Tue Jul 16 19:18:51 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: slim a path of newobj_of().
+
+ * gc.c (objspace): add a new field objspace::freelist, which contains
+ available RVALUEs.
+
+ * gc.c (newobj_of): simply call new function `get_freeobj()'.
+ get_freeobj() returns objspace::freelist. If objspace::freelist
+ is not available, refill objspace::freelist with a slot pointed by
+ objspace::heap::free_slots.
+
+ * gc.c (before_gc_sweep): clear objspace::freelist.
+
+ * gc.c (slot_sweep): clear slot::freelist.
+
+ * gc.c (heaps_prepare_freeslot): renamed to heaps_prepare_freeslot.
+
+ * gc.c (unlink_free_heap_slot): remove unused function.
+
+ * gc.c (rb_free_const_table): remove unused function.
+
+Tue Jul 16 19:05:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big_shift3): Big shift width is not a problem for right
+ shift.
+
+Tue Jul 16 18:50:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_count): [DOC] fix typo. Array#count uses ==, not
+ ===. a question at asakusa.rb ML.
+
+Tue Jul 16 18:35:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul_karatsuba): Avoid duplicate calculation when
+ squaring.
+ (bary_mul_toom3_branch): Ditto.
+
+Tue Jul 16 17:43:22 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (link_free_heap_slot): removed.
+
+ * gc.c (slot_sweep): use `heaps_add_freeslot' instead of
+ `link_free_heap_slot'.
+
+ * gc.c (assign_heap_slot): use local variable `slot' instead of
+ `heaps'.
+
+Tue Jul 16 17:21:39 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (assign_heap_slot): refactoring variable names.
+
+ * gc.c (slot_add_freeobj): added.
+
+ * gc.c (heaps_add_freeslot): added.
+
+ * gc.c (finalize_list, rb_gc_force_recycle, slot_sweep): use
+ `slot_add_freeobj' instead of modifying linked list directly.
+
+Tue Jul 16 16:30:58 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (lazy_sweep): refactoring.
+
+Tue Jul 16 13:32:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_set_index): since r41967, old terminator is dealt
+ with in str_fill_term(). should not consider it here because this
+ function is called before any encoding is set.
+
+Tue Jul 16 11:12:03 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * proc.c (rb_block_arity): raise ArgumentError if no block given.
+
+Tue Jul 16 08:15:22 2013 Zachary Scott <e@zzak.io>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] document top-level
+ classes from BigDecimal utils native extensions
+
+Tue Jul 16 03:23:03 2013 Zachary Scott <e@zzak.io>
+
+ * numeric.c: [DOC] improve rdoc formatting for parameters and links
+
+Mon Jul 15 14:40:00 2013 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_big2str0): Deprecated.
+
+ * bignum.c (rb_big2str1): Renamed from rb_big2str0.
+ (rb_big2str0): Deprecated wrapper for rb_big2str1.
+ (rb_big2str): Invoke rb_big2str1 instead of rb_big2str0.
+
+Mon Jul 15 14:13:02 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * struct.c (rb_struct_each_pair): use rb_yield_values(2, key, value)
+ instead of rb_yield(rb_assoc_new(key, value)) if rb_block_arity()
+ is greater than 1.
+
+Mon Jul 15 13:46:26 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Add static assertions.
+
+Mon Jul 15 13:36:02 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_each_pair): performance improvement by using
+ rb_block_arity().
+
+Mon Jul 15 13:15:37 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * proc.c (rb_block_arity): create internal API rb_block_arity().
+ it returns arity of given block.
+
+Mon Jul 15 13:07:27 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * lib/prime.rb (Prime::EratosthenesGenerator,
+ Prime::EratosthenesSieve): New implementation by
+ robertjlooby <robertjlooby AT gmail.com>.
+
+ * test/test_prime.rb: updated with new method name
+
+Mon Jul 15 11:32:46 2013 Zachary Scott <e@zzak.io>
+
+ * numeric.c (rb_cNumeric): [DOC] Added comment for Numeric to fix doc
+
+Mon Jul 15 11:24:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (maxpow_in_bdigit_dbl): Useless #if removed.
+
+Mon Jul 15 11:10:46 2013 Zachary Scott <e@zzak.io>
+
+ * bignum.c (rb_big_coerce): [DOC] Add docs for Bignum#coerce
+ Based on patch by Juanito Fatas [Fixes GH-360]
+ https://github.com/ruby/ruby/pull/360
+
+Mon Jul 15 10:56:01 2013 Zachary Scott <e@zzak.io>
+
+ * thread.c (mutex_sleep): [DOC] Awake thread will reacquire lock
+ By Tim Abdulla [Fixes GH-342] https://github.com/ruby/ruby/pull/342
+
+Mon Jul 15 10:45:09 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (nlz16): Use __builtin_clz if possible.
+ (nlz32): Use __builtin_clz or __builtin_clzl if possible.
+ (nlz64): Use __builtin_clzl or __builtin_clzll if possible.
+ (nlz128): Use __builtin_clzll if possible.
+
+ * configure.in: Check __builtin_clz, __builtin_clzl and
+ __builtin_clzll.
+
+Mon Jul 15 09:39:07 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (power_cache_get_power): Use bitsize instead of ceil_log2.
+ (ones): Removed.
+ (next_pow2): Removed.
+ (floor_log2): Removed.
+ (ceil_log2): Removed.
+
+ * configure.in (__builtin_popcountl): Don't check.
+
+Mon Jul 15 02:47:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * localeinit.c (rb_locale_charmap, Init_enc_set_filesystem_encoding):
+ move from encoding.c.
+
+ * miniinit.c (rb_locale_charmap, Init_enc_set_filesystem_encoding):
+ define miniruby specific functions only.
+
+Mon Jul 15 02:32:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_init): no longer needs NO_PRESERVED_ENCODING.
+
+ * encoding.c (enc_inspect): defer loading autoloaded encoding.
+
+ * encoding.c (enc_check_encoding): use is_data_encoding() to check
+ type consistently.
+
+ * encoding.c (must_encoding): return rb_encoding* instead of encoding
+ index.
+
+ * encoding.c (enc_check_encoding): use is_data_encoding() to check
+ type consistently.
+
+ * encoding.c (must_encoding): return rb_encoding* instead of encoding
+ index.
+
+Mon Jul 15 02:21:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_fill_term): consider old terminator length, and should
+ not use rb_enc_ascget since it depends on the current encoding which
+ may not be compatible with the new terminator. [Bug #8634]
+
+ * encoding.c (enc_inspect): use PRIsVALUE to preserve the result
+ encoding.
+
+Sun Jul 14 23:21:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: Check __builtin_popcountl, __builtin_bswap32 and
+ __builtin_bswap64.
+
+ * internal.h (swap32): Use the configure result for the condition to
+ use __builtin_bswap32.
+ (swap64): Use the configure result for the condition to use
+ __builtin_bswap64.
+
+ * bignum.c (ones): Use the configure result for the condition to use
+ __builtin_popcountl.
+ (bary_unpack_internal): Use appropriate types for swap argument.
+
+Sun Jul 14 22:21:11 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_subb): Support xn < yn.
+ (bigsub_core): Removed.
+ (bigsub): Don't compare before subtraction. Just subtract and
+ get the two's complement if the subtraction causes a borrow.
+
+Sun Jul 14 00:36:03 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (DIGSPERLONG): Unused macro removed.
+ (DIGSPERLL): Ditto.
+
+Sun Jul 14 00:32:51 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_aref): Less scan when the number is negative.
+
+Sun Jul 14 00:17:42 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big_shift): Avoid signed integer overflow.
+
+Sun Jul 14 00:14:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul_precheck): Use bary_small_lshift or
+ bary_mul_normal if xl is 1.
+
+Sat Jul 13 22:58:16 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big_shift3): New function.
+ big_lshift and big_rshift are merged.
+ (big_shift2): New function.
+ (big_lshift): Use big_shift3.
+ (big_rshift): Ditto.
+ (check_shiftdown): Removed.
+ (rb_big_lshift): Use big_shift2 and big_shift3.
+ (rb_big_rshift): Ditto.
+ (big_lshift): Removed.
+ (big_rshift): Ditto.
+
+Sat Jul 13 15:51:38 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_small_lshift): Use size_t instead of long.
+ (bary_small_rshift): Ditto.
+
+Sat Jul 13 15:33:33 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_small_lshift): Functions moved to remove
+ declaration.
+ (bary_small_rshift): Ditto.
+
+Sat Jul 13 12:27:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_associate_index): fill new terminator length, not
+ old one.
+
+Sat Jul 13 12:24:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32: move from ext/dl and ext/fiddle. since ext/extmk.rb
+ builds extensions in alphabetical order, compiled?('fiddle') under
+ ext/dl makes no sense.
+
+Sat Jul 13 09:26:09 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (biglsh_bang): Removed.
+ (bigrsh_bang): Ditto.
+ (bigmul1_toom3): Use bary_small_lshift and bary_small_rshift.
+
+Sat Jul 13 01:04:43 2013 Zachary Scott <e@zzak.io>
+
+ * lib/rubygems/psych_additions.rb: Ignore Psych docs here
+
+Fri Jul 12 18:10:46 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/fiddle/win32/lib/win32/registry.rb
+ (Win32::Registry::API#make_wstr): same as r41922.
+
+Fri Jul 12 16:28:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_associate_index): refill the terminator if it
+ becomes longer than before. [ruby-dev:47500] [Bug #8624]
+
+ * string.c (str_null_char, str_fill_term): get rid of out of bound
+ access.
+
+ * string.c (rb_str_fill_terminator): add a parameter for the length of
+ new terminator.
+
+Fri Jul 12 11:26:25 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_reject_bang): do not call rb_hash_foreach() if RHash
+ has ntbl and it is empty.
+
+Fri Jul 12 11:17:41 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (recursive_hash): use RHASH_SIZE() to check hash size.
+
+Fri Jul 12 00:20:00 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_size): use RHASH_SIZE().
+
+Fri Jul 12 00:08:24 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_values): set array capa to RHASH_SIZE().
+
+Thu Jul 11 23:54:45 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * hash.c (rb_hash_keys): set array capa to RHASH_SIZE().
+
+Thu Jul 11 21:30:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pow): undef pow to get rid of infinite
+ recursive call. re-fix [Bug #8495]. [ruby-core:55923] [Bug #8621]
+
+Thu Jul 11 20:18:13 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/registry.rb (Win32::Registry::API#make_wstr):
+ remove workaround to append WCHAR terminator.
+
+ * transcode.c (str_encode_associate): fill terminator after conversion.
+
+ * string.c (rb_enc_str_new, rb_str_set_len, rb_str_resize): fill
+ minimum length of the encoding as the terminator.
+
+ * string.c (str_buf_cat, rb_str_buf_append, rb_str_splice_0): ditto.
+
+ * string.c (str_make_independent_expand, rb_str_modify_expand): make
+ the capacity enough for multi-byte terminator.
+
+ * string.c (rb_string_value_cstr): fill minimum length of the encoding
+ as the terminator.
+
+ * string.c (rb_string_value_cstr): check null char in char, not in
+ byte.
+
+Thu Jul 11 14:48:35 2013 Zachary Scott <e@zzak.io>
+
+ * array.c: Replace confusing example for #reverse_each in overview
+ Patch by Earl St Sauver [Fixes documenting-ruby/ruby-12]
+ https://github.com/documenting-ruby/ruby/pull/12
+
+Thu Jul 11 14:22:37 2013 Zachary Scott <e@zzak.io>
+
+ * test/drb/ut_eq.rb: Use localhost for drb tests [Bug #7311]
+ Patch by Vit Ondruch [ruby-core:49101]
+ * test/drb/ut_array.rb: ditto
+ * test/drb/ut_array_drbssl.rb: ditto
+
+Thu Jul 11 13:48:03 2013 Zachary Scott <e@zzak.io>
+
+ * sprintf.c: Fix typo patch by @hynkle [Fixes GH-357]
+ https://github.com/ruby/ruby/pull/357
+
+Thu Jul 11 13:00:34 2013 Zachary Scott <e@zzak.io>
+
+ * lib/securerandom.rb: Refactor conditions by Rafal Chmiel
+ [Fixes GH-326] https://github.com/ruby/ruby/pull/326
+
+Thu Jul 11 12:04:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Don't use toom3 after once karatsuba is chosen.
+ (mulfunc_t): New type.
+ (bary_mul_toom3_start): Renamed from bary_mul.
+ (bary_mul_karatsuba_start): Renamed from bary_mul.
+ (bary_mul_balance_with_mulfunc): Renamed from bary_mul_balance and
+ new argument, mulfunc, is added.
+ (rb_big_mul_balance): Invoke bary_mul_balance_with_mulfunc with
+ bary_mul_toom3_start.
+ (bary_mul_karatsuba): Invoke bary_mul_karatsuba_start instead of
+ bary_mul.
+ (bary_mul_precheck): Extracted from bary_mul.
+ (bary_mul_karatsuba_branch): Extracted from bary_mul.
+ (bary_mul_karatsuba_start): New function to call bary_mul_precheck
+ and bary_mul_karatsuba_branch.
+ (bary_mul_toom3_branch): Extracted from bary_mul.
+ (bary_mul_toom3_start): New function to call bary_mul_precheck and
+ bary_mul_toom3_branch.
+ (bary_mul): Just call bary_mul_toom3_start.
+ Arguments for work memory are removed.
+ (rb_cstr_to_inum): Follow the bary_mul change.
+ (bigmul0): Ditto.
+
+Thu Jul 11 10:46:38 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/probes_to_wiki.rb: fix usage comment. use Enumerable#grep
+ which yields each elements to reduce unnecessary array.
+
+Thu Jul 11 10:09:18 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c (rb_daemon): daemon(3) is implemented with fork(2).
+ Therefore it needs rb_thread_atfork(). (and revert r41903)
+
+Thu Jul 11 03:22:10 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * tool/probes_to_wiki.rb: adding a script to convert probes.d to wiki
+ format for easy wiki updates.
+
+Thu Jul 11 00:54:07 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * man/ri.1: Incorrect use of .Dd macro [Bug #8620] by Tristan Hill
+
+Thu Jul 11 00:48:29 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/delegate.rb: Add example for __setobj__ and __getobj__
+ [Bug #8615] Patch by Caleb Thompson
+
+Wed Jul 10 23:29:22 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/logger.rb: Use :call-seq: for method signature rdoc
+
+Wed Jul 10 23:23:18 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/logger.rb (#add): Remove incorrect rdoc for return value
+ [Bug #8567] Reported by Tim Pease.
+
+Wed Jul 10 23:12:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_subpos): make public function.
+
+Wed Jul 10 22:44:19 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Add a static assertion for RBIGNUM_EMBED_LEN_MAX.
+
+Wed Jul 10 22:31:25 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_index): cache single byte flag and some
+ cosmetic changes.
+
+Wed Jul 10 22:03:27 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_2comp): Don't use bary_plus_one.
+ (bary_add_one): Replaced by the implementation of bary_plus_one.
+
+Wed Jul 10 20:48:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (sizeof_bdigit_dbl): check sizeof(BDIGIT_DBL).
+
+ * internal.h (STATIC_ASSERT): move from enum.c.
+
+Wed Jul 10 20:08:21 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (SIZEOF_BDIGIT_DBL): Add a ifdef guard for test.
+
+Wed Jul 10 14:18:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (fork_daemon): kill the other threads all and abandon the
+ kept mutexes.
+
+Wed Jul 10 11:35:36 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/net/http/test_http.rb (TestNetHTTP_v1_2#test_get,
+ TestNetHTTP_v1_2_chunked#test_get): shouldn't check
+ HttpResponse#decode_content if Zlib is not available.
+ ko1 complained via IRC.
+
+Wed Jul 10 10:20:07 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/rbinstall.rb: always require rubygems to stabilize rubygems
+ related status like whether Gem::Specification is defined or not.
+
+ * tool/rbinstall.rb (Gem::Specification.unresolved_deps): define stub.
+
+Wed Jul 10 08:21:15 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems 2.1
+ * test/rubygems: Ditto.
+
+Wed Jul 10 07:34:34 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/ext/ext_conf_builder.rb: Remove siteconf file after
+ building the gem.
+ * test/rubygems/test_gem_ext_ext_conf_builder.rb: Test for the above.
+
+ * lib/rubygems/psych_tree.rb (module Gem): Add backward compatibility
+ for r41148
+
+ * test/rubygems/test_gem_package.rb: Add backward compatibility for
+ double-slash elimination.
+
+Wed Jul 10 06:22:27 2013 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (date_zone_to_diff): [ruby-core:55831].
+
+Wed Jul 10 00:41:42 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul): x*1 is x.
+
+Tue Jul 9 22:24:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul1): No need to invoke MEMZERO at last.
+ (bary_mul_single): Invoke MEMZERO here.
+
+Tue Jul 9 21:40:01 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_text.rb: Add missing tests for Text#<<.
+ Reported by nagachika. Thanks!!!
+
+Tue Jul 9 18:02:38 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/fileutils.rb (FileUtils#chown_R): Do not skip traversal even
+ if user and group are both nil, to be consistent with #chown and
+ other commands.
+
+Tue Jul 9 17:58:26 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/fileutils/test_fileutils.rb
+ (TestFileUtils#assert_output_lines): New utility assertion
+ method for testing verbose output.
+
+Tue Jul 9 17:43:57 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_tracer.rb: catch up recent rubygems changes.
+
+Tue Jul 9 16:58:30 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/{dl,fiddle}/win32/lib/win32/registry.rb: hope that the final
+ resolution to fix the failure of test-all. and includes Win64
+ support (fixed a potential bug).
+
+Tue Jul 9 15:57:20 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * object.c: Fix rdoc for Kernel#<=>. [Fixes GH-352]
+
+Tue Jul 9 15:53:51 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/fileutils.rb (FileUtils#mode_to_s): Define mode_to_s() also
+ as singleton method, or FileUtils.chmod fails in verbose mode.
+
+Tue Jul 9 15:16:02 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/fileutils/fileasserts.rb
+ (Test::Unit::FileAssertions#assert_not_symlink): Add a missing
+ optional argument "message".
+
+Tue Jul 9 15:03:24 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/fileutils.rb (FileUtils#chown, FileUtils#chown_R): If user
+ and group are both nil, print ":".
+
+Tue Jul 9 12:47:08 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * io.c (appendline): use READ_CHAR_PENDING_XXX macros and
+ RSTRING_END().
+
+ * io.c (rb_io_getline_1): rewrite nested if statement into one
+ statement.
+
+Tue Jul 9 11:04:35 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/{dl,fiddle}/win32/lib/win32/registry.rb (Win32::Registry#check):
+ should report the position of the error.
+
+ * ext/{dl,fiddle}/win32/lib/win32/registry.rb
+ (Win32::Registry#QueryValue): workaround for test-all crash.
+
+Tue Jul 9 10:27:56 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/{dl,fiddle}/win32/lib/win32/registry.rb
+ (Win32::Registry.expand_environ): use suitable encoding for the
+ string.
+
+ * ext/{dl,fiddle}/win32/lib/win32/registry.rb (Win32::Registry#read):
+ should return REG_SZ, REG_EXPAND_SZ and REG_MULTI_SZ values with
+ the expected encoding -- assumed as the same encoding of name.
+
+Tue Jul 9 10:02:45 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/{dl,fiddle}/win32/lib/win32/registry.rb
+ (Win32::Registry::Error#initialize): use suitable encoding for the
+ string.
+
+Tue Jul 9 09:46:53 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/registry.rb (Win32::Registry.expand_environ):
+ use suitable encoding for the string. fixed a test-all error of
+ r41838.
+
+ * ext/fiddle/win32/lib/win32/registry.rb: same changes of r41838 and
+ this revision of dl's win32/registry.rb.
+
+Tue Jul 9 07:39:45 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 2.0.4. See
+ https://github.com/rubygems/rubygems/blob/2.0/History.txt for changes
+
+Tue Jul 9 01:47:16 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (biglsh_bang): Don't shift a BDIGIT with BITSPERDIG bits.
+ (bigrsh_bang): Ditto.
+
+Tue Jul 9 01:17:57 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigrsh_bang): Fix bignum digits overrun.
+
+Tue Jul 9 00:46:22 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (biglsh_bang): Fix bignum digits under-run.
+
+Mon Jul 8 23:36:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/registry.rb (Error, API): use WCHAR
+ interfaces. c.f. [Bug #8508]
+
+Mon Jul 8 23:13:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pow): move from win32.h and disable strict
+ ANSI mode macro to let _controlfp() stuff defined.
+ [ruby-core:55312] [Bug #8495]
+
+ * numeric.c (finite): add declaration for strict ANSI.
+ [ruby-core:55312] [Bug #8495]
+
+ * thread_win32.c (w32_thread_start_func, thread_start_func_1),
+ (timer_thread_func): use __stdcall instead of _stdcall which is
+ unavailable in strict ANSI mode. [ruby-core:55312] [Bug #8495]
+
+ * win32/win32.c (gettimeofday): use __cdecl instead of _cdecl.
+
+Mon Jul 8 22:41:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul): Arguments for work memory added.
+ (bary_mul_balance): Ditto.
+ (bary_mul_karatsuba): Ditto.
+
+Mon Jul 8 22:03:30 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_sq_fast): New function for testing.
+ (rb_big_mul_toom3): Ditto.
+
+ * internal.h (rb_big_sq_fast): Declared.
+ (rb_big_mul_toom3): Ditto.
+
+Mon Jul 8 21:59:34 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul_balance): Initialize a local variable to suppress
+ a warning.
+
+Mon Jul 8 20:55:22 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul_balance): Reduce work memory.
+
+Mon Jul 8 08:26:15 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * test/openssl/test_pkey_ec.rb: Skip tests for "Oakley" curves as
+ they are not suitable for ECDSA.
+ [ruby-core:54881] [Bug #8384]
+
+Mon Jul 8 08:03:01 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul): Add a RB_GC_GUARD.
+
+Sun Jul 7 23:56:32 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul_karatsuba): Unreachable code removed. Remove
+ several branches.
+
+Sun Jul 7 22:59:06 2013 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_big_mul_normal): Declared.
+ (rb_big_mul_balance): Ditto.
+ (rb_big_mul_karatsuba): Ditto.
+
+ * bignum.c (rb_big_mul_normal): New function for tests.
+ (rb_big_mul_balance): Ditto.
+ (rb_big_mul_karatsuba): Ditto.
+
+Sun Jul 7 19:21:30 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Reorder functions to decrease forward reference.
+
+Sun Jul 7 14:41:57 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: (bigsub_core): Use bary_sub.
+ (bary_sub): Returns a borrow flag. Use bary_subb.
+ (bary_subb): New function for actually calculating subtraction with
+ borrow.
+ (bary_sub_one): New function.
+ (bigadd_core): Use bary_add.
+ (bary_add): Returns a carry flag. Use bary_addc.
+ (bary_addc): New function for actually calculating addition with
+ carry.
+ (bary_add_one): New function.
+ (bary_muladd_1xN): Extracted from bary_mul_normal.
+ (bigmul1_normal): Removed.
+ (bary_mul_karatsuba): New function.
+ (bary_mul1): Invoke rb_thread_check_ints after bary_mul_normal.
+ (bary_mul): Remove most and least significant zeros before actual
+ multiplication. Use bary_sq_fast, bary_mul_balance,
+ bary_mul_karatsuba and bigmul1_toom3 as bigmul0.
+ (bigmul1_balance): Removed.
+ (bigmul1_karatsuba): Removed.
+ (bigsqr_fast): Removed.
+ (bary_sparse_p): Extracted from big_sparse_p.
+ (big_sparse_p): Removed.
+ (bigmul0): Use bary_mul.
+
+Sun Jul 7 11:54:33 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS: Add REXML::Text#<< related updates.
+
+Sun Jul 7 11:49:19 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/text.rb (REXML::Text#<<): Support appending in not
+ "raw" mode. [Bug #8602] [ruby-dev:47482]
+ Reported by Ippei Obayashi. Thanks!!!
+
+Sun Jul 7 11:43:13 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/text.rb (REXML::Text#<<): Support method chain use by "<<"
+ like other objects.
+
+Sun Jul 7 11:34:18 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/text.rb (REXML::Text#clear_cache): Extract common
+ cache clear code.
+
+Sun Jul 7 11:01:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_DTRACE_POSTPROCESS): dtrace version SUN D 1.11
+ introduces a check in the dtrace compiler to ensure that probes
+ actually exist. If there are no probes, then the -G step will
+ fail. As this test is only being used to determine whether -G is
+ necessary (for instance, on OSX it is not), adding a real probe to
+ the conftest allows it to succeed on newer versions of dtrace.
+ Patch by Eric Saxby <sax AT livinginthepast.org> at
+ [ruby-core:55826]. [Fixes GH-351], [Bug #8606].
+
+Sun Jul 7 10:07:22 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_sq_fast): Extracted from bigsqr_fast and
+ ensure not to access zds[2*xn].
+ (bigsqr_fast): Allocate the result bignum with 2*xn words.
+
+Sat Jul 6 07:37:43 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/ossl_pkey_ec.c: Ensure compatibility to builds of
+ OpenSSL with OPENSSL_NO_EC2M defined, but OPENSSL_NO_EC not
+ defined.
+ * test/openssl/test_pkey_ec.rb: Iterate over built-in curves
+ (and assert their non-emptiness!) instead of hard-coding them, as
+ this may cause problems with respect to the different availability
+ of individual curves in individual OpenSSL builds.
+ [ruby-core:54881] [Bug #8384]
+
+ Thanks to Vit Ondruch for providing the patch!
+
+Sat Jul 6 07:12:39 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * test/openssl/test_x509crl.rb: Remove unused variable.
+ [ruby-core:53501] [Bug #8114]
+
+ Thanks, Vipul Amler, for pointing this out!
+
+Sat Jul 6 06:37:10 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/ossl.c: Provide CRYPTO_set_locking_callback() and
+ CRYPTO_set_id_callback() callback functions ossl_thread_id and
+ ossl_lock_callback to ensure the OpenSSL extension is usable in
+ multi-threaded environments.
+ [ruby-core:54900] [Bug #8386]
+
+ Thanks, Dirkjan Bussink, for the patch!
+
+Sat Jul 6 06:06:16 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * lib/openssl/ssl.rb: Fix SSL client connection crash for SAN marked
+ critical.
+ The patch for CVE-2013-4073 caused SSL crash when a SSL server returns
+ the certificate that has critical SAN value. X509 extension could
+ include 2 or 3 elements in it:
+
+ [id, criticality, octet_string] if critical,
+ [id, octet_string] if not.
+
+ Making sure to pick the last element of X509 extension and use it as
+ SAN value.
+ [ruby-core:55685] [Bug #8575]
+
+ Thank you @nahi for providing the patch!
+
+Sat Jul 6 04:49:38 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: register time objects so
+ they are referenced as ids during output.
+ * test/psych/test_date_time.rb: corresponding test.
+
+Fri Jul 5 20:46:39 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic): this
+ assertion doesn't seems to be checking the unicode string on command
+ line, but seems to be checking how to treat the unicode string from
+ stdin. so, should escape '\' before 'u'. this fixes a test failure
+ on Windows.
+
+Fri Jul 5 19:05:40 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/fileutils.rb (FileUtils#chown, FileUtils#chown_R): Fix the
+ wrong output message when user is nil, which should be "chown
+ :group file" instead of "chown group file".
+
+Fri Jul 5 16:21:56 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/ruby/test_regexp.rb
+ (TestRegexp#test_options_in_look_behind)
+ (TestRegexp#assert_match_at): Add tests for another problem
+ fixed in Onigmo 5.13.5. Previously Onigmo did not allow option
+ enclosures in look-behind, which makes it impossible to
+ interpolate a regexp into another in the middle of a look-behind
+ pattern. cf. https://github.com/k-takata/Onigmo/pull/17
+
+ * test/ruby/test_regexp.rb
+ (TestRegexp#test_options_in_look_behind)
+ (TestRegexp#assert_match_at): Parse regexps in run time rather
+ than in compile time.
+
+Fri Jul 5 12:14:40 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_notfound): after
+ r41710, the path of command uses backslash as the separator on
+ Windows.
+
+Fri Jul 5 11:29:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_raise_with_message): move from
+ test/fileutils/test_fileutils.rb. this is still experimental and
+ the interface may be changed.
+
+Fri Jul 5 11:08:00 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (w32_spawn): r41710 made that if the command starts with
+ a quote and includes slash, removed the top quote and NOT removed the
+ last quote.
+ this fixes test failures on test/ruby/test_process.rb and
+ test/webrick.
+
+Fri Jul 5 09:53:15 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/mkmf.rb (CONFIG['CPPOUTFILE']): fix r41769; CONFIG['CPPOUTFILE']
+ may be nil.
+
+Fri Jul 5 05:39:53 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (BARY_MUL1): Renamed from BARY_MUL.
+ (bary_mul1): Renamed from bary_mul.
+ (bary_mul): Renamed from bary_mul2.
+
+Fri Jul 5 04:58:05 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul_balance): Extracted from bigmul1_balance and
+ use bary_mul2 and bary_add to decrease allocations.
+
+Fri Jul 5 02:14:00 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/fileutils.rb (FileUtils#symbolic_modes_to_i): Fix the wrong
+ character class [+-=], which happened to match all desired
+ characters but also match undesired characters.
+
+ * lib/fileutils.rb (FileUtils.chmod{,_R}): Enhance the symbolic
+ mode parser to support the permission symbols u/g/o and multiple
+ actions as defined in SUS, so that chmod("g=o+w", file) works as
+ expected. Invalid symbolic modes are now rejected with
+ ArgumentError.
+
+Fri Jul 5 00:25:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_framework): allow header file to check.
+ [ruby-core:55745] [Bug #8593]
+
+Thu Jul 4 22:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * object.c (rb_obj_equal): Fixed an rb_obj_equal documentation typo
+ where "a" was used instead of "obj".
+ Fixes GH-349. Patch by @adnandoric
+
+Thu Jul 4 20:39:20 2013 Tanaka Akira <akr@fsij.org>
+
+ * tool/make-snapshot: Exit with EXIT_FAILURE when it fails.
+
+Thu Jul 4 20:20:23 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (maxpow_in_bdigit_dbl): Use tables if available.
+ (maxpow_in_bdigit): Ditto.
+ (U16): New macro.
+ (U32): Ditto.
+ (U64): Ditto.
+ (U128): Ditto.
+ (maxpow16_exp): New table.
+ (maxpow16_num): New table.
+ (maxpow32_exp): New table.
+ (maxpow32_num): New table.
+ (maxpow64_exp): New table.
+ (maxpow64_num): New table.
+ (maxpow128_exp): New table.
+ (maxpow128_num): New table.
+
+Thu Jul 4 18:25:25 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_cstr_to_inum): Avoid temporary buffer allocation except
+ very big base non-power-of-2 numbers.
+
+Thu Jul 4 15:51:56 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_succ): use ONIGENC_MBCLEN_CHARFOUND_P correctly.
+
+ * string.c (rb_str_dump): ditto.
+
+Thu Jul 4 10:04:11 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (): Merge Onigmo 5.13.5 23b523076d6f1161.
+
+ * [bug] (thanks Akinori MUSHA and Ippei Obayashi)
+ Fix a renumbering bug in condition regexp with a named
+ capture. [Bug #8583]
+ * [spec] (thanks Akinori MUSHA)
+ Allow ENCLOSE_OPTION in look-behind.
+
+Thu Jul 4 00:36:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (SIGNED_INTEGER_MAX): suppress warning C4146 on VC6.
+ seems a logical ORed expression becomes unsigned.
+
+Thu Jul 4 00:13:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby_atomic.h (rb_w32_atomic_cas): call InterlockedCompareExchange
+ directly.
+
+ * ruby_atomic.h (ATOMIC_CAS): fix missing function call.
+
+Wed Jul 3 23:47:35 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby_atomic.h (ATOMIC_CAS): suppress C4022 and C4047 warnings in
+ VC6. only InterlockedCompareExchange is declared using PVOID.
+
+Wed Jul 3 22:29:20 2013 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (ruby_digit36_to_number_table): Declared.
+
+ * util.c (ruby_digit36_to_number_table): Moved from scan_digits.
+
+ * bignum.c (conv_digit): Use ruby_digit36_to_number_table.
+
+ * pack.c (hex2num): Ditto.
+
+Wed Jul 3 18:12:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (install_dirs): revert DESTDIR prefix by r39841, since
+ it is fixed by r41648. [ruby-core:55760] [Bug #8115]
+
+Wed Jul 3 14:15:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (do_stat): use rb_w32_ustati64() in win32.c to get rid of
+ mysterious behavior of FindFirstFile() Windows API which treat "<"
+ and ">" like as wildcard characters. [ruby-core:55764] [Bug #8597]
+
+Wed Jul 3 12:06:42 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (maxpow_in_bdigit): Renamed from calc_hbase and return
+ maxpow.
+
+Tue Jul 2 23:47:50 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (roomof): Cast to long.
+ (rb_ull2big): Fix bignew arguments.
+
+Tue Jul 2 21:17:37 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_cstr_to_inum): Merge two temporary buffers.
+
+Tue Jul 2 20:25:04 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_cstr_to_inum): Use BDIGIT_DBL to collect adjacent digits.
+ (BDIGIT_DBL_MAX): New macro.
+ (maxpow_in_bdigit_dbl): New function.
+
+Tue Jul 2 17:23:33 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * doc/syntax/refinements.rdoc: add description of Module#using and
+ refinement inheritance by module inclusion.
+
+Tue Jul 2 17:22:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h: add EUC-JP and Windows-31J.
+
+ * re.c (rb_char_to_option_kcode): use built-in encoding indexes in
+ internal.h.
+
+ * internal.h: add UTF8-MAC.
+
+ * dir.c (rb_utf8mac_encoding): use built-in encoding indexes in
+ internal.h.
+
+ * internal.h: add UTF-{16,32} dummy encodings.
+
+ * string.c (rb_str_inspect, str_scrub0): use built-in encoding indexes
+ in internal.h.
+
+ * internal.h: add UTF-{16,32}{BE,LE}.
+
+ * io.c (io_strip_bom): use built-in encoding indexes in internal.h.
+
+ * internal.h (rb_{ascii8bit,utf8,usascii}_encindex): use built-in
+ encoding indexes for optimization.
+
+ * encoding.c (enc_inspect, rb_locale_encindex),
+ (enc_set_filesystem_encoding, rb_filesystem_encindex): use built-in
+ encoding indexes directly.
+
+ * encoding.c (rb_enc_set_index, rb_enc_associate_index): validate
+ argument encoding index.
+
+ * include/ruby/encoding.h (ENCODING_SET): use rb_enc_set_index()
+ instead of setting inlined bits directly.
+
+ * encoding.c (rb_enc_init): register preserved indexes.
+
+ * internal.h (ruby_preserved_encindex): move from encoding.c.
+
+Tue Jul 2 11:14:36 2013 Shota Fukumori <sorah@cookpad.com>
+
+ * lib/mkmf.rb (try_config): Fix to not replace $LDFLAGS with $libs
+ (1.9.3 behavior) [ruby-core:55752] [Bug #8595]
+
+Tue Jul 2 00:39:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal): Don't try mismatched
+ address family if already failed.
+
+Mon Jul 1 23:07:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * template/encdb.h.tmpl: define encoding index macros to use the index
+ statically from C source.
+
+Mon Jul 1 22:57:19 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul2): New function.
+ (rb_cstr_to_inum): Use a better algorithm to compose the result
+ if input length is very long.
+
+Mon Jul 1 20:22:00 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * ext/bigdecimal/bigdecimal.h (RB_UNUSED_VAR, UNREACHABLE):
+ import macros from ruby.h for 1.9.3.
+ [Bug #8588] [ruby-core:55730]
+
+ * ext/bigdecimal/bigdecimal.gemspec: Bump version to 1.2.1.
+
+Mon Jul 1 20:03:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal): Use an address
+ family for local address which is different to the remote
+ address if no other choice.
+
+Mon Jul 1 15:05:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/csv.rb (CSV#<<): use StringIO#set_encoding instead of creating
+ new StringIO instance with String#force_encoding, forcing encoding
+ discards the cached coderange bits and can make further operations
+ very slow. [ruby-core:55714] [Bug #8585]
+
+ * ext/stringio/stringio.c (strio_write): keep coderange of
+ ptr->string.
+
+ * string.c (rb_enc_cr_str_buf_cat, rb_str_append): consider an empty
+ string 7bit-clean and should not discard cached coderange of string
+ to be appended.
+
+Mon Jul 1 12:56:41 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_using_module): activate refinements in the ancestors of
+ the argument module to support refinement inheritance by
+ Module#include. [ruby-core:55671] [Feature #8571]
+
+ * test/ruby/test_refinement.rb: related test.
+
+Mon Jul 1 12:02:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_cstr_to_inum): Skip leading zeros.
+
+Mon Jul 1 00:59:23 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (nlz16): New function.
+ (nlz32): Ditto.
+ (nlz64): Ditto.
+ (nlz128): Ditto.
+ (nlz): Redefined using an above function.
+ (bitsize): New macro.
+ (rb_cstr_to_inum): Use bitsize instead of nlz.
+
+Sun Jun 30 22:40:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * lib/prime.rb: Corrected a few comments. Patch by @Nullset14.
+ Fixes GH-346.
+
+Sun Jun 30 21:53:38 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_cstr_to_inum): Use rb_integer_unpack if base is a power
+ of 2.
+
+Sun Jun 30 10:59:23 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (join_argv): use backslash instead of slash in program
+ path, otherwise cannot invoke "./c\u{1ee7}a.exe" for some reason.
+ [ruby-core:24309] [Bug #1771]
+
+ * io.c (spawnv, spawn): use UTF-8 spawn family. [Bug #1771]
+
+ * process.c (proc_exec_sh, proc_spawn_cmd, proc_spawn_sh): ditto.
+
+ * win32/win32.c (translate_char, join_argv, has_redirection): make
+ codepage aware.
+
+ * win32/win32.c (rb_w32_udln_find_exe_r, rb_w32_udln_find_file_r):
+ codepage independent versions.
+
+ * win32/win32.c (w32_spawn): extract codepage aware code from
+ rb_w32_spawn().
+
+ * win32/win32.c (rb_w32_uspawn): add UTF-8 version function.
+
+ * win32/win32.c (w32_aspawn_flags): extract codepage aware code from
+ rb_w32_aspawn_flags().
+
+ * win32/win32.c (rb_w32_uaspawn_flags, rb_w32_uaspawn_flags): add
+ UTF-8 version functions.
+
+ * win32/win32.c (w32_getenv): extract codepage aware code from
+ rb_w32_ugetenv() and rb_w32_getenv().
+
+ * win32/win32.c (w32_stati64): extract codepage aware code from
+ rb_w32_ustati64() and rb_w32_stati64().
+
+ * dln.h (DLN_FIND_EXTRA_ARG, DLN_FIND_EXTRA_ARG_DECL): allow extra
+ arguments to dln_find_{exe,file}_r().
+
+ * dln_find.c (dln_find_exe_r, dln_find_file_r): add extract arguments.
+
+ * process.c (EXPORT_STR, EXPORT_DUP): convert to default process
+ encoding if defined.
+
+ * process.c (check_exec_env_i): convert environment variables too.
+
+ * process.c (rb_exec_fillarg): convert program path and arguments too.
+
+Sun Jun 30 01:57:08 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big_rshift): Use abs2twocomp and twocomp2abs_bang.
+
+Sun Jun 30 00:14:20 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (RBIGNUM_SET_NEGATIVE_SIGN): New macro.
+ (RBIGNUM_SET_POSITIVE_SIGN): Ditto.
+ (rb_big_neg): Inline get2comp to avoid double negation.
+
+Sat Jun 29 23:26:41 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_neg): Extracted from bary_2comp.
+ (bary_plus_one): Extracted from bary_2comp.
+ (bary_2comp): Use bary_neg and bary_plus_one.
+ (big_extend_carry): Extracted from get2comp.
+ (get2comp): Use big_extend_carry.
+ (rb_integer_unpack): Use big_extend_carry.
+ (rb_big_neg): Use bary_neg.
+
+Sat Jun 29 22:31:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_2comp): Simplified.
+
+Sat Jun 29 09:33:53 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigor_int): Return -1 if y == -1.
+
+Sat Jun 29 09:07:16 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigor_int): Use RB_GC_GUARD.
+ (bigxor_int): Take xn and hibitsx arguments. Use twocomp2abs_bang.
+ (rb_big_xor): Use abs2twocomp and twocomp2abs_bang.
+
+Sat Jun 29 08:19:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigand_int): Don't apply bitwise and for BDIGIT and long.
+ (bigor_int): Take xn and hibitsx arguments. Use twocomp2abs_bang.
+ (rb_big_or): Use abs2twocomp and twocomp2abs_bang.
+
+Fri Jun 29 01:08:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * numeric.c (fix_mul): remove FIT_SQRT_LONG test as it was causing
+ fix_mul to return an incorrect result for -2147483648*-2147483648
+ on 64 bit platforms
+
+ * test/ruby/test_integer_comb.rb (class TestIntegerComb): add test case
+
+Fri Jun 28 12:26:53 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_and): Allocate new bignum with same size to shorter
+ argument if it's high bits are zero.
+
+Fri Jun 28 12:14:04 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal): Don't use local
+ addresses which address family is different to remote address.
+
+Fri Jun 28 08:06:22 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigand_int): Add arguments, xn and hibitsx.
+ Use twocomp2abs_bang.
+
+Thu Jun 27 23:58:13 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (abs2twocomp_bang): Removed.
+ (abs2twocomp): Take n_ret argument to return actual length.
+ (rb_big_and): Follow above change.
+
+Thu Jun 27 22:52:19 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (get2comp): Use bary_2comp.
+ (abs2twocomp_bang): New function.
+ (abs2twocomp): New function.
+ (twocomp2abs_bang): New function.
+ (rb_big_and): Use abs2twocomp and twocomp2abs_bang.
+
+Thu Jun 27 20:03:13 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (verify_certificate_identity): fix
+ hostname verification. Patched by nahi.
+
+ * test/openssl/test_ssl.rb (test_verify_certificate_identity): test for
+ above.
+
+
+Thu Jun 27 00:23:57 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_pow): Retry if y is a Bignum and it is
+ representable as a Fixnum.
+ Use rb_absint_numwords.
+
+Wed Jun 26 23:53:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_rounding_mode): fix typo.
+ Fixes GH-343. Patch by @jgarber.
+
+Wed Jun 26 23:22:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (rb_enumeratorize_with_size): use strict definition
+ rb_enumerator_size_func.
+
+Wed Jun 26 23:11:14 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * gc.c (is_before_sweep): Add a missing space before a parenthesis.
+ * gc.c (rb_gc_force_recycle): Add a missing space around a parenthesis.
+
+Wed Jun 26 22:44:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_enumeratorize_with_size): cast for
+ backward compatibility.
+
+ * include/ruby/intern.h (rb_enumerator_size_func): define strict
+ function declaration for rb_enumeratorize_with_size().
+
+Wed Jun 26 21:01:22 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_io.rb (TestIO#test_write_32bit_boundary): skip if
+ writing a file is slow.
+ [ruby-core:55541] [Bug #8519]
+
+Wed Jun 26 16:42:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: should use expanded values for header directories
+ unless extmk. patch by vo.x (Vit Ondruch) at [ruby-core:55653]
+ [Bug #8115], rhbz#921650.
+
+Wed Jun 26 12:48:22 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigxor_int): Fix a buffer over read.
+
+Wed Jun 26 12:13:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigand_int): Consider negative values.
+ (bigor_int): The allocated bignum should have enough size
+ to store long.
+ This fixes (bignum fits in a BDIGIT) | (fixnum bigger than BDIGIT)
+ on platforms which SIZEOF_BDIGITS < SIZEOF_LONG,
+ such as LP64 with 32bit BDIGIT (no int128).
+
+Wed Jun 26 12:08:51 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_udp.rb: Close sockets explicitly.
+ Don't use fixed port number.
+
+Wed Jun 26 07:27:17 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigand_int): Fix a buffer over read.
+
+Wed Jun 26 06:48:07 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigadd_int): Fix a buffer over read.
+
+Wed Jun 26 01:18:13 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (is_before_sweep): Add new helper function that check the object
+ is before sweep?
+ * gc.c (rb_gc_force_recycle): Have to clear mark bit if object's slot
+ already ready to minor sweep.
+
+Wed Jun 26 01:17:29 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigsub_int): Fix a buffer over read.
+
+Tue Jun 25 22:45:43 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_absint_singlebit_p): Use POW2_P.
+ (bary_pack): Ditto.
+ (rb_big2str0): Ditto.
+ (POW2_P): Moved to top.
+
+Tue Jun 25 22:28:07 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/rubygems/ext/builder.rb (Gem::Ext::Builder.make): Pass
+ DESTDIR via command line to override what's in MAKEFLAGS. This
+ fixes an installation problem under a package building
+ environment where DESTDIR is specified in the (parent) command
+ line. [Fixes GH-327]
+
+Tue Jun 25 21:43:13 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2dbl): Use (BDIGIT)1 instead of 1UL.
+ (bary_mul_normal): Remove a useless cast.
+
+Tue Jun 25 21:26:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Fix for the cases when
+ the argument x is not a BigDecimal.
+ This change is based on the patch made by Heesob Park and Garth Snyder.
+ [Bug #6862] [ruby-core:47145]
+ [Fixes GH-332] https://github.com/ruby/ruby/pull/332
+
+Tue Jun 25 20:36:31 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2ulong): "check" argument removed.
+ (rb_big2ulong): Follow above change.
+ (rb_big2long): Ditto.
+ (rb_big_rshift): Ditto.
+ (rb_big_aref): Ditto.
+
+Tue Jun 25 20:08:29 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big2ulong_pack): Use rb_integer_pack.
+ (rb_big_aref): Call big2ulong with TRUE for "check" argument.
+ It should be non-effective.
+
+Tue Jun 25 19:07:33 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (LSHIFTX): Revert r41611.
+ The redundant expression suppresses a warning, C4293, by Visual
+ Studio.
+ http://ruby-mswin.cloudapp.net/vc10-x64/ruby-trunk/log/20130625T072854Z.log.html.gz#miniruby
+
+Tue Jun 25 19:03:00 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2ulong): Add a cast.
+ (big2ull): Add a specialized code for SIZEOF_LONG_LONG <=
+ SIZEOF_BDIGITS.
+
+Tue Jun 25 12:42:57 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (integer_unpack_single_bdigit): Use "1 + ~u" instead of
+ "-u" to suppress warning (C4146) by Visual Studio.
+ Reported by ko1 via IRC.
+
+Tue Jun 25 12:28:57 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2ulong): Add code specialized for SIZEOF_LONG <=
+ SIZEOF_BDIGITS.
+ This prevents shift width warning from "num <<= BITSPERDIG".
+
+Tue Jun 25 12:23:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: fix oldgen/remembered_shady counting algorithm.
+
+ * gc.c (rgengc_check_shady): increment
+ `objspace->rgengc.remembered_shady_object_count' here.
+
+ * gc.c (rgengc_remember): return FALSE if obj is already remembered.
+
+ * gc.c (rgengc_rememberset_mark): make it void.
+
+ * gc.c (gc_mark_children): fix to double counting oldgen_object_count
+ at minor GC.
+
+Tue Jun 25 12:07:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (MSB): Removed.
+ (BDIGIT_MSB): Defined using BIGRAD_HALF.
+ (bary_2comp): Apply BIGLO after possible over flow of BDIGIT.
+ (get2comp): Ditto.
+ (bary_unpack_internal): Use BDIGIT_MSB.
+ Apply BIGLO after possible over flow of BDIGIT.
+ (rb_integer_unpack): Use BDIGIT_MSB.
+ (calc_hbase): Use BDIGMAX.
+ (big2dbl): Use BDIGMAX.
+ Apply BIGLO after possible over flow of BDIGIT.
+ (rb_big_neg): Apply BIGLO after possible over flow of BDIGIT.
+ (biglsh_bang): Ditto.
+ (bigrsh_bang): Ditto.
+ (bary_divmod): Use BDIGIT_MSB.
+ (bigdivrem): Ditto.
+ (bigxor_int): Apply BIGLO after possible over flow of BDIGIT.
+
+ * marshal.c (shortlen): Use SIZEOF_BDIGITS instead of sizeof(BDIGIT).
+
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): Use SIZEOF_BDIGITS
+ instead of sizeof(BDIGIT).
+
+Tue Jun 25 11:40:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big2ulong): suppress shorten-64-to-32 warning. BDIGIT can
+ be bigger than long now.
+
+ * bignum.c (LSHIFTX): remove redundant never-true expression.
+
+Tue Jun 25 00:55:54 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (typedef struct rb_objspace): Change members for monitor objects.
+ * gc.c (gc_marks_test): Check all WriteBarrier Errors and track them in obj-tree.
+ * gc.c (rgengc_check_shady): Ditto.
+ * gc.c (gc_marks): Move 2 function calls to gc_marks_test for test initialize.
+
+Mon Jun 24 23:30:31 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (integer_unpack_single_bdigit): Refine code to filling
+ higher bits and use BIGLO.
+
+Mon Jun 24 22:26:31 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/rinda/test_rinda.rb (RingIPv6#prepare_ipv6):
+ ifindex() function may not be implemented on Windows. We use another
+ check for the case.
+
+Mon Jun 24 22:11:37 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_nolock):
+ skip a failing test on Windows because flock() implementation is
+ different from Unix.
+
+Mon Jun 24 22:06:14 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/rubygems/test_gem_installer.rb (test_install_extension_flat):
+ use ruby in build directory in case ruby is not installed.
+ [ruby-core:53265] [Bug #8058]
+
+Mon Jun 24 22:04:02 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): fix conversion from Bignum to
+ pointer. sizeof(DLSTACK_TYPE) is larger than sizeof(long) on
+ Windows x64 and higher bits over sizeof(long) of DLSTACK_TYPE was
+ zero even if a pointer value was over 32 bits which causes SEGV on
+ DL::TestCPtr#test_to_ptr_io. Adding a cast solves the bug.
+
+Mon Jun 24 22:04:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * eval_error.c (warn_printf): use rb_vsprintf instead so ruby specific
+ extensions like PRIsVALUE can be used in format strings
+ * eval_error.c (error_print): use warn_print_str (alias for
+ rb_write_error_str) to print a string value instead of using
+ RSTRING_PTR and RSTRING_LEN manually
+ * eval.c (setup_exception): use PRIsVALUE instead of %s and RSTRING_PTR
+
+Mon Jun 24 20:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * compile.c (make_name_for_block): use PRIsVALUE in format string
+ instead of %s and RSTRING_PTR to protect objects from being garbage
+ collected too soon
+ * encoding.c (str_to_encindex): ditto
+ * hash.c (rb_hash_fetch_m): ditto
+ * io.c (rb_io_reopen): ditto
+ * parse.y (reg_fragment_check_gen): ditto
+ * parse.y (reg_compile_gen): ditto
+ * parse.y (ripper_assert_Qundef): ditto
+ * re.c (rb_reg_raise): ditto
+ * ruby.c (set_option_encoding_once): ditto
+ * vm_eval.c (rb_throw_obj): ditto
+
+Mon Jun 24 07:57:18 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (after_gc_sweep): Have to record malloc info before reset.
+ * gc.c (gc_prof_timer_start): Pick out part of new record creation as gc_prof_setup_new_record.
+ * gc.c (gc_prof_set_malloc_info): Move point of recording allocation size to front of mark.
+
+Mon Jun 24 02:53:09 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * array.c: Return value in Array overview example found by @PragTob
+ [Fixes GH-336] https://github.com/ruby/ruby/pull/336
+
+Mon Jun 24 02:45:51 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * array.c (rb_ary_zip): typo by @PragTob [Fixes GH-337]
+ https://github.com/ruby/ruby/pull/337
+
+Mon Jun 24 02:42:01 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * win32/README.win32: grammar typo by @blankenshipz [Fixes GH-334]
+ https://github.com/ruby/ruby/pull/334
+
+Mon Jun 24 00:59:35 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (BIGUP): Use LSHIFTX and avoid cast to consider the type
+ of x is bigger than BDIGIT_DBL.
+ (big2ulong): Use unsigned long to store the result.
+ (big2ull): Use unsigned LONG_LONG to store the result.
+ (bigand_int): Use long for num to avoid data loss.
+ (bigor_int): Ditto.
+ (bigxor_int): Ditto.
+
+Sun Jun 23 23:05:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/defines.h (BDIGIT): Define it only if it is not defined
+ yet. This eases tests and debug.
+ (SIZEOF_BDIGITS): Ditto.
+ (BDIGIT_DBL): Ditto.
+ (BDIGIT_DBL_SIGNED): Ditto.
+ (PRI_BDIGIT_PREFIX): Ditto.
+ (PRI_BDIGIT_DBL_PREFIX): Ditto.
+ (PRIdBDIGIT): Define it only if PRI_BDIGIT_PREFIX is defined.
+ (PRIiBDIGIT): Ditto.
+ (PRIoBDIGIT): Ditto.
+ (PRIuBDIGIT): Ditto.
+ (PRIxBDIGIT): Ditto.
+ (PRIXBDIGIT): Ditto.
+ (PRIdBDIGIT_DBL): Ditto.
+ (PRIiBDIGIT_DBL): Ditto.
+ (PRIoBDIGIT_DBL): Ditto.
+ (PRIuBDIGIT_DBL): Ditto.
+ (PRIxBDIGIT_DBL): Ditto.
+ (PRIXBDIGIT_DBL): Ditto.
+
+ * include/ruby/ruby.h (RBIGNUM_EMBED_LEN_MAX): Define it only if it is
+ not defined yet.
+
+Sun Jun 23 17:29:51 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (integer_unpack_single_bdigit): Use a cast.
+
+Sun Jun 23 15:38:07 2013 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_thread.rb: rescue resource limitation errors.
+
+Sun Jun 23 08:19:27 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (integer_unpack_single_bdigit): Extracted from
+ bary_unpack_internal.
+
+Sun Jun 23 07:41:52 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_unpack_internal): Suppress warnings (C4146) on Visual Studio.
+ Reported by ko1 via IRC.
+
+Sun Jun 23 06:49:28 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h, gc.c: rename macros and functions:
+ OBJ_WB_GIVEUP() -> OBJ_WB_UNPROTECT(),
+ rb_obj_wb_giveup() -> rb_obj_wb_unprotect(),
+ rb_gc_giveup_promoted_writebarrier() ->
+ rb_gc_writebarrier_unprotect_promoted(),
+
+ * class.c, eval.c, hash.c: use OBJ_WB_UNPROTECT().
+
+Sun Jun 23 05:41:32 2013 Koichi Sasada <ko1@atdot.net>
+
+ * class.c (rb_include_class_new), eval.c (rb_using_refinement):
+ make classes/modules (who share method table) shady.
+ If module `a' and `b' shares method table m_tbl and new method
+ with iseq is added, then write barrier is applied only `a' or `b'.
+ To avoid this issue, shade such classes/modules.
+
+ * vm_method.c (rb_method_entry_make): add write barriers.
+
+Sun Jun 23 01:27:54 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bytes_zero_p): Removed.
+ (bary_pack): Don't call bytes_zero_p.
+
+Sun Jun 23 00:51:29 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bytes_zero_p): Extracted from bary_pack.
+ (bary_pack): Use bytes_zero_p.
+
+Sun Jun 23 00:16:57 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (MSB): New macro.
+ (bary_unpack_internal): Use MSB.
+ (bary_divmod): Ditto.
+ (bigdivrem): Ditto.
+
+Sat Jun 22 23:45:22 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_swap): New function.
+ (bary_pack): Use bary_swap.
+ (bary_unpack_internal): Ditto.
+
+Sat Jun 22 23:18:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bytes_2comp): Renamed from quad_buf_complement.
+ (bary_pack): Use bytes_2comp.
+ (rb_quad_pack): Use rb_integer_pack.
+ (rb_quad_unpack): Use rb_integer_unpack.
+
+Sat Jun 22 21:46:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_unpack): Don't allocate a Bignum if possible.
+
+Sat Jun 22 21:03:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_unpack): Remove specialized unpackers for integers.
+
+Sat Jun 22 20:36:50 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_unpack_internal): Specialized unpacker implemented.
+ (bary_unpack): Support INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION.
+ (rb_integer_unpack): Support INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION.
+
+Sat Jun 22 18:53:10 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_pack): Support
+ INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION flag.
+ Fix byte order and word order handling in code specialized for
+ wordsize % SIZEOF_BDIGITS == 0.
+
+ * internal.h (INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION): Defined.
+
+Sat Jun 22 15:41:25 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rgengc_check_shady): add new WB miss checking
+ on RGENGC_CHECK_MODE >= 2.
+
+ (1) Save bitmaps before marking
+ (2) Run full marking
+ (3) On each traceable object,
+ (a) object was not oldgen (== newly or shady object) &&
+ (b) parent object was oldgen &&
+ (c) parent object was not remembered &&
+ (d) object was not remembered
+ then, it should be WB miss.
+
+ This idea of this checker is by Masaya Tarui <tarui@ruby-lang.org>.
+
+Sat Jun 22 15:25:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * ext/etc/etc.c (setup_passwd): revert r41560, unnecessary
+
+Sat Jun 22 14:39:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * ext/etc/etc.c (Init_etc): omit 'passwd' from definition of Etc::Passwd
+ if HAVE_STRUCT_PASSWD_PW_PASSWD is not defined to prevent mismatch of
+ fields and values in setup_passwd
+
+Sat Jun 22 14:35:40 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): Use rb_big_pack instead of
+ rb_big2ulong_pack and rb_big2ull.
+
+ * include/ruby/intern.h (rb_big2ulong_pack): Deprecated.
+
+Sat Jun 22 14:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * ext/etc/etc.c (setup_passwd): pass 0 as VALUE to rb_struct_new to
+ prevent segfault if the compiler passes it as a 32 bit integer on
+ a 64 bit ruby
+
+Sat Jun 22 13:47:13 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_pack): MEMZERO can be used even if nails is not zero.
+
+Sat Jun 22 13:43:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getpwnam): use PRIsVALUE in format string instead
+ of %s and RSTRING_PTR
+
+ * ext/etc/etc.c (etc_getgrnam): ditto
+
+Sat Jun 22 13:07:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (CLEAR_LOWBITS): Rewritten without RSHIFTX.
+ (RSHIFTX): Removed.
+
+Sat Jun 22 10:38:03 2013 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (num2i32): Removed.
+ (pack_pack): Don't use num2i32.
+
+Sat Jun 22 09:55:13 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (LSHIFTX): Defined to suppress a warning.
+ (RSHIFTX): Ditto.
+ (CLEAR_LOWBITS): Use LSHIFTX and RSHIFTX.
+ (FILL_LOWBITS): Use LSHIFTX.
+ Reported by ko1 via IRC.
+
+Sat Jun 22 09:11:33 2013 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 4.7.5 (r8724)
+ * test/minitest/*: ditto
+
+Sat Jun 22 07:20:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_prof_set_heap_info, after_gc_sweep): call
+ gc_prof_set_heap_info() just after sweeping to calculate
+ live object number correctly.
+ (live object number = total generated number (before marking) -
+ total freed number (after sweeping))
+
+ * gc.c (gc_marks): record `oldgen_object_count' into current profile`
+ record directly.
+
+ * gc.c (rgengc_rememberset_mark): same for remembered_normal_objects
+ and remembered_shady_objects.
+
+Sat Jun 22 06:46:04 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_objspace::profile): rename rb_objspace::profile::record to
+ records (because it points a set of records) and add a field
+ rb_objspace::profile::current_record to point a current profiling
+ record.
+
+ * gc.c: use above fields.
+
+Sat Jun 22 06:05:36 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_gc_giveup_promoted_writebarrier): remove `rest_sweep()'
+ because all of remembered objects are called for gc_mark_children().
+
+Sat Jun 22 05:08:03 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rgengc_rememberset_mark): call gc_mark_children() for
+ remembered objects directly instead of pushing on the mark stack.
+
+Sat Jun 22 04:48:53 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h (OBJ_WRITE): cast to (VALUE *) for second
+ parameter `slot'. You don't need to write a cast (VALUE *) any more.
+
+ * class.c, compile.c, hash.c, iseq.c, proc.c, re.c, variable.c,
+ vm.c, vm_method.c: remove cast expressions for OBJ_WRITE().
+
+Sat Jun 22 04:37:08 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (slot_sweep_body): rename to slot_sweep().
+ No need to separate major/minor GC.
+
+ * gc.c (gc_setup_mark_bits): remove gc_clear_mark_bits() and unify to
+ this function.
+
+Sat Jun 22 04:20:21 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (check_bitmap_consistency): add to check flag and bitmap consistency.
+ Use this function in several places.
+
+Sat Jun 22 02:18:07 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_pack): Specialized packers implemented.
+ (HOST_BIGENDIAN_P): New macro.
+ (ALIGNOF): New macro.
+ (CLEAR_LOWBITS): New macro.
+ (FILL_LOWBITS): New macro.
+ (swap_bdigit): New macro.
+ (bary_2comp): Returns an int.
+
+ * internal.h (swap16): Moved from pack.c
+ (swap32): Ditto.
+ (swap64): Ditto.
+
+Fri Jun 21 21:29:49 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (typedef enum): Introduce flags of major gc reason.
+ * gc.c (garbage_collect_body): Ditto.
+ * gc.c (gc_profile_flags): Ditto.
+ * gc.c (gc_profile_dump_on): Ditto.
+
+Fri Jun 21 21:11:53 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (allocate_sorted_heaps): remove unused variable `add'.
+
+Fri Jun 21 20:50:32 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: constify RArray::as::ary and RArray::heap::ptr.
+ Use RARRAY_ASET() or RARRAY_PTR_USE() to modify Array objects.
+
+ * array.c, gc.c: catch up above changes.
+
+Fri Jun 21 20:32:13 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (eval_string_with_cref): fix WB miss.
+
+Fri Jun 21 20:15:49 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: support write barrier protection for T_STRUCT.
+ Introduce the following C APIs:
+ * RSTRUCT_RAWPTR(st) returns pointer (do WB on your risk).
+ The type of returned pointer is (const VALUE *).
+ * RSTRUCT_GET(st, idx) returns idx-th value of struct.
+ * RSTRUCT_SET(st, idx, v) set idx-th value by v with WB.
+ And
+ * RSTRUCT_PTR(st) returns pointer with shady operation.
+ The type of returned pointer is (VALUE *).
+
+ * struct.c, re.c, gc.c, marshal.c: rewrite with above APIs.
+
+Fri Jun 21 19:38:37 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (BDIGMAX): Use BIGRAD.
+ (BIGLO): Use BDIGMAX.
+ (bigdivrem1): Ditto.
+ (bigor_int): Ditto.
+ (rb_big_or): Ditto.
+
+Fri Jun 21 19:18:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_pack): Move the implementation for 'c' directive after
+ pack_integer label.
+
+Fri Jun 21 19:11:56 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h, re.c: support write barrier for T_REGEXP.
+
+ Note: T_MATCH object is also easy to support write barriers.
+ However, most of T_MATCH objects are short-lived objects.
+ So I skipped to support non-shady T_MATCH.
+
+Fri Jun 21 18:56:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigsub_int): Use bdigit_roomof.
+ (bigadd_int): Ditto.
+ (bigand_int): Ditto.
+ (bigor_int): Ditto.
+ (bigxor_int): Ditto.
+
+Fri Jun 21 17:56:25 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/gc/gcbench.rb: fix summary of benchmark result notation.
+
+Fri Jun 21 16:38:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * ext/openssl/ossl_x509attr.c: change OSSL_X509ATTR_IS_SINGLE and
+ OSSL_X509ATTR_SET_SINGLE macros to use ->value.set rather than
+ ->set to fix compile failure
+
+Fri Jun 21 15:26:45 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_sweep): profile sweep time correctly when LAZY_SWEEP is
+ disabled.
+
+ * gc.c (gc_marks_test): store oldgen count and shady count
+ before test marking and restore them after marking.
+
+Fri Jun 21 15:07:42 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: enable lazy sweep (commit miss).
+
+Fri Jun 21 14:31:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (ruby_setenv): refine error message so include the variable
+ name.
+
+Fri Jun 21 14:15:08 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: fix to use total_allocated_object_num and heaps_used
+ at the GC time for profiler.
+
+Fri Jun 21 12:35:35 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: RGENGC_CHECK_MODE should be 0.
+
+Fri Jun 21 11:18:25 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_marks_body): fix to get `th' in this function.
+
+Fri Jun 21 10:21:44 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (heaps_header/heaps_slot): embed bitmaps into heaps_slot.
+ no need to maintain allocation/free bitmaps.
+
+Fri Jun 21 09:22:16 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (slot_sweep_body): add counters at a time.
+
+ * gc.c (gc_profile_dump_on): fix line break position.
+
+Fri Jun 21 08:14:00 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c: refactoring bitmaps. introduce bits_t type and some Consts.
+
+Fri Jun 21 08:04:32 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: fix to support USE_RGENGC == 0 (disable RGenGC).
+ If USE_RGENGC==0, it caused compilation error.
+
+Fri Jun 21 08:08:11 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (lazy_sweep): Use is_lazy_sweeping()
+ * gc.c (rest_sweep): Ditto.
+ * gc.c (gc_prepare_free_objects): Ditto.
+
+Fri Jun 21 07:34:47 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_profile_record::oldgen_objects): added.
+
+ * gc.c (gc_profile_dump_on): print the following information:
+ * Living object counts
+ * Free object counts
+ If RGENGC_PROFILE > 0 then
+ * Oldgen object counts
+ * Remembered normal object counts
+ * Remembered shady object counts
+
+Fri Jun 21 06:43:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_ull2big): Refactored.
+ (rb_uint2big): Useless code removed.
+
+Fri Jun 21 05:37:39 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_prof_sweep_timer_stop): accumulate sweep time only when
+ record->gc_time > 0.
+
+Fri Jun 21 00:37:31 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/bigdecimal: Workaround fix for bigdecimal test failures caused
+ by [ruby-dev:47413] [Feature #8509]
+
+ * ext/bigdecimal/bigdecimal.h (BDIGIT): Make it independent from the
+ definition for bignum.c.
+ (SIZEOF_BDIGITS): Ditto.
+ (BDIGIT_DBL): Ditto.
+ (BDIGIT_DBL_SIGNED): Ditto.
+ (PRI_BDIGIT_PREFIX): Undefine the definition.
+ (PRI_BDIGIT_DBL_PREFIX): Ditto.
+
+ * ext/bigdecimal/bigdecimal.c (RBIGNUM_ZERO_P): Use rb_bigzero_p.
+ (bigzero_p): Removed.
+ (is_even): Use rb_big_pack.
+
+Thu Jun 20 22:52:42 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigmul1_toom3): Don't call bignorm twice.
+
+Thu Jun 20 22:49:27 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bignorm): Don't call bigtrunc if the result is a fixnum.
+
+Thu Jun 20 22:29:42 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_uint2big): Refactored.
+
+Thu Jun 20 22:24:41 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (dump_bignum): Use SIZEOF_BDIGITS.
+
+Thu Jun 20 22:22:46 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2ulong): Change the return type to unsigned long.
+ (rb_big2ulong_pack): Follow the above change.
+ (rb_big2long): Ditto.
+ (rb_big_lshift): Ditto.
+ (rb_big_rshift): Ditto.
+ (rb_big_aref): Ditto.
+
+Thu Jun 20 22:02:46 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_unpack_internal): Return -2 when negative overflow.
+ (bary_unpack): Set the overflowed bit if an extra BDIGIT exists.
+ (rb_integer_unpack): Set the overflowed bit.
+
+Thu Jun 20 21:17:19 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rgengc_rememberset_mark): record
+ (1) normal objects count in remember set
+ (2) shady objects count in remember set
+ each GC timing.
+
+ * gc.c (gc_profile_record_get): enable to access above information
+ and REMOVING_OBJECTS, EMPTY_OBJECTS.
+
+Thu Jun 20 18:29:26 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/gc/gcbench.rb: Do not use GC::Profiler::disable because
+ GC::Profiler::disable prohibit to access profiling data. It should
+ be spec bug.
+
+ Skip GC::Profiler::report if RUBY_VERSION < '2.0.0'
+
+Thu Jun 20 17:59:08 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/gc/gcbench.rb: stop GC::Profiler before output results.
+ Generating GC::Profiler result under profiling causes infinite loop.
+
+Thu Jun 20 17:24:24 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/gc/gcbench.rb: don't use __dir__ to make compatible
+ with ruby 1.9.3.
+
+Thu Jun 20 16:57:19 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_app_aobench.rb: use attr_accessor/reader instead of
+ defining methods.
+
+Thu Jun 20 16:46:46 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_app_aobench.rb: added.
+
+ * benchmark/gc/aobench.rb: added.
+
+Thu Jun 20 16:28:33 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_so_binary_trees.rb: disable `puts' method
+ and change iteration parameter to increase execution time.
+
+ * benchmark/gc/binarytree.rb: added.
+
+Thu Jun 20 16:06:37 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/gc/pentomino.rb: added.
+ Simply load pentomino puzzle in the benchmark/ directory.
+
+Thu Jun 20 15:32:56 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/gc/redblack.rb: import red black tree benchmark from
+ https://github.com/jruby/rubybench/blob/master/time/bench_red_black.rb
+
+ * benchmark/gc/ring.rb: add a benchmark. This benchmark create many
+ old objects.
+
+Thu Jun 20 15:14:00 2013 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/gc: create a directory to store GC related benchmark.
+
+ * benchmark/gc/gcbench.rb: moved from tool/gcbench.rb.
+
+ * benchmark/gc/hash(1|2).rb: ditto.
+
+ * benchmark/gc/rdoc.rb: ditto.
+
+ * benchmark/gc/null.rb: added.
+
+ * common.mk: fix rule.
+
+Thu Jun 20 14:09:54 2013 Koichi Sasada <ko1@atdot.net>
+
+ * tool/hashbench1.rb: fix parameter too. Increase temporary objects.
+
+Thu Jun 20 14:01:35 2013 Koichi Sasada <ko1@atdot.net>
+
+ * tool/hashbench1.rb: fix parameters.
+
+Thu Jun 20 14:00:34 2013 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: remove dependency from ruby.
+
+Thu Jun 20 13:14:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_backtrace): evaluate RARRAY_AREF only once.
+ the first argument of RB_TYPE_P is expanded twice for non-immediate
+ types.
+
+Thu Jun 20 08:09:29 2013 Koichi Sasada <ko1@atdot.net>
+
+ * tool/gcbench.rb: Summary in one line.
+
+ * common.mk: separate gcbench-hash to gcbench-hash1 and gcbench-hash2.
+
+Thu Jun 20 08:07:23 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (BIGSIZE): New macro.
+ (bigfixize): Use BIGSIZE.
+ (big2ulong): Ditto.
+ (check_shiftdown): Ditto.
+ (rb_big_aref): Ditto.
+
+Thu Jun 20 07:46:48 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (rb_gc_writebarrier): give up rescan A and register B directly
+ if A has huge number of children.
+
+Thu Jun 20 07:30:35 2013 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: add new rules `gcbench-rdoc', `gcbench-hash'.
+
+ * tool/gcbench.rb: separate GC bench framework and process.
+
+ * tool/hashbench1.rb, tool/hashbench2.rb: add two types GC bench.
+ hashbench1: many temporal objects (GC by newobj)
+ hashbench2: hash size becomes bigger and bigger (GC by malloc)
+ Two benches are executed by `gcbench-hash' rule.
+
+ * tool/rdocbench.rb: separated.
+
+Thu Jun 20 06:25:39 2013 Koichi Sasada <ko1@atdot.net>
+
+ * tool/rdocbench.rb: add summary.
+
+Thu Jun 20 06:18:01 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_profile_total_time): check objspace->profile.next_index > 0.
+
+Thu Jun 20 05:47:41 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_prof_sweep_timer_start): fix merge miss.
+
+ * gc.c (GC_PROFILE_MORE_DETAIL): set it 0.
+
+Thu Jun 20 05:38:56 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: Accumulate sweep time to GC time.
+ Now [GC time] is [mark time] + [sweep time] + [misc].
+ ([GC time] >= [mark time] + [sweep time])
+
+ * gc.c (gc_prof_sweep_slot_timer_start/stop): rename to
+ gc_prof_sweep_timer_start/stop and locate at lazy_sweep().
+
+ * gc.c (elapsed_time_from): add a utility function.
+
+Thu Jun 20 05:08:53 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_marks): fix wrong option. FALSE means major/full GC.
+ It should be TRUE (minor marking).
+
+Thu Jun 20 02:44:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (waitpid): should not return 0 but wait until exit
+ unless WNOHANG is given. waiting huge process may return while
+ active, for some reason.
+
+Thu Jun 20 01:34:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bdigit_roomof): Use SIZEOF_BDIGITS.
+ (bigfixize): Refine an ifdef condition.
+ (rb_absint_size): Use bdigit_roomof.
+ (rb_absint_singlebit_p): Ditto.
+ (rb_integer_pack): Ditto.
+ (integer_pack_fill_dd): Use BITSPERDIG.
+ (integer_unpack_push_bits): Use BITSPERDIG, BIGLO and BIGDN.
+
+Thu Jun 20 01:07:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (MARKED_IN_BITMAP, FL_TEST2): return boolean value since always
+ used as boolean value.
+
+ * gc.c (MARK_IN_BITMAP, CLEAR_IN_BITMAP): evaluate bits once.
+
+Thu Jun 20 00:05:07 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (RVALUE_PROMOTED): fix type.
+
+Wed Jun 19 23:39:01 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_marks_test): rewrite checking code.
+ When RGENGC_CHECK_MODE >= 2, all minor marking, run normal minor
+ marking *and* major/full marking. After that, compare the results
+ and shows BUG if a object living with major/full marking but dead
+ with minor marking.
+ After detecting bugs, print references information.
+ (RGENGC_CHECK_MODE == 2, show references to dead object)
+ (RGENGC_CHECK_MODE == 3, show all references)
+
+Wed Jun 19 23:51:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigfixize): Use rb_absint_size.
+ (check_shiftdown): Ditto.
+ (big2ulong): Use bdigit_roomof.
+
+Wed Jun 19 23:32:23 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (RVALUE_PROMOTED): check consistency between oldgen flag and
+ oldgen bitmap if RGENGC_CHECK_MODE > 0.
+
+Wed Jun 19 23:29:29 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_gc_force_recycle): clear oldgen bitmap, too.
+
+Wed Jun 19 21:02:13 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_uint2big): Consider environments BDIGIT is bigger than
+ long.
+ (big2ulong): Ditto.
+ (rb_big_aref): Ditto.
+ (rb_big_pack): Just call rb_integer_pack.
+ (rb_big_unpack): Just call rb_integer_unpack.
+
+Wed Jun 19 20:51:21 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * gc.c (gc_stress_get): GC.stress can be Fixnum.
+
+Wed Jun 19 19:31:30 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (DIGSPERLONG): Don't define if BDIGIT is bigger than long.
+ (DIGSPERLL): Don't define if BDIGIT is bigger than LONG_LONG
+ (rb_absint_size): Consider environments BDIGIT is bigger than long.
+ Use BIGLO and BIGDN.
+ (rb_absint_singlebit_p): Ditto.
+ (rb_integer_pack): Ditto.
+ (bigsub_int): Consider environments BDIGIT is bigger than long.
+ Use SIZEOF_BDIGITS instead of sizeof(BDIGIT).
+ (bigadd_int): Ditto.
+ (bigand_int): Ditto.
+ (bigor_int): Ditto.
+ (bigxor_int): Ditto.
+
+Wed Jun 19 15:14:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h (struct rb_data_type_struct), gc.c: add
+ rb_data_type_struct::flags. Now, this flags is passed
+ at T_DATA object creation. You can specify FL_WB_PROTECTED
+ on this flag.
+
+ * iseq.c: making non-shady iseq objects.
+
+ * class.c, compile.c, proc.c, vm.c: add WB for iseq objects.
+
+ * vm_core.h, iseq.h: constify fields to detect WB insertion.
+
+Wed Jun 19 15:11:13 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_mark_children): show more info for broken object.
+
+Wed Jun 19 14:04:41 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/envutil.rb (EnvUtil#rubybin): remove unnecessary
+ unless expression.
+
+Wed Jun 19 07:47:48 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (garbage_collect_body): use FIX2INT for ruby_gc_stress.
+
+Wed Jun 19 07:44:31 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_objspace::gc_stress): int -> VALUE to store Fixnum object.
+
+Wed Jun 19 07:25:35 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (make_deferred): clear flags to T_ZOMBIE.
+
+ * gc.c (slot_sweep_body): fix indent.
+
+Wed Jun 19 07:18:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_aref): Apply BIGLO to ~xds[i] for environment which
+ BDIGIT is 16bit.
+
+Wed Jun 19 07:09:26 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rgengc_remember): fix output level.
+
+ * gc.c (rgengc_rememberset_mark): fix to output clear count.
+ (shady_object_count + clear_count = count of remembered objects)
+
+Wed Jun 19 07:06:21 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rgengc_remember): check T_NONE and T_ZOMBIE
+ if RGENGC_CHECK_MODE > 0.
+
+Wed Jun 19 07:02:19 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (RGENGC_CHECK_MODE): add new check mode `3'.
+ In this mode, show all references if there is
+ a miss-corrected object.
+
+Wed Jun 19 06:31:08 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stress_set): add special option of GC.stress.
+ `GC.stress=(flag)' accepts integer to control behavior of GC.
+ See code for details. Of course, this feature is only for MRI.
+
+ You can debug RGenGC (WB) using `GC.stress = 1'.
+ Using this option, do minor marking at all possible places.
+
+ GC::STRESS_MINOR_MARK = 1 and GC::STRESS_LAZY_SWEEP = 2
+ seem good to add.
+
+Wed Jun 19 06:29:31 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (kwmerge_i): add WB.
+
+Wed Jun 19 06:26:49 2013 Koichi Sasada <ko1@atdot.net>
+
+ * hash.c: `st_update()' also has same issue of last fix.
+ write barriers at callback function are too early.
+ All write barriers are executed after `st_update()'
+
+Wed Jun 19 04:33:22 2013 Koichi Sasada <ko1@atdot.net>
+
+ * variable.c (rb_const_set): fix WB miss.
+
+ WBs had located before creating reference between a klass
+ and constant value. It causes GC bug.
+
+ # pseudo code:
+ WB(klass, value); # WB and remember klass
+ st_insert(klass->const_table, const_id, value);
+
+ `st_insert()' can cause GC before inserting `value' and
+ forget `klass' from the remember set. After that, relationship
+ between `klass' and `value' are created with constant table.
+ Now, `value' can be young (shady) object and `klass' can be old
+ object, without remembering `klass' object.
+ At the next GC, old `klass' object will be skipped and
+ young (shady) `value' will be miss-collected. -> GC bug
+
+ Lesson: The place of a WB is important.
+
+Tue Jun 18 22:01:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): ensure methods of type
+ VM_METHOD_TYPE_ATTR_SET are called with 1 argument
+
+ * test/ruby/test_module.rb
+ (TestModule#test_attr_writer_with_no_arguments): add test
+ [ruby-core:55543] [Bug #8540]
+
+Tue Jun 18 22:36:23 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (gc_profile_record_flag): fix typo.
+
+Tue Jun 18 22:08:53 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/objspace/object_tracing.c: Return for ::allocation_generation
+
+Tue Jun 18 22:04:35 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/objspace/object_tracing.c: Document object_tracing methods.
+
+Tue Jun 18 21:58:17 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * gc.c: Rename rb_mObSpace -> rb_mObjSpace
+
+Tue Jun 18 20:55:05 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/objspace/objspace.c: Document ObjectSpace::InternalObjectWrapper.
+
+Tue Jun 18 20:39:04 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/objspace/object_tracing.c: Teach rdoc object_tracing.c [Bug #8537]
+
+Tue Jun 18 20:29:47 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/.document: add object_tracing.c to document file
+
+Tue Jun 18 20:20:27 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/objspace/objspace.c: rdoc on require to overview from r41355
+
+Tue Jun 18 18:39:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: Check __int128.
+
+ * include/ruby/defines.h (BDIGIT_DBL): Use uint128_t if it is available.
+ (BDIGIT): Use uint64_t if uint128_t is available.
+ (SIZEOF_BDIGITS): Defined for above case.
+ (BDIGIT_DBL_SIGNED): Ditto.
+ (PRI_BDIGIT_PREFIX): Ditto.
+
+ * include/ruby/ruby.h (PRI_64_PREFIX): Defined.
+
+ * bignum.c (rb_big_pow): Don't use BITSPERDIG for the condition which
+ rb_big_pow returns Float or Bignum.
+
+ [ruby-dev:47413] [Feature #8509]
+
+Tue Jun 18 16:43:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_heredoc_restore): clear lex_strterm always to get
+ rid of marking recycled node. this bug is revealed by r41372 with
+ GC.stress=true.
+
+Tue Jun 18 12:53:25 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (nlz): Cast the result explicitly.
+ (big2dbl): Don't assign BDIGIT values to int variable.
+
+Tue Jun 18 12:25:16 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_xor): Non-effective code removed.
+
+Tue Jun 18 11:26:05 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stat): add `generated_normal_object_count_types' for
+ RGENGC_PROFILE >= 2.
+
+Tue Jun 18 11:02:18 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_mark_maybe): check to skip T_NONE.
+
+ * gc.c (markable_object_p): do not need to check (flags == 0) here.
+
+Tue Jun 18 10:17:37 2013 Koichi Sasada <ko1@atdot.net>
+
+ * variable.c (rb_autoload): fix WB miss.
+
+Tue Jun 18 04:20:18 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_mark_children): don't need to care about T_ZOMBIE here.
+
+Mon Jun 17 22:16:02 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/ruby/test_proc.rb (TestProc#test_block_given_method_to_proc):
+ run test for r41359.
+
+Mon Jun 17 21:42:18 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * include/ruby/ruby.h, vm_eval.c (rb_funcall_with_block):
+ new function to invoke a method with a block passed
+ as an argument.
+
+ * string.c (sym_call): use the above function to avoid
+ a block sharing. [ruby-dev:47438] [Bug #8531]
+
+ * vm_insnhelper.c (vm_yield_with_cfunc): don't set block
+ in the frame.
+
+ * test/ruby/test_symbol.rb (TestSymbol#test_block_given_to_proc):
+ run related tests.
+
+Mon Jun 17 21:33:27 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * include/ruby/intern.h, proc.c (rb_method_call_with_block):
+ new function to invoke a Method object with a block passed
+ as an argument.
+
+ * proc.c (bmcall): use the above function to avoid a block sharing.
+ [ruby-core:54626] [Bug #8341]
+
+ * test/ruby/test_proc.rb (TestProc#test_block_persist_between_calls):
+ run related tests.
+
+Mon Jun 17 20:53:21 2013 Tanaka Akira <akr@fsij.org>
+
+ * loadpath.c (RUBY_REVISION): Defined to suppress revision.h
+ inclusion actually. r41352 removes the dependency.
+
+Mon Jun 17 18:15:57 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * ext/objspace/objspace.c: let rdoc know about objspace methods.
+ Specify 'objspace' should be required. See #8537.
+
+Mon Jun 17 17:44:31 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * gc.c (ObjectSpace): is a module not a class.
+
+ * ext/objspace/objspace.c: try to include overview in rdoc,
+ see #8537.
+
+Mon Jun 17 17:38:24 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * gc.c: fix example of ObjectSpace.define_finalizer in overview
+
+Mon Jun 17 16:59:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tkutil/tkutil.c: use rb_sprintf(), rb_id2str(), and
+ rb_intern_str() instead of rb_intern() and RSTRING_PTR() with
+ RB_GC_GUARD(), to prevent temporary objects from GC.
+ [ruby-core:39000] [Bug #5199]
+
+Mon Jun 17 14:27:54 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_backtrace.c: Update rdoc for Backtrace#label with @_ko1
+
+Mon Jun 17 13:04:01 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * tool/ifchange (until): Fix the condition, although harmless in
+ this case.
+
+Mon Jun 17 11:50:29 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_mark_maybe): added. check `is_pointer_to_heap()' and
+ type is not T_ZOMBIE.
+
+ * gc.c: use `gc_mark_maybe()'. T_ZOMBIE objects should not be pushed
+ to the mark stack.
+
+Mon Jun 17 07:56:24 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_small_lshift): Renamed from bdigs_small_lshift.
+ (bary_small_rshift): Renamed from bdigs_small_rshift.
+
+Mon Jun 17 07:38:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (absint_numwords_bytes): Removed.
+ (rb_absint_numwords): Don't call absint_numwords_bytes.
+
+Sun Jun 16 23:14:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (BARY_ADD): New macro.
+ (BARY_SUB): Ditto.
+ (BARY_MUL): Ditto.
+ (BARY_DIVMOD): Ditto.
+ (BARY_ZERO_P): Ditto.
+ (absint_numwords_generic): Use these macros.
+
+Sun Jun 16 21:41:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_2comp): Extracted from get2comp.
+ (integer_unpack_num_bdigits): Extracted from
+ rb_integer_unpack_internal.
+ (bary_unpack_internal): Renamed from bary_unpack and support
+ INTEGER_PACK_2COMP.
+ (bary_unpack): New function to validate arguments and invoke
+ bary_unpack_internal.
+ (rb_integer_unpack_internal): Removed.
+ (rb_integer_unpack): Invoke bary_unpack_internal.
+ (rb_integer_unpack_2comp): Removed.
+
+ * internal.h (rb_integer_unpack_2comp): Removed.
+
+ * pack.c: Follow the above change.
+
+Sun Jun 16 18:41:42 2013 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (INTEGER_PACK_2COMP): Defined.
+ (rb_integer_pack_2comp): Removed.
+
+ * bignum.c (bary_pack): Support INTEGER_PACK_2COMP.
+ (rb_integer_pack): Invoke bary_pack directly.
+ (rb_integer_pack_2comp): Removed.
+ (rb_integer_pack_internal): Ditto.
+ (absint_numwords_generic): Follow the above change.
+
+ * pack.c (pack_pack): Ditto.
+
+ * sprintf.c (rb_str_format): Ditto.
+
+Sun Jun 16 17:48:14 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (absint_numwords_generic): rb_funcall invocations removed.
+
+Sun Jun 16 16:04:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/config_files.rb: use URI.read to allow it runs with Ruby 1.8.5.
+
+Sun Jun 16 14:32:25 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_pack) Extracted from rb_integer_pack_internal.
+ (absint_numwords_generic): Use bary_pack.
+
+Sun Jun 16 11:01:57 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS (XMLRPC::Client#http): Add.
+ [ruby-core:55197] [Feature #8461]
+
+Sun Jun 16 10:38:45 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_add): New function.
+ (bary_zero_p): Extracted from bigzero_p.
+ (absint_numwords_generic): Use bary_zero_p and bary_add.
+ (bary_mul): Fix an argument for bary_mul_single.
+ (bary_divmod): Use size_t for arguments.
+
+Sun Jun 16 08:55:22 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem): Use a BDIGIT variable to store the return
+ value of bigdivrem_single.
+
+Sun Jun 16 08:43:59 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_divmod): New function.
+ (absint_numwords_generic): Use bary_divmod.
+ (bigdivrem_num_extra_words): Extracted from bigdivrem.
+ (bigdivrem_single): Ditto.
+ (bigdivrem_normal): Ditto.
+ (BIGDIVREM_EXTRA_WORDS): Defined.
+
+Sun Jun 16 05:51:51 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c: Fixup around GC by MALLOC.
+ Add allocate size to malloc_increase before GC
+ for updating limit in after_gc_sweep.
+ Reset malloc_increase into garbage_collect()
+ for preventing GC again soon.
+
+Sun Jun 16 05:15:36 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c: Add some columns to more detail profile.
+ new columns: Allocated size, Prepare Time, Removing Objects, Empty Objects
+
+Sun Jun 16 02:04:40 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (gc_prof_timer_stop): Merge function codes of GC_PROFILE_MORE_DETAIL and !GC_PROFILE_MORE_DETAIL.
+ * gc.c (gc_prof_mark_timer_start): Ditto.
+ * gc.c (gc_prof_mark_timer_stop): Ditto.
+ * gc.c (gc_prof_sweep_slot_timer_start): Ditto.
+ * gc.c (gc_prof_sweep_slot_timer_stop): Ditto.
+ * gc.c (gc_prof_set_malloc_info): Ditto.
+ * gc.c (gc_prof_set_heap_info): Ditto.
+
+Sat Jun 15 23:50:24 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_sub): New function.
+ (absint_numwords_generic): Use bary_sub.
+ (bigsub_core): Skip unnecessary copy.
+
+Sat Jun 15 22:05:30 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_mul): New function.
+ (absint_numwords_generic): Use bary_mul.
+ (bary_mul_single): Extracted from bigmul1_single.
+ (bary_mul_normal): Extracted from bigmul1_normal.
+
+Sat Jun 15 20:13:46 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bary_unpack): Extracted from rb_integer_unpack_internal.
+ (absint_numwords_generic): Use bary_unpack.
+ (roomof): Defined.
+ (bdigit_roomof): Defined.
+ (BARY_ARGS): Defined.
+ (bary_unpack): Declared.
+
+Sat Jun 15 19:35:04 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (absint_numwords_bytes): Make it static.
+ (absint_numwords_small): Ditto.
+ (absint_numwords_generic): Ditto.
+
+Sat Jun 15 17:14:32 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigmul1_normal): Shrink the result Bignum length.
+
+Sat Jun 15 10:19:42 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/bigdecimal/bigdecimal.c: Update overview formatting of headers
+
+Sat Jun 15 10:19:06 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/bigdecimal/bigdecimal.gemspec: Update authors
+
+Sat Jun 15 10:02:26 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bdigs_small_rshift): Extracted from big_rshift.
+ (bigdivrem): Use bdigs_small_rshift.
+
+Sat Jun 15 08:37:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (eval_string_with_cref): propagate absolute path from the
+ binding if it is given explicitly. patch by Gat (Dawid Janczak) at
+ [ruby-core:55123]. [Bug #8436]
+
+Sat Jun 15 02:40:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bdigs_small_lshift): Extracted from big_lshift.
+ (bigdivrem): Use bdigs_small_lshift.
+
+Fri Jun 14 20:47:41 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem): Reduce number of digits before bignew() for div.
+
+Fri Jun 14 20:12:37 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem): Use bignew when ny == 1.
+
+Fri Jun 14 18:52:51 2013 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (rb_iseq_compile_node): fix location of a `trace'
+ instruction (b_return event).
+ [ruby-core:55305] [ruby-trunk - Bug #8489]
+ (need a backport to 2.0.0?)
+
+ * test/ruby/test_settracefunc.rb: add a test.
+
+Fri Jun 14 18:18:07 2013 Koichi Sasada <ko1@atdot.net>
+
+ * class.c, include/ruby/ruby.h: add write barriers for T_CLASS,
+ T_MODULE, T_ICLASS.
+
+ * constant.h: constify rb_const_entry_t::value and file to detect
+ assignment.
+
+ * variable.c, internal.h (rb_st_insert_id_and_value, rb_st_copy):
+ added. update table with write barrier.
+
+ * method.h: constify some variables to detect assignment.
+
+ * object.c (init_copy): add WBs.
+
+ * variable.c: ditto.
+
+ * vm_method.c (rb_add_method): ditto.
+
+Fri Jun 14 14:33:47 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * NEWS: add a note for Module#using.
+
+Fri Jun 14 13:40:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .travis.yml (before_script): update config files.
+
+ * common.mk ($(srcdir)/tool/config.{guess,sub}): use get-config_files.
+
+ * tool/config_files.rb: split get-config_files.
+
+ * common.mk (update-config_files): rule to download config files.
+
+ * tool/config.guess, tool/config.sub: remove and download from the
+ upstream.
+
+ * tool/config_files.rb: download config files from GNU.
+
+Fri Jun 14 12:21:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RUBY_SAFE_LEVEL_CHECK): suppress warnings
+ "left-hand operand of comma expression has no effect", on gcc 4.4.
+
+Fri Jun 14 09:48:48 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * NEWS: add notes for $SAFE.
+
+ * doc/security.rdoc: remove the description of $SAFE=4.
+
+Fri Jun 14 00:14:29 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem): Zero test condition simplified.
+
+Thu Jun 13 23:43:11 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/bigdecimal/*: improve documentation, nodoc samples with @mrkn
+
+Thu Jun 13 23:02:14 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client#http): Add reader for raw
+ Net::HTTP. [ruby-core:55197] [Feature #8461]
+ Reported by Herwin Weststrate. Thanks!!!
+
+Thu Jun 13 22:44:52 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client#parse_set_cookies): Support
+ multiple names in a response. [ruby-core:41711] [Bug #5774]
+ Reported by Roman Riha. Thanks!!!
+ * test/xmlrpc/test_client.rb (XMLRPC::ClientTest#test_cookie_override):
+ Add a test of the above case.
+
+Thu Jun 13 22:35:50 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client#parse_set_cookies): Use
+ guard style.
+
+Thu Jun 13 22:12:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils#rmdir): fix traversal loop, not trying
+ remove same directory only.
+
+Thu Jun 13 21:30:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (opt-dir), tool/ifchange: get rid of "alternate value"
+ expansion for legacy sh. [ruby-dev:47420] [Bug #8524]
+
+Thu Jun 13 21:24:09 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem): Refactored to use ALLOCV_N for temporary
+ buffers.
+
+Thu Jun 13 18:54:11 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (integer_unpack_num_bdigits_generic): reorder terms (but not
+ changed the intention of the expression) because VC++ reports a
+ warning for it. reported by ko1 via IRC.
+
+Thu Jun 13 18:53:14 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_thread.rb (test_thread_local_security): Don't create
+ an unused thread.
+
+Thu Jun 13 18:34:20 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigdivrem): Use nlz.
+
+Thu Jun 13 14:51:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RUBY_SAFE_LEVEL_CHECK): check constant safe
+ level at compile time.
+
+Thu Jun 13 14:39:08 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/-ext-/test_printf.rb, test/rss/test_parser.rb,
+ test/ruby/test_array.rb, test/ruby/test_hash.rb,
+ test/ruby/test_m17n.rb, test/ruby/test_marshal.rb,
+ test/ruby/test_object.rb, test/ruby/test_string.rb: don't use
+ untrusted?, untrust, and trust to avoid warnings in case $VERBOSE is
+ true.
+
+Thu Jun 13 10:47:16 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * bootstraptest/test_autoload.rb, bootstraptest/test_method.rb:
+ remove tests for $SAFE=4.
+
+ * lib/pp.rb: use taint instead of untrust to avoid warnings when
+ $VERBOSE is set to true.
+
+Thu Jun 13 06:12:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (integer_unpack_num_bdigits_small): Fix a compile error on
+ clang -Werror,-Wshorten-64-to-32
+ Reported by Eric Hodel. [ruby-core:55467] [Bug #8522]
+
+Thu Jun 13 05:32:13 2013 Eric Hodel <drbrain@segment7.net>
+
+ * ext/socket/extconf.rb: Enable RFC 3542 IPV6 socket options for OS X
+ 10.7+. [ruby-trunk - Bug #8517]
+
+Thu Jun 13 00:17:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_unpack_2comp): New function.
+ (rb_integer_unpack_internal): Extracted from rb_integer_unpack and
+ nlp_bits_ret argument added.
+ (integer_unpack_num_bdigits_small): nlp_bits_ret argument added to
+ return number of leading padding bits.
+ (integer_unpack_num_bdigits_generic): Ditto.
+
+ * internal.h (rb_integer_unpack_2comp): Declared.
+
+ * pack.c (pack_unpack): Use rb_integer_unpack_2comp and
+ rb_integer_unpack.
+
+Wed Jun 12 23:27:03 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (mod_using): new method Module#using, which activates
+ refinements of the specified module only in the current class or
+ module definition. [ruby-core:55273] [Feature #8481]
+
+ * test/ruby/test_refinement.rb: related test.
+
+Wed Jun 12 22:58:48 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * safe.c (rb_set_safe_level, safe_setter): raise an ArgumentError
+ when $SAFE is set to 4. $SAFE=4 is now obsolete.
+ [ruby-core:55222] [Feature #8468]
+
+ * object.c (rb_obj_untrusted, rb_obj_untrust, rb_obj_trust):
+ Kernel#untrusted?, untrust, and trust are now deprecated.
+ Their behavior is same as tainted?, taint, and untaint,
+ respectively.
+
+ * include/ruby/ruby.h (OBJ_UNTRUSTED, OBJ_UNTRUST): OBJ_UNTRUSTED()
+ and OBJ_UNTRUST() are aliases of OBJ_TAINTED() and OBJ_TAINT(),
+ respectively.
+
+ * array.c, class.c, debug.c, dir.c, encoding.c, error.c, eval.c,
+ ext/curses/curses.c, ext/dbm/dbm.c, ext/dl/cfunc.c,
+ ext/dl/cptr.c, ext/dl/dl.c, ext/etc/etc.c, ext/fiddle/fiddle.c,
+ ext/fiddle/pointer.c, ext/gdbm/gdbm.c, ext/readline/readline.c,
+ ext/sdbm/init.c, ext/socket/ancdata.c, ext/socket/basicsocket.c,
+ ext/socket/socket.c, ext/socket/udpsocket.c,
+ ext/stringio/stringio.c, ext/syslog/syslog.c, ext/tk/tcltklib.c,
+ ext/win32ole/win32ole.c, file.c, gc.c, hash.c, io.c, iseq.c,
+ load.c, marshal.c, object.c, proc.c, process.c, random.c, re.c,
+ safe.c, string.c, thread.c, transcode.c, variable.c,
+ vm_insnhelper.c, vm_method.c, vm_trace.c: remove code for
+ $SAFE=4.
+
+ * test/dl/test_dl2.rb, test/erb/test_erb.rb,
+ test/readline/test_readline.rb,
+ test/readline/test_readline_history.rb, test/ruby/test_alias.rb,
+ test/ruby/test_array.rb, test/ruby/test_dir.rb,
+ test/ruby/test_encoding.rb, test/ruby/test_env.rb,
+ test/ruby/test_eval.rb, test/ruby/test_exception.rb,
+ test/ruby/test_file_exhaustive.rb, test/ruby/test_hash.rb,
+ test/ruby/test_io.rb, test/ruby/test_method.rb,
+ test/ruby/test_module.rb, test/ruby/test_object.rb,
+ test/ruby/test_pack.rb, test/ruby/test_rand.rb,
+ test/ruby/test_regexp.rb, test/ruby/test_settracefunc.rb,
+ test/ruby/test_struct.rb, test/ruby/test_thread.rb,
+ test/ruby/test_time.rb: remove tests for $SAFE=4.
+
+Wed Jun 12 22:18:23 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (integer_unpack_num_bdigits_generic): Rewritten without
+ rb_funcall.
+ (integer_unpack_num_bdigits_bytes): Removed.
+ (rb_integer_unpack): integer_unpack_num_bdigits_bytes invocation
+ removed.
+
+Wed Jun 12 20:18:03 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client#parse_set_cookies): Extract.
+
+Wed Jun 12 18:19:41 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (validate_integer_pack_format): supported_flags argument
+ added and validate given flags.
+ (rb_integer_pack_internal): Specify supported_flags.
+ (rb_integer_unpack): Ditto.
+
+Wed Jun 12 16:41:38 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): remove duplicated assertions.
+ ARY_HEAP_PTR() implies ary not to be embedded. [ruby-dev:47419]
+ [Bug #8518]
+
+Wed Jun 12 12:44:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_getc): fix 7bit coderange condition, check if ascii read
+ data instead of read length. [ruby-core:55444] [Bug #8516]
+
+Wed Jun 12 12:35:13 2013 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_pack): Use rb_integer_pack_2comp.
+
+Wed Jun 12 12:07:04 2013 Tanaka Akira <akr@fsij.org>
+
+ * sprintf.c (rb_str_format): Fix a dynamic format string.
+
+Wed Jun 12 12:04:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_uniq_bang): must not be modified once frozen even in
+ a callback method.
+
+Wed Jun 12 12:03:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): must not be modified once frozen even in
+ a callback method.
+
+Wed Jun 12 12:00:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (FL_SET_EMBED): shared object is frozen even when get
+ unshared.
+
+ * array.c (rb_ary_modify): ARY_SET_CAPA needs unshared array.
+
+Wed Jun 12 07:32:01 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (rand_int): Use rb_big_uminus.
+
+Wed Jun 12 07:12:54 2013 Eric Hodel <drbrain@segment7.net>
+
+ * struct.c: Improve documentation: replace "instance variable" with
+ "member", recommend the use of a block to customize structs, note
+ that member accessors are created, general cleanup.
+
+Wed Jun 12 06:35:01 2013 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (INTEGER_PACK_NEGATIVE): Defined.
+ (rb_integer_unpack): sign argument removed.
+
+ * bignum.c (rb_integer_unpack): sign argument removed.
+ Non-negative integers generated by default.
+ INTEGER_PACK_NEGATIVE flag is used to generate non-positive integers.
+
+ * pack.c (pack_unpack): Follow the above change.
+
+ * random.c (int_pair_to_real_inclusive): Ditto.
+ (make_seed_value): Ditto.
+ (mt_state): Ditto.
+ (limited_big_rand): Ditto.
+
+ * marshal.c (r_object0): Ditto.
+
+Wed Jun 12 00:07:46 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/xmlrpc/test_client.rb (XMLRPC::ClientTest#test_cookie_simple):
+ Add a test for the extracted method.
+
+Tue Jun 11 23:56:24 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/xmlrpc/test_client.rb (XMLRPC::ClientTest::Fake::HTTP#started):
+ Add a missing empty line.
+
+Tue Jun 11 23:37:19 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (validate_integer_pack_format): Don't require a word order
+ flag if numwords is 1 or less.
+ (absint_numwords_generic): Don't specify a word order for
+ rb_integer_pack.
+
+ * hash.c (rb_hash): Ditto.
+
+ * time.c (v2w_bignum): Ditto.
+
+Tue Jun 11 23:01:57 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (validate_integer_pack_format): Refine error messages.
+
+Tue Jun 11 22:25:04 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (validate_integer_pack_format): numwords argument added.
+ Move a varidation from rb_integer_pack_internal and rb_integer_unpack.
+ (rb_integer_pack_internal): Follow above change.
+ (rb_integer_unpack): Ditto.
+
+Tue Jun 11 20:52:43 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_pack_internal): Renamed from rb_integer_pack
+ and overflow_2comp argument added.
+ (rb_integer_pack): Just call rb_integer_pack_internal.
+ (rb_integer_pack_2comp): New function.
+
+ * internal.h (rb_integer_pack_2comp): Declared.
+
+ * sprintf.c (rb_str_format): Use rb_integer_pack and
+ rb_integer_pack_2comp to format binary/octal/hexadecimal integers.
+ (ruby_digitmap): Declared.
+ (remove_sign_bits): Removed.
+ (BITSPERDIG): Ditto.
+ (EXTENDSIGN): Ditto.
+
+Tue Jun 11 16:15:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_shrink_capa): shrink the capacity so it fits just with
+ the length.
+
+ * array.c (ary_make_shared): release never used elements from frozen
+ array to be shared. [ruby-dev:47416] [Bug #8510]
+
+Tue Jun 11 12:49:01 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/re.rdoc: Rename to doc/regexp.rdoc
+ * re.c: Update rdoc include for rename of file
+
+Tue Jun 11 07:13:13 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * eval_error.c (error_print): keep that errat is non-shady object.
+ and guard errat from GC.
+
+Tue Jun 11 05:04:25 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * ext/racc/cparse/cparse.c: use rb_ary_entry() and
+ rb_ary_subseq() instead of RARRAY_PTR.
+ Based on a patch by Dirkjan Bussink. See Bug #8399.
+
+Mon Jun 10 23:51:51 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * array.c (rb_ary_new_from_values): fix a typo. pointed out by
+ nagachika.
+ http://d.hatena.ne.jp/nagachika/20130610/ruby_trunk_changes_41199_41220
+
+Mon Jun 10 21:51:03 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * ext/socket/raddrinfo.c (nogvl_getaddrinfo): Fix indent.
+
+Mon Jun 10 21:49:43 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * ext/socket/raddrinfo.c (nogvl_getaddrinfo): Add missing return
+ value assignment.
+
+Mon Jun 10 20:58:11 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (nogvl_getaddrinfo): work around for Ubuntu
+ 13.04's getaddrinfo issue with mdns4. [ruby-list:49420]
+
+Mon Jun 10 19:34:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_pack): Returns sign instead of words.
+ (absint_numwords_generic): Follow the above change.
+ (big2str_base_powerof2): Follow the above change.
+
+ * internal.h: Ditto.
+
+ * hash.c (rb_hash): Ditto.
+
+ * pack.c (pack_pack): Ditto.
+
+ * random.c (int_pair_to_real_inclusive): Ditto.
+ (rand_init): Ditto.
+ (random_load): Ditto.
+ (limited_big_rand): Ditto.
+
+ * time.c (v2w_bignum): Ditto.
+
+Mon Jun 10 17:20:01 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rgengc_remember): permit promoted object.
+ (rb_gc_writebarrier -> remember)
+
+Mon Jun 10 17:14:01 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (RVALUE_PROMOTE): fix parameter name (`x' to `obj')
+ and make it inline function (like RVALUE_PROMOTE).
+
+Mon Jun 10 16:22:50 2013 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_new_from_values): add assertion
+ (ary should be young object).
+
+Mon Jun 10 16:05:59 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (wmap_mark): check allocation of `w->obj2wmap'.
+ (no-allocation `w->obj2wmap' will be NULL pointer reference)
+
+Mon Jun 10 15:36:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.c (error_print): use checking functions instead of
+ catching exceptions.
+
+ * eval_error.c (error_print): restore errinfo for the case new
+ exception raised while printing the message. [ruby-core:55365]
+ [Bug #8501]
+
+ * eval_error.c (error_print): reduce calling setjmp.
+
+Mon Jun 10 12:10:06 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (integer_unpack_num_bdigits_small: Extracted from
+ rb_integer_unpack.
+ (integer_unpack_num_bdigits_generic): Ditto.
+ (integer_unpack_num_bdigits_bytes): New function.
+ (rb_integer_unpack): Use above functions.
+ Return a Bignum for INTEGER_PACK_FORCE_BIGNUM even when the result
+ is zero.
+
+Mon Jun 10 05:38:23 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (absint_numwords_small): New function.
+ (absint_numwords_generic): Use absint_numwords_small if possible.
+
+Mon Jun 10 01:07:57 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (absint_numwords_bytes): New function.
+ (absint_numwords_generic): Extracted from rb_absint_numwords.
+ (rb_absint_numwords): Use absint_numwords_bytes if possible.
+
+Sun Jun 9 21:33:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_absint_numwords): Return (size_t)-1 when overflow.
+ Refine variable names.
+ (rb_absint_size): Refine variable names.
+
+ * internal.h (rb_absint_size): Refine an argument name.
+ (rb_absint_numwords): Ditto.
+
+Sun Jun 9 16:51:41 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_absint_numwords): Renamed from rb_absint_size_in_word.
+
+ * internal.h (rb_absint_numwords): Follow the above change.
+
+ * pack.c (pack_pack): Ditto.
+
+ * random.c (rand_init): Ditto.
+ (limited_big_rand): Ditto.
+
+Sun Jun 9 14:41:05 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_pack): numwords_allocated argument removed.
+
+ * internal.h (rb_integer_pack): Follow the above change.
+
+ * hash.c (rb_hash): Ditto.
+
+ * time.c (v2w_bignum): Ditto.
+
+ * pack.c (pack_pack): Ditto.
+
+ * random.c (int_pair_to_real_inclusive): Ditto.
+ (rand_init): Ditto.
+ (random_load): Ditto.
+ (limited_big_rand): Ditto.
+
+Sun Jun 9 09:34:44 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big2str_base_powerof2): New function.
+ (rb_big2str0): Use big2str_base_powerof2 if base is 2, 4, 8, 16 or 32.
+
+Sun Jun 9 00:59:04 2013 Tanaka Akira <akr@fsij.org>
+
+ * hash.c (rb_hash): Use rb_integer_pack to obtain least significant
+ long integer.
+
+Sat Jun 8 23:56:00 2013 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (rb_num_to_uint): Use rb_absint_size instead of
+ RBIGNUM_LEN.
+
+Sat Jun 8 22:53:45 2013 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (r_object0): Use rb_integer_unpack.
+
+Sat Jun 8 22:18:57 2013 Tanaka Akira <akr@fsij.org>
+
+ * time.c (v2w): Use rb_absint_size instead of RBIGNUM_LEN.
+
+Sat Jun 8 21:47:33 2013 Tanaka Akira <akr@fsij.org>
+
+ * time.c (v2w_bignum): Simplified using rb_integer_pack.
+ (rb_big_abs_find_maxbit): Removed.
+
+Sat Jun 8 21:03:40 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_absint_singlebit_p): New function.
+
+ * internal.h (rb_absint_singlebit_p): Declared.
+
+ * time.c (v2w_bignum): Use rb_absint_singlebit_p instead of
+ rb_big_abs_find_minbit.
+ (rb_big_abs_find_minbit): Removed.
+
+Sat Jun 8 20:24:23 2013 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_big_abs_find_maxbit): Use rb_absint_size.
+ (bdigit_find_maxbit): Removed.
+
+Sat Jun 8 19:47:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * class.c (include_modules_at): invalidate method cache if included
+ module contains constants
+
+ * test/ruby/test_module.rb: add test
+
+Sat Jun 8 19:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * random.c (limited_big_rand): declare rnd, lim and mask as uint32_t
+ to avoid 64 bit to 32 bit shorten warnings.
+
+Sat Jun 8 19:23:53 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * win32/Makefile.sub: r41163 changed win32/win32.c and configure.in
+ but it didn't treat about mswin32/mswin64, so fix it.
+ NOTE: this needs a review by usa whether additional condition is
+ required or not.
+
+Sat Jun 8 19:06:26 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c: Unused RBignum internal accessing macros removed.
+
+Sat Jun 8 19:04:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (limited_big_rand): The argument, limit, is changed to
+ VALUE. Use rb_integer_pack and rb_integer_unpack.
+
+Sat Jun 8 17:15:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (make_seed_value): Fix the length given for
+ rb_integer_unpack.
+
+Sat Jun 8 16:38:02 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_unpack): Don't use rb_funcall if possible.
+
+ * random.c: Use uint32_t for elements of seed.
+ (make_seed_value): Use rb_integer_unpack.
+
+Sat Jun 8 15:58:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (rand_init): Add a cast to fix clang compile error:
+ random.c:410:32: error: implicit conversion loses integer precision:
+ 'size_t' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
+ This cast doesn't cause a problem because len is not bigger than
+ MT_MAX_STATE.
+
+Sat Jun 8 15:30:03 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (rand_init): Use rb_integer_pack.
+ (roomof): Removed.
+
+Sat Jun 8 14:58:32 2013 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (INTEGER_PACK_FORCE_BIGNUM): New flag constant.
+
+ * bignum.c (rb_integer_unpack): Support INTEGER_PACK_FORCE_BIGNUM.
+
+ * random.c (int_pair_to_real_inclusive): Use
+ INTEGER_PACK_FORCE_BIGNUM to use rb_big_mul instead of rb_funcall.
+
+Sat Jun 8 14:17:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check for NET_LUID. header macro varies across
+ compiler versions.
+
+ * win32/win32.c: use configured macro.
+
+Sat Jun 8 11:59:55 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (int_pair_to_real_inclusive): Use rb_funcall instead of
+ rb_big_mul because rb_integer_unpack can return a Fixnum.
+
+Sat Jun 8 11:17:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (int_pair_to_real_inclusive): Use rb_integer_pack.
+
+Sat Jun 8 09:49:42 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (int_pair_to_real_inclusive): Use rb_integer_unpack.
+
+Sat Jun 8 08:12:22 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (random_load): Use rb_integer_pack.
+
+Sat Jun 8 06:15:46 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (numberof): Removed.
+
+Sat Jun 8 06:00:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c: include internal.h.
+ (mt_state): Use rb_integer_unpack.
+
+Sat Jun 8 00:55:51 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (integer_pack_loop_setup): word_num_nailbytes_ret argument
+ removed.
+ (rb_integer_pack): Follow the above change.
+ (rb_integer_unpack): Follow the above change.
+
+Sat Jun 8 00:37:32 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (validate_integer_pack_format): Renamed from
+ validate_integer_format.
+ (integer_pack_loop_setup): Renamed from integer_format_loop_setup.
+ (integer_pack_fill_dd): Renamed from int_export_fill_dd.
+ (integer_pack_take_lowbits): Renamed from int_export_take_lowbits.
+ (integer_unpack_push_bits): Renamed from int_import_push_bits.
+
+Fri Jun 7 23:58:06 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_pack): Arguments changed. Use flags to
+ specify word order and byte order.
+ (rb_integer_unpack): Ditto.
+ (validate_integer_format): Follow the above change.
+ (integer_format_loop_setup): Ditto.
+
+ * pack.c: Ditto.
+
+ * internal.h: Ditto.
+ (INTEGER_PACK_MSWORD_FIRST): Defined.
+ (INTEGER_PACK_LSWORD_FIRST): Ditto.
+ (INTEGER_PACK_MSBYTE_FIRST): Ditto.
+ (INTEGER_PACK_LSBYTE_FIRST): Ditto.
+ (INTEGER_PACK_NATIVE_BYTE_ORDER): Ditto.
+ (INTEGER_PACK_LITTLE_ENDIAN): Ditto.
+ (INTEGER_PACK_BIG_ENDIAN): Ditto.
+
+Fri Jun 7 22:10:50 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/specification.rb (Gem::Specification#to_yaml):
+ use Gem::NoAliasYAMLTree.create instead of Gem::NoAliasYAMLTree.new
+ to suppress deprecated warnings.
+
+Fri Jun 7 21:39:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_pack): Renamed from rb_int_export.
+ (rb_integer_unpack): Renamed from rb_int_import.
+
+ * internal.h, pack.c: Follow the above change.
+
+Fri Jun 7 21:05:26 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (integer_format_loop_setup): Extracted from rb_int_export
+ and rb_int_import.
+
+Fri Jun 7 19:48:38 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (validate_integer_format): Extracted from rb_int_export and
+ rb_int_import.
+
+Fri Jun 7 19:23:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_absint_size): Use numberof.
+ (rb_int_export): Ditto.
+
+Fri Jun 7 18:58:56 2013 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (numberof): Gathered from various files.
+
+ * array.c, math.c, thread_pthread.c, iseq.c, enum.c, string.c, io.c,
+ load.c, compile.c, struct.c, eval.c, gc.c, parse.y, process.c,
+ error.c, ruby.c: Remove the definitions of numberof.
+
+Fri Jun 7 18:24:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_absint_size): Declare a variable, i, just before used
+ to suppress a warning.
+ (rb_int_export): Ditto.
+
+Fri Jun 7 17:41:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * bignum.c (rb_absint_size): explicit cast to BDIGIT to avoid implicit
+ 64 bit to 32 bit shortening warning
+ * bignum.c (rb_int_export): ditto
+ * bignum.c (int_import_push_bits): ditto
+
+Fri Jun 7 17:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * internal.h (RCLASS_SUPER): use descriptive variable name
+ * internal.h (RCLASS_SET_SUPER): ditto
+
+Fri Jun 7 13:25:27 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/fbuffer/fbuffer.h (fbuffer_append_str): change the place of
+ RB_GC_GUARD. it should be after the object is used.
+
+Fri Jun 7 13:22:43 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (before_gc_sweep): noinline can also avoid the segv instead of
+ -O0 of r41084. this way is expected less slow.
+
+Fri Jun 7 11:45:42 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * rational.c (numeric_quo): move num_quo in numeric.c to numeric_quo
+ in rational.c to refer canonicalization state for mathn support.
+ [ruby-core:41575] [Bug #5736]
+
+ * numeric.c (num_quo): ditto.
+
+ * test/test_mathn.rb: add a test for the change at r41109.
+
+Fri Jun 7 11:41:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: revert r41106. size_t may not be unsigned
+
+ * bignum.c (rb_absint_size_in_word, rb_int_export, rb_int_import): use
+ NUM2SIZET() and SIZET2NUM() already defined in ruby/ruby.h.
+
+Fri Jun 7 11:28:37 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c: use oldgen bitmap as initial mark bitmap when major gc.
+ so can skip oldgen bitmap check around mark & sweep.
+ * gc.c (slot_sweep_body): change scan algorithm for performance:
+ from object's pointer base to bitmap one.
+
+Fri Jun 7 11:25:56 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c: introduce oldgen bitmap for preparing performance tuning.
+
+Fri Jun 7 11:20:57 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (MARKED_IN_BITMAP, MARK_IN_BITMAP, CLEAR_IN_BITMAP): bring
+ bitmap macros in one place, and introduce BITMAP_BIT.
+
+Fri Jun 7 11:18:35 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * array.c (ary_new): change order of allocation in order
+ to remove FL_OLDGEN operation.
+
+Fri Jun 7 11:16:28 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * tool/rdocbench.rb: add gc total time information.
+
+Fri Jun 7 10:12:01 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: remove "Sunny" terminology.
+ "Sunny" doesn't mean antonym of "Shady" (questionable, doubtful, etc).
+ Instead of "Sunny", use "non-shady" or "normal".
+
+Fri Jun 7 09:29:33 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * bignum.c (rb_int_import): explicitly casting BDIGIT_DBL to BDIGIT
+ to prevent warning.
+
+Fri Jun 7 07:29:33 2013 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_int_export): countp argument is split into
+ wordcount_allocated and wordcount.
+
+ * bignum.c (rb_int_export): Follow the above change.
+
+ * pack.c (pack_pack): Ditto.
+
+Fri Jun 7 07:17:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: describe a compatibility issue of Numeric#quo
+ introduced at r41109.
+
+Fri Jun 7 07:15:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: fix style.
+
+Fri Jun 7 06:48:17 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * numeric.c: remove unused ID id_to_r introduced in r41109.
+
+Fri Jun 7 06:15:31 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_int_import): New function.
+ (int_import_push_bits): Ditto.
+
+ * internal.h (rb_int_import): Declared.
+
+ * pack.c (pack_unpack): Use rb_int_import for BER compressed integer.
+
+Thu Jun 6 22:24:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * numeric.c (num_quo): Use to_r method to convert the receiver to
+ rational. [ruby-core:41575] [Bug #5736]
+
+ * test/ruby/test_numeric.rb: add a test for the above change.
+
+Thu Jun 6 20:40:17 2013 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: Invoke RUBY_REPLACE_TYPE for size_t.
+ Don't invoke RUBY_CHECK_PRINTF_PREFIX for size_t to avoid conflict
+ with RUBY_REPLACE_TYPE.
+
+ * internal.h (rb_absint_size): Declared.
+ (rb_absint_size_in_word): Ditto.
+ (rb_int_export): Ditto.
+
+ * bignum.c (rb_absint_size): New function.
+ (rb_absint_size_in_word): Ditto.
+ (int_export_fill_dd): Ditto.
+ (int_export_take_lowbits): Ditto.
+ (rb_int_export): Ditto.
+
+ * pack.c (pack_pack): Use rb_int_export for BER compressed integer.
+
+Thu Jun 6 19:31:33 2013 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: fixed coding error [ruby-core:55337].
+ reported by Riley Lynch.
+
+Thu Jun 6 14:16:37 2013 Narihiro Nakamura <authornari@gmail.com>
+
+ * ext/objspace/object_tracing.c: rename allocation_info to
+ lookup_allocation_info. At times I confused "struct
+ allocation_info" with "function allocation_info".
+
+Thu Jun 6 13:57:06 2013 Narihiro Nakamura <authornari@gmail.com>
+
+ * ext/objspace/object_tracing.c: allocation_info function isn't
+ called by any other file.
+
+Thu Jun 6 09:41:00 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * numeric.c (num_quo): should return a Float for a Float argument.
+ [ruby-dev:44710] [Bug #5515]
+
+ * test/ruby/test_fixnum.rb: Add an assertion for the above change.
+
+ * test/ruby/test_bignum.rb: ditto.
+
+Thu Jun 6 00:59:44 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (gc_mark): get rid of pushing useless objects.
+ * gc.c (rgengc_rememberset_mark): bypass gc_mark() in order to push
+ sunny old object at minor gc.
+ * gc.c (gc_mark_children): move sunny old check to gc_mark().
+ * gc.c (rgengc_check_shady): remove DEMOTE that already unnecessary.
+ * gc.c (rb_gc_writebarrier): ditto.
+
+ change sunny old check point in order to save mark stack and
+ remove unnatural rest_sweep & demote.
+
+Thu Jun 6 00:52:42 2013 Masaya Tarui <tarui@ruby-lang.org>
+
+ * gc.c (rgengc_rememberset_mark): change scan algorithm for performance:
+ from object's pointer base to bitmap one.
+
+Thu Jun 6 00:30:04 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * win32/win32.c (NET_LUID): define it on MinGW32.
+ mingw-w64 has NET_LUID but mingw32 (mingw.org) still doesn't have
+ NET_LUID. reported by taco on IRC
+
+Thu Jun 6 00:05:08 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (String#b): Allow code range scan to happen later so
+ ascii_only? on a result string returns the correct value.
+ [ruby-core:55315] [Bug #8496]
+
+Wed Jun 5 22:40:42 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (capability_response): should ignore trailing
+ spaces. Thanks, Peter Kovacs. [ruby-core:55024] [Bug #8415]
+
+ * test/net/imap/test_imap_response_parser.rb: related test.
+
+Wed Jun 5 21:17:08 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big_fdiv): Use nlz() instead of bdigbitsize().
+ (bdigbitsize): Removed.
+
+Wed Jun 5 20:32:00 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * include/ruby/ruby.h: fix alignment in comment.
+
+Wed Jun 5 20:05:29 2013 Tanaka Akira <akr@fsij.org>
+
+ * random.c (int_pair_to_real_inclusive): Add a cast to BDIGIT.
+ (random_load): Fix shift width for fixnums.
+ Re-implement bignum extraction without ifdefs.
+
+Wed Jun 5 15:26:10 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (before_gc_sweep): don't optimize it to avoid segv on Ubuntu
+ 10.04 gcc 4.4.
+ http://u32.rubyci.org/~chkbuild/ruby-trunk/log/20130527T190301Z.diff.html.gz
+
+Wed Jun 5 09:46:46 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_mkdir): add
+ EACCES for Windows.
+
+Wed Jun 5 08:13:37 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_pow): Don't need to multiply SIZEOF_BDIGITS.
+ Use nlz instead of bitlength_bdigit.
+ (bitlength_bdigit): Removed.
+
+Wed Jun 5 07:14:18 2013 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (d_lite_cmp, d_lite_equal): simplified.
+
+Wed Jun 5 07:07:01 2013 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: fixed a bug [ruby-core:55295]. reported
+ by Riley Lynch.
+
+Wed Jun 5 06:44:08 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 2.0.3
+
+ * test/rubygems: Tests for the above.
+
+ * NEWS: Added RubyGems 2.0.3 note.
+
+Wed Jun 5 06:35:15 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/marshal.rdoc: Add description of Marshal format.
+
+Wed Jun 5 01:16:09 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * array.c (Array#+): fix documentation example.
+ Patch by Logan Serman. [Fixes GH-324]
+
+Wed Jun 5 00:21:54 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/irb/lc/ja/help-message: update help messages.
+ following r41028. [ruby-dev:46707] [Feature #7510]
+
+Wed Jun 5 00:09:32 2013 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (r_object0): Generalize a round up expression.
+ Use BDIGIT instead of int.
+
+Tue Jun 4 23:44:02 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * object.c (rb_Hash): fix docs. patched by Stefan Sch"ussler.
+ [ruby-core:55299] [Bug #8487]
+
+Tue Jun 4 23:16:49 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * lib/irb/completion.rb: Use %w literal construction for long lists.
+ Patch by Dave Goodchild. [Fixes GH-299]
+
+Tue Jun 4 23:08:42 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * ext/objspace/objspace.c: improve wording and remove duplicated comment.
+ Based on a patch by Dave Goodchild. [Fixes GH-299]
+
+Tue Jun 4 18:41:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bitlength_bdigit): Fix an off-by-one error.
+
+Tue Jun 4 15:30:00 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Float#to_d): fix the number
+ of figures. Patch by Vipul A M <vipulnsward@gmail.com>.
+ https://github.com/ruby/ruby/pull/323 fix GH-323
+
+ * test/bigdecimal/test_bigdecimal_util.rb: fix for the above change.
+
+Tue Jun 4 00:44:27 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_mkdir): add
+ EEXIST for Linux. (suggested by nurse)
+
+Mon Jun 3 23:58:19 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/fileutils.rb (FileUtils.rmdir): use remove_tailing_slash.
+ * test/fileutils/test_fileutils.rb: test for above.
+
+Mon Jun 3 23:47:55 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bitlength_bdigit): New function.
+ (rb_big_pow): Use bitlength_bdigit instead of ffs.
+
+Mon Jun 3 23:11:19 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/fileutils.rb: fix behavior when mkdir/mkdir_p accepted "/".
+ * test/fileutils/test_fileutils.rb: add test for above change.
+ Patched by Mitsunori Komatsu. [GH-319]
+
+Mon Jun 3 19:02:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (is_hfs): use the file descriptor instead of a path.
+
+Mon Jun 3 07:15:17 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: removes AC_CHECK_FUNCS(readdir_r). readdir_r()
+ is only used from dir.c and it doesn't need readdir_r().
+ * configure.in (SIZEOF_STRUCT_DIRENT_TOO_SMALL): removed. It is
+ only used for readdir_r.
+ * dir.c: removes NAME_MAX_FOR_STRUCT_DIRENT. It is not right way
+ to detect maximum length of path len. POSIX require to use
+ fpathconf(). IOW, it might have lead to make a vulnerability
+ using stack smashing. Moreover, readdir() works enough for our
+ usage.
+ * dir.c (READDIR): removes an implementation which uses
+ readdir_r() and parenthesize in a macro body correctly.
+ * dir.c (dir_read): removes IF_HAVE_READDIR_R(DEFINE_STRUCT_DIRENT
+ entry), it is used only for readdir_r().
+ * dir.c (dir_each): ditto.
+ * dir.c (glob_helper): ditto.
+
+ * dir.c (READDIR): removes entry and dp argument.
+ * dir.c (dir_read): adjust for the above change.
+ * dir.c (dir_each): ditto.
+ * dir.c (glob_helper): ditto.
+
+Mon Jun 3 03:40:29 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): partially revert r41019.
+ The code is not useless.
+
+Mon Jun 3 01:25:25 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/socket/test_sockopt.rb: change test name. follow r41037.
+
+Mon Jun 3 01:08:43 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/rinda/test_rinda.rb: rename functions introduced in r41009.
+
+Sun Jun 2 23:33:42 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * enc/trans/japanese_euc.trans, test/ruby/test_transcode.rb,
+ tool/transcode-tblgen.rb: change EUC-JP-2004 to EUC-JIS-2004.
+ This is follow up to changes in r41024.
+
+Sun Jun 2 22:44:42 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/socket/option.c: rename functions introduced in r41009
+ s/ip/ipv4/g because they are ipv4 functions.
+ (there's a policy that the name "ip" is for methods which supports
+ both ipv4 and ipv6)
+
+Sun Jun 2 16:15:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln_find.c (dln_find_exe, dln_find_file): remove deprecated
+ non-reentrant functions.
+
+Sun Jun 2 15:04:35 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/cgi/util.rb, lib/erb.rb: Use String#b [Feature #8394] by znz
+
+Sun Jun 2 14:10:21 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb/lc/help-message: Apply english updates for irb --help #7510
+
+Sun Jun 2 12:03:58 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * range.c: Fix rdoc on Range#bsearch [Bug #8242] [ruby-core:54143]
+
+Sun Jun 2 02:08:37 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/euc_jp.c: fix typo: the name of EUC-JIS-2004.
+
+Sat Jun 1 23:17:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * vm_eval.c (rb_mod_module_eval): mention in docs that arguments passed
+ to the method are passed to the block
+
+Sat Jun 1 17:58:13 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#freeze, taint, untaint): Save a "self" by
+ utilizing super returning self, and add tests while at it.
+
+Sat Jun 1 17:24:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_arguments): not a simple single argument if any
+ keyword arguments exist. [ruby-core:55203] [Bug #8463]
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): split single parameter
+ if any keyword arguments exist, and then extract keyword arguments.
+ [ruby-core:55203] [Bug #8463]
+
+Sat Jun 1 11:16:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_exc_new_cstr): rename from rb_exc_new2.
+
+ * error.c (rb_exc_new_str): rename from rb_exc_new3.
+
+Sat Jun 1 10:13:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_new[2-5], rb_{tainted,usascii}_str_new2),
+ (rb_str_buf_new2): remove old interfaces.
+
+Sat Jun 1 08:00:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_read, gzfile_read_all, gzfile_getc),
+ (gzreader_gets): check EOF. [ruby-core:55220] [Bug #8467]
+
+Sat Jun 1 07:32:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Use BDIGIT type for hbase.
+
+Sat Jun 1 02:37:35 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/socket/option.c (sockopt_s_byte): constructor of the sockopt
+ whose value's is byte.
+
+ * ext/socket/option.c (sockopt_byte): getter for above.
+
+ * ext/socket/option.c (inspect_byte): inspect for above.
+
+ * ext/socket/option.c (sockopt_s_ip_multicast_loop): constructor of
+ the sockopt whose optname is IP_MULTICAST_LOOP.
+
+ * ext/socket/option.c (sockopt_ip_multicast_loop): getter for above.
+
+ * ext/socket/option.c (sockopt_s_ip_multicast_ttl): constructor of
+ the sockopt whose optname is IP_MULTICAST_TTL.
+
+ * ext/socket/option.c (sockopt_ip_multicast_ttl): getter for above.
+
+ * ext/socket/option.c (sockopt_inspect): use above.
+
+Sat Jun 01 01:50:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): use rb_dbl2big
+ to convert a double value to a Bignum.
+
+Sat Jun 1 00:19:50 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (calc_hbase): Make hbase the maximum power of base
+ representable in BDIGIT.
+
+Fri May 31 23:56:13 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (calc_hbase): Extracted from rb_big2str0.
+
+Fri May 31 23:22:24 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: Don't hard code SIZEOF_BDIGITS for log_base(hbase).
+ (big2str_orig): hbase_numdigits argument added.
+ (big2str_karatsuba): Ditto.
+ (rb_big2str0): Calculate hbase_numdigits.
+
+Fri May 31 17:57:21 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * process.c: Improve Process::exec documentation
+
+Fri May 31 17:26:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_funcallv): add better names of rb_funcall2.
+
+ * vm_eval.c (rb_funcallv_public): ditto for rb_funcall3.
+
+Fri May 31 17:04:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_new_capa): add better names of rb_ary_new2.
+
+ * array.c (rb_ary_new_from_args): ditto for rb_ary_new3.
+
+ * array.c (rb_ary_new_from_values): ditto for rb_ary_new4.
+
+Fri May 31 16:35:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (HAVE_ATTRIBUTE_FUNCTION_ALIAS): define to tell if
+ alias attribute is available.
+
+Fri May 31 16:03:23 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * object.c, proc.c: s/call_seq/call-seq in rdoc. [Fixes GH-322]
+
+Fri May 31 15:56:36 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/openssl/ossl_ssl.c: Add missing paren in rdoc [Fixes GH-321]
+
+Fri May 31 11:58:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (set_visibility): extract from rb_mod_public(),
+ rb_mod_protected() and rb_mod_private().
+
+Thu May 30 19:47:42 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_callee_setup_keyword_arg,
+ vm_callee_setup_arg_complex): consider a hash argument for keyword
+ only when the number of arguments is more than the expected
+ mandatory parameters. [ruby-core:53199] [ruby-trunk - Bug #8040]
+
+ * test/ruby/test_keyword.rb: update a test for above.
+
+Thu May 30 17:55:04 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * process.c: RDoc on Process.spawn
+
+Thu May 30 00:08:14 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_profile_enable): rest_sweep() to finish last GC.
+ Profiling record is allocated at first of marking phase.
+ Enable at lazy sweeping may cause an error (SEGV).
+
+Wed May 29 10:33:27 2013 Koichi Sasada <ko1@atdot.net>
+
+ * hash.c: fix WB bug.
+ (1) Hash's key also needs WB.
+ (2) callback parameter *key and *value of st_update() is not a
+ storage of st_table itself (only local variable). So that
+ OBJ_WRITE() is not suitable, especially for `!existing'.
+ OBJ_WRITTEN() is used instead of OBJ_WRITE().
+
+Tue May 28 12:31:21 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/object_tracing.c: fix a bug reported at
+ "[ruby-core:55182] [ruby-trunk - Bug #8456][Open] Sugfault in Ruby Head"
+ Care about the case TracePoint#path #=> `nil'.
+
+ * ext/objspace/object_tracing.c: add two new methods:
+ * ObjectSpace.allocation_class_path(o)
+ * ObjectSpace.allocation_method_id(o)
+ They are not useful for Object.new because they are always
+ "Class" and :new.
+ To trace more useful information, we need to maintain call-tree
+ using call/return hooks, which is implemented by
+ ll-prof <http://sunagae.net/wiki/doku.php?id=software:llprof>
+
+ * test/objspace/test_objspace.rb: add a test.
+
+Tue May 28 11:30:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): leave makefiles untouched if the content is
+ not changed, to get rid of unnecessary re-linking.
+
+Tue May 28 03:11:02 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/gc_hook.c, ext/objspace/objspace.c: add new methods to
+ hook GC invocation.
+ * ObjectSpace.after_gc_start_hook=(proc)
+ * ObjectSpace.after_gc_end_hook=(proc)
+
+ Note that hooks are not kicked immediately. Procs are kicked
+ at postponed_job.
+
+ This feature is a sample of new internal event and
+ rb_postponed_job API.
+
+Tue May 28 02:56:15 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stat): remove wrong rest_sweep().
+
+Tue May 28 02:44:23 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (garbage_collect_body): fix GC_ENABLE_LAZY_SWEEP condition.
+
+ * gc.c (GC_NOTIFY): move debug print location and use stderr instead
+ of stdout.
+
+Tue May 28 02:07:21 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_postponed_job_register_one): fix iteration bug.
+
+ * ext/-test-/postponed_job/postponed_job.c,
+ test/-ext-/postponed_job/test_postponed_job.rb: add a test.
+
+Tue May 28 00:34:23 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h, gc.c: add new internal event
+ RUBY_INTERNAL_EVENT_GC_END. This event invokes at the end of
+ after_sweep().
+ Time chart with lazy sweep is:
+ (1) Kick RUBY_INTERNAL_EVENT_GC_START
+ (2) [gc_marks()]
+ (3) [lazy_sweep()]
+ (4) [... run Ruby program (mutator) with lazy_sweep() ...]
+ (5) [after_sweep()]
+ (6) Kick RUBY_INTERNAL_EVENT_GC_END
+ (7) [... run Ruby program (mutator), and go to (1) ...]
+ Time chart without lazy sweep (GC.start, etc) is:
+ (1) Kick RUBY_INTERNAL_EVENT_GC_START
+ (2) [gc_marks()]
+ (3) [gc_sweep()]
+ (4) [after_sweep()]
+ (5) Kick RUBY_INTERNAL_EVENT_GC_END
+ (6) [... run Ruby program (mutator), and go to (1) ...]
+
+ * ext/-test-/tracepoint/tracepoint.c,
+ test/-ext-/tracepoint/test_tracepoint.rb: modify a test.
+
+Tue May 28 00:18:57 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_postponed_job_flush): remove a wrong comment.
+
+Mon May 27 22:09:33 2013 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (RHASH_SIZE): Add a cast to suppress a
+ warning, comparison between signed and unsigned integer
+ expressions [-Wsign-compare], on ILP32.
+
+Mon May 27 19:25:47 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: rename RUBY_INTERNAL_EVENT_FREE to
+ RUBY_INTERNAL_EVENT_FREEOBJ.
+
+ * ext/-test-/tracepoint/tracepoint.c,
+ ext/objspace/object_tracing.c,
+ gc.c, vm_trace.c: catch up this change.
+
+Mon May 27 18:57:28 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c: support ObjectSpace.trace_object_allocations.
+ Read the following test to know HOWTO.
+ This feature is a sample of RUBY_INTERNAL_EVENT.
+
+ * test/objspace/test_objspace.rb: add a test.
+
+ * ext/objspace/object_tracing.c: ditto.
+
+ * gc.c (rb_gc_count): add. This function returns GC count.
+
+ * internal.h: add decl. of rb_gc_count(). Same as `GC.count'.
+
+Mon May 27 17:33:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (install_recursive): add maxdepth option.
+
+ * tool/rbinstall.rb (bin-comm): limit depth of bindir and reject empty
+ files. [ruby-core:55101] [Bug #8432]
+
+Mon May 27 16:16:18 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_postponed_job_flush, rb_postponed_job_register): use
+ ruby_xmalloc/xfree. It is safe during GC.
+
+Mon May 27 09:24:03 2013 Koichi Sasada <ko1@atdot.net>
+
+ * test/-ext-/postponed_job/test_postponed_job.rb: fix typo and class name.
+
+Mon May 27 09:05:17 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h, gc.c, vm_trace.c: add internal events.
+ * RUBY_INTERNAL_EVENT_NEWOBJ: object created.
+ * RUBY_INTERNAL_EVENT_FREE: object freed.
+ * RUBY_INTERNAL_EVENT_GC_START: GC started.
+ And rename `RUBY_EVENT_SWITCH' to `RUBY_INTERNAL_EVENT_SWITCH'.
+
+ Internal events can not invoke any Ruby program because the tracing
+ timing may be critical (under huge restriction).
+ These events can be hooked only by C-extensions.
+ We recommend to use rb_postponed_job_register() API to call Ruby
+ program safely.
+
+ This change is mostly written by Aman Gupta (tmm1).
+ https://bugs.ruby-lang.org/issues/8107#note-12
+ [Feature #8107]
+
+ * include/ruby/debug.h, vm_trace.c: added two new APIs.
+ * rb_tracearg_event_flag() returns rb_event_flag_t of this event.
+ * rb_tracearg_object() returns created/freed object.
+
+ * ext/-test-/tracepoint/extconf.rb,
+ ext/-test-/tracepoint/tracepoint.c,
+ test/-ext-/tracepoint/test_tracepoint.rb: add a test.
+
+Mon May 27 08:38:21 2013 Koichi Sasada <ko1@atdot.net>
+
+ * ext/-test-/postponed_job/postponed_job.c: fix `init' function name.
+
+Mon May 27 06:22:41 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h, vm_trace.c: add rb_postponed_job API.
+ Postponed jobs are registered with this API. Registered jobs
+ are invoked at `ruby-running-safe-point' as soon as possible.
+ This timing is completely same as finalizer timing.
+
+ There are two APIs:
+ * rb_postponed_job_register(flags, func, data): register a
+ postponed job with data. flags are reserved.
+ * rb_postponed_job_register_one(flags, func, data): same as
+ `rb_postponed_job_register', but only one `func' job is
+ registered (skip if `func' is already registered).
+
+ This change is mostly written by Aman Gupta (tmm1).
+ https://bugs.ruby-lang.org/issues/8107#note-15
+ [Feature #8107]
+
+ * gc.c: use postponed job API for finalizer.
+
+ * common.mk: add dependency from vm_trace.c to debug.h.
+
+ * ext/-test-/postponed_job/extconf.rb, postponed_job.c,
+ test/-ext-/postponed_job/test_postponed_job.rb: add a test.
+
+ * thread.c: implement postponed API.
+
+ * vm_core.h: ditto.
+
+Mon May 27 02:26:02 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stat): collect promote_operation_count and
+ types (RGENGC_PROFILE >= 2).
+
+Mon May 27 01:40:58 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stat): collect shade_operation_count,
+ remembered_sunny_object_count and remembered_shady_object_count
+ for each types when RGENGC_PROFILE >= 2.
+ They are informative for optimization.
+
+Mon May 27 01:15:22 2013 Koichi Sasada <ko1@atdot.net>
+
+ * hash.c (rb_hash_tbl_raw), internal.h: added.
+ Returns st_table without shading hash.
+
+ * array.c: use rb_hash_tbl_raw() for read-only purpose.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * gc.c (count_objects): ditto.
+
+ * insns.def: ditto.
+
+ * process.c: ditto.
+
+ * thread.c (clear_coverage): ditto.
+
+ * vm_insnhelper.c: ditto.
+
+Mon May 27 00:31:09 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/make-snapshot: use ENV["AUTOCONF"] instead of directly using
+ literal "autoconf".
+
+Sun May 26 21:31:46 2013 Koichi Sasada <ko1@atdot.net>
+
+ * hash.c, include/ruby/ruby.h: support WB protected hash.
+ * constify RHash::ifnone and make new macro RHASH_SET_IFNONE().
+ * insert write barrier for st_update().
+
+ * include/ruby/intern.h: declare rb_hash_set_ifnone(hash, ifnone).
+
+ * marshal.c (r_object0): use RHASH_SET_IFNONE().
+
+ * ext/openssl/ossl_x509name.c (Init_ossl_x509name): ditto.
+
+Sat May 25 23:22:38 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/fiddle/test_c_struct_entry.rb,
+ test/fiddle/test_c_union_entity.rb,
+ test/fiddle/test_cparser.rb, test/fiddle/test_func.rb,
+ test/fiddle/test_handle.rb, test/fiddle/test_import.rb,
+ test/fiddle/test_pointer.rb: don't run test if the system
+ don't support fiddle.
+
+Sat May 25 21:29:34 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/pty/pty.c (get_device_once): FreeBSD 10-current and 9-stable
+ added O_CLOEXEC support to posix_openpt, so assume FreeBSD 9.2 or
+ later supports it.
+ http://www.freebsd.org/cgi/query-pr.cgi?pr=162374
+
+Sat May 25 18:46:23 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (rb_method_entry_min_max_arity): fix missing break in switch.
+ This was introduced in r38236, which is not intentional apparently.
+ This has caused no actual harm because VM_METHOD_TYPE_OPTIMIZED is
+ not used except for OPTIMIZED_METHOD_TYPE_SEND, but may do in
+ future. Coverity Scan found this inadequacy.
+
+Sat May 25 18:08:06 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * dir.c (bracket): fix copy-paste error. When the first and last
+ characters of fnmatch range have different length, fnmatch may
+ have wrongly matched a path that does not really match.
+ Coverity Scan found this bug.
+
+Sat May 25 17:06:25 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (after_gc_sweep): reduce full GC timing.
+
+Sat May 25 11:28:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (set_const_visibility): return without clearing method
+ cache if no arguments.
+
+ * vm_method.c (set_method_visibility): ditto.
+
+Sat May 25 11:27:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (set_method_visibility): quote unprintable method name.
+
+Sat May 25 11:24:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_frame_callee): returns the called name of the current
+ frame, not the previous frame.
+
+ * eval.c (prev_frame_callee, prev_frame_func): rename and make static,
+ as these are used by rb_f_method_name() and rb_f_callee_name() only.
+
+ * variable.c (set_const_visibility): use the called name.
+
+Sat May 25 08:58:23 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_quote_unprintable): check if argument is a string.
+
+Fri May 24 19:32:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * variable.c (set_const_visibility): use rb_frame_this_func() instead
+ of rb_frame_callee() for getting the name of the called method
+
+ * test/ruby/test_module.rb: add test for private_constant with no args
+
+Fri May 24 18:53:10 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: do major/full GC when:
+ * number of oldgen object is bigger than twice of
+ number of oldgen object at last full GC.
+ * number of remembered shady object is bigger than twice of
+ number of remembered shady object at last full GC.
+ * number of oldgen object and remembered shady object is bigger
+ than half of total object space.
+ (please fix my English!)
+
+Fri May 24 17:07:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
+
+ * intern.h: remove dangling rb_class_init_copy declaration
+ [ruby-core:55120] [Bug #8434]
+
+Fri May 24 16:31:23 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/strscan/strscan.c (strscan_aref): raise error if given
+ name reference is not found.
+
+Fri May 24 15:48:18 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (after_gc_sweep, garbage_collect_body): do major GC (full GC)
+ before extending heaps.
+ TODO: do major GC when there are many old (promoted) objects.
+
+ * gc.c (after_gc_sweep): remove TODO comments.
+
+Fri May 24 11:04:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_RPATHFLAGS): do not append -L option with
+ runtime library directory if cross compiling, but only -R option.
+ runtime path makes no sense on the host system. [ruby-dev:47363]
+ [Bug #8443]
+
+Fri May 24 02:57:17 2013 Koichi Sasada <ko1@atdot.net>
+
+ * object.c (rb_obj_clone): should not propagate OLDGEN status.
+ This propagation had caused WB miss for class.
+
+Thu May 23 17:35:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (loaded_feature_path): fix invalid read by index underflow.
+ the beginning of name is also a boundary as well as just after '/'.
+
+Thu May 23 17:21:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_profile_dump_on): revert r40898. ok to show the record
+ accumulating while lazy_sweep().
+
+Wed May 22 16:50:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_profile_dump_on): use size_t to get rid of overflow and
+ show the header when next_index > 0, instead of next_index != 1.
+
+Wed May 22 15:18:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (setup_overlapped): check the error code in addition
+ to the result of SetFilePointer() to determine if an error occurred,
+ because INVALID_SET_FILE_POINTER is a valid value.
+ [ruby-core:55098] [Bug #8431]
+
+ * win32/win32.c (setup_overlapped, finish_overlapped): extract from
+ rb_w32_read() and rb_w32_write().
+
+Wed May 22 14:19:56 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_prepare_free_objects, rest_sweep, lazy_sweep): fix position
+ of `during_gc' setting.
+
+Wed May 22 07:36:08 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (garbage_collect): all GC is start from garbage_collect()
+ (or garbage_collect_body()). `garbage_collect()' accept additional
+ two parameters `full_mark' and `immediate_sweep'.
+ If `full_mark' is TRUE, then force it full gc (major gc), otherwise,
+ it depends on status of object space. Now, it will be minor gc.
+ If `immediate_sweep' is TRUE, then disable lazy sweep.
+ To allocate free memory, `full_mark' and `immediate_sweep' should be
+ TRUE. Otherwise, they should be FALSE.
+
+ * gc.c (gc_prepare_free_objects): use `garbage_collect_body()'.
+
+ * gc.c (slot_sweep, before_gc_sweep, after_gc_sweep): add logging code.
+
+Tue May 21 22:47:06 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/strscan/strscan.c (strscan_aref): support named captures.
+ patched by Konstantin Haase [ruby-core:54664] [Feature #8343]
+
+Tue May 21 21:48:44 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/ruby/test_dir_m17n.rb (TestDir_M17N#test_entries_compose):
+ Use #each instead of #map just for iteration.
+
+Tue May 21 19:57:22 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest.rb (Digest::Class.file): Take optional
+ arguments that are passed to the constructor of the digest
+ class.
+
+Tue May 21 17:21:12 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: remove gc_profile_record::is_marked. always true.
+
+Tue May 21 17:13:40 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: fix to collect additional information for GC::Profiler.
+ * major/minor GC
+ * trigger reason of GC
+
+ * gc.c (gc_profile_dump_on): change reporting format with
+ added information.
+
+ * gc.c (gc_profile_record_get): return added information by
+ :GC_FLAGS => array.
+
+Tue May 21 16:45:31 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: GC::Profiler's sweeping time is accumulated all slot
+ sweeping time. At lazy GC, GC::Profiler makes new record entry
+ for each lazy_sweep(). In this change, accumulating all
+ slot_sweep() time.
+ And change indentation.
+
+Tue May 21 16:29:09 2013 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk (rdoc-bench): add a benchmark rule
+ using RDoc. Generate all rdoc related files
+ (same as `make rdoc') in temporary directory
+ and remove them. Execution time, GC::Profiler
+ and results of GC.stat are printed.
+
+ * tool/rdocbench.rb: added for `rdoc-bench'.
+
+Tue May 21 16:25:05 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_profile_dump_on): `count' should be (int) because it
+ can be negative number.
+ And use pointer for `record' (don't copy).
+
+Tue May 21 03:11:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_each): compose HFS file names from
+ UTF8-MAC. [ruby-core:48745] [Bug #7267]
+
+Tue May 21 03:08:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_separately): require envutil in the
+ child process too.
+
+Tue May 21 03:07:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_conv_enc_opts): should infect.
+
+Mon May 20 22:24:45 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#delete_if, Set#keep_if): Avoid blockless call of
+ proc, which is not portable to JRuby. Replace &method() with
+ faster and simpler literal blocks while at it.
+
+Mon May 20 22:00:31 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/e2mmap.rb: Format of E2MM documentation
+
+Mon May 20 21:41:15 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/extmk.rb: nodoc this file
+
+Mon May 20 20:43:32 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/cmath.rb: Remove duplicate RDoc heading from overview
+
+Mon May 20 20:36:19 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/securerandom.rb: Update position of overview for RDoc
+
+Mon May 20 19:33:55 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * math.c: improve and fix documentation of sin, tan and log
+
+Mon May 20 19:31:49 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * lib/logger.rb (Logger::Application): show namespace in documentation
+
+Mon May 20 11:50:12 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/pp.rb: Revert part of r40834 and nodoc PP::ObjectMixin
+ [ruby-core:55068]
+
+Mon May 20 10:40:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/htmlutils.rb (WEBrick::HTMLUtils#escape): replace HTML
+ meta chars even in non-ascii string. [Bug #8425] [ruby-core:55052]
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils#{_escape,_unescape}):
+ fix %-escape encodings. [Bug #8425] [ruby-core:55052]
+
+ * lib/webrick/httpservlet/filehandler.rb (set_dir_list): revert r20152
+ partially and fix misuse of bytesize and regexp repetition operator.
+
+Mon May 20 08:03:51 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/profiler.rb: Document Profiler__ methods
+
+Mon May 20 08:02:13 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/tempfile.rb: nodoc Tempfile#inspect
+
+Mon May 20 07:48:24 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/stringio/stringio.c: Correct position of method rdoc
+
+Mon May 20 07:27:41 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * math.c: RDoc formatting of Math core docs with domains and codomains
+ Patch by @eLobato [Fixes GH-309]
+
+Mon May 20 05:58:12 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/bigdecimal/bigdecimal.c: Formatting for BigMath [Fixes GH-306]
+ Based on a patch by @eLobato.
+ * ext/bigdecimal/lib/bigdecimal/math.rb: ditto
+
+Mon May 20 04:56:59 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/forwardable.rb: Forwardable examples in overview were broken
+ Based on patch by @joem [Fixes GH-303] [Bug #8392]
+
+Mon May 20 03:35:26 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/optparse.rb: nodoc OptionParser::Version and SPLAT_PROC
+
+Mon May 20 03:16:52 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/pp.rb: Document PP::ObjectMixin [Fixes GH-312]
+
+Sun May 19 23:52:22 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/webrick/test_htmlutils.rb: add test for WEBrick::HTMLUtils.
+
+Sun May 19 23:12:07 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * encoding.c: document fix, change default script encoding.
+ patched by @windwiny [Fixes GH-310]
+
+Sun May 19 17:29:07 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#delete_if, Set#keep_if): Add comments.
+
+Sun May 19 11:37:36 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/fiddle/extconf.rb: ignore rc version of libffi to fix build failure.
+
+Sun May 19 10:38:50 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el (ruby-electric-delete-backward-char): Use
+ delete-char instead of delete-backward-char, which is an
+ interactive function.
+
+Sun May 19 03:59:29 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (str_scrub0): added for refactoring.
+
+Sun May 19 03:48:26 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.decode_www_form): scrub string if decoded
+ bytes are invalid for the encoding.
+
+Sun May 19 02:46:32 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#delete_if, Set#keep_if): Make Set#delete_if and
+ Set#keep_if more space and time efficient by avoiding to_a.
+
+Sun May 19 02:33:09 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el (ruby-electric-setup-keymap): Make
+ backquotes electric as well. It was listed in
+ ruby-electric-expand-delimiters-list but not activated.
+
+ * misc/ruby-electric.el (ruby-electric-delete-backward-char):
+ Introduce electric DEL that deletes what the previous electric
+ command has input.
+
+ * misc/ruby-electric.el (ruby-electric-matching-char): Make
+ electric quotes work again at the end of buffer.
+
+Sun May 19 01:39:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (setjmp-type): check if setjmpex() is really available.
+ workaround for i686-w64-mingw32 which declares it but lacks its
+ definition.
+
+ * include/ruby/defines.h: include setjmpex.h only if also setjmpex()
+ is available.
+
+Sat May 18 23:57:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (setjmp-type): use setjmpex() on w64-mingw32 to get rid
+ of -Wclobbered warnings.
+
+ * include/ruby/defines.h: include setjmpex.h here becase setjmp.h is
+ included from win32.h via intrin.h, winnt.h, and so on.
+
+Sat May 18 20:28:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (INTEGER2NUM): Make less comparisons.
+
+Sat May 18 20:15:28 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (str_scrub_bang): add String#scrub!. [Feature #8414]
+
+Sat May 18 16:59:52 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (INTEGER2NUM): Renamed from INTEGER2VALUE.
+
+Sat May 18 16:57:58 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (INTEGER2VALUE): Suppress a warning:
+ comparison between signed and unsigned integer expressions
+
+Sat May 18 16:38:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): forward anonymous and first keyword
+ rest argument one. [ruby-core:55033] [Bug #8416].
+
+Sat May 18 15:49:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_vm_tag): move jmpbuf between tag and prev so ensure to
+ be accessible.
+
+Sat May 18 11:05:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (inspect_enumerator): use VALUE instead of mere char*
+ by using rb_sprintf() and rb_id2str().
+
+ * enumerator.c (append_method): extract from inspect_enumerator().
+
+Sat May 18 09:00:32 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (INTEGER2VALUE): Use LONG2FIX if possible.
+
+Sat May 18 00:38:47 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: Convert integer constants bigger than int
+ correctly.
+
+Fri May 17 22:02:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ifaddr.c: Use unsigned LONG_LONG to represent flags
+ because SunOS 5.11 (OpenIndiana) defines ifa_flags as uint64_t.
+
+Fri May 17 21:47:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * cont.c: Typo in constant MAX_MACHINE_STACK_CACHE from '..MAHINE..'
+ patch by @schmurfy [Fixes GH-307]
+
+Fri May 17 19:18:24 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el (ruby-electric-matching-char): Do not put
+ a closing quote when the quote typed does not start a string, as
+ in $', ?\' or ?\".
+
+Fri May 17 18:06:15 2013 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: Consider error messages to find out version option of
+ C compiler.
+ The C compiler of Sun Studio C emits "Warning: Option -qversion
+ passed to ld, if ld is invoked, ignored otherwise" and exit
+ successfully.
+
+Fri May 17 17:34:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_guarded_ptr): unoptimize on other compilers than gcc and
+ msvc.
+
+Fri May 17 11:06:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (TH_PUSH_TAG): ensure jmpbuf to be accessible before
+ pushing tag to get rid of unaccessible tag by stack overflow.
+
+Thu May 16 17:15:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_eval.c (rb_catch_obj): add volatile to tag to prevent crash
+ experimentally.
+ http://www.rubyist.net/~akr/chkbuild/debian/ruby-trunk/log/20130515T133500Z.log.html.gz
+
+Thu May 16 16:19:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (verconf.in): no longer used.
+
+ * win32/Makefile.sub (config.status): fix typo.
+
+ * configure.in, template/verconf.h.in (RUBY_EXEC_PREFIX): fix for
+ default prefix.
+
+Thu May 16 13:12:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/verconf.h.in: generate verconf.h from the template and
+ rbconfig.rb.
+
+Thu May 16 05:47:18 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: fix syntax error.
+ Thanks @spastorino! [ruby-core:55011]
+
+Thu May 16 03:05:45 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_node_newnode): use newobj_of() instead of rb_newobj().
+
+Thu May 16 02:03:39 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/depend: Add a dependency for ifaddr.o.
+
+Thu May 16 01:44:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (verconf.h): $< cannot be used in explicit rules with
+ nmake.
+
+ * win32/Makefile.sub (CONFIG_H): create verconf.in instead of
+ verconf.h.
+
+Thu May 16 01:25:07 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: only emit warnings when
+ -w is enabled.
+
+Wed May 15 18:58:17 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (newobj): rename to `newobj_of' and accept additional
+ three parameters v1, v2, v3. newobj_of() do OBJSETUP() and
+ fill values with v1, v2, v3.
+
+ * gc.c (rb_data_object_alloc, rb_data_typed_object_alloc):
+ use newobj_of().
+
+Wed May 15 17:55:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_PLATFORM): move to config.h as needed by
+ version.c.
+
+Wed May 15 17:04:11 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: add an additional RGENGC_PROFILE mode (2).
+ Profiling result can be check by GC.stat.
+
+ * gc.c (type_name): separate from obj_type_name().
+
+Wed May 15 16:58:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: save configured load path values into verconf.in.
+
+ * common.mk (verconf.h): create from verconf.in with shvar_to_cpp.rb.
+
+ * tool/shvar_to_cpp.rb: turn shell variables into C macros.
+ [Bug #7959]
+
+ * loadpath.c: split load path staffs from version.c.
+
+ * dmyloadpath.c: miniruby has no builtin load paths, so verconf.h is
+ not needed.
+
+Wed May 15 03:56:09 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: adding backwards
+ compatible YAMLTree.new method
+
+Wed May 15 02:22:16 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: Adding Psych.safe_load for loading a user
+ defined, restricted subset of Ruby object types.
+ * ext/psych/lib/psych/class_loader.rb: A class loader for
+ encapsulating the logic for which objects are allowed to be
+ deserialized.
+ * ext/psych/lib/psych/deprecated.rb: Changes to use the class loader
+ * ext/psych/lib/psych/exception.rb: ditto
+ * ext/psych/lib/psych/json/stream.rb: ditto
+ * ext/psych/lib/psych/nodes/node.rb: ditto
+ * ext/psych/lib/psych/scalar_scanner.rb: ditto
+ * ext/psych/lib/psych/stream.rb: ditto
+ * ext/psych/lib/psych/streaming.rb: ditto
+ * ext/psych/lib/psych/visitors/json_tree.rb: ditto
+ * ext/psych/lib/psych/visitors/to_ruby.rb: ditto
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
+ * ext/psych/psych_to_ruby.c: ditto
+ * test/psych/helper.rb: ditto
+ * test/psych/test_safe_load.rb: tests for restricted subset.
+ * test/psych/test_scalar_scanner.rb: ditto
+ * test/psych/visitors/test_to_ruby.rb: ditto
+ * test/psych/visitors/test_yaml_tree.rb: ditto
+
+Wed May 15 02:06:35 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/psych/helper.rb: envutil is not available outside Ruby, so
+ port the functions from envutil to the test helper.
+
+ * test/psych/test_deprecated.rb: ditto
+
+ * test/psych/test_encoding.rb: ditto
+
+Wed May 15 00:42:54 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * signal.c: need to include unistd.h for write(2).
+ unistd.h is now included via ruby/defines.h, but should explicitly
+ include here. (suggested by kosaki)
+
+Tue May 14 23:43:05 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/.document: Add ifaddr.c.
+
+Tue May 14 23:24:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/extconf.rb: check for if_nametoindex() for
+ i686-w64-mingw32, and check for declarations of if_indextoname() and
+ if_nametoindex().
+
+ * ext/socket/ifaddr.c (ifaddr_ifindex): not-implement unless
+ if_nametoindex() is available.
+
+ * ext/socket/rubysocket.h: declare if_indextoname() and
+ if_nametoindex() if available but not declared.
+
+Tue May 14 19:58:17 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#call): check tainted when
+ $SAFE > 0.
+ * ext/fiddle/function.c (function_call): check tainted when $SAFE > 0.
+ * test/fiddle/test_func.rb (module Fiddle): add test for above.
+
+
+Tue May 14 14:51:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (INTPTR_MAX, INTPTR_MIN, UINTPTR_MAX): split
+ from intptr_t and uintptr_t, since VC9 defines the latter only in
+ crtdefs.h.
+
+Tue May 14 12:21:28 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (NET_LUID): mingw may have NET_LUID and not defined
+ _IFDEF_.
+
+Tue May 14 03:33:17 2013 Koichi Sasada <ko1@atdot.net>
+
+ * string.c (rb_str_new_frozen): remove debug print.
+
+Tue May 14 03:22:51 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: enable to generate write barrier protected
+ arrays (T_ARRAY).
+
+Tue May 14 03:21:42 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: enable to generate write barrier protected
+ strings (T_STRING).
+
+Tue May 14 03:19:59 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: enable to generate write barrier protected
+ objects (T_OBJECT).
+
+Tue May 14 03:17:15 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: enable to generate write barrier protected
+ objects for numeric types (Float, Complex, Rational, Bignum).
+
+Tue May 14 03:10:59 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: enable RGENGC (USE_RGENGC)
+ but no type creates write protected (sunny) objects
+ (RGENGC_WB_PROTECTED_* == 0).
+
+Tue May 14 02:47:30 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: support RGENGC. [ruby-trunk - Feature #8339]
+ See this ticket about RGENGC.
+
+ * gc.c: Add several flags:
+ * RGENGC_DEBUG: if >0, then prints debug information.
+ * RGENGC_CHECK_MODE: if >0, add assertions.
+ * RGENGC_PROFILE: if >0, add profiling features.
+ check GC.stat and GC::Profiler.
+
+ * include/ruby/ruby.h: disable RGENGC by default (USE_RGENGC == 0).
+
+ * array.c: add write barriers for T_ARRAY and generate sunny objects.
+
+ * include/ruby/ruby.h (RARRAY_PTR_USE): added. Use this macro if
+ you want to access raw pointers. If you modify the contents which
+ pointer pointed, then you need to care write barrier.
+
+ * bignum.c, marshal.c, random.c: generate T_BIGNUM sunny objects.
+
+ * complex.c, include/ruby/ruby.h: add write barriers for T_COMPLEX
+ and generate sunny objects.
+
+ * rational.c (nurat_s_new_internal), include/ruby/ruby.h: add write
+ barriers for T_RATIONAL and generate sunny objects.
+
+ * internal.h: add write barriers for RBasic::klass.
+
+ * numeric.c (rb_float_new_in_heap): generate sunny T_FLOAT objects.
+
+ * object.c (rb_class_allocate_instance), range.c:
+ generate sunny T_OBJECT objects.
+
+ * string.c: add write barriers for T_STRING and generate sunny objects.
+
+ * variable.c: add write barriers for ivars.
+
+ * vm_insnhelper.c (vm_setivar): ditto.
+
+ * include/ruby/ruby.h, debug.c: use two flags
+ FL_WB_PROTECTED and FL_OLDGEN.
+
+ * node.h (NODE_FL_CREF_PUSHED_BY_EVAL, NODE_FL_CREF_OMOD_SHARED):
+ move flag bits.
+
+Tue May 14 01:54:48 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: remove rb_objspace_t::marked_num.
+ We can use `objspace_live_num()' instead of removed `marked_num'
+ if it is after `after_gc_sweep()' function call.
+
+ * gc.c (after_gc_sweep): use objspace_live_num() instead of removed
+ rb_objspace_t::marked_num.
+
+ * gc.c (gc_mark_ptr, gc_marks): remove rb_objspace_t::marked_num code.
+
+ * gc.c (gc_prepare_free_objects): do not call set_heaps_increment()
+ with checking objspace->heap.marked_num. At this point, we only
+ need to check availability of free-cell.
+
+ * gc.c (lazy_sweep): call after_gc_sweep() if there are no sweep_able entry.
+
+ * gc.c (rest_sweep, gc_prepare_free_objects): remove after_gc_sweep() call.
+
+Tue May 14 01:50:41 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: disable GC_PROFILE_MORE_DETAIL (fix last commit).
+
+ * gc.c (gc_prof_set_malloc_info): fix "objspace->heap.live_num" to
+ "objspace_live_num(objspace)". There is no such member variable.
+
+Tue May 14 01:25:55 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: refactoring GC::Profiler.
+
+ * gc.c (gc_prof_sweep_timer_start/stop): removed because
+ they doesn't support lazy sweep.
+
+ * gc.c (gc_prof_sweep_slot_timer_start/stop): added.
+ redefine `sweeping time' to accumulated time of all of
+ slot_sweep().
+
+ * gc.c (rb_objspace_t::profile::count): renamed to
+ rb_objspace_t::profile::next_index. `counter' seems ambiguous.
+ increment it when next record is acquired.
+
+Tue May 14 00:48:55 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: constify RRational::(num,den) and
+ RComplex::(real,imag).
+ Add macro to set these values:
+ * RRATIONAL_SET_NUM()
+ * RRATIONAL_SET_DEN()
+ * RCOMPLEX_SET_REAL()
+ * RCOMPLEX_SET_IMAG()
+ This change is a part of RGENGC branch [ruby-trunk - Feature #8339].
+
+ TODO: API design. RRATIONAL_SET(rat,num,den) is enough?
+ TODO: Setting constify variable with cast has same issue of r40691.
+
+ * complex.c, rational.c: use above macros.
+
+Mon May 13 21:49:17 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: Check socketpair again.
+ It is required on Unix.
+
+Mon May 13 21:20:32 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (getipaddrs): use alternative interface name if
+ available, because if_nametoindex() requires them.
+
+Mon May 13 20:23:24 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (getipaddrs): [experimental]
+ emulate getipaddrs(3) on Unix.
+
+ * win32/Makefile.sub, configure.in (LIBS): need iphlpapi.lib for above
+ function.
+
+ * include/ruby/win32.h (socketpair): rb_w32_socketpair() doesn't
+ substitute for any function, so use non-prefixed name.
+
+ * ext/socket/extconf.rb (socketpair); follow above change.
+
+Mon May 13 20:11:06 2013 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (prepare_iseq_build): remove additional line break.
+
+Mon May 13 19:29:54 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: constify RBasic::klass and add
+ RBASIC_CLASS(obj) macro which returns a class of `obj'.
+ This change is a part of RGENGC branch [ruby-trunk - Feature #8339].
+
+ * object.c: add new function rb_obj_reveal().
+ This function reveal internal (hidden) object by rb_obj_hide().
+ Note that do not change class before and after hiding.
+ Only permitted example is:
+ klass = RBASIC_CLASS(obj);
+ rb_obj_hide(obj);
+ ....
+ rb_obj_reveal(obj, klass);
+
+ TODO: API design. rb_obj_reveal() should be replaced with others.
+
+ TODO: modify constified variables using cast may be harmful for
+ compiler's analysis and optimization.
+ Any idea to prohibit inserting RBasic::klass directly?
+ If rename RBasic::klass and force to use RBASIC_CLASS(obj),
+ then all codes such as `RBASIC(obj)->klass' will be
+ compilation error. Is it acceptable? (We have similar
+ experience at Ruby 1.9,
+ for example "RARRAY(ary)->ptr" to "RARRAY_PTR(ary)".
+
+ * internal.h: add some macros.
+ * RBASIC_CLEAR_CLASS(obj) clear RBasic::klass to make it internal
+ object.
+ * RBASIC_SET_CLASS(obj, cls) set RBasic::klass.
+ * RBASIC_SET_CLASS_RAW(obj, cls) same as RBASIC_SET_CLASS
+ without write barrier (planned).
+ * RCLASS_SET_SUPER(a, b) set super class of a.
+
+ * array.c, class.c, compile.c, encoding.c, enum.c, error.c, eval.c,
+ file.c, gc.c, hash.c, io.c, iseq.c, marshal.c, object.c,
+ parse.y, proc.c, process.c, random.c, ruby.c, sprintf.c,
+ string.c, thread.c, transcode.c, vm.c, vm_eval.c, win32/file.c:
+ Use above macros and functions to access RBasic::klass.
+
+ * ext/coverage/coverage.c, ext/readline/readline.c,
+ ext/socket/ancdata.c, ext/socket/init.c,
+ * ext/zlib/zlib.c: ditto.
+
+Mon May 13 18:44:14 2013 Koichi Sasada <ko1@atdot.net>
+
+ * *.c, parse.y, insns.def: use RARRAY_AREF/ASET macro
+ instead of using RARRAY_PTR().
+
+Mon May 13 16:53:53 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: add new utility macros to access
+ Array's element.
+ * RARRAY_AREF(a, i) returns i-th element of an array `a'
+ * RARRAY_ASET(a, i, v) set i-th element of `a' to `v'
+ This change is a part of RGENGC branch [ruby-trunk - Feature #8339].
+
+Mon May 13 15:31:10 2013 Koichi Sasada <ko1@atdot.net>
+
+ * object.c (rb_obj_setup): added.
+
+ * include/ruby/ruby.h (OBJSETUP): use rb_obj_setup() instead of
+ a macro.
+
+Mon May 13 15:24:16 2013 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_data_object_alloc): check klass only if klass is not 0.
+ klass==0 means internal object.
-Tue Apr 22 12:58:26 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon May 13 14:57:28 2013 Koichi Sasada <ko1@atdot.net>
- * version 1.0-970422
+ * gc.c (rb_data_object_alloc, rb_data_typed_object_alloc):
+ use NEWOBJ_OF() instead of NEWOBJ().
-Thu Apr 17 00:40:51 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon May 13 14:51:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (rb_cv_bsdpgrp): proper check for BSD
- setpgrp/setpgrp.
+ * proc.c (rb_obj_singleton_method): new method Kernel#singleton_method
+ which returns a Method object of the singleton method.
+ non-singleton method causes NameError, but not aliased or zsuper
+ method, right now.
+ [ruby-core:54914] [Feature #8391]
-Wed Apr 16 16:14:02 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * vm_method.c (rb_method_entry_at): return the method entry for id at
+ klass, without ancestors.
- * eval.c (proc_call): proc called in other thread must be orphan.
+ * class.c (rb_singleton_class_get): get the singleton class if exists,
+ or nil.
-Tue Apr 15 10:46:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon May 13 10:20:59 2013 Yuki Yugui Sonoda <yugui@google.com>
- * version 1.0-970415
+ * ext/openssl/ossl_ssl.c: Disabled OpenSSL::SSL::SSLSocket if
+ defined(OPENSSL_NO_SOCK).
- * gc.c (obj_free): NODE_SCOPE marked from SCOPE object.
+ This fixes a linkage error on platforms which do not have socket.
+ OpenSSL itself is still useful as a set of cryptographic functions
+ even on such platforms.
- * gc.c (gc_mark): some nodes marked wrong.
+Mon May 13 10:30:04 2013 Zachary Scott <zachary@zacharyscott.net>
- * process.c (proc_getpgrp): wrong argument
+ * hash.c: Hash[] and {} are not equivalent by @eam [Fixes GH-301]
-Fri Apr 14 18:32:42 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon May 13 10:04:22 2013 Zachary Scott <zachary@zacharyscott.net>
- * version 1.0-970414
+ * random.c: Document Random::DEFAULT by @eLobato [Fixes GH-304]
-Fri Apr 12 01:20:12 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun May 12 21:12:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ruby.h: String pointer changed to unsigned char.
+ * include/ruby/ruby.h (OFFT2NUM): RUBY_REPLACE_TYPE also defines macro
+ to convert int type to VALUE if found.
-Fri Apr 11 10:27:29 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed May 8 13:46:52 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * version 1.0-970411
+ * include/ruby/intern.h (rb_iv_set, rb_iv_get): removed. Because
+ ruby.h has a declaration for that.
- * Makefile.in: create libruby.a before linking ruby.
+Wed May 8 13:49:06 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * string.c (str_strip_bang): >0x80 characters for isspace().
+ * include/ruby/intern.h (rb_uint2big, rb_int2big, rb_uint2inum)
+ (rb_int2inum, rb_ll2inum, rb_ull2inum): removed because ruby.h
+ has a declaration for these.
- * eval.c (proc_call): set safe-level temporally
+Sun May 12 17:52:23 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (proc_s_new): save safe-level in the proc context.
+ * configure.in: removes 'ac_cv_func_fseeko=yes' form MinGW
+ specific definitions.
- * eval.c (rb_eval): no class/module extention in safe mode.
+Sun May 12 17:25:46 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Apr 10 02:10:41 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * file.c (rb_file_s_truncate): use correct type. chsize takes
+ a long.
- * gc.c (gc_mark): remove some pointer checks for speeding up.
+Sun May 12 17:18:46 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ruby.c (ruby_options): set $0 temporally for -r option.
+ * process.c: move '#define HAVE_SPAWNV 1' to win32/Makefile.sub.
+ * win32/Makefile.sub: see above.
- * eval.c: built-in security feature.
+Sun May 12 17:13:32 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * gc.c (gc_sweep): do not free nodes during compile.
+ * configure.in: removes AC_CHECK_FUNCS(setitimer) because it's
+ unused.
- * parse.y (yycompile): set flag when compiling.
+Sun May 12 17:08:16 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Apr 9 10:19:02 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * configure.in: removes AC_CHECK_FUNCS(pause) because it's unused.
- * ruby.c: forgot to include <ctype.h> for isspace().
+Sun May 12 17:05:18 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * file.c: provide S_ISREG for some platforms.
+ * signal.c (rb_f_kill): fixes typo. s/HAS_KILLPG/HAVE_KILLPG/.
- * io.c (Init_IO): added some $< operations.
+Sun May 12 17:03:27 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/ping.rb: check host upness using TCP echo.
+ * configure.in: abort if gettimeofday doesn't exist.
-Tue Apr 8 00:10:15 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun May 12 16:31:27 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * io.c (arg_read): bug with 0 length input.
+ * configure.in: adds RUBY_REPLACE_TYPE(off_t) for creating
+ NUM2OFFT.
+ * file.c (rb_file_truncate): use correct type. chsize() take
+ a long.
+ * include/ruby/ruby.h (NUM2OFFT): use a definition created by
+ a configure script by default.
-Mon Apr 7 11:36:16 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun May 12 16:03:41 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/fcntl/fcntl.c: module for fcntl constants.
+ * configure.in: removes AC_CHECK_FUNC(fseeko, fseeko64, ftello,
+ ftello64). They are not used from anywhere.
- * eval.c (rb_alias): bug when original was an alias.
+ * win32/win32.c (fseeko): removes.
+ * win32/win32.c (rb_w32_ftello): removes.
+ * include/ruby/win32.h: removes declarations of rb_w32_ftello and
+ rb_w32_fseeko.
+ * win32/Makefile.sub: removes '#define HAVE_FTELLO 1'.
- * parse.y (primary): syntax to access singleton class.
+Sun May 12 15:51:47 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (mod_public_method): method's to specify visibitily of
- the class methods. make_method_{public,private} removed.
+ * configure.in: remove AC_CHECK_FUNC(close). It is not used from
+ anywhere.
-Fri Apr 4 21:43:57 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun May 12 15:50:45 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * version 1.0-970404
+ * configure.in: adds comments for setjmp check.
- * gc.c (obj_free): finalizer added for experiment.
+Sun May 12 15:38:09 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Apr 3 02:12:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * configure.in: move clock_gettime() check into regular place.
- * eval.c (thread_schedule): make Fatal rise on main_thread on
- deadlocks.
+Wed May 8 13:45:53 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (thread_join): raise ThreadError instead of Fatal, in
- case of deadlock.
+ * configure.in: add getenv() declaration check.
+ * dln_find.c: add HAVE_DECL_GETENV test.
- * regex.c (re_compile_fastmap): uninitialized local variable.
+Sun May 12 15:33:18 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * parse.y (parse_regx): new option //[nes] to specify character
- code for regexp literals. Last specified code option is valid.
+ * configure.in: sorts AC_CHECK_FUNCS()s as alphabetical order.
- * re.c (reg_s_new): addtional 3rd argument to specify compiled
- regexp's character code.
+Wed May 8 13:41:57 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * re.c (reg_new_1): regexp character code can be specified for
- each regexp object.
+ * bignum.c: remove redundant decl for big_lshift() big_rshift().
-Wed Apr 2 14:51:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun May 12 16:06:43 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * eval.c (thread_create): handle uncaught throw.
+ * ext/socket/rubysocket.h (rsock_inspect_sockaddr): as r40646
+ check HAVE_TYPE_STRUCT_SOCKADDR_DL.
- * eval.c (thread_create): halt on some deadlock conditions.
+Sat May 11 23:01:58 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * regex.c (is_in_list): wrong result for non-mbc higher-byte
- characters.
+ * ext/socket/rubysocket.h (HAVE_TYPE_STRUCT_SOCKADDR_DL):
+ MSVC has struct sockaddr_dl, but its content is broken.
+ http://ruby-mswin.cloudapp.net/vc10-x64/ruby-trunk/log/20130511T103938Z.log.html.gz
- * regex.c (re_match): wrong skip for multi-byte characters.
+Sat May 11 22:07:42 2013 Tanaka Akira <akr@fsij.org>
- * regex.c (re_compile_fastmap): wrong fastmap in non-mbc mode.
+ * test/rinda/test_rinda.rb: Socket.getifaddrs may returns an interface
+ which #addr method returns nil for venet0 in OpenVZ.
- * hash.c (Init_Hash): hash compatible features added to ENV.
+Sat May 11 21:56:34 2013 Tanaka Akira <akr@fsij.org>
-Tue Apr 1 15:24:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/raddrinfo.c (rsock_inspect_sockaddr): Add casts to
+ suppress warnings.
- * eval.c (obj_extend): remove Object#extend as an iterator which
- is in experimental state, since it unveils internal singleton
- classes.
+Sat May 11 17:28:51 2013 Tanaka Akira <akr@fsij.org>
-Mon Mar 31 14:29:39 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket: New method, Socket.getifaddrs, implemented.
+ [ruby-core:54777] [Feature #8368]
- * version 1.0-970331
+Sat May 11 00:47:22 2013 Tanaka Akira <akr@fsij.org>
-Sun Mar 30 19:40:57 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * gc.h (SET_MACHINE_STACK_END): Add !defined(_ILP32) to a defining
+ condition to avoid compilation error on x32.
+ https://sites.google.com/site/x32abi/
- * parse.y (terms): avoided win32 gcc's optimization bug.
+Fri May 10 23:56:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Mar 29 11:21:58 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * parse.y (parser_peek_variable_name): treat invalid global, class,
+ and instance variable names as mere strings rather than errors.
+ [ruby-core:54885] [Bug #8375]
- * struct.c (make_struct): St[val,..] creates new structure.
+Fri May 10 20:22:40 2013 Tanaka Akira <akr@fsij.org>
-Fri Mar 28 11:24:51 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * configure.in: Move library checks into "Checks for libraries." part.
- * eval.c (obj_make_private): new method make_method_{public,private}
- to change visibility of singleton methods.
+Fri May 10 19:32:01 2013 Tanaka Akira <akr@fsij.org>
- * regex.c (re_compile_pattern): enables numeric literal >= 0x80 in
- the character class.
+ * configure.in: Reformat arguments of AC_CHECK_HEADERS and
+ AC_CHECK_FUNCS to track modifications easily.
- * regex.c (re_compile_pattern): enabled numeric literal >= 0x80,
- in multibyte mode.
+Fri May 10 12:01:36 2013 Tanaka Akira <akr@fsij.org>
- * regex.c (re_compile_fastmap): modified exantn and charset(_not)
- to set fastmap for higher bytes properly.
+ * configure.in: Don't link librt if clock_gettime is available in
+ the main C library.
+ glibc 2.17 moves clock_* from librt to the main C library.
+ http://sourceware.org/ml/libc-announce/2012/msg00001.html
- * regex.c (is_in_list): now matches numeric literals.
+Thu May 9 22:00:35 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 27 13:34:20 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): controls_num should
+ not be negative.
- * pack.c (pack_unpack): extra null byte after unpacked string.
+Thu May 9 21:09:57 2013 Tanaka Akira <akr@fsij.org>
-Wed Mar 26 15:20:34 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * file.c, ext/etc/etc.c, ext/socket/unixsocket.c,
+ ext/openssl/ossl.h, ext/openssl/openssl_missing.c: Use
+ HAVE_AGGREGATE_MEMBER instead of HAVE_ST_MEMBER.
- * regex.c (re_compile_pattern): register numbers must be fit in a
- byte (0 <= regnum <= 0xff).
+Thu May 9 20:43:41 2013 Tanaka Akira <akr@fsij.org>
- * regex.c (re_compile_fastmap): forgot to set mbchar map for
- charset_not if RE_MBCTYPE is on.
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): Always set
+ controls_num to raise NotImplementedError appropriately.
+ (bsock_recvmsg_internal): Raise NotImplementedError if
+ :scm_rights=>true is given on platforms which don't have
+ 4.4BSD style control message.
- * regex.c (re_compile_pattern): set list bits for multi-byte
- characters for \W, \S, \D in range expression.
+Thu May 9 12:06:07 2013 Tanaka Akira <akr@fsij.org>
- * 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.
+ * ext/socket/rubysocket.h, ext/socket/unixsocket.c,
+ ext/socket/ancdata.c: Use HAVE_STRUCT_MSGHDR_MSG_CONTROL instead
+ of HAVE_ST_MSG_CONTROL.
-Tue Mar 25 14:08:43 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu May 9 11:30:02 2013 Zachary Scott <zachary@zacharyscott.net>
- * lib/English.rb: provides nicer English alias for the variables.
+ * string.c: Add call-seq alias for String#=== [Bug #8381]
- * parse.y (expr): alias $var1 $var2 makes alias of the global
- variable.
+Thu May 9 11:14:18 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon Mar 24 18:23:20 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * doc/contributing.rdoc: Add guide for contributing to CRuby
- * version 1.0-970324
+Thu May 9 04:55:49 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 20 22:04:59 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * configure.in: Check socket library again. shutdown() is used in
+ io.c.
- * eval.c (mod_modfunc): forget to clear method cache.
+Thu May 9 01:52:31 2013 Tanaka Akira <akr@fsij.org>
-Wed Mar 19 17:06:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * configure.in: Don't check socketpair. socketpair is not used in
+ ruby command itself.
- * parse.y (program): set methods' default private/public status
- correctly under eval().
+Thu May 9 01:05:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (eval): set the_class correctly while evaluating string.
+ * class.c (rb_mod_included_modules): should not include non-modules.
+ [ruby-core:53158] [Bug #8025]
-Tue Mar 18 12:23:53 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed May 8 22:46:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (eval): yield can be called from eval().
+ * class.c (rb_mod_included_modules): should not include the original
+ module itself. [ruby-core:53158] [Bug #8025]
- * version 1.0-970318
+Wed May 8 17:43:55 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * parse.y (program): regexp in condition expression should do
- matching operation with $_.
+ * io.c (rb_io_ext_int_to_encs): ignore internal encoding if external
+ encoding is ASCII-8BIT. [Bug #8342]
- * re.c (reg_regsub): wrong substitution.
+Wed May 8 13:49:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Mar 14 14:36:28 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/json/generator/generator.c (isArrayOrObject): cast char to
+ unsigned char. [Bug #8378]
- * hash.c (hash_invert): returns value to key mapping of the
- associative array.
+Wed May 8 13:46:10 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/socket/extconf.rb: set environment variable SOCKS_SERVER to
- compile with libsocks.a.
+ * ext/json/generator/depend: fix dependencies [Bug #8379]
- * ext/socket/socket.c (socks_s_open): SOCKSsocket class to access
- internet via SOCKS library.
+ * ext/json/parser/depend: ditto.
- * sprintf.c (f_sprintf): unsigned formats display leading double
- dots for imaginary sequence of signed bit to the left.
+Wed May 8 13:07:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sprintf.c (f_sprintf): correct width and precision formatting
- for big integers.
+ * parse.y (parser_yylex): fail if $, @, @@ are not followed by a valid
+ name character. [ruby-core:54846] [Bug #8375].
- * parse.y (yylex): enables negative hex/octal numbers and `_' in
- non-decimal numbers.
+Wed May 8 13:06:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sprintf.c (f_sprintf): %u added for unsigned decimal format.
+ * include/ruby/ruby.h (ISGRAPH): add missing macro.
-Thu Mar 13 10:24:27 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed May 8 06:42:56 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * sprintf.c (f_sprintf): wrong output for bignums.
+ * ext/socket/socket.c (socket_s_ip_address_list): fix wrongly filled
+ sin6_scope_id on KAME introduced by r40593 for OpenIndiana.
+ KAME uses fe80:<scope_id>::<interface id> for link-local address
+ internally.
+ Setting sin6_scope_id causes it leaked.
+ see also comments of sockaddr_obj().
- * array.c (ary_reverse_each): iterates in reverse order.
+Tue May 7 22:12:34 2013 Tanaka Akira <akr@fsij.org>
- * pack.c (pack_unpack): L unpacked signed long.
+ * ext/readline/readline.c (insert_ignore_escape): Add a cast to
+ unsigned char * before dereference.
+ This suppress a warning on Cygwin.
- * io.c (f_backquote): now returns an empty string for no output.
+Tue May 7 12:15:24 2013 Tanaka Akira <akr@fsij.org>
-Wed Mar 12 10:20:30 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): Add a cast to
+ suppress warning.
+ Bionic defines socklen_t as int.
+ Bionic defines msg_controllen as unsigned int (__kernel_size_t)
+ instead of socklen_t as POSIX.
- * ext/socks/socks.c: socket module with socks library.
+Tue May 7 12:12:42 2013 Tanaka Akira <akr@fsij.org>
-Mon Mar 10 20:44:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/ancdata.c (ancillary_inspect): Don't call
+ anc_inspect_ipv6_pktinfo if !HAVE_TYPE_STRUCT_IN6_PKTINFO.
+ anc_inspect_ipv6_pktinfo is not defined in the case.
- * re.c (reg_regsub): \& for substitution. \`, \', and \+ are
- avaiable also.
+Tue May 7 12:10:52 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 6 01:47:03 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/socket.c (socket_s_ip_address_list): Cast EXTRA_SPACE as
+ int. This suppress a warning.
- * version 1.0-970306
+Tue May 7 12:09:29 2013 Tanaka Akira <akr@fsij.org>
- * sample/rubydb.el (gud): ruby debugger emacs interface
+ * ext/socket/extconf.rb: Set close_fds false for Cygwin.
+ Cygwin doesn't support fd passing.
+ This enables socket extension library cross-compilable by default.
- * lib/debug.rb: ruby debugger
+Tue May 7 12:07:35 2013 Tanaka Akira <akr@fsij.org>
- * parse.y (exprs): more accurate line number display.
+ * pack.c (swap32): Don't redefine it if it is already defined.
+ Bionic defines it.
+ (swap64): Ditto.
-Wed Mar 5 21:31:46 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon May 6 20:50:37 2013 Tanaka Akira <akr@fsij.org>
- * version 1.0-970305
+ * ext/socket/socket.c (socket_s_ip_address_list): Fill sin6_scope_id
+ if getifaddrs() returns an IPv6 link local address which
+ sin6_scope_id is zero, such as on OpenIndiana SunOS 5.11.
-Tue Mar 4 12:28:32 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun May 5 18:56:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ruby.c (proc_options): search through RUBYPATH and PATH for
- option -S.
+ * insns.def (defined): use vm_search_superclass() like as normal super
+ call. based on a patch <https://gist.github.com/wanabe/5520026> by
+ wanabe.
-Mon Mar 3 22:44:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * vm_insnhelper.c (vm_search_superclass): return error but not raise
+ exceptions.
- * eval.c (thread_status): returns nil for exception terminated
- threads.
+ * vm_insnhelper.c (vm_search_super_method): check the result of
+ vm_search_superclass and raise exceptions on error.
- * eval.c (thread_value): re-raise exceptions.
+Sun May 5 16:29:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Mar 1 00:59:47 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * insns.def (defined): get method entry from the method top level
+ frame, not block frame. [ruby-core:54769] [Bug #8367]
- * eval.c (rb_eval): restore $! value after rescue clause, to
- re-raise exceptions correctly.
+Sun May 5 13:28:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 28 16:43:38 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * template/ruby.pc.in (Cflags): use rubyarchhdrdir for multiarch.
+ [Bug #7874]
- * version 1.0-970228
+Sat May 4 07:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Feb 27 11:23:41 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * doc/security.rdoc: Add note about reporting security vulns
- * eval.c (rb_yield_0): redo raises exception
+Sat May 4 04:13:27 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (thread_schedule): bug in interrupt handling by rescue.
+ * include/ruby/defines.h (RUBY_ATTR_ALLOC_SIZE): New for
+ attribute((alloc_size(params))).
-Wed Feb 26 00:55:36 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * include/ruby/defines.h (xmalloc, xmalloc2, xcalloc)
+ (xrealloc, xrealloc2): Annotated by RUBY_ATTR_ALLOC_SIZE.
+ * include/ruby/ruby.h (rb_alloc_tmp_buffer): ditto.
- * eval.c (eval): forgot to restore dynamic local variable
- bindings.
+Fri May 3 19:32:13 2013 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
-Tue Feb 25 11:22:08 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/cgi/util.rb: All class methods modulized.
+ We can use these methods like a function when "include CGI::Util".
+ [Feature #8354]
- * ext/aix_ld.rb: AIX dynamic load support (not tested).
+Fri May 3 14:09:45 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (rb_eval): wrong return value for defined? super.
+ * ext/socket/extconf.rb: Make default_ipv6 true for Cygwin.
+ Cygwin supports IPv6 since Cygwin 1.7.1 (2009-12).
+ http://cygwin.com/ml/cygwin-announce/2009-12/msg00027.html
- * error.c (exception): more error check.
+Fri May 3 13:35:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * re.c (reg_regsub): wrong substitution when sub expanded to null
- string.
+ * ext/socket/{getaddrinfo,getnameinfo}.c: define socklen_t if not
+ defined, e.g., older VC.
-Fri Feb 21 13:01:47 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri May 3 13:29:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 1.0-970221
+ * include/ruby/win32.h (INTPTR_MAX, INTPTR_MIN, UINTPTR_MAX): also
+ should be defined when defining intptr_t and uintptr_t.
+ bigdecimal.c requires the former two now.
- * eval.c (f_require): volatile added. register variable was
- recycled, so that GC did not mark that variable.
+Fri May 3 13:22:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c (Init_Object): forget to mark main object (was mostly
- ok, but made trouble with early GC.)
+ * win32/win32.c (poll_child_status): fix build error on older mingw.
-Thu Feb 20 11:50:50 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri May 3 00:15:58 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * version 1.0-970220
+ * common.mk: remove timestamps in distclean-ext realclean-ext.
-Thu Feb 20 11:25:50 1997 Yasuo OHBA <jammy@shljapan.co.jp>
+Thu May 2 23:23:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/date.rb: update
+ * object.c (rb_obj_is_kind_of): skip prepending modules.
+ [ruby-core:54742] [Bug #8357]
-Thu Feb 20 08:25:57 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * object.c (rb_class_inherited_p): ditto.
+ [ruby-core:54736] [Bug #8357]
- * parse.y (yylex): forgot tokfix() before rb_intern().
+Thu May 2 22:11:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/tk.rb (TkVariable): give up using trace_var.
+ * bin/irb: remove dead code from sample/irb.rb.
-Wed Feb 19 00:24:35 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu May 2 17:32:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 1.0-970219
+ * marshal.c (copy_ivar_i): get rid of overwriting already copied
+ instance variables. c.f. [Bug #8276]
- * pack.c (pack_pack): packed by null for A specifier. must be
- space filled.
+Thu May 2 16:55:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * pack.c (pack_unpack): bug in skipping spaces
+ * thread.c (id_locals): use cached ID.
- * gc.c (xmalloc): garbage collect for every 4 Meg. allocation.
+ * vm.c (ruby_thread_init): ditto.
- * string.c (str_split_method): limit worked wrong way.
+ * defs/id.def: add more predefined IDs used in core.
- * io.c (io_gets_method): misunderstand 0xff in binary files when
- $/ == nil.
+Thu May 2 13:42:42 2013 Ryan Davis <ryand-ruby@zenspider.com>
- * re.c (reg_regsub): re-implement.
+ * lib/minitest/*: Imported minitest 4.7.4 (r8483)
+ * test/minitest/*: ditto
- * ext/socket/socket.c (thread_connect): remove O_NONBLOCK, which
- is not defined on some platform like NeXT.
+Thu May 2 11:32:22 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Feb 17 13:08:30 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * win32/win32.c (poll_child_status): [experimental] set the cause of
+ a child's death to status if its exitcode seems to be an error.
- * version 1.0-970217
+ * test/ruby/test_process.rb (TestProcess#test_no_curdir): maybe now
+ we can test it.
- * object.c (mod_eqq): === extended for subclass check (to use case
- as typecase).
+ * test/ruby/test_thread.rb (TestThread#test_thread_timer_and_interrupt):
+ ditto.
-Sat Feb 15 02:07:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu May 2 11:24:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * regex.c (re_compile_pattern): wrong match backref at end of pattern.
+ * lib/yaml.rb: nodoc EngineManager, add History doc #8344
- * io.c (arg_read): now works beyond end of file.
+Wed May 1 21:11:17 2013 Tanaka Akira <akr@fsij.org>
-Thu Feb 13 16:21:24 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * time.c (localtime_with_gmtoff_zone): musl libc may return NULL for
+ tm_zone.
- * parse.y (expr): return/yield now accept normal argument format.
+Wed May 1 18:59:36 2013 Benoit Daloze <eregontp@gmail.com>
- * parse.y (yylex): a star in `yield *x' must not be multiplication
- operator.
+ * enum.c (Enumerable#chunk): fix grammar of error message
+ for symbols beginning with an underscore [Bug #8351]
-Wed Feb 12 15:06:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed May 1 16:47:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * time.c (time_plus): bug in simple addition.
+ * ext/curses/extconf.rb (curses_version): try once for each tests, a
+ function or a variable. fallback to variable for old SVR4.
- * eval.c (thread_raise): raise exceptions from outside.
+Wed May 1 16:17:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (Init_Thread): Thread#alive? -- alias for Thread#status.
+ * ext/extmk.rb (extmake): extensions not to be installed should not
+ make static libraries, but make dynamic libraries always.
-Mon Feb 10 00:38:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed May 1 12:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ruby.h (Data_Make_Struct): rename macros.
+ * lib/rake/version.rb: Fix RDoc warning with :include: [Bug #8347]
-Sun Feb 8 11:48:13 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed May 1 11:40:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (f_syscall): argument offset was wrong.
+ * defs/id.def (predefined): add "idProc".
-Fri Feb 7 18:01:17 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * eval.c (frame_func_id): use predefined IDs.
- * version 1.0-970207
+ * proc.c (mnew, mproc, mlambda): use predefined IDs.
- * eval.c: add volatiles to avoid variable crobbering by longjmp().
+ * vm.c (rb_vm_control_frame_id_and_class): ditto.
- * eval.c (f_raise): 1st argument can be the GlobalExit object now.
+ * vm.c (Init_VM): ditto.
- * array.c (ary_unshift): no longer accept more than 2 args.
+Tue Apr 30 23:18:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c (f_raise): bug if 2nd argument is the exception.
+ * lib/benchmark.rb: Update Benchmark results on newer CPU
-Tue Feb 4 00:37:29 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Apr 30 12:31:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 1.0-970204
+ * proc.c (mproc, mlambda): use frozen core methods instead of plain
+ global methods, so that methods cannot be overridden.
+ [ruby-core:54687] [Bug #8345]
- * eval.c (eval): check compile errors by nerrs.
+ * vm.c (Init_VM): define proc and lambda on the frozen core object.
- * eval.c (rb_eval): check syntax error by nerrs, not by the return
- value, which may be NULL.
+ * include/ruby/intern.h (rb_block_lambda): add declaration instead of
+ deprecated rb_f_lambda.
- * eval.c (compile): Do not clear errinfo.
+Mon Apr 29 17:02:30 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Feb 3 10:13:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/nkf/nkf-utf8/nkf.h: Bionic libc doesn't have locale.
+ [Feature #8338]
- * 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.
+Mon Apr 29 06:58:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c (obj_inspect): remove useless buffer.
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): no need of alloca for
+ small fixed size array.
- * hash.c (any_cmp): disable interrupts and context switching.
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): check overflow first,
+ and use alloca for small size input.
- * st.c: remove ALLOW_INTS to disable interrupt during operations.
+Mon Apr 29 00:40:13 2013 Benoit Daloze <eregontp@gmail.com>
-Fri Jan 31 22:10:08 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/yaml.rb: Clarify documentation about YAML being always Psych.
+ Give a tip about using Syck. See #8344.
- * hash.c (hash_rehash): re-register all key-value.
+Sun Apr 28 23:34:01 2013 Benoit Daloze <eregontp@gmail.com>
-Thu Jan 30 02:14:49 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/yaml.rb: Use another trick to define the YAML module.
+ https://twitter.com/n0kada/status/328342207511801856
- * io.c (io_reopen): re-implement according to clone() way.
+Sun Apr 28 23:19:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * io.c (io_clone): copy IO object.
+ * lib/pp.rb: Update PP module overview by @geopet
- * struct.c (struct_eql): compare elements by eql?.
+Sun Apr 28 22:04:37 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * io.c (io_mode_flags): detect "rb", "wb" etc.
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): fix buffer overflow on
+ x64 Windows and memory leak when initializing with integer.
+ [ruby-core:54615] [Bug #8337]
- * io.h (FMODE_BINMODE): added.
+Sun Apr 28 12:38:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/socket.c (Init_socket): undef BasicSocket.new
+ * README.EXT: correct method name to be used. [Bug #7982]
- * file.c (Init_File): File.new(path[,mode])
+ * README.EXT.ja: add notes too.
- * io.c (Init_IO): IO.new(fd[,mode])
+Sun Apr 28 10:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c (rb_method_boundp): forgot to enable priv argument.
+ * object.c: With feedback from Steve Klabnik, reverted a change to
+ #untrusted? and #tainted?. Also adjusted grammar for $SAFE levels
- * object.c (Init_Object): remove `=~' from Kernel class.
+Sun Apr 28 10:10:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/socket/socket.c (open_inet): initialize sockaddr before
- calling bind(2).
+ * lib/yaml.rb: Disable setting YAML const twice [ruby-core:54642]
- * sample/ruby-mode.el (ruby-calculate-indent): skip comment lines
+Sun Apr 28 09:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Wed Jan 29 18:43:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * object.c: Documentation for taint and trust [Bug #8162]
- * eval.c (Init_Thread): DEFER_INTS during initializing threads.
+Sun Apr 28 09:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * hash.c (Init_Hash): Hash#eql? checks for object identity.
+ * README.EXT: Copy note from r40505 for rb_sprintf() [Bug #7982]
- * eval.c (thread_set_critical): wrong value assigned.
+Sun Apr 28 08:28:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon Jan 27 16:10:51 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/curses/curses.c: Update Curses::Window example for nicer output
+ Patch by Michal Suchanek [Bug #8121] [ruby-core:53520]
- * io.c (io_print): remove print_on().
+Sun Apr 28 08:10:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c (f_missing): proper error message for undefined method
- without argument
+ * README.EXT: Update note from r40504, by Jeremy Evans [Bug #7982]
-Sat Jan 25 23:32:32 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Apr 28 08:02:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * string.c (str_sub_s): false alert - sub() does not modify string.
+ * README.EXT: Add note to warn use of %i in Exceptions [Bug #7982]
- * array.c (ary_times): negative multiplication detected
+Sun Apr 28 02:41:05 2013 Tanaka Akira <akr@fsij.org>
- * string.c (str_times): negative multiplication detected
+ * configure.in: Fix a typo. Should check endgrent() instead of
+ endgrnam().
-Fri Jan 24 10:51:39 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Apr 28 00:35:45 2013 Tanaka Akira <akr@fsij.org>
- * time.c (time_arg): month -> 0 == "jan" == "1" == "01", little bit
- confusing but wanted to conform japanese style.
+ * process.c (obj2gid): Don't call endgrent() if not exist.
+ Bionic (Android's libc) don't have endgrent().
- * version 1.0-970124
+ * configure.in: Check endgrnam function.
-Fri Jan 24 09:52:49 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+Sat Apr 27 23:53:00 2013 Charlie Somerville <charlie@charliesomerville.com>
- * util.c (_fixpath): supports SJIS filenames on DJGPP.
+ * lib/yaml.rb: add security warning to YAML documentation
-Thu Jan 23 16:52:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 27 23:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * README.EXT: update. partially translated into English.
+ * lib/yaml.rb: Documentation for YAML module [Bug #8213]
- * ext/extmk.rb.in: inherit $LDFLAGS to the final link.
+Sat Apr 27 20:19:21 2013 Tanaka Akira <akr@fsij.org>
- * ext/socket/socket.c (Init_socket): add various constants.
+ * thread_pthread.c (ruby_init_stack): Add STACK_GROW_DIR_DETECTION.
+ This fixes a compilation failure while cross-compiling for Tensilica
+ Xtensa Processor.
-Mon Jan 23 11:40:59 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+Sat Apr 27 19:32:44 2013 Benoit Daloze <eregontp@gmail.com>
- * eval.c (Init_Thread): allocate main_thread first to avoid crash.
+ * thread.c: fix typos and documentation
-Thu Jan 23 02:09:26 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 27 19:04:55 2013 Tanaka Akira <akr@fsij.org>
- * gc.c (ObjectSpace): API modified. each_object method will do all
- the iteration.
+ * sparc.c: Use __asm__ instead of asm for gcc.
+ gcc doesn't provide asm keyword if -ansi option is given.
+ http://gcc.gnu.org/onlinedocs/gcc/Alternate-Keywords.html
- * eval.c (proc_call): wrong return from nested lambda.
+Sat Apr 27 17:22:50 2013 Tanaka Akira <akr@fsij.org>
- * ext/GD/GD.c: debugged.
+ * ext/socket/extconf.rb: Redundant test removed.
-Wed Jan 22 16:12:25 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 27 16:00:10 2013 Tanaka Akira <akr@fsij.org>
- * version 1.0-970122
+ * ext/socket/extconf.rb (test_recvmsg_with_msg_peek_creates_fds):
+ Extracted.
- * gc.c (gc_mark): forgot to mark match->str.
+Sat Apr 27 15:50:40 2013 Tanaka Akira <akr@fsij.org>
- * ext/GD/GD.c: GD interface module.
+ * internal.h (SIGNED_INTEGER_TYPE_P): New macro.
+ (SIGNED_INTEGER_MAX): Ditto.
+ (SIGNED_INTEGER_MIN): Ditto.
+ (UNSIGNED_INTEGER_MAX): Ditto.
+ (TIMET_MAX): Use SIGNED_INTEGER_MAX and UNSIGNED_INTEGER_MAX.
+ (TIMET_MIN): Use SIGNED_INTEGER_MIN.
- * eval.c (PUSH_BLOCK): wrong value pushed as the block level.
+ * thread.c (TIMEVAL_SEC_MAX): Use SIGNED_INTEGER_MAX.
+ (TIMEVAL_SEC_MIN): Use SIGNED_INTEGER_MIN.
-Mon Jan 20 14:01:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 27 10:52:52 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (thread_run): no context switch in the critical section.
+ * thread.c (TIMEVAL_SEC_MAX, TIMEVAL_SEC_MIN): Consider environments,
+ sizeof(time_t) is smaller than sizeof(tv_sec), such as
+ OpenBSD 5.2 (amd64).
-Mon Jan 20 09:40:59 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+Fri Apr 26 23:34:59 2013 Kouhei Sutou <kou@cozmixng.org>
- * utils.c: supports 8+3 filenames
+ * lib/rexml/text.rb (REXML::Text.normalize): Fix a bug that all
+ entity filters are ignored. [ruby-dev:47278] [Bug #8302]
+ Patch by Ippei Obayashi. Thanks!!!
+ * test/rexml/test_entity.rb (EntityTester#test_entity_filter): Add
+ a test of the above change.
-Sat Jan 18 01:23:03 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Apr 26 22:53:55 2013 Kouhei Sutou <kou@cozmixng.org>
- * version 1.0-970118
+ * lib/rexml/element.rb (REXML::Attributes#to_a): Support
+ namespaced attributes. [ruby-dev:47277] [Bug #8301]
+ Patch by Ippei Obayashi. Thanks!!!
+ * test/rexml/test_attributes.rb
+ (AttributesTester#test_to_a_with_namespaces): Add a test of the
+ above change.
- * regex.c (PATFETCH): need cast to unsigned char.
+Fri Apr 26 21:48:29 2013 Kouhei Sutou <kou@cozmixng.org>
- * io.c (io_ctl): bug in case when arg is not a string.
+ * lib/rss/atom.rb (RSS::Atom::Entry): Fix indent of document comment.
- * lib/tk.rb: forgot that Kernel#type returns the class name now.
+Fri Apr 26 21:21:17 2013 Kouhei Sutou <kou@cozmixng.org>
- * regex.c (re_search): "abc\n" =~ "^$" should not match.
+ * lib/rss/maker.rb (RSS::Maker): Fix indent of document comment.
-Fri Jan 17 12:31:37 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Apr 26 18:41:04 2013 Tanaka Akira <akr@fsij.org>
- * version 1.0-970117
+ * ext/socket/extconf.rb: Use a block of enable_config() for
+ --{enable,disable}-close-fds-by-recvmsg-with-peek configure option
- * ruby.c (ruby_options): constant PLATFORM, which is in the {cpu}-{os}
- form, defined.
+Fri Apr 26 18:08:08 2013 Tanaka Akira <akr@fsij.org>
- * configure.in: platform infomation embedded in the interpreter.
+ * dir.c (dir_set_pos): Fix a compilation error when seekdir() is not
+ exist.
- * regex.c (re_search): /^$/ did not match to "" by wrong exit condition.
+Fri Apr 26 17:41:17 2013 Tanaka Akira <akr@fsij.org>
- * lib/thread.rb: re-write Mutex/Queue based on Thread.critical.
+ * thread_pthread.c (ruby_init_stack): Add STACK_GROW_DIR_DETECTION.
+ This fixes a compilation failure while cross-compiling for ARM.
- * eval.c (thread_set_critical): remove Thread.exclusive, add
- Thread.critical = TRUE/FALSE instead.
+Fri Apr 26 14:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * re.c (reg_search): re-compile pattern if needed
+ * lib/rss/atom.rb: Documentation for RSS::Atom based on a patch by
+ Michael Denomy
+ * lib/rss/maker.rb: Documentation for RSS::Maker also by @mdenomy
- * regex.c (PATFETCH): do translate at compile time
+Fri Apr 26 12:41:22 2013 Tanaka Akira <akr@fsij.org>
-Thu Jan 16 00:49:10 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/curses/extconf.rb: Test linkability of curses_version at first.
- * gc.c (gc_mark_frame): forgot to mark frame->cbase.
+ * ext/socket/extconf.rb: Test the behavior of fd passing with MSG_PEEK
+ only if recvmsg(), msg_control member, AF_UNIX and SCM_RIGHTS are
+ available.
- * regex.c (re_compile_pattern): /a$|b)/ causes error.
+Fri Apr 26 00:07:52 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * regex.c (re_compile_pattern): /(^|b)/ causes error.
+ * lib/rinda/ring.rb (Rinda::RingServer#initialize): accept array
+ arguments of address to specify multicast interface.
- * version 1.0-970116
+ * lib/rinda/ring.rb (Rinda::RingServer#make_socket): add optional
+ arguments for multicast interface.
- * re.c (Init_Regexp): set RE_CONTEXTUAL_INVALID_OPS flag.
+ * test/rinda/test_rinda.rb
+ (TestRingFinger#test_ring_server_ipv4_multicast,
+ TestRingFinger#test_ring_server_ipv6_multicast): add tests for
+ above change.
-Tue Jan 14 02:09:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/rinda/test_rinda.rb
+ (TestRingServer#test_make_socket_ipv4_multicast,
+ TestRingServer#test_make_socket_ipv6_multicast): change bound
+ interface address because multicast address is not allowed on Linux
+ or Windows.
+ [ruby-core:53692] [Bug #8159]
- * eval.c (proc_call): Proc#call¤ò¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤ó¤À»þ¤ËÂбþ
+Thu Apr 25 23:45:02 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * configure.in: nextstepÂбþ¡©
+ * lib/rinda/ring.rb (Rinda::RingServer#initialize): add a socket
+ to @sockets in make_socket() to close sockets on shutdown even if
+ make_socket() is called after initialize.
- * eval.c (rb_eval): a[b]=c¤Ç̵Â̤ÊÇÛÎó¤ò³ä¤êÅö¤Æ¤Ê¤¤
+ * lib/rinda/ring.rb (Rinda::RingServer#make_socket): ditto.
- * eval.c (f_send): ¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤Ð¤ì¤¿¤é¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¥á¥½¥Ã
- ¥É¤ò¸Æ¤Ö¡¥
+Thu Apr 25 23:39:42 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * string.c (str_new4): match¶¦Í­ÍѤÎÀ¸À®´Ø¿ô
+ * test/rinda/test_rinda.rb (TupleSpaceProxyTest#test_take_bug_8215):
+ use KILL on Windows since TERM doen't work and ruby process remains
+ after test-all on Windows.
- * re.c (reg_search): match¤Î¼ÂÂÎ(ʸ»úÎó)¤ò¥Þ¥Ã¥Á¤ò¹Ô¤Ã¤¿Ê¸»úÎó¤È
- copy-on-write¤Ç¶¦Í­
+Thu Apr 25 23:16:28 2013 Tanaka Akira <akr@fsij.org>
- * string.c (str_hash): toupper¤ò¤«¤±¤ë¾ò·ï¤¬°ã¤Ã¤Æ¤¤¤¿
+ * ext/curses/extconf.rb: Implement
+ --with-curses-version={function,variable} configure option for
+ cross-compiling.
- * array.c (sort_2): Fixnum¤ÈString¤òÆÃḚ̂·¤¤¤·¤Æ¹â®²½
+Thu Apr 25 18:15:46 2013 Tanaka Akira <akr@fsij.org>
-Mon Jan 13 11:03:53 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/extconf.rb: Don't use WIDE getaddrinfo by default.
- * eval.c (thread_create): thread¤¬À¸À®¤µ¤ì¤ë¤Þ¤Ç³ä¹þ¤ß¤òÀßÄꤷ¤Ê¤¤
+Thu Apr 25 17:56:39 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (Init_Thread): ³ä¹þ¤ß¥¿¥¤¥ß¥ó¥°¤ò100msec¤Ë
+ * ext/socket/extconf.rb: Remove obsolete options: ---with-ipv6-lib and
+ --with-ipv6-libdir.
-Sat Jan 11 00:17:05 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 25 17:43:49 2013 Tanaka Akira <akr@fsij.org>
- * regex.c (re_search): ¥Þ¥Ã¥Á¤Ë¼ºÇÔ¤¹¤ë¾ì¹ç¤¬¤¢¤Ã¤¿(ËÜÅö¤Ëľ¤Ã¤¿¤«¡©)
+ * ext/socket/extconf.rb: Implement
+ --{enable,disable}-close-fds-by-recvmsg-with-peek configure option
+ for cross-compiling.
+ Make --{enable,disable}-wide-getaddrinfo configure option
+ cross-compiling friendly.
- * io.c (io_ioctl,io_fcntl): Âè2°ú¿ô¤ò¾Êά²Äǽ¤Ë
+Thu Apr 25 16:11:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (io_ioctl,io_fcntl): Ìá¤êÃͤ¬IO¤À¤Ã¤¿¡¥À°¿ô(¥·¥¹¥Æ¥à¥³¡¼¥ë
- ¤ÎÌá¤êÃÍ)¤òÊÖ¤¹¤è¤¦¤Ë¤·¤¿¡¥
+ * io.c (rb_io_ext_int_to_encs, parse_mode_enc): bom-prefixed name is
+ not a real encoding name, just a fallback. so the proper conversion
+ should take place even if if the internal encoding is equal to the
+ bom-prefixed name, unless actual encoding is equal to the internal
+ encoding. [ruby-core:54563] [Bug #8323]
- * io.c (io_ctl): °ú¿ô¤¬À°¿ô¤Î»þ¤ËÂбþ
+ * io.c (io_set_encoding_by_bom): reset extenal encoding if no BOM
+ found. [ruby-core:54569]
- * io.c (io_fcntl): file.c¤«¤é°Üư
+Thu Apr 25 14:35:01 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Jan 10 17:01:47 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): allow Fixnum and Bignum.
+ [ruby-core:53986] [Feature #8217]
- * version 1.0-970110
+Thu Apr 25 14:26:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/socket/socket.c (thread_connect): open(connect(2))¤Ç¾¤Î
- thread¤ò¥Ö¥í¥Ã¥¯¤·¤Ê¤¤¤è¤¦¤Ë
+ * lib/uri/common.rb (URI.decode_www_form): follow current URL Standard.
+ It gets encoding argument to specify the character encoding.
+ It now allows loose percent encoded strings, but denies ;-separator.
+ [ruby-core:53475] [Bug #8103]
- * eval.c (thread_create): exit¤Ç¤Ê¤¤¤È¤­¤Ëexit¤À¤È»×¤¤¹þ¤à
+ * lib/uri/common.rb (URI.decode_www_form): follow current URL Standard.
+ It gets encoding argument to convert before percent encode.
+ Now UTF-16 strings aren't converted to UTF-8 before percent encode
+ by default.
-Mon Jan 6 17:42:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Apr 25 14:26:00 2013 Charlie Somerville <charlie@charliesomerville.com>
- * string.c (str_sub_s): ʸ»úÎóŤè¤êŤ¤offset¤Î¸¡½Ð
+ * benchmark/bm_hash_shift.rb: add benchmark for Hash#shift
- * regex.c (re_search): ¶õ¤Ë¥Þ¥Ã¥Á¤¹¤ë¥Ñ¥¿¡¼¥ó¸å¤Î$¤Ç¼ºÇÔ
+ * hash.c (rb_hash_shift): use st_shift if hash is not being iterated to
+ delete element without iterating the whole hash.
-Thu Jan 2 16:36:23 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * hash.c (shift_i): remove function
- * file.c (file_reopen): File¤Îreopen(path¤Þ¤¿¤ÏIO¤Ç»ØÄê)¡¥
+ * include/ruby/st.h (st_shift): add st_shift function
- * io.c (io_reopen): IO¤Îreopen(IO¤Ç»ØÄê) -- change class¤Ä¤­
+ * st.c (st_shift): ditto
-Wed Jan 1 11:09:01 1997 Yukihiro Matsumoto <matz@caelum.co.jp>
+ [Bug #8312] [ruby-core:54524] Patch by funny-falcon
- * io.c (f_select): timeout¤Çnil¤òÊÖ¤¹
+Thu Apr 25 12:03:38 2013 Tanaka Akira <akr@fsij.org>
-Fri Dec 27 13:06:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/extconf.rb: Extract C programs as toplevel constants.
- * file.c (file_s_open): ¥µ¥Ö¥¯¥é¥¹¤Ç¤Ï¤½¤Î¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÊÖ
- ¤¹¤è¤¦¤Ë¡¥
+Thu Apr 25 02:23:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Dec 27 08:58:27 1996 ono@isl.nara.sharp.co.jp
+ * configure.in (RUBY_RM_RECURSIVE): this hack is needed by only
+ autoconf 2.69 or earlier on darwin.
- * numeric.c (flo_to_s): index()¤ò»È¤ï¤Ê¤¤¡¥strstr()¤Ë¡¥
+Thu Apr 25 01:22:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Dec 26 01:34:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/tracer.rb (get_line): simply read by File.readlines.
- * lib/tk.rb: place¤¬»È¤¨¤ë¤è¤¦¤Ë
+ * lib/debug.rb (script_lines): get source lines from SCRIPT_LINES__ or
+ read from the file.
- * pack.c (endian): ¥Þ¥¯¥íDYNAMIC_ENDIAN¤ò»ØÄꤹ¤ë¤È¼Â¹Ô»þ¤Ëendian
- ¤òȽÄꤹ¤ë¤è¤¦¤Ë¡¥
+ * lib/debug.rb (display_list): use script_lines instead of recursion.
+ [Bug #8318]
- * eval.c (thread_alloc): ½é´ü²½Ëº¤ì¤Î¥á¥ó¥Ð¤¬¤¢¤Ã¤¿¡¥
+ * lib/debug.rb (line_at): use script_lines same as display_list.
-Wed Dec 25 00:33:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/debug.rb (display_list): Fix debug listing when called from the
+ same file it has been required. patch by Dario Bertini <berdario AT
+ gmail.com> [Bug #8318] [fix GH-280]
- * version 1.0-961225
+Wed Apr 24 21:51:13 2013 Tanaka Akira <akr@fsij.org>
- * io.c (Init_IO): new¤ò̵¸ú²½
+ * configure.in: Check mblen().
+ mblen() is optional in uClibc.
- * lib/tkthcore.rb: tk_call "global $foo; set foo 5"¤Ê¤É¤â¤Ç¤­¤ë¤è¤¦¤Ë
+ * eval_intern.h (CharNext): Don't use mblen() is not available.
- * eval.c (thread_restore_context): $~, $_¤Ç¥¹¥¿¥Ã¥¯¤ò²õ¤·¤Æ¤¤¤¿
+Wed Apr 24 15:55:06 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * process.c (rb_waitpid): thread¤Ë°ì±þÂбþ
+ * io.c (rb_fd_fix_cloexec): use rb_update_max_fd().
-Tue Dec 24 15:20:58 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Apr 24 14:08:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * version 0.99.4-961224
+ * numeric.c: Fix wiki link on Float imprecision in overview, patched
+ by Makoto Kishimoto [Bug #8304] [ruby-dev:47280]
- * configure.in: char¤¬unsigned¤«¤É¤¦¤«¤â¥Á¥§¥Ã¥¯
+Wed Apr 24 14:03:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * regex.c (SIGN_EXTEND_CHAR): __CHAR_UNSIGNED__¤Ë¤âÂбþ
+ * parse.y (parser_yylex): disallow $- without following identifier
+ character. [ruby-talk:406969]
- * pack.c (pack_unpack): ÌÀ¼¨Åª¤Ësigned char¤ò»ØÄê¡¥
+ * parse.y (is_special_global_name): mere $- is not a valid global
+ variable name.
-Mon Dec 23 14:41:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Apr 24 13:54:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ruby.c (load_file): ɸ½àÆþÎϤ«¤é¤Î¥¹¥¯¥ê¥×¥È¤Ç°ì»þ¥Õ¥¡¥¤¥ë¤ò»È¤ï
- ¤Ê¤¤¤è¤¦¤Ë
+ * string.c: Document String#setbyte return value by @gjmurakami-10gen
+ [Fixes GH-294]
- * object.c (f_integer): `0x', `0'¤Ê¤É¤Çbase¤ò²ò¼á¤¹¤ë¤è¤¦¤Ë¡¥
+Wed Apr 24 13:45:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Dec 20 01:44:39 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * class.c: Example of Object#methods by @windwiny [Fixes GH-293]
+ * ruby.c: Document return values of Kernel #sub, #gsub, and #chop
- * Makefile.in (flock.o): flock¤ËÂбþ
+Wed Apr 24 12:54:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Dec 19 20:13:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/lib/socket.rb: Doc typos by @vipulnsward [Fixes GH-292]
- * version 0.99.4-961219
-Wed Dec 18 00:06:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Apr 24 12:54:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * glob.c (glob_filename): strrchr¤¬¥Þ¥¯¥í¤Î¾ì¹ç¤ËÂбþ
+ * ext/socket/lib/socket.rb: Doc typos by @vipulnsward [Fixes GH-292]
- * configure.in: <sys/select.h>¤ò¥Á¥§¥Ã¥¯
+Wed Apr 24 12:27:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/kconv/kconv.c: 1.62¥Ù¡¼¥¹¤Ë
+ * array.c: Fix documentation for Array#index and #replace aliases
+ Based on a patch by @phiggins [Fixes GH-282]
- * ext/kconv/kconv.c: Kconv¥â¥¸¥å¡¼¥ë
+Tue Apr 23 21:14:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * string.c (str_substr): len¤¬¸µ¤Îʸ»úÎó¤è¤êŤ¤»þ¤ËÂбþ
+ * string.c (rb_str_inspect): refix r40413, on Ruby 1.9 usual character
+ escape uses hex/Unicode escapes, so fix to use Unicode escape on
+ Unicode strings and hex on others. [ruby-core:54458] [Bug #8290]
- * parse.y (iterator): ¡Ö$bar do .. end¡×¤Ê¤É¤Ïµö¤µ¤Ê¤¤¤è¤¦¤Ë
+Tue Apr 23 20:10:02 2013 Tanaka Akira <akr@fsij.org>
- * parse.y (iterator): FID(foo!,foo?)¤òdo·Á¼°¤Î¥¤¥Æ¥ì¡¼¥¿¤Ë¤Ç¤­¤ë¡¥
+ * missing/isnan.c (isnan): Don't define if isnan() macro is defined.
+ This fixes a compilation failure on uClibc based Gentoo system.
- * missing/flock.c (flock): lockf()¤ò»È¤Ã¤ÆÂåÂØ
+Tue Apr 23 17:40:40 2013 Martin Duerst <duerst@it.aoyama.ac.jp>
- * file.c (file_flock): flock¤ò¼ÂÁõ
+ * lib/rexml/document.rb, lib/rexml/element.rb,
+ lib/rexml/formatters/pretty.rb: remove opinionated
+ language in documentation. [Bug #8309],
+ reported by Charles Beckmann
-Tue Dec 17 12:13:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Apr 23 14:04:44 2013 Shugo Maeda <shugo@ruby-lang.org>
- * version 0.99.4-961217
+ * lib/net/imap.rb (getacl_response): parse the mailbox of an ACL
+ response correctly. [ruby-core:54365] [Bug #8281]
-Fri Dec 13 02:05:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Apr 23 11:58:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in: RUBYLIB¤Î¥«¥ì¥ó¥È¤ò¸å²ó¤·(@mix/awk offline)
+ * string.c (rb_str_scrub): fix for UTF-32. strlen() on strings
+ contain NUL returns wrong result, use sizeof operator instead.
+ [ruby-dev:45975] [Feature #6752]
- * dln.c: AIX¤ËÂбþ¤·¤¿¡©(@mix/awk offline)
+Tue Apr 23 10:26:50 2013 Akinori MUSHA <knu@iDaemons.org>
- * eval.c (thread_schedule): critical section¤Ç¤âÌÀ¼¨Åª¤Ê¥³¥ó¥Æ¥­¥¹
- ¥È¥¹¥¤¥Ã¥Á¤Ïµ¯¤­¤Ê¤¤¤È¤Þ¤º¤¤
+ * test/ruby/test_module.rb
+ (TestModule#test_const_get_invalid_name)
+ (test_const_defined_invalid_name): Fix expected values.
- * re.c (reg_search): match¤Ë¼ºÇÔ¤·¤¿»þ¤Ë$~¤ònil¤Ë¡¥
+Tue Apr 23 09:51:26 2013 Akinori MUSHA <knu@iDaemons.org>
- * re.c (reg_search): Ëè²ómatch¤òÀ¸À®¤¹¤ë¤è¤¦¤Ë
+ * string.c (rb_str_inspect): NUL should not be represented as "\0"
+ when octal digits may follow. [ruby-core:54458] [Bug #8290]
-Thu Dec 12 17:03:30 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Apr 22 22:54:00 2013 Charlie Somerville <charlie@charliesomerville.com>
- * numeric.c (flo_to_s): 2.0.to_s -> 2.0¤Ë
+ * insns.def (opt_mod): Use % operator if both operands are positive for
+ a significant performance improvement. Thanks to @samsaffron.
- * eval.c (thread_save_context): $_, $~¤òthreadËè¤ËÊݸ
+Mon Apr 22 17:09:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (thread_kill): main thread¤Ç¤Ïexit(0)
+ * marshal.c (r_object0): copy all instance variables not only generic
+ ivars, before calling post proc. [ruby-core:51163] [Bug #7627]
- * string.c (str_split_method): ´Ö°ã¤Ã¤¿·ë²Ì¤òÊÖ¤·¤Æ¤¤¤¿
+Mon Apr 22 10:25:21 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Dec 12 15:32:48 1996 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * util.c (ruby_hdtoa): revert r29729.
+ If you want ruby to behave as before on x86, specify to use SSE like
+ -msse2 -mfpmath=sse for gcc.
- * dir.c: CYGWIN32Âбþ
+Sun Apr 21 23:19:00 2013 Charlie Somerville <charlie@charliesomerville.com>
- * ext/socket/socket.c: CYGWIN32Âбþ
+ * configure.in: Revert using sigsetjmp by default due to performance
+ problems on some systems (eg. older Linux)
- * io.c: CYGWIN32Âбþ
+Sun Apr 21 21:35:00 2013 Charlie Somerville <charlie@charliesomerville.com>
-Thu Dec 12 14:43:51 1996 Jun Kuroda <j_kuro@pluto.ai.kutech.ac.jp>
+ * configure.in: Use sigsetjmp by default so jumping out of signal
+ handlers properly restores the signal mask and SS_ONSTACK flag.
+ [ruby-core:54175] [Bug #8254]
- * lib/tk.rb: wish4.2¤âõº÷¸õÊä¤Ë´Þ¤á¤ë
+ * configure.in: Manually check for presence of sigsetjmp. It is not a
+ function on some systems, so AC_CHECK_FUNCS cannot be used.
- * config.guess: JCCÂбþ
+Sun Apr 21 08:00:55 2013 Tanaka Akira <akr@fsij.org>
-Thu Dec 12 00:41:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/csv/test_features.rb, test/logger/test_logger.rb
+ test/mkmf/test_have_macro.rb, test/net/http/test_http.rb,
+ test/openssl/test_config.rb, test/psych/test_encoding.rb,
+ test/psych/test_exception.rb, test/psych/test_psych.rb,
+ test/psych/test_tainted.rb, test/readline/test_readline.rb,
+ test/rexml/test_contrib.rb, test/ruby/test_autoload.rb,
+ test/ruby/test_beginendblock.rb, test/ruby/test_exception.rb,
+ test/ruby/test_file.rb, test/ruby/test_io.rb,
+ test/ruby/test_marshal.rb, test/ruby/test_process.rb,
+ test/ruby/test_require.rb, test/ruby/test_rubyoptions.rb,
+ test/syslog/test_syslog_logger.rb, test/webrick/test_httpauth.rb,
+ test/zlib/test_zlib.rb: Use Tempfile.create.
- * version 0.99.4-961212
+Sun Apr 21 00:15:36 2013 Tanaka Akira <akr@fsij.org>
- * parse.y (parse_string): """..."""¤Ï¤ä¤Ï¤ê̵¤¯¤¹¤³¤È¤Ë¤·¤¿
+ * lib/tempfile.rb (Tempfile.create): Close when the block exits.
- * parse.y (parse_regx): %r|...|¤Çterminator¤ò \ ¤Ç¥¨¥¹¥±¡¼¥×¤Ç¤­¤ë
- ¤è¤¦¤Ë
+Sat Apr 20 23:38:14 2013 Tanaka Akira <akr@fsij.org>
- * signal.c (posix_signal): sigaction¤ò»È¤¦signal
+ * lib/webrick/httpauth/htpasswd.rb: Use Tempfile.create to avoid
+ unintentional unlink() by the finalizer.
+ lib/webrick/httpauth/htdigest.rb: Ditto.
- * configure.in: posix signal/bsd signal¤Î¸¡½Ð
+Sat Apr 20 22:47:48 2013 Tanaka Akira <akr@fsij.org>
-Wed Dec 11 17:47:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/tempfile.rb (Tempfile.create): New method.
+ The method name is proposed by Shugo Maeda. [ruby-dev:47220]
+ [ruby-core:41478] [Feature #5707]
- * eval.c (thread_schedule): critical section¤Ç¤Ï¥³¥ó¥Æ¥­¥¹¥È¥¹¥¤¥Ã
- ¥Á¤¬µ¯¤­¤Ê¤¤¤è¤¦¤Ë
+Sat Apr 20 14:22:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/thread.rb: SharedMutex¥¯¥é¥¹
+ * marshal.c (w_object): dump no ivars to the original by marshal_dump.
+ [ruby-core:54334] [Bug #8276]
- * lib/jcode.rb: String#scan¤ò»È¤¦¤è¤¦¤Ë
+ * marshal.c (r_object0): copy all ivars of marshal_dump data to the
+ result object instead. [ruby-core:51163] [Bug #7627]
-Tue Dec 10 12:21:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 20 02:33:27 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * version 0.99.3-961210
+ * string.c (str_scrub): add ruby method String#scrub which verify and
+ fix invalid byte sequence. [ruby-dev:45975] [Feature #6752]
- * string.c (str_split_method): Àµµ¬É½¸½¤Ë()¤ò´Þ¤à»þ¤Ë¥Ð¥°
+ * string.c (str_compat_and_valid): check given string is compatible
+ and valid with given encoding.
- * lib/jcode.rb: ¤Á¤ç¤Ã¤È¤Þ¤·¤Ë¤Ê¤Ã¤¿
+ * transcode.c (str_transcode0): If invalid: :replace is specified for
+ String#encode, replace invalid byte sequence even if the destination
+ encoding equals to the source encoding.
- * string.c (tr_setup_table): ÃÖ´¹Ê¸»ú¤¬Ã»¤¹¤®¤ë(2ʸ»ú)¤Î¤È¤­¤Î¥Ð¥°
+Fri Apr 19 21:55:40 2013 Kouhei Sutou <kou@cozmixng.org>
-Mon Dec 9 11:38:04 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * README.EXT.ja (Data_Wrap_Struct): Remove a description about
+ orphan argument. Oh, I renamed the argument name without
+ changing description at r36180... Sorry....
+ Patch by Makoto Kishimoto. Thanks!!! [ruby-dev:47269] [Bug #8292]
+ * README.EXT.ja (Data_Make_Struct): Add a sample code that describes
+ how it works.
+ Patch by Makoto Kishimoto. Thanks!!! [ruby-dev:47269] [Bug #8292]
- * string.c (str_scan): ʸ»úÎó¤Î¥Þ¥Ã¥Á¤ò¹Ô¤¦¡¥¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¤âư
- ºî¤¹¤ë
+Fri Apr 19 17:54:57 2013 Shugo Maeda <shugo@ruby-lang.org>
- * regex.c (re_copy_registers): allocated¤¬½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿
+ * lib/net/imap.rb (body_type_msg): should accept
+ message/delivery-status with extra data.
+ [ruby-core:53741] [Bug #8167]
- * re.c (match_to_s): $~¤Îʸ»úÎó²½
+ * test/net/imap/test_imap_response_parser.rb: related test.
- * re.c (match_to_a): $~¤òÇÛÎ󲽤Ǥ­¤ë¤è¤¦¤Ë
+Fri Apr 19 13:03:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * re.c (match_getter): ¥ì¥¸¥¹¥¿¤¬½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿
+ * marshal.c (w_object): do not dump encoding which is dumped with
+ marshal_dump data. [ruby-core:54334] [Bug #8276]
-Thu Dec 5 11:06:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Apr 19 11:36:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c (str_split_method): ¥Þ¥Ã¥Á¤·¤Ê¤«¤Ã¤¿³ç¸Ì¤Ï¶õʸ»úÎó¤ò
- push¤¹¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤
+ * configure.in (stack_protector): control use of -fstack-protector.
- * string.c (str_succ): ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤ò´Þ¤Þ¤Ê¤¤Ê¸»ú¤ËÂбþ
+ * configure.in (debugflags): let -fstack-protector precede and disable
+ debugflags, because they can't work together on SmartOS. [Bug #8268]
-Wed Dec 4 10:48:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Apr 19 07:43:52 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * version 0.99.3-961204
+ * test/openssl/test_cipher.rb: Correct a typo
+ by jgls <joerg@joergleis.com>
+ https://github.com/ruby/ruby/pull/291 fix GH-291
- * io.c (io_binmode): DJGPP¤Ç¤ÎbinmodeÂбþ
+Thu Apr 18 16:58:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sprintf.c (f_sprintf): int¤ÎÈϰϤοôÃͤÏľÀÜsprintf¤ÇÊÑ´¹¤¹¤ë
+ * vm_method.c (rb_mod_public_method): fix visibility on anonymous
+ module. set visibility of singleton method, not method in base
+ class. [ruby-core:54404] [Bug #8284]
- * sprintf.c (f_sprintf): "%02s"¤ËÍê¤é¤Ê¤¤
+Thu Apr 18 16:20:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * re.c (reg_search): index¤ÇSEGV
+ * dir.c (glob_helper): should skip dot directories only for recursion,
+ but should not if matching to the given pattern. [ruby-core:54387]
+ [Bug #8283]
-Tue Dec 3 10:09:36 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 18 16:20:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 0.99.3-961203
+ * pack.c (pack_unpack): increase buffer size to fix buffer overflow,
+ and fix garbage just after unpacking without missing paddings.
+ [Bug #8286]
- * ext/extmk.rb.in (install): INSTALL_DATA¤«¤éINSTALL¤ËÊѹ¹
+Thu Apr 18 13:35:54 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * dln.c: hpuxÂбþ
+ * pack.c (pack_unpack): output characters even if the input doesn't
+ have paddings. [Bug #8286]
- * string.c (str_aset_method): Éé¤ÎÃͤò´Þ¤àÈϰϤǤâÎã³°¤òµ¯¤³¤µ¤Ê¤¤
+Thu Apr 18 08:20:48 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * array.c (ary_replace): Éé¤ÎÃͤò´Þ¤àÈϰϤǤâÎã³°¤òµ¯¤³¤µ¤Ê¤¤
+ * common.mk (clean-ext): remove timestamps.
- * array.c (beg_len): beg==end¤Î»þ¡¤Ä¹¤µ0¤Ë
+Wed Apr 17 22:07:50 2013 Tanaka Akira <akr@fsij.org>
-Mon Dec 2 14:07:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/rubysocket.h (SOCKLEN_MAX): Expression simplified.
- * configure.in: HP shlÂбþ
+Wed Apr 17 20:09:19 2013 Aman Gupta <ruby@tmm1.net>
- * string.c (str_upto): beg > end¤Î»þ̵¸Â¥ë¡¼¥×¤ËÍî¤Á¤ë¤Î¤ò»ß¤á¤¿
+ * compile.c (iseq_add_mark_object): Use new rb_iseq_add_mark_object().
- * range.c (range_each): String#upto¤¬ºÆÄêµÁ¤µ¤ì¤¿¾ì¹ç¤ËÂбþ
+ * insns.def (setinlinecache): Ditto.
- * string.c (str_split_method): "ABC".split(/(B)/)¤¬¸íưºî
+ * iseq.c (rb_iseq_add_mark_object): New function to allocate
+ iseq->mark_ary on demand. [Bug #8142]
-Sat Nov 30 01:43:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * iseq.h (rb_iseq_add_mark_object): Ditto.
- * eval.c (rb_eval): undef¤ÇSEGV
+ * iseq.c (prepare_iseq_build): Avoid allocating mark_ary until needed.
-Fri Nov 29 12:17:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * iseq.c (rb_iseq_build_for_ruby2cext): Ditto.
- * sample/ruby-mode.el (ruby-parse-region): %Q#..#¤Ê¤É¤ËÂбþ¡¥¤·¤«
- ¤·¡¤¶èÀÚ¤êʸ»ú¤¬±é»»»Ò¤Ç¹ÔËö¤Ë¤¢¤ë¾ì¹ç¤Ë¤ÏÂбþ¤Ç¤­¤Ê¤«¤Ã¤¿¡¥
+Wed Apr 17 20:00:18 2013 Tanaka Akira <akr@fsij.org>
- * re.c (reg_raise): Îã³°¤Ç¤â¥¹¥é¥Ã¥·¥å¤ò¥¨¥¹¥±¡¼¥×
+ * ext/socket/rubysocket.h (SOCKLEN_MAX): Defined.
- * re.c (reg_inspect): ¥¹¥é¥Ã¥·¥å¤ò¥¨¥¹¥±¡¼¥×
+ * ext/socket/raddrinfo.c (ext/socket/raddrinfo.c): Reject too long
+ Linux abstract socket name.
- * parse.y (parse_string): `%[QqXxRr](.)..\1'¤Ê¤ëʸ»úÎó·Á¼°(¥Æ¥¹¥È
- ºÎÍÑ)
+Wed Apr 17 19:45:27 2013 Aman Gupta <tmm1@ruby-lang.org>
- * parse.y (parse_qstring): '''...'''¤Î·Á¼°
+ * iseq.c (iseq_location_setup): re-use existing string when iseq has
+ the same path and absolute_path. [Bug #8149]
- * ext/dbm/dbm.c (Init_dbm): ½Ò¸ìkey?,value?¤ÎÄɲÃ
+Wed Apr 17 11:38:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/dbm/dbm.c (Init_dbm): includes->include?
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ UNASSIGNED is not a valid message.
- * hash.c (Init_Hash): ½Ò¸ìkey?,value?,include?¤ÎÄɲÃ
+Wed Apr 17 10:58:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_eval): unless¤ÇelseÀ᤬¼Â¹Ô¤µ¤ì¤Ê¤¤(¤¦¡¼¤ó)
+ * thread.c (sleep_timeval): get rid of overflow on Windows where
+ timeval.tv_sec is not time_t but mere long.
- * string.c (str_sub_iter_s): ¥¤¥Æ¥ì¡¼¥¿¥Ö¥í¥Ã¥¯Æâ¤Ç¥Þ¥Ã¥Á¤¬¹Ô¤ï¤ì
- ¤ë¤È°ÌÃÖ¤¬¤º¤ì¤ë(»þ¤Ë̵¸Â¥ë¡¼¥×¤ËÍî¤Á¤ë)
+Tue Apr 16 23:07:12 2013 Tanaka Akira <akr@fsij.org>
- * string.c (str_resize): len¤¬0¤Î»þsize¤ÎÄ´À°¤¬¹Ô¤ï¤ì¤Ê¤«¤Ã¤¿
+ * ext/socket/unixsocket.c (unix_send_io): Suppress a warning by clang.
+ (unix_recv_io): Ditto.
-Thu Nov 28 00:59:54 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Apr 16 12:27:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * version 0.99.3-961128
+ * ext/sdbm/init.c: Fix comment indentation, by windwiny [Fixes GH-277]
- * parse.y (parse_string): 3-quote style¤Îʸ»úÎó(Îã:"""abc"d"e""")
+Tue Apr 16 12:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * configure.in (EXTSTATIC): ext¤òÀÅŪ¤Ë¥ê¥ó¥¯¤¹¤ë»þ¤Ë¤Ïruby¤Ïdll¤ò
- »È¤¦¤è¤¦¤Ë
+ * ext/socket/option.c: Document synonymous methods, by windwiny [GH-277]
+ * ext/stringio/stringio.c: ditto
+ * ext/io/wait/wait.c: ditto
+ * ext/gdbm/gdbm.c: ditto
+ * ext/dl/cfunc.c: ditto
+ * ext/zlib/zlib.c: ditto
+ * ext/win32ole/win32ole.c: ditto
+ * ext/dbm/dbm.c: ditto
+ * ext/json/generator/generator.c: ditto
+ * ext/date/date_core.c: ditto
- * io.c (Init_IO): gets¤Î°ú¿ô¤¬´Ö°ã¤Ã¤Æ¤¤¤¿
+Tue Apr 16 11:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * string.c (str_each_line): RS¤òÌÀ¼¨Åª¤Ë»ØÄê¤Ç¤­¤ë¤è¤¦¤Ë
+ * ext/openssl/*: Document synonymous methods, by windwiny [GH-277]
-Wed Nov 27 12:37:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Apr 15 22:21:42 2013 Tanaka Akira <akr@fsij.org>
- * version 0.99.3-961127
+ * ext/fiddle/depend: New file.
- * eval.c (rb_eval): iver defined? ¤Çself¤ò»ØÄꤹ¤ë¤Î¤ò˺¤ì¤¿
+Mon Apr 15 22:01:02 2013 Akinori MUSHA <knu@iDaemons.org>
- * io.c: getsÅù¤ÇRS¤òÌÀ¼¨Åª¤Ë»ØÄê¤Ç¤­¤ë¤è¤¦¤Ë
+ * misc/ruby-electric.el (ruby-electric-insert): Check
+ ruby-electric-is-last-command-char-expandable-punct-p here.
- * ext/extmk.rb.in (install): static link¤Ë¼ºÇÔ
+ * misc/ruby-electric.el (ruby-electric-closing-char): New
+ interactive function bound to closing characters. Typing one of
+ those closing characters right after the matching counterpart
+ cancels the effect of automatic closing. For example, typing
+ "{" followed by "}" simply makes "{}" instead of "{ } }".
-Tue Nov 26 10:33:04 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Apr 15 12:54:42 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
- * version 0.99.3-961126
+ * ext/openssl/ossl_ssl.c: Correct shutdown behavior w.r.t GC.
- * string.c (str_sub_s): ÃÖ´¹¸å¤Îʸ»úÎ󍵤¬´Ö°ã¤Ã¤Æ¤¤¤¿
+ * test/openssl/test_ssl.rb: Add tests to verify correct behavior.
-Mon Nov 25 09:11:22 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ [Bug #8240] Patch provided by Shugo Maeda. Thanks!
- * numeric.c (fix_rshift): 32°Ê¾å¤Î±¦¥·¥Õ¥È¤Ç0¤òÊÖ¤¹¤è¤¦¤Ë(C¤Î
- rshift¤Ï(x>>(y%32))¤òÊÖ¤·¤Æ¤¤¤¿)¡¥
+Mon Apr 15 10:23:39 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * string.c (str_gsub): ÃÖ´¹¤¬¹Ô¤ï¤ì¤Ê¤¤¾ì¹ç¤¬¤¢¤Ã¤¿
+ * ext/coverage/depend: fix id.h place as r40283.
- * string.c (str_resize): ËÜÅö¤ËɬÍפʻþ¤À¤±realloc
+ * ext/coverage/extconf.rb: add topdir and topsrcdir to VPATH.
-Thu Nov 21 04:13:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Apr 14 19:46:14 2013 Tanaka Akira <akr@fsij.org>
- * configure.in (EXTSTATIC): --with-static-linked-ext¤ÇÁ´¤Æ¤Î¥â¥¸¥å¡¼
- ¥ë¤òÀÅŪ¥ê¥ó¥¯¤¹¤ë¤è¤¦¤Ë
+ * ext/-test-/debug/depend: New file.
- * pack.c (pack_unpack): ¹ÔËö¤Î²þ¹Ô¤¬¤Ê¤¤»þ¤Ë¤â¥Á¥§¥Ã¥¯¥µ¥à¤ò¥¹¥­¥Ã
- ¥×¤¹¤ë¤è¤¦¤Ë
+ * ext/-test-/exception/depend: Ditto.
-Wed Nov 20 96 21:42:51 1996 Yasuo OHBA <jammy@shljapan.co.jp>xc
+ * ext/-test-/printf/depend: Ditto.
- * configure.in: freebsdÂбþ
+ * ext/-test-/string/depend: Ditto.
-Wed Nov 20 10:24:24 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/coverage/depend: Ditto.
- * ext/extmk.rb.in (install): Ä̾ï¥ê¥ó¥¯ÍѤÎLDFLAGS¤È¥À¥¤¥Ê¥ß¥Ã¥¯¥ê
- ¥ó¥¯ÍѤÎDLDFALGS¤òʬΥ
+ * ext/io/console/depend: Ditto.
- * ext/extmk.rb.in (install): ¥³¥ó¥Ñ¥¤¥ë¤ÎÀ®¸ù¤·¤¿¤â¤Î¤òÀÅŪ¥ê¥ó¥¯
- ¤Î¥ê¥¹¥È¤ËÄɲ乤ë
+ * ext/io/nonblock/depend: Ditto.
- * eval.c (f_missing): ¥ª¥Ö¥¸¥§¥¯¥È¤Îʸ»úÎóɽ¸½¤¬Ä¹¤¹¤®¤ë»þ¥Ð¥Ã¥Õ¥¡
- ¤ò½ñ¤­ÄÙ¤·¤Æ¤¤¤¿
+ * ext/io/wait/depend: Ditto.
- * process.c (proc_exec_v): fork¤·¤¿¸åÎã³°¤òȯÀ¸¤µ¤»¤Æ¤Ï¤¤¤±¤Ê¤¤
+ * ext/openssl/depend: Ditto.
-Tue Nov 19 13:28:15 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/pathname/depend: Ditto.
- * version 0.99.3-961119
+ * ext/psych/depend: Ditto.
- * eval.c (mod_method_defined): Module#method_defined? ¤ÎÄɲÃ
+ * ext/zlib/depend: Ditto.
- * parse.y (call_args): °ú¿ô¤¬Í£°ì¤Î¥³¥Þ¥ó¥É¥³¡¼¥ë¤Ç¤¢¤ë»þ¤Î¥Ð¥°(Ìá
- ¤êÃͤ¬Å¸³«¤µ¤ì¤Æ¤·¤Þ¤¦)
+Sun Apr 14 02:46:50 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Nov 18 13:28:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/mkmf.rb (MakeMakefile#create_makefile): remove {$(VPATH)} other
+ than nmake.
- * string.c (str_sub): ¼ºÇÔ¤·¤¿»þ¤Ënil¤òÊÖ¤·¤Æ¤¤¤¿
+ * ext/ripper/depend: use VPATH expecting removed by above.
- * string.c (str_split_method): ¸¡º÷³«»Ï°ÌÃÖ¤¬°Üư¤·¤Æ¤Ê¤«¤Ã¤¿
+Sat Apr 13 23:06:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/socket.c (sock_s_getservbyaname): ¤Þ¤À´Ö°ã¤Ã¤Æ¤¤¤¿
+ * lib/mkmf.rb (timestamp_file): gather timestamp files in one
+ directory from each extension directories.
- * version 0.99.3-961118
+Sat Apr 13 21:09:02 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * string.c (str_sub_s): ¸µ¤Îʸ»úÎó¤òÃÖ´¹¤¹¤ë¤Î¤ò»ß¤á¤¿
+ * lib/mkmf.rb (MakeMakefile#create_makefile): output new macro
+ disthdrdir to specify the path of id.h, parse.h and etc.
- * pack.c (encodes): Îΰ賰¤ò¥¢¥¯¥»¥¹¤·¤Æ¤¤¤¿
+ * ext/ripper/depend: use above macro.
-Fri Nov 15 17:10:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 13 20:28:08 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * bignum.c (big_divmod): Bignum¤¬°ú¿ô¤Î¾ì¹ç¤ÎÂбþ˺¤ì
+ * Merge Onigmo 5.13.4 f22cf2e566712cace60d17f84d63119d7c5764ee.
+ [bug] fix problem with optimization of \z (Issue #16) [Bug #8210]
- * sample/ruby-mode.el (ruby-expr-beg): word?·Á¼°¤Ø¤ÎÂбþ¤¬ÉÔ´°Á´
+Sat Apr 13 18:56:15 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Nov 13 15:42:40 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/ripper/depend: parse.h and id.h may be created on topdir.
- * string.c (str_tr_s_bang): tr_s¤Çtr¤¬¹Ô¤ï¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿
+Sat Apr 13 12:08:16 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * eval.c (rb_eval): autoload¥¯¥é¥¹¤Î¥Á¥§¥Ã¥¯
+ * lib/matrix.rb: Add Vector#cross_product, patch by Luis Ezcurdia
+ [fix GH-276] [rubyspec:81eec89a124]
- * string.c (f_sub): sub¤¬sub!¤ÈƱ¤¸Æ°ºî¤Ë¤Ê¤Ã¤Æ¤¤¤¿
+Sat Apr 13 10:20:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (thread_sleep): stop¤Èsleep¤ÎʬΥ
+ * struct.c (rb_struct_define_without_accessor, rb_struct_define),
+ (rb_struct_s_def): hide member names array.
-Mon Nov 11 13:53:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * struct.c (anonymous_struct, new_struct, setup_struct): split
+ make_struct() for each purpose.
- * version 0.99.3-961111
+Sat Apr 13 09:34:31 2013 Tanaka Akira <akr@fsij.org>
- * numeric.c (fix_step): to, step¤¬À°¿ô°Ê³°¤Î¾ì¹ç¤ËÂбþ
+ * lib/mkmf.rb: Add ruby/ruby.h, ruby/missing.h, ruby/intern.h,
+ ruby/st.h and ruby/subst.h for ruby_headers in generated Makefile.
- * eval.c (rb_call): dynamic var¤¬dynamic scoping¤Ë¤Ê¤Ã¤Æ¤¤¤¿(¤³¤ì
- ¤Ï¤Þ¤º¤¤)
+ * ext/-test-/old_thread_select/depend: Update dependencies.
- * string.c (str_chop_bang): Ťµ0¤Îʸ»úÎó¤Îchop¤Ç¡¤Îΰ賰¤Î¥¢¥¯¥»
- ¥¹¤¬È¯À¸¤·¤Æ¤¤¤¿¡¥
+ * ext/-test-/wait_for_single_fd/depend: Ditto.
- * parse.y (yyerror): ³ä¤êÅö¤Æ¤¿Îΰ賰¤ò¥¢¥¯¥»¥¹¤·¤Æ¤¤¤¿
+ * ext/bigdecimal/depend: Ditto.
-Fri Nov 8 11:54:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/curses/depend: Ditto.
- * eval.c (thread_yield): scope¤òheap¤Ë¥³¥Ô¡¼
+ * ext/digest/bubblebabble/depend: Ditto.
-Thu Nov 7 09:56:53 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/digest/depend: Ditto.
- * numeric.c (num_coerce): ¤È¤ê¤¢¤¨¤ºÎ¾ÊÕ¤òFloat¤ËÊÑ´¹¤¹¤ë¤³¤È¤Ë
+ * ext/digest/md5/depend: Ditto.
-Wed Nov 6 10:45:13 1996 Yasuo OHBA <jammy@shljapan.co.jp>
+ * ext/digest/rmd160/depend: Ditto.
- * lib/parsearg.rb: Âè2°ú¿ô¤òÊѹ¹¡¥
+ * ext/digest/sha1/depend: Ditto.
-Tue Nov 5 14:21:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/digest/sha2/depend: Ditto.
- * version 0.99.3-961105
+ * ext/dl/callback/depend: Ditto.
-Sat Nov 2 01:11:40 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/dl/depend: Ditto.
- * bignum.c (big_pow): typo (dy -> dx)
+ * ext/etc/depend: Ditto.
- * bignum.c (big_divmod): ÃΤé¤Ê¤¤·¿¤Ïfloat¤ËÊÑ´¹¤·¤Æ¤ß¤ë
+ * ext/nkf/depend: Ditto.
- * numeric.c (fix_lshift): ¶­³¦¾ò·ï¤Î¥Ð¥°(Éé¤Ë¤Ê¤Ã¤Æ¤¤¤¿)
+ * ext/objspace/depend: Ditto.
- * bignum.c (big_pow): ̵Â̤Êfloat¤Ø¤ÎÊÑ´¹¤ò¤Ê¤¯¤·¤¿
+ * ext/pty/depend: Ditto.
- * math.c (math_atan2): typo(x -> y)
+ * ext/readline/depend: Ditto.
-Fri Nov 1 15:30:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/ripper/depend: Ditto.
- * ext/socket/socket.c (sock_gethostname): gethostname¤¬¤Ê¤¤»þ¤Ë¤Ï
- uname¤ò»È¤Ã¤Æ¥Û¥¹¥È̾¤òÆÀ¤ë
+ * ext/sdbm/depend: Ditto.
- * ext/etc/etc.c (etc_getlogin): getlogin¤¬NULL¤òÊÖ¤·¤Æ¤â´Ä¶­ÊÑ¿ô¤ò
- Ä´¤Ù¤ë¤è¤¦¤Ë
+ * ext/socket/depend: Ditto.
- * object.c (krn_clone): ¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Õ¥é¥°¤â¥³¥Ô¡¼
+ * ext/stringio/depend: Ditto.
- * hash.c (rb_cmp): ¥Ï¥Ã¥·¥å¤ÎÈæ³Ó¤ò`=='¤Ç¤Ê¤¯`eql?'¤ËÊѹ¹
+ * ext/strscan/depend: Ditto.
- * math.c (Need_Float): Float()¤ò»È¤Ã¤ÆÊÑ´¹¤¹¤ë
+ * ext/syslog/depend: Ditto.
- * compar.c (cmp_gt): °ÊÁ°¤Î±¦ÊÕ¤òÊÖ¤¹»ÅÍͤÎ̾»Ä¤¬»Ä¤Ã¤Æ¤¤¤¿
+ * ext/-test-/num2int/depend: Removed.
-Thu Oct 31 12:55:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/dbm/depend: Ditto.
- * version 0.99.3-961031
+ * ext/fcntl/depend: Ditto.
- * numeric.c (Init_Numeric): typo
+ * ext/gdbm/depend: Ditto.
- * eval.c (error_print): Ť¹¤®¤ëtrace back¤òÅÓÃæ¾Êά¤¹¤ë
+ * ext/racc/cparse/depend: Ditto.
- * regex.c (re_compile_pattern): Á´³Ñ¤Îrange¤ËÂбþ
+Sat Apr 13 00:15:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Oct 30 03:03:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/etc/etc.c (Init_etc): move Passwd and Group under Etc namespace
+ as primary names.
- * version 0.99.3-961030
+Fri Apr 12 21:06:55 2013 Tanaka Akira <akr@fsij.org>
- * io.c (f_ungetc): ´Ø¿ô¤òÄɲÃ
+ * common.mk: pack.o depends on internal.h.
- * eval.c (dyna_var_asgn): returnÃÍ˺¤ì
+Fri Apr 12 20:59:24 2013 Tanaka Akira <akr@fsij.org>
-Tue Oct 29 10:05:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * bignum.c (ones): Use __builtin_popcountl if available.
- * string.c (f_split): ´Ø¿ôsplit¤òÄɲÃ
+ * internal.h (GCC_VERSION_SINCE): Macro moved from pack.c.
- * eval.c (rb_call): ¥Í¥¹¥È¤·¤¿³°Â¦¤Î¥¯¥é¥¹/¥â¥¸¥å¡¼¥ë¤ÎÄê¿ô¤ò»²¾È
- ¤Ç¤­¤ë¤è¤¦¤Ë
+ * pack.c: Include internal.h for GCC_VERSION_SINCE.
-Mon Oct 28 09:51:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Apr 12 18:29:42 2013 Tanaka Akira <akr@fsij.org>
- * string.c (str_sub): offset¤¬Ê¸»ú¤ÎËöÈø¤Ë¤¢¤ë»þ¤Î¥Á¥§¥Ã¥¯
+ * common.mk: version.o depends on $(srcdir)/include/ruby/version.h
+ instead of {$(VPATH)}version.h to avoid confusion by VPATH between
+ top level version.h and include/ruby/version.h for build in-place.
+ [ruby-dev:47249] [Bug #8256]
- * regex.c (re_match): ³ä¤êÅö¤Æ¤ë¥ì¥¸¥¹¥¿¤Î¿ô¤¬1¿¤«¤Ã¤¿
+Fri Apr 12 15:21:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (io_gets): $/ = ""¤Îưºî¤òperl¤Ë¹ç¤ï¤»¤ë(awk¤È¤Ï¤Á¤ç¤Ã¤È°ã
- ¤¦¤é¤·¤¤)
+ * vm_insnhelper.c (vm_callee_setup_keyword_arg): non-symbol key is not
+ a keyword argument, keep it as a positional argument.
- * io.c (io_gets): $/ = nil¤Î»þ¾¯¤·¹â®²½
+Fri Apr 12 11:58:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * string.c (str_split_method): ³ç¸Ì¤¬null¤Ë¥Þ¥Ã¥Á¤·¤¿»þ¤Ë¤â̵»ë¤·
- ¤Ê¤¤¤è¤¦¤Ë
+ * array.c: Document synonymous methods, by windwiny [GH-277]
+ * bignum.c: ditto
+ * complex.c: ditto
+ * dir.c: ditto
+ * encoding.c: ditto
+ * enumerator.c: ditto
+ * numeric.c: ditto
+ * proc.c: ditto
+ * re.c: ditto
+ * string.c: ditto
- * string.c (str_split_method): ³ç¸Ì¤Ë¥Þ¥Ã¥Á¤·¤¿Ê¬¤Ïlimit¤Î¿ô¤Ë´Þ¤á
- ¤Ê¤¤¤è¤¦¤Ë¡¥
+Thu Apr 11 23:41:46 2013 Tanaka Akira <akr@fsij.org>
- * numeric.c (num_coerce_bin): coerce¤ÎÄêµÁ¤òÊѹ¹¡¤2Í×ÁǤÎÇÛÎó
- [x,y]¤òÊÖ¤¹¤è¤¦¤Ë
+ * common.mk: Add dependencies for include/ruby.h
- * sample/ruby-mode.el (ruby-calculate-indent): "do |aa|"¤ÎÂбþ¤ò²þ
- Á±¤·¤¿¡¥
+ * tool/update-deps: Use "make -p all miniruby ruby golf" to extract
+ dependencies in makefiles.
-Sat Oct 26 01:43:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 11 23:21:17 2013 Tanaka Akira <akr@fsij.org>
- * ext/marshal/marshal.c (w_object): ¥Ó¥ë¥È¥¤¥ó¥¯¥é¥¹¤Î¥µ¥Ö¥¯¥é¥¹¤ò
- Àµ¤·¤¯Éüµì¤Ç¤­¤ë¤è¤¦¤Ë
+ * tool/update-deps: Use "make -p all golf" to extract dependencies in
+ makefiles.
- * ext/marshal/marshal.c (w_object): ¥æ¡¼¥¶ÄêµÁdump¤ÎÍ¥Àè
+Thu Apr 11 21:02:19 2013 Tanaka Akira <akr@fsij.org>
- * numeric.c (flo_coerce): Float()¤ò»È¤Ã¤ÆÄêµÁ
+ * common.mk: Dependency updated.
- * numeric.c (Init_Numeric): Numeric¤Înew¤Îundef¤Ï¤Þ¤º¤¤
+ * tool/update-deps: Rewritten.
- * ext/marshal/marshal.c (w_symbol): ¥·¥ó¥Ü¥ë¤ÎÆâÍÆ(ʸ»úÎó)¤Ï°ìÅÙ¤·
- ¤«¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤µ¤Ê¤¤¡¥
+Thu Apr 11 19:59:48 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * sample/ruby-mode.el (ruby-parse-region): if/while½¤¾þ»Ò¤ËÂбþ¤·
- ¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿
+ * common.mk: partially revert r40183, which breaks building on
+ other than source directory. (its commit log also says the same
+ thing, but such failure is not reproducible on my environment
+ and the commit breaks build on my environment)
- * bignum.c (Init_Bignum): Bignum.new¤ò½ü¤¯
+Thu Apr 11 16:10:01 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * eval.c (rb_eval): °ú¿ôɾ²Á¸å¤Ë¥Õ¥¡¥¤¥ë̾¤È¹ÔÈÖ¹æ¤òºÆÀßÄê
+ * ext/fiddle/closure.c (USE_FFI_CLOSURE_ALLOC): define 0 on
+ Mac OS X and Linux [Bug #3371]
- * numeric.c (flo_div): typo
+Thu Apr 11 13:19:22 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * sample/ruby-mode.el (ruby-parse-region): def /, def `¤ËÂбþ
+ * test/drb/drbtest.rb (Drb{Core,Ary}#teardown): retry Process.kill
+ if it fails with Errno::EPERM on Windows (workaround).
+ [ruby-dev:47245] [Bug #8251]
-Fri Oct 25 09:26:29 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 11 11:11:38 2013 Akinori MUSHA <knu@iDaemons.org>
- * sample/ruby-mode.el (ruby-calculate-indent): "do |aa|"¤ËÂбþ
+ * dir.c: Fix a typo.
- * array.c (ary_aset): index¤¬fixnum¤Î¾ì¹ç¤Á¤ç¤Ã¤È¹â®²½
+Thu Apr 11 10:39:34 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * eval.c (thread_fd_writable): ½ñ¤­¹þ¤ßÁ°¤Îselect¥Á¥§¥Ã¥¯
+ * ext/fiddle/closure.c (USE_FFI_CLOSURE_ALLOC): add missing case:
+ RUBY_LIBFFI_MODVERSION is not defined (usually on Windows).
- * array.c (ary_assoc): ̵¸Â¥ë¡¼¥×¤ËÍî¤Á¤¿
+Thu Apr 11 09:27:04 2013 Konstantin Haase <me@rkh.im>
- * eval.c (thread_wait_for): select¤¬¥¨¥é¡¼½ªÎ»¤·¤¿»þ¡¤linux°Ê³°¤Ç
- ¤Îưºî¤¬Àµ¤·¤¯¤Ê¤«¤Ã¤¿¡¥
+ * dir.c (file_s_fnmatch): Document File::FNM_EXTGLOB flag.
-Thu Oct 24 08:26:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 11 09:17:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c (backtrace): `$@'¤òʸ»úÎ󤫤éÇÛÎó¤ËÊѹ¹¤·¤¿¡¥
+ * README: Fix typo by Benjamin Winkler [Fixes GH-281]
- * eval.c (eval): evalÃæ¤ÎÎ㳰ȯÀ¸°ÌÃÖ¤òÊݸ¤¹¤ë
+Thu Apr 11 06:15:51 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * bignum.c (bigsub): ¥ª¥Ú¥é¥ó¥É¤ÎÂç¾®Èæ³Ó¤Î¼ºÇÔ
+ * regint.h: fix typo: _M_AMD86 -> _M_AMD64.
- * re.c (reg_search): ľÀÜ»²¾È¤¬¤Ê¤¤»þ¤Ë¤â`$~'¤¬¥»¥Ã¥È¤µ¤ì¤ë¤è¤¦¤Ë
+ * siphash.c: ditto.
-Wed Oct 23 10:40:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * st.c: ditto.
- * version 0.99.2-961023
+Thu Apr 11 06:09:57 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/marshal/marshal.c (r_bytes): malloc¤ò¤ä¤á¡¤alloca¤ò»È¤¦
+ * ext/fiddle/extconf.rb: define RUBY_LIBFFI_MODVERSION macro.
- * sample/ruby-mode.el (ruby-calculate-indent): ³ç¸Ì¤ÎÂбþ¤òÊѹ¹¡¥
- ()Æâ¤Ç¤Ï¥¤¥ó¥Ç¥ó¥È¤ò¥ì¥Ù¥ë¤ò¹ç¤ï¤»¤ë¤è¤¦¤Ë
+ * ext/fiddle/closure.c (USE_FFI_CLOSURE_ALLOC): define 0 or 1
+ with platform and libffi's version. [Bug #3371]
-Tue Oct 22 12:59:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 11 05:30:43 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * hash.c (hash_s_new): size¤ò»ØÄê¤Ç¤­¤ë¤è¤¦¤Ë
+ * lib/mkmf.rb (pkg_config): Add optional argument "option".
+ If it is given, it returns the result of
+ `pkg-config --<option> <pkgname>`.
- * ext/marshal/marshal.c (w_object): dump¤¹¤ë¿¼¤µÀ©¸Â¤ò»ØÄê¤Ç¤­¤ë¤è
- ¤¦¤Ë
+Thu Apr 11 03:33:05 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * array.c (ary_s_new): size¤ò»ØÄꤷ¤¿»þ¤Î½é´ü²½Ëº¤ì
+ * ext/fiddle/closure.c (initialize): check mprotect's return value.
+ If mprotect is failed because of PaX or something, its function call
+ will cause SEGV.
+ http://c5664.rubyci.org/~chkbuild/ruby-trunk/log/20130401T210301Z.diff.html.gz
- * object.c (f_float): big2dbl¤ÎÀë¸À˺¤ì¡¥
+Wed Apr 10 17:39:13 2013 Tanaka Akira <akr@fsij.org>
- * bignum.c (bigsub): Â礭¤µ¤Î¶á¤¤BignumƱ»Î¤Î±é»»¤Ç·ë²Ì¤¬Éé¤Ë¤Ê¤ë
- ¾ì¹ç¤Ë´Ö°ã¤¤¤¬¤¢¤Ã¤¿¡¥
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): Initialize a local variable
+ even when overflow.
- * array.c (ary_aset): ÃÖ´¹Àè¤ÈÃÖ´¹¸µ¤¬Æ±¤¸Ä¹¤µ¤Î»þÆâÍÆ¤ò
- shift(memmove)¤·¤Ê¤¤¤è¤¦¤Ë¡¥
+Wed Apr 10 12:32:37 2013 Tanaka Akira <akr@fsij.org>
- * ext/marshal/marshal.c (marshal_dump): ¥Õ¥¡¥¤¥ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¥Ð¡¼
- ¥¸¥ç¥ó¤òËä¤á¹þ¤à¤è¤¦¤Ë
+ * bignum.c (rb_ll2big): Don't overflow on signed integer negation.
- * ext/marshal/marshal.c (tmpnam): linux-aout-dlnÍѤËÄêµÁ
+ * ext/bigdecimal/bigdecimal.c (MUL_OVERFLOW_SIGNED_VALUE_P): New
+ macro.
+ (AddExponent): Don't overflow on signed integer multiplication.
+ (VpCtoV): Don't overflow on signed integer arithmetic.
+ (VpCtoV): Don't overflow on signed integer arithmetic.
-Mon Oct 21 08:40:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Apr 10 06:32:12 2013 Tanaka Akira <akr@fsij.org>
- * ext/socket/socket.c (sock_s_gethostbyname): hostent¹½Â¤ÂΤξðÊó
- ¤òÊÖ¤¹
- (sock_s_gethostbyaddr): IP¥¢¥É¥ì¥¹¤«¤éhostent¹½Â¤ÂΤòÆÀ¤ë
- (sock_s_getservbyaname): getservbyname(3)
+ * internal.h (MUL_OVERFLOW_INT_P): New macro.
-Fri Oct 18 10:37:36 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * sprintf.c (GETNUM): Don't overflow on signed integer multiplication.
- * sample/ruby-mode.el (ruby-indent-to): °ÜưÀ襫¥é¥à¤¬Éé¤Ë¤Ê¤ë¥Ð¥°
+Tue Apr 9 20:38:20 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (compile): eval¤Ç¸µ¥½¡¼¥¹¤Î¹ÔÈÖ¹æ¤Ç¥¨¥é¡¼¤òɽ¼¨¤¹¤ë
+ * internal.h (MUL_OVERFLOW_SIGNED_INTEGER_P): New macro.
+ (MUL_OVERFLOW_FIXNUM_P): Ditto.
+ (MUL_OVERFLOW_LONG_P): Ditto.
-Thu Oct 17 09:52:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * array.c (rb_ary_product): Don't overflow on signed integer
+ multiplication.
- * eval.c (eval): eval¤Çʸˡ¥¨¥é¡¼¤¬¤¢¤Ã¤¿»þ¤ËSEGV
+ * numeric.c (fix_mul): Ditto.
+ (int_pow): Ditto.
- * lib/safe.rb: Restricted.eval¤ÎÃæ¤À¤±À©¸Â¤ò²Ã¤¨¤ë¡¥
+ * rational.c (f_imul): Ditto.
- * eval.c (error_print): ¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤Î½ÐÎÏ¡¥caller¤ÇÎ㳰ȯÀ¸°ÌÃÖ
- ¤òÄ´À°¤·¤¿»þ¤ËÌäÂ꤬½Ð¤ë(¤½¤ó¤Ê¤³¤È¤ò¤·¤Ê¤±¤ì¤ÐÎɤ¤¤Î¤À¤¬¡Ä)
+ * insns.def (opt_mult): Ditto.
- * eval.c (make_backtrace): ¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤ÎÀ¸À®
+ * thread.c (sleep_timeval): Don't overflow on signed integer addition.
-Wed Oct 16 12:56:22 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * bignum.c (rb_int2big): Don't overflow on signed integer negation.
+ (rb_big2ulong): Ditto.
+ (rb_big2long): Ditto.
+ (rb_big2ull): Ditto.
+ (rb_big2ll): Ditto.
- * ruby-man-0.99.2-jp/index.html: ÆüËܸìÈǥɥ­¥å¥á¥ó¥È¤Î´°À®(Ť«¤Ã¤¿¡Ä)
+Tue Apr 9 19:45:44 2013 Tanaka Akira <akr@fsij.org>
- * re.c (reg_regcomp): $=¤¬nil¤Î»þ¤Î½èÍý
+ * lib/open-uri.rb: Support multiple fields with same field
+ name (like Set-Cookie).
+ (OpenURI::Meta#metas): New accessor to obtain fields as a Hash from
+ field name (string) to field values (array of strings).
+ [ruby-core:37734] [Bug #4964] reported by ren li.
- * string.c (f_chop): $_¤ËÂФ¹¤ëchop
+Tue Apr 9 15:26:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 15 11:04:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * compile.c (iseq_compile_each): append keyword hash to argument array
+ to splat if needed. [ruby-core:54094] [Bug #8236]
- * version 0.99.2-961015
+Tue Apr 9 10:02:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Oct 14 18:22:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/mkmf.rb (timestamp_file): gather timestamp files in one
+ directory from each extension directories, with considering
+ target_prefix.
- * eval.c (thread_schedule): BOWÂбþ¡¥select¤¬-1¤òÊÖ¤·¤¿»þ¤Ë¥Ð¥°(¼Â
- ¤Ïdo .. while¤¬continue¤ÇÀèÆ¬¤Ë¥¸¥ã¥ó¥×¤¹¤ë¤È»×¤¤¹þ¤ó¤Ç¤¤¤¿¡¥¾ò
- ·ï¤ÎľÁ°¤À¤Ã¤¿¤Î¤Í ^^);;;;;
+Tue Apr 9 04:57:59 JST 2013 Charles Oliver Nutter <headius@headius.com>
- * sample/ruby-mode.el (ruby-mode-syntax-table): ?¤Îsyntax¤¬"/"¤Ç¤Ï
- ¤Þ¤º¤¤¤é¤·¤¤
+ * error.c: Capture EAGAIN, EWOULDBLOCK, EINPROGRESS exceptions and
+ export them for use in WaitReadable/Writable exceptions.
+ * io.c: Create versions of EAGAIN, EWOULDBLOCK, EINPROGRESS that
+ include WaitReadable and WaitWritable. Add rb_readwrite_sys_fail
+ for nonblocking failures using those exceptions. Use that
+ function in io_getpartial and io_write_nonblock instead of
+ rb_mod_sys_fail
+ * ext/openssl/ossl_ssl.c: Add new SSLError subclasses that include
+ WaitReadable and WaitWritable. Use those classes for
+ write_would_block and read_would_block instead of rb_mod_sys_fail.
+ * ext/socket/ancdata.c: Use rb_readwrite_sys_fail instead of
+ rb_mod_sys_fail in bsock_sendmsg_internal and
+ bsock_recvmsg_internal.
+ * ext/socket/init.c: Use rb_readwrite_sys_fail instead of
+ rb_mod_sys_fail in rsock_s_recvfrom_nonblock and
+ rsock_s_connect_nonblock.
+ * ext/socket/socket.c: Use rb_readwrite_sys_fail instead of
+ rb_mod_sys_fail in sock_connect_nonblock.
+ * include/ruby/ruby.h: Export rb_readwrite_sys_fail for use instead
+ of rb_mod_sys_fail. Introduce new constants RB_IO_WAIT_READABLE and
+ RB_IO_WAIT_WRITABLE for first arg to rb_readwrite_sys_fail.
- * hash.c (rb_hash): name conflict
+Tue Apr 9 02:44:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Oct 11 00:23:05 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/extconf.rb: $defs needs -D or -U. nothing is added
+ otherwize.
- * version 0.99.2-961011
+ * ext/socket/extconf.rb: check struct in_addr6, which is defined in
+ VC6 instead of in6_addr.
- * ext/marshal/marshal.c (w_object): ·ë¶Éư¤¤¤Æ¤¤¤Ê¤«¤Ã¤¿½Û´Ä¥ª¥Ö¥¸¥§
- ¥¯¥ÈÂбþ¤ò³°¤·¤¿¡¥
+ * ext/socket/option.c (optname_to_sym): fix macro name.
- * hash.c (rb_hash): Fixnum¤Èʸ»úÎó¤Î¹â®²½
+ * ext/socket/constants.c (rsock_cmsg_type_arg): fix macro name.
- * ext/marshal/marshal.c (w_object): ̵Â̤ʥǡ¼¥¿¤Îºï½ü(¥Õ¥©¡¼¥Þ¥Ã
- ¥È¤ÎÈó¸ß´¹À­)
+Mon Apr 8 23:57:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (io_readline): Ìá¤êÃͤÎÉÔÈ÷
+ * object.c (id_for_setter): extract common code from const, class
+ variable, instance variable setters.
- * ext/marshal/marshal.c (marshal_dumps): MSDOSÂбþ
+Mon Apr 8 23:55:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ruby.c (load_file): MSDOSÂбþ
+ * ext/depend (ENCOBJS, TRANSOBJS): use explicit path to ruby.h for
+ nmake.
-Wed Oct 9 17:46:27 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/depend (ENCOBJS, TRANSOBJS): fix header dependency, VPATH has
+ $(srcdir)/include/ruby but not $(srcdir)/include, so cannot find out
+ ruby/ruby.h. use ruby.h instead and ../ruby for include/ruby.h.
- * ext/extmk.rb.in (install): ̵Â̤ʥ³¥Ô¡¼¤òÈò¤±¤ë
+Mon Apr 8 20:30:37 2013 Yuki Yugui Sonoda <yugui@google.com>
- * string.c (str_sub_method): ¥Þ¥Ã¥Á¤¬¤Ê¤«¤Ã¤¿»þ¤ÎString#sub¤ÎÃͤ¬
- °ã¤Ã¤Æ¤¤¤¿¡¥
+ * ext/depend (ENCOBJS, TRANSOBJS): Add missing dependencies.
- * eval.c (obj_extend): extend¤·¤¿»þ¤Ëobject_extended¤ò¸Æ¤Ö¤è¤¦¤Ë
+Mon Apr 8 17:19:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 8 00:55:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/win32ole/win32ole.c (fole_missing): should check actual argument
+ count before accessing.
- * eval.c (thread_alloc): ³äÅö¤ÎÊ¿¶Ñ²½
+Mon Apr 8 16:03:55 2013 Yuki Yugui Sonoda <yugui@google.com>
- * eval.c (thread_schedule): join¤Î¥Ð¥°¤ò½¤Àµ
+ Fixes a build failure of ext/ripper/ripper.c on building out of place.
+ * common.mk (id.h, id.c): Always generated in $(srcdir).
+ (ext/ripper/ripper.c): Passes $(PATH_SEPARATOR) too to the sub make.
- * eval.c (thread_wait_for): select¤Ø¤Î³ä¹þ¤ß¤Ê¤É¤ËÂбþ
+Mon Apr 8 12:05:02 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * eval.c (thread_select): linux¤Îselect¤Îµóư¤ËÂбþ(timeout¤¬ÊѲ½
- ¤¹¤ë)
+ * object.c (rb_obj_ivar_set): call to_str for string only once.
+ to_str was called from rb_is_const_name and rb_to_id before.
-Mon Oct 7 09:47:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * object.c (rb_mod_const_set): ditto.
- * version 0.99.2-961007
+ * object.c (rb_mod_cvar_set): ditto.
- * eval.c (PUSH_BLOCK): the_class¤ÎÊݸ¤ò˺¤ì¤Æ¤¤¤¿¡¥
+Sun Apr 7 13:56:16 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * ext/dbm/dbm.c (fdbm_store): size¤ÎÊݸ¤¹¤ë¾ì½ê¤¬´Ö°ã¤Ã¤Æ¤¤¤¿
+ * test/ruby/test_require.rb (TestRequire#test_require_nonascii_path):
+ RUBY_PLATFORM should escape as Regexp,
+ because RUBY_PLATFORM may contain '.'.
- * ext/socket/socket.c (s_accept): threadÂбþ¤·¤Æ¤¤¤Ê¤«¤Ã¤¿
+Sun Apr 7 10:44:01 2013 Tanaka Akira <akr@fsij.org>
-Sat Oct 5 01:32:27 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * include/ruby/defines.h: Simplify the logic to include sys/select.h.
+ This fixes a compilation error on Haiku (gcc2 and gcc4).
- * io.c (io_readchar): EOF¤ÇÎã³°¤òȯÀ¸¤µ¤»¤ë
+ * configure.in: Use shared linker as $(CC) for Haiku.
+ This fixes a build error on Haiku (gcc2).
-Fri Oct 4 11:59:54 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Apr 7 10:41:30 2013 Tanaka Akira <akr@fsij.org>
- * ext/marshal/marshal.c (w_object): Hash¤ÈObject¤ÎÉüµì¤ËɬÍפʥϥÃ
- ¥·¥å¥Æ¡¼¥Ö¥ë¤¬ÅϤµ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡¥
+ * lib/resolv.rb (MDNSOneShot#sender): Delete an unused variable.
- * variable.c (rb_path2class): ¥æ¡¼¥¶ÄêµÁ¥¯¥é¥¹¤ÎÉüµì¤Ë¼ºÇÔ¤·¤Æ¤¤¤¿
+Sun Apr 7 03:24:36 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * variable.c (rb_path2class): ¥¯¥é¥¹¤¬Â¸ºß¤·¤Ê¤¤»þ¤Î¥¨¥é¡¼¤òFatal
- ¤«¤éNameError¤Ø¡¥
+ * addr2line.c: use more generic type:
+ * u_char -> unsigned char
+ * u_short -> unsigned short
+ * u_int -> unsigned int
+ * u_long -> unsigned long
+ * quad_t -> int64_t
+ * u_quad_t -> uint64_t
- * range.c (range_s_new): first,last¤¬Î¾ÊýNumeric¤Î»þ¥¨¥é¡¼¤Ë¤Ê¤Ã¤Æ
- ¤¤¤¿¡¥
+ * addr2line.c (imax): inline is defined by configure.
- * range.c: start->first, end->last
+Sun Apr 7 01:40:39 2013 Akinori MUSHA <knu@iDaemons.org>
-Wed Oct 2 02:02:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * misc/ruby-electric.el (ruby-electric-hash): New electric
+ function that expands a hash sign inside a string or regexp to
+ "#{}".
- * file.c: DJGPP¤Çchmod,chown¤ò»È¤¨¤ë¤è¤¦¤Ë(¤Ã¤ÆDOS¤Ëchown¤¬¤¢¤ë¤Î¤«?)
+ * misc/ruby-electric.el (ruby-electric-curlies): Do not insert
+ spaces inside when the curly brace is a delimiter of %r, %w,
+ etc.
- * class.c (rb_singleton_class): ¥Ó¥ë¥È¥¤¥ó¥¯¥é¥¹¤âextend¤·¤¿¤êÆÃ°Û
- ¥á¥½¥Ã¥É¤òÄɲä·¤¿¤ê¤Ç¤­¤ë¤è¤¦¤Ë
+ * misc/ruby-electric.el (ruby-electric-curlies): Insert another
+ space before a closing curly brace when
+ ruby-electric-newline-before-closing-bracket is nil.
- * variable.c (rb_set_class_path): ¥æ¡¼¥¶ÄêµÁ¤Î¥È¥Ã¥×¥ì¥Ù¥ë¥¯¥é¥¹¤Ë
- path¤òÀßÄꤷ¤Ê¤¤
+Sun Apr 7 01:01:26 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (eval): Îã³°¤¬RuntimeError¤Ë²½¤±¤Æ¤¤¤¿
+ * strftime.c (rb_strftime_with_timespec): Test yday range.
+ [ruby-core:44088] [Bug #6247] reported by Ruby Submit.
- * eval.c (eval): evalÃæ¤ÎÎã³°¤Îɽ¸½¤Î²þÁ±
+Sat Apr 6 23:46:54 2013 Naohisa Goto <ngotogenome@gmail.com>
- * eval.c (eval): eval_with_binding¤È¤Î°ìËܲ½
+ * configure.in (AC_CHECK_HEADERS): atomic.h for Solaris atomic_ops.
- * eval.c (rb_eval): ¥¯¥é¥¹/¥â¥¸¥å¡¼¥ëÄêµÁ¤ÎÃæ¤«¤éÄêµÁÃæ¤Î¥¯¥é¥¹/¥â
- ¥¸¥å¡¼¥ë¤¬»²¾È¤Ç¤­¤ë¤è¤¦¤Ë
+ * ruby_atomic.h: Skip using Solaris10 atomic_ops on Solaris 9 or
+ earlier if atomic.h is not available. [ruby-dev:47229] [Bug #8228]
-Tue Oct 1 01:40:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 6 23:40:40 2013 Tanaka Akira <akr@fsij.org>
- * version 0.99.2-961001
+ * lib/resolv.rb: Support LOC resources.
+ [ruby-core:23361] [Feature #1436] by JB Smith.
- * parse.y: cur_cref¤¬2ÅÙÀë¸À¤µ¤ì¤Æ¤¤¤¿
+Sat Apr 6 23:38:09 2013 Naohisa Goto <ngotogenome@gmail.com>
- * signal.c (trap): SIGSEGV¡¤SIGBUS¤Î¤Ê¤¤µ¡¼ï¤ËÂбþ
+ * addr2line.c: quad_t and u_quad_t is not available on Solaris.
+ __inline is not available with old compilers on Solaris.
+ [ruby-dev:47229] [Bug #8227]
- * io.c (Init_IO): °ú¿ô¥¿¥¤¥×¤Î»ØÄê´Ö°ã¤¤
+Sat Apr 6 23:31:38 2013 Tanaka Akira <akr@fsij.org>
-Mon Sep 30 15:28:00 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/resolv.rb: Add one-shot multicast DNS support.
+ [ruby-core:53387] [Feature #8089] by Eric Hodel.
- * version 0.99.2-960930
+Sat Apr 6 22:12:01 2013 Tanaka Akira <akr@fsij.org>
- * config.guess,config.sub: $host_os¤¬Àµ¤·¤¯ÀßÄꤵ¤ì¤Ê¤¤
+ * lib/resolv.rb (Resolv::DNS.fetch_resource): New method to obtain
+ full result.
+ [ruby-dev:43587] [Feature #4788] proposed by Makoto Kishimoto.
- * eval.c (rb_eval): yield¤ÇÀµ¤·¤¯¤Ê¤¤self¤¬ÀßÄꤵ¤ì¤Æ¤¤¤¿
+Sat Apr 6 20:17:51 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (ruby_run): toplevel¤ÎÎã³°½èÍý¤Î¥Ð¥°
-
-Mon Sep 30 09:13:26 1996 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+ * ext/socket/socket.c (rsock_sys_fail_raddrinfo): Renamed from
+ rsock_sys_fail_addrinfo.
+ (rsock_sys_fail_raddrinfo_or_sockaddr): Renamed from
+ rsock_sys_fail_addrinfo_or_sockaddr.
- * djgppÂбþ
+ * ext/socket/rubysocket.h: Follow the above change.
-Sat Sep 28 02:45:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 6 19:24:59 2013 Tanaka Akira <akr@fsij.org>
- * version 0.99.2-960928
+ * ext/socket/socket.c (rsock_sys_fail_sockaddr): Takes struct sockaddr
+ and socklen_t instead of String object.
+ (rsock_sys_fail_addrinfo_or_sockaddr): Follow the above change.
- * sample/ruby-mode.el (ruby-beginning-of-block): ¥Ö¥í¥Ã¥¯¤ÎÀèÆ¬¤Ë
- °Üư(Àµ¤·¤¯¥¤¥ó¥Ç¥ó¥È¤·¤Æ¤¤¤Ê¤¤¤Èưºî¤·¤Ê¤¤)
- (ruby-end-of-block): Ʊ¾å
+ * ext/socket/rubysocket.h (rsock_sys_fail_sockaddr): Follow the above
+ change.
- * eval.c (class_s_new): Class#new¤¬¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤Ð¤ì¤¿»þ¤Ï
- initialize¤â¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤Ð¤ì¤ë¤è¤¦¤Ë
+Sat Apr 6 14:28:23 2013 Tanaka Akira <akr@fsij.org>
- * signal.c (sigsegv): SEGV¤Çbacktrace¤òɽ¼¨¤¹¤ë¤è¤¦¤Ë
+ * ext/socket/rubysocket.h (SockAddrStringValueWithAddrinfo): New macro.
+ (rsock_sockaddr_string_value_with_addrinfo): New declaration.
+ (rsock_addrinfo_inspect_sockaddr): Ditto.
+ (rsock_sys_fail_addrinfo): Ditto.
+ (rsock_sys_fail_sockaddr_or_addrinfo): Ditto.
-Fri Sep 27 09:51:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/raddrinfo.c (rsock_addrinfo_inspect_sockaddr): Renamed
+ from addrinfo_inspect_sockaddr and exported.
+ (rsock_sockaddr_string_value_with_addrinfo): New function to obtain
+ string and possibly addrinfo object.
- * version 0.99.2-960927
+ * ext/socket/socket.c (rsock_sys_fail_sockaddr): Don't use
+ rsock_sys_fail_host_port which is IP dependent. Invoke
+ rsock_sys_fail_addrinfo.
+ (rsock_sys_fail_addrinfo): New function using
+ rsock_addrinfo_inspect_sockaddr.
+ (rsock_sys_fail_addrinfo_or_sockaddr): New function.
+ (sock_connect): Use SockAddrStringValueWithAddrinfo and
+ rsock_sys_fail_addrinfo_or_sockaddr.
+ (sock_connect_nonblock): Ditto.
+ (sock_bind): Ditto.
- * eval.c (error_print): °ú¿ô¤Î¤Ê¤¤raise¤Ç¥á¥Ã¥»¡¼¥¸¤¬Àµ¤·¤¯É½¼¨¤µ
- ¤ì¤ë¤è¤¦¤Ë¡¥
+Sat Apr 6 13:34:20 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (rb_longjmp): mesg¤¬nil¤Î»þRuntimeError¤òÀ¸À®¤¹¤ë¡¥
+ * ext/socket/socket.c (rsock_sys_fail_sockaddr): Delete 2nd argument.
- * eval.c (f_raise): °ú¿ô¤¬¤Ê¤¤»þ¤ËÂбþ
+ * ext/socket/rubysocket.h (rsock_sys_fail_sockaddr): Follow above
+ change.
- * eval.c (thread_mark): stack¾å¤Ë¤Ê¤¤¥Ç¡¼¥¿¤Î¥¢¥É¥ì¥¹ÊÑ´¹¤ò¹Ô¤Ã¤Æ
- ¤¤¤¿¡¥
+Sat Apr 6 13:13:39 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (Init_Thread): ³ä¹þ¤ß¤Î´Ö³Ö¤¬1ÉäÈŤ¹¤®¤¿¡¥
+ * ext/socket/socket.c (rsock_sys_fail_path): Use rb_str_inspect only
+ for String to avoid SEGV.
-Thu Sep 26 16:02:45 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 6 12:40:16 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (thread_schedule): °ìÅÙ¥Ú¥ó¥Ç¥£¥ó¥°¤Ë¤Ê¤ë¤È¥Õ¥é¥°¤¬¥¯¥ê¥¢
- ¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡¥
+ * ext/socket/rubysocket.h (rsock_sys_fail_host_port): Wrap by NORETURN.
+ (rsock_sys_fail_path): Ditto.
+ (rsock_sys_fail_sockaddr): Ditto.
- * process.c (rb_proc_exec): system/exec¤Î°ú¿ô¤¬¶õʸ»úÎó¤Ç¤¢¤Ã¤¿¾ì
- ¹ç¡¤Îã³°¤òȯÀ¸¤¹¤Ù¤­¤À¤Ã¤¿¡¥
+Sat Apr 6 11:49:35 2013 Tanaka Akira <akr@fsij.org>
- * config.sub/config.guess: ¿·¤·¤¤¤â¤Î¤ËÃÖ¤­´¹¤¨
+ * ext/socket/socket.c (rsock_sys_fail_path): Use rb_str_inspect if the
+ path contains a NUL.
-Thu Sep 26 15:41:35 1996 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+Sat Apr 6 11:39:19 2013 Tanaka Akira <akr@fsij.org>
- * io.c (next_argv): -i.bak¤òBOW¤ÈDOS¤ËÂбþ¡¥
+ * ext/socket: Improve socket exception message to show socket address.
+ [ruby-core:45617] [Feature #6583] proposed Eric Hodel.
-Thu Sep 26 01:31:43 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/rubysocket.h (rsock_sys_fail_host_port): Declared.
+ (rsock_sys_fail_path): Ditto.
+ (rsock_sys_fail_sockaddr): Ditto.
- * io.c (io_sysread): EOF¤ÇÎã³°
+ * ext/socket/udpsocket.c (udp_connect): Use rsock_sys_fail_host_port.
+ (udp_bind): Ditto.
+ (udp_send): Ditto.
- * io.c (f_readline): EOF¤ÇÎã³°¤òȯÀ¸¤¹¤ë¤è¤¦¤Ë¡¥gets¤Ï¸ß´¹À­¤Î¤¿¤á
- nil¤òÊÖ¤¹¤Þ¤Þ¤Ë¤¹¤ë
+ * ext/socket/init.c (rsock_init_sock): Specify a string for rb_sys_fail
+ argument.
+ (make_fd_nonblock): Ditto.
+ (rsock_s_accept): Ditto.
- * eval.c (proc_call): lambda¤«¤é¤Îreturn¤ÇIN_BLOCK¥Õ¥é¥°¤¬Î©¤Ã¤¿¤Þ
- ¤Þ¤À¤Ã¤¿
+ * ext/socket/ipsocket.c (init_inetsock_internal): Use
+ rsock_sys_fail_host_port.
- * eval.c (PUSH_BLOCK2): thread¤ËÂбþ¤¹¤ë¤¿¤áBlock¤ò°ìÅÙstack¤Ë¥³¥Ô¡¼
+ * ext/socket/socket.c (rsock_sys_fail_host_port): Defined.
+ (rsock_sys_fail_path): Ditto.
+ (rsock_sys_fail_sockaddr): Ditto.
+ (setup_domain_and_type): Use rsock_sys_fail_sockaddr.
+ (sock_connect_nonblock): Ditto.
+ (sock_bind): Ditto.
+ (sock_gethostname): Specify a string for rb_sys_fail argument.
+ (socket_s_ip_address_list): Ditto.
-Wed Sep 25 11:54:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/basicsocket.c (bsock_shutdown): Specify a string for
+ rb_sys_fail argument.
+ (bsock_setsockopt): Use rsock_sys_fail_path.
+ (bsock_getsockopt): Ditto.
+ (bsock_getpeereid): Refine the argument for rb_sys_fail.
- * parse.y (method_call): Const::method()·Á¼°¤ò»È¤¨¤ë¤è¤¦¤Ë¤·¤Æ¤ß¤¿¡¥
- °ú¿ô³ç¸Ì¤Ï¾Êά¤Ç¤­¤Ê¤¤¡¥
+ * ext/socket/unixsocket.c (rsock_init_unixsock): Use
+ rsock_sys_fail_path.
+ (unix_path): Ditto.
+ (unix_send_io): Ditto.
+ (unix_recv_io): Ditto.
+ (unix_addr): Ditto.
+ (unix_peeraddr): Ditto.
- * sample/test.rb: Process.kill¤Î¸ºß¤ò³Î¤«¤á¤Æ¤«¤é¥Æ¥¹¥È¤ò¹Ô¤¦
+Sat Apr 6 11:23:18 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * eval.c (eval_with_binding): Âè2°ú¿ô¤È¤·¤Æbinding(¤Þ¤¿¤Ïlambda)¤ò
- Í¿¤¨¤ë¤È¤½¤Î´Ä¶­¤Çeval¤ò¼Â¹Ô¤¹¤ë¤è¤¦¤Ë¤·¤¿
+ * test/ruby/test_require.rb (TestRequire#test_require_nonascii_path):
+ fix load path for encoding to run the test as stand-alone.
- * eval.c (f_binding): ¸½ºß¤Îbinding¤òÊÖ¤¹´Ø¿ô
+Sat Apr 6 09:54:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c: block¹½Â¤ÂΤËthe_class¤òÊݸ¤¹¤ë¥á¥ó¥Ð¤òÄɲÃ
+ * pack.c (NATINT_LEN): fix definition order, must be after
+ NATINT_PACK.
- * process.c (Init_process): kill,wait,waitpid¤òProcess¤Ë°Üư
+Sat Apr 6 03:11:07 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-Tue Sep 24 02:44:43 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: fix symbol keys in coder
+ emission. Thanks @tjwallace
+ * test/psych/test_coder.rb: test for change
- * sample/ruby-mode.el: ¤¤¤í¤¤¤íÌäÂ꤬¿¤¤¤Î¤Ç°ÊÁ°¤Î¹â®²½¤ÏÇË´þ¡¥
- Ê̤Υ¢¥×¥í¡¼¥Á¤ò»È¤Ã¤¿¡¥
+Sat Apr 6 02:54:08 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * lib/tk.rb (Tk.pack): Ê£¿ô¤Î¥¦¥£¥ó¥É¥¦¤ò¼õ¤±ÉÕ¤±¤ëpack
+ * ext/psych/lib/psych/exception.rb: there should be only one exception
+ base class. Fixes tenderlove/psych #125
+ * ext/psych/lib/psych.rb: require the correct exception class
+ * ext/psych/lib/psych/syntax_error.rb: ditto
+ * ext/psych/lib/psych/visitors/to_ruby.rb: ditto
-Sat Sep 21 11:08:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 6 02:30:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (exprs): ¶õʸ¤â¼õ¤±ÉÕ¤±¤ë¤è¤¦¤Ëʸˡ¤òÊѹ¹¡¥º£¤Þ¤Ç¤Ï²þ¹Ô
- ¤ÎϢ³¤À¤±¤¬µö¤µ¤ì¤Æ¤¤¤¿¡¥
+ * parse.y (new_defined): remove all extra parentheses, and return
+ "nil" for defined? with empty expression.
+ [ruby-core:54024] [Bug #8224]
-Fri Sep 20 11:39:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Apr 6 02:06:04 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * Fail¤ÎÂçȾ¤ò̾Á°¤Ä¤­Îã³°¤ËÊѹ¹¡¥
+ * ext/psych/lib/psych/visitors/to_ruby.rb: correctly register
+ self-referential strings. Fixes tenderlove/psych #135
- * re.c (Init_Regexp): ̾Á°¤Ä¤­Îã³°¤òƳÆþ¡¥
+ * test/psych/test_string.rb: appropriate test.
- * eval.c (f_missing): Object¤Ïinspect¤·¤Ê¤¤¡¥
+Sat Apr 6 01:21:56 2013 Tanaka Akira <akr@fsij.org>
- * object.c (inspect_i): Object#inspect¤Çloop¤ËÂбþ¡¥
+ * ext/socket/init.c (cloexec_accept): Fix a compile error on
+ Debian GNU/kFreeBSD. Consider HAVE_ACCEPT4 is defined
+ but SOCK_CLOEXEC is not defined.
- * regex.c (re_search): /^$/¤¬""¤Ë¥Þ¥Ã¥Á¤·¤Ê¤«¤Ã¤¿¡¥
+Sat Apr 6 00:19:30 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Thu Sep 19 19:25:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * load.c (features_index_add): use rb_str_subseq() to specify C string
+ position properly to fix require non ascii path.
+ [ruby-core:53733] [Bug #8165]
- * regex.c (re_search): /^$/¤¬Èó¶õ¹Ô¤Ë¥Þ¥Ã¥Á¤·¤Æ¤¤¤¿¡¥
+ * test/ruby/test_require.rb (TestRequire#test_require_nonascii_path):
+ a test for the above.
-Tue Sep 17 10:28:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Apr 5 20:41:49 2013 Tanaka Akira <akr@fsij.org>
- * version 0.99.2-960917
+ * include/ruby/defines.h (HAVE_TRUE_LONG_LONG): Defined to distinguish
+ availability of long long and availability of 64bit integer type.
-Mon Sep 16 10:47:56 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * pack.c: Use HAVE_TRUE_LONG_LONG to distinguish q! and Q! support.
- * sample/ruby-mode.el (ruby-calculate-indent): ±é»»»Ò·Ñ³¤Î¾ì¹ç¤Î
- ʸ»úÎó¤ÎȽÄê¤Î¥Ð¥°
+Fri Apr 5 20:19:42 2013 Tanaka Akira <akr@fsij.org>
- * sample/ruby-mode.el (ruby-calculate-indent): else¤Ê¤É¤Î¼¡¤Î¹Ô¤Î
- ¥¤¥ó¥Ç¥ó¥È·×»»¤òÀµ¤·¤¯¡¥
+ * addr2line.c: Include ruby/missing.h to fix compile error on Debian.
-Sat Sep 14 08:37:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Apr 5 19:39:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 0.99.2-960914
+ * compile.c (iseq_compile_each): fix of defined? with empty
+ expression. [ruby-core:53999] [Bug #8220]
-Fri Sep 13 08:06:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Apr 5 13:22:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/socket.c (tcpaddr): portÈÖ¹æ¤Ëntohs¤ò¤Ä¤±Ëº¤ì
+ * ext/curses/curses.c (Init_curses): fix implementation function,
+ crmode should be same as cbreak. [ruby-core:54013] [Bug #8222]
- * dln.c (link_undef): ¥Æ¡¼¥Ö¥ë¤Î¼ïÎब´Ö°ã¤Ã¤Æ¤¤¤¿¡¥
+Fri Apr 5 12:06:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * bignum.c (bigadd): °ú¤­»»¤¬È¯À¸¤¹¤ë»þ¤Ë·×»»°ã¤¤¤¬µ¯¤­¤Æ¤¤¤¿¡¥
+ * ext/curses/hello.rb: Typo in Curses example by Drew Blas
+ [Fixes GH-273]
- * parse.y (iter_do_block): do..end¤Ç¤âdynamic variable¤ò¡¥
+Thu Apr 4 23:45:13 2013 Tanaka Akira <akr@fsij.org>
- * bignum.c (big_pow): ¤è¤êÀµ³Î¤Ê·×»»¤ò(À°¿ôƱ»Î¤Ç¤Ïfloat¤ËÊÑ´¹¤·¤Ê
- ¤¤)¡¥
+ * lib/resolv.rb (bind_random_port): Rescue EACCES for SunOS.
+ bind() on SunOS for port 2049 (nfs) and 4045 (lockd) causes
+ EACCES with unprivileged process. cf. PRIV_SYS_NFS in privileges(5)
+ [ruby-core:48064] [Bug #7183] reported by Frank Meier.
-Thu Sep 12 13:11:55 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 4 23:24:45 2013 Tanaka Akira <akr@fsij.org>
- * variable.c (rb_set_class_path): String¥¯¥é¥¹¤¬½é´ü²½¤µ¤ì¤ëÁ°¤Ë
- String¤òºî¤Ã¤Æ¤¤¤¿¡¥Áȹþ¤ß¥¯¥é¥¹¤Ë¤Ïpath¤Ï¤¤¤é¤Ê¤¤
+ * ext/socket/extconf.rb: Remove condition for bcc.
- * parse.y (yylex): 0.1¤¬0¤Ë¤Ê¤Ã¤Æ¤¤¤¿
+Thu Apr 4 22:53:23 2013 Tanaka Akira <akr@fsij.org>
- * parse.y (yylex): ¹ÔÈÖ¹æ¤ÎÉÔÀ°¹ç
+ * include/ruby/ruby.h (FIX2LONG): Parenthesize the macro body.
- * gc.c (oblist_live_obj): º£¡ÖÀ¸¤­¤Æ¤¤¤ë¡×Á´Éô¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹
- ¥¤¥Æ¥ì¡¼¥¿¡¥¤½¤Î¥¯¥é¥¹(¤Þ¤¿¤Ï¥µ¥Ö¥¯¥é¥¹)¤ÎÁ´Éô¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÊÖ
- ¤¹each_object_of¤âÄêµÁ¤·¤¿¡¥
+Thu Apr 4 22:32:32 2013 Tanaka Akira <akr@fsij.org>
- * class.c (rb_define_class_id): ̵Â̤ʥ¯¥é¥¹¤ò³ä¤êÅö¤Æ¤Æ¤¤¤¿¡¥·ë²Ì
- ¤È¤·¤ÆÌ¤½é´ü²½¤Î¥¯¥é¥¹¥ª¥Ö¥¸¥§¥¯¥È¤¬Â¸ºß¤·¤Æ¤¤¤¿¡¥
+ * time.c (time_strftime): Describe %L and %N truncates digits under
+ the specified length.
+ [ruby-core:52130] [Bug #7829]
-Wed Sep 11 00:56:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 4 22:08:46 2013 Tanaka Akira <akr@fsij.org>
- * parse.y (yylex): octal¤ÎÄê¿ô¤Î¸¡½Ð¤ò¤è¤êÀµ³Î¤Ë(090¤Ï¥¨¥é¡¼¤È¤«)¡¥
+ * object.c (rb_mod_cvar_set): Reverted "avoid inadvertent
+ symbol creation" to avoid SEGV by
+ Class.new.class_variable_set(1, 2).
- * bignum.c (big_minus): y¤¬x¤è¤êÂ礭¤¤¾ì¹ç¤Ë¥¨¥é¡¼¡¥
+Thu Apr 4 20:07:19 2013 Tanaka Akira <akr@fsij.org>
- * parse.y (yylex): ¥¨¥é¡¼¹ÔÈÖ¹æ¤Îɽ¼¨¤ò¤è¤êÀµ³Î¤Ë
+ * ext/pathname/pathname.c (path_write): New method.
+ (path_binwrite): Ditto.
+ [ruby-core:49468] [Feature #7378]
- * sample/ruby-mode.el (ruby-expr-beg): ÊÑ¿ô̾¤¬1ʸ»ú¤Î»þ¸íưºî¤·¤Æ
- ¤¤¤¿¡¥
+Thu Apr 4 16:51:29 2013 Yuki Yugui Sonoda <yugui@google.com>
- * sample/ruby-mode.el (ruby-calculate-indent): ?/¤Ç¥ë¡¼¥×¤ËÍî¤Á¤¤
- ¤¿¥Ð¥°¤ò½¤Àµ¡¥
+ * thread_pthread.c: Fixes wrong scopes of #if USE_SLEEPY_TIMER_THREAD
+ .. #endif sections. This fixes a build error on NativeClient.
- * enum.c (enum_min,enum_max): sort¤Î¤è¤¦¤Ë¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¤âưºî¤¹
- ¤ë¤è¤¦¤Ë¡¥
+Wed Apr 3 17:25:31 2013 Yuki Yugui Sonoda <yugui@google.com>
- * enum.c (enum_find_all): typo
+ * thread_pthread.c (ruby_init_stack): Avoid using uninitialized value.
+ stackaddr and size are not set if get_stack() fails.
-Tue Sep 10 12:07:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 4 16:55:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * node.h (nd_line): NODE¤Îline¤òflags¤Ë²¡¤·¹þ¤á¤Æ¥ª¥Ö¥¸¥§¥¯¥È¥µ¥¤
- ¥º¤ò¾®¤µ¤¯¤·¤¿¡¥À©¸Â:32bit int¤Î¥Þ¥·¥ó¤Î¾ì¹ç¡¤¥Õ¥¡¥¤¥ë¤Î¹Ô¿ô¤¬
- 32767¤ò±Û¤¨¤ë¤ÈÀµ¾ï¤Ëɽ¼¨¤µ¤ì¤Ê¤¤¡¥
+ * struct.c (make_struct): avoid inadvertent symbol creation.
+ (rb_struct_aref): ditto.
+ (rb_struct_aset): ditto.
- * st.c: hash¤Ècompare¤Î´Ø¿ô¥á¥ó¥Ð¤ò¹½Â¤ÂΤ˥ѥ寡¤¥¯¥é¥¹Åª¤Ê»È¤¤
- Êý¤ò¹Ô¤¦¡¥1 table¤¢¤¿¤ê4 byte¤ÎÀáÌó¡¥
+Thu Apr 4 16:54:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Sep 9 16:35:54 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * object.c (rb_mod_const_set): avoid inadvertent symbol creation.
+ (rb_obj_ivar_set): ditto.
+ (rb_mod_cvar_set): ditto.
- * file.c (file_truncate): Ä󶡤µ¤ì¤Ê¤¤»þ¤Ë¤ÏÆÃÊ̤ÊÎã³°¤òȯÀ¸¤¹¤ë¤è
- ¤¦¤Ë¡¥
+Thu Apr 4 15:46:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (Init_Proc): ÉÔŬÀڤʰÌÃÖ¤Îlocal-jump¤òÎã³°¤Ë¡¥
+ * enum.c (enum_inject): avoid inadvertent symbol creation.
-Sat Sep 7 17:06:15 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 4 14:37:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (proc_call): ¤Þ¤À¥¹¥³¡¼¥×¤¬¥¹¥¿¥Ã¥¯¾å¤Ë¤¢¤ë»þ¤Ë¤Ï¶É½êæ½Ð
- ¤òÍ­¸ú¤Ë¤¹¤ë¡¥¤³¤ì¤Ç¡¤proc¤òÀ¸À®¤·¤Æcall¤¹¤ë¤³¤È¤Ï¡¤¥¹¥³¡¼¥×¤òæ
- ½Ð¤·¤Ê¤¤¸Â¤ê¡¤yield¤ÈƱ¤¸°ÕÌ£¤ò»ý¤Ä¤³¤È¤Ë¤Ê¤ë¡¥
+ * thread.c (rb_thread_aref): avoid inadvertent symbol creation.
+ (rb_thread_variable_get): ditto.
+ (rb_thread_key_p): ditto.
+ (rb_thread_variable_p): ditto.
-Fri Sep 6 13:30:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 4 11:33:57 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * 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): ¥Ö¥í¥Ã¥¯¤ÎËöÈø¤Ë(ÃÙ¤¤¡Ä)
+ * ext/openssl/ossl_bn.c (ossl_bn_to_i): Use bn2hex to speed up.
+ In general, binary to/from decimal needs extra cost.
-Thu Sep 5 14:23:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Apr 4 07:24:18 2013 Tanaka Akira <akr@fsij.org>
- * file.c (file_s_split): [dirname,basename]¤Ësplit¤¹¤ë¡¥
+ * ext/socket/extconf.rb: Specify arguments to test functions.
- * eval.c (rb_eval): eval¤ÎÃæ¤Ç¤âÄê¿ô¤ÎÃͤ¬Àµ¤·¤¯¤Ê¤ë¤è¤¦¤Ë¡¥¤³¤ì¤Ç
- Äê¿ô¤Ë´Ø¤·¤Æ¤ÏÀÅŪ¤Ê¥¹¥³¡¼¥×¤¬Êݾڤµ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡¥
+Thu Apr 4 03:25:09 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * st.c (rehash): ¥Ï¥Ã¥·¥å³ÈÂç¤Î·Ï¿ô¤ò2¤«¤é1.79¤Ë¡¥³ä»»¤¬¤è¤êÎɤ¤ÃÍ
- ¤òÊÖ¤¹¤è¤¦¤Ë¡¥
+ * ext/openssl/ossl_bn.c (ossl_bn_initialize): fix can't create from bn.
-Thu Sep 5 00:32:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Apr 3 22:09:25 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (class_superclass) ¥¯¥é¥¹¤Î¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤òÊÖ¤¹¥á¥½¥Ã¥É¡¥
+ * ext/socket/extconf.rb: Test functions and libraries after headers.
-Wed Sep 4 16:54:56 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Apr 3 21:23:29 2013 Tanaka Akira <akr@fsij.org>
- * random.c (f_rand): Bignum¤älong¤ÎÈϰϤò±Û¤¨¤ëFloat¤ËÂФ¹¤ëÍð¿ô¤â
- ȯÀ¸¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+ * io.c (rb_io_seek_m): Accept :CUR, :END, :SET as "whence" argument.
+ (interpret_seek_whence): New function.
+ [ruby-dev:45818] [Feature #6643]
- * struct.c (struct_alloc): Fatal¤Ç¤Ï¤Ê¤¯Îã³°¤òȯÀ¸¤µ¤»¤ë¤è¤¦¤Ë(ÄÌ
- ¾ï¤Î»ÈÍѤÇȯÀ¸¤·¤¦¤ë)¡¥
+Wed Apr 3 20:52:49 2013 Tanaka Akira <akr@fsij.org>
- * struct.c (struct_s_members): Struct¤ÎÆÃ°Û¥á¥½¥Ã¥É¤Ç¤Ï¤Ê¤¯¡¤À¸À®
- ¤µ¤ì¤¿Struct¥¯¥é¥¹¤ÎÆÃ°Û¥á¥½¥Ã¥É¤Ë¤·¤¿¡¥
+ * process.c: Describe the behavior which Ruby invokes a commandline
+ directly without shell if the commandline is simple enough.
+ [ruby-core:50459] [Bug #7489]
- * st.c (st_init_table): rubyÀìÍѤ˥ѥé¥á¥¿¤ò¸ÇÄê¤Ë¤·¤¿(¥µ¥¤
- ¥º¤¬¸º¤Ã¤¿)
+Wed Apr 3 20:27:37 2013 Tanaka Akira <akr@fsij.org>
-Mon Sep 2 11:37:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/extmk.rb (extmake): Invoke Logging::log_close in a ensure
+ clause.
- * array.c (ary_shift): capa¤¬¤¢¤Þ¤ê¤Ë¤âÂ礭¤¤»þ¤Ë¤ÏÎΰè¤òREALLOC
- (ary_pop): Ʊ¾å
+Wed Apr 3 18:53:58 2013 Tanaka Akira <akr@fsij.org>
- * string.c (str_inspect): multibyte character Âбþ¤Ë¥ß¥¹¡¥
- (str_inspect): unsigned char¤Ë¤·¤Ê¤¤¤ÈÉ乿ŏ³«¤µ¤ì¤Æ¤·¤Þ¤¦
+ * ext/extmk.rb (extmake): Use Logging.open to switch stdout and
+ stderr. Delay Logging::log_close until the failure message is
+ written. Write the failure message only if log file is opened.
- * parse.y (primary): `::'¤òprimary¤Ë°Üư Foo::Bar.Baz¤¬¥¨¥é¡¼¤Ë¤Ê
- ¤é¤Ê¤¤¤è¤¦¤Ë¡¥
-
- * parse.y (primary): ¥ª¥Ú¥ì¡¼¥¿·Á¼°¤ÎÆÃ°Û¥á¥½¥Ã¥É¤¬ÄêµÁ¤Ç¤­¤Ê¤¤
+ * lib/mkmf.rb (Logging.log_opened?): New method.
- * random.c (f_rand): max¤¬0¤Î»þ¤ËÂбþ
+ [ruby-dev:47215] [Bug #8209]
- * io.c (io_printf): ´Ø¿ô¤òÄêµÁ¤·¤Æ¤¤¤¿¤¬¥¤¥ó¥¿¥×¥ê¥¿¤ËÅÐÏ¿¤·¤Æ¤¤¤Ê
- ¤«¤Ã¤¿¡¥
+Wed Apr 3 17:11:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * file.c (file_s_basename): Âè2°ú¿ô¤¬Ìµ¤¤»þ¤Ë¥¨¥é¡¼¡¥
+ * win32/win32.c (constat_apply): pass through unknown sequence which
+ starts with ESC but is not followed by a bracket. [ruby-core:53879]
+ [Bug #8201]
-Thu Aug 29 10:49:40 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Apr 3 16:35:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (expr): ¥¤¥Æ¥ì¡¼¥¿¤Î¿··Á¼°¤Ë¡Ömethod do .. end¡×·Á¼°¤òºÎ
- ÍѤ·¤¿¡¥¤â¤Á¤í¤óÀΤηÁ¼°¤âÍ­¸ú¡¥
+ * bignum.c (rb_big_eq): hide intermediate Bignums not just freeing
+ memory. [ruby-core:53893] [Bug #8204]
- * sample/ruby-mode.el (ruby-calculate-indent): end¤Î¿ô¤ÎÊý¤¬Â¿¤¤¾ì
- ¹ç¤Ë¤â¥¨¥é¡¼¤òµ¯¤³¤µ¤Ê¤¤¤è¤¦¤Ë¡¥
+ * object.c (rb_obj_hide): hide an object by clearing klass.
-Wed Aug 28 09:41:36 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * bignum.c (rb_big_eq): test as Fixnum if possible and get rid of zero
+ length Bignum. [ruby-core:53893] [Bug #8204]
- * numeric.c (upto,downto,step,times): Âоݤ¬fixnum¤ÎÈϰϤò±Û¤¨¤Æ¤â
- ưºî¤¹¤ë¤è¤¦¤Ë¡¥
+Tue Apr 2 23:56:03 2013 Tanaka Akira <akr@fsij.org>
-Mon Aug 26 10:04:37 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/securerandom.rb (SecureRandom.random_bytes): Use
+ OpenSSL::Random.random_add instead of OpenSSL::Random.seed and
+ specify 0.0 as the entropy.
+ [ruby-core:47308] [Bug #6928]
- * missing/setenv.c (envix): typo(missing `== 0' for memcmp)
+Tue Apr 2 20:24:52 2013 Tanaka Akira <akr@fsij.org>
- * dir.c (dir_foreach): foreach(dir open -> read loop -> close¤Þ¤Ç)
+ * pack.c: Support Q! and q! for long long.
+ (natstr): Moved to toplevel. Add q and Q if there is long long type.
+ (endstr): Moved to toplevel.
+ (NATINT_PACK): Consider long long.
+ (NATINT_LEN_Q): New macro.
+ (pack_pack): Support Q! and q!.
+ (pack_unpack): Ditto.
+ [ruby-dev:43970] [Feature #3946]
- * io.c (io_foreach): foreach(file open -> read loop -> close¤Þ¤Ç)
+Tue Apr 2 19:24:26 2013 Tanaka Akira <akr@fsij.org>
- * Fatal¤Î¤¦¤ÁÊ᪲Äǽ¤Ê¤¤¤¯¤Ä¤«¤òÎã³°¤Ë¡¥
+ * ext/-test-/num2int/num2int.c: Define utility methods
+ as module methods of Num2int.
-Sat Aug 24 23:56:37 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/-ext-/num2int/test_num2int.rb: Follow the above change.
- * bignum.c (bigdivmod): FIX2INT -> INT2FIX Âç´Ö°ã¤¤
+Tue Apr 2 18:49:01 2013 Tanaka Akira <akr@fsij.org>
-Fri Aug 23 18:13:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/securerandom.rb: Don't use Array#to_s.
+ [ruby-core:52058] [Bug #7811] fixed by zzak (Zachary Scott).
- * regex.c (re_free_registers): allocate¤·¤Æ¤¤¤Ê¤¤»þ¤Ë¤ÏÅöÁ³ free
- ¤·¤Æ¤Ï¤¤¤±¤Ê¤¤¡¥
+Tue Apr 2 17:38:20 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Aug 22 01:20:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * re.c (rb_reg_to_s): suppress duplicated charclass warning.
+ Regexp#to_s suppress extra its whole regexp options by calling
+ onig_new with its source, but it doesn't call rb_reg_preprocess.
+ Therefore its Unicode escapes (\u{XXXX}) are given as is,
+ and it may cause duplicated charclass warning for example
+ "[\u{33}]" (3 is duplicated) or "[\u{a}\u{b}]" (u is duplicated).
+ [ruby-core:53649] [Bug #8151]
- * eval.c (thread_create): ³°Â¦¤«¤é¶¯À©½ªÎ»¤µ¤»¤é¤ì¤¿thread¤Ï
- cleanup¤¹¤ëɬÍפ¬Ìµ¤¤¡¥
+Tue Apr 2 16:00:06 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Aug 21 09:57:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * vm_dump.c (rb_print_backtrace): separate to ease showing C backtrace.
- * eval.c (thread_create): thread¤ò½ªÎ»¤µ¤»¤¿Âç°èæ½Ð¤Î¾ðÊó¤ò
- main_thread¤ËÅϤ¹¤è¤¦¤Ë¡¥
+ * internal.h (rb_print_backtrace): ditto.
- * parse.y (call_args): ºÇ½ª°ú¿ô¤Ë³ç¸Ì¤ò¾Êά¤·¤¿¥á¥½¥Ã¥É¸Æ½Ð¤·¤òÃÖ
- ¤±¤ë¤è¤¦¤Ë(Îã: print foo bar, baz == print(foo(bar,baz)))
+Tue Apr 2 15:22:09 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Aug 20 13:37:16 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/ruby/envutil.rb (assert_separately): stop_auto_run of
+ Test::Unit::Runner to prevent auto runner use ARGV.
- * eval.c (masign): ¿½ÅÂåÆþ¤Èrest°ú¿ô¤Îưºî¤ò¹ç¤ï¤»¤Æ¶õ¤ÎÇÛÎó¤òÂå
- Æþ¤¹¤ë¤è¤¦¤Ë¡¥
+ * test/ruby/envutil.rb (assert_separately): add $: to separate process.
- * parse.y (arg): defined?¤Î¶¯ÅÙ¤ò¤â¤¦¤Á¤ç¤Ã¤È¶¯¤¯
+ * test/ruby/envutil.rb (assert_separately): fail if stderr is not
+ empty and ignore_stderr is false.
- * eval.c (error_print): -w¤ÇÎ㳰̾¤âɽ¼¨¤¹¤ë¤è¤¦¤Ë
+Tue Apr 2 06:46:59 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (rb_eval): ¿·¹½Ê¸¤ËÂбþ
- (handle_rescue): Ê᪤¹¤ëÎã³°¤ò kind_of? ¤ÇƱÄê
+ * ext/-test-/num2int/num2int.c: Rename utility methods
+ to global functions to ease manual experiments.
- * parse.y (primary): rescue¤Î¹½Ê¸¤òÊѹ¹(ƱÄê°ú¿ô¤ÎÄɲá¤Ê£¿ôrescue)
+ * test/-ext-/num2int/test_num2int.rb: Follow the above change.
- * Fail()¤Î¤«¤Ê¤ê¤òŬÅö¤ÊÎã³°¤ò»È¤¦¤è¤¦¤Ë
+Mon Apr 1 22:26:17 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (thread_interrupt): Interrupt(º£¤Ïnon-local jump)¤Ï
- main-thread¤ËÁ÷¤é¤ì¤ë¤è¤¦¤Ë¡¥
+ * ext/zlib/zlib.c (rb_gzfile_set_mtime): Use NUM2UINT.
+ The old logic doesn't work well on LP64 platforms as:
+ .. -2**63-1 => error,
+ -2**63 .. -2**62-1 => success,
+ -2**62 .. -2**31-1 => error,
+ -2**31 .. 2**31-1 => success,
+ 2**31 .. 2**62-1 => error,
+ 2**62 .. 2**64-1 => success,
+ 2**64 .. => error.
- * eval.c (rb_longjmp): $! ¤ÎÆâÍÆ¤òʸ»úÎ󤫤éÎã³°¥¯¥é¥¹¤ËÊѹ¹
- (rb_raise): rb_fail ¤«¤é̾¾ÎÊѹ¹
- (rb_interrupt): Îã³°²½
- (rb_exit): Îã³°²½
+Mon Apr 1 22:08:02 2013 Benoit Daloze <eregontp@gmail.com>
- * error.c (Init_Exception): Îã³°¥¯¥é¥¹¤Î¿·Àß(ʸ»úÎó¤Î¥µ¥Ö¥¯¥é¥¹)
+ * ext/zlib/zlib.c (Zlib::Inflate.new):
+ Fix documentation syntax and naming errors.
+ Based on patch by Robin Dupret. Fix GH-271.
-Mon Aug 19 19:40:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Apr 1 21:22:31 2013 Tanaka Akira <akr@fsij.org>
- * signal.c (trap): ¸Å¤¤¥Ï¥ó¥É¥é¤òÊÖ¤¹¤è¤¦¤Ë¡¥
+ * test/-ext-/num2int/test_num2int.rb: Test small bignums.
-Wed Aug 14 00:07:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Apr 1 21:10:56 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (rb_trap_eval): ¥Ï¥ó¥É¥é¤Î¤¿¤á¤Ëthread¤òfork¤¹¤ë¤³¤È¤ò»ß
- ¤á¤¿¡¥
+ * numeric.c (rb_num2ulong_internal): Don't cast a negative double value
+ into unsigned long, which is undefined behavior.
+ (rb_num2ull): Don't cast a value bigger than LLONG_MAX into
+ long long, which is undefined behavior.
- * eval.c (thread_mark): threadËè¤Î $!, $@ ¤ò¥Þ¡¼¥¯¤·Ëº¤ì
+Mon Apr 1 20:57:57 2013 Tanaka Akira <akr@fsij.org>
- * ext/dbm/dbm.c (fdbm_delete): ¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤Ð¤ì¤¿¾ì¹ç¡¤Í×ÁÇ
- ¤¬Ìµ¤±¤ì¤Ð¥Ö¥í¥Ã¥¯¤òɾ²Á¤¹¤ë¡¥
+ * ext/-test-/num2int/num2int.c: Return string for result, instead of
+ printing.
- * hash.c (hash_delete): ¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤Ð¤ì¤¿¾ì¹ç¡¤Í×ÁǤ¬Ìµ¤±¤ì
- ¤Ð¥Ö¥í¥Ã¥¯¤òɾ²Á¤¹¤ë¡¥
+ * test/-ext-/num2int/test_num2int.rb: updated to follow above change.
- * array.c (ary_delete): ¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤Ð¤ì¤¿¾ì¹ç¡¤Í×ÁǤ¬Ìµ¤±¤ì
- ¤Ð¥Ö¥í¥Ã¥¯¤òɾ²Á¤¹¤ë¡¥
+Mon Apr 1 20:08:07 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (rb_interrupt): SIGINT¤Î¥Ç¥Õ¥©¥ë¥È¤òexit¤«¤éÆÃÊ̤ÊÂç°èæ
- ½Ð¤Ë¡¥¤ä¤Ï¤ê³ä¤ê¹þ¤Þ¤ì¤¿°ÌÃÖ¤Îɽ¼¨¤¬Ìµ¤¤¤Î¤Ï¼ä¤·¤¤¤Î¤Ç¡¥
+ * numeric.c (rb_num2long): Don't use SIGNED_VALUE uselessly.
+ (check_int): Ditto.
+ (check_short): Ditto.
+ (rb_num2fix): Ditto.
+ (rb_num2ulong_internal): Add a cast.
-Tue Aug 13 01:34:00 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Apr 1 18:41:35 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_exit): sub-threadÆâ¤Ç¤Îexit¤âstatus¤òÊݸ¤¹¤ë¤è¤¦¤Ë
- (thread_create): ¼«threadÆâ¤Îexit¤ËÂбþ
+ * configure.in: skip autoconf 2.64 and 2.66, 2.67 seems short-lived
+ but stick on it for Debian Squeeze.
- * signal.c (sighandle): SIGINT¤Î¥Ç¥Õ¥©¥ë¥È¥Ï¥ó¥É¥é¤Ïexit¤¹¤ë¤è¤¦¤Ë
- (°ÊÁ°¤ÏÎã³°¤òȯÀ¸¤·¤Æ¤¤¤¿)¡¥
+Mon Apr 1 14:22:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * Îã³°¤Î°ìÉô¤òFatal¤Ë¡¥
+ * configure.in: check clang version by predefined macro values.
+ [Bug #8192]
- * string.c (str_aset): ʸ»úÎó¤ÎÃÖ´¹¤ÎÂоݤ¬Éôʬʸ»úÎó¤Ç¤Ê¤«¤Ã¤¿»þ¡¤
- Îã³°¤òȯÀ¸¤µ¤»¤Ê¤¤¤è¤¦¤Ë
+Mon Apr 1 12:05:15 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (proc_call): Proc¤ÎÃæ¤«¤ébreak/next¤ÏÄ̤·¡¤Â¾¤Î¤â¤Î¤ÏÄ̤µ
- ¤Ê¤¤¤è¤¦¤Ë
+ * numeric.c (check_uint): Take the 1st argument as unsigned long,
+ instead of VALUE. Refine the validity test conditions.
+ (check_ushort): Ditto.
-Mon Aug 12 14:15:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Apr 1 07:15:03 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * object.c (krn_type): ʸ»úÎó¤òÊÖ¤¹
+ * configure.in: use quadrigraph to put '[' or ']'. [Bug #8192]
- * eval.c (thread_create): sub-threadÆâ¤Ç¤Îexit¤ËÂбþ
+Mon Apr 1 04:16:41 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * numeric.c (fix_type): ʸ»úÎó¤òÊÖ¤¹
+ * configure.in: kick old clang. [ruby-dev:47204] [Bug #8192]
- * io.c (f_p): ¥Ç¥Ð¥Ã¥°Íѥǡ¼¥¿É½¼¨¥á¥½¥Ã¥É
+Mon Apr 1 01:12:46 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (f_missing): nil/TRUE/FALSE¤òÆÃḚ̂·¤¤
+ * include/ruby/ruby.h (FIX2ULONG): Make it consistent with NUM2ULONG.
- * string.c (str_inspect): Ť¤Ê¸»úÎó¤òû½Ìɽ¼¨¡¥inspect¤ÎƯ¤­¤ò
- human readable string¤ÎÀ¸À®¤ËÅý°ì(re-generatable string ¤ÏÀµ¼°¤Ë
- ̵¤¯¤Ê¤Ã¤¿)¡¥
+ * ext/-test-/num2int/num2int.c: Add utility methods for FIX2XXX tests.
-Sat Aug 10 16:54:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/-ext-/num2int/test_num2int.rb: Add tests for FIX2XXX.
- * object.c (Init_Object): kernel/nil/false/true¤Î¥¯¥é¥¹Ì¾¤òÊѹ¹(¾®
- ʸ»ú¤Ë)¡¤ruby¥¹¥¯¥ê¥×¥È¤«¤é¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¤è¤¦¤Ë¡¥
+Sun Mar 31 17:17:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_eval): CONSTANT¤Î¥¢¥¯¥»¥¹Àè¤òñ½ã²½¡¥cref¤ò»È¤ï¤Ê¤¤¡¥
+ * proc.c (rb_mod_define_method): consider visibility in define_method.
+ patch by mashiro <mail AT mashiro.org>. fix GH-268.
- * eval.c (f_eval): ÆÃ°Û¥á¥½¥Ã¥ÉÆâ¤Ç¤âÄê¿ô¤ÎÃͤ¬Àµ¤·¤¯¤Ê¤ë¤è¤¦¤Ë
+Sun Mar 31 15:40:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Aug 9 12:23:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * win32/configure.bat: try to fix option arguments split by commas and
+ equals here. this batch file no longer run with old command.com.
- * array.c (ary_concat): append -> concat String¤Ë¹ç¤ï¤»¤¿
+ * tool/mkconfig.rb: no hacks for cmd.exe.
- * parse.y (yylex): `$;'¤¬»È¤¨¤Ê¤«¤Ã¤¿¡¥
+Sun Mar 31 13:47:04 2013 Tanaka Akira <akr@fsij.org>
- * array.c (ary_push_method): Ê£¿ô°ú¿ô¤ò¼õ¤±ÉÕ¤±¤ë¤è¤¦¤Ë¡¥
- (ary_unshift): Ê£¿ô°ú¿ô¤ò¼õ¤±ÉÕ¤±¤ë¤è¤¦¤Ë¡¥
+ * numeric.c (rb_num2ulong_internal): New function similar to
+ rb_num2ulong but integer wrap around flag is also returned.
+ (rb_num2ulong): Use rb_num2ulong_internal.
+ (rb_num2uint): Use rb_num2ulong_internal and the wrap around flag is
+ used instead of negative_int_p(val).
+ (rb_num2ushort): ditto.
- * io.c (io_popen): IO.popen¤Çcommand pipe¤¬³«¤±¤ë¤è¤¦¤Ë¡¥
+Sun Mar 31 06:27:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c (Init_Object): Kernel¤ÈNil¤òruby script¤«¤é¥¢¥¯¥»¥¹¤Ç¤­
- ¤Ê¤¤¤è¤¦¤Ë¡¥
+ * class.c (HAVE_METACLASS_P): should check FL_SINGLETON flag before get
+ instance variable to get rid of wrong warning about __attached__.
+ [ruby-core:53839] [Bug #8188]
-Thu Aug 8 01:21:47 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Mar 30 14:11:28 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * object.c (f_integer): À°¿ô¤Ø¤ÎÊÑ´¹´Ø¿ô
- (f_float): ¼Â¿ô¤Ø¤ÎÊÑ´¹´Ø¿ô
- (f_string): ʸ»úÎ󤨤ÎÊÑ´¹´Ø¿ô
- (f_array): ÇÛÎ󤨤ÎÊÑ´¹´Ø¿ô
+ * bcc32: removed. agreed at
+ http://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20130223Japan
- * bignum.c (big_to_i): FIXNUM¤ÎÈϰϤǤʤ¤»þ¤ÏBignum¤Î¤Þ¤ÞÊÖ¤¹¤è¤¦
- ¤ËÊѹ¹¡¥
+Sat Mar 30 03:58:00 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Aug 7 09:28:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * win32/file.c (code_page): use cp1252 instead of cp20127 as US-ASCII.
+ fix [ruby-core:53079] [Bug #7996]
+ reported and patched by mmeltner (Michael Meltner).
- * version 0.99.1-960807
+Sat Mar 30 03:49:21 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * parse.y (mlhs): ¡Ö*foo = 1,2,3¡×¥¿¥¤¥×¤Î¿½ÅÂåÆþ¤â²Äǽ¤Ë¡¥
+ * win32/win32.c (wrename): use MoveFileExW instead of MoveFileW,
+ because the latter fails on cross device file move of some
+ environments.
+ fix [ruby-core:53492] [Bug #8109]
+ reported by mitchellh (Mitchell Hashimoto).
- * object.c (Init_Object): ¥¯¥é¥¹True/False¤òruby script¤«¤é¥¢¥¯¥»
- ¥¹¤Ç¤­¤Ê¤¤¤è¤¦¤Ë¡¥
+Fri Mar 29 22:09:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c (nil_inspect): inspectɽ¸½¤Ï"nil"¤Ë
+ * thread.c (rb_mutex_synchronize_m): yield no block params. patch by
+ splattael (Peter Suschlik) in [ruby-core:53773] [Bug #8097].
+ fix GH-266.
- * io.c (io_print): nil¤Îprint¤ònil¤Ë¡¥
+Fri Mar 29 16:51:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c (nil_to_s): nil¤Îʸ»úÎóɽ¸½¤ò""¤Ë¡¥
+ * io.c (argf_next_argv): set init flag if succeeded to forward, after
+ skipping.
-Tue Aug 6 01:12:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * io.c (argf_block_call_i, argf_block_call): no more forwarding if
+ forwarded after skipping. [ruby-list:49185]
- * dir.c (dir_s_open): file descripter¤¬Â­¤ê¤Ê¤¤»þ¤Ë¤Ïgc¤·¤Æ¤«¤é¤â
- ¤¦°ìÅÙopen¤·¤Æ¤ß¤ë¡¥
+ * io.c (argf_close): deal with init flag.
- * io.c (rb_fopen): ¤¹¤Ù¤Æ¤Îfopen()¤Ë¤Ä¤¤¤Æfile descripter¤¬Â­¤ê¤Ê
- ¤¤»þ¤Ë¤Ïgc¤·¤Æ¤«¤é¤â¤¦°ìÅÙopen¤·¤Æ¤ß¤ë¡¥
+ * io.c (argf_block_call_i, argf_block_call): forward next file if
+ skipped while iteration, to get rid of IOError. [ruby-list:49185]
- * ext/socket/socket.c (Init_socket): Äê¿ô¤ÎÄɲá¥
+Fri Mar 29 11:09:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sample/ruby-mode.el (ruby-indent-to): ¥¤¥ó¥Ç¥ó¥È¸å¤Î¥«¡¼¥½¥ë°ÌÃÖ
- ¤ÎÄ´À°¤òÀµ¤·¤¯¡¥
+ * lib/mkmf.rb (configuration): not include all CFLAGS in CXXFLAGS, to
+ use different set than C for C++. [ruby-core:45273] [Bug #6504]
- * gc.c (gc): ³ä¹þ¤ß¥Á¥§¥Ã¥¯¤ò¹Ô¤ï¤Ê¤¤(C¥³¡¼¥É¤ÎÃæ¤Ç°Â¿´¤·¤Æ
- malloc()¤¬»È¤¨¤Ê¤¯¤Ê¤ë¤Î¤Ç)¡¥
+Fri Mar 29 10:24:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * st.c (call_hash_func): signal¤Èthread¤Ë¤è¤ë³ä¹þ¤ß¤ËÂбþ¡¥
+ * include/ruby/io.h: undef POSIX compliant names on AIX, which are no
+ longer needed. patch suggested by edelsohn (David Edelsohn) in
+ [ruby-core:53815]. [Bug #8174]
- * sig.h (DEFER_INTS): ³ä¹þ¤ß¶Ø»ß¶è´Ö¤Î»ØÄê
+Fri Mar 29 06:39:42 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (f_require): thread¤Ë¤è¤ërequire¤Î¶¥¹ç¤ËÂбþ(ºÇ½é¤Î
- require¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¾¤Îthread¤ÏÂÔ¤Ä)¡¥
+ * numeric.c (rb_num2ull): Cast double to unsigned LONG_LONG via
+ LONG_LONG instead of double to unsigned LONG_LONG directly.
+ This is a challenge to fix a test_num2ull(TestNum2int)
+ failure (NUM2ULL(-1.0) should be "18446744073709551615" but was "0")
+ on Mac OS X with 32bit clang.
+ http://a.mrkn.jp/~mrkn/chkbuild/mountain_lion/ruby-trunk-m32-o0/log/20130328T191100Z.diff.html.gz
- * bignum.c (str2inum): 0x80000000¤ÎÃͤ¬Éé¤Ë¤Ê¤Ã¤Æ¤¤¤¿
+Fri Mar 29 00:54:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sprintf.c (f_sprintf): ʸ»úÎóËöÈø¡¤¹ÔËö¤ÎñÆÈ¤Î`%'¤ËÂбþ
+ * lib/mkmf.rb (MAIN_DOES_NOTHING): ensure symbols for tests to be
+ preserved. [ruby-core:53745] [Bug #8169]
- * bignum.c (big_cmp): Èæ³Ó¤Î·ë²Ì¤¬µÕ¤Ë¤Ê¤ë»þ¤¬¤¢¤Ã¤¿¡¥
+Thu Mar 28 23:11:25 2013 Tanaka Akira <akr@fsij.org>
-Mon Aug 5 10:58:13 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/resolv.rb: Test Windows platform by detecting LoadError when
+ require 'win32/resolv' suggested by Nobuyoshi Nakada [ruby-core:53389].
+ [ruby-core:53388] [Feature #8090] Reported by Charles Nutter.
- * process.c (proc_exec_v): Îã³°¤Î¥á¥Ã¥»¡¼¥¸¤òʬ¤«¤ê¤ä¤¹¤¯¡¥
+Thu Mar 28 23:10:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/dbm/dbm.c (fdbm_store): nil¤ò³ÊǼ¤¹¤ë¤ÈÍ×ÁǤκï½ü¤Ë¤Ê¤ë
+ * include/ruby/io.h: rename SVR3,4 member names as POSIX compliant,
+ to get rid of conflict on AIX. [ruby-core:53765] [Bug #8174]
- * ext/dbm/dbm.c: ¥µ¥¤¥º¤ò¥­¥ã¥Ã¥·¥å¡¥
+Thu Mar 28 18:22:21 2013 Tanaka Akira <akr@fsij.org>
-Sat Aug 3 01:52:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/-ext-/num2int/test_num2int.rb: extract
+ assert_num2i_success_internal and assert_num2i_error_internal and
+ provide assertion messages as "NUM2XXX(NNN)".
- * eval.c (rb_fail): `fail'¤¬°ú¿ô̵¤·¤Ç¸Æ¤Ð¤ì¤¿»þ¤À¤±°ÊÁ°¤Î`$@'¤òÊÝ
- ¸¤¹¤ë¤è¤¦¤Ë¡¥
+Thu Mar 28 07:05:25 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (f_fail): frame¤ÎÄ´À°
+ * include/ruby/intern.h: Delete redundant inclusions caused by
+ AC_INCLUDES_DEFAULT in defines.h.
-Fri Aug 2 11:26:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * include/ruby/defines.h: Ditto.
- * ext/socket/socket.c (bsock_setopt): val¤È¤·¤ÆTRUE/FALSE/Fixnum¤â
- ¼õ¤±ÉÕ¤±¤ë¤è¤¦¤Ë¡¥
+ * include/ruby/ruby.h: Ditto.
- * ext/socket/socket.c (Init_socket): SO_REUSEADDRÅù¤ÎÄê¿ô¤ÎÄɲÃ
+ * include/ruby/st.h: Ditto.
- * ext/md5/md5init.c: md5¥â¥¸¥å¡¼¥ë(½é¤ÎÊ£¿ô¥Õ¥¡¥¤¥ë¤«¤é¤Ê¤ë¥â¥¸¥å¡¼
- ¥ë¤Ç¤â¤¢¤ë)
+Thu Mar 28 06:51:31 2013 Tanaka Akira <akr@fsij.org>
- * ruby.h (Make_Data_Struct): Data: object¤ÎinstanceÊÑ¿ô¤Ë³ÊǼ ->
- Data·¿¤ÎObject¤Ë(Dir,Time,Proc,Thread,DBM)
+ * include/ruby/defines.h: Fix a compilation error on NetBSD,
+ "type of formal parameter 1 is incomplete" for the rb_thread_wait_for
+ invocation in rb_file_flock, by including header files as
+ AC_INCLUDES_DEFAULT of autoconf.
-Thu Aug 1 11:38:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Mar 27 22:09:14 2013 Tanaka Akira <akr@fsij.org>
- * ext/dbm/dbm.c (fdbm_store): value¤¬Ê¸»ú¤Ç̵¤¤»þ¤ËÂбþ
+ * numeric.c (LONG_MIN_MINUS_ONE_IS_LESS_THAN): New macro.
+ (LLONG_MIN_MINUS_ONE_IS_LESS_THAN): Ditto.
+ (rb_num2long): Use LONG_MIN_MINUS_ONE_IS_LESS_THAN.
+ (rb_num2ulong): Ditto.
+ (rb_num2ll): Use LLONG_MIN_MINUS_ONE_IS_LESS_THAN.
+ (rb_num2ull): Ditto.
-Wed Jul 31 10:53:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/-ext-/num2int/test_num2int.rb (assert_num2i_success): Test the
+ value converted into a Float if Float can represent the value
+ exactly.
+ (assert_num2i_error): Ditto.
- * ext/socket/socket.c (open_inet): htons¤¬É¬ÍפǤ¢¤Ã¤¿
- (tcpaddr): ntohl¤ÇÊÑ´¹¤·¤¿
+Wed Mar 27 20:59:47 2013 Tanaka Akira <akr@fsij.org>
- * process.c (rb_proc_exec): execvp -> execv
+ * test/-ext-/num2int/test_num2int.rb (assert_num2i_success): New
+ utility method.
+ (assert_num2i_error): Ditto.
-Tue Jul 30 17:48:33 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Mar 27 20:37:59 2013 Tanaka Akira <akr@fsij.org>
- * eval.c: `$?'¤òthread local¤Ë
+ * time.c (num_exact): Use to_r method only if to_int method is
+ available.
+ [ruby-core:53764] [Bug #8173] Reported by Hiro Asari.
- * Makefile.in (install): install»þ¤Ëstrip¤ò¹Ô¤¦
+Wed Mar 27 12:07:40 2013 Tanaka Akira <akr@fsij.org>
- * configure.in: install»þ¤Îstrip¤Î¸¡½Ð
+ * test/-ext-/num2int/test_num2int.rb (test_num2ll): test LLONG_MIN,
+ not LONG_MIN.
- * configure.in: NEXTSTEPÂбþ
+Wed Mar 27 12:02:45 2013 Tanaka Akira <akr@fsij.org>
- * version 0.99.1-960730
+ * internal.h (TIMET_MAX_PLUS_ONE): definition simplified.
-Tue Jul 30 16:40:35 1996 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+Wed Mar 27 06:39:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * dln.c (dln_load): NeXT dln(mach-o)Âбþ¡¥configure¤Ï̤Âбþ
+ * lib/mkmf.rb (MAIN_DOES_NOTHING): force to refer symbols for tests
+ to be preserved. [ruby-core:53745] [Bug #8169]
-Tue Jul 30 09:46:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Mar 27 05:15:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * process.c (f_system): Ê£¿ô°ú¿ô¤â¤È¤ì¤ë¤è¤¦¤Ë
+ * configure.in (RUBY_REPLACE_TYPE): define SIGNEDNESS_OF_type same as
+ check_signedness of mkmf.rb.
- * process.c (f_exec): Ê£¿ô°ú¿ô¤â¤È¤ì¤ë¤è¤¦¤Ë
+ * internal.h (TIMET_MAX, TIMET_MIN, TIMET_MAX_PLUS_ONE): use
+ SIGNEDNESS_OF_TIME_T.
- * array.c (ary_append): ÇÛÎó(¤Þ¤¿¤ÏEnum)¤ÎÍ×ÁǤòÇ˲õŪ¤ËÄɲÃ
+Wed Mar 27 00:28:45 2013 Tanaka Akira <akr@fsij.org>
- * array.c (ary_plus): Enum¤Ï¤½¤ÎÍ×ÁǤòÄɲÃ
+ * internal.h (TIMET_MAX_PLUS_ONE): Defined.
- * file.c (file_s_open): File.open¤òÄɲÃ
+ * thread.c (double2timeval): Saturate out-of-range values.
- * struct.c (struct_new): FIX2INT¤ò˺¤ì¤Æ¤¤¤¿
+Tue Mar 26 23:41:18 2013 Tanaka Akira <akr@fsij.org>
- * file.c (Init_File): exists? -> exist?
+ * internal.h: Define TIMET_MAX and TIMET_MIN here.
- * object.c (obj_is_kind_of): is_kind_of? -> kind_of?, is_a?
+ * time.c: Remove TIMET_MAX and TIMET_MIN definitions.
- * object.c (obj_is_instance_of): is_instance_of? -> instance_of?
+ * thread.c: Ditto.
-Mon Jul 29 16:40:02 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread_pthread.c: Remove TIMET_MAX definition.
- * parse.y (parse_regx): ¼°Å¸³«¤ò¹Ô¤Ã¤¿¾ì¹ç¡¤casefold¤ÎÀßÄ꤬¤Ç¤­¤Æ
- ¤¤¤Ê¤«¤Ã¤¿¡¥
+ * thread_win32.c: Ditto.
- * object.c (true_type): TRUE/FALSE¤Ëtype¤ò¼ÂÁõ¡¥
+Tue Mar 26 22:31:10 2013 Tanaka Akira <akr@fsij.org>
- * parse.y (read_escape): 3ʸ»ú°ÊÆâ¤Îoctal¤ËÂбþ(\0¤È¤«)
+ * ext/socket/socket.c (sockaddr_len): return the shortest length for
+ unknown socket address.
-Fri Jul 26 00:31:45 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Mar 26 22:14:46 2013 Tanaka Akira <akr@fsij.org>
- * array.c (ary_reverse_bang): in-place¤ÇÇÛÎó¤òȿž¤µ¤»¤ë
- (ary_sort_bang): in-place¤Çsort¤¹¤ë
- (ary_sort): sort¤·¤¿ÇÛÎó¤òÊÖ¤¹¤è¤¦¤Ë
- (ary_delete_at): »ØÄꤷ¤¿°ÌÃÖ¤ÎÍ×ÁǤòºï½ü¤¹¤ë
+ * thread.c (double2timeval): convert the infinity to TIME_MAX to avoid
+ SEGV by Thread.new {}.join(Float::INFINITY) on
+ Debian GNU/Linux (amd64).
- * eval.c (rb_call): stack¿¼¤µ¥Á¥§¥Ã¥¯¤òËè²ó¤Ï¹Ô¤ï¤Ê¤¤¤è¤¦¤Ë
+Mon Mar 25 07:09:20 2013 Eric Hodel <drbrain@segment7.net>
- * error.c (Warning): ¼Â¹ÔÃæ¤Îwarning¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿
+ * lib/rinda/tuplespace.rb: Only return tuple entry once on move,
+ either through port or regular return, not both. This results in a
+ 120% speedup when combined with #8125. Patch by Joel VanderWerf.
+ [ruby-trunk - Feature #8119]
- * eval.c (compile): Î㳰ȯÀ¸¤òʬΥ¡¥
+Mon Mar 25 06:59:01 2013 Eric Hodel <drbrain@segment7.net>
- * eval.c (f_eval): ÊÑ¿ôrb_in_eval¤òÀµ¤·¤¯´ÉÍý¤¹¤ë¤è¤¦¤Ë
+ * test/rinda/test_rinda.rb: Skip IPv6 tests if no IPv6 addresses
+ exist. Skip fork-dependent test if fork is not available.
+ [ruby-trunk - Bug #8159]
- * ext/dbm/dbm.c (fdbm_store): ³ÊǼ¤¹¤ëkey¤òʸ»úÎó¤ËÊÑ´¹
+Sun Mar 24 10:38:24 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (rb_call): ̵¸ÂºÆµ¢¤Î¥Á¥§¥Ã¥¯¤òÂç°èæ½Ð¤ò¹Ô¤¦C method¤Ë¤â
- Âбþ¤µ¤»¤¿¡¥thread¤Îstack¿¼¤µ¥Á¥§¥Ã¥¯¥ë¡¼¥Á¥ó¤òήÍÑ¡¥
+ * addr2line.c (putce): suppress unused return value warning.
- * parse.y (yylex): Âè1°ú¿ô¤Îunary -/+¤ÎȽÄ꤬´Ö°ã¤Ã¤Æ¤¤¤¿¡¥
+Mon Mar 25 02:01:03 2013 Narihiro Nakamura <authornari@gmail.com>
- * parse.y (yylex): unary +¤Ç¿ô»ú¤ò;·×¤ËÆÉ¤ó¤Ç¤¤¤¿(ex. +5 -> 55)
+ * proc.c (bm_free): need to clean up the mark flag of a free and
+ unlinked method entry. [Bug #8100] [ruby-core:53439]
-Thu Jul 25 12:15:04 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Mar 24 22:13:51 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * parse.y (yylex): Û£Ëæ¤Ç¤Ê¤¤°ú¿ô¤ËÂФ·¤Æ·Ù¹ð¤ò½Ð¤·¤Æ¤¤¤¿¡¥
+ * string.c (rb_str_rpartition): revert r39903, and convert byte offset
+ to char offset; the return value of rb_reg_search is byte offset,
+ but other than it of rb_str_rpartition expects char offset.
+ [Bug #8138] [ruby-dev:47183]
- * eval.c (iterator_p): °ú¿ô¤Ç¸Æ¤ó¤Ç¤âÀµ¤·¤¤·ë²Ì¤òÊÖ¤¹¤è¤¦¤Ë¡¥
+Sun Mar 24 18:29:46 2013 Akinori MUSHA <knu@iDaemons.org>
- * parse.y: break/next/redo/retry¤Î¥á¥½¥Ã¥É²½¡¥
+ * string.c (rb_str_rpartition): Fix String#rpartition(/re/)
+ against a multibyte string. [Bug #8138] [ruby-dev:47183]
- * sample/ruby-mode.el (ruby-calculate-indent): nest¤Î¥Á¥§¥Ã¥¯¥ß¥¹
+Sun Mar 24 13:42:24 2013 Narihiro Nakamura <authornari@gmail.com>
- * sample/ruby-mode.el (ruby-parse-region): ͽÌó¸ì¤Î¥Á¥§¥Ã¥¯¤ò¶¯²½
+ * gc.c (GC_ENABLE_LAZY_SWEEP): new macro to switch lazy sweeping
+ for debugging. [Feature #8024] [ruby-dev:47135]
- * parse.y (primary): unless/until¤ÎÉü³è
+Sun Mar 24 12:55:47 2013 Narihiro Nakamura <authornari@gmail.com>
-Tue Jul 23 18:50:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * gc.c: We have no chance to expand the heap when lazy sweeping is
+ restricted. So collecting is often invoked if there is not
+ enough free space in the heap. Try to expand heap when this is
+ the case.
- * array.c (Array#empty?), Hash.c (Hash#empty?), ext/dbm/dbm.c (DBM#empty?):
- ¶õ¤ÎȽÄê½Ò¸ì
+Sun Mar 24 11:03:31 2013 Tanaka Akira <akr@fsij.org>
- * eval.c (f_unless): if¤ÎµÕ¤ò¤¹¤ë¥¤¥Æ¥ì¡¼¥¿
+ * test/ruby/test_require.rb: Remove temporally files in the tests.
- * eval.c (f_until): while¤ÎµÕ¤ò¤¹¤ë¥¤¥Æ¥ì¡¼¥¿
+ * test/ruby/test_rubyoptions.rb: Ditto.
- * parse.y: not¤ÎÍ¥Àè½ç°Ì¤òand/or¤è¤ê¹â¤¯
+ * test/logger/test_logger.rb: Ditto.
- * parse.y (expr): `!'¤ò°ú¿ô³ç¸Ì¤ò¾Êά¤·¤¿call¤Ç¤âÍ­¸ú¤Ë
+ * test/psych/test_psych.rb: Ditto.
-Mon Jul 22 10:15:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/readline/test_readline.rb: Ditto.
- * version 0.99-960722
+ * test/syslog/test_syslog_logger.rb: Ditto.
- * array.c (ary_print_on): OFS¤ÎNIL¥Á¥§¥Ã¥¯¤¬ÉÔ´°Á´
+ * test/webrick/test_httpauth.rb: Ditto.
- * ruby.c (load_file): ɸ½àÆþÎϤ«¤é¤Î¥¹¥¯¥ê¥×¥È¤¬¶õ¤Î»þ¤ËÂбþ¡¥
+ * test/zlib/test_zlib.rb: Ditto.
- * ruby.c (proc_options): -w¤Ç¤Ï°ú¿ô̵¤·¤Î»þ¤Ë¤Ïɸ½àÆþÎϤ«¤é¥¹¥¯¥ê
- ¥×¥È¤ò¤È¤ë(-v¤Ç¤Ï¤¿¤ó¤Ë½ªÎ»¤¹¤ë)¡¥
+Sun Mar 24 05:36:29 2013 Eric Hodel <drbrain@segment7.net>
- * array.c (ary_compact): nil¤ÎÍ×ÁǤò¼è¤ê½ü¤¯¥á¥½¥Ã¥É
+ * lib/rinda/ring.rb: Added documentation for multicast support.
- * array.c (ary_nitems): nil¤Ç¤Ê¤¤Í×ÁǤò¿ô¤¨¤ë¥á¥½¥Ã¥É
+ * NEWS: Point to above documentation.
-Sun Jul 20 00:51:53 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Mar 24 05:32:39 2013 Eric Hodel <drbrain@segment7.net>
- * ruby.c (proc_options): -w option¤òÄɲÃ
+ * test/rinda/test_rinda.rb: Restore tests commented out while fixing
+ test slowdown bug before r39895.
- * parse.y: {}¤¬ÊĤ¸¤Æ¤¤¤Ê¤¤»þ¤Ë¤ÏŸ³«¤·¤Ê¤¤Ê¸»úÎó¤ò
+Sun Mar 24 05:03:36 2013 Eric Hodel <drbrain@segment7.net>
-Fri Jul 19 16:16:05 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rinda/ring.rb: Add multicast support to Rinda::RingFinger and
+ Rinda::RingServer. [ruby-trunk - Bug #8073]
+ * test/rinda/test_rinda.rb: Test for the above.
- * version 0.99-960719
+ * NEWS: Update with Rinda multicast support
- * lib/find.rb: ÀÐÄÍÈÇ(prune¤Î³ÈÄ¥ÉÕ¤­)
+Sun Mar 24 04:13:27 2013 Eric Hodel <drbrain@segment7.net>
- * file.c (test_l): lstat¤ÇÄ´¤Ù¤Ê¤¤¤È¤Í¡¥
+ * test/rinda/test_rinda.rb: Fixed test failures in r39890 and r39891
+ due to stopping DRb service.
- * eval.c (f_throw): Âè2°ú¿ô¤ò¾Êά²Äǽ¤Ë¡¥
+Sun Mar 24 03:34:02 2013 Eric Hodel <drbrain@segment7.net>
- * parse.y (str_extend): {}¤Î¥Í¥¹¥È¤ËÂбþ
+ * lib/rinda/rinda.rb: Fixed loss of tuple when remote is alive but the
+ call stack was unwound. Patch by Joel VanderWerf.
+ [ruby-trunk - Bug #8125]
+ * test/rinda/test_rinda.rb: Test for the above.
-Thu Jul 18 18:25:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Mar 24 02:14:53 2013 Tanaka Akira <akr@fsij.org>
- * version 0.99-960718
+ * test/mkmf/test_have_macro.rb: remove temporally files in the tests.
- * parse.y (str_extend): ʸ»úÎóÃæ¤Î¼°Å¸³«¤Ë \" ' ` / ¤ò´Þ¤à»ö¤¬¤Ç¤­
- ¤ë¤è¤¦¤Ë¡¥
+Sat Mar 23 23:50:04 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Jul 16 15:55:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * addr2line.c (kprintf): added from FreeBSD libstand's printf.
+ this is consided as async signal safe function.
- * sample/ruby-mode.el (ruby-parse-region): Àµµ¬É½¸½Æâ¤Î¥¨¥¹¥±¡¼¥×
- ¤ËÂбþ
+ * addr2line.c (rb_dump_backtrace_with_lines): use kfprintf.
+ [Bug #8144] [ruby-core:53632]
- * version 0.99-960716
+Sat Mar 23 23:28:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Fri Jul 12 10:06:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divide): Use Qnil and NIL_P
+ instead of (VALUE)0 as a return value.
- * io.c (f_select): °ú¿ô¤Îclose check.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div): ditto.
- * ruby.c (load_file): #!¹Ô¤Î°ú¿ô¥Á¥§¥Ã¥¯¤òÂè1°ú¿ô¤Ë¸ÂÄê(¼Â¤ò¤¤¤¦¤È
- DOS²þ¹ÔÂкö)
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divremain): ditto.
-Wed Jul 10 17:18:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_remainder): ditto.
- * version 0.99-960710
+Sat Mar 23 17:39:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * time.c (time_s_timegm/time_s_timelocal): »þ´Ö¤òÀ¸À®¤¹¤ë¥á¥½¥Ã¥É
+ * vm_eval.c (check_funcall_respond_to): preserve passed_block, which
+ is modified in vm_call0_body() via vm_call0(), and caused a bug of
+ rb_check_funcall() by false negative result of rb_block_given_p().
+ re-fix [ruby-core:53650] [Bug #8153].
+ [ruby-core:53653] [Bug #8154]
-Mon Jun 17 15:59:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Mar 22 17:48:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 0.99-960617
+ * lib/forwardable.rb (Forwardable::FILE_REGEXP): create regexp object
+ outside sources for eval, to reduce allocations in def_delegators
+ wrappers. //o option does not make each regexps shared. patch by
+ tmm1 (Aman Gupta) in [ruby-core:53620] [Bug #8143].
- * parse.y (yyerror): ¥¨¥é¡¼É½¼¨¤Î´Êά²½¡¥
+Fri Mar 22 17:38:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jun 12 14:11:01 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * load.c (rb_feature_p), vm_core.h (rb_vm_struct): turn
+ loaded_features_index into st_table. patches by tmm1 (Aman Gupta)
+ in [ruby-core:53251] and [ruby-core:53274] [Bug #8048]
- * signal.c (rb_trap_exit): trap 0¤Ïthread¤òÀ¸À®¤»¤º¤Ë½èÍý¤¹¤ë¡¥
+Fri Mar 22 10:29:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jun 7 10:17:01 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/bigdecimal/bigdecimal.c: Fix style.
- * array.c/hash.c (indexes): ÇÛÎó1°ú¿ô¤Î¥Ñ¥¿¡¼¥ó¤ò̵¤¯¤·¤¿¡¥ÇÛÎó¤Î
- ¾ì¹ç¤Ï`*ary'¤ò»È¤Ã¤Æ¤â¤é¤ª¤¦¡¥
+Fri Mar 22 05:30:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (thread_wait_threads): main_thread¤¬½ªÎ»¤¹¤ëÁ°¤Ë¾¤Î
- thread¤òÂÔ¤Ä(¶¯À©Åª¤Ë¤Ï½ªÎ»¤µ¤»¤Ê¤¤)¡¥
- (ruby_run): ¾¤Îthread¤òÂԤäƤ¤¤ë´Ö¤Ë¥·¥°¥Ê¥ë¤¬Í褿¤é¡¤Á´thread
- ¤ò¶¯À©½ªÎ»¤µ¤»¤ë¡¥
+ * parse.y (ambiguous_operator): refine warning message, since this
+ warning is shown after literal too.
- * eval.c (rb_fail): ¥á¥½¥Ã¥É̾¤ò`$!'¤ËËä¤á¹þ¤à¡¥
+Fri Mar 22 04:51:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (thread_create): main_thread¤Î¥³¥ó¥Æ¥¯¥¹¥È¤¬¥»¡¼¥Ö¤µ¤ì¤Ê
- ¤¤¾ì¹ç¤¬¤¢¤Ã¤¿¡¥
+ * vm_insnhelper.c (vm_callee_setup_keyword_arg): should check required
+ keyword arguments even if rest hash is defined. [ruby-core:53608]
+ [Bug #8139]
- * process.c (f_sleep): »þ´Ö¤ò»ØÄꤻ¤º¡¤thread¤¬¤Ò¤È¤Ä¤·¤«¤Ê¤¤¾õ¶·
- ¤Ë¤âÂбþ¡¥
+Fri Mar 22 01:00:17 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * eval.c (thread_create): create¸å¡¤fn¤ò¸Æ¤Ó½Ð¤¹Á°¤Ëcontext switch
- ¤¬µ¯¤­¤ë¤È°ã¤¦context¤Çfn¤¬¼Â¹Ô¤µ¤ì¤Æ¤·¤Þ¤¦¥Ð¥°¡¥
+ * process.c (rb_execarg_addopt, run_exec_pgroup): use rb_pid_t
+ instead of pid_t.
-Mon Jun 3 08:03:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/pty/pty.c (raise_from_check, pty_check): ditto.
- * struct.c (struct_s_def): ¥á¥ó¥Ð¤Î»ØÄê¤òʸ»úÎ󡤥·¥ó¥Ü¥ë(FIXNUM)
- ÁÐÊý¤Ç²Äǽ¤Ë¤·¤¿¡¥
+Fri Mar 22 00:04:15 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/etc/etc.c (Init_etc): ¹½Â¤ÂÎ¥ª¥Ö¥¸¥§¥¯¥È¤òGC¤«¤éÊݸ¤¿¡¥
+ * addr2line.c (rb_dump_backtrace_with_lines): output line at once.
- * error.c (rb_sys_fail): nil/FALSE¤ò°ú¿ô¤È¤·¤Æ¼õ¤±ÉÕ¤±¤ë¤è¤¦¤Ë¡¥
+Thu Mar 21 23:17:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu May 30 16:19:08 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread.c (ruby_kill): get rid of deadlock on signal 0.
+ [ruby-dev:47182] [Bug #8137]
- * eval.c (thread_select): EINTR¤ËÂбþ¡¥
+Thu Mar 21 22:39:46 2013 Naohisa Goto <ngotogenome@gmail.com>
-Wed May 29 11:04:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * marshal.c (marshal_dump, marshal_load): workaround for segv on
+ Intel Solaris compiled with Oracle SolarisStudio 12.3.
+ Partly revert r38174. [ruby-core:52042] [Bug #7805]
- * eval.c (f_catch): catch/throw¤ò¼ÂÁõ¤·¤¿¡¥
+Thu Mar 21 16:48:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue May 28 13:30:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * parse.y (simple_re_meta): escape all closing characters, not only
+ round parenthesis. [ruby-core:53578] [Bug #8133]
- * version 0.99-960528
+Thu Mar 21 13:50:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (thread_cleanup): main thread¤¬½ªÎ»¤¹¤ë¤È¾¤Îthread¤â½ªÎ»
- ¤¹¤ë¤³¤È¤ÎÌÀ³Î²½¡¥
+ * vm_core.h (UNINITIALIZED_VAR): suppress warnings by clang 4.2.
+ [ruby-core:51742] [Bug #7756]
- * signal.c (trap): SIGINT¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÀßÄê¥ß¥¹(ËÜÅö¤ËSIG_DFL¤Ç¤Ï
- ¤Þ¤º¤«¤Ã¤¿)¡¥ruby¤Ç¤Ï¤Á¤ã¤ó¤È¥Ï¥ó¥É¥ë¤·¤Ê¤¤¤È¡¥
+Thu Mar 21 07:34:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c (thread_interrupt): SIGINT¤Ïmain_thread¤ËÎã³°¤òȯÀ¸¤µ¤»¤ë
- ¤è¤¦¤Ë¡¥
+ * ext/date/date_core.c: Typo in Date::MONTHNAMES by Matt Gauger
+ [GH fixes #261]
-Mon May 27 15:13:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Mar 20 22:53:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (thread_status): thread¤Î¾õÂÖ¤òÊÖ¤¹¥á¥½¥Ã¥É¡¥thread¤Î½ªÎ»
- ¤òÂÔ¤¿¤Ê¤¤¡¥
+ * lib/mkmf.rb (find_library): fix to format message.
+ [ruby-core:53568] [Bug #8130]
- * eval.c (thread_value): °ì¼ï¤Îpromise¤ò¼ÂÁõ¤¹¤ë¤¿¤á¤Î¥á¥½¥Ã¥É¡¥
+Wed Mar 20 22:52:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (thread_join): ÂԤäƤ¤¤ëthread¤¬Îã³°¤òµ¯¤³¤·¤¿»þ¤Ë¤Ï¡¤
- join¤¬¤½¤ÎÎã³°¤òȯÀ¸¤¹¤ë¤è¤¦¤Ë¡¥
+ * lib/mkmf.rb (install_dirs, with_destdir): prefix with DESTDIR
+ directories to install only unless bundled extension libraries.
+ [ruby-core:53502] [Bug #8115]
- * eval.c (thread_create): thread¤Ç¤ÎÎã³°¤òpropagate¤·¤Ê¤¤¤è¤¦¤Ë¡¥
+Wed Mar 20 17:47:53 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri May 24 10:47:53 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/win32ole/test_err_in_callback.rb (TestErrInCallBack#setup):
+ allow using different root for source and build directories.
+ this may fixes a minor problem of r39834.
- * enum.c (Init_Enumerable): `size' as alias to the `length'
+Wed Mar 20 16:40:48 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * eval.c (thread_save_context): `$@', `$!'¤ò¥¹¥ì¥Ã¥ÉËè¤Ë¥»¡¼¥Ö¡¥
+ * test/ruby/test_signal.rb (test_hup_me): skip if HUP isn't supported.
+ On Windows this test causes ArgumentError.
- * eval.c (superclass): ¥¨¥é¡¼É½¼¨¤ò¤è¤ê¿ÆÀڤˡ¥
+Wed Mar 20 16:24:12 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Thu May 23 10:38:41 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/rubygems/test_gem_installer.rb (test_install_extension_flat):
+ use ruby in build directory in case ruby is not installed.
+ [ruby-core:53265] [Bug #8058]
- * version 0.99-960523
+Wed Mar 20 15:22:07 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * eval.c (superclass): ¥¨¥é¡¼»þ¤Ë¥¹¡¼¥Ñ¡¼¥¯¥é¥¹Ì¾¤ò(ʬ¤«¤ì¤Ð)ɽ¼¨
- ¤¹¤ë¤è¤¦¤Ë¡¥
+ * test/win32ole/test_err_in_callback.rb (TestErrInCallBack#setup): use
+ relative path to get rid of "too long commandline" error.
-Wed May 22 19:48:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Mar 20 04:27:42 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * parse.y (superclass): ¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤Î»ØÄê»Ò¤ò`:'¤«¤é`<'¤ËÊѹ¹¡¥
+ * test/rinda/test_rinda.rb: remove unused variables.
+ patched by Vipul A M <vipulnsward@gmail.com>
-Tue May 21 09:27:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Mar 20 04:15:32 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * lib/thread.rb: thread¤ò¥µ¥Ý¡¼¥È¤¹¤ë¥¯¥é¥¹(Mutex, Queue)¡¥
+ * ext/bigdecimal/bigdecimal.c: fixed typo.
+ patched by Vipul A M <vipulnsward@gmail.com>
-Mon May 20 09:39:49 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Mar 16 03:40:49 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * time.c (time_cmp): ÉâÆ°¾®¿ôÅÀ¿ô¤â°·¤¨¤ë¤è¤¦¤Ë¡¥
- (time_minus): Time - Time¤¬ÉâÆ°¾®¿ôÅÀ¿ô¤òÊÖ¤¹¤è¤¦¤Ë¡¥
+ * test/ruby/test_signal.rb (test_hup_me): added a few comments.
-Fri May 17 15:40:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Mar 16 03:39:38 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * process.c (rb_proc_exec): ThreadÂбþ»þ¤Ëexec¤ÎľÁ°¤Ë
- ITIMER_VIRTUAL¤ò¥ê¥»¥Ã¥È¤¹¤ë¡¥
+ * thread.c (ruby_kill): added a few comments.
-Tue May 14 02:12:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Mar 16 03:36:56 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * signal.c (sighandle): SIGINT¤ËÂФ·¤Æ¥Ç¥Õ¥©¥ë¥È¤ÇÎã³°¤òȯÀ¸¤µ¤»¤ë
- ¤Î¤ò¤ä¤á¡¤status 130¤Çexit¤¹¤ë¤è¤¦¤Ë¤·¤¿¡¥
+ * thread.c (ruby_kill): release GVL while waiting signal delivered.
- * eval.c (thread_schedule): Thread¤Î¥Ð¥°¤Ï¤Û¤È¤ó¤É¤È¤ì¤¿¤è¤¦¤À¡¥
+Tue Mar 19 19:50:48 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri May 10 11:21:08 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ruby_kill (internal.h, thread.c): use rb_pid_t instead of pid_t.
+ this fixes the build failure of mswin introduced at r39819.
- * eval.c (thread_schedule): ¥æ¡¼¥¶¥ì¥Ù¥ëThreadµ¡Ç½¡¥¸úΨ¤Ï¤È¤â¤«¤¯
- °Ü¿¢À­¤Ï¤¢¤ë¡¥º£¸å¡¤thread´Ö¤ÎÄÌ¿®µ¡Ç½¤ò¼ÂÁõ¤¹¤ëͽÄê¡¥
+Tue Mar 19 17:09:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu May 2 21:22:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * string.c (rb_str_conv_enc_opts): convert with one converter, instead
+ of re-creating converters for each buffer expansion.
- * time.c (time_timeval): struct timeval¤òľÀÜÊÖ¤¹¤è¤¦¤Ë(staticÊÑ¿ô
- ¤ò»È¤ï¤Ê¤¤)¡¥
+Tue Mar 19 17:06:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed May 1 17:27:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * dir.c (glob_helper): compose HFS file names from UTF8-MAC.
+ [ruby-core:48745] [Bug #7267]
- * process.c (f_sleep): À°¿ô°Ê³°¤Îtime¤ò»ØÄê¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+Sat Mar 16 01:44:29 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Apr 25 08:19:15 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * internal.h: added a declaration of ruby_kill().
+ * thread.c (ruby_kill): helper function of kill().
- * file.c (file_s_dirname): ¥Õ¥¡¥¤¥ë̾¤¬"/"¤ò´Þ¤Þ¤Ê¤¤»þ¡¤"."¤òÊÖ¤¹
- ¤è¤¦¤Ë(GNU dirname¤Î»ÅÍÍ)¡¥
+ * signal.c (rb_f_kill): use ruby_kill() instead of kill().
+ * signal.c (rb_f_kill): call rb_thread_execute_interrupts()
+ to ensure that make SignalException if sent a signal
+ to myself. [Bug #7951] [ruby-core:52864]
- * file.c (file_s_basename): ¤Þ¤Ànil¤È0¤òº®Æ±¤·¤Æ¤¤¤ë¥½¡¼¥¹¤¬»Ä¤Ã¤Æ
- ¤¤¤¿¡¥
+ * vm_core.h (typedef struct rb_thread_struct): added
+ th->interrupt_cond.
+ * thread.c (rb_threadptr_interrupt_common): added to
+ initialization of th->interrupt_cond.
+ * thread.c (thread_create_core): ditto.
- * parse.y (exprs): ¥¨¥é¡¼¥ê¥«¥Ð¥ê¤òÄɲá¥
+ * test/ruby/test_signal.rb (TestSignal#test_hup_me): test for
+ the above.
-Wed Apr 24 15:51:05 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Mar 16 00:42:39 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * string.c (str_chop_bang): CRLF¤Î¾ì¹ç2 bytes¤òchop!¤¹¤ë¤è¤¦¤Ë¡¥
+ * io.c (linux_iocparm_len): enable only exist _IOC_SIZE().
+ Because musl libc doesn't have it. [Bug #8051] [ruby-core:53229]
- * ext/socket/socket.c (tcp_svr_s_open): ¤Þ¤Ànil¤È0¤òº®Æ±¤·¤Æ¤¤¤ë¥½¡¼
- ¥¹¤¬»Ä¤Ã¤Æ¤¤¤¿¡¥
+Tue Mar 19 10:05:04 2013 Shota Fukumori <her@sorah.jp>
-Tue Apr 23 18:14:25 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/objspace/objspace.c: Fix typo in doc. Patch by Sho Hashimoto.
+ [Bug #8116] [ruby-dev:47177]
- * pack.c (pack_pack): "A/a"¤Î¥Ð¥°¡¥Í¾·×¤Êpadding¤¬Æþ¤Ã¤Æ¤¤¤¿¡¥
+Tue Mar 19 02:13:00 2013 Kenta Murata <mrkn@mrkn.jp>
-Thu Apr 18 13:02:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * configure.in: set ac_cv_prog_cxx if CXX is supplied.
- * configure.in: ¥¢¡¼¥­¥Æ¥¯¥Á¥ã°Í¸Éô¤òÊ̥ǥ£¥ì¥¯¥È¥ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë
- ¤¹¤ë¤è¤¦¤Ë¡¥
+Tue Mar 19 01:18:00 2013 Kenta Murata <mrkn@mrkn.jp>
- * parse.y (yyerror): ¥¨¥é¡¼È¯À¸»þ¤Ë¥¨¥é¡¼¹Ô¤È¤½¤Î°ÌÃÖ¤òɽ¼¨¤¹¤ë¤è
- ¤¦¤Ë¡¥
+ * configure.in: Fix c++ compiler auto-selection not only for
+ Darwin 11.x, but also the other versions of Darwin.
-Wed Apr 17 14:22:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Mar 19 00:26:22 2013 Narihiro Nakamura <authornari@gmail.com>
- * defines.h: SAFE_SIGHANDLE¤ò̵¤¯¤·¡¤´í¸±¤ÊÁªÂò¤Ï¤Ç¤­¤Ê¤¤¤è¤¦¤Ë¡¥
+ * gc.c: Improve accuracy of objspace_live_num() and
+ allocated/freed counters. patched by tmm1(Aman Gupta).
+ [Bug #8092] [ruby-core:53392]
- * io.c (io_ungetc): ¿·µ¡Ç½¡¥
+Mon Mar 18 21:42:48 2013 Narihiro Nakamura <authornari@gmail.com>
- * ruby.c (load_file): ¥Õ¥¡¥¤¥ë¤«¤é¤ÎÆÉ¤ß¹þ¤ßÊý¼°¤¬ÊѤï¤Ã¤¿¤Î¤ËÂбþ¡¥
+ * gc.c: Avoid unnecessary heap growth. patched by tmm1(Aman Gupta).
+ [Bug #8093] [ruby-core:53393]
- * parse.y (compile_file): ¥Õ¥¡¥¤¥ë¤«¤é¤ÎÆþÎϤò°ìÅÙÁ´ÉôÆÉ¤ß¹þ¤à¤Î¤ò
- »ß¤á¤Æ¡¤gets¤ò»È¤¦¤³¤È¤Ë¤·¤¿¡¥
+Mon Mar 18 17:58:36 2013 Narihiro Nakamura <authornari@gmail.com>
-Wed Apr 10 17:40:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * gc.c: Fix unlimited memory growth with large values of
+ RUBY_FREE_MIN. patched by tmm1(Aman Gupta).
+ [Bug #8095] [ruby-core:53405]
- * version 0.98
+Mon Mar 18 14:46:19 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Apr 9 09:54:30 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/win32ole/test_err_in_callback.rb
+ (TestErrInCallBack#test_err_in_callback): shouldn't create a file in
+ the top of build directory.
- * parse.y (iter_block): ¥¤¥Æ¥ì¡¼¥¿¥Ö¥í¥Ã¥¯¤Î»ØÄê¤ò¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·
- ¤Ë¸ÂÄꡥʸˡ¤ÎÌÀ³Î²½¡¥
+Mon Mar 18 13:29:52 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * eval.c (rb_eval): ¾ò·ï¼°¤ÎÀµµ¬É½¸½¤ÎÈæ³Ó¤òinline²½¡¥
+ * vm_dump.c (backtrace): on darwin use custom backtrace() to trace
+ beyond _sigtramp. darwin's backtrace can't trace beyond signal
+ trampoline with sigaltstack.
- * eval.c (rb_eval): defined? ¤Î ÄêµÁ¾ðÊó(¼ïÊÌ)¤òʸ»úÎó¤ÇÊÖ¤¹¡¥
+ * configure.in: check execinfo.h on darwin.
- * node.h: NODE_BEGIN -> NODE_RESCUE, NODE_ENSURE¤ËʬΥ¡¥
+Mon Mar 18 11:03:23 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * eval.c (rb_eval): option -n/-p¤Î¥È¥Ã¥×¥ì¥Ù¥ë¥ë¡¼¥×¤ÎinlineŸ³«¡¥
+ * vm_exec.h (END_INSN): revert r39517 because the segv seems fixed by
+ r39806.
- * parse.y (cond0): ¾ò·ï¼°Ãæ¤Îʸ»úÎó¤ÏÈæ³Ó¤ÎÂоݤȤ·¤Ê¤¤
+Mon Mar 18 10:41:06 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Mar 27 12:33:54 1996 Tairo Nomura <tairo@hucom.tp.titech.ac.jp>
+ * vm_exec.c: Correct predefined macro name. This typo is introduced by
+ r36534 and should be backported to ruby_2_0_0.
- * defines.h: NeXTÂбþ
+Mon Mar 18 03:18:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Wed Mar 27 10:02:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * array.c: Typo in Array#delete by Timo Sand [GH fixes #258]
- * parse.y: ͽÌó¸ì¤ÎÊѹ¹ continue -> next
+Mon Mar 18 01:14:56 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Mar 25 07:34:37 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * io.c (io_fillbuf): show fd number on failure to debug.
+ http://c5632.rubyci.org/~chkbuild/ruby-trunk/log/20130316T050302Z.diff.html.gz
- * parse.y (parse_regx): o(once)¥ª¥×¥·¥ç¥ó¤òÄɲá¥
+Sun Mar 17 02:38:21 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Mar 22 14:25:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/date/date_core.c: include sys/time.h for avoiding implicit
+ declaration of gettimeofday().
- * version 0.97d
+Sun Mar 17 00:55:31 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (dyna_var_defined): ưŪ¥í¡¼¥«¥ëÊÑ¿ô¤ÎÄêµÁ¥Á¥§¥Ã¥¯Íѥ롼
- ¥Á¥ó¡¥
+ * include/ruby/missing.h: removed __linux__. it's unnecessary.
- * parse.y (gettable): eval()¤ÎÃæ¤Ç¤ÎưŪ¥í¡¼¥«¥ëÊÑ¿ô(´û¤ËÃͤò»ý¤Ã
- ¤Æ¤¤¤ë¤â¤Î)¤Î¸¡½Ð¤Ë¼ºÇÔ¤·¤Æ¤¤¤¿¡¥
+Fri Mar 15 14:57:16 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Mar 19 10:46:47 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread.c: disabled _FORTIFY_SOURCE for avoid to hit glibc bug.
+ [Bug #8080] [ruby-core:53349]
+ * test/ruby/test_io.rb (TestIO#test_io_select_with_many_files):
+ test for the above.
- * version 0.97c
+Wed Mar 13 15:16:35 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * re.c (reg_s_new): compile»þ¤Ësegmentation fault¡¥
+ * include/ruby/missing.h (__syscall): moved to...
+ * io.c: here. because __syscall() is only used from io.c.
- * parse.y (str_extend): ¤¤¤Ä¤âeval¤¹¤ë¤è¤¦¤Ë¡¥
+ * include/ruby/missing.h: move "#include <sys/type.h>" to ....
+ * include/ruby/intern.h: here. because it was introduced for
+ fixing NFDBITS issue. [ruby-core:05179].
-Wed Mar 13 11:00:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Mar 13 14:38:53 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * parse.y (str_extend): ʸ»úÎóÃæ¤Î¼°Å¸³«¤ÎÉÔÈ÷¤ò̵¤¯¤·¤¿¡¥
+ * include/ruby/missing.h (struct timespec): include <sys/time.h>
- * parse.y: ²¼¼ê¤Ê¥¨¥é¡¼¥ê¥«¥Ð¥ê¤ò³°¤·¤¿¡¥
+Wed Mar 13 13:54:45 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Mar 12 12:30:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * configure.in: check struct timeval exist or not.
+ * include/ruby/missing.h (struct timeval): check HAVE_STRUCT_TIMEVAL
+ properly. and don't include sys/time.h if struct timeval exist.
- * eval.c (rescue): ´Ö°ã¤Ã¤Æensure¤Ç¤âÎã³°¤òÊ᪤·¤Æ¤¤¤¿¡¥
+ * file.c: include sys/time.h explicitly.
+ * random.c: ditto.
+ * thread_pthread.c: ditto.
+ * time.c: ditto.
+ * ext/date/date_strftime.c: ditto.
-Wed Mar 6 12:11:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Mar 15 14:45:02 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * parse.y (var_extend): ÊÑ¿ôŸ³«"#{}"¤Ç¡¤Ç¤°Õ¤Î¼°¤ò½ñ¤±¤ë¤è¤¦¤Ë¤·
- ¤¿¡¤¤³¤ì¤Ç¡ÖÊÑ¿ô¡×Ÿ³«¤Ç¤Ï̵¤¯¤Ê¤Ã¤Á¤ã¤Ã¤¿¤Ê¤¢¡¥
+ * configure.in (_FORTIFY_SOURCE): added a few comments.
- * regex.c (init_syntax_once): `_'¤òword¤ËÄɲá¥
+Fri Mar 15 14:17:55 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * regex.c (re_compile_pattern): `\w',`\W'¤ÎȽÄê¤òsyntax table¤ò»È
- ¤¦¤è¤¦¤Ë¡¥
+ * thread_pthread.c (numberof): renamed from ARRAY_SIZE() because
+ other all files use numberof().
-Tue Feb 27 10:15:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Say Mar 15 01:33:00 2013 Charles Oliver Nutter <headius@headius.com>
- * object.c (obj_inspect): ɽ¼¨¤¹¤ë¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤¬Ìµ¤¤»þ¤Ë¤Ï¡¤
- to_s¤ò»È¤¦¡¥
+ * test/ruby/test_lazy_enumerator.rb (TestLazyEnumerator#test_drop_while):
+ Modify while condition to show dropping remains off after first false
+ value. This change was made in 39711.
- * configure.in: dln¤Î¸¡½Ð¤ò¼«Æ°Åª¤Ë¡¥
+Fri Mar 15 23:06:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Feb 26 19:55:33 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * time.c (GetTimeval): check if already initialized instance.
- * ruby.c (readin): read(2)¤Ç°ìÅ٤˥ե¡¥¤¥ë¤¬ÆÉ¤ß¹þ¤á¤Ê¤¤¾ì¹ç¤ËÂбþ¡¥
+ * time.c (GetNewTimeval): check if newly created instance.
-Sat Feb 24 14:47:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * time.c (time_init_0, time_init_1, time_init_copy, time_mload): must
+ be newly created instance. [ruby-core:53436] [Bug #8099]
- * version 0.97b
+Fri Mar 15 14:51:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 23 11:26:02 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * file.c (rb_sys_fail_path_with_func): share same function, and path
+ may be nil.
- * class.c (rb_define_module): C¸À¸ì¤ÇÄêµÁ¤µ¤ì¤¿¥â¥¸¥å¡¼¥ë¤ÎPATH¤Î
- ÀßÄê˺¤ì¡¥Ê¸»úÎ󲽤Çcore dump¡¥
+Fri Mar 15 08:24:51 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * eval.c (mod_include): Ìá¤êÃͤònil¤Ë¡¥
+ * io.c (rb_sys_fail_path): define & use rb_sys_fail_path0 like r39752
- * version 0.97a
+Fri Mar 15 04:08:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Feb 22 21:03:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * proc.c: Typo in Proc.arity found by Jack Nagel [Bug #8094]
- * array.c (ary_times): ¡ÖÇÛÎó*ʸ»úÎó¡×¤¬join¤ÈƱ¤¸Æ¯¤­¤ò¤¹¤ë¤è¤¦¤Ë¡¥
+Thu Mar 14 16:59:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Feb 21 11:18:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * configure.in (rb_cv_function_name_string): macro for function name
+ string predefined identifier, __func__ in C99, or __FUNCTION__ in
+ gcc.
- * configure.in : fileCount¤òcache¡¥
+ * file.c (rb_sys_fail_path): use RUBY_FUNCTION_NAME_STRING.
- * configure.in : Linux¤ÇELF´Ä¶­¤ò¼«Æ°Åª¤Ë¸¡½Ð¤Ç¤­¤ë¤è¤¦¡¥
+Thu Mar 14 14:12:34 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Feb 20 11:18:09 1996 Mitsuhide Satou <mit-sato@aries.bekkoame.or.jp>
+ * file.c (rb_sys_fail_path): use rb_sys_fail_path0 only on GCC.
+ __func__ is C99 feature.
- * FreeBSD dynamic linkÂбþ¡¥
+Thu Mar 14 12:59:59 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Feb 16 08:50:01 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * file.c (rb_sys_fail_path0): add to append the name of called function
+ to ease debugging for example blow umask_spec failure.
+ http://fbsd.rubyci.org/~chkbuild/ruby-trunk/log/20130309T010202Z.diff.html.gz
- * object.c (obj_inspect): ¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ò»ý¤¿¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤â
- Àµ¤·¤¯É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¡¥
+ * file.c (rb_sys_fail_path): use rb_sys_fail_path0.
-Wed Feb 14 16:56:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Mar 14 12:53:15 2013 Luis Lavena <luislavena@gmail.com>
- * eval.c (rb_eval): ¾ò·ï¼°¤Î`2..2'¤Ê¤Éº¸ÊÕÀ®Î©Ä¾¸å¤Ë±¦ÊÕ¤¬À®Î©¤¹¤ë
- ¥Ñ¥¿¡¼¥ó¤Ë¥Ð¥°¡¥
+ * win32/file.c (get_user_from_path): add internal function that retrieves
+ username from supplied path (refactored).
+ * win32/file.c (rb_file_expand_path_internal): refactor expansion of user
+ home to use get_user_from_path and cover dir_string corner cases.
+ [ruby-core:53168] [Bug #8034]
-Tue Feb 13 18:22:22 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Mar 14 11:53:01 2013 Narihiro Nakamura <authornari@gmail.com>
- * version 0.97
+ * NEWS: describe RUBY_HEAP_SLOTS_GROWTH_FACTOR.
-Fri Feb 9 21:32:55 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Mar 14 10:01:12 2013 Eric Hodel <drbrain@segment7.net>
- * lib/tkscrollbox.rb: ¥¹¥¯¥í¡¼¥ë¤Çtcl¤ÎÀßÄê¤ò¹Ô¤¤¡¤ruby<->wish¤ÎÉÔ
- ÍפÊÄÌ¿®¤ò̵¤¯¤·¤¿¡¥
+ * doc/globals.rdoc: $? is thread-local
-Wed Feb 7 10:26:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Mar 13 23:25:59 2013 Narihiro Nakamura <authornari@gmail.com>
- * string.c (str_aref): index¤òunsigned int¤Ç¤È¤Ã¤Æ¤¤¤¿¡¥
+ * gc.c: allow to tune growth of heap by environment variable
+ RUBY_HEAP_SLOTS_GROWTH_FACTOR. patched by tmm1(Aman Gupta).
+ [Feature #8015] [ruby-core:53131]
- * string.c (str_aref): Èϰϳ°¤Îindex¤ËÂФ·¤Ænil¤òÊÖ¤¹¡¥
+Wed Mar 13 19:43:46 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * parse.y (special_local_set): `$_'¤¬Àë¸À̵¤·¤Ë»È¤ï¤ì¤¿¾ì¹ç¤ËÂбþ¡¥
- ´Ø¿ô¤òvariable.c¤«¤é°Üư¡¥
+ * doc/irb/irb.rd.ja: fix typo
- * string.c (str_sub): ÃÖ´¹³«»Ï°ÌÃÖ¤¬´Ö°ã¤Ã¤Æ¤¤¤¿¡¥
+ * ext/tk/MANUAL_tcltklib.eng: fix typos
-Tue Feb 6 16:17:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/tk/sample/tktextframe.rb (Tk#component_delegates): fix typo
- * sample/ruby-mode.el (ruby-parse-region): ¥³¥á¥ó¥È¤ÎÆÉ¤ßÈô¤Ð¤·¤Î
- ¥Ð¥°¡¥
+Wed Mar 13 15:13:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 2 18:35:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * class.c (rb_obj_singleton_methods): collect methods from the origin
+ class. [ruby-core:53207] [Bug #8044]
- * variable.c (lastline_get): `$_'¤ò`$~'¤ÈƱ¤¸¤è¤¦¤ËSCOPE¥í¡¼¥«¥ë¤Ê
- ÊÑ¿ô¤Ë¤·¤¿¡¥
+Wed Mar 13 14:51:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Feb 1 14:14:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * vm_method.c (rb_export_method): directly override the flag of method
+ defined in prepending class too, not adding zsuper entry.
+ [ruby-core:53106] [Bug #8005]
- * file.c: stat¤Îcache¤ò¤ä¤á¤¿¡¥
+Wed Mar 13 13:06:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jan 31 07:13:08 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * configure.in (rm, shvar_to_cpp, unexpand_shvar): local is not
+ available on old shells.
- * eval.c (proc_s_new): proc¤ÎÃæ¤Çyield¤ò¸Æ¤Ð¤ì¤¿»þ¤Ëcore dump¤·¤Æ
- ¤¤¤¿¡¥¤È¤ê¤¢¤¨¤ºÎã³°¤òȯÀ¸¤µ¤»¤ë¡¥
+ * configure.in (shvar_to_cpp): escape quotes for old shells.
+ [Bug #7959] [Bug #8071]
- * variable.c (rb_class2path): singleton class¤ËÂбþ¡¥
+Wed Mar 13 11:11:07 2013 Shugo Maeda <shugo@ruby-lang.org>
- * ext/etc/etc.c (Init_etc): struct_define¤Î¥¿¡¼¥ß¥Í¡¼¥¿¤¬nil¤À¤Ã¤¿
- (0¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤)¡¥
+ * object.c (Init_Object): remove Module#used, which has been
+ introduced in Ruby 2.0 by mistake. [Bug #7916] [ruby-core:52719]
- * ext/marshal/marshal.c: TRUE/FALSE¤òÅǤ­½Ð¤»¤ë¤è¤¦¤Ë¡¥
+Wed Mar 13 05:49:29 2013 Eric Hodel <drbrain@segment7.net>
- * eval.c (rb_get_method_body): ¥­¥ã¥Ã¥·¥å¤ÎaliasÂбþ¡¤¤¤¤Þ¤Þ¤Ç¤Ï
- alias¤Ï¥­¥ã¥Ã¥·¥å¤ËÆþ¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¡¥
+ * lib/irb.rb: Fix typo
-Tue Jan 30 09:55:13 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Mar 12 22:20:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_eval): NODE_BLOCK - tail recursive(¤È¤¤¤¦¤Û¤É¤Ç¤â¤Ê¤¤
- ¤¬)¡¥
+ * compile.c (iseq_set_arguments, iseq_compile_each): support required
+ keyword arguments. [ruby-core:51454] [Feature #7701]
- * io.c (io_pipe): pipe(2)¤ò¼ÂÁõ¤·¤¿¡¥
+ * iseq.c (rb_iseq_parameters): ditto.
- * eval.c (rb_eval): Qself¤ò¤Ê¤¯¤·¤¿¡¥threadÂбþ¤Ø¤ÎÂè°ìÊâ¡¥Àè¤Ï±ó
- ¤¤¤¬¡Ä¡¥
+ * parse.y (f_kw, f_block_kw): ditto. this syntax is still
+ experimental, the notation may change.
- * eval.c (proc_call): proc¤ÎÃæ¤Ç¤Îreturn¤Ïproc¤Î½ªÎ»¤ò°ÕÌ£¤¹¤ë¤è¤¦
- ¤Ë¡¥¤¿¤À¤·¡¤proc¤«¤é¤Îyield¤ÎÃæ¤Ç¤Îreturn¤ÏÎã³°¤òȯÀ¸¤¹¤ë¡¥
+ * vm_core.h (rb_iseq_struct): ditto.
-Wed Jan 24 11:33:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * vm_insnhelper.c (vm_callee_setup_keyword_arg): ditto.
- * version 0.96a
+Tue Mar 12 17:02:53 2013 TAKANO Mitsuhiro <tak@no32.tk>
- * dir.c (dir_each): `$_'¤ÎÃͤòÊѹ¹¤¹¤ë¤Î¤ò¤ä¤á¤¿¡¥
+ * date_core.c: clearly specify operator precedence.
- * io.c (f_readlines): nil¤ÈFALSE¤ÎʬΥ¤Î¤¢¤ª¤ê¤Ç̵¸Â¥ë¡¼¥×¤ËÍî¤Á¤Æ
- ¤¤¤¿¡¥
+Tue Mar 12 17:00:45 2013 TAKANO Mitsuhiro <tak@no32.tk>
- * ruby.c (ruby_options): $0¤ÎÀßÄê¥ß¥¹¡¥
+ * insns.def: fix condition.
-Tue Jan 23 15:28:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Mar 12 16:48:19 2013 TAKANO Mitsuhiro <tak@no32.tk>
- * eval.c (rb_eval): ``¤Ïʸ»úÎó¤ò°ú¿ô¤È¤¹¤ë¥á¥½¥Ã¥É(`)¸Æ¤Ó½Ð¤·¤Î¥·
- ¥ó¥¿¥Ã¥¯¥¹¥·¥å¥¬¡¼¤Ç¤¢¤ë¤È¤·¤¿¡¥
+ * rational.c: fix dangling if, else-if and else.
- * ruby.c (addpath): `-I'¥ª¥×¥·¥ç¥ó¤Ç¥Ç¥£¥ì¥¯¥È¥ê¤¬¡ÖÁ°¤Ë¡×Äɲ䵤ì
- ¤ë¤è¤¦¤ËÊѹ¹¡¥
+Tue Mar 12 06:27:59 2013 Eric Hodel <drbrain@segment7.net>
-Fri Jan 19 11:23:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rubygems/commands/setup_command.rb: Don't delete non-rubygems
+ files when installing RubyGems.
+ * test/rubygems/test_gem_commands_setup_command.rb: Test for the
+ above.
- * dln.c (load_1): N_INDRÂбþ(½ÐÍ褿¤è¤¦¤Êµ¤¤¬¤¹¤ë)¡¥
+ * lib/rubygems/ext/ext_conf_builder.rb: Use full path to siteconf.rb
+ in case the extconf.rb changes directories (like memcached does).
-Thu Jan 18 18:14:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rubygems/package.rb: Remove double slash from path.
+ * test/rubygems/test_gem_package.rb: Test for the above.
+ * test/rubygems/test_gem_package_old.rb: ditto.
- * ruby.texi: FALSE¤Ènil¤ÎʬΥ¤òÈ¿±Ç¤·¤¿¡¥
+ * lib/rubygems/source.rb: Revert automatic HTTPS upgrade
+ * lib/rubygems/spec_fetcher.rb: ditto.
+ * test/rubygems/test_gem_remote_fetcher.rb: ditto.
+ * test/rubygems/test_gem_source.rb: ditto.
+ * test/rubygems/test_gem_spec_fetcher.rb: ditto.
-Tue Jan 16 17:39:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Mar 12 02:25:19 2013 Eric Hodel <drbrain@segment7.net>
- * version 0.96 - ¤È¤ê¤¢¤¨¤ºnil¤ÈFALSE¤ò¶èÊ̤¹¤ëÈÇ
+ * lib/net/smtp.rb: Added Net::SMTP#rset method to implement the SMTP
+ RSET command. [ruby-trunk - Feature #5373]
+ * NEWS: ditto.
+ * test/net/smtp/test_smtp.rb: Test for the above.
-Wed Jan 10 15:31:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Mar 11 22:44:57 2013 Tanaka Akira <akr@fsij.org>
- * re.c (reg_match): ¥Þ¥Ã¥Á¤·¤Ê¤«¤Ã¤¿»þ¤ÎÌá¤êÃͤÏFALSE¡¥
+ * lib/resolv-replace.rb (TCPSocket#initialize): resolve the 3rd
+ argument only if non-nil value is given.
+ [ruby-dev:47150] [ruby-trunk - Bug #8054] reported and analyzed by
+ mrkn.
- * object.c (rb_equal): `0 == nil'¤¬TRUE¤Ë¤Ê¤ë¥Ð¥°¡¥
+Mon Mar 11 19:22:54 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Jan 9 00:44:58 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/mkmf/base.rb: class name conflict.
- * nil¤ÈFALSE¤¬Ê¬Î¥²Äǽ¤ËÊѹ¹¡¥
+Mon Mar 11 18:45:09 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * nil¤ÈFALSE¤È0¤Î¶èÊ̤ò¸·Ì©¤Ë¡¥
+ * enumerator.c (enumerator_with_index): try to convert given offset to
+ integer. fix bug introduced in r39594.
- * struct.c (struct_new): °ú¿ô¤ò0¤Ç½ª¤ëɬÍפ¬Ìµ¤¯¤Ê¤Ã¤¿¡¥
+Mon Mar 11 17:27:57 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * object.c (inspect_i): ¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Á¥§¥Ã¥¯¤Î¥Ð¥°(Fixnum¤Çcore
- dump¤·¤Æ¤¤¤¿)¡¥
+ * test/ruby/envutil.rb (EnvUtil.with_default_external): add for
+ changing Encoding.default_external without warnings.
- * range.c (range_to_s): Range¤Îɽ¼¨¤ò²þÁ±¡¥
+ * test/ruby/envutil.rb (EnvUtil.with_default_internal): ditto.
- * object.c (true_inspect): TRUE¤Îɽ¼¨¤ò`TRUE'¤Ë¡¥
+ * test/ruby/test_io_m17n.rb: use above with_default_external.
-Mon Jan 8 15:02:33 1996 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Mar 11 16:57:00 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * numeric.c (fix_mul): divide by zero error¤¬È¯À¸¤·¤¿(¥ª¡¼¥Ð¡¼¥Õ¥í¡¼
- ¸¡½Ð¤Î¥Ð¥°)
+ * io.c (extract_binmode): raise error even if binmode and textmode
+ don't conflict. [Bug #5918] [ruby-core:42199]
- * texinfo.tex¤ò¥Ñ¥Ã¥±¡¼¥¸¤Ë´Þ¤á¤¿¡¥
+Mon Mar 11 12:25:12 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Dec 31 00:08:49 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * Merge Onigmo d4bad41e16e3eccd97ccce6f1f96712e557c4518.
+ fix lookbehind assertion fails with /m mode enabled. [Bug #8023]
+ fix \Z matches where it shouldn't. [Bug #8001]
- * eval.c (rb_eval): `::'¤Ç¤Ï¡¤¤½¤Î¥¯¥é¥¹¤ÇÄêµÁ¤µ¤ì¤¿Äê¿ô¤ò»²¾È¤¹¤ë
- ¤è¤¦¤ËÊѹ¹¡¥
+Mon Mar 11 11:53:35 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c (Init_String): each¤òeach_line¤ËÌᤷ¤¿¡¥
+ * lib/mkmf.rb (MakeMakefile#dir_config, MakeMakefile#_libdir_basename):
+ defer use of instance variable until needed. [Bug #8074]
-Thu Dec 28 12:31:55 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Mar 7 10:42:28 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (rb_eval): case¤Î±é»»»Ò¤ò`=~'¤«¤é`==='¤Ë¡¥
+ * lib/thread.rb (Queue#clear): return self.
+ Patch by Cubing Cube. Thank you! [Bug #7947] [ruby-dev:47098]
+ * lib/thread.rb (Queue#push): ditto.
+ * lib/thread.rb (SizedQueue#push): ditto.
+ * test/thread/test_queue.rb: add tests for the above.
- * variable.c (rb_const_set): ¥¯¥é¥¹Äê¿ô¤ÎºÆÄêµÁ¤òµö¤¹(Ʊ¤¸¥¯¥é¥¹¤Ç
- ¤ÏÉÔ²Ä)¡¥·Ù¹ð¤Ï½Ð¤¹¡¥
+Thu Mar 7 10:40:49 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Dec 27 13:27:52 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * tool/change_maker.rb (#diff2index): check Encoding::BINARY.
+ BASERUBY may still be 1.8.x.
- * version 0.95c
+Thu Mar 7 08:47:42 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/tkutil/tkutil.c: wish¤¬¤¢¤Ã¤Æ¤â¤Ê¤¯¤Æ¤â°ì±þ¥³¥ó¥Ñ¥¤¥ë¤À¤±¤Ï
- ¤¹¤ë¤è¤¦¤Ë¡¥
+ * NEWS (Mutex#owned?): no longer experimental.
- * lib/tk.rb: ´Ä¶­ÊÑ¿ôPATH¤«¤é{wish|wish4.0}¤òõ¤¹¤è¤¦¤Ë¡¥
+Sun Mar 10 23:38:15 2013 Luis Lavena <luislavena@gmail.com>
-Tue Dec 26 01:03:42 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * win32/file.c (rb_file_expand_path_internal): Expand home directory when
+ used as second parameter (dir_string). [ruby-core:53168] [Bug #8034]
+ * test/ruby/test_file_exhaustive.rb: add test to verify.
- * sample/ruby-mode.el (ruby-parse-region): Àµµ¬É½¸½¤Î¸¡½Ð¶¯²½¡¥
+Sun Mar 10 23:27:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * numeric.c (fix_mul): ¾è»»¤Î¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¸¡½Ð¥¢¥ë¥´¥ê¥º¥à¤Î¥Ð¥°¡¥
+ * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
+ it is impossible to predict which file will be installed to where,
+ by the arguments, so use intermediate destination directory always.
+ [Bug #7698]
- * ext/extmk.rb.in: ./install-sh¤ò»È¤¦¾ì¹ç¤ÎPATH¤òÄ´À°¡¥
+Sun Mar 10 17:00:22 2013 Tadayoshi Funaba <tadf@dotrb.org>
- * Makefile.in (install): lib/*.rb¤ò°ì¤Ä¤º¤Ä¥¤¥ó¥¹¥È¡¼¥ë¡¥
+ * complex.c: edited rdoc.
+ * rational.c: ditto.
- * io.c (io_each_line): ¥¤¥Æ¥ì¡¼¥¿¤ÎÌá¤êÃͤònil¤ÇÅý°ì¡¥
+Sun Mar 10 15:02:39 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Dec 22 10:34:32 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * process.c (setup_communication_pipe): remove unused function.
+ it was unintentionally added r39683.
- * version 0.95b
+Wed Mar 6 00:30:40 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * variable.c (f_untrace_var): Âè2°ú¿ô¤ò»ØÄꤹ¤ë¤ÈÆÃÄê¤Îtrace¤òºï½ü
- ¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+ * tool/gen_ruby_tapset.rb: add tapset generator.
- * variable.c (f_trace_var): Âè2°ú¿ô¤¬nil¤Î»þ¡¤trace¤òºï½ü¤¹¤ë¡¥
+Wed Mar 6 03:27:43 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/tk.rb (file_readable/file_writable): Âè2°ú¿ô¤ònil¤Ë¤¹¤ë¤³¤È
- ¤Ë¤è¤ëevent handler¤Îºï½ü¡¥
+ * probes.d (symbol-create): change argument name `string' to
+ `str'. `string' is a keyword for systemtap.
- * parse.y (variable): ¥É¥­¥å¥á¥ó¥È¤Ë`__FILE__'¤È`__LINE__'¤¬»Ä¤Ã¤Æ
- ¤¤¤¿¡¥`caller(0)'¤ÇÂåÍѤ·¤¿¤Ï¤º¤À¤Ã¤¿¤Î¤Ë¡¥
+Tue Mar 5 22:23:01 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (f_eval): $!¤Î¥ê¥»¥Ã¥È¡¥
+ * probes.d: added argument name
- * error.c (err_sprintf): ¾¡¼ê¤Ë"\n"¤òÉղ乤ë¤Î¤ò»ß¤á¤¿¡¥
+Thu Mar 7 01:17:00 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * parse.y (f_arglist): °ú¿ô¥ê¥¹¥Èľ¸å¤Îif/while¤ÎÆÉ¤ß´Ö°ã¤¤¡¥
- lex_state¤ÎÃͤ¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡¥
+ * test/thread/test_queue.rb (TestQueue#test_thr_kill): reduce
+ iterations from 2000 to 250. When running on uniprocessor
+ systems, every th.kill needs TIME_QUANTUM_USEC time (i.e.
+ 100msec on posix systems). Because, "r.read 1" is 3 steps
+ operations that 1) release GVL 2) read 3) acquire gvl and
+ (1) invoke context switch to main thread. and then, main
+ thread's th.kill resume (1), but not (2). Thus read interrupt
+ need TIME_QUANTUM_USEC. Then maximum iteration is 30sec/100msec
+ = 300.
-Thu Dec 21 00:56:57 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Mar 7 00:14:51 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * version 0.95a - ^^;;;
+ * io.c (rb_update_max_fd): use ATOMIC_CAS because this function
+ is used from timer thread too.
- * lib/tkscrollbox.rb: ¥Ñ¥Ã¥±¡¼¥¸¤ËÆþ¤Ã¤Æ¤Ê¤«¤Ã¤¿¡¥
+Wed Mar 6 23:30:21 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * configure.in: FILE structure¤Î¥Á¥§¥Ã¥¯¤Ë¥Ð¥°¡¥
+ * thread_pthread.c (ARRAY_SIZE): new.
+ * thread_pthread.c (gvl_acquire_common): use low priority
+ notification for avoiding timer thread interval confusion.
+ If we use timer_thread_pipe[1], every gvl_yield() request
+ one more gvl_yield(). It lead to thread starvation.
+ [Bug #7999] [ruby-core:53095]
+ * thread_pthread.c (rb_reserved_fd_p): adds timer_thread_pipe_low
+ to reserved fds.
- * Makefile.in (clean): ext°Ê²¼¤òinstall¤·¤Æ¤¤¤¿¡¥
+Wed Mar 6 22:36:19 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/socket/extconf.rb: Solaris¤Ë¤ª¤±¤ë-lnls¤Î¥Á¥§¥Ã¥¯¡¥
+ * thread_pthread.c (rb_thread_wakeup_timer_thread_fd): add fd
+ argument and remove hardcoded dependency of timer_thread_pipe[1].
+ * thread_pthread.c (consume_communication_pipe): add fd argument.
+ * thread_pthread.c (close_communication_pipe): ditto.
- * array.c (beg_len): ¥Ð¥°¤¬¤¢¤Ã¤¿¡Ä¡¥Èᤷ¤¤¡¥
+ * thread_pthread.c (timer_thread_sleep): adjust the above changes.
- * version 0.95 - fj.sources¤Ë
+ * thread_pthread.c (setup_communication_pipe_internal): factor
+ out pipe initialize logic.
- * eval.c (rb_eval): rescue¤Î¥í¥¸¥Ã¥¯¤òrb_rescue()¤Ë°ì¸µ²½¡¥
+Wed Mar 6 22:56:14 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Dec 20 19:30:58 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread_pthread.c (ubf_select): add to small comments why we
+ need to call rb_thread_wakeup_timer_thread().
- * Makefile.in: ÉÔÍפʥ³¥ó¥Ñ¥¤¥ë¤Î²óÈò(¤è¤ê´°Á´¤Ë)¡¥
+Wed Mar 6 21:42:24 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * class.c (singleton_class_new): `single'->`singleton'
+ * thread_pthread.c (rb_thread_create_timer_thread): factor out
+ creating communication pipe logic into separate function.
+ * thread_pthread.c (setup_communication_pipe): new helper function.
+ * thread_pthread.c (set_nonblock): moves a definition before
+ setup_communication_pipe.
-Tue Dec 19 07:14:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Mar 3 02:42:29 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * io.c (closed?): IO¤¬close¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÃΤë½Ò¸ì¡¥
+ * thread_pthread.c (consume_communication_pipe): retry when
+ read returned CCP_READ_BUFF_SIZE.
- * parse.y (primary): ÆÃ°Û¥á¥½¥Ã¥É¤Î°ú¿ô¤Îlex_state¤¬ÉÔŬÀÚ¡¥
+Wed Mar 6 21:31:35 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/tk.rb: tcl->ruby¤ÎÊÑ´¹´Ø¿ô¤ÎÍѰա¥
+ * thread_pthread.c (timer_thread_sleep): use poll() instead of
+ select(). select doesn't work if timer_thread_pipe[0] is
+ greater than FD_SETSIZE.
+ * thread_pthread.c (USE_SLEEPY_TIMER_THREAD): add a dependency
+ against poll.
- * ext/extmk.rb.in (install): install¤Î2½Å¥³¥ó¥Ñ¥¤¥ë¤Î²óÈò¡¥
+Wed Mar 6 21:00:23 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * array.c (range_beg_len): range»ØÄê¤ÎÉÔŬÀڤʥ¨¥é¡¼¤òÄûÀµ¡¥
+ * thread_pthread.c (USE_SLEEPY_TIMER_THREAD): use more accurate
+ ifdef conditions.
- * string.c (str_aref): range»ØÄê¤Î¥Ð¥°¤òºï½ü¡¥
+Sun Mar 3 02:30:36 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/tk.rb (tk_split_list): Tcl¤Î¥ê¥¹¥È¤ËÂбþ¡¥
+ * thread_pthread.c (set_nonblock): new helper function for set
+ O_NONBLOCK.
+ * thread_pthread.c (rb_thread_create_timer_thread): set O_NONBLOCK
+ to timer_thread_pipe[0] too.
-Mon Dec 18 09:58:12 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Mar 10 09:12:51 2013 Tadayoshi Funaba <tadf@dotrb.org>
- * version 0.94
+ * complex.c: described syntax of string form.
+ * rational.c: ditto.
- * dln.c (dln_load): HPÂбþ(̤³Îǧ)
+Sat Mar 9 11:58:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (Init_Proc): Block¤òProc¤Ë²þ̾¡¥
+ * marshal.c (w_extended): check for prepended object.
+ [ruby-core:53206] [Bug #8043]
-Sat Dec 16 13:46:14 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Mar 9 08:36:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_eval): retry¤Ç¥¤¥Æ¥ì¡¼¥¿¤ÎºÆ¼Â¹Ô¤¬¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+ * load.c (features_index_add_single, rb_feature_p): store single index
+ as Fixnum to reduce the number of arrays for the indexes. based on
+ the patch by tmm1 (Aman Gupta) in [ruby-core:53216] [Bug #8048].
-Fri Dec 15 17:14:30 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Mar 9 00:25:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c: proc:lambda¤Î¿Æ¤·¤ß¤ä¤¹¤¤ÊÌ̾
+ * marshal.c (r_object0): load prepended objects. treat the class of
+ extended object in the included modules as prepended singleton
+ class. [ruby-core:53202] [Bug #8041]
-Thu Dec 14 17:21:55 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Mar 8 19:44:00 2013 Akinori MUSHA <knu@iDaemons.org>
- * eval.c (dyna_var_asgn): ¥¤¥Æ¥ì¡¼¥¿¥Ö¥í¥Ã¥¯Æâ¤ÇºÇ½é¤Ë½é´ü²½¤µ¤ì¤¿
- ¥í¡¼¥«¥ëÊÑ¿ô¤ÎÍ­¸úÈϰϤò¤½¤Î¥Ö¥í¥Ã¥¯Æâ¤Ë¸ÂÄê¡¥¤³¤ì¤Çlambda¤È¸Æ¤Ù
- ¤Ê¤¤¤³¤È¤Ï¤Ê¤¤¡¥
+ * man/rake.1, man/ruby.1: Use the Pa macro to make URLs stand out.
-Wed Dec 13 02:30:58 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Mar 8 13:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * gc.c: autoload¤Î¥Þ¡¼¥¯¥ß¥¹¡¥
+ * ext/pathname/pathname.c (path_f_pathname): rdoc for Pathname()
- * lib/tk.rb: wish¤«¤é¤ÎÊ£¿ô¹Ô¤ÎÌá¤êÃͤËÂбþ
+Fri Mar 8 12:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * lib/tkcomposite.rb: Ê£¹çwidget
+ * man/rake.1: Document ENVIRONMENT variables on RAKE(1) manpage
- * variable.c (rb_class2path): ICLASS¤ËÂбþ¤·¤Æ¤Ê¤«¤Ã¤¿¡¥
+Fri Mar 8 10:44:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c (ruby_run): exit(0)¤Î¥Ð¥°
+ * lib/webrick/httpproxy.rb: Fix typos in HTTPProxyServer [Bug #8013]
+ Patch by Nobuhiro IMAI [ruby-core:53127]
-Sat Dec 9 01:21:24 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Mar 8 03:16:15 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * ext/marshal/marshal.c (dumps|load): ʸ»úÎó¤ËÂФ¹¤ëÆþ½ÐÎϤò²Äǽ¤Ë
- ¤·¤¿(¤¿¤À¤·¼Â¤Ï¥Õ¥¡¥¤¥ë·Ðͳ¤Ê¤Î¤À)¡¥
+ * class.c (rb_mod_ancestors): Include singleton_class in ancestors
+ list [Feature #8035]
-Fri Dec 8 18:29:11 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/ruby/test_module.rb (class): test for above
- * ext/marshal/marshal.c: ¥·¥ó¥Ü¥ë¤ò°ìÅÙ¤À¤±½é´ü²½¤¹¤ë¡¥
+ * test/ruby/marshaltestlib.rb (module): adapt test
-Thu Dec 7 07:58:50 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * NEWS: list change
- * parse.y (yylex): Âè1°ú¿ô¤ÎÀµµ¬É½¸½¤Îǧ¼±¤Ë¥¨¥é¡¼¤¬¤¢¤Ã¤¿¡¥Æ±»þ¤Ë
- ¾õÂÖ¿ô¤ò¸º¤é¤·¤¿¡¥
+Thu Mar 7 14:21:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c (str_sub): ÃÖ´¹¤Ç¥¹¥­¥Ã¥×Éý¤¬Â礭¤¹¤®¤¿¡¥
+ * compile.c (iseq_compile_each): pass keyword arguments to zsuper,
+ with current values. [ruby-core:53114] [Bug #8008]
-Wed Dec 6 15:14:23 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Thu Mar 7 12:53:47 2013 Eric Hodel <drbrain@segment7.net>
- * string.c (str_sub_method): sub/gsub(!¤Ê¤·)¤ÏÃÖ´¹¤¬¹Ô¤Ê¤ï¤ì¤Ê¤«¤Ã
- ¤¿»þ¡¤ÃÖ´¹Á°¤Îʸ»úÎó¤òÊÖ¤¹¡¥
+ * lib/rubygems/commands/setup_command.rb: Install .pem files.
+ * test/rubygems/test_gem_commands_setup_command.rb: Test for the
+ above.
-Tue Dec 5 00:55:15 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rubygems/spec_fetcher.rb: Test HTTPS upgrade with URI::HTTPS,
+ not URI::HTTP. Fixes bug in automatic HTTPS upgrade.
+ * test/rubygems/test_gem_spec_fetcher.rb: Test for the above.
- * parse.y (yylex): ³ç¸Ì¤ò¾Êά¤·¤¿»þ¤Î°ú¿ôŸ³«¤Î`*'¤ËÂбþ¡¥
+ * lib/rubygems.rb: Version 2.0.2
- * eval.c (ruby_run): EXIT¥Ï¥ó¥É¥éÆâ¤Ç¤ÎÎã³°¤ËÂбþ¡¥
+ * lib/rubygems/test_utilities.rb: Ensure scheme and uri class match.
- * bignum.c (big_cmp): Bignum¤ÈFixnum¤ÎÈæ³Ó¤ÇÍî¤Á¤ë¡¥
+Thu Mar 7 10:39:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Dec 4 14:21:18 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * tool/rbinstall.rb (gem): Gem.ensure_gem_subdirectories now has mode
+ option since r39607. refix of r38870.
- * parse.y (call_op): ¥³¥ó¥Ñ¥¤¥ë»þ¤ÎÄê¿ô¼°¤ÎŸ³«¤ò¤ä¤á¤¿¡¥Ï«Â¿¤¯¤·
- ¤Æ±×¾¯¤Ê¤¤¤ÈȽÃǤ·¤¿¤Î¤Ç¡¥
+Wed Mar 6 13:14:28 2013 Eric Hodel <drbrain@segment7.net>
-Thu Nov 30 01:35:15 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/rubygems/test_gem_spec_fetcher.rb: Removed unused variable.
- * lib/tk.rb: {Radio,Check}Button¤Îvariable¤Î¼ÂÁõ¡¥
+Wed Mar 6 08:10:15 2013 Eric Hodel <drbrain@segment7.net>
- * eval.c (rb_yield_0): Block.call¤¬¥Í¥¹¥È¤·¤¿»þ¤Î¥Ð¥°¡¥
+ * test/rubygems/test_require.rb: Fix tests when 'a.rb' exists.
+ [ruby-trunk - Bug #7749]
- * io.c (f_select): ¾ï¤ËÇÛÎó3¤Ä¤ò¤Õ¤¯¤àÇÛÎó¤òÊÖ¤¹¤è¤¦¤Ë
+Wed Mar 6 08:00:59 2013 Eric Hodel <drbrain@segment7.net>
- * lib/tk.rb: fileevent¤òruby¦¤Ç¼ÂÁõ¡¥
+ * lib/rubygems.rb: Allow specification of directory permissions.
+ [ruby-trunk - Bug #7713]
+ * test/rubygems/test_gem.rb: Test for the above.
-Wed Nov 29 17:53:23 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Mar 6 07:40:21 2013 Eric Hodel <drbrain@segment7.net>
- * variable.c (rb_ivar_get): self¤ò¾ï¤Ë»ØÄꤹ¤ë¤è¤¦¤Ë¡¥
+ * lib/rubygems/commands/query_command.rb: Only fetch remote specs when
+ showing details. [ruby-trunk - Bug #8019] RubyGems bug #487
+ * lib/rubygems/remote_fetcher.rb: ditto.
+ * lib/rubygems/security/policy.rb: ditto.
+ * test/rubygems/test_gem_commands_query_command.rb: Test for the
+ above.
-Tue Nov 14 00:07:29 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rubygems/security.rb: Make OpenSSL optional for RubyGems.
+ * lib/rubygems/commands/cert_command.rb: ditto.
- * lib/tk.rb: Tk4.0Âбþ
+ * lib/rubygems/config_file.rb: Display file with YAML error, not
+ ~/.gemrc
-Mon Nov 13 16:23:32 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rubygems/remote_fetcher.rb: Only create gem subdirectories when
+ installing gems.
+ * lib/rubygems/dependency_resolver.rb: ditto.
+ * lib/rubygems/test_utilities.rb: ditto.
+ * test/rubygems/test_gem_commands_fetch_command.rb: Test for the
+ above.
- * version 0.93
+ * lib/rubygems/spec_fetcher.rb: Only try to upgrade
+ http://rubygems.org to HTTPS
+ * test/rubygems/test_gem_spec_fetcher.rb: Test for the above.
-Thu Nov 9 23:26:01 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rubygems.rb: Update win_platform? check for JRuby compatibility.
- * gc.c (gc_mark): ¥â¥¸¥å¡¼¥ë¤ÎMixin¤Î¥Þ¡¼¥¯Ëº¤ì¡¥
+ * test/rubygems/test_gem_installer.rb: Update for Ruby 1.9.2
+ compatibility
- * parse.y (f_arglist): ¥á¥½¥Ã¥ÉÄêµÁ¤Î°ú¿ô¤ò³ç¸Ì¤Ç³ç¤é¤Ê¤¯¤Æ¤âÎɤ¤
- ¤è¤¦¤Ë¤·¤¿¡¥
+Wed Mar 6 01:19:28 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Wed Nov 8 00:17:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * enumerator.c (enumerator_with_index, lazy_take): use INT2FIX(0)
+ instead of INT2NUM(0).
- * eval.c (rb_yield_0): ̤½é´ü²½¤Î¥í¡¼¥«¥ëÊÑ¿ô¤¬¤¢¤Ã¤¿¡¥
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): ditto.
- * eval.c (rb_eval): pendig signal¤Î¥Á¥§¥Ã¥¯¤òeval¼Â¹Ô¸å¤Ë¹Ô¤¦¤è¤¦
- ¤Ë¤·¤¿¡¥¤Ç¤Ê¤¤¤È¥·¥°¥Ê¥ë¤ÎȯÀ¸¤È¸¡½Ð¤¬±ó¤¯Î¥¤ì¤Æ¤·¤Þ¤¦»ö¤¬¤¢¤ë¡¥
+ * ext/fiddle/function.c (function_call): ditto.
- * parse.y: classʸ¤ÎsuperclassÉô¤òÄê¿ô¤«¤é¼°¤Ë³ÈÄ¥¤·¤¿¡¥
+ * ext/openssl/ossl_x509store.c (ossl_x509store_initialize): ditto.
- * lib/tk.rb: Tk¤Î¤Û¤ÜÁ´¥¦¥£¥ó¥É¥¦¥¯¥é¥¹¤ËÂбþ¡¥¥­¥ã¥ó¥Ð¥¹¤È¥Æ¥­¥¹
- ¥È¾å¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬»Ä¤Ã¤Æ¤¤¤ë¡¥
+ * process.c (proc_getsid): ditto.
-Tue Nov 7 08:18:37 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * transcode.c (econv_finish): ditto.
- * signal.c (trap): ¥Ö¥í¥Ã¥¯¤ò»ØÄê¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+Tue Mar 5 21:36:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Nov 6 16:44:00 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * class.c (rb_prepend_module): check redefinition of built-in optimized
+ methods. [ruby-dev:47124] [Bug #7983]
- * eval.c (f_caller): ¸Æ½Ð¸µ¤Î¾ðÊó¤òÆÀ¤ë¡¥
+ * vm.c (rb_vm_check_redefinition_by_prepend): ditto.
- * ext/tkutil/tkutil.c: wish¤Îstderr½ÐÎϤò´Æ»ë¤¹¤ë¤³¤È¤Ç¡¤¥¨¥é¡¼½è
- Íý¤ò¹Ô¤¦¡¥
+Tue Mar 5 20:29:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tkutil/tkutil.c: wish¤È¤ÎÄÌ¿®Éô¤òC¤Çµ­½Ò¡¥
+ * proc.c (mnew): revert r39224. [ruby-core:53038] [Bug #7988]
-Sat Nov 4 01:12:59 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Mar 5 20:23:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sample/ruby-mode.el (ruby-calculate-indent): ¥¤¥ó¥Ç¥ó¥È¤Î·×»»¤ò
- ¤â¤¦¾¯¤·¥¹¥Þ¡¼¥È¤Ë¤·¤¿(Àµµ¬É½¸½¤Î¥Á¥§¥Ã¥¯¡¤·Ñ³¹Ô¤Î¥Á¥§¥Ã¥¯)¡¥
+ * include/ruby/intern.h (rb_check_arity): make a static inline
+ function so it can be used as an expression and argc would be
+ evaluated only once.
- * eval.c (rb_call): ̵¸ÂºÆµ¢¤òÈò¤±¤ë¤¿¤á¡¤´Ø¿ô¤Î¥Í¥¹¥È¥ì¥Ù¥ë¤ÎÀ©¸Â
- ¤ò¹Ô¤Ê¤¦¡¥
+Tue Mar 5 12:30:55 2013 Eric Hodel <drbrain@segment7.net>
- * lib/tk.rb: Tk¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¡¥¤Þ¤ÀÉÔ´°Á´¤À¤¬¡¥
+ * lib/rubygems.rb: Bump version to 2.0.1 for upcoming bugfix release
- * eval.c (rb_yield_0): ¶õ¤ÎBlock¤Î¥Ð¥°¡¥
+ * lib/rubygems/ext/ext_conf_builder.rb: Restore ruby 1.8 compatibility
+ for [Bug #7698]
+ * test/rubygems/test_gem_installer.rb: Ditto.
- * sample/ruby-mode.el (ruby-calculate-indent): ¹ÔËö¤Î±é»»»Ò¤Ë¤è¤ë
- ¹Ô·Ñ³¤ËÂбþ¡¥
+ * lib/rubygems/package.rb: Restore ruby 1.8 compatibility.
-Fri Nov 3 12:56:21 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/rubygems/test_gem_dependency_installer.rb: Fix warnings
- * eval.c (rb_call): ËÜÂΤ¬¶õ¤Î´Ø¿ô¤Î¼Â¹Ô¤Ë¥Ð¥°¡¥
+Tue Mar 5 12:24:23 2013 Eric Hodel <drbrain@segment7.net>
- * parse.y (var_extend): ʸ»úÎó¤ÎËöÈø¤ÎÊÑ¿ôŸ³«¤Î¥Ð¥°¡¥
+ * enumerator.c (enumerator_with_index): Restore handling of a nil memo
+ from r39594.
- * variable.c (rb_gvar_set): trace¤Îɾ²Á»þ¤Ë¤ËÊÑ¿ôÃͤòÍ¿¤¨¤ë¤è¤¦¤Ë¡¥
+Tue Mar 5 10:40:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (f_require): ruby script¤Îrequire¤Ëbug¡¥
+ * ext/objspace/objspace.c (count_nodes): count also newly added nodes,
+ and fix key for unknown node. patch by tmm1 (Aman Gupta) in
+ [ruby-core:53130] [Bug #8014]
- * variable.c (rb_const_get): ¥â¥¸¥å¡¼¥ë¤ÎincludeÂкö¡¥
+Tue Mar 5 10:20:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Oct 19 13:56:06 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * enumerator.c (enumerator_with_index_i): allow Bignum as offset, to
+ get rid of conversion exception and integer overflow.
+ [ruby-dev:47131] [Bug #8010]
- * dln.c (dln_load): HPÂбþ¤Ç¤Îtypo.
+ * numeric.c (rb_int_succ, rb_int_pred): shortcut optimization for
+ Bignum.
-Wed Oct 18 17:39:39 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Mar 5 10:02:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 0.92
+ * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
+ clear DESTDIR so RUBYARCHDIR and RUBYLIBDIR are not be overridden.
+ [Bug #7698]
- * object.c (krn_type): ¥ª¥Ö¥¸¥§¥¯¥È¤ÎưŪ¤Ê·¿¤òÊÖ¤¹¥á¥½¥Ã¥É¡¥
+Mon Mar 4 15:33:40 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 17 00:48:18 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
+ fix for unusual cases again. install to a temporary directory once
+ and move installed files to the destination directory, if it is same
+ as the current directory. [Bug #7698]
- * ruby.c (proc_options): -X ¥ª¥×¥·¥ç¥ó¡¥chdir¤À¤±¤ò¹Ô¤¦¡¥
+Mon Mar 4 14:13:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * re.c (reg_search): ´Á»ú¥³¡¼¥É¤òÅÓÃæ¤ÇÊѹ¹¤Ç¤­¤ë¤è¤¦¤Ë¡¥¥³¥ó¥Ñ¥¤
- ¥ë»þ¤Î¥³¡¼¥É¤¬Êѹ¹¤µ¤ì¤¿»þ¤Ë¤Ï¥Þ¥Ã¥Á¤ÎľÁ°¤ËÀµµ¬É½¸½¤ÎºÆ¥³¥ó¥Ñ¥¤
- ¥ë¤ò¹Ô¤¦¡¥Äê¿ôKCODE¤«¤éÊÑ¿ô$KCODE¤Ø¡¥
+ * Makefile.in (miniruby, ruby): move MAINLIBC because linker arguments
+ must appear after object files with newer versions of gcc. patch by
+ tmm1 (Aman Gupta) in [ruby-core:53121] [Bug #8009]
- * parse.y: ()¤Î¤Ê¤«¤Ëcompexpr¤òµö¤¹¡¥
+Mon Mar 4 10:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * re.c (reg_search): ¥á¥â¥ê¥ê¡¼¥¯¤òľ¤·¤¿¡¥
+ * encoding.c: Typo in Encoding overview by Tom Wardrop [GH fixes #255]
-Fri Oct 13 13:19:19 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Mar 3 12:35:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c (str_sub): ʸ»úÎóÃÖ´¹¤Ë¥Ð¥°¡¥
+ * lib/mkmf.rb (MakeMakefile#libpath_env): set runtime library path for
+ the case rpath is disabled.
- * string.c (str_strip_bang): ʸ»úÎó¤Î¸å¤í¤ÎŤµ¤ÎÄ´À°¤¬¹Ô¤ï¤ì¤Æ¤¤
- ¤Ê¤«¤Ã¤¿¡¥
+Sun Mar 3 12:17:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * re.c (reg_search): $&, $1...¤Ï¥í¡¼¥«¥ë¤Ë«Çû¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡¥¸Æ
- ¤Ó½Ð¤·¤¿¥á¥½¥Ã¥É¤Ç¤Î¥Þ¥Ã¥Á¤Ï¸½¥¹¥³¡¼¥×¤Î$&¤Ê¤É¤ÎÃͤ˱ƶÁ¤·¤Ê¤¤¡¥
- ¥Þ¥Ã¥Á¤Î¾ðÊó¤ò¥¹¥³¡¼¥×³°¤ÇÆÀ¤¿¤¤¤È¤­¤Ë¤Ï$~¤ò»È¤Ã¤ÆÂ«Çû¾ðÊó¤ò»ý¤Á
- ½Ð¤¹É¬Íפ¬¤¢¤ë¡¥
+ * lib/rubygems/ext/ext_conf_builder.rb
+ (Gem::Ext::ExtConfBuilder.hack_for_obsolete_style_gems): remove
+ circular dependencies in install-so too. [ruby-core:52882]
+ [Bug #7698]
-Thu Oct 12 00:33:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Mar 3 07:33:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * re.c (reg_search): String:split, String:index¤Ç¤Ï$&, $1...¤¬ÊѲ½
- ¤·¤Ê¤¤¤è¤¦¤Ë¤·¤¿¡¥
+ * ext/socket/tcpserver.c: Grammar for TCPServer.new from r39554
- * io.c (rb_str_setter): setter¤Î»ÅÍͤ¬Êѹ¹¤Ë¤Ê¤Ã¤Æ¤¤¤¿¡¥
+Sun Mar 3 01:17:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * variable.c (f_trace_var): Âè2°ú¿ô¤ò¾Êά¤·¤Æ¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤Ù
- ¤ë¤è¤¦¤Ë¡¥
+ * lib/rubygems/ext/ext_conf_builder.rb
+ (Gem::Ext::ExtConfBuilder.hack_for_obsolete_style_gems): remove
+ circular dependencies for old style gems which locate extconf.rb on
+ the toplevel. [ruby-core:53059] [ruby-trunk - Bug #7698]
-Wed Oct 11 11:50:59 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
+ use RUBYOPT instead of -r option, and revert some tests. [Bug #7698]
- * version 0.91
+ * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
+ revert use of temporary directory for build, to work some buggy
+ extconf.rb which cannot build outside the source directory.
+ [ruby-core:53056] [Bug #7698]
- * variable.c (var_setter): °ú¿ô¤¬´Ö°ã¤Ã¤Æ¤¤¤¿¡¥Ã×̿Ū¥Ð¥°¡¥
+Sun Mar 3 00:04:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (pipe_open): $stderr¤ÎÃͤ¬Êѹ¹¤µ¤ì¤Æ¤¤¤ë»þ¤Ë¤Ï¤½¤Á¤é¤ò
- »Ò¥×¥í¥»¥¹¤Îstderr¤ËÀßÄꤹ¤ë¡¥
+ * enc/depend (CPPFLAGS), lib/mkmf.rb (MakeMakefile#create_makefile):
+ define RUBY_EXPORT for static-linked-ext mswin. [Bug #7960]
-Mon Oct 9 13:06:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Mar 2 22:49:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c (mod_to_s): ¥â¥¸¥å¡¼¥ëÆâ¤Î¥â¥¸¥å¡¼¥ë¤Ï`::'¤ò»È¤Ã¤¿É½¸½
- ¤Çɽ¼¨¤µ¤ì¤ë¤è¤¦¤Ë¡¥
+ * win32/Makefile.sub (ENCOBJS, EXTOBJS, config.h): definitions for
+ static-linked-ext. [Bug #7960]
- * variable.c (rb_gvar_set): ÂåÆþ¤Ë¤è¤ë¥ë¡¼¥×¤¬È¯À¸¤·¤Ê¤¤¤è¤¦¤Ë¡¤
- traceÆâ¤Ç¤ÎÂåÆþ¤Ç¤Ïtrace¤òɾ²Á¤·¤Ê¤¤¡¥
+Sat Mar 2 17:34:19 2013 Tanaka Akira <akr@fsij.org>
- * struct.c (struct_equal): struct¤ÎequalȽÄê¤Ë¥¯¥é¥¹¤Î°ìÃפò´Þ¤á¤¿¡¥
+ * lib/webrick/utils.rb: use Socket.tcp_server_sockets to create server
+ sockets.
+ fix [Bug #7100] https://bugs.ruby-lang.org/issues/7100
+ reported by sho-h (Sho Hashimoto).
-Sat Oct 7 00:18:32 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Mar 2 02:45:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c (rb_eval): defined?¤Îµ¡Ç½¤ò³ÈÄ¥(yield¤Î¥Á¥§¥Ã¥¯¡¤super¤Î
- ¸ºß¤Ê¤É)¡¥
+ * array.c: typo in comment patch by Nami-Doc [Github fixes #253]
-Fri Oct 6 12:06:47 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Mar 2 01:33:17 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * version 0.90
+ * Merge Onigmo 0fe387da2fee089254f6b04990541c731a26757f
+ v5.13.3 [Bug#7972] [Bug#7974]
- * st.c (st_foreach): Í×ÁǤòºï½ü¤·¤¿»þ¤ËÍ×ÁÇ¿ô¤¬ÊѲ½¤·¤Æ¤¤¤Ê¤«¤Ã¤¿¡¥
+Fri Mar 1 11:09:06 2013 Eric Hodel <drbrain@segment7.net>
- * hash.c (hash_values): ¥Ð¥°½¤Àµ¡¥keys¤òÊÖ¤·¤Æ¤¤¤¿¡Ä¡¥
+ * lib/fileutils.rb: Revert r34669 which altered the way
+ metaprogramming in FileUtils occurred. [ruby-trunk - Bug #7958]
- * parse.y (call_op): defined? ¤Î°ú¿ô¤Ç¤ÏÄê¿ô¤Î¾ö¤ß¹þ¤ß¤ò¹Ô¤ï¤Ê¤¤
- (¥Á¥§¥Ã¥¯¤¹¤ëÁ°¤Ë¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¤Ë¤Ê¤Ã¤Æ¤Ïº¤¤ë)¡¥
+ * test/fileutils/visibility_tests.rb: Refactored tests of FileUtils
+ options modules to expose bug found in #7958
+ * test/fileutils/test_dryrun.rb: ditto.
+ * test/fileutils/test_nowrite.rb: ditto.
+ * test/fileutils/test_verbose.rb: ditto.
- * ¥¹¥³¡¼¥×À¸À®¤Î°ìÉô¸«Ä¾¤·¡¥
+Fri Mar 1 09:18:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Oct 5 00:29:43 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/psych.rb: specify in rdoc what object is returned in parser
+ By Adam Stankiewicz [Github tenderlove/psych#133]
- * ´Ø¿ô¤È¥¯¥é¥¹¤Î̿̾µ¬Â§¤òÊѹ¹¤·¤¿¡¥´Ø¿ô̾¡¤ÊÑ¿ô̾¤ÎÁ´Ì̽ñ¤­´¹¤¨¡¥
+Fri Mar 1 07:21:41 2013 Eric Hodel <drbrain@segment7.net>
- * gc.c (looks_pointerp): ¥Ò¡¼¥×¥Á¥§¥Ã¥¯¤Î¹â®²½¡¥
+ * lib/rubygems/ext/builder.rb: Fix incompatibilities when installing
+ extensions. Patch by Nobu.
+ [ruby-trunk - Bug #7698] [ruby-trunk - Bug #7971]
+ * lib/rubygems/ext/ext_conf_builder.rb: ditto.
+ * lib/rubygems/installer.rb: ditto.
+ * test/rubygems/test_gem_ext_ext_conf_builder.rb: Test for the above.
+ * test/rubygems/test_gem_installer.rb: ditto.
- * struct.c (Fstruct_aset): ¹½Â¤ÂΤËÂФ¹¤ë`[]='¡¥
- (struct_set): ¹½Â¤ÂÎ¥á¥ó¥Ð¤ËÂФ¹¤ëÂåÆþ¡¥
+ * lib/rubygems/commands/sources_command.rb: Prefer HTTPS over HTTP.
+ * lib/rubygems/defaults.rb: ditto
+ * lib/rubygems/dependency_resolver.rb: Ditto.
+ * lib/rubygems/source.rb: ditto.
+ * lib/rubygems/spec_fetcher.rb: ditto.
+ * lib/rubygems/specification.rb: ditto.
+ * lib/rubygems/test_utilities.rb: ditto.
+ * test/rubygems/test_gem.rb: Test for the above.
+ * test/rubygems/test_gem_commands_sources_command.rb: ditto.
+ * test/rubygems/test_gem_dependency_resolver_api_set.rb: ditto.
+ * test/rubygems/test_gem_remote_fetcher.rb: ditto.
+ * test/rubygems/test_gem_source.rb: ditto.
+ * test/rubygems/test_gem_spec_fetcher.rb: ditto.
-Wed Oct 4 09:54:07 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Fri Mar 1 03:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * version 0.89
+ * ext/psych/lib/psych.rb: rdoc for Psych overview by Adam Stankiewicz
+ [Github tenderlove/psych#134]
- * eval.c (Frequire): ¥À¥¤¥Ê¥ß¥Ã¥¯¥í¡¼¥É¤Î¥¨¥é¡¼¥Á¥§¥Ã¥¯¤ò¸·¤·¤¯¡¥
+Thu Feb 28 22:57:48 2013 Koichi Sasada <ko1@atdot.net>
- * struct.c: struct¤Î¹½Â¤¤ò´°Á´¤Ë½ñ¤­´¹¤¨¤¿¡¥°ÊÁ°¤Ï½ç½øÉÕ¤­¤Î
- id->value¤ÎÏ¢ÁÛÇÛÎó¤Ç¤¢¤Ã¤¿¤¬¡¤º£Å٤Ϲ½Â¤ÂÎËè¤Ë¿·¤·¤¤¥¯¥é¥¹¤òÀ¸
- À®¤¹¤ë¤è¤¦¤Ë¤·¤¿¡¥
+ * compile.c (iseq_compile_each): remove redundant trace(line)
+ instruction. for example, at the following script
+ def m()
+ p:xyzzy
+ 1
+ 2
+ end
+ compiler ignores `1' because there is no effect. However,
+ `trace(line)' instruction remains in bytecode.
+ This modification removes such redundant trace(line) instruction.
- * parse.y: `::'¤Î°ÕÌ£¤òAssoc¤ÎÀ¸À®¤«¤é¥¯¥é¥¹(¥â¥¸¥å¡¼¥ë)Æâ¤ÎÄê¿ô¥¢
- ¥¯¥»¥¹¤ØÊѹ¹¡¥
+ * test/ruby/test_iseq.rb: add a test.
- * assoc.c: ¤Ê¤¯¤¹¡¥
+Thu Feb 28 22:23:27 2013 Tanaka Akira <akr@fsij.org>
-Tue Oct 3 13:31:08 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/raddrinfo.c (inspect_sockaddr): don't show that Unix
+ domain socket filename is bigger than sizeof(sun_path).
+ This limit is not rigid on some platforms such as Darwin and SunOS.
- * variable.c (Ftrace_var): trace_var, Âç°èÊÑ¿ô¤Ø¤Î½ñ¤­¹þ¤ßhook¤òÀß
- Äꤹ¤ë¡¥
+Thu Feb 28 21:33:01 2013 WATANABE Hirofumi <eban@ruby-lang.org>
- * variable.c: global_entry¤Î¹½À®¤ò½ñ¤­´¹¤¨¤¿¡¥¤³¤ì¤Çtrace_var¤ò¼Â
- Áõ¤Ç¤­¤ë¡¥
+ * configure.in(AC_DISABLE_OPTION_CHECKING): avoid warning "WARNING:
+ Unrecognized options: --with-PACKAGE".
- * file.c (Ffile_stat): "&"¤ÇľÁ°¤Îfstat¤Î·ë²Ì¤â»²¾È¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+Thu Feb 28 20:22:04 2013 Koichi Sasada <ko1@atdot.net>
-Fri Sep 29 14:15:13 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * iseq.c (iseq_data_to_ary): fix condition.
+ r34303 introduces a bug to avoid all line information from
+ a result of ISeq#to_a. This is a regression problem from 2.0.0p0.
- * version 0.88
+ * test/ruby/test_iseq.rb: add a test of lines after ISeq#to_a.
- * dln.c (dln_load): AIX¤ÈHP¤ËÂбþ¤·¤¿¥³¡¼¥É¤òÆþ¤ì¤¿(ưºî¤Ï̤³Îǧ)¡¥
+Thu Feb 28 08:20:33 2013 Eric Hodel <drbrain@segment7.net>
- * ext/extmk.rb.in: ɬÍפ˱þ¤¸¤Æ¡¤Äê¿ôEXTLIB¤òÄêµÁ¤¹¤ë¤è¤¦¤Ë¡¥
+ * lib/rubygems/available_set.rb: Undent for style
- * dln.c (dln_load): dlnÆÈΩ¤Ë½ñ¤­´¹¤¨¤ë¡¥¾­Íè¤Î³ÈÄ¥ÍÑ¡¥
- (load_1): dln_a_out¤Ë¤ª¤¤¤Æ¥½¡¼¥¹¥³¡¼¥É¤Ç¥é¥¤¥Ö¥é¥ê¤òÌÀ¼¨Åª¤Ë¥í¡¼
- ¥É¤¹¤ëɬÍפ¬¤Ê¤¤¤è¤¦¤ËÊѹ¹¤·¤¿¡¥
+ * lib/rubygems/dependency_installer.rb: Pick latest prerelease gem to
+ install. Fixes RubyGems bug #468.
+ * test/rubygems/test_gem_dependency_installer.rb: Test for the above.
-Thu Sep 28 13:31:37 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rubygems/dependency_installer.rb: Don't display "Done installing
+ documentation" if documentation will not be installed.
+ * lib/rubygems/rdoc.rb: ditto
- * sample/ruby-mode.el: ¤â¤Ã¤È¤Þ¤·¤Êhilit19Âбþ(Àµµ¬É½¸½)¡¥
+ * lib/rubygems/dependency_list.rb: Use Array#concat for Ruby 1.x
+ performance.
-Wed Sep 27 04:12:44 1995 Takahasi Mamoru <taka@soum.co.jp>
+ * lib/rubygems/installer.rb: Use formatted program name when comparing
+ executables. RubyGems pull request #471
+ * test/rubygems/test_gem_installer.rb: Test for the above.
- * sample/test.rb: echo¤Ç-n¤ò»È¤ï¤Ê¤¤¤è¤¦¤Ë(SysVÂкö)¡¥
+ * lib/rubygems/package.rb: Use more explicit feature check to work
+ around JRuby bug #552
- * ext/extmk.rb.in: sub -> sub!
+ * lib/rubygems/ssl_certs/GeoTrust_Global_CA.pem: Added GeoTrust root
+ certificate.
-Tue Sep 26 19:12:42 1995 Yasuo OHBA <jammy@csg.mes.co.jp>
+ * test/rubygems/test_gem_source_list.rb: Use "example" instead of real
+ hostname
- * dln.c (dln_find_1): `.', `..'¤«¤é»Ï¤Þ¤ë¥Ñ¥¹¤ËÂбþ¤·¤¿.
+Thu Feb 28 05:57:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon Sep 25 12:33:03 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread.c: rdoc formatting for Thread, ThreadGroup, and ThreadError
- * version 0.87
+Thu Feb 28 02:42:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Sat Sep 23 10:00:18 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * vm.c: Typo in overview for example of Thread#status returning false
+ Reported by Lee Jarvis
- * eval.c (Fmod_modfunc): ¥á¥½¥Ã¥É¤òprivate¤Ë¤·¡¤Æ±»þ¤ËÆÃ°Û¥á¥½¥Ã¥É
- ¤âÄêµÁ¤¹¤ë¥á¥½¥Ã¥É¡¥¥Ñ¥Ã¥±¡¼¥¸Åª»È¤¤Êý¤Î¥â¥¸¥å¡¼¥ëÍÑ¡¥
+Wed Feb 27 22:54:27 2013 Tanaka Akira <akr@fsij.org>
-Fri Sep 22 11:02:44 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/rubysocket.h (union_sockaddr): make it longer for SunOS
+ and Darwin.
- * lib/find.rb: find¤òÄ󶡤¹¤ë¥é¥¤¥Ö¥é¥ê
+Wed Feb 27 21:14:34 2013 Kouhei Sutou <kou@cozmixng.org>
- * variable.c (rb_define_variable): hook¤ÎÀßÄê¤òʬΥ¡¥
- (add_hook): 1ÊÑ¿ô¤ËÂФ·¤ÆÊ£¿ô¤Îhook¤òÀßÄê¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+ * lib/rexml/security.rb (REXML::Security): create.
+ * lib/rexml/rexml.rb: move entity_expansion_limit and
+ entity_expansion_text_limit accessors to ...
+ * lib/rexml/security.rb: ... here.
+ * lib/rexml/document.rb: use REXML::Security.
+ * lib/rexml/text.rb: use REXML::Security.
+ * test/rexml/test_document.rb: use REXML::Security.
-Thu Sep 21 00:22:11 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Feb 27 19:53:32 2013 Benoit Daloze <eregontp@gmail.com>
- * string.c (Fstr_frozen): ʸ»úÎ󤬹¹¿·ÉԲĤ«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë½Ò
- ¸ì¥á¥½¥Ã¥É¡¥
+ * vm.c (Thread): fix typos in overview
- * hash.c (Fhash_aset): key¤¬Ê¸»úÎó¤Î»þ¡¤¥­¡¼¤ÎÆâÍÆ¤¬ÊѲ½¤·¤Ê¤¤¤è¤¦
- ¤Ë¡¤dup¤·¤Æfreeze¤¹¤ë¡¥
+Wed Feb 27 13:21:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Wed Sep 20 16:12:44 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * vm.c (Thread): Typo in overview, swap setting and getting
- * version 0.86
+Wed Feb 27 13:02:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/extmk.rb.in (have_header): ¥­¥ã¥Ã¥·¥å¤Ë¥Ð¥°¡¥
+ * vm.c (Thread): Documentation overview of Thread class
- * ext/extmk.rb.in (have_library): °ú¿ô¤Î½ç½ø¤¬ÊѤï¤Ã¤¿¡¥
+Wed Feb 27 12:57:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Thu Sep 14 18:00:59 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread.c (rb_thread_wakeup): rdoc formatting
- * object.c (obj_is_instance_of): is_member_of¤«¤é̾¾ÎÊѹ¹¡¥
+Wed Feb 27 12:53:00 2013 Zachary Scott <zachary@zacharyscott.net>
- Wed Sep 13 15:44:35 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread.c (rb_thread_group): rdoc formatting
- * string.c (Fstr_tr_bang): Èϰϳ°¤Îʸ»ú¤ËÂФ¹¤ëÊÑ´¹¥Ð¥°¡¥
+Wed Feb 27 12:33:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Sep 12 14:27:58 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/ostruct.rb: Typo in OpenStruct overview [Github Fixes #251]
+ Patch by Chun-wei Kuo
- * file.c (Sfile_expand_path): expand_file_name -> expand_path¤Ë̾
- ¾ÎÊѹ¹¡¥
+Wed Feb 27 12:13:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * enum.c (Fenum_member): includes? -> member? ¤Ë̾¾ÎÊѹ¹¡¥
+ * vm_exec.h (END_INSN): llvm-gcc may optimize out reg_cfp and cause
+ Stack/cfp consistency error when the instruction doesn't use reg_cfp.
+ Usually instructions use PUSH() but for example trace doesn't.
+ This hack cause speed down but you shouldn't use llvm-gcc, use clang.
+ [Bug #7938]
- * string.c (Fstr_each_byte): String¤ÏByteArray¤Ç¤¢¤ë¤È¤¤¤¦´ðËܤËÌá¤Ã
- ¤Æ¡¤each¤ÎÄêµÁ¤òeach_byte¤ËÊѹ¹¤·¤¿¡¥º£¤Þ¤Ç¤Îeach¤Ïeach_line¤Ç¥¢
- ¥¯¥»¥¹¤Ç¤­¤ë¡¥
+Wed Feb 27 10:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Mon Sep 11 18:31:17 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread.c (thread_raise_m): rdoc formatting
- * file.c (cache_stat): ¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ"&"¤ò»ØÄꤹ¤ë¤ÈľÁ°¤Î
- stat(2)¤Î·ë²Ì¤òºÆÍøÍѤ¹¤ë¤è¤¦¤Ë¡¥
+Tue Feb 26 23:32:44 2013 Kouhei Sutou <kou@cozmixng.org>
-Fri Sep 8 14:18:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rexml/document.rb: move entity_expansion_limit accessor to ...
+ * lib/rexml/rexml.rb: ... here for consistency.
+ * lib/rexml/document.rb (REXML::Document.entity_expansion_limit):
+ deprecated.
+ * lib/rexml/document.rb (REXML::Document.entity_expansion_limit=):
+ deprecated.
- * ruby.texi: `!', `?'¤ËÂбþ¤·¤Æ¥¢¥Ã¥×¥Ç¡¼¥È¡¥
+Tue Feb 26 23:26:13 2013 Kouhei Sutou <kou@cozmixng.org>
- * parse.y: defined -> defined?
+ * lib/rexml/document.rb: move entity_expansion_text_limit accessor to ...
+ * lib/rexml/rexml.rb: ... here to make rexml/text independent from
+ REXML::Document. It causes circular require.
+ * lib/rexml/document.rb (REXML::Document.entity_expansion_text_limit):
+ deprecated.
+ * lib/rexml/document.rb (REXML::Document.entity_expansion_text_limit=):
+ deprecated.
+ * lib/rexml/text.rb: add missing require "rexml/rexml" for
+ REXML.entity_expansion_text_limit.
+ Reported by Robert Ulejczyk. Thanks!!! [ruby-core:52895] [Bug #7961]
- * file.c: FileOp¤Î°ìʸ»ú¥á¥½¥Ã¥É¤ò¤Ê¤¯¤¹¡¥°ìʸ»ú¥Æ¥¹¥È¤Ïtest¥á¥½¥Ã
- ¥É¤Ë¤Þ¤«¤»¤ë¡¥
+Tue Feb 26 15:12:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (yylex): ÊÑ¿ô̾¤Î¸å¤í¤Ë`?'¤âµö¤¹¡¥½Ò¸ì¥á¥½¥Ã¥É¤Î¸å¤í¤Ë
- `?'¤òÄɲ乤롥
+ * tool/mkconfig.rb: reconstruct comma separated list values. a
+ command line to Windows batch file is split not only by spaces
+ and equal signs but also by commas and semicolons.
-Thu Sep 7 20:01:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Tue Feb 26 15:04:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c: ʸ»úÎó¤ÎÃæ¿È¤ò¹¹¿·¤¹¤ë¥á¥½¥Ã¥É¤Î̾Á°¤Î½ª¤ê¤Ë`!'¤òÉղá¥
- `!'¤Î̵¤¤¥Ð¡¼¥¸¥ç¥ó¤âÍѰդ·¤¿¡¥
+ * configure.in (unexpand_shvar): get rid of non-portable shell
+ behavior on OpenBSD, so no extra quotes. [Bug #7959]
- * parse.y: ÊÑ¿ô̾¤Î¸å¤í¤Ë`!'¤òµö¤¹¡¥
+Tue Feb 26 10:24:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Sep 6 14:12:19 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * parse.y (IS_LABEL_POSSIBLE): allow labels for keyword arguments just
+ after method definition without a parenthesis. [ruby-core:52820]
+ [Bug #7942]
- * version 0.85
+Tue Feb 26 04:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * string.c (Fstr_dup): ʸ»úÎó¤ÎÊ£À½¤òºî¤ë
- (Fstr_freeze): ʸ»úÎó¤Î¹¹¿·ÉԲİÀ­¤òÀßÄê¤Ç¤­¤ë¤è¤¦¤Ë¡¥
- (Fsub/Fgsub): $_¤ÎÆâÍÆ¤òdup¤·¤Æ¤«¤éÃÖ´¹¤ò¹Ô¤¦¤è¤¦¤Ë¡¥
+ * error.c: clarify reason for sleep in SignalException example
- * ruby.h (CLONESETUP): flags¤Î¾õÂ֤⥳¥Ô¡¼
+Tue Feb 26 03:47:00 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Sep 5 01:27:50 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * error.c: clarify a document of SignalException. Process.kill()
+ doesn't have any guarantee when signal will be delivered.
+ [Bug #7951] [ruby-core:52864]
- * sample/test.rb: ¼ºÇԤθ¡½Ð¤ò¸·¤·¤¯¡¥
+Mon Feb 25 23:51:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Aug 25 14:31:02 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * include/ruby/version.h: bump RUBY_API_VERSION same as RUBY_VERSION.
- * process.c (Ffork): ¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¤âưºî¤¹¤ë¤è¤¦¤Ë¡¥
+Mon Feb 25 21:03:34 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * version 0.84
+ * string.c (str_byte_substr): don't set coderange if it's not known.
+ [Bug #7954] [ruby-dev:47108]
- * signal.c (sig_beg): ¥Ï¥ó¥É¥é¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë»þ¤Ë¤ÏºÆÀßÄꤷ¤Ê¤¤¡¥
+Mon Feb 25 16:47:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/extmk.rb.in (create_makefile): shared object¤Î¥ê¥ó¥¯¤ÎºÝ¤Ë
- `-l'¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤è¤¦¤Ë¡¥
+ * common.mk (realclean-local): miniprelude.c is made by srcs, so it
+ should not removed by distclean but by realclean. [Bug #6807]
- * signal.c (trap): `EXIT'¤Ç½ªÎ»½èÍý¤ò¹Ô¤¦ÀßÄ꤬½ÐÍè¤ë¡¥
+Mon Feb 25 16:30:30 2013 Eric Hodel <drbrain@segment7.net>
-Wed Aug 16 00:13:22 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rubygems/config_file.rb: Lazily load .gem/credentials to only
+ check permissions when necessary. RubyGems bug #465
+ * test/rubygems/test_gem_config_file.rb: Test for the above.
- * signal.c (sig_beg): ¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏbeginÀá¤ÎÃæ¤Ç¤À¤±SIGINT¤òÊáª
- ¤¹¤ë¤è¤¦¤ËÊѹ¹¡¥
+ * test/rubygems/test_gem_commands_push_command.rb: Remove duplicated
+ test.
- * io.c (io_ctl): fcntl¤ò»ý¤¿¤Ê¤¤¥·¥¹¥Æ¥à¤Ë¤âÂбþ¡¥
+Mon Feb 25 15:47:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ³Æ¥Ç¥£¥ì¥¯¥È¥ê¤Ëʬ»¶¤·¤Æ¤¤¤¿MANIFEST¤ò¤Þ¤È¤á¤¿¡¥³ÈÄ¥¥â¥¸¥å¡¼¥ëËè
- ¤Ë¤ÏɬÍס¥
+ * enc/depend (ARFLAGS): VisualC++ linker does not allow spaces between
+ output option and the output file name. [Bug #7950]
- * string.c (Sstr_new,str_sub,Fstr_crypt): °ú¿ô¤ò¼«Æ°Åª¤Ëʸ»úÎó¤ËÊÑ
- ´¹¤¹¤ë¤è¤¦¤Ë¡¥
+ * enc/depend (RANLIB): set default command to do nothing, or make the
+ entire line a label on Windows.
-Sat Aug 12 00:44:02 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Feb 25 14:41:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c (Fstr_crypt): PD crypt¤òÍѰդ·¤¿¡¥
+ * lib/mkmf.rb (MakeMakefile#init_mkmf): default libdirname to libdir.
-Fri Aug 11 14:37:03 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * tool/rbinstall.rb: ditto.
- * assoc.c (Fassoc_clone): assoc¤âclone¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+Mon Feb 25 13:12:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c: ¥Þ¥¯¥íREAD_DATA_PENDING¤ÎÄêµÁ¤òÊѹ¹(LinuxÂбþ)
+ * configure.in (setup): find Setup file from target_os 1. by
+ suffix (e.g. Setup.nacl, Setup.atheos), 2. by "platform"
+ option (e.g. Setup.nt, Setup.emx), and 3. default Setup. And
+ Setup.dj had been removed.
- * io.c (io_fptr_finalize): fptr¤Î³«Êü»þ¤Î½èÍý¤ò»ØÄê¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+Mon Feb 25 12:48:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Wed Aug 9 16:52:41 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread.c: Document Thread::new, clean up ::fork and mention calling
+ super if subclassing Thread
- * eval.c (rb_provided): Ê£¿ô¤Îfeature¤ò¥í¡¼¥É¤¹¤ë¤È̵¸Â¥ë¡¼¥×¤ËÍî
- ¤Á¤ë¤È¤¤¤¦Ã±½ã¤Ê(¤·¤«¤·¶§°­¤Ê)¥ß¥¹¡¥
+Mon Feb 25 12:38:50 2013 Tanaka Akira <akr@fsij.org>
- * ext/extmk.rb.in (install): dlopenÂбþ¤ò¹Ô¤Ã¤¿¡¥º£¤Þ¤Çdln¤Ë¤·¤«½½
- ʬ¤ËÂбþ¤·¤Æ¤¤¤Ê¤«¤Ã¤¿¡¥
+ * ext/socket/extconf.rb: don't test ss_family and ss_len member of
+ struct sockaddr_storage. They are not used now except SunOS
+ specific code.
-Tue Aug 8 14:17:06 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Feb 25 11:03:38 2013 Akinori MUSHA <knu@iDaemons.org>
- * version 0.83
+ * configure.in (unexpand_shvar): Use the numeric comparison
+ operator instead of '==' which is a ksh extension. [Bug #7941]
-Mon Aug 7 12:47:41 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Mon Feb 25 02:37:56 2013 Tanaka Akira <akr@fsij.org>
- * parse.y: resque -> rescue¡¥ÃѤº¤«¤·¤¤¤¬typo¤ò»Ä¤·¤Æ¤ª¤¯¤ï¤±¤Ë¤Ï
- ¤¤¤«¤Ê¤¤¤è¤Ê¤¢¡¥¤Ê¤ó¤Çº£¤Þ¤Çµ¤¤¬¤Ä¤«¤Ê¤«¤Ã¤¿¤Î¤«¡Ä¡¥
+ * ext/socket: define and use union_sockaddr instead of struct
+ sockaddr_storage for less casts.
-Thu Aug 3 18:18:05 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/rubysocket.h (union_sockaddr): defined.
- * missing/nt.c: NT°Ü¿¢ÍѤδؿô·²¤ò¤Þ¤È¤á¤¿¡¥
+ * ext/socket/socket.c (sock_accept): use union_sockaddr.
+ (sock_accept_nonblock): ditto.
+ (sock_sysaccept): ditto.
+ (sock_s_getnameinfo): ditto.
- * variable.c (rb_const_get): ¤Þ¤¿Îã³°¤òȯÀ¸¤¹¤ë¤è¤¦¤Ë¤·¤¿¡¥defined
- ¤¬¤¢¤ë°Ê¾åÎã³°¤òȯÀ¸¤µ¤»¤Ê¤¤Íýͳ¤¬¤Ê¤¤¤Î¤Ç(Îã³°¤¬È¯À¸¤·¤¿Êý¤¬¥¿
- ¥¤¥×¥ß¥¹¤Î¸¡½Ð¤Ê¤É¤ÎÅÀ¤ÇÍ­Íø)¡¥
+ * ext/socket/basicsocket.c (bsock_getsockname): ditto.
+ (bsock_getpeername): ditto.
+ (bsock_local_address): ditto.
+ (bsock_remote_address): ditto.
- * variable.c (Fautoload): autoload¤ò¼ÂÁõ¡¥º£Å٤ϻȤ¨¤ë¤«¡¥
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): ditto.
-Mon Jul 31 15:44:21 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * ext/socket/init.c (recvfrom_arg): ditto.
+ (recvfrom_blocking): ditto.
+ (rsock_s_recvfrom): ditto.
+ (rsock_s_recvfrom_nonblock): ditto.
+ (rsock_getfamily): ditto.
- * parse.y (arg_ambiguous): Âè1°ú¿ô¤Î¤¢¤¤¤Þ¤¤¤µ¤ò·Ù¹ð(-v¥ª¥×¥·¥ç¥ó
- ¤ÇÍ­¸ú)¡¥
+ * ext/socket/raddrinfo.c (rb_addrinfo_t): ditto.
+ (ai_get_afamily): ditto.
+ (inspect_sockaddr): ditto.
+ (addrinfo_mdump): ditto.
+ (addrinfo_mload): ditto.
+ (addrinfo_getnameinfo): ditto.
+ (addrinfo_ip_port): ditto.
+ (extract_in_addr): ditto.
+ (addrinfo_ipv6_to_ipv4): ditto.
+ (addrinfo_unix_path): ditto.
- * eval.c (rb_eval): `-v'¥ª¥×¥·¥ç¥ó¤ò¤Ä¤±¤Æ`def'¤¬¸Æ¤Ð¤ì¤ë¤ÈÉÔɬÍ×
- ¤Ê¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬½Ð¤¿¡¥
+ * ext/socket/tcpserver.c (tcp_accept): ditto.
+ (tcp_accept_nonblock): ditto.
+ (tcp_sysaccept): ditto.
- * parse.y (yylex): ¥á¥½¥Ã¥É¤ÎÂè1°ú¿ô¤ÎȽÄê¤ò¤â¤¦¤Á¤ç¤Ã¤È¸­¤¯¤·¤¿¡¥
+ * ext/socket/ipsocket.c (ip_addr): ditto.
+ (ip_peeraddr): ditto.
+ (ip_s_getaddress): ditto.
-Fri Jul 28 19:04:43 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Feb 24 21:15:05 2013 Tadayoshi Funaba <tadf@dotrb.org>
- * parse.y (yylex): `+/-/['¤ÎľÁ°¤Ë¶õÇò¤¬Íè¤ë¤«¤É¤¦¤«¤Çưºî¤òÊѹ¹¤·
- ¤¿(º®Íð¤Î¤â¤È¤«?)
+ * ext/date/date_core.c: [ruby-core:52303]
-Wed Jul 26 09:21:23 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Feb 24 15:33:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 0.82a
+ * random.c (rb_random_ulong_limited): limit is inclusive, but generic
+ rand method should return a number less than it, so increase for the
+ difference. [ruby-core:52779] [Bug #7935]
- * sprintf.c (Fsprintf): `%s'¤Ç'\0'¤ò´Þ¤àʸ»úÎó¤ËÂбþ¡¥
+Sun Feb 24 15:32:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * pack.c (Fpck_pack): pack¤ÎÍ×ÁdzÎÊݤΥХ°¡¥
+ * random.c (rb_random_ulong_limited): limit is inclusive, but generic
+ rand method should return a number less than it, so increase for the
+ difference. [ruby-core:52779] [Bug #7935]
- * eval.c (Floop): ̵¸Â¥ë¡¼¥×¤Î¥¤¥Æ¥ì¡¼¥¿¡¥
+Sun Feb 24 15:14:43 2013 Eric Hodel <drbrain@segment7.net>
- * io.c (next_argv): ¸ºß¤·¤Ê¤¤¥Õ¥¡¥¤¥ë̾¤¬»ØÄꤵ¤ì¤¿»þ¤Î¥¨¥é¡¼½èÍý
- ¤¬¹Ô¤ï¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡¥
+ * lib/net/http.rb: Removed duplicate Accept-Encoding in Net::HTTP#get.
+ [ruby-trunk - Bug #7924]
+ * test/net/http/test_http.rb: Test for the above.
-Mon Jul 24 17:37:34 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Feb 20 14:28:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * version 0.82
+ * thread.c: Document ThreadGroup::Default
- * ext/extmk.rb.in (install): ³ÈÄ¥¥â¥¸¥å¡¼¥ë¤òstatic link¤¹¤ë¾ì¹ç¤Ï
- ¤½¤Î¥â¥¸¥å¡¼¥ë¤¬´û¤Ërequire¤µ¤ì¤¿¤Î¤ÈƱ¤¸¤è¤¦¤Ëfeature¤òÀßÄꤹ¤ë¡¥
- ¤³¤ì¤Ç³ÈÄ¥¥â¥¸¥å¡¼¥ë¤Îµ¡Ç½¤¬É¬Íפʻþ¤Ë¤Ï(static link¤µ¤ì¤Æ¤¤¤ë¤«
- ¤É¤¦¤«¤Ë¤«¤«¤ï¤é¤º)require¤¹¤ì¤Ð¤è¤¯¤Ê¤ë¡¥
+Wed Feb 20 14:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c (Frequire): `$"'¤Ë³ÊǼ¤¹¤ëʸ»úÎó¤ò¥Õ¥ë¥Ñ¥¹¤Ç¤Ê¤¯¥Õ¥£¡¼¥Á¥ã
- ̾¤È¤¹¤ë¡¥ruby¥¹¥¯¥ê¥×¥È¤ò¥í¡¼¥É¤·¤¿»þ¤Ë¤Ï`.rb'¡¤¥ª¥Ö¥¸¥§¥¯¥È¤ò
- ¥í¡¼¥É¤·¤¿»þ¤Ë¤Ï`.o'¤ò¥Õ¥£¡¼¥Á¥ã̾¤ËÉղ乤롥lisp¤Îrequire¤È
- provide¤ÎƯ¤­¤Ë(¾¯¤·)¶á¤¤¡¥
+ * thread.c: Grammar for #backtrace_locations and ::handle_interrupt
-Thu Jul 20 12:50:05 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Feb 24 13:35:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * Makefile.in (test): make test¤¬¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+ * vm_insnhelper.c (vm_call_method): block level control frame does not
+ have method entry, so obtain the method entry from method top-level
+ control frame to be compared with refined method entry.
+ [ruby-core:52750] [Bug #7925]
- * struct.c (struct_new): typo.
+Wed Feb 20 13:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c (rb_eval): `defined'¤òÄɲᥥ᥽¥Ã¥É/ÊÑ¿ô/Äê¿ô¤ÎÄêµÁ¾õÂÖ
- ¤òÃΤë»ö¤¬½ÐÍè¤ë¡¥
+ * object.c: Document methods receiving string and convert to symbol
+ Patch by Stefan Rusterholz
+ * vm_eval.c: ditto
+ * vm_method.c: ditto
-Wed Jul 19 18:04:01 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Wed Feb 20 07:20:56 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * version 0.81
+ * signal.c (sigsegv): suppress unused result warning. Because
+ write(2) is marked __warn_unused_result__ on Linux glibc.
-Mon Jul 17 14:53:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sun Feb 24 07:50:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * variable.c (rb_const_get): ̤½é´ü²½¤ÎCONSTANT¤ÎÃͤònil¤Ë¤·¤¿¡¥¤·
- ¤«¤·¡¤º£¸å¤Þ¤¿Îã³°¤ËÌ᤹²ÄǽÀ­¤Ï¤¢¤ë¡¥ÍפÏoptional¤Ê¥¯¥é¥¹/¥â¥¸¥å¡¼
- ¥ë¤¬Â¸ºß¤¹¤ë¤«¥Á¥§¥Ã¥¯¤·¤¿¤¤¤À¤±¤Ê¤ó¤À¤Ê¡¥
-
- * st.c (int): grow_factor¤ò¸ÇÄê¤Ë¤·¤¿(ÂçÅ褵¤ó¤Î¥Þ¥·¥ó¤ËÂбþ)¡¥
+ * compile.c (iseq_set_arguments): no keyword check if any keyword rest
+ argument exists, even unnamed. [ruby-core:52744] [Bug #7922]
-Fri Jul 14 00:48:40 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Feb 23 16:51:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ext/extmk.rb.in: ¥­¥ã¥Ã¥·¥å¤Î¥Ð¥°¤ò½¤Àµ¡¥
+ * thread.c: Documentation for Thread#backtrace_locations
- * parse.y (var_extend): #{$¿ô»ú}¤ËÂбþ¤·¤¿¡¥
+Sat Feb 23 16:05:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * dln.c (dln_load_1): `Init_FILENAME'¤À¤±¤òÍ­¸ú¤Ë¡¥`init_*'¤Ïº£¸å
- ¼Â¹Ô¤·¤Ê¤¤¡¥
+ * vm.c: Typo in ObjectSpace::WeakMap overview
- * ext/etc/etc.c : Etc¥â¥¸¥å¡¼¥ë¤ò³ÈÄ¥¥â¥¸¥å¡¼¥ë¤È¤·¤ÆÊ¬Î¥¡¥¼Â¤ÏNT
- Âбþ¤Ø¤ÎÉÛÀФÀ¤Ã¤¿¤ê¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤¡¥
+Sat Feb 23 16:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Jul 11 17:12:48 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * thread.c: Improved rdoc for ::handle_interrupt, ::pending_interrupt?
+ and #pending_interrupt?
- * gcc -Wall¤Ç½Ð¤¿warning¤ò¸µ¤Ë¥½¡¼¥¹¤òÊѹ¹¡¥
+Sat Feb 23 12:26:43 2013 Akinori MUSHA <knu@iDaemons.org>
- * signal.c (trap): typo.
+ * misc/ruby-electric.el (ruby-electric-curlies)
+ (ruby-electric-matching-char, ruby-electric-bar): Avoid electric
+ insertion when there is a prefix argument.
-Fri Jul 7 10:08:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * misc/ruby-electric.el (ruby-electric-insert)
+ (ruby-electric-cua-replace-region-p)
+ (ruby-electric-cua-replace-region): Avoid electric insertion and
+ fall back when cua-mode is enabled and a region is active.
- * version 0.80
+Sat Feb 23 12:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * ruby.texi: texinfo document¤òÄó¶¡¡¥spec¤Èruby.1¤Ï̵¤¯¤Ê¤Ã¤¿¡¥
+ * array.c: Document #<=> return values and formatting
+ * bignum.c: ditto
+ * file.c: ditto
+ * object.c: ditto
+ * numeric.c: ditto
+ * rational.c: ditto
+ * string.c: ditto
+ * time.c: ditto
- * signal.c (Ftrap): ³ä¹þ¤ß¶Ø»ßÃæ¤ÎÎ㳰ȯÀ¸¤ËÂбþ¡¥
+Sat Feb 23 10:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c (Flambda): Block¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹¡¥Block.new¤ÈƱµÁ¡¥
+ * array.c (rb_ary_diff, rb_ary_and, rb_ary_or): Document return order
+ [RubySpec #7803]
-Thu Jul 6 00:35:03 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+Sat Feb 23 10:17:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * signal.c (Ftrap): SIG_DFL¤Î½èÍý¤òÊѹ¹¡¥SIGINT¤Ø¤Î¥Ç¥Õ¥©¥ë¥È¥Ï¥ó
- ¥É¥é¤òÍѰÕ(Îã³°¤òȯÀ¸¤¹¤ë)¡¥
+ * object.c (rb_obj_comp): Documenting Object#<=> return values
+ Patch by Stefan Rusterholz
- * file.c (Sfile_expand_fname): ¥Ñ¥¹Ì¾¤òÀäÂХѥ¹¤ËŸ³«¤¹¤ë¥á¥½¥Ã¥É¡¥
- (Sfile_basename): basename¤òÆÀ¤ë¥á¥½¥Ã¥É¡¥³ÈÄ¥»Ò¤â³°¤»¤ë¡¥
- (Sfile_dirname): basename¤ÎÈ¿ÂС¥
+Sat Feb 23 09:48:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_call): argumentɾ²ÁÃæ¤ÎÎ㳰ȯÀ¸¤ËÂбþ¡¥
+ * dir.c (file_s_fnmatch, fnmatch_brace): encoding-incompatible pattern
+ and string do not match, instead of exception. [ruby-dev:47069]
+ [Bug #7911]
- * file.c (Ftest): `M', `A', `C'¤òÄɲÃ.
+Sat Feb 23 08:57:46 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Tue Jul 4 12:36:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * doc/NEWS-*: Update NEWS from their respective branches
- * file.c (Ftest): ¥Õ¥¡¥¤¥ë¥Æ¥¹¥ÈÍѥ᥽¥Ã¥É¡¥
+Sat Feb 23 08:14:43 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * ruby.c (proc_options): `-r'¥ª¥×¥·¥ç¥ó¤òÄɲá¥
+ * NEWS: many additions for Ruby 2.0.0
- * parse.y (f_args): ¥Ç¥Õ¥©¥ë¥È°ú¿ô¤òÄɲá¥
+ * object.c: Add doc for Module.prepended
- * eval.c (rb_call): ³ºÅö¤¹¤ë°ú¿ô¤¬Ìµ¤¤»þ¡¤rest°ú¿ô¤ÎÃͤònil¤Ë¡¥
+Sat Feb 23 07:52:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * numeric.c (num_equal): ¿ôÃͰʳ°¤È¤ÎÈæ³Ó¤ÇÎã³°¤¬È¯À¸¤·¤Æ¤¤¤¿¡¥
- FALSE¤òÊÖ¤¹¤è¤¦¤Ë¡¥
+ * template/ruby.pc.in: reorder library flags which may refer library
+ names. [Bug #7913]
- * eval.c (masign): ¿½ÅÂåÆþ¤ÎrestÉô¤Îưºî¤¬¤ª¤«¤·¤«¤Ã¤¿¡¥
+Fri Feb 22 23:46:20 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-Sat Jun 17 01:03:16 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rexml/document.rb (REXML::Document.entity_expansion_text_limit):
+ fix a typo in comment in r39384.
- * parse.y (gettable): ̤½é´ü²½¤Î¥í¡¼¥«¥ëÊÑ¿ô¤Î»²¾È(ÆÈΩ¤·¤¿¼±ÊÌ»Ò)
- ¤ÏÀµ¼°¤Ë¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¤È¤·¤¿¡¥
+Fri Feb 22 18:31:46 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * parse.y (read_escape): tokenbuf¤ò»È¤ï¤Ê¤¤¤è¤¦¤Ë½¤Àµ¡¥¤½¤ì¤Ë¤È¤â
- ¤Ê¤¤¡¤`\C-x',`\M-x'¤Ê¤É¤Î¥¨¥¹¥±¡¼¥×ɽ¸½¤òÉü³è¡¥¤³¤ì¤Ç¥É¥­¥å¥á¥ó
- ¥È¤È¼ÂºÝ¤Î½èÍý·Ï¤¬°ìÃפ·¤¿¡¥
+ * lib/rexml/document.rb (REXML::Document.entity_expansion_text_limit):
+ new attribute to read/write entity expansion text limit. the default
+ limit is 10Kb.
-Thu Jun 15 15:42:00 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * lib/rexml/text.rb (REXML::Text.unnormalize): check above attribute.
- * re.c (re_regcomp): cache¤Î¥Á¥§¥Ã¥¯¤ò²þÁ±¡¥
+Fri Feb 22 17:36:23 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Jun 12 18:50:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * test/test_rbconfig.rb (TestRbConfig): fix r39372.
+ It must see RbConfig::CONFIG instead of CONFIG.
- * version 0.79
+Fri Feb 22 14:55:41 2013 Naohisa Goto <ngotogenome@gmail.com>
-Sat Jun 10 00:25:01 1995 Yukihiro Matsumoto <matz@caelum.co.jp>
+ * signal.c (ruby_abort): fix typo in r39354 [Bug #5014]
- * re.c (re_regcomp): cacheȽÄê¤Ë`$='¤ÎÃͤâÈ¿±Ç¤µ¤»¤¿¡¥
+Fri Feb 22 12:46:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sample/test.rb: test suiteºîÀ®¡¥
+ * random.c (rb_random_ulong_limited): fix error message for negative
+ value. [ruby-dev:47061] [Bug #7903]
-Fri Jun 9 15:58:34 1995 Yukihiro Matsumoto <matz@ix-02>
+Fri Feb 22 11:36:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * re.c (re_regcomp): cache¤ÎȽÄ꤬´Ö°ã¤Ã¤Æ¤¤¤¿¡¥
+ * test/test_rbconfig.rb (TestRbConfig): skip user defined values by
+ configuration options. [Bug #7902]
-Fri Jun 9 00:01:35 1995 Yukihiro Matsumoto (matz@dyna)
+Fri Feb 22 11:33:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_yield): block¹½Â¤ÂΤ˽é´ü²½¤·¤Æ¤¤¤Ê¤¤¥á¥ó¥Ð(iter)¤¬¤¢¤Ã
- ¤¿¤Î¤Ç¥¤¥Æ¥ì¡¼¥¿¤Î¥Í¥¹¥È¤¬Àµ¤·¤¯Æ°ºî¤·¤Ê¤«¤Ã¤¿¡¥
+ * lib/mkmf.rb (MakeMakefile#init_mkmf): adjust default library path
+ for multiarch. [Bug #7874]
-Thu Jun 8 00:59:03 1995 Yukihiro Matsumoto (matz@dyna)
+Fri Feb 22 11:10:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * re.c (=~): String°Ê³°¤È¤ÎÈæ³Ó¤¬FALSE¤òÊÖ¤¹¤è¤¦¤Ë(Îã³°¤òȯÀ¸¤·¤Æ
- ¤¤¤¿)¡¥
+ * enum.c (Enumerable#chunk: Improved examples, grammar, and formatting
+ Patch by Dan Bernier and Rich Bruchal of newhaven.rb
+ [Github documenting-ruby/ruby#8]
- * extmk.rb.in: ȽÄꤷ¤¿Ãͤò¥Õ¥¡¥¤¥ë¤Ë¥­¥ã¥Ã¥·¥å¤¹¤ë¤è¤¦¤Ë¤·¤¿¡¥
+Fri Feb 22 11:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * assoc.c (to_a): to_a¥á¥½¥Ã¥É¤¬ºÆÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡¥
-
- * eval.c (rb_eval): ½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¥í¡¼¥«¥ëÊÑ¿ô¤Ø¤Î¥¢¥¯¥»¥¹¤ò°ú
- ¿ô¤Î̵¤¤¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¤È²ò¼á¤¹¤ë¡¥¤¿¤À¤·¡¤(¸½¾õ¤Ç¤Ï)¥á¥½¥Ã¥É¤¬
- ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤¥¨¥é¡¼¤Ë¤»¤ºÊÑ¿ô̤½é´ü²½¤Îwaring¤ò½Ð¤·¤Æ
- nil¤òÊÖ¤·¤Æ¤¤¤ë¡¥¡Öruby -pe print¡×¤Ê¤É¤¬¼Â¹Ô¤Ç¤­¤ë¤È¤¤¤¦°ÕÌ£¤Ç
- ¤Ï¤¢¤ê¤¬¤¿¤¤¤³¤Î»ÅÍͤϡ¤¤·¤«¤·º£¸å¤Î¸¡Æ¤¤¬É¬ÍפǤ¢¤ë¡¥-- ¥á¥½¥Ã
- ¥É¸Æ¤Ó½Ð¤·¤È¤¹¤ë¤Î¤ò»ß¤á¤ë¤«(°ÊÁ°¤Î»ÅÍÍ)¡¤¤¤¤Ä¤â¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·
- ¤È¤¹¤ë(̤ÄêµÁ¤Ê¤é¤Ð¥¨¥é¡¼)¤«¡¤º£¤Î»ÅÍͤǹԤ¯¤«¡¥
+ * numeric.c: Examples and formatting for Numeric and Float
+ Based on a patch by Zach Morek and Oren K of newhaven.rb
+ [Github documenting-ruby/ruby#5]
- * eval.c (rb_eval): ½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¥í¡¼¥«¥ëÊÑ¿ô¤Ø¤Î¥¢¥¯¥»¥¹¤Ç
- (eval¤Ê¤É¤Ç)½é´ü²½¤µ¤ì¤¿»ö¤¬Ê¬¤«¤Ã¤¿»þ¤Ë¤Ï°Ê¸å½é´ü²½¤µ¤ì¤¿¥í¡¼¥«
- ¥ëÊÑ¿ô¤È¤ß¤Ê¤¹¡¥
+Fri Feb 22 07:04:41 2013 Eric Hodel <drbrain@segment7.net>
-Wed Jun 7 11:58:12 1995 Yukihiro Matsumoto <matz@ix-02>
+ * lib/rubygems/installer.rb (build_extensions): Create extension
+ install destination before building extension. Patch by Kenta Murata.
+ [ruby-trunk - Bug #7897]
+ * test/rubygems/test_gem_installer.rb: Test for the above.
- * eval.c (rb_fail): Îã³°½èÍý¸å¤â`$!'¤ò¥¯¥ê¥¢¤·¤Ê¤¤¤è¤¦¤Ë¡¥
- (rb_fail): `$!'ÊÑ¿ô¤ËºÇ¸å¤Ë²þ¹Ô¤òÄɲ䷤ʤ¤¡¥
+Fri Feb 22 06:30:57 2013 Eric Hodel <drbrain@segment7.net>
- * io.c (Fprint): private¥á¥½¥Ã¥É¤ËÊѹ¹¡¥°ú¿ô¤ò¼è¤é¤Ê¤¤»þ¤Îưºî¤òÊÑ
- ¹¹(`$_'¤ò½ÐÎϤ¹¤ë)¡¥
- (Fio_print): ½ÐÎÏÀè»ØÄê¤Îprint¥á¥½¥Ã¥É¡¥
- (Fio_printf): ½ÐÎÏÀè»ØÄê¤Îprintf¥á¥½¥Ã¥É¡¥
+ * doc/globals.rdoc: Document what setting $DEBUG does.
- * parse.y: not±é»»»Ò¤ÎÄɲá¥Í¥Àè½ç°Ì¤ÎÄ㤤`!'±é»»»Ò¡¥
+ * doc/globals.rdoc: Added pointer to $-d for full documentation.
-Mon Jun 5 19:00:55 1995 Yukihiro Matsumoto <matz@ix-02>
+Fri Feb 22 06:27:07 2013 Eric Hodel <drbrain@segment7.net>
- * version 0.78
+ * doc/globals.rdoc: Document what setting $VERBOSE does. [Bug #7899]
-Fri Jun 2 17:52:03 1995 Yukihiro Matsumoto <matz@ix-02>
+ * doc/globals.rdoc: Added pointer to $-w and $-v for full
+ documentation.
- * ruby.c (proc_options): -I¥ª¥×¥·¥ç¥ó¤Ç`$:'¤Ø¤ÎÄɲ䵤ì¤ë½çÈÖ¤ò½¤
- Àµ¤·¤¿¡¥
+Fri Feb 22 02:33:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Fri Jun 2 00:36:34 1995 Yukihiro Matsumoto (matz@dyna)
+ * lib/abbrev.rb: Add words parameter to Abbrev::abbrev
+ Patch by Devin Weaver [Github documenting-ruby/ruby#7]
- * parse.y: while½¤¾þ»Ò¤Îưºî¤òÄ̾ï¤Îwhile¤ÈƱ¤¸¤Ë¤·¤¿¡¥¤¿¤À¤·¡¤
- begin¼°¤Ø¤Îwhile½¤¾þ»Ò¤À¤±¤Ïdo..while·¿¤Î¥ë¡¼¥×¤È¤Ê¤ë¡¥
+Thu Feb 21 17:28:14 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Wed May 31 18:36:30 1995 Yukihiro Matsumoto <matz@ix-02>
+ * tool/merger.rb: add interaction when only ChangeLog is modified.
- * version 0.77
+Thu Feb 21 16:34:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon May 29 18:39:37 1995 Yukihiro Matsumoto <matz@ix-02>
+ * signal.c (check_stack_overflow): extract duplicated code and get rid
+ of declaration-after-statement. [Bug #5014]
- * ext/extmk.rb.in (install): ³ÈÄ¥¥â¥¸¥å¡¼¥ë¤â¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤­¤ë¤è
- ¤¦¤Ë¡¥
+Thu Feb 21 14:14:13 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri May 26 14:43:01 1995 Yukihiro Matsumoto <matz@ix-02>
+ * signal.c (sigsegv): avoid to use async signal unsafe functions
+ when nested sigsegv is happen.
+ [Bug #5014] [ruby-dev:44082]
- * process.c (Fsystem): Ìá¤êÃͤò¥µ¥Ö¥×¥í¥»¥¹¤Î¼ºÇÔ/À®¸ù¤òɽ¤¹¿¿µ¶ÃÍ
- ¤Ë¤·¤¿¡¥½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤Ï`$?'¤ÇÆÀ¤ë¡¥
+Thu Feb 21 13:47:59 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue May 23 10:58:11 1995 Yukihiro Matsumoto <matz@ix-02>
+ * file.c (rb_group_member): added an error check. SUS says,
+ getgroups(small_value) may return EINVAL.
- * string.c (Fstr_upto): ̵¸Â¥ë¡¼¥×¤Ë´Ù¤é¤Ê¤¤¤è¤¦¤Ë¡¥
+Thu Feb 21 13:37:07 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * parse.y (cond): `||'¤Ê¤É¤Î±¦ÊÕ¤ËÀ©¸æ¼°¤¬½ñ¤±¤ë¤è¤¦¤Ë¡¤¾ò·ï¼°¤¬¤«
- ¤Ê¤é¤º¤·¤âÃͤò»ý¤¿¤Ê¤¯¤Æ¤âÎɤ¤¤è¤¦¤Ë¤·¤¿¡¥
+ * process.c (RB_MAX_GROUPS): moved to
+ * internal.h (RB_MAX_GROUPS): here.
- * ext/marshal/marshal.c: ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÆÉ¤ß½ñ¤­¤ò¥á¥½¥Ã¥É¤ÎºÆÄêµÁ
- ¤Ç¥³¥ó¥È¥í¡¼¥ë¤Ç¤­¤ë¤è¤¦¤Ë¡¥¥¤¥ó¥¹¥¿¥ó¥¹¤¬`_dump_to'¤È¤¤¤¦¥á¥½¥Ã
- ¥É¤òÄêµÁ¤·¤Æ¤¤¤ë»þ¤Ï¤½¤Á¤é¤ò»È¤¦¤è¤¦¤Ë¡¥
+ * file.c (rb_group_member): use RB_MAX_GROUPS instead of
+ RUBY_GROUP_MAX. They are the same.
- * ext/extmk.rb.in: static link¤âÀßÄê¤Ç¤­¤ë¤è¤¦¤Ê»ÅÍͤˤ·¤¿¡¥
- ext/Setup¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ë¥Ç¥£¥ì¥¯¥È¥ê̾¤òµ­½Ò¤¹¤ë¤È¤½¤Î¥Ç¥£¥ì¥¯
- ¥È¥ê¤Ë¸ºß¤¹¤ë¥â¥¸¥å¡¼¥ë¤Ïstatic link¤µ¤ì¤ë(¤Ï¤º)¡¥
+Thu Feb 21 13:15:40 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (rb_eval): `..'¤òʸˡ¤ËÁȤ߹þ¤ß¡¤`..'¤È`...'¤Îưºî¤òperl
- ¤Ë¹ç¤ï¤»¤¿¡¥
+ * file.c (access_internal): removed.
+ * file.c (rb_file_readable_real): use access() instead of
+ access_internal().
+ * file.c (rb_file_writable_real): ditto.
+ * file.c (rb_file_executable_real): ditto.
-Sat May 20 01:22:48 1995 Yukihiro Matsumoto (matz@dyna)
+Thu Feb 21 13:04:59 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * io.c (select): timeout»þ¤È³ä¹þ¤ß»þ¤Îưºî¤ÎÌÀ³Î²½¡¥
+ * file.c (eaccess): use access() when not using setuid nor setgid.
+ This is minor optimization.
-Fri May 19 15:33:23 1995 Yukihiro Matsumoto <matz@ix-02>
+Thu Feb 21 12:56:19 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * version 0.76
+ * file.c (rb_group_member): get rid of NGROUPS dependency.
+ [Bug #7886] [ruby-core:52537]
-Fri May 19 00:48:08 1995 Yukihiro Matsumoto (matz@dyna)
+Thu Feb 21 12:45:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c (Fstr_each): ¥¤¥Æ¥ì¡¼¥¿¥Ö¥í¥Ã¥¯Ãæ¤Çʸ»úÎó¤ÎÊѹ¹¤¬¹Ô¤ï¤ì
- ¤¿¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¡¥¥Ý¥¤¥ó¥¿¤ÎÃͤ¬ÊѤï¤Ã¤Æ¤¤¤ì¤ÐÎã³°¤òȯÀ¸¤¹¤ë¡¥
+ * ruby.c (ruby_init_loadpath_safe): try two levels upper for stripping
+ libdir name. [Bug #7874]
- * ruby-mode.el: ruby-electric-brace¤Î¿·Àß¡¥
+ * configure.in (libdir_basename): expand with multiarch in configure,
+ not to defer the expansion till ruby.pc.in and mkmf.rb. [Bug #7874]
-Thu May 18 12:27:23 1995 Yukihiro Matsumoto <matz@ix-02>
+ * configure.in (libdir_basename): also -rpath and -install_name flags
+ are affected when libruby directory changes. [Bug #7874]
- * string.c (Fstr_tr): tr¤ÎÃÖ´¹ÂоݤË`\0'¤ò´Þ¤à»þ¤ËÀµ¤·¤¯ÃÖ´¹¤ò¹Ô¤ï
- ¤Ê¤¤¥Ð¥°¤¬¤¢¤Ã¤¿¡¥¹¹¤ËÃÖ´¹Ê¸»úÎó¤òASCII½ç¤Ë»ØÄꤷ¤Ê¤¤¤Èưºî¤·¤Ê
- ¤¤ÌäÂê¤â¤¢¤Ã¤¿¡¥·ë²Ì¤È¤·¤Ætr¤ò½ñ¤­´¹¤¨¤¿¤Î¤Ç¡¤copyright¤ÎÌäÂê¤Ï
- ̵¤¯¤Ê¤Ã¤¿(¤È»×¤¦)¡¥
+Wed Feb 20 19:27:02 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.c (gc): the_scope¤ò¥Þ¡¼¥¯¤·¤Æ¤¤¤Ê¤«¤Ã¤¿¤Î¤Ç¡¤¥í¡¼¥«¥ëÊÑ¿ô¤Î»Ø
- ¤·¤Æ¤¤¤ë¥ª¥Ö¥¸¥§¥¯¥È¤¬´Ö°ã¤Ã¤Æ³«Êü¤µ¤ì¤ë¾ì¹ç¤¬¤¢¤Ã¤¿¡¥
+ * include/ruby/ruby.h (HAVE_RB_SCAN_ARGS_OPTIONAL_HASH): for
+ rb_scan_args() optional hash feature. [Bug #7861]
- * gc.c (mark_locations_array): ¼ã´³¤Î¹â®²½¡¥
+Wed Feb 20 18:02:26 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon May 15 11:43:49 1995 Yukihiro Matsumoto <matz@ix-02>
+ * configure.in (target_os): do not strip -gnu suffix on Linux if
+ --target is given explicitly. [Bug #7874]
- * ext/extmk.rb.in: Dynamic Load¥â¥¸¥å¡¼¥ë¤Î¥³¥ó¥Ñ¥¤¥ëÍÑ¥Á¥§¥Ã¥¯¤ò
- ¹Ô¤¦ruby script¡¥autoconf¤Ë¶á¤¤´¶³Ð¤Ç»È¤¨¤ë¡¥¿·¤·¤¤¥â¥¸¥å¡¼¥ë¤ò
- Ä󶡤·¤¿¤¤¿Í¤Ïext¤Î²¼¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤òºî¤ë¤À¤±¤ÇÎɤ¤¡¥É¬¿Ü¤Î¥Õ¥¡
- ¥¤¥ë¤Ï¥Õ¥¡¥¤¥ë̾¤Î°ìÍ÷¤òµ­Ï¿¤·¤¿`MANIFEST'¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Î¤ß¡¥É¬
- Íפ˱þ¤¸¤Æ`depend'(¥Õ¥¡¥¤¥ë¤Î°Í¸´Ø·¸¤òµ­½Ò¤¹¤ë¥Õ¥¡¥¤¥ë gcc -MM
- ¤Î½ÐÎÏ)¡¤`extconf.rb'(¥³¥ó¥Ñ¥¤¥ëÍѤ˥饤¥Ö¥é¥ê¤È´Ø¿ô¤Î¸ºß¥Á¥§¥Ã
- ¥¯¤¹¤ë¥Õ¥¡¥¤¥ë)¤òÍѰդǤ­¤ë¡¥
+ * configure.in (libdirname): adjust library path name which libruby
+ files will be installed. [Bug #7874]
- * eval.c (rb_call): ruby¥á¥½¥Ã¥É¤Î°ú¿ô¥Á¥§¥Ã¥¯»þ¤Ë̤½é´ü²½¤Î
- jmp_buf¤ò»ÈÍѤ·¤Æ¤¤¤¿¡¥
+ * tool/rbinstall.rb (libdir): ditto.
- * parse.y: `or'¤È`and'¤ÎÍ¥Àè½ç°Ì¤òƱ¤¸¤Ë¤·¤¿¡¥
+Wed Feb 20 13:37:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Wed May 3 18:21:36 1995 Yukihiro Matsumoto (matz@dyna)
+ * ext/pty/pty.c: Documentation for the PTY module
- * dln.c: Linux¤Ç¤Ï`__.SYMDEF/'¤Ç¤¢¤Ã¤¿¡¥
+Wed Feb 20 12:18:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * dln.c: system call¤Î¥¨¥é¡¼¥Á¥§¥Ã¥¯¤ò˺¤ì¤Æ¤¤¤¿¡¥
+ * object.c: Document Data class [Bug #7890] [ruby-core:52549]
+ Patch by Matthew Mongeau
-Wed Apr 26 09:50:56 1995 Yukihiro Matsumoto (matz@ix-02)
+Wed Feb 20 11:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * parse.y: ¥¤¥Æ¥ì¡¼¥¿¥Ö¥í¥Ã¥¯¤ÎÊÑ¿ôÀë¸À¤ò`|'¤Ç³ç¤ë¤è¤¦¤Ë¤·¤¿¡¥¤³¤ì
- ¤Ç¥¤¥Æ¥ì¡¼¥¿ÊÑ¿ô¤¬¤Ê¤¤»þ¤ÏÀë¸À¤½¤Î¤â¤Î¤ò¾Êά¤Ç¤­¤ë¡¥Ê¸Ë¡¤ÎÊѹ¹¤Ï
- µ×¤·¤Ö¤ê¤À¡¥
+ * lib/mutex_m.rb: Add rdoc for Mutex_m module
-Tue Apr 25 12:04:17 1995 Yukihiro Matsumoto (matz@ix-02)
+Wed Feb 20 09:34:43 2013 Eric Hodel <drbrain@segment7.net>
- * eval.c(require): load¤«¤é¥À¥¤¥Ê¥ß¥Ã¥¯¥í¡¼¥É¤Îµ¡Ç½¤ò°Ü¤·¤Æ¤­¤¿¡¥
- ¤µ¤é¤Ë³ÈÄ¥»Ò¤ÎÊä´°µ¡Ç½¤òÄɲ䷤ƥ桼¥¶¤¬dln/dlopen¤Îº¹¤ò°Õ¼±¤¹¤ë
- ɬÍפΤʤ¤¤è¤¦¤Ë¤·¤¿¡¥
+ * lib/rubygems/commands/update_command.rb: Create the installer after
+ options are processed. [ruby-trunk - Bug #7779]
+ * test/rubygems/test_gem_commands_update_command.rb: Test for the
+ above.
- * string.c(sub,sub): ¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¤âưºî¤¹¤ë¤è¤¦¤Ë¡¥
+Wed Feb 20 07:51:19 2013 Eric Hodel <drbrain@segment7.net>
- * object.c: init_object -> initialize.
+ * lib/rubygems/installer.rb: Use gsub instead of gsub! to avoid
+ altering @bin_dir. Fixes tests on windows. [ruby-trunk - Bug #7885]
-Mon Apr 24 14:22:39 1995 Yukihiro Matsumoto (matz@ix-02)
+Tue Feb 19 20:50:00 2013 Kenta MURATA <mrkn@mrkn.jp>
- * NEWS-OS 3.4Âбþ
+ * ext/bigdecimal/bigdecimal.gemspec: bump to 1.2.0.
+ [ruby-core:51777] [Bug #7761]
- * io.c: Solaris¤Îstdio¤Îưºî¤¬°ã¤¦¤è¤¦¤À¡¥signal¤ÇEOF¤òÊÖ¤·¤Æ¤·¤Þ
- ¤¦¡Ä¡¥perl¤Ç¤âƱÍͤÎÌäÂ꤬¤¢¤ë¡¥
+Tue Feb 19 13:07:25 2013 Akinori MUSHA <knu@iDaemons.org>
-Fri Apr 21 20:04:39 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/syslog/syslog.c (Init_syslog): Define inspect as a singleton
+ method and remove it as an instance method. [Bug #6502]
- * version 0.75
+Tue Feb 19 12:30:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * signal.c: trap¤¬¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿¡¥¤¦¡¼¤à¡¥
+ * object.c: rdoc formatting for Kernel#Array()
+ * array.c: Add rdoc for Array() method to Creating Arrays section
- * configure: Solaris 2.3Âбþ¡¥
+Tue Feb 19 10:35:52 2013 Eric Hodel <drbrain@segment7.net>
- * io.c: #elif¤Î¤Ê¤¤cpp¤â¤¢¤ë¡¥
+ * ext/openssl/ossl.c (class OpenSSL): Use only inner parenthesis in
+ create_extension examples.
- * dir.c: autoconf 2.x¤Ø¤ÎÂбþ¤¬ÉÔ½½Ê¬
+Tue Feb 19 10:27:12 2013 Eric Hodel <drbrain@segment7.net>
-Thu Apr 20 12:31:24 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/openssl/ossl.c (class OpenSSL): Fixed ExtensionFactory example.
+ Patch by Richard Bradley. [ruby-trunk - Bug #7551]
- * version 0.74
+Tue Feb 19 08:32:11 2013 Koichi Sasada <ko1@atdot.net>
- * env.h, gc.c, regex.c: IRIX¤Ø¤Î°Ü¿¢Âбþ
+ * vm_eval.c (vm_call0_body): check interrupts after method dispatch
+ from C methods. [Bug #7878]
- * configure: dlopenÍѤËpic¤òÀ¸À®¤¹¤ëoption¤Î¸¡½Ð¤Î¤¿¤á¡¤¥·¥¹¥Æ¥à¥¿
- ¥¤¥×¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤è¤¦¤Ë¡¥
+Tue Feb 19 08:14:40 2013 Eric Hodel <drbrain@segment7.net>
-Tue Apr 18 19:08:17 1995 Yukihiro Matsumoto (matz@ix-02)
+ * lib/rubygems/installer.rb: Fixed placement of executables with
+ --user-install. [ruby-trunk - Bug #7779]
+ * test/rubygems/test_gem_installer.rb: Test for above.
- * gc.c(xrealloc): ptr=nil¤Î»þ¡¤malloc()¤ÈƱ¤¸Æ¯¤­¤ò
+Tue Feb 19 06:04:06 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * array.c(astore): ¶õ¤ÎÇÛÎó¤Î0ÈÖÌܤÎÍ×ÁǤËÂåÆþ¤¹¤ë¤Èsize=0¤Ç
- realloc()¤ò¸Æ¤ó¤Ç¤¤¤¿¡¥
+ * vm_dump: FreeBSD ports' libexecinfo's backtrace(3) can't trace
+ beyond signal trampoline, and as described in r38342 it can't
+ trace on -O because it see stack frame pointers.
+ libunwind unw_backtrace see dwarf information in the binary
+ and it works with -O (without frame pointers).
- * configure, glob.c: Solaris 2.x¤Ç¥³¥ó¥Ñ¥¤¥ë¤Ç¤­¤ë¤è¤¦¤Ë
+ * configure.in: remove r38342's hack and check libunwind.
-Mon Apr 10 18:36:06 1995 Yukihiro Matsumoto (matz@ix-02)
+Tue Feb 19 04:26:29 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * version 0.73
+ * configure.in: check whether backtrace(3) works well or not.
-Fri Apr 7 13:51:08 1995 Yukihiro Matsumoto (matz@ix-02)
+ * vm_dump.c: set HAVE_BACKTRACE 0 if BROKEN_BACKTRACE.
- * cons.c->assoc.c: cons¤Î;·×¤Êµ¡Ç½¤Ï³°¤·¤Æpair¤È¤·¤Æ¤Îµ¡Ç½¤À¤±¤ò
- »Ä¤·¤¿¡¥Enumerable¤òinclude¤¹¤ë¤Î¤â¤ä¤á¤¿¡¥
+Mon Feb 18 16:30:18 2013 Akinori MUSHA <knu@iDaemons.org>
- * string.c(esub): ʸ»úÎóÃÖ´¹¥¤¥Æ¥ì¡¼¥¿¡¥perl¤Îs///e¤ÎÁêÅö¤¹¤ë¡¥
+ * lib/ipaddr.rb (IPAddr#in6_addr): Fix a typo with the closing
+ parenthesis.
-Wed Apr 5 11:35:21 1995 Yukihiro Matsumoto (matz@ix-02)
+Mon Feb 18 12:32:24 2013 Akinori MUSHA <knu@iDaemons.org>
- * version 0.72
+ * lib/ipaddr.rb (IPAddr#in6_addr): Fix the parser so that it can
+ recognize IPv6 addresses with only one edge 16-bit piece
+ compressed, like [::2:3:4:5:6:7:8] or [1:2:3:4:5:6:7::].
+ [Bug #7477]
- * EWS4800Âбþ
+Mon Feb 18 10:09:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * file.c: utimes¤¬¤Ê¤¤»þ¤Ïutime¤ò»È¤¦¤è¤¦¤Ë¡¥
+ * configure.in (unexpand_shvar): regularize a shell variable by
+ unexpanding shell variables in it.
-Mon Apr 3 15:19:41 1995 Yukihiro Matsumoto (matz@ix-02)
+Sun Feb 17 20:55:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version 0.71
+ * compar.c (rb_invcmp): compare by inversed comparison, with preventing
+ from infinite recursion. [ruby-core:52305] [Bug #7870]
- * regexp.c(re_match): ¥Ð¥°¤¬¤¢¤Ã¤¿¡¥match_2¤òºï½ü¤·¤¿»þ¤Ëenbug¤·¤Æ
- ¤¤¤¿¤Î¤À¤Ã¤¿¡¥
+ * string.c (rb_str_cmp_m), time.c (time_cmp): get rid of infinite
+ recursion.
-Mon Mar 27 15:41:43 1995 Yukihiro Matsumoto (matz@ix-02)
+Sun Feb 17 17:23:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * dict.c: Dict->Hash¤ËÁ´ÌÌŪ¤Ë°Ü¹Ô¡¥
+ * lib/mkmf.rb: remove extra topdir in VPATH, which was in
+ win32/Makefile.sub for some reason and moved from there.
+ [ruby-dev:46998] [Bug #7864]
-Thu Mar 23 20:30:00 1995 Yukihiro Matsumoto (matz@ix-02)
+Sun Feb 17 01:19:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * dbm.c,socket.c: ext¥Ç¥£¥ì¥¯¥È¥ê¤ËʬΥ¡¥
+ * ext/psych/lib/psych/y.rb: Document Kernel#y by Adam Stankiewicz
+ [Github tenderlove/psych#127]
- * configure: dln¼þ¤ê¤Î¥Á¥§¥Ã¥¯¤Î¶¯²½
+Sun Feb 17 00:52:14 2013 NARUSE, Yui <naruse@ruby-lang.org>
- * dln.c: init¤Î¸Æ¤Ó½Ð¤·¤òdlopen()ÈǤ˹ç¤ï¤»¤¿¡¥
+ * tool/mkconfig.rb: remove prefix from rubyarchdir.
+ r39267 expands variables, it changes expansion timing,
+ breaks RbConfig::CONFIG["includedir"] and building
+ extension libraries with installed ruby.
-Mon Mar 20 17:45:08 1995 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 16 20:51:17 2013 Kazuki Tsujimoto <kazuki@callcc.net>
- * configure: autoconf 2.2¤ËÂбþ(°ìÉô)¡¥
+ * vm.c (ENV_IN_HEAP_P): fix off-by-one error.
-Fri Mar 17 15:56:44 1995 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 16 20:47:16 2013 Akinori MUSHA <knu@iDaemons.org>
- * dln.c: dlopen¤Î¤¢¤ë¥Þ¥·¥ó¤Ç¤Ï¤½¤Á¤é¤ò»È¤¦¤è¤¦¤Ë¡¥¤¿¤À¤·¡¤¤Á¤ã¤ó
- ¤Èư¤¤¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ï¼«¿®¤¬¤Ê¤¤¡¥
+ * configure.in (LIBRUBY_DLDFLAGS): Fix a bug where --with-opt-dir
+ options given were not reflected to LIBRUBY_DLDFLAGS on many
+ platforms including Linux and other GNU-based systems, NetBSD,
+ AIX and BeOS.
- * regex.c: virtual concatination¤ò¤ä¤á¤¿¡¥
+Sat Feb 16 20:43:20 2013 Tanaka Akira <akr@fsij.org>
-Thu Mar 16 11:32:57 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/socket/ancdata.c (rsock_recvmsg): ignore truncated part of
+ socket address returned from recvmsg().
- * version 0.70
+ * ext/socket/init.c (recvfrom_blocking): ignore truncated part of
+ socket address returned from recvfrom().
+ (rsock_s_recvfrom_nonblock): ditto.
- * eval.c,regex.c: gcc¤Ç¤Î¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¡¥
+Sat Feb 16 20:05:26 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * io.c: inplace-edit¤Ç³ÈÄ¥»Ò¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¤¤â¤È¤Î¥Õ¥¡¥¤¥ë¤òºï
- ½ü¤¹¤ë¡¥
+ * test/ruby/test_thread.rb: fixed typo
+ patched by Hiroki Matsue via https://github.com/ruby/ruby/pull/248
-Wed Mar 15 14:59:18 1995 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 16 16:08:35 2013 Koichi Sasada <ko1@atdot.net>
- * version 0.69
+ * vm.c (rb_thread_mark): mark a working Proc of bmethod
+ (a method defined by define_method) even if the method was removed.
+ We could not trace working Proc object which represents the body
+ of bmethod if the method was removed (alias/undef/overridden).
+ Simply, it was mark miss.
+ This patch by Kazuki Tsujimoto. [Bug #7825]
- * eval.c(method_missing): unknown¤«¤é̾¾ÎÊѹ¹¡¥
+ NOTE: We can brush up this marking because we do not need to mark
+ `me' on each living control frame. We need to mark `me's
+ only if `me' was free'ed. This is future work after Ruby 2.0.0.
- * eval.c(single_method_added): ÆÃ°Û¥á¥½¥Ã¥É¤¬ÄêµÁ¤µ¤ì¤¿»þ¤Ë¸Æ¤Ð¤ì
- ¤ë¥á¥½¥Ã¥É¡¥hook¤È¤·¤Æ»È¤¨¤ë¡¥¼ÂºÝ¤ËÄêµÁ¤µ¤ì¤ëľÁ°¤Ë¸Æ¤Ð¤ì¤ë¡¥
+ * test/ruby/test_method.rb: add a test.
-Tue Mar 14 14:46:44 1995 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 16 15:45:56 2013 Koichi Sasada <ko1@atdot.net>
- * ruby.c(proc_options): °ú¿ô¤Î²òÀϤò¼«Ê¬¤Ç¤ä¤ë¤³¤È¤Ë¤è¤ê°ú¿ô»ØÄê¤Î
- ÊýË¡¤¬perl¤Ë¶áÉÕ¤¤¤¿¡¥getopt_long¤Ï¤â¤¦»È¤ï¤Ê¤¤¡¥
+ * proc.c (rb_binding_new_with_cfp): create binding object even if
+ the frame is IFUNC. But return a ruby-level binding to keep
+ compatibility.
+ This patch fix degradation introduced from r39067.
+ [Bug #7774] [ruby-dev:46960]
- * dir.c(glob): `{}'¤Î¥Í¥¹¥È¤òµö¤¹¤è¤¦¤Ë¤·¤¿¡¥
+ * test/ruby/test_settracefunc.rb: add a test.
-Mon Mar 13 17:56:25 1995 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 16 13:40:13 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * glob.c: Glob(¥ï¥¤¥ë¥É¥«¡¼¥É¥ª¥Ö¥¸¥§¥¯¥È)¤Ï¤Ê¤¯¤Ê¤Ã¤¿¡¥¥ï¥¤¥ë¥É¥«¡¼
- ¥É¤ÎŸ³«¤ÏDir.glob(ʸ»úÎó)¤ò»È¤¦¡¥¥ï¥¤¥ë¥É¥«¡¼¥É¤Î¥Þ¥Ã¥Á¤ÏÀµµ¬É½
- ¸½¤ÇÂåÍÑ¡¥
+ * configure.in (shvar_to_cpp): do not substitute exec_prefix itself
+ with RUBY_EXEC_PREFIX, which cause recursive definition.
+ [ruby-core:52296] [Bug #7860]
-Fri Mar 10 18:35:46 1995 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 16 13:13:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c: Math¤Î¤è¤¦¤Ê¥â¥¸¥å¡¼¥ë¤Ï¼«Ê¬¼«¿È¤Çextend¤¹¤ë¡¥
+ * ext/io/console/io-console.gemspec: bump to 0.4.2. now explicitly
+ requires ruby 1.9.3 or later. [Bug #7847]
- * eval.c: ¥¯¥é¥¹¤ä¥â¥¸¥å¡¼¥ë¤òÄêµÁ¤¹¤ë»þ¡¤´û¤ËƱ̾¤Î¤â¤Î¤¬¤¢¤ì¤ÐÄÉ
- ²ÃÄêµÁ¤È¤Ê¤ë¤è¤¦¤Ë¡¥¤¿¤À¤·¡¥super¥¯¥é¥¹¤Î°ã¤¤¤Ê¤É¤Ï¥Á¥§¥Ã¥¯¤¹¤ë¡¥
+ * ext/io/console/console.c (console_dev): compatibility with ruby 1.8.
- * regex.c: debug.
+ * ext/io/console/console.c (rawmode_opt, console_dev): compatibility
+ with ruby 1.9. [ruby-core:52220] [Bug #7847]
- * math.c: Äê¿ôPI¤ÈE¤òÄêµÁ¡¥
+Sat Feb 16 12:45:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Mar 9 21:35:12 1995 Yukihiro Matsumoto (matz@ix-02)
+ * configure.in: unexpand arch sitearch and exec_prefix values, so
+ directly specified bindir, libdir, rubyprefix, etc can be properly
+ substituted. [ruby-core:52296] [Bug #7860]
- * regex.c: EUC,SJIS¥â¡¼¥É¤Ç¤Ï0x80°Ê¾å¤Î8¿Ê¡¤16¿Ê¥ê¥Æ¥é¥ë¤ò¶Ø»ß¡¥
+Sat Feb 16 12:15:20 2013 Aaron Patterson <aaron@tenderlovemaking.com>
- * regex.c: ¥¯¥é¥¹Æâ¤Ç¤â¿ôÃÍ¥ê¥Æ¥é¥ë¡¦Ê¸»ú¥¯¥é¥¹¤¬»È¤¨¤ë¤è¤¦¤·¤¿¡¥
+ * parse.y: add dtrace probe for symbol create.
-Wed Mar 8 17:39:05 1995 Yukihiro Matsumoto (matz@ix-02)
+ * probes.d: ditto
- * regex.c: \200¤Ê¤É³ç¸Ì¤Î¿ô°Ê¾å¤Îɽ¸½¤Ï8¿Ê¥ê¥Æ¥é¥ë¤È²ò¼á¤¹¤ë¡¥¤¿¤À
- ¤·¡¤\1¤«¤é\9¤Þ¤Ç¤ÏÎã³°¡¥
+Sat Feb 16 09:27:37 2013 Tanaka Akira <akr@fsij.org>
- * regex.c: \9°Ê¾å¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤âÍ­¸ú¤Ë¤·¤¿¡¥
+ * ext/socket/extconf.rb: don't test sys/feature_tests.h which is not
+ used now.
+ It was included in r7901 as "bug of gcc 3.0 on Solaris 8 ?".
-Tue Mar 7 14:26:01 1995 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 16 09:24:37 2013 Tanaka Akira <akr@fsij.org>
- * eval.c(public/private): ¥¹¥³¡¼¥×À©¸æ¥á¥½¥Ã¥É¤Î̾¾ÎÊѹ¹¡¥ÀÅŪ¤Ê¥¢
- ¥¯¥»¥¹¤â½ÐÍè¤ë¤è¤¦¤Ë¤·¤Æ¤ß¤¿¤¬¡¤ÉÔºÎÍÑ¡¥
+ * ext/socket/extconf.rb: reorder header tests to consider inclusion
+ order in rubysocket.h.
-Mon Mar 6 19:34:32 1995 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 16 08:42:58 2013 Tanaka Akira <akr@fsij.org>
- * eval.c(inlcude): ¥á¥½¥Ã¥É²½¡¥Æ°Åª¤Ë¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤Ç¤­
- ¤ë¤è¤¦¤Ë¡¥¤µ¤é¤ËǤ°Õ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤â¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤Ç
- ¤­¤ë¥á¥½¥Ã¥É `extend'¤âÍѰդ·¤¿¡¥
+ * configure.in, ext/socket/extconf.rb: test netinet/in_systm.h in
+ ext/socket/extconf.rb instead of configure.in.
- * parse.y: ʸˡ¤«¤éinclude¤òºï½ü¡¥¥á¥½¥Ã¥É²½¡¥
+ Originally, netinet/in_systm.h is included for NextStep, OpenStep,
+ and Rhapsody. [ruby-core:1596]
-Tue Feb 28 15:35:10 1995 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 16 07:55:40 2013 Tanaka Akira <akr@fsij.org>
- * parse.y: ÇÛÎó¡¤Ï¢ÁÛÇÛÎó¤ÎºÇ¸å¤Ë`,'¤ò¤ª¤±¤ë¤è¤¦¤Ë¡¥
+ * configure.in: don't test xti.h here.
-Fri Feb 24 13:15:43 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/socket/extconf.rb: test xti.h here.
- * version 0.68
+ Originally, xti.h is included for IRIX [ruby-core:14447].
-Thu Feb 23 11:19:19 1995 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 16 07:16:49 2013 Tanaka Akira <akr@fsij.org>
- * eval.c: resqueÀá¤Îself¤ÎÃͤ¬´Ö°ã¤Ã¤Æ¤¤¤¿¡¥
+ * ext/socket/extconf.rb: test struct sockaddr_un and its member,
+ sun_len.
- * eval.c(rb_clear_cache): ¥­¥ã¥Ã¥·¥å¤Î¥¯¥ê¥¢¤·Ëº¤ì¤¬¤¢¤Ã¤¿¡¥
+ * ext/socket/sockport.h (INIT_SOCKADDR_UN): new macro defined.
- * eval.c: Äê¿ô¤Î¥¹¥³¡¼¥×¤ò¥¯¥é¥¹Æâ¤ÎÀÅŪ¥¹¥³¡¼¥×¤ËÊѹ¹¤·¤¿¡¥¤³¤ì¤Ë
- ¤è¤Ã¤Æ¡¤ÆÃ°Û¥á¥½¥Ã¥É¤«¤é»²¾È¤µ¤ì¤ëÄê¿ô¤Ï¡¤¥ì¥·¡¼¥Ð¤Î¥¯¥é¥¹¤Ç¤Ï¤Ê
- ¤¯¡¤ÄêµÁ¤µ¤ì¤¿¥¹¥³¡¼¥×¤Î¥¯¥é¥¹¤ÎÄê¿ô¤È¤Ê¤ë¡¥
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): use INIT_SOCKADDR_UN.
-Wed Feb 22 00:51:38 1995 Yukihiro Matsumoto (matz@dyna)
+ * ext/socket/unixsocket.c (rsock_init_unixsock): ditto.
- * regex.c: ignorecase¤òÀµµ¬É½¸½¤Î¥³¥ó¥Ñ¥¤¥ëÁ°¤Ë»ØÄꤷ¤Ê¤¤¤ÈÀµ¤·¤¯
- ưºî¤·¤Ê¤¤¡¥½¤Àµ¡¥
+ * ext/socket/raddrinfo.c (init_unix_addrinfo): ditto.
+ (addrinfo_mload): ditto.
- * string.c(toupper,tolower): bug fix.
+Sat Feb 16 07:05:59 2013 Tanaka Akira <akr@fsij.org>
- * ENV,VERSION: readonlyÊÑ¿ô¤«¤éÄê¿ô¤Ø¡¥
+ * ext/socket/sockport.h (INIT_SOCKADDR_IN): don't need family
+ argument. it is always AF_INET.
-Tue Feb 21 18:56:56 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/socket/raddrinfo.c (make_inetaddr): follow INIT_SOCKADDR_IN
+ change.
+ (addrinfo_ipv6_to_ipv4): ditto.
- * io.c(STDIN, STDOUT, STDERR): Äê¿ô¤È¤·¤ÆÄêµÁ¡¥
+Sat Feb 16 04:21:07 2013 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c(select): bug fix.
+ * ext/socket/extconf.rb: workaround for mswin/mingw build problem.
+ sendmsg emulation in win32/win32.c is not enough.
- * version 0.67
+Sat Feb 16 00:19:20 2013 Tanaka Akira <akr@fsij.org>
-Mon Feb 20 16:10:14 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/socket/extconf.rb: use all all tested available headers for
+ have_func.
- * parse.y(yylex): Äê¿ô¤ò`%¼±ÊÌ»Ò'¤«¤é¡¤Âè1ʸ»ú¤¬Âçʸ»ú¤Î¼±Ê̻ҤËÊÑ
- ¹¹¡¥¤½¤ì¤Ë¤È¤â¤Ê¤¤¥¯¥é¥¹¤ÏÄê¿ô¤È¤Ê¤Ã¤¿¡¥
+Fri Feb 15 22:21:37 2013 Akinori MUSHA <knu@iDaemons.org>
- * eval.c: ¥¯¥é¥¹ÄêµÁÆâ¤Îself¤¬¥¯¥é¥¹ÄêµÁ³°Éô¤Îthe_class¤À¤Ã¤¿¡¥
+ * configure.in: Fix a bug introduced in r38342 that the cflagspat
+ substitution is messed up by the way CFLAGS and optflags are
+ modified, which affected FreeBSD and NetBSD/amd64 when
+ configured to use libexecinfo. This bug resulted in CFLAGS and
+ CXXFLAGS in RbConfig::CONFIG having warnflags expanded in them,
+ forcing third-party C/C++ extensions to follow what warnflags
+ demands, like ANSI/ISO-C90 conformance. ref [Bug #7101]
- * variable.c(rb_name_class): ¥¯¥é¥¹Ì¾¤ò¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤Ë³ÊǼ¤¹¤ë¡¥
+Fri Feb 15 20:29:11 2013 Tanaka Akira <akr@fsij.org>
-Thu Feb 16 15:36:17 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/socket/sockport.h (SET_SIN_LEN): defined for strict-aliasing
+ rule.
+ (INIT_SOCKADDR_IN): ditto.
- * parse.y: BLOCK¤òbrace¤Çɽ¸½¤¹¤ëʸˡ¤ËÊѹ¹¤·¤¿¤â¤Î¤òºî¤Ã¤Æ¤ß¤ë¡¥
- ML¤ËÄ󼨤·¤Æ¤ß¤ë¤¬È¿±þ¤¬¤Ê¤¤¡¥
+ * ext/socket/raddrinfo.c (make_inetaddr): use INIT_SOCKADDR_IN.
+ (addrinfo_ipv6_to_ipv4): ditto.
- * object.c(do,forever): ¤Ê¤¯¤·¤¿¡¥
+Fri Feb 15 18:24:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Feb 15 13:20:49 1995 Yukihiro Matsumoto (matz@ix-02)
+ * lib/mkmf.rb (MakeMakefile#try_run): bail out explicitly if cross
+ compiling, because it cannot work of course.
- * re.c(new): Âè2°ú¿ô¤¬Í¿¤¨¤é¤ì¤Æ¡¤¤«¤Änil¤Ç¤Ê¤¤¤È¤­¤À¤±ÀßÄꤹ¤ë¤è
- ¤¦¤Ë(°ÊÁ°¤Ïnil¤Î»þ¤Ë¤âÀßÄê¤ò¹Ô¤Ê¤Ã¤Æ¤¤¤¿)¡¥
+Fri Feb 15 12:34:58 2013 Tanaka Akira <akr@fsij.org>
- * parse.y(parse_regexp): Àµµ¬É½¸½¥ê¥Æ¥é¥ë¤ÇÂçʸ»ú¾®Ê¸»ú¤ò̵»ë¤¹¤ë
- ¤«¤É¤¦¤«»ØÄê¤Ç¤­¤ë¤è¤¦¤Ë¡¥
+ * ext/socket/extconf.rb: test struct sockaddr_storage directly.
-Tue Feb 14 00:55:33 1995 Yukihiro Matsumoto (matz@dyna)
+ * ext/socket/rubysocket.h: use HAVE_TYPE_STRUCT_SOCKADDR_STORAGE.
- * parse.y: (compexpr) -> (expr).
+Fri Feb 15 12:26:13 2013 Tanaka Akira <akr@fsij.org>
-Fri Feb 10 16:30:00 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/socket/getaddrinfo.c (GET_AI): don't cast 1st argument for
+ INIT_SOCKADDR.
- * ruby.c(load_file): script¤òÆÉ¤ß¹þ¤à»þ¤À¤±"#!"¤Î²òÀϤò¹Ô¤¦¤è¤¦¤Ë¡¥
+Fri Feb 15 08:12:11 2013 Tanaka Akira <akr@fsij.org>
- * ruby.c(readin): ¥Õ¥¡¥¤¥ëÆÉ¤ß¹þ¤ß»þ¤ËÀèÆ¬¤Ë"#!"¤¬¤¢¤ê¡¤¤½¤Î¹Ô¤¬
- "ruby"¤È¤¤¤¦Ê¸»úÎó¤ò´Þ¤à»þ¡¤ruby¤Ë°ú¿ô¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤ì¤Ð¡¤¤½¤Î°ú
- ¿ô¤âÍ­¸ú¤Ë¤Ê¤ë¡¥
+ * ext/socket/sockport.h (SET_SS_LEN): removed.
+ (SET_SIN_LEN): removed.
+ (INIT_SOCKADDR): new macro.
- * parse.y(yylex): ¥³¥á¥ó¥È¹Ô¤Î½ª¤ê¤¬`\'¤Ç¤¢¤Ã¤¿»þ¡¤¼¡¤Î¹Ô¤Ë·Ñ³¤·
- ¤Æ¤¤¤ë¤È¤ß¤Ê¤¹¤è¤¦¤Ë¤·¤¿¡¥
+ * ext/socket/ancdata.c (extract_ipv6_pktinfo): use INIT_SOCKADDR.
-Thu Feb 9 16:18:37 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/socket/raddrinfo.c (make_inetaddr): use INIT_SOCKADDR.
+ (addrinfo_ipv6_to_ipv4): ditto.
- * version 0.66
+ * ext/socket/getaddrinfo.c (GET_AI): use INIT_SOCKADDR.
- * parse.y: protect¤òbegin¤ËÊѹ¹¡¥begin..end¤ÏÎã³°½èÍý¤À¤±¤Ç¤Ê¤¯¡¤
- ʸ³ç¸Ì¤È¤·¤Æ¤âƯ¤¯¤³¤È¤Ë¤Ê¤Ã¤¿¡¥
+Fri Feb 15 07:49:27 2013 Eric Hodel <drbrain@segment7.net>
-Wed Feb 1 19:48:24 1995 Yukihiro Matsumoto (matz@ix-02)
+ * lib/rdoc.rb: Update to release version of 4.0.0
- * version 0.65
+ * lib/rubygems.rb: Update to release version of 2.0.0
- * string.c(str_replace): ÃÖ¤­´¹¤¨¤ëʸ»úÎó¤ÎŤµ¤¬Åù¤·¤¤»þ¥á¥â¥ê¥³
- ¥Ô¡¼¤ò¤·¤Ê¤¤¡¥
+Fri Feb 15 07:07:27 2013 Tanaka Akira <akr@fsij.org>
- * string.c(rindex): ¥Ð¥°½¤Àµ¡¥
+ * ext/socket/sockport.h (SA_LEN): removed because unused now.
+ (SS_LEN): ditto.
+ (SIN_LEN): ditto.
-Mon Jan 30 11:23:05 1995 Yukihiro Matsumoto (matz@ix-02)
+Thu Feb 14 10:45:31 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * parse.y(value_expr): if¤Î¥Á¥§¥Ã¥¯¤òÄɲá¥
+ * test/ruby/test_process.rb (test_setsid): Added a workaround for
+ MacOS X. Patch by nagachika. [Bug #7826] [ruby-core:52126]
- * gc.c(gc_mark): free cell¤Î°·¤¤¤Ë¥Ð¥°¡¥
+Fri Feb 15 00:15:31 2013 Tanaka Akira <akr@fsij.org>
- * parse.y: ʸˡ¤ÎÊѹ¹(¤è¤ê¥·¥ó¥×¥ë¤Ë)¡¥Îã³°¤ò¸º¤é¤·¤¿¡¥
+ * ext/socket/sockport.h (VALIDATE_SOCKLEN): new macro to validate
+ sa_len member of 4.4BSD socket address.
-Thu Jan 26 00:52:55 1995 Yukihiro Matsumoto (matz@dyna)
+ * ext/socket/getnameinfo.c (getnameinfo): use VALIDATE_SOCKLEN,
+ instead of SA_LEN.
- * parse.y: °ú¿ô¤È¤·¤ÆÏ¢ÁÛÇÛÎó¤òÃÖ¤¯¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¡¥¤³¤Î¾ì¹ç¡¤
- Ï¢ÁÛÇÛÎó¥ê¥Æ¥é¥ë¤¬ºÇ½ª°ú¿ô¤È¤Ê¤ë¡¥
+ * ext/socket/socket.c (sock_s_getnameinfo): use VALIDATE_SOCKLEN
+ instead of SS_LEN.
- * parse.y: ÇÛÎ󻲾ȤÎ`[]'Æâ¤¬¶õ¤Ç¤â¤è¤¤¤³¤È¤Ë¤·¤¿¡¥
+Thu Feb 14 22:25:54 2013 Tanaka Akira <akr@fsij.org>
-Tue Jan 24 14:45:15 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/socket/socket.c (sockaddr_len): extracted from sockaddr_obj.
+ (sockaddr_obj): add an argument to length of socket address.
+ (socket_s_ip_address_list): call sockaddr_obj with actual socket
+ address length if given, use sockaddr_len otherwise.
- * class.c(rb_include_module): `-v'¤ò»ØÄꤷ¤¿»þ¤Ë¤Ïinclude¤·¤¿¥â¥¸¥å¡¼
- ¥ë¤È¥¯¥é¥¹Äê¿ô¤¬¾×ÆÍ¤·¤Æ¤¤¤Ê¤¤¤«¥Á¥§¥Ã¥¯¤¹¤ë¡¥
+Thu Feb 14 20:11:23 2013 Tanaka Akira <akr@fsij.org>
-Mon Jan 23 10:42:09 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/socket: always operate length of socket address companion with
+ socket address.
- * parse.y(rb_class2name): ¥á¥¿¥¯¥é¥¹¤Ë´Ø¤¹¤ëbug fix.
+ * ext/socket/rubysocket.h (rsock_make_ipaddr): add an argument for
+ socket address length.
+ (rsock_ipaddr): ditto.
- * dict.c: Dict[..]¤Ç¼­½ñ¤ÎÀ¸À®¤¬½ÐÍè¤ë¤è¤¦¤Ë¡¥
+ * ext/socket/ipsocket.c (ip_addr): pass length to rsock_ipaddr.
+ (ip_peeraddr): ditto.
+ (ip_s_getaddress): pass length to rsock_make_ipaddr.
- * array.c: Array[..]¤ÇÇÛÎó¤ÎÀ¸À®¤¬½ÐÍè¤ë¤è¤¦¤Ë¡¥
+ * ext/socket/socket.c (make_addrinfo): pass length to rsock_ipaddr.
+ (sock_s_getnameinfo): pass actual address length to rb_getnameinfo.
+ (sock_s_unpack_sockaddr_in): pass length to rsock_make_ipaddr.
- * parse.y: ¼­½ñ¤Îɽ¸½¤È¤·¤Æ{a,b,..}¤È¤¤¤¦·Á¼°¤âµö¤¹¤è¤¦¤Ë¡¥
+ * ext/socket/init.c (rsock_s_recvfrom): pass length to rsock_ipaddr.
+ (rsock_s_recvfrom_nonblock): ditto.
-Fri Jan 20 10:28:38 1995 Yukihiro Matsumoto (matz@ix-02)
+ * ext/socket/tcpsocket.c (tcp_sockaddr): pass length to
+ rsock_make_ipaddr.
- * re.c(Regexp.quote): Àµµ¬É½¸½¤ò¥¨¥¹¥±¡¼¥×¤¹¤ë¥á¥½¥Ã¥É¡¥
+ * ext/socket/raddrinfo.c (make_ipaddr0): add an argument for socket
+ address length. pass the length to rb_getnameinfo.
+ (rsock_ipaddr): ditto.
+ (rsock_make_ipaddr): add an argument for socket address length.
+ pass the length to make_ipaddr0.
+ (make_inetaddr): pass length to make_ipaddr0.
+ a local variable renamed.
+ (host_str): a local variable renamed.
+ (port_str): ditto.
- * ̵Â̤Êrb_intern()¤ò¸º¤é¤·¤¿¡¥
+Thu Feb 14 14:31:43 2013 Eric Hodel <drbrain@segment7.net>
- * parse.y: `!', `!=', `!~'¤òÆÃ¼ì±é»»»Ò¤Ë¤¹¤ë¡¥¤è¤Ã¤Æ¤³¤ì¤é¤ÏºÆÄêµÁ
- ¤Ç¤­¤Ê¤¯¤Ê¤Ã¤¿¡¥
+ * lib/net/http.rb: Removed OpenSSL dependency from Net::HTTP.
-Wed Jan 18 13:20:41 1995 Yukihiro Matsumoto (matz@ix-02)
+ * test/net/http/test_http.rb: Remove Zlib dependency from tests.
+ * test/net/http/test_http_request.rb: ditto.
- * parse.y: ʸˡ¤ÎÀ°Íý(unless,until¤ò¤Ê¤¯¤·¤¿)¡¥
+Thu Feb 14 11:08:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Jan 17 11:11:27 1995 Yukihiro Matsumoto (matz@ix-02)
+ * class.c (include_modules_at): detect cyclic prepend with original
+ method table. [ruby-core:52205] [Bug #7841]
- * eval.c: def¤Ç¥á¥½¥Ã¥ÉºÆÄêµÁ»þ¤Ë¤Ï¥¹¡¼¥Ñ¡¼¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤Î²Ä»ë
- À­¤ò·Ñ¾µ¤¹¤ë¡¥ºÇ½é¤ÎÄêµÁ¤Î»þ¤Ïº£¤Þ¤Ç¤ÈƱ¤¸¥Ç¥Õ¥©¥ë¥È(¥È¥Ã¥×¥ì¥Ù
- ¥ë¤Ç´Ø¿ôŪ¡¤¥¯¥é¥¹ÄêµÁÆâ¤ÇÄ̾ï¥á¥½¥Ã¥É)¡¥
+Thu Feb 14 10:30:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c(Class#new): ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®»þ¤Ë´Ø¿ôŪ¥á¥½¥Ã¥É
- init_object¤¬É¬¤º¸Æ¤Ð¤ì¤ë¤è¤¦¤ËÊѹ¹¡¥
+ * vm_method.c: call method_removed hook on called class, not on
+ prepending iclass. [ruby-core:52207] [Bug #7843]
- * eval.c: ̤ÄêµÁ¤Î¥á¥½¥Ã¥É¤ËÂФ·¤Æunknown¥á¥½¥Ã¥É¤¬¸Æ¤Ð¤ì¤ë¤è¤¦¤Ë
- ¤Ê¤Ã¤¿¡¥¥¨¥é¡¼É½¼¨¤¬º£¤Þ¤Ç¤ÈƱ¤¸¤Ë¤Ê¤ë¤è¤¦¤Ëenv¤òÄ´Àᤷ¤Æ¤¤¤ë¡¥
+Thu Feb 14 10:05:57 2013 Eric Hodel <drbrain@segment7.net>
-Fri Jan 13 14:40:30 1995 Yukihiro Matsumoto (matz@ix-02)
+ * lib/net/http: Do not handle Content-Encoding when the user sets
+ Accept-Encoding. This allows users to handle Content-Encoding for
+ themselves. This restores backwards-compatibility with Ruby 1.x.
+ [ruby-trunk - Bug #7831]
+ * lib/net/http/generic_request.rb: ditto.
+ * lib/net/http/response.rb: ditto
+ * test/net/http/test_http.rb: Test for the above.
+ * test/net/http/test_http_request.rb: ditto.
+ * test/net/http/test_httpresponse.rb: ditto.
- * gc.c: gc¤ò¼ã´³½ñ¤­´¹¤¨¤ÆÀ°Íý¤·¤¿¡¥¤¬¡¤¤¢¤Þ¤êÊѲ½¤Ï¤Ê¤«¤Ã¤¿¤è¤¦¤À¡¥
+Thu Feb 14 08:18:47 2013 Tanaka Akira <akr@fsij.org>
- * parse.y(yylex): symbol¤ò\sym¤«¤é:sym¤ËÊѹ¹¤·¤¿¡¥
+ * ext/socket/extconf.rb: don't define HAVE_SA_LEN and HAVE_SA_LEN.
+ use HAVE_STRUCT_SOCKADDR_SA_LEN and HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
+ instead.
-Thu Jan 12 01:39:28 1995 Yukihiro Matsumoto (matz@dyna)
+Wed Feb 13 20:59:48 2013 Tanaka Akira <akr@fsij.org>
- * eval.c: ¿·µ¬´Ø¿ô rb_eval_string()¡¥
+ * ext/socket/extconf.rb: don't define socklen_t here, just test.
- * gc.c: gc_mark()¤ò°ìÉôÈóºÆµ¢²½¡¥
+ * ext/socket/rubysocket.h: define socklen_t if not available.
- * variable.c(rb_ivar_{get,set}): ¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤Î¥¢¥¯¥»¥¹¼þ¤ê¤Ç
- ¥Á¥§¥Ã¥¯¤¬Â­¤ê¤Ê¤«¤Ã¤¿¡¥
+Wed Feb 13 18:37:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * variable.c: ¥¯¥é¥¹Äê¿ô¤È¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤Ç¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë¤ò¶¦Í­
- ¤¹¤ë¤è¤¦¤Ë¤·¤¿¡¥
+ * proc.c (mnew): skip prepending modules and return the method bound
+ on the given class. [ruby-core:52160] [Bug #7836]
- * ruby.h: iv_tbl¤òRBasic¤«¤éRObject¤ÈRClass¤Ø°Üư¤·¤¿¡¥¤³¤ì¤Ë¤è¤ê¡¤
- Object¤ÈClass,Module¤·¤«¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ò»ý¤Æ¤Ê¤¯¤Ê¤ë¡¥¤¬¡¤¥á¥â
- ¥ê¸úΨ¤Ï¼ã´³¸þ¾å¤¹¤ë¡¥
+Wed Feb 13 18:11:59 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Jan 10 00:58:20 1995 Yukihiro Matsumoto (matz@dyna)
+ * proc.c (method_original_name): new methods Method#original_name and
+ UnboundMethod#original_name. [ruby-core:52048] [Bug #7806]
+ [EXPERIMENTAL]
- * 0.64 released
+ * proc.c (method_inspect): show the given name primarily, and
+ original_id if aliased. [ruby-core:52048] [Bug #7806]
- * eval.c: ¥ì¥·¡¼¥Ð¤È°ú¿ô¤Ï¾ï¤Ëiter¤Ç¤Ï¤Ê¤¤¡¥
+Wed Feb 13 17:56:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * cons.c(aref,aset): negative offsetÂбþ¡¥
+ * configure.in (warnflags): disable -Werror by default unless
+ development. [ruby-core:52131] [Bug #7830]
-Mon Jan 9 14:40:39 1995 Yukihiro Matsumoto (matz@ix-02)
+Wed Feb 13 06:05:52 2013 Eric Hodel <drbrain@segment7.net>
- * parse.y: foo{..}¤Î·Á¼°¤Ë¤ª¤¤¤Æ¡¤foo¤ò¥í¡¼¥«¥ëÊÑ¿ô¤ä¥¯¥é¥¹Ì¾¤Ç¤Ï
- ¤Ê¤¯¡¤°ú¿ô¤Ê¤·¤Î´Ø¿ô·¿¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¤È¤ß¤Ê¤¹¤è¤¦¤Ë¤·¤¿¡¥
+ * lib/rubygems.rb: Return BINARY strings from Gem.gzip and Gem.gunzip.
+ Fixes intermittent test failures. RubyGems issue #450 by Jeremey
+ Kemper.
+ * test/rubygems/test_gem.rb: Test for the above.
- * list.c -> cons.c: ̾¾ÎÊѹ¹(¥¯¥é¥¹Ì¾¤â)¡¥
+Wed Feb 13 05:49:21 2013 Tanaka Akira <akr@fsij.org>
- * list.c: a::b::c::nil¤ò¥ê¥¹¥È(a b c)¤È¤ß¤Ê¤¹lisp·Á¼°¤«¤é¡¤a::b::c
- ¤ò¥ê¥¹¥È(a b c)¤È¤ß¤Ê¤¹ruby·Á¼°¤ËÊѹ¹¡¥[], []=, each¤â¤½¤ì¤Ë²ñ¤ï
- ¤»¤¿»ÅÍͤȤ¹¤ë¡¥
+ * ext/socket/extconf.rb: test functions just after struct members.
- * list.c: cons¥Ú¥¢¤È¤·¤Æ¤Îµ¡Ç½¤ò¶¯Ä´¡¥»ÅÍÍÊѹ¹¡¥
+Tue Feb 12 12:02:35 2013 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Jan 7 01:26:26 1995 Yukihiro Matsumoto (matz@dyna)
+ * ext/json: merge JSON 1.7.7.
+ This includes security fix. [CVE-2013-0269]
+ https://github.com/flori/json/commit/d0a62f3ced7560daba2ad546d83f0479a5ae2cf2
+ https://groups.google.com/d/topic/rubyonrails-security/4_YvCpLzL58/discussion
- * eval.c: ¼«¸ÊÂåÆþ¤ÎÉÔ¶ñ¹ç½¤Àµ¡¥
+Mon Feb 11 23:08:48 2013 Tanaka Akira <akr@fsij.org>
- * eval.c(masign): ¿½ÅÂåÆþ¤¬ÇÛÎó¤â¥ê¥¹¥È¤â¤È¤ì¤ë¤è¤¦¤Ë¤·¤¿¡¥
+ * configure.in: enable rb_cv_page_size_log test for MirOS BSD.
- * list.c: assoc¤ò2Í×ÁǤÎÇÛÎ󤫤éList(CONS¥Ú¥¢)¤ËÊѹ¹¤·¤¿¡¥
+Mon Feb 11 20:06:38 2013 Tanaka Akira <akr@fsij.org>
-Fri Jan 6 13:42:12 1995 Yukihiro Matsumoto (matz@ix-02)
+ * configure.in: use -pthread on mirbsd*.
- * parse.y: a[b]+=c¤äa.b+=c¤Ê¤É¤Î¼«¸ÊÂåÆþ·Á¼°¤Ç¡¤a¤äb¤ò2ÅÙɾ²Á¤·¤Ê
- ¤¯¤Ê¤Ã¤¿¡¥
+Mon Feb 11 16:07:09 2013 Tanaka Akira <akr@fsij.org>
- * eval.c: iteratorÀßÄê¤Î¥Ð¥°¥Õ¥£¥Ã¥¯¥¹¡¥
+ * configure.in: add SOLIBS and LIBRUBY_SO definition for mirbsd*.
- * list.c: List¥¯¥é¥¹¤ò¿·Àß¡¥
+Mon Feb 11 13:17:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Jan 5 13:55:00 1995 Yukihiro Matsumoto (matz@ix-02)
+ * configure.in (rubysitearchprefix): sitearchdir and vendorarchdir
+ should use sitearch, not arch. [ruby-dev:46964] [Bug #7823]
- * parse.y: SCOPE¤Î¥á¥â¥ê¥ê¡¼¥¯¤ò¤Ê¤¯¤·¤¿¡¥
+ * win32/Makefile.sub (config.status): site and vendor directories
+ should use sitearch, not arch. [ruby-dev:46964] [Bug #7823]
- * eval.c: built-in¥á¥½¥Ã¥É¤Ø¤Î°ú¿ô¤Î°ú¤­ÅϤ·Êý¤òÊѹ¹¤·¤Æ¡¤ÇÛÎó¤ÎÀ¸
- À®¿ô¤ò¸º¤é¤·¤¿¡¥
+Mon Feb 11 12:31:25 2013 Tanaka Akira <akr@fsij.org>
- * re.c: match-data¤òËè²óÀ¸À®¤¹¤ë¤³¤È¤ò¤ä¤á¤¿¡¥`$~'¤ò¥¢¥¯¥»¥¹¤·¤¿»þ
- ¤Ëon-demand¤ÇÀ¸À®¤¹¤ë¡¥
+ * configure.in: move OS specific header/function knowledge before
+ automatic header tests.
- * string.c etc: ÉÔɬÍפÊmemmove¤òmemcpy¤ËÃÖ´¹¡¥
+Mon Feb 11 11:04:29 2013 Tanaka Akira <akr@fsij.org>
- * parse.y: =~, !~¤ÏÉûºîÍѤ¬¤¢¤ë¤Î¤Ç¥³¥ó¥Ñ¥¤¥ë»þ¤ËŸ³«¤Ç¤­¤Ê¤¤¡¥
+ * configure.in: move the test for -march=i486 just after
+ RUBY_UNIVERSAL_ARCH/RUBY_DEFAULT_ARCH.
-Tue Jan 3 02:04:36 1995 Yukihiro Matsumoto (matz@dyna)
+Sun Feb 10 23:42:26 2013 Tanaka Akira <akr@fsij.org>
- * eval.c: rest°ú¿ô¤Îbug fix.
+ * ext/socket/extconf.rb: test structure members just after types test.
- * eval.c,gc.c: scope¤ò¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤¿¡¥
+Sun Feb 10 20:58:17 2013 Tanaka Akira <akr@fsij.org>
- * eval.c: env¤Èscope¤Î°·¤¤¤òÊѹ¹¤·¤¿¡¥
+ * ext/socket/extconf.rb: test types just after headers test.
-Wed Dec 28 09:46:57 1994 Yukihiro Matsumoto (matz@ix-02)
+Sun Feb 10 16:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * parse.y: eval¤Ç¥í¡¼¥«¥ëÊÑ¿ô¤¬Äɲ䵤줿¾ì¹ç¤ËÂбþ¤·¤¿¡¥
+ * lib/rake/doc/MIT-LICENSE: Add license file from upstream
+ * lib/rake/doc/README.rdoc: Link to license file from Rake README
+ * lib/rake/version.rb: Include README rdoc for Rake module overview
- * parse.y: ±é»»»Ò¤ò´Þ¤àalias¤Îbug fix.
+Sun Feb 10 15:26:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Dec 27 16:45:20 1994 Yukihiro Matsumoto (matz@ix-02)
+ * lib/rake/doc/*: Sync Rake rdoc files from upstream
- * parse.y: def A B¤òalias A B¤ËÊѹ¹¡¥
+Sun Feb 10 15:50:02 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c: alias´Ø·¸¤Îbug½¤Àµ¡¥node¤ò¥ª¥Ö¥¸¥§¥¯¥È²½¤·¤¿»þ¤Ëenbug¤·
- ¤¿¤è¤¦¤À¡¥
+ * vm_exec.h (DISPATCH_ARCH_DEPEND_WAY): use __asm__ __volatile__
+ instead of asm volatile.
- * signal.c: ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎºÆÄêµÁ¤ò»ß¤á¤¿¡¥
+Sun Feb 10 15:50:02 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * io.c(select): write/except¤Î¥Õ¥é¥°ÀßÄê¤Ë¥Ð¥°¡¥
+ * gc.h (SET_MACHINE_STACK_END): use __volatile__ instead of volatile.
- * Makefile.in: static linkÍÑ¥ª¥×¥·¥ç¥ó¤òMakeÊÑ¿ô¤È¤·¤ÆÆÈΩ¤µ¤»¤¿¡¥
+Sun Feb 10 14:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
-Tue Dec 20 00:46:19 1994 Yukihiro Matsumoto (matz@dyna)
+ * doc/rake/, lib/rake/doc/: Move Rake rdoc files to lib/rake
- * 0.63 released
+Sun Feb 10 12:10:25 2013 Tanaka Akira <akr@fsij.org>
- * eval.c(rb_call): super¤Î¸Æ¤Ó½Ð¤·¤ÇÍî¤Á¤ë¡¥argc, argv¤ÎÀßÄê¤ò˺¤ì
- ¤Æ¤¤¤¿¡¥
+ * ext/socket/extconf.rb: test headers at first.
- * parse.y(read_escape): Ÿ³«¥¨¥é¡¼¡¥
+Sun Feb 10 12:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * variable.c: ÄêµÁºÑ¤ß¤ÎÊÑ¿ô¤Îhook¤òÊѹ¹¤·¤Ê¤¤¤è¤¦¤Ë¡¥
+ * doc/rake/*: Removed stale Rake static files
-Mon Dec 19 12:01:10 1994 Yukihiro Matsumoto (matz@ix-02)
+Sun Feb 10 09:10:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * parse.y(cond): ¾ò·ï¼°¤ËÂåÆþ¼°¤¬ÃÖ¤«¤ì¤¿¾ì¹ç¡¤`-v'¥ª¥×¥·¥ç¥ó¤Ç·Ù
- ¹ð¤¬½Ð¤ë¤è¤¦¤Ë¡¥
+ * lib/pp.rb, lib/prettyprint.rb: Documentation for PP and PrettyPrint
+ Based on a patch by Vincent Batts [ruby-core:51253] [Bug #7656]
- * parse.y(**): ÑѾè±é»»»Ò`**'¤ÎÍ¥Àè½ç°Ì¤òñ¹à±é»»»Ò¤è¤ê¹â¤¯¤·¤¿¡¥
+Sat Feb 9 21:11:21 2013 Tanaka Akira <akr@fsij.org>
- * parse.y(and,or): Í¥Àè½ç°Ì¤ÎÄ㤤±é»»»Ò`and', `or'.
+ * configure.in: move header files check to the beginning of
+ "header and library section".
+ test rlim_t with sys/types.h and sys/time.h for MirOS BSD.
+ sys/types.h and sys/time.h is guarded by #ifdef and the above
+ move is required for this change.
- * 0.62 released.
+Sat Feb 9 17:45:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c: ÉÔɬÍפˤʤä¿PUSH_ENV, POP_ENV¤ò¸º¤é¤·¤¿¡¥
+ * configure.in, version.c: prevent duplicated load paths by empty
+ version string, it does not work right now.
- * env.h: ENVION¤«¤éself¤ò¤Ï¤º¤·¤¿¡¥PUSH_ENV¤Ïsuper¤Î½àÈ÷¤Î¤¿¤á¤À¤±
- ¤ËÍѤ¤¤ë¤³¤È¤Ë¤·¤¿¡¥
+Sat Feb 9 17:38:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c: ²¼µ­¤Î¥ª¥Ö¥¸¥§¥¯¥È²½¤ÇÃÙ¤¯¤Ê¤Ã¤¿¼Â¹Ô®ÅÙ¤ò¤â¤È¤ËÌᤷ¤¿¡¥
+ * configure.in: fix arch parameters in help message. [Bug #7804]
-Mon Dec 17 23:01:10 1994 Yukihiro Matsumoto (matz@ix-02)
+Sat Feb 9 13:13:00 2013 Zachary Scott <zachary@zacharyscott.net>
- * eval.c: env.{argv,argc}¤Èscope.local_vars¤Î¥ª¥Ö¥¸¥§¥¯¥È²½¡¥
+ * vm_trace.c: Note about TracePoint events set, and comment on
+ Kernel#set_trace_func to prefer new TracePoint API
- * eval.c: 1¥¹¥³¡¼¥×Æâ¤ÇÊ£¿ôBlock¤òÀ¸À®¤·¤¿¤È¤­¤Î¥Ð¥°¤ò½¤Àµ¡¥
+Sat Feb 9 10:07:47 2013 Kazuki Tsujimoto <kazuki@callcc.net>
-Fri Dec 16 15:52:06 1994 Yukihiro Matsumoto (matz@ix-02)
+ * BSDL: update copyright notice for 2013.
- * parse.y: `&&'¤È`||'¤ÎξÊդϤ¤¤Ä¤Ç¤â¾ò·ï¼°¤È¤·¤¿¡¥
+Sat Feb 9 09:24:38 2013 Eric Hodel <drbrain@segment7.net>
-Thu Dec 15 00:16:04 1994 Yukihiro Matsumoto (matz@dyna)
+ * lib/rubygems/package/old.rb: Fix behavior only on ruby 1.8.
- * eval.c(Block): Block¥ª¥Ö¥¸¥§¥¯¥È¤ò¼Â¸½¡¥
+ * lib/rubygems/package.rb: Include checksums.yaml.gz signatures for
+ verification.
+ * test/rubygems/test_gem_package.rb: Test for the above.
- * node.h: NODE_QLIST¤Ï¤Ê¤¯¤Ê¤Ã¤¿¡¥
+Sat Feb 9 01:23:24 2013 Tanaka Akira <akr@fsij.org>
- * eval.c(rb_call): °ú¿ô¤Ø¤ÎÂåÆþ¤ò̾Á°¤Ç°ì¤Ä¤º¤ÄÂåÆþ¤¹¤ë¤Î¤ò¤ä¤á¤Æ¡¤
- °ìÅ٤˥³¥Ô¡¼¤¹¤ë¤è¤¦¤Ë¤·¤¿¡¥
+ * test/fiddle/helper.rb: specify libc and libm locations for MirOS BSD.
- * eval.c(rb_call): ruby¤Çµ­½Ò¤µ¤ì¤¿¥á¥½¥Ã¥É¤Ø¤Î°ú¿ôÅϤ·¤òinline²½¡¥
+ * test/dl/test_base.rb: ditto.
- * eval.c: ¥¤¥Æ¥ì¡¼¥¿È½Äê½èÍý¤ÎÁ´Ì̽ñ¤­´¹¤¨¡¥ÉÔŬÀڤʥ¤¥Æ¥ì¡¼¥¿¸Æ¤Ó
- ½Ð¤·¤ò¤Ê¤¯¤·¤¿¡¥Î㤨¤Ð¡Ö[foo(),bar()]{i|baz(i)}¡×¤Çfoo¤âbar¤â¥¤
- ¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤Ó½Ð¤µ¤ì*¤Ê¤¤*¡¥
+Fri Feb 8 23:25:33 2013 Tanaka Akira <akr@fsij.org>
- * eval.c(rb_call): SCOPE½èÍý¤òinline²½¡¥¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¤Î¼ã´³¤Î¹â
- ®²½¡¥
+ * configure.in: change CFLAGS temporally to test
+ ARCH_FLAG="-march=i486".
-Wed Dec 14 18:09:33 1994 Yukihiro Matsumoto (matz@ix-02)
+Fri Feb 8 21:19:41 2013 Tanaka Akira <akr@fsij.org>
- * node.h: node¤â¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤ë¡¥¤è¤Ã¤ÆGC¤Ç²ó¼ý¤µ¤ì¤ë¡¥
+ * configure.in: don't define ARCH_FLAG="-march=i486" if it causes
+ compilation problem.
-Thu Dec 8 14:17:29 1994 Yukihiro Matsumoto (matz@ix-02)
+For the changes before 2.0.0, see doc/ChangeLog-2.0.0
+For the changes before 1.9.3, see doc/ChangeLog-1.9.3
+For the changes before 1.8.0, see doc/ChangeLog-1.8.0
- * 0.60 released - alpha test baseline.
+Local variables:
+coding: us-ascii
+add-log-time-format: (lambda ()
+ (let* ((time (current-time))
+ (system-time-locale "C")
+ (diff (+ (cadr time) 32400))
+ (lo (% diff 65536))
+ (hi (+ (car time) (/ diff 65536))))
+ (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t)))
+indent-tabs-mode: t
+tab-width: 8
+change-log-indent-text: 2
+end:
+vim: tabstop=8 shiftwidth=2
diff --git a/GPL b/GPL
new file mode 100644
index 0000000000..d159169d10
--- /dev/null
+++ b/GPL
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/KNOWNBUGS.rb b/KNOWNBUGS.rb
new file mode 100644
index 0000000000..b97a08d928
--- /dev/null
+++ b/KNOWNBUGS.rb
@@ -0,0 +1,5 @@
+#
+# This test file concludes tests which point out known bugs.
+# So all tests will cause failure.
+#
+
diff --git a/LEGAL b/LEGAL
new file mode 100644
index 0000000000..65706459cd
--- /dev/null
+++ b/LEGAL
@@ -0,0 +1,533 @@
+LEGAL NOTICE INFORMATION
+------------------------
+
+All the files in this distribution are covered under either the Ruby's
+license (see the file COPYING) or public-domain except some files
+mentioned below.
+
+include/ruby/oniguruma.h:
+regcomp.c:
+regenc.[ch]:
+regerror.c:
+regexec.c:
+regint.h:
+regparse.[ch]:
+enc/ascii.c
+enc/big5.c
+enc/cp949.c
+enc/emacs_mule.c
+enc/encdb.c
+enc/euc_jp.c
+enc/euc_kr.c
+enc/euc_tw.c
+enc/gb18030.c
+enc/gb2312.c
+enc/gbk.c
+enc/iso_8859_1.c
+enc/iso_8859_10.c
+enc/iso_8859_11.c
+enc/iso_8859_13.c
+enc/iso_8859_14.c
+enc/iso_8859_15.c
+enc/iso_8859_16.c
+enc/iso_8859_2.c
+enc/iso_8859_3.c
+enc/iso_8859_4.c
+enc/iso_8859_5.c
+enc/iso_8859_6.c
+enc/iso_8859_7.c
+enc/iso_8859_8.c
+enc/iso_8859_9.c
+enc/koi8_r.c
+enc/koi8_u.c
+enc/shift_jis.c
+enc/unicode.c
+enc/us_ascii.c
+enc/utf_16be.c
+enc/utf_16le.c
+enc/utf_32be.c
+enc/utf_32le.c
+enc/utf_8.c
+enc/windows_1251.c
+
+Oniguruma ---- (C) K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+
+http://www.geocities.jp/kosako3/oniguruma/
+http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/oniguruma/
+http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/oniguruma/
+
+ When this software is partly used or it is distributed with Ruby,
+ this of Ruby follows the license of Ruby.
+
+configure:
+
+ This file is free software.
+
+ Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+
+ This configure script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it.
+
+tool/config.guess:
+tool/config.sub:
+
+ As long as you distribute these files with the file configure, they
+ are covered under the Ruby's license.
+
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999
+ Free Software Foundation, Inc.
+
+ This file is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ As a special exception to the GNU General Public License, if you
+ distribute this file as part of a program that contains a
+ configuration script generated by Autoconf, you may include it under
+ the same distribution terms that you use for the rest of that program.
+
+parse.c:
+
+ This file is licensed under the GPL, but is incorporated into Ruby and
+ redistributed under the terms of the Ruby license, as permitted by the
+ exception to the GPL below.
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+ /* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+util.c (partly):
+
+ Copyright (c) 1991, 2000, 2001 by Lucent Technologies.
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose without fee is hereby granted, provided that this entire notice
+ is included in all copies of any software which is or includes a copy
+ or modification of this software and in all copies of the supporting
+ documentation for such software.
+
+ THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
+ REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+ OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+
+win32/win32.[ch]:
+
+ You can apply the Artistic License to these files. (or GPL,
+ alternatively)
+
+ Copyright (c) 1993, Intergraph Corporation
+
+ You may distribute under the terms of either the GNU General Public
+ License or the Artistic License, as specified in the perl README file.
+
+util.c (partly):
+
+ Copyright (c) 2004-2008 David Schultz <das@FreeBSD.ORG>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+random.c
+
+ This file is under the new-style BSD license.
+
+ A C-program for MT19937, with initialization improved 2002/2/10.
+ Coded by Takuji Nishimura and Makoto Matsumoto.
+ This is a faster version by taking Shawn Cokus's optimization,
+ Matthe Bellew's simplification, Isaku Wada's real version.
+
+ Before using, initialize the state by using init_genrand(seed)
+ or init_by_array(init_key, key_length).
+
+ Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. The names of its contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ Any feedback is very welcome.
+ http://www.math.keio.ac.jp/matumoto/emt.html
+ email: matumoto@math.keio.ac.jp
+
+vsnprintf.c:
+
+ This file is under the old-style BSD license. Note that the
+ paragraph 3 below is now null and void.
+
+ Copyright (c) 1990, 1993
+ The Regents of the University of California. All rights reserved.
+
+ This code is derived from software contributed to Berkeley by
+ Chris Torek.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ IMPORTANT NOTE:
+ --------------
+ From ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
+ paragraph 3 above is now null and void.
+
+st.[ch]:
+missing/alloca.c:
+missing/dup2.c:
+missing/erf.c:
+missing/finite.c:
+missing/hypot.c:
+missing/isinf.c:
+missing/isnan.c:
+missing/lgamma_r.c:
+missing/memcmp.c:
+missing/memmove.c:
+missing/strchr.c:
+missing/strstr.c:
+missing/strtol.c:
+missing/tgamma.c:
+ext/digest/sha1/sha1.[ch]:
+
+ These files are all under public domain.
+
+missing/crypt.c:
+
+ This file is under the old-style BSD license. Note that the
+ paragraph 3 below is now null and void.
+
+ Copyright (c) 1989, 1993
+ The Regents of the University of California. All rights reserved.
+
+ This code is derived from software contributed to Berkeley by
+ Tom Truscott.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+missing/setproctitle.c
+
+ This file is under the old-style BSD license. Note that the
+ paragraph 3 below is now null and void.
+
+ Copyright 2003 Damien Miller
+ Copyright (c) 1983, 1995-1997 Eric P. Allman
+ Copyright (c) 1988, 1993
+ The Regents of the University of California. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+missing/strlcat.c
+missing/strlcpy.c
+
+ These files are under the new-style BSD license.
+
+ Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+missing/langinfo.c
+
+ This file is from http://www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c.
+ Ruby uses a modified version. The file contains the following
+ author/copyright notice:
+
+ Markus.Kuhn@cl.cam.ac.uk -- 2002-03-11
+ Permission to use, copy, modify, and distribute this software
+ for any purpose and without fee is hereby granted. The author
+ disclaims all warranties with regard to this software.
+
+ext/digest/md5/md5.[ch]:
+
+ These files are under the following license. Ruby uses modified
+ versions of them.
+
+ Copyright (C) 1999, 2000 Aladdin Enterprises. All rights reserved.
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ L. Peter Deutsch
+ ghost@aladdin.com
+
+ext/digest/rmd160/rmd160.[ch]:
+
+ These files have the following copyright information, and by the
+ author we are allowed to use it under the new-style BSD license.
+
+ AUTHOR: Antoon Bosselaers, ESAT-COSIC
+ (Arranged for libc by Todd C. Miller)
+ DATE: 1 March 1996
+
+ Copyright (c) Katholieke Universiteit Leuven
+ 1996, All Rights Reserved
+
+ext/digest/sha2/sha2.[ch]:
+
+ These files are under the new-style BSD license.
+
+ Copyright 2000 Aaron D. Gifford. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holder nor the names of contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) AND CONTRIBUTOR(S) ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) OR CONTRIBUTOR(S) BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ext/nkf/nkf-utf8/config.h:
+ext/nkf/nkf-utf8/nkf.c:
+ext/nkf/nkf-utf8/utf8tbl.c:
+
+ These files are under the following license. So to speak, it is
+ copyrighted semi-public-domain software.
+
+ Copyright (C) 1987, Fujitsu LTD. (Itaru ICHIKAWA)
+ Everyone is permitted to do anything on this program
+ including copying, modifying, improving,
+ as long as you don't try to pretend that you wrote it.
+ i.e., the above copyright notice has to appear in all copies.
+ Binary distribution requires original version messages.
+ You don't have to ask before copying, redistribution or publishing.
+ THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
+
+ext/socket/addrinfo.h:
+ext/socket/getaddrinfo.c:
+ext/socket/getnameinfo.c:
+
+ These files are under the new-style BSD license.
+
+ Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the project nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+ext/win32ole/win32ole.c:
+
+ You can apply the Artistic License to this file. (or GPL,
+ alternatively)
+
+ (c) 1995 Microsoft Corporation. All rights reserved.
+ Developed by ActiveWare Internet Corp., http://www.ActiveWare.com
+
+ Other modifications Copyright (c) 1997, 1998 by Gurusamy Sarathy
+ <gsar@umich.edu> and Jan Dubois <jan.dubois@ibm.net>
+
+ You may distribute under the terms of either the GNU General Public
+ License or the Artistic License, as specified in the README file
+ of the Perl distribution.
diff --git a/MANIFEST b/MANIFEST
deleted file mode 100644
index 1ae2adcd41..0000000000
--- a/MANIFEST
+++ /dev/null
@@ -1,186 +0,0 @@
-ChangeLog
-MANIFEST
-Makefile.in
-README
-README.jp
-README.EXT
-ToDo
-array.c
-bignum.c
-class.c
-compar.c
-configure
-configure.bat
-configure.in
-config.dj
-config.guess
-config.sub
-defines.h
-dir.c
-dln.c
-dln.h
-dmyext.c
-enum.c
-env.h
-error.c
-eval.c
-file.c
-fnmatch.c
-fnmatch.h
-gc.c
-glob.c
-hash.c
-inits.c
-install-sh
-io.c
-io.h
-main.c
-math.c
-node.h
-numeric.c
-object.c
-pack.c
-parse.y
-process.c
-random.c
-range.c
-re.c
-re.h
-regex.c
-regex.h
-ruby.1
-ruby.c
-ruby.h
-sig.h
-signal.c
-sprintf.c
-st.c
-st.h
-string.c
-struct.c
-time.c
-top.sed
-util.h
-util.c
-variable.c
-version.c
-version.h
-ext/Setup
-ext/Setup.dj
-ext/Setup.nt
-ext/Setup.x68
-ext/extmk.rb.in
-ext/extmk.rb.nt
-ext/aix_ld.rb
-lib/English.rb
-lib/base64.rb
-lib/cgi-lib.rb
-lib/complex.rb
-lib/date.rb
-lib/debug.rb
-lib/e2mmap.rb
-lib/e2mmap1_0.rb
-lib/find.rb
-lib/finalize.rb
-lib/ftplib.rb
-lib/getopts.rb
-lib/jcode.rb
-lib/mailread.rb
-lib/mathn.rb
-lib/matrix.rb
-lib/mutex_m.rb
-lib/observer.rb
-lib/parsearg.rb
-lib/parsedate.rb
-lib/ping.rb
-lib/rational.rb
-lib/sync.rb
-lib/thread.rb
-lib/thwait.rb
-lib/tk.rb
-lib/tkcore.rb
-lib/tkcanvas.rb
-lib/tkclass.rb
-lib/tkentry.rb
-lib/tkscrollbox.rb
-lib/tktext.rb
-lib/tkthcore.rb
-lib/tracer.rb
-missing/alloca.c
-missing/crypt.c
-missing/dir.h
-missing/dup2.c
-missing/file.h
-missing/flock.c
-missing/memmove.c
-missing/mkdir.c
-missing/nt.c
-missing/nt.h
-missing/setenv.c
-missing/strcasecmp.c
-missing/strdup.c
-missing/strerror.c
-missing/strftime.c
-missing/strstr.c
-missing/strtol.c
-missing/strtoul.c
-missing/x68.c
-sample/biorhythm.rb
-sample/clnt.rb
-sample/dbmtest.rb
-sample/dir.rb
-sample/eval.rb
-sample/export.rb
-sample/exyacc.rb
-sample/fact.rb
-sample/fib.awk
-sample/fib.pl
-sample/fib.rb
-sample/fib.scm
-sample/freq.rb
-sample/from.rb
-sample/fullpath.rb
-sample/getopts.test
-sample/io.rb
-sample/less.rb
-sample/list.rb
-sample/list2.rb
-sample/list3.rb
-sample/mrshtest.rb
-sample/mkproto.rb
-sample/mpart.rb
-sample/observ.rb
-sample/occur.pl
-sample/occur.rb
-sample/occur2.rb
-sample/philos.rb
-sample/pi.rb
-sample/rcs.awk
-sample/rcs.dat
-sample/rcs.rb
-sample/regx.rb
-sample/ruby-mode.el
-sample/rubydb2x.el
-sample/rubydb3x.el
-sample/sieve.rb
-sample/svr.rb
-sample/test.rb
-sample/time.rb
-sample/tkbiff.rb
-sample/tkbrowse.rb
-sample/tkdialog.rb
-sample/tkfrom.rb
-sample/tkhello.rb
-sample/tkline.rb
-sample/tktimer.rb
-sample/trojan.rb
-sample/tsvr.rb
-sample/uumerge.rb
-win32/Makefile
-win32/config.h
-win32/ntsetup.bat
-win32/ruby.def
-x68/fconvert.c
-x68/select.c
-x68/_dtos18.c
-x68/_round.c
diff --git a/Makefile.in b/Makefile.in
index ee0ac1fcfc..98749dec61 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,219 +1,479 @@
SHELL = /bin/sh
+NULLCMD = @NULLCMD@
+n=$(NULLCMD)
+ECHO1 = $(V:1=@$n)
+RUNCMD = $(SHELL)
+CDPATH = .
+CHDIR = @CHDIR@
+exec = exec
+NULL = /dev/null
+PATH_SEPARATOR = @PATH_SEPARATOR@
#### Start of system configuration section. ####
srcdir = @srcdir@
-VPATH = @srcdir@:@srcdir@/missing
+top_srcdir = $(srcdir)
+hdrdir = $(srcdir)/include
+PLATFORM_DIR = @PLATFORM_DIR@
CC = @CC@
-YACC = @YACC@
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
+CPP = @CPP@
+LD = @LD@
+YACC = bison
PURIFY =
+AUTOCONF = autoconf
@SET_MAKE@
-
-CFLAGS = @CFLAGS@ -I@srcdir@
-LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
-LIBS = @LIBS@ $(EXTLIBS)
-MISSING = @LIBOBJS@ @ALLOCA@
-
-program_transform_name = -e @program_transform_name@
-RUBY_INSTALL_NAME = `t='$(program_transform_name)'; echo ruby | sed $$t`
+MKFILES = @MAKEFILES@
+BASERUBY = @BASERUBY@
+TEST_RUNNABLE = @TEST_RUNNABLE@
+CROSS_COMPILING = @CROSS_COMPILING@
+DOXYGEN = @DOXYGEN@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
-libdir = @libdir@/$(RUBY_INSTALL_NAME)
+sbindir = @sbindir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+datarootdir = @datarootdir@
+datadir = @datadir@
+arch = @arch@
+sitearch = @sitearch@
+sitedir = @sitedir@
+archlibdir = @archlibdir@
+ruby_version = @ruby_version@
+
+TESTUI = console
+TESTS =
+INSTALLDOC = @INSTALLDOC@
+DOCTARGETS = @RDOCTARGET@ @CAPITARGET@
+
+EXTOUT = @EXTOUT@
+arch_hdrdir = $(EXTOUT)/include/$(arch)
+VPATH = $(arch_hdrdir)/ruby:$(hdrdir)/ruby:$(srcdir):$(srcdir)/enc:$(srcdir)/missing
+
+empty =
+CC_VERSION = @CC_VERSION@
+OUTFLAG = @OUTFLAG@$(empty)
+COUTFLAG = @COUTFLAG@$(empty)
+ARCH_FLAG = @ARCH_FLAG@
+CFLAGS = @CFLAGS@ $(ARCH_FLAG)
+cflags = @cflags@
+optflags = @optflags@
+debugflags = @debugflags@
+warnflags = @warnflags@ @strict_warnflags@
+INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir)
+XCFLAGS = @XCFLAGS@
+CPPFLAGS = @CPPFLAGS@ $(INCFLAGS)
+LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
+EXTLDFLAGS = @EXTLDFLAGS@
+XLDFLAGS = @XLDFLAGS@ $(EXTLDFLAGS)
+EXTLIBS =
+LIBS = @LIBS@ $(EXTLIBS)
+MISSING = @LIBOBJS@ @ALLOCA@
+LDSHARED = @LIBRUBY_LDSHARED@
+DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(XLDFLAGS) $(ARCH_FLAG)
+SOLIBS = @SOLIBS@
+MAINLIBS = @MAINLIBS@
+ARCHMINIOBJS = @MINIOBJS@
+DLNOBJ = @DLNOBJ@
+ENCOBJS = @ENCOBJS@
+EXTOBJS = @EXTOBJS@
+BUILTIN_ENCOBJS = @BUILTIN_ENCOBJS@
+BUILTIN_TRANSSRCS = @BUILTIN_TRANSSRCS@
+BUILTIN_TRANSOBJS = @BUILTIN_TRANSOBJS@
+POSTLINK = @POSTLINK@
+
+RUBY_BASE_NAME=@RUBY_BASE_NAME@
+RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@
+RUBY_INSTALL_NAME=@RUBY_INSTALL_NAME@
+RUBY_SO_NAME=@RUBY_SO_NAME@
+RUBY_RELEASE_DATE=@RUBY_RELEASE_DATE@
+EXEEXT = @EXEEXT@
+LIBEXT = @LIBEXT@
+PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
+RUBY = $(RUBY_INSTALL_NAME)
+MINIRUBY = @MINIRUBY@\
+ $(MINIRUBYOPT)
+# RUNRUBY_COMMAND:: runruby.rb or baseruby. do not append options directly
+RUNRUBY_COMMAND = @RUNRUBY_COMMAND@
+# RUNRUBY:: run ruby with RUN_OPTS which is passed to ruby
+RUNRUBY = @RUNRUBY@ $(RUN_OPTS)
+# RUNRUBY_DEBUGGER:: debugging option for runruby.rb
+RUNRUBY_DEBUGGER = --debugger='gdb -x run.gdb --quiet --args'
+XRUBY = @XRUBY@
+BTESTRUBY = @BTESTRUBY@\
+ $(MINIRUBYOPT)
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+XRUBY_LIBDIR = @XRUBY_LIBDIR@
+XRUBY_RUBYLIBDIR = @XRUBY_RUBYLIBDIR@
+XRUBY_RUBYHDRDIR = @XRUBY_RUBYHDRDIR@
-binsuffix = @binsuffix@
+DEFAULT_PRELUDES = $(GEM_PRELUDE)
#### End of system configuration section. ####
-
-LIBRUBY = libruby.a
-
-EXTOBJS = dmyext.o
-
-MAINOBJ = main.o
-
-OBJS = array.o \
- bignum.o \
- class.o \
- compar.o \
- dir.o \
- dln.o \
- enum.o \
- error.o \
- eval.o \
- file.o \
- fnmatch.o \
- gc.o \
- glob.o \
- hash.o \
- inits.o \
- io.o \
- math.o \
- numeric.o \
- object.o \
- pack.o \
- parse.o \
- process.o \
- random.o \
- range.o \
- re.o \
- regex.o \
- ruby.o \
- signal.o \
- sprintf.o \
- st.o \
- string.o \
- struct.o \
- time.o \
- util.o \
- variable.o \
- version.o \
- $(MISSING)
-
-all: miniruby$(binsuffix) @srcdir@/ext/Setup
- @if test -z "$$UNDER_EXTMAKE_RB"; \
- then echo "Compiling ext modules"; \
- UNDER_EXTMAKE_RB=yes; export UNDER_EXTMAKE_RB; \
- cd ext; ../miniruby ./extmk.rb @EXTSTATIC@; fi
-
-miniruby$(binsuffix): $(OBJS) $(MAINOBJ) $(EXTOBJS)
- @rm -f $@
- $(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(LIBS) -o miniruby
-
-ruby$(binsuffix): $(LIBRUBY) $(MAINOBJ) $(EXTOBJS)
- @rm -f $@
- $(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBY) $(LIBS) -o ruby
-
-$(LIBRUBY): $(OBJS) dmyext.o
- @AR@ rcu $(LIBRUBY) $(OBJS) dmyext.o
- @-@RANLIB@ $(LIBRUBY) 2> /dev/null || true
-
-install:; $(INSTALL_PROGRAM) ruby$(binsuffix) $(bindir)/$(RUBY_INSTALL_NAME)$(binsuffix)
- @-@STRIP@ $(bindir)/$(RUBY_INSTALL_NAME)$(binsuffix)
- @test -d $(libdir) || mkdir $(libdir)
- cd ext; ../miniruby ./extmk.rb install
- @for rb in `grep '^lib/' @srcdir@/MANIFEST`; do \
- $(INSTALL_DATA) @srcdir@/$$rb $(libdir); \
- done
-
-clean:; @rm -f $(OBJS) $(LIBRUBY) $(MAINOBJ)
- @rm -f ext/extinit.c ext/extinit.o dmyext.o
- cd ext; ../miniruby ./extmk.rb clean
-
-realclean: clean
- @rm -f Makefile ext/extmk.rb ext/config.cache parse.c
- @rm -f config.cache config.h config.log config.status
- @rm -f core ruby$(binsuffix) miniruby$(binsuffix) parse.c *~ *.core gmon.out
-
-test:; @-./ruby @srcdir@/sample/test.rb > ./ruby_test 2>&1; \
- if grep '^end of test' ./ruby_test > /dev/null; then \
- echo "test succeeded"; \
- else \
- grep '^sample/test.rb' ./ruby_test; \
- grep '^not' ./ruby_test; \
- echo "test failed";\
- fi;\
- rm -f ./ruby_test
-
-.c.o:
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
-
-parse.c: parse.y
- $(YACC) $<
- mv -f y.tab.c parse.c
-
-alloca.o: @srcdir@/missing/alloca.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/alloca.c
-
-crypt.o: @srcdir@/missing/crypt.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/crypt.c
-
-dup2.o: @srcdir@/missing/dup2.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/dup2.c
-
-flock.o: @srcdir@/missing/flock.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/flock.c
-
-memmove.o: @srcdir@/missing/memmove.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/memmove.c
-
-mkdir.o: @srcdir@/missing/mkdir.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/mkdir.c
-
-setenv.o: @srcdir@/missing/setenv.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/setenv.c
-
-strcasecmp.o: @srcdir@/missing/strcasecmp.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/strcasecmp.c
-
-strerror.o: @srcdir@/missing/strerror.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/strerror.c
-
-strdup.o: @srcdir@/missing/strdup.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/strdup.c
-
-strftime.o: @srcdir@/missing/strftime.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/strftime.c
-
-strstr.o: @srcdir@/missing/strstr.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/strstr.c
-
-strtol.o: @srcdir@/missing/strtol.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/strtol.c
-
-strtoul.o: @srcdir@/missing/strtoul.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/strtoul.c
-
-nt.o: @srcdir@/missing/nt.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/nt.c
-
-x68.o: @srcdir@/missing/x68.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c @srcdir@/missing/x68.c
+MAJOR= @MAJOR@
+MINOR= @MINOR@
+TEENY= @TEENY@
+
+LIBRUBY_A = @LIBRUBY_A@
+LIBRUBY_SO = @LIBRUBY_SO@
+LIBRUBY_ALIASES= @LIBRUBY_ALIASES@
+LIBRUBY = @LIBRUBY@
+LIBRUBYARG = @LIBRUBYARG@
+LIBRUBYARG_STATIC = @LIBRUBYARG_STATIC@
+LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@
+LIBRUBY_RELATIVE = @LIBRUBY_RELATIVE@
+LIBRUBY_A_OBJS = @LIBRUBY_A_OBJS@
+
+THREAD_MODEL = @THREAD_MODEL@
+
+PREP = @PREP@
+ARCHFILE = @ARCHFILE@
+SETUP =
+EXTSTATIC = @EXTSTATIC@
+SET_LC_MESSAGES = env LC_MESSAGES=C
+
+MAKEDIRS = @MKDIR_P@
+CP = cp
+MV = mv
+RM = rm -f
+RMDIR = @RMDIR@
+RMDIRS = @RMDIRS@
+RMALL = @RMALL@
+NM = @NM@
+AR = @AR@
+ARFLAGS = rcu
+RANLIB = @RANLIB@
+AS = @AS@
+ASFLAGS = @ASFLAGS@ $(INCFLAGS)
+IFCHANGE = $(srcdir)/tool/ifchange
+SET_LC_MESSAGES = env LC_MESSAGES=C
+OBJDUMP = @OBJDUMP@
+OBJCOPY = @OBJCOPY@
+VCS = @VCS@
+VCSUP = @VCSUP@
+DTRACE = @DTRACE@
+DTRACE_EXT = @DTRACE_EXT@
+DTRACE_OBJ = @DTRACE_OBJ@
+DTRACE_GLOMMED_OBJ = @DTRACE_GLOMMED_OBJ@
+
+OBJEXT = @OBJEXT@
+ASMEXT = S
+DLEXT = @DLEXT@
+MANTYPE = @MANTYPE@
+SYMBOL_PREFIX = @SYMBOL_PREFIX@
+
+INSTALLED_LIST= .installed.list
+
+MKMAIN_CMD = mkmain.sh
+
+NEWLINE_C = newline.c
+MINIPRELUDE_C = miniprelude.c
+RBCONFIG = .rbconfig.time
+
+SRC_FILE = $<
+OS_SRC_FILE = $<
+DEST_FILE = $@
+OS_DEST_FILE = $@
+
+MESSAGE_BEGIN = @for line in
+MESSAGE_END = ; do echo "$$line"; done
+ECHO_BEGIN = @sep=''; for word in
+ECHO_END = ; do echo @ECHO_N@ "$$sep'$$word'@ECHO_C@"; sep=' '; done; echo
+
+configure_args = @configure_args@
+#### End of variables
+
+.SUFFIXES: .inc .h .c .y .i .$(DTRACE_EXT)
+
+all:
+
+.DEFAULT: all
# Prevent GNU make v3 from overflowing arg limit on SysV.
.NOEXPORT:
-###
-parse.o : parse.y ruby.h defines.h config.h env.h node.h st.h regex.h
-###
-array.o: array.c ruby.h config.h defines.h
-bignum.o: bignum.c ruby.h config.h defines.h
-class.o: class.c ruby.h config.h defines.h node.h st.h
-compar.o: compar.c ruby.h config.h defines.h
-dir.o: dir.c ruby.h config.h defines.h
-dln.o: dln.c config.h defines.h dln.h st.h
-dmyext.o: dmyext.c
-enum.o: enum.c ruby.h config.h defines.h
-error.o: error.c ruby.h config.h defines.h env.h
-eval.o: eval.c ruby.h config.h defines.h env.h node.h sig.h st.h dln.h
-file.o: file.c ruby.h config.h defines.h io.h sig.h
-fnmatch.o: fnmatch.c config.h fnmatch.h
-gc.o: gc.c ruby.h config.h defines.h env.h sig.h st.h node.h re.h regex.h
-glob.o: glob.c config.h fnmatch.h
-hash.o: hash.c ruby.h config.h defines.h st.h
-inits.o: inits.c ruby.h config.h defines.h
-io.o: io.c ruby.h config.h defines.h io.h sig.h
-main.o: main.c
-math.o: math.c ruby.h config.h defines.h
-numeric.o: numeric.c ruby.h config.h defines.h
-object.o: object.c ruby.h config.h defines.h st.h
-pack.o: pack.c ruby.h config.h defines.h
-process.o: process.c ruby.h config.h defines.h sig.h st.h
-random.o: random.c ruby.h config.h defines.h
-range.o: range.c ruby.h config.h defines.h
-re.o: re.c ruby.h config.h defines.h re.h regex.h
-regex.o: regex.c config.h defines.h regex.h util.h
-ruby.o: ruby.c ruby.h config.h defines.h re.h regex.h dln.h
-signal.o: signal.c ruby.h config.h defines.h sig.h
-sprintf.o: sprintf.c ruby.h config.h defines.h
-st.o: st.c config.h st.h
-string.o: string.c ruby.h config.h defines.h re.h regex.h
-struct.o: struct.c ruby.h config.h defines.h
-time.o: time.c ruby.h config.h defines.h
-util.o: util.c defines.h config.h util.h
-variable.o: variable.c ruby.h config.h defines.h env.h st.h
-version.o: version.c ruby.h config.h defines.h version.h
+
+miniruby$(EXEEXT):
+ @-if test -f $@; then $(MV) -f $@ $@.old; $(RM) $@.old; fi
+ $(ECHO) linking $@
+ $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(DTRACE_OBJ) $(MAINLIBS) $(LIBS) $(OUTFLAG)$@
+
+$(PROGRAM):
+ @$(RM) $@
+ $(ECHO) linking $@
+ $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@
+ $(Q) $(POSTLINK)
+
+# We must `rm' the library each time this rule is invoked because "updating" a
+# MAB library on Apple/NeXT (see --enable-fat-binary in configure) is not
+# supported.
+$(LIBRUBY_A):
+ @$(RM) $@
+ $(ECHO) linking static-library $@
+ $(Q) $(AR) $(ARFLAGS) $@ $(LIBRUBY_A_OBJS) $(DMYEXT)
+ @-$(RANLIB) $@ 2> /dev/null || true
+ $(ECHO) verifying static-library $@
+ @$(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)conftest$(EXEEXT)
+ @$(RM) conftest$(EXEEXT) conftest.c
+
+$(LIBRUBY_SO):
+ @-$(PRE_LIBRUBY_UPDATE)
+ $(ECHO) linking shared-library $@
+ $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(DTRACE_OBJ) $(SOLIBS) $(EXTSOLIBS) $(OUTFLAG)$@
+ -$(Q) $(OBJCOPY) -w -L '$(SYMBOL_PREFIX)Init_*' -L '$(SYMBOL_PREFIX)*_threadptr_*' $@
+ $(Q) $(POSTLINK)
+ @-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link rescue nil; \
+ File.symlink "$(LIBRUBY_SO)", link}' \
+ $(LIBRUBY_ALIASES) || true
+$(arch)-fake.rb: config.status $(srcdir)/template/fake.rb.in
+ @./config.status --file=$@:$(srcdir)/template/fake.rb.in
+ @chmod +x $@
+
+ruby_pc = @ruby_pc@
+$(ruby_pc):
+ @./config.status --file=$@:$(srcdir)/template/ruby.pc.in
+
+install-cross: $(arch)-fake.rb $(RBCONFIG) rbconfig.rb $(arch_hdrdir)/ruby/config.h \
+ $(LIBRUBY_A) $(LIBRUBY_SO) $(ARCHFILE)
+ $(ECHO) installing cross-compiling stuff
+ $(Q) $(MAKEDIRS) $(XRUBY_RUBYLIBDIR)/$(arch) $(XRUBY_RUBYHDRDIR)/$(arch)/ruby
+ $(Q) sed '/^\$$:\.unshift/q' $(arch)-fake.rb > fake.rb
+ $(Q) $(BASERUBY) -p \
+ -e '~/^\s*CONFIG\["LDFLAGS"\]/ and' \
+ -e '$$_[/(?=\s*"$$)/] = %q[ #{(CONFIG["LIBPATHFLAG"]%File.dirname(__FILE__)).strip}]' \
+ rbconfig.rb > fake-rbconfig.rb
+ $(INSTALL_SCRIPT) fake.rb $(XRUBY_RUBYLIBDIR)/$(arch)/fake.rb
+ $(INSTALL_SCRIPT) fake-rbconfig.rb $(XRUBY_RUBYLIBDIR)/$(arch)/rbconfig.rb
+ @$(RM) fake.rb fake-rbconfig.rb
+ $(INSTALL_DATA) $(arch_hdrdir)/ruby/config.h $(XRUBY_RUBYHDRDIR)/$(arch)/ruby
+ $(INSTALL_DATA) $(top_srcdir)/include/ruby/win32.h $(XRUBY_RUBYHDRDIR)/ruby
+ $(INSTALL_DATA) $(LIBRUBY) $(LIBRUBY_A) $(XRUBY_RUBYLIBDIR)/$(arch)
+ $(INSTALL_PROGRAM) $(LIBRUBY_SO) $(XRUBY_RUBYLIBDIR)/$(arch)
+
+Makefile: $(srcdir)/Makefile.in $(srcdir)/enc/Makefile.in
+
+$(MKFILES): config.status
+ @[ -f $@ ] && mv $@ $@.old
+ MAKE=$(MAKE) $(SHELL) ./config.status $@
+ @cmp $@ $@.old > /dev/null 2>&1 && echo $@ unchanged && exit 0; \
+ { \
+ echo "all:; -@rm -f conftest.mk"; \
+ echo "conftest.mk: .force; @echo AUTO_REMAKE"; \
+ echo ".force:"; \
+ } > conftest.mk || exit 1; \
+ $(MAKE) -f conftest.mk | grep '^AUTO_REMAKE$$' >/dev/null 2>&1 || \
+ { echo "$@ updated, restart."; exit 1; }
+
+uncommon.mk: $(srcdir)/common.mk
+ sed 's/{\$$([^(){}]*)[^{}]*}//g' $< > $@
+
+.PHONY: reconfig
+reconfig-args = $(srcdir)/configure $(configure_args)
+config.status-args = ./config.status --recheck
+reconfig-exec-0 = exec 3>&1; exit `exec 4>&1; { "$$@" 3>&- 4>&-; echo $$? 1>&4; } | fgrep -v '(cached)' 1>&3`
+reconfig-exec-1 = set -x; "$$@"
+
+reconfig config.status: $(srcdir)/configure $(srcdir)/enc/Makefile.in \
+ $(srcdir)/include/ruby/version.h
+ @PWD= MINIRUBY="$(MINIRUBY)"; export MINIRUBY; \
+ set $(SHELL) $($@-args); $(reconfig-exec-$(V))
+
+$(srcdir)/configure: $(srcdir)/configure.in
+ $(CHDIR) $(srcdir) && exec $(AUTOCONF)
+
+incs: id.h
+all-incs: probes.h
+
+# Things which should be considered:
+# * with gperf v.s. without gperf
+# * committers may have various versions of gperf
+# * ./configure v.s. ../ruby/configure
+# * GNU make v.s. HP-UX make # HP-UX make invokes the action if lex.c and keywords has same mtime.
+# * svn checkout generate a file with mtime as current time
+# * ext4 and XFS has a mtime with fractional part
+lex.c: defs/keywords
+ @\
+ if cmp -s $(srcdir)/defs/lex.c.src $?; then \
+ [ $(Q) ] && echo copying $@ || set -x; \
+ $(CP) $(srcdir)/lex.c.blt $@; \
+ else \
+ [ $(Q) ] && echo generating $@ || set -x; \
+ gperf -C -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $? > $@.tmp && \
+ $(MV) $@.tmp $@ && \
+ $(CP) $? $(srcdir)/defs/lex.c.src && \
+ $(CP) $@ $(srcdir)/lex.c.blt; \
+ fi
+
+NAME2CTYPE_OPTIONS = -7 -c -j1 -i1 -t -C -P -T -H uniname2ctype_hash -Q uniname2ctype_pool -N uniname2ctype_p
+
+enc/unicode/name2ctype.h: enc/unicode/name2ctype.kwd
+ $(MAKEDIRS) $(@D)
+ @set +e; \
+ if cmp -s $(?:.kwd=.src) $?; then \
+ set -x; \
+ $(CP) $(?:.kwd=.h.blt) $@; \
+ else \
+ trap '$(RM) $@-1.h $@-2.h' 0 && \
+ set -x; \
+ sed '/^#ifdef USE_UNICODE_PROPERTIES/,/^#endif/d' $? | gperf $(NAME2CTYPE_OPTIONS) > $@-1.h && \
+ sed '/^#ifdef USE_UNICODE_PROPERTIES/d;/^#endif/d' $? | gperf $(NAME2CTYPE_OPTIONS) > $@-2.h && \
+ diff -DUSE_UNICODE_PROPERTIES $@-1.h $@-2.h > $@.tmp || :; \
+ $(MV) $@.tmp $@ && \
+ $(CP) $? $(?:.kwd=.src) && \
+ $(CP) $@ $(?:.kwd=.h.blt); \
+ fi
+
+.c.@OBJEXT@:
+ @$(ECHO) compiling $<
+ $(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c $<
+
+.s.@OBJEXT@:
+ @$(ECHO) assembling $<
+ $(Q) $(AS) $(ASFLAGS) -o $@ $<
+
+.c.S:
+ @$(ECHO) translating $<
+ $(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -S $<
+
+.c.i:
+ @$(ECHO) preprocessing $<
+ $(Q) $(CPP) $(warnflags) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -E $< > $@
+
+.d.h:
+ @$(ECHO) translating probes $<
+ $(Q) $(DTRACE) -o $@.tmp -h -C $(INCFLAGS) -s $<
+ $(Q) sed -e 's/RUBY_/RUBY_DTRACE_/g' -e 's/PROBES_H_TMP/PROBES_H/g' -e 's/(char \*/(const char */g' -e 's/, char \*/, const char */g' $@.tmp > $@
+ $(Q) $(RM) $@.tmp
+
+.dmyh.h:
+ @$(ECHO) copying dummy $(DEST_FILE)
+ $(Q) $(CP) $(OS_SRC_FILE) $(OS_DEST_FILE)
+
+probes.@OBJEXT@: $(srcdir)/probes.d
+ @$(ECHO) processing probes in object files
+ $(Q) stamp="$*.stamp"; \
+ if test -f "$$stamp" -o -f "$@"; then \
+ $(RM) $(DTRACE_DEPENDENT_OBJS) "$$stamp"; \
+ for o in $(DTRACE_DEPENDENT_OBJS); do \
+ echo "rebuilding $$o which was modified by \"dtrace -G\""; \
+ $(MAKE) "$$o"; \
+ done; \
+ fi; \
+ touch "$$stamp"
+ $(RM) $@
+ $(Q) $(DTRACE) -G -C $(INCFLAGS) -s $(srcdir)/probes.d -o $@ $(DTRACE_DEPENDENT_OBJS)
+
+# DTrace static library hacks described here:
+# http://mail.opensolaris.org/pipermail/dtrace-discuss/2005-August/000207.html
+ruby-glommed.$(OBJEXT):
+ @$(ECHO) generating a glommed object with DTrace probes for static library
+ $(Q) $(LD) -r -o $@ $(OBJS) $(DTRACE_OBJ)
+
+clean-local::
+ $(Q)$(RM) ext/extinit.c ext/extinit.$(OBJEXT) ext/ripper/y.output \
+ enc/encinit.c enc/encinit.$(OBJEXT)
+ -$(Q)$(RM) $(pkgconfig_DATA)
+
+distclean-local::
+ $(Q)$(RM) ext/config.cache $(RBCONFIG) Doxyfile
+ -$(Q)$(RM) run.gdb
+ -$(Q)$(RM) $(INSTALLED_LIST) $(arch_hdrdir)/ruby/config.h verconf.h
+ -$(Q)$(RMDIRS) $(arch_hdrdir)/ruby 2> /dev/null || true
+
+clean-ext distclean-ext realclean-ext::
+ @cd ext 2>/dev/null || exit 0; set dummy `echo "${EXTS}" | tr , ' '`; shift; \
+ test "$$#" = 0 && set .; \
+ set dummy `\
+ find "$$@" -name Makefile -print | sed 's:^\./::;s:/Makefile$$:~:' | sort | sed 's:~$$::'; \
+ `; shift; \
+ cd ..; \
+ for dir do \
+ echo $(@:-ext=)ing "$$dir"; \
+ (cd "ext/$$dir" && exec $(MAKE) $(MFLAGS) $(@:-ext=)) && \
+ case "$@" in \
+ *distclean-ext*|*realclean-ext*) \
+ $(RMDIRS) "ext/$$dir" 2> /dev/null || true;; \
+ esac; \
+ done
+ -$(Q)$(RM) ext/extinit.$(OBJEXT)
+
+distclean-ext realclean-ext::
+ -$(Q)$(RM) ext/extinit.c
+ -$(Q)$(RMDIR) ext 2> /dev/null || true
+
+clean-extout:
+ -$(Q)$(RMDIRS) $(EXTOUT) 2> /dev/null || true
+
+clean-enc distclean-enc realclean-enc:
+ @test -f "$(ENC_MK)" || exit 0; \
+ echo $(@:-enc=ing) encodings; \
+ exec $(MAKE) -f $(ENC_MK) $(MFLAGS) $(@:-enc=)
+
+clean-rdoc distclean-rdoc realclean-rdoc:
+ @echo $(@:-rdoc=ing) rdoc
+ $(Q)$(RMALL) $(RDOCOUT)
+clean-capi distclean-capi realclean-capi:
+ @echo $(@:-capi=ing) capi
+ $(Q)$(RMALL) $(CAPIOUT)
+
+clean-platform:
+ @$(RM) $(PLATFORM_D)
+ -$(Q) $(RMDIR) $(PLATFORM_DIR) 2> /dev/null || true
+
+ext/extinit.$(OBJEXT): ext/extinit.c $(SETUP)
+ $(ECHO) compiling $@
+ $(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c ext/extinit.c
+
+enc/encinit.$(OBJEXT): enc/encinit.c $(SETUP)
+
+up::
+ @$(CHDIR) "$(srcdir)" && LC_TIME=C exec $(VCSUP)
+
+up::
+ -$(Q)$(MAKE) $(MFLAGS) after-update
+
+after-update:: update-config_files
+
+update-mspec:
+ @$(CHDIR) $(srcdir); \
+ if [ -d spec/mspec ]; then \
+ cd spec/mspec; \
+ echo updating mspec ...; \
+ exec git pull; \
+ else \
+ echo retrieving mspec ...; \
+ exec git clone $(MSPEC_GIT_URL) spec/mspec; \
+ fi
+
+update-rubyspec: update-mspec
+ @$(CHDIR) $(srcdir); \
+ if [ -d spec/rubyspec ]; then \
+ cd spec/rubyspec; \
+ echo updating rubyspec ...; \
+ exec git pull; \
+ else \
+ echo retrieving rubyspec ...; \
+ exec git clone $(RUBYSPEC_GIT_URL) spec/rubyspec; \
+ fi
+
+test-rubyspec-precheck:
+ @if [ ! -d $(srcdir)/spec/rubyspec ]; then echo No rubyspec here. make update-rubyspec first.; exit 1; fi
+
+INSNS = opt_sc.inc optinsn.inc optunifs.inc insns.inc insns_info.inc \
+ vmtc.inc vm.inc
+
+$(INSNS): $(srcdir)/insns.def vm_opts.h \
+ $(srcdir)/defs/opt_operand.def $(srcdir)/defs/opt_insn_unif.def \
+ $(srcdir)/tool/instruction.rb $(srcdir)/tool/insns2vm.rb
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) -Ku $(srcdir)/tool/insns2vm.rb $(INSNS2VMOPT) $@
+
+loadpath: verconf.h
+ @$(CPP) $(XCFLAGS) $(CPPFLAGS) $(srcdir)/loadpath.c | \
+ sed -e '1,/^const char ruby_initial_load_paths/d;/;/,$$d' \
+ -e '/^ /!d;s/ *"\\0"$$//;s/" *"//g'
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000000..ae44d7effb
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,312 @@
+# -*- rdoc -*-
+
+= NEWS for Ruby 2.1.0
+
+This document is a list of user visible feature changes made between
+releases except for bug fixes.
+
+Note that each entry is kept so brief that no reason behind or
+reference information is supplied with. For a full list of changes
+with all sufficient information, see the ChangeLog file.
+
+== Changes since the 2.0.0 release
+
+=== Language changes
+
+* Now the default values of keyword arguments can be omitted. Those
+ "required keyword arguments" need giving explicitly at the call time.
+
+* Added suffixes for integer and float literals: 'r', 'i', and 'ri'.
+ * "42r" and "3.14r" are evaluated as Rational(42, 1) and 3.14.rationalize,
+ respectively. But exponential form with 'r' suffix like "6.022e+23r" is
+ not accepted because it is misleading.
+ * "42i" and "3.14i" are evaluated as Complex(0, 42) and Complex(0, 3.14),
+ respectively.
+ * "42ri" and "3.14ri" are evaluated as Complex(0, 42r) and Complex(0, 3.14r),
+ respectively.
+
+* def-expr now returns the symbol of its name instead of nil.
+
+=== Core classes updates (outstanding ones only)
+
+* Array
+ * New methods
+ * Array#to_h converts an array of key-value pairs into a Hash.
+
+* Binding
+ * New methods
+ * Binding#local_variable_get(symbol)
+ * Binding#local_variable_set(symbol, obj)
+ * Binding#local_variable_defined?(symbol)
+
+* Enumerable
+ * New methods
+ * Enumerable#to_h converts a list of key-value pairs into a Hash.
+
+* Exception
+ * New methods
+ * Exception#cause provides the previous exception which has been caught
+ at where raising the new exception.
+
+* GC
+ * added environment variable:
+ * RUBY_HEAP_SLOTS_GROWTH_FACTOR: growth rate of the heap.
+
+* Integer
+ * New methods
+ * Fixnum#bit_length
+ * Bignum#bit_length
+ * Bignum performance improvement
+ * Use GMP if available.
+ GMP is used only for several operations:
+ multiplication, division, radix conversion, GCD
+
+* IO
+ * extended methods:
+ * IO#seek supports SEEK_DATA and SEEK_HOLE as whence.
+ * IO#seek accepts symbols (:CUR, :END, :SET, :DATA, :HOLE) for 2nd argument.
+ * IO#read_nonblock accepts optional `exception: false` to return symbols
+ * IO#write_nonblock accepts optional `exception: false` to return symbols
+
+* Kernel
+ * New methods:
+ * Kernel#singleton_method
+
+* Module
+ * New methods:
+ * Module#using, which activates refinements of the specified module only
+ in the current class or module definition.
+ * Module#singleton_class? returns true if the receiver is a singleton class
+ or false if it is an ordinary class or module.
+ * extended methods:
+ * Module#refine is no longer experimental.
+ * Module#include and Module#prepend are now public methods.
+
+* Mutex
+ * misc
+ * Mutex#owned? is no longer experimental.
+
+* Numeric
+ * extended methods:
+ * Numeric#step allows the limit argument to be omitted, in which
+ case an infinite sequence of numbers is generated. Keyword
+ arguments `to` and `by` are introduced for ease of use.
+
+* Process
+ * New methods:
+ * alternative methods to $0/$0=:
+ * Process.argv0() returns the original value of $0.
+ * Process.setproctitle() sets the process title without affecting $0.
+ * Process.clock_gettime
+ * Process.clock_getres
+
+* RbConfig
+ * New constants:
+ * RbConfig::SIZEOF is added to provide the size of C types.
+
+* String
+ * New methods:
+ * String#scrub and String#scrub! verify and fix invalid byte sequence.
+ * extended methods:
+ * If invalid: :replace is specified for String#encode, replace
+ invalid byte sequence even if the destination encoding equals to
+ the source encoding.
+
+* Symbol
+ * All symbols are now frozen.
+
+* pack/unpack (Array/String)
+ * Q! and q! directives for long long type if platform has the type.
+
+* toplevel
+ * extended methods:
+ * main.using is no longer experimental. The method activates refinements
+ in the ancestors of the argument module to support refinement
+ inheritance by Module#include.
+
+=== Core classes compatibility issues (excluding feature bug fixes)
+
+* IO
+ * incompatible changes:
+ * open ignore internal encoding if external encoding is ASCII-8BIT.
+
+* Kernel#eval, Kernel#instance_eval, and Module#module_eval.
+ * Copies the scope information of the original environment, which means
+ that private, protected, public, and module_function without arguments
+ do not affect the environment outside the eval string.
+ For example, `class Foo; eval "private"; def foo; end; end' doesn't make
+ Foo#foo private.
+
+* Kernel#untrusted?, untrust, and trust
+ * These methods are deprecated and their behavior is same as tainted?,
+ taint, and untaint, respectively. If $VERBOSE is true, they show warnings.
+
+* Module#ancestors
+ * The ancestors of a singleton class now include singleton classes,
+ in particular itself.
+
+* Module#define_method and Object#define_singleton_method
+ * Now they return the symbols of the defined methods, not the methods/procs
+ themselves.
+
+* Numeric#quo
+ * Raises TypeError instead of ArgumentError if the receiver doesn't have
+ to_r method.
+
+* Proc
+ * Returning from lambda proc now always exits from the Proc, not from the
+ method where the lambda is created. Returning from non-lambda proc exits
+ from the method, same as the former behavior.
+
+=== Stdlib updates (outstanding ones only)
+
+* CGI::Util
+ * All class methods modulized.
+
+* Digest
+ * extended methods:
+ * Digest::Class.file takes optional arguments for its constructor
+
+* Matrix
+ * Added Vector#cross_product.
+
+* Net::SMTP
+ * Added Net::SMTP#rset to implement the RSET command
+
+* objspace
+ * new method:
+ * ObjectSpace.trace_object_allocations
+ * ObjectSpace.trace_object_allocations_start
+ * ObjectSpace.trace_object_allocations_stop
+ * ObjectSpace.trace_object_allocations_clear
+ * ObjectSpace.allocation_sourcefile
+ * ObjectSpace.allocation_sourceline
+ * ObjectSpace.allocation_class_path
+ * ObjectSpace.allocation_method_id
+ * ObjectSpace.allocation_generation
+ * ObjectSpace.reachable_objects_from_root
+
+* OpenSSL::BN
+ * extended methods:
+ * OpenSSL::BN.new allows Fixnum/Bignum argument.
+
+* open-uri
+ * Support multiple fields with same field name (like Set-Cookie).
+
+* Pathname
+ * New methods:
+ * Pathname#write
+ * Pathname#binwrite
+
+* rake
+ * Updated to 10.1.0. Major changes include removal of the class namespace,
+ Rake::DSL to hold the rake DSL methods and removal of support for legacy
+ rake features.
+
+ For a complete list of changes since rake 0.9.6 see:
+
+ http://rake.rubyforge.org/doc/release_notes/rake-10_1_0_rdoc.html
+
+ http://rake.rubyforge.org/doc/release_notes/rake-10_0_3_rdoc.html
+
+* RDoc
+ * Updated to 4.1.0.preview.2. Major enhancements include a modified default
+ template and accessibility enhancements.
+
+ For a list of minor enhancements and bug fixes see:
+ https://github.com/rdoc/rdoc/blob/v4.1.0.preview.1/History.rdoc
+
+* Resolv
+ * New methods:
+ * Resolv::DNS.fetch_resource
+ * One-shot multicast DNS support
+ * Support LOC resources
+
+* REXML::Parsers::SAX2Parser
+ * Fixes wrong number of arguments of entitydecl event. Document of the event
+ says "an array of the entity declaration" but implementation passes two
+ or more arguments. It is an implementation bug but it breaks backword
+ compatibility.
+
+* REXML::Parsers::StreamParser
+ * Supports "entity" event.
+
+* REXML::Text
+ * REXML::Text#<< supports method chain like 'text << "XXX" << "YYY"'.
+ * REXML::Text#<< supports not "raw" mode.
+
+* Rinda::RingServer, Rinda::RingFinger
+ * Rinda now supports multicast sockets. See Rinda::RingServer and
+ Rinda::RingFinger for details.
+
+* RubyGems
+ * Updated to 2.2.0.preview.2 For a list of enhancements and bug fixes see:
+ https://github.com/rubygems/rubygems/blob/v2.2.0.preview.1/History.txt
+
+* Set
+ * New methods:
+ * Set#intersect?
+ * Set#disjoint?
+
+* Socket
+ * New methods:
+ * Socket.getifaddrs
+
+* StringScanner
+ * extended methods:
+ * StringScanner#[] supports named captures.
+
+* Syslog::Logger
+ * Added facility.
+
+* Tempfile
+ * New methods:
+ * Tempfile.create
+
+* Timeout
+ * The exception to terminate the given block can no longer be rescued
+ inside the block, by default, unless the exception class is given
+ explicitly.
+
+* TSort
+ * New methods:
+ * TSort.tsort
+ * TSort.tsort_each
+ * TSort.strongly_connected_components
+ * TSort.each_strongly_connected_component
+ * TSort.each_strongly_connected_component_from
+
+* WEBrick
+ * The body of a response may now be a StringIO or other IO-like that responds
+ to #readpartial and #read.
+
+* XMLRPC::Client
+ * New methods:
+ * XMLRPC::Client#http. It returns Net::HTTP for the client. Normally,
+ it is not needed. It is useful when you want to change minor HTTP client
+ options. You can change major HTTP client options by XMLRPC::Client
+ methods. You should use XMLRPC::Client methods for changing major
+ HTTP client options instead of XMLRPC::Client#http.
+
+=== Stdlib compatibility issues (excluding feature bug fixes)
+
+* Set
+ * incompatible changes:
+ * Set#to_set now returns self instead of generating a copy.
+
+* URI
+ * incompatible changes:
+ * URI.decode_www_form follows current WHATWG URL Standard.
+ It gets encoding argument to specify the character encoding.
+ It now allows loose percent encoded strings, but denies ;-separator.
+ * URI.encode_www_form follows current WHATWG URL Standard.
+ It gets encoding argument to convert before percent encode.
+ UTF-16 strings aren't converted to UTF-8 before percent encode by default.
+
+=== Built-in global variables compatibility issues
+
+* $SAFE
+ * $SAFE=4 is obsolete. If $SAFE is set to 4 or larger, an ArgumentError
+ is raised.
+
+=== C API updates
diff --git a/README b/README
index 6583bc889f..3ffe3553a8 100644
--- a/README
+++ b/README
@@ -1,108 +1,166 @@
-* What's Ruby
+= What's Ruby
Ruby is the interpreted scripting language for quick and
easy object-oriented programming. It has many features to
process text files and to do system management tasks (as in
-perl). It is simple, straight-forward, and extensible.
+Perl). It is simple, straight-forward, and extensible.
-* Features of ruby
- + Simple Syntax
- + *Normal* Object-Oriented features(ex. class, method calls)
- + *Advanced* Object-Oriented features(ex. Mix-in, Singleton-method)
- + Operator Overloading
- + Exception Handling
- + Iterators and Closures
- + Garbage Collection
- + Dynamic Loading of Object files(on some architecture)
- + Highly Portable(works on many UNIX machines)
+== Features of Ruby
-* How to get ruby
+* Simple Syntax
+* *Normal* Object-Oriented features(ex. class, method calls)
+* *Advanced* Object-Oriented features(ex. Mix-in, Singleton-method)
+* Operator Overloading
+* Exception Handling
+* Iterators and Closures
+* Garbage Collection
+* Dynamic Loading of Object files(on some architecture)
+* Highly Portable (works on many Unix-like/POSIX compatible platforms
+ as well as Windows, Mac OS X, BeOS etc.)
+ cf. http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatforms
-** by ftp
-The ruby distribution can be found on
+== How to get Ruby
- ftp://ftp.netlab.co.jp/pub/lang/ruby/
+For a complete list of ways to install Ruby, including using third party
+tools like rvm, see:
-* How to compile and install
+http://www.ruby-lang.org/en/downloads/
-This is what you need to do to compile and install ruby:
+The Ruby distribution files can be found in the following FTP site:
- 1. Run ./configure, which will generate config.h and Makefile.
+ftp://ftp.ruby-lang.org/pub/ruby/
- 2. Edit defines.h if you need. Probably this step will not need.
+The trunk of the Ruby source tree can be checked out with the
+following command:
- 3. Remove comment mark(#) before the module names from ext/Setup, if
- you want to link modules statically.
+ $ svn co http://svn.ruby-lang.org/repos/ruby/trunk/ ruby
- If you want to link all the extension modules, remove comment
- mark from the line "#option nodynamic".
+Or if you are using git then use the following command:
- 4. Run make.
+ $ git clone git://github.com/ruby/ruby.git
- 5. Optionally, run 'make test' to check that the compiled ruby
- interpreter works well. If you see the message "test succeeded",
- your ruby works as it should.
+There are some other branches under development. Try the following
+command and see the list of branches:
- 6. Run 'make install'
+ $ svn ls http://svn.ruby-lang.org/repos/ruby/branches/
-If you fail to compile ruby, please send the detailed error report with
-the error log and machine/OS type, to help others.
+Or if you are using git then use the following command:
+
+ $ git ls-remote git://github.com/ruby/ruby.git
+
+== Ruby home-page
+
+The URL of the Ruby home-page is:
+
+http://www.ruby-lang.org/
+
+
+== Mailing list
+
+There is a mailing list to talk about Ruby.
+To subscribe this list, please send the following phrase
+
+ subscribe YourFirstName YourFamilyName
+e.g.
+ subscribe Joseph Smith
+
+in the mail body (not subject) to the address <mailto:ruby-talk-ctl@ruby-lang.org>.
+
+
+== How to compile and install
-* Copying
+This is what you need to do to compile and install Ruby:
-Ruby is copyrighted by Yukihiro Matsumoto <matz@ruby.club.co.jp>.
+0. If you want to use Microsoft Visual C++ to compile ruby,
+ read win32/README.win32 instead of this document.
-This source is distributed under the conditions blow:
+1. If +./configure+ does not exist or is older than configure.in,
+ run autoconf to (re)generate configure.
- 1. You may make and give away verbatim copies of the source form of
- the software without restriction, provided that you do not modify
- the original distribution files.
+2. Run +./configure+, which will generate config.h and Makefile.
- If you want to distribute the modified version in any way, contact
- the author.
+ Some C compiler flags may be added by default depending on your
+ environment. Specify <tt>optflags=..</tt> and <tt>warnflags=..</tt> as
+ necessary to override them.
- 2. You may distribute the software in object code or executable
- form, provided that you distribute it with instructions on where
- to get the software.
+3. Edit +defines.h+ if you need. Usually this step will not be needed.
- 3. You may modify the software in any way, provided that you do not
- distribute the modified version.
+4. Remove comment mark(<tt>#</tt>) before the module names from +ext/Setup+
+ (or add module names if not present), if you want to link modules
+ statically.
+
+ If you don't want to compile non static extension modules
+ (probably on architectures which does not allow dynamic loading),
+ remove comment mark from the line "<tt>#option nodynamic</tt>" in
+ +ext/Setup+.
+
+ Usually this step will not be needed.
+
+5. Run +make+.
+
+6. Optionally, run '<tt>make check</tt>' to check whether the compiled Ruby
+ interpreter works well. If you see the message "<tt>check succeeded</tt>",
+ your ruby works as it should (hopefully).
+
+7. Run '<tt>make install</tt>'
+
+ This command will create following directories and install files
+ onto them.
+
+ * <tt>${DESTDIR}${prefix}/bin</tt>
+ * <tt>${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}</tt>
+ * <tt>${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
+ * <tt>${DESTDIR}${prefix}/lib</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}</tt>
+ * <tt>${DESTDIR}${prefix}/share/man/man1</tt>
+ * <tt>${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system</tt>
+
+ If Ruby's API version is '_x.y.z_', the <tt>${MAJOR}</tt> is '_x_', the
+ <tt>${MINOR}</tt> is '_y_', and the <tt>${TEENY}</tt> is '_z_'.
+
+ *NOTE*: teeny of the API version may be different from one of
+ Ruby's program version
+
+ You may have to be a super user to install ruby.
+
+If you fail to compile ruby, please send the detailed error report with
+the error log and machine/OS type, to help others.
- 4. You may modify and include the part of the software into any other
- software (possibly commercial). But some files in the distribution
- are not written by the author, so that they are not under this terms.
- They are gc.c(partly)¡¤utils.c(partly), regex.[ch]¡¤fnmatch.[ch]¡¤
- glob.c, st.[ch] and somme files under the ./missing directory. See
- each files for the copying condition.
+Some extension libraries may not get compiled because of lack of
+necessary external libraries and/or headers, then you will need to run
+'<tt>make distclean-ext</tt>' to remove old configuration after
+installing them in such case.
- 5. The scripts and library files supplied as input to or produced as
- output from the software do not automatically fall under the
- copyright of the software, but belong to whomever generated them,
- and may be sold commercially, and may be aggregated with this
- software.
+== Copying
- 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- PURPOSE.
+See the file +COPYING+.
-* ruby home-page
+== Feedback
- The URL of the ruby home-page is:
+Questions about the Ruby language can be asked on the Ruby-Talk mailing list
+(http://www.ruby-lang.org/en/community/mailing-lists) or on websites like
+(http://stackoverflow.com).
- http://www.netlab.co.jp/ruby/
+Bug reports should be filed at http://bugs.ruby-lang.org
-* The Author
+== The Author
-Feel free to send comments and bug reports to the author. Here is the
-author's latest mail address:
+Ruby was originally designed and developed by Yukihiro Matsumoto (Matz) in 1995.
- matz@netlab.co.jp
+<mailto:matz@ruby-lang.org>
--------------------------------------------------------
-created at: Thu Aug 3 11:57:36 JST 1995
+--
Local variables:
-mode: indented-text
+mode: rdoc
end:
diff --git a/README.EXT b/README.EXT
index c2f81d1a7a..b7a1728110 100644
--- a/README.EXT
+++ b/README.EXT
@@ -1,64 +1,62 @@
-.\" README.EXT - -*- Text -*- created at: Mon Aug 7 16:45:54 JST 1995
+# README.EXT - -*- RDoc -*- created at: Mon Aug 7 16:45:54 JST 1995
-This document explains how to make extention modules for ruby.
+This document explains how to make extension libraries for Ruby.
-1¡¥Basic knowledge
+= Basic Knowledge
In C, variables have types and data do not have types. In contrast,
-ruby variables do not have static type and data themselves have
-types. So, data need to be converted across the languages.
-
-Data in ruby represented C type `VALUE'. Each VALUE data have its
-data-type.
-
-ruby¤Î¥Ç¡¼¥¿¤ÏVALUE¤È¤¤¤¦C¤Î·¿¤Çɽ¸½¤µ¤ì¤Þ¤¹¡¥VALUE·¿¤Î¥Ç¡¼
-¥¿¤Ï¤½¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤ò¼«Ê¬¤ÇÃΤäƤ¤¤Þ¤¹¡¥¤³¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤È
-¤¤¤¦¤Î¤Ï¥Ç¡¼¥¿(¥ª¥Ö¥¸¥§¥¯¥È)¤Î¼ÂºÝ¤Î¹½Â¤¤ò°ÕÌ£¤·¤Æ¤¤¤Æ¡¤ruby
-¤Î¥¯¥é¥¹¤È¤Ï¤Þ¤¿°ã¤Ã¤¿¤â¤Î¤Ç¤¹¡¥
-
-To retrieve an C data from the VALUE, you need to:
-
- (1) Identify VALUE's data type
- (2) Convert VALUE into C data
-
-Converting to wrong data type may cause serious promblems.
-
-
-1.1 Data-types
-
-Ruby interpreter has data-types as below:
-
- T_NIL nil
- T_OBJECT ordinaly object
- T_CLASS class
- T_MODULE module
- T_FLOAT floating point number
- T_STRING string
- T_REGEXP regular expression
- T_ARRAY array
- T_FIXNUM Fixnum(31bit integer)
- T_HASH assosiative array
- T_STRUCT (ruby) structure
- T_BIGNUM multi precision integer
- T_TRUE true
- T_FALSE false
- T_DATA data
-
-Otherwise, there are several other types used internally:
-
- T_ICLASS
- T_MATCH
- T_VARMAP
- T_SCOPE
- T_NODE
+Ruby variables do not have a static type, and data themselves have
+types, so data will need to be converted between the languages.
+
+Data in Ruby are represented by the C type `VALUE'. Each VALUE data
+has its data-type.
+
+To retrieve C data from a VALUE, you need to:
+
+1. Identify the VALUE's data type
+2. Convert the VALUE into C data
+
+Converting to the wrong data type may cause serious problems.
+
+== Data-Types
+
+The Ruby interpreter has the following data types:
+
+T_NIL :: nil
+T_OBJECT :: ordinary object
+T_CLASS :: class
+T_MODULE :: module
+T_FLOAT :: floating point number
+T_STRING :: string
+T_REGEXP :: regular expression
+T_ARRAY :: array
+T_HASH :: associative array
+T_STRUCT :: (Ruby) structure
+T_BIGNUM :: multi precision integer
+T_FIXNUM :: Fixnum(31bit or 63bit integer)
+T_COMPLEX :: complex number
+T_RATIONAL :: rational number
+T_FILE :: IO
+T_TRUE :: true
+T_FALSE :: false
+T_DATA :: data
+T_SYMBOL :: symbol
+
+In addition, there are several other types used internally:
+
+T_ICLASS :: included module
+T_MATCH :: MatchData object
+T_UNDEF :: undefined
+T_NODE :: syntax tree node
+T_ZOMBIE :: object awaiting finalization
Most of the types are represented by C structures.
-1.2 Check Data Type of the VALUE
+== Check Data Type of the VALUE
-The macro TYPE() defined in ruby.h shows data-type of the VALUE.
+The macro TYPE() defined in ruby.h shows the data type of the VALUE.
TYPE() returns the constant number T_XXXX described above. To handle
-data-types, the code will be like:
+data types, your code will look something like this:
switch (TYPE(obj)) {
case T_FIXNUM:
@@ -72,993 +70,1430 @@ data-types, the code will be like:
break;
default:
/* raise exception */
- Fail("not valid value");
+ rb_raise(rb_eTypeError, "not valid value");
break;
}
-There is the data-type check function.
+There is the data-type check function
void Check_Type(VALUE value, int type)
-It raises an exception, if the VALUE does not have the type specified.
+which raises an exception if the VALUE does not have the type
+specified.
-There are faster check-macros for fixnums and nil.
+There are also faster check macros for fixnums and nil.
FIXNUM_P(obj)
NIL_P(obj)
-1.3 Convert VALUE into C data
+== Convert VALUE into C Data
+
+The data for type T_NIL, T_FALSE, T_TRUE are nil, false, true
+respectively. They are singletons for the data type.
+The equivalent C constants are: Qnil, Qfalse, Qtrue.
+Note that Qfalse is false in C also (i.e. 0), but not Qnil.
+
+The T_FIXNUM data is a 31bit or 63bit length fixed integer.
+This size is depend on the size of long: if long is 32bit then
+T_FIXNUM is 31bit, if long is 64bit then T_FIXNUM is 63bit.
+T_FIXNUM can be converted to a C integer by using the
+FIX2INT() macro or FIX2LONG(). Though you have to check that the
+data is really FIXNUM before using them, they are faster. FIX2LONG()
+never raises exceptions, but FIX2INT() raises RangeError if the
+result is bigger or smaller than the size of int.
+There are also NUM2INT() and NUM2LONG() which converts any Ruby
+numbers into C integers. These macros includes a type check,
+so an exception will be raised if the conversion failed. NUM2DBL()
+can be used to retrieve the double float value in the same way.
+
+You can use the macros
+StringValue() and StringValuePtr() to get a char* from a VALUE.
+StringValue(var) replaces var's value with the result of "var.to_str()".
+StringValuePtr(var) does same replacement and returns char*
+representation of var. These macros will skip the replacement if var
+is a String. Notice that the macros take only the lvalue as their
+argument, to change the value of var in place.
+
+You can also use the macro named StringValueCStr(). This is just
+like StringValuePtr(), but always add nul character at the end of
+the result. If the result contains nul character, this macro causes
+the ArgumentError exception.
+StringValuePtr() doesn't guarantee the existence of a nul at the end
+of the result, and the result may contain nul.
+
+Other data types have corresponding C structures, e.g. struct RArray
+for T_ARRAY etc. The VALUE of the type which has the corresponding
+structure can be cast to retrieve the pointer to the struct. The
+casting macro will be of the form RXXXX for each data type; for
+instance, RARRAY(obj). See "ruby.h". However, we do not recommend
+to access RXXXX data directly because these data structure is complex.
+Use corresponding rb_xxx() functions to access internal struct.
+For example, to access an entry of array, use rb_ary_entry(ary, offset)
+and rb_ary_store(ary, offset, obj).
+
+There are some accessing macros for structure members, for example
+`RSTRING_LEN(str)' to get the size of the Ruby String object. The
+allocated region can be accessed by `RSTRING_PTR(str)'.
+
+Notice: Do not change the value of the structure directly, unless you
+are responsible for the result. This ends up being the cause of
+interesting bugs.
+
+== Convert C Data into VALUE
+
+To convert C data to Ruby values:
+
+FIXNUM ::
+
+ left shift 1 bit, and turn on LSB.
+
+Other pointer values::
+
+ cast to VALUE.
+
+You can determine whether a VALUE is pointer or not by checking its LSB.
+
+Notice Ruby does not allow arbitrary pointer values to be a VALUE. They
+should be pointers to the structures which Ruby knows about. The known
+structures are defined in <ruby.h>.
-¥Ç¡¼¥¿¥¿¥¤¥×¤¬T_NIL, T_FALSE, T_TRUE¤Ç¤¢¤ë»þ¡¤¥Ç¡¼¥¿¤Ï¤½¤ì¤¾
-¤ìnil, FALSE, TRUE¤Ç¤¹¡¥¤³¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤Ò¤È
-¤Ä¤º¤Ä¤·¤«Â¸ºß¤·¤Þ¤»¤ó¡¥
+To convert C numbers to Ruby values, use these macros.
-¥Ç¡¼¥¿¥¿¥¤¥×¤¬T_FIXNUM¤Î»þ¡¤¤³¤ì¤Ï31bit¤Î¥µ¥¤¥º¤ò»ý¤ÄÀ°¿ô¤Ç
-¤¹¡¥FIXNUM¤òC¤ÎÀ°¿ô¤ËÊÑ´¹¤¹¤ë¤¿¤á¤Ë¤Ï¥Þ¥¯¥í¡ÖFIX2INT()¡×¤ò»È
-¤¤¤Þ¤¹¡¥¤½¤ì¤«¤é¡¤FIXNUM¤Ë¸Â¤é¤ºruby¤Î¥Ç¡¼¥¿¤òÀ°¿ô¤ËÊÑ´¹¤¹¤ë
-¡ÖNUM2INT()¡×¤È¤¤¤¦¥Þ¥¯¥í¤¬¤¢¤ê¤Þ¤¹¡¥¤³¤Î¥Þ¥¯¥í¤Ï¥Ç¡¼¥¿¥¿¥¤
-¥×¤Î¥Á¥§¥Ã¥¯Ìµ¤·¤Ç»È¤¨¤Þ¤¹(À°¿ô¤ËÊÑ´¹¤Ç¤­¤Ê¤¤¾ì¹ç¤Ë¤ÏÎã³°¤¬
-ȯÀ¸¤¹¤ë)¡¥
+INT2FIX() :: for integers within 31bits.
+INT2NUM() :: for arbitrary sized integer.
-¤½¤ì°Ê³°¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤ÏÂбþ¤¹¤ëC¤Î¹½Â¤ÂΤ¬¤¢¤ê¤Þ¤¹¡¥Âбþ¤¹
-¤ë¹½Â¤ÂΤΤ¢¤ëVALUE¤Ï¤½¤Î¤Þ¤Þ¥­¥ã¥¹¥È(·¿ÊÑ´¹)¤¹¤ì¤Ð¹½Â¤ÂΤÎ
-¥Ý¥¤¥ó¥¿¤ËÊÑ´¹¤Ç¤­¤Þ¤¹¡¥
+INT2NUM() converts an integer into a Bignum if it is out of the FIXNUM
+range, but is a bit slower.
-¹½Â¤ÂΤϡÖstruct RXxxxx¡×¤È¤¤¤¦Ì¾Á°¤Çruby.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ
-¤¹¡¥Î㤨¤Ðʸ»úÎó¤Ï¡Östruct RString¡×¤Ç¤¹¡¥¼ÂºÝ¤Ë»È¤¦²ÄǽÀ­¤¬
-¤¢¤ë¤Î¤Ïʸ»úÎó¤ÈÇÛÎ󤯤餤¤À¤È»×¤¤¤Þ¤¹¡¥
+== Manipulating Ruby Data
-ruby.h¤Ç¤Ï¹½Â¤ÂΤإ­¥ã¥¹¥È¤¹¤ë¥Þ¥¯¥í¤â¡ÖRXXXXX()¡×(Á´ÉôÂçʸ
-»ú¤Ë¤·¤¿¤â¤Î)¤È¤¤¤¦Ì¾Á°¤ÇÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹(Îã: RSTRING())¡¥
+As I already mentioned, it is not recommended to modify an object's
+internal structure. To manipulate objects, use the functions supplied
+by the Ruby interpreter. Some (not all) of the useful functions are
+listed below:
-Î㤨¤Ð¡¤Ê¸»úÎóstr¤ÎŤµ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡ÖRSTRING(str)->len¡×¤È
-¤·¡¤Ê¸»úÎóstr¤òchar*¤È¤·¤ÆÆÀ¤ë¤¿¤á¤Ë¤Ï¡ÖRSTRING(str)->ptr¡×
-¤È¤·¤Þ¤¹¡¥ÇÛÎó¤Î¾ì¹ç¤Ë¤Ï¡¤¤½¤ì¤¾¤ì¡ÖRARRAT(str)->len¡×¡¤
-¡ÖRARRAT(str)->ptr¡×¤È¤Ê¤ê¤Þ¤¹¡¥
+=== String Functions
-ruby¤Î¹½Â¤ÂΤòľÀÜ¥¢¥¯¥»¥¹¤¹¤ë»þ¤Ëµ¤¤ò¤Ä¤±¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³
-¤È¤Ï¡¤ÇÛÎó¤äʸ»úÎó¤Î¹½Â¤ÂΤÎÃæ¿È¤Ï»²¾È¤¹¤ë¤À¤±¤Ç¡¤Ä¾ÀÜÊѹ¹¤·
-¤Ê¤¤¤³¤È¤Ç¤¹¡¥Ä¾ÀÜÊѹ¹¤·¤¿¾ì¹ç¡¤¥ª¥Ö¥¸¥§¥¯¥È¤ÎÆâÍÆ¤ÎÀ°¹çÀ­¤¬
-¤È¤ì¤Ê¤¯¤Ê¤Ã¤Æ¡¤»×¤ï¤Ì¥Ð¥°¤Î¸¶°ø¤Ë¤Ê¤ê¤Þ¤¹¡¥
+rb_str_new(const char *ptr, long len) ::
-1.4 Convert C data into VALUE
+ Creates a new Ruby string.
-VALUE¤Î¼ÂºÝ¤Î¹½Â¤¤Ï
+rb_str_new2(const char *ptr) ::
+rb_str_new_cstr(const char *ptr) ::
- * FIXNUM¤Î¾ì¹ç
+ Creates a new Ruby string from a C string. This is equivalent to
+ rb_str_new(ptr, strlen(ptr)).
- 1bit±¦¥·¥Õ¥È¤·¤Æ¡¤LSB¤òΩ¤Æ¤ë¡¥
+rb_tainted_str_new(const char *ptr, long len) ::
- * ¤½¤Î¾¤Î¥Ý¥¤¥ó¥¿¤Î¾ì¹ç
+ Creates a new tainted Ruby string. Strings from external data
+ sources should be tainted.
- ¤½¤Î¤Þ¤ÞVALUE¤Ë¥­¥ã¥¹¥È¤¹¤ë¡¥
+rb_tainted_str_new2(const char *ptr) ::
+rb_tainted_str_new_cstr(const char *ptr) ::
-¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥¤è¤Ã¤Æ¡¤LSB¤ò¥Á¥§¥Ã¥¯¤¹¤ì¤ÐVALUE¤¬FIXNUM¤«¤É
-¤¦¤«¤ï¤«¤ë¤ï¤±¤Ç¤¹(¥Ý¥¤¥ó¥¿¤ÎLSB¤¬Î©¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤ò²¾Äꤷ¤Æ
-¤¤¤ë)¡¥
+ Creates a new tainted Ruby string from a C string.
-¤Ç¤¹¤«¤é¡¤FIXNUM°Ê³°¤Îruby¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¹½Â¤ÂΤÏñ¤ËVALUE
-¤Ë¥­¥ã¥¹¥È¤¹¤ë¤À¤±¤ÇVALUE¤ËÊÑ´¹½ÐÍè¤Þ¤¹¡¥¤¿¤À¤·¡¤Ç¤°Õ¤Î¹½Â¤
-ÂΤ¬VALUE¤Ë¥­¥ã¥¹¥È½ÐÍè¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¥­¥ã¥¹¥È¤¹¤ë¤Î
-¤Ïruby¤ÎÃΤäƤ¤¤ë¹½Â¤ÂÎ(ruby.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëstruct RXxxx
-¤Î¤â¤Î)¤À¤±¤Ë¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡¥
+rb_sprintf(const char *format, ...) ::
+rb_vsprintf(const char *format, va_list ap) ::
-FIXNUM¤Ë´Ø¤·¤Æ¤ÏÊÑ´¹¥Þ¥¯¥í¤ò·Ðͳ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥C¤ÎÀ°¿ô
-¤«¤éVALUE¤ËÊÑ´¹¤¹¤ë¥Þ¥¯¥í¤Ï°Ê²¼¤Î¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡¥É¬Íפ˱þ¤¸
-¤Æ»È¤¤Ê¬¤±¤Æ¤¯¤À¤µ¤¤¡¥
+ Creates a new Ruby string with printf(3) format.
- INT2FIX() ¤â¤È¤ÎÀ°¿ô¤¬31bit°ÊÆâ¤Ë¼ý¤Þ¤ë»þ
- INT2NUM() Ǥ°Õ¤ÎÀ°¿ô¤«¤éVALUE¤Ø
+ Note: In the format string, %i is used for Object#to_s (or Object#inspect if
+ '+' flag is set) output (and related argument must be a VALUE). For integers
+ in format strings, use %d.
-INT2NUM()¤ÏÀ°¿ô¤¬FIXNUM¤ÎÈϰϤ˼ý¤Þ¤é¤Ê¤¤¾ì¹ç¡¤Bignum¤ËÊÑ´¹
-¤·¤Æ¤¯¤ì¤Þ¤¹(¤¬¡¤¾¯¤·ÃÙ¤¤)¡¥
+rb_str_cat(VALUE str, const char *ptr, long len) ::
-1.5 Manipulate ruby data
+ Appends len bytes of data from ptr to the Ruby string.
-ÀèÄø¤â½Ò¤Ù¤¿Ä̤ꡤruby¤Î¹½Â¤ÂΤò¥¢¥¯¥»¥¹¤¹¤ë»þ¤ËÆâÍÆ¤Î¹¹¿·¤ò
-¹Ô¤¦¤³¤È¤Ï´«¤á¤é¤ì¤Þ¤»¤ó¡¥¤Ç¡¤ruby¤Î¥Ç¡¼¥¿¤òÁàºî¤¹¤ë»þ¤Ë¤Ï
-ruby¤¬ÍѰդ·¤Æ¤¤¤ë´Ø¿ô¤òÍѤ¤¤Æ¤¯¤À¤µ¤¤¡¥
+rb_str_cat2(VALUE str, const char* ptr) ::
-¤³¤³¤Ç¤Ï¤â¤Ã¤È¤â»È¤ï¤ì¤ë¤Ç¤¢¤í¤¦Ê¸»úÎó¤ÈÇÛÎó¤ÎÀ¸À®/Áàºî¤ò¹Ô
-¤¤´Ø¿ô¤ò¤¢¤²¤Þ¤¹(Á´Éô¤Ç¤Ï¤Ê¤¤¤Ç¤¹)¡¥
+ Appends C string ptr to Ruby string str. This function is
+ equivalent to rb_str_cat(str, ptr, strlen(ptr)).
- String funtions
+rb_str_catf(VALUE str, const char* format, ...) ::
+rb_str_vcatf(VALUE str, const char* format, va_list ap) ::
- str_new(char *ptr, int len)
+ Appends C string format and successive arguments to Ruby string
+ str according to a printf-like format. These functions are
+ equivalent to rb_str_cat2(str, rb_sprintf(format, ...)) and
+ rb_str_cat2(str, rb_vsprintf(format, ap)), respectively.
- Creates a new ruby string.
+rb_enc_str_new(const char *ptr, long len, rb_encoding *enc) ::
+rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc) ::
- str_new2(char *ptr)
+ Creates a new Ruby string with the specified encoding.
- Creates a new ruby string from C string. This is equivalent to
- str_new(ptr, strlen(ptr)).
+rb_usascii_str_new(const char *ptr, long len) ::
+rb_usascii_str_new_cstr(const char *ptr) ::
- str_cat(VALUE str, char *ptr, int len)
+ Creates a new Ruby string with encoding US-ASCII.
- Appends len bytes data from ptr to the ruby string.
+rb_str_resize(VALUE str, long len) ::
- Array functions
+ Resizes Ruby string to len bytes. If str is not modifiable, this
+ function raises an exception. The length of str must be set in
+ advance. If len is less than the old length the content beyond
+ len bytes is discarded, else if len is greater than the old length
+ the content beyond the old length bytes will not be preserved but
+ will be garbage. Note that RSTRING_PTR(str) may change by calling
+ this function.
- ary_new()
+rb_str_set_len(VALUE str, long len) ::
- Creates an array with no element.
+ Sets the length of Ruby string. If str is not modifiable, this
+ function raises an exception. This function preserves the content
+ upto len bytes, regardless RSTRING_LEN(str). len must not exceed
+ the capacity of str.
- ary_new2(int len)
+=== Array Functions
- Creates an array with no element, with allocating internal buffer
- for len elements.
+rb_ary_new() ::
- ary_new3(int n, ...)
+ Creates an array with no elements.
- Creates an n-elements array from arguments.
+rb_ary_new2(long len) ::
+rb_ary_new_capa(long len) ::
- ary_new4(int n, VALUE *elts)
+ Creates an array with no elements, allocating internal buffer
+ for len elements.
- Creates an n-elements array from C array.
+rb_ary_new3(long n, ...) ::
+rb_ary_new_from_args(long n, ...) ::
- ary_push(VALUE ary)
- ary_pop(VALUE ary, VALUE val)
- ary_shift(VALUE ary)
- ary_unshift(VALUE ary, VALUE val)
- ary_entry(VALUE ary, int idx)
+ Creates an n-element array from the arguments.
- Array operations. The first argument to each functions must be an
- array. They may dump core if other types given.
+rb_ary_new4(long n, VALUE *elts) ::
+rb_ary_new_from_values(long n, VALUE *elts) ::
-2. Extend ruby with C
+ Creates an n-element array from a C array.
-¸¶ÍýŪ¤Ëruby¤Ç½ñ¤±¤ë¤³¤È¤ÏC¤Ç¤â½ñ¤±¤Þ¤¹¡¥ruby¤½¤Î¤â¤Î¤¬C¤Çµ­
-½Ò¤µ¤ì¤Æ¤¤¤ë¤ó¤Ç¤¹¤«¤é¡¤ÅöÁ³¤È¤¤¤¨¤ÐÅöÁ³¤Ê¤ó¤Ç¤¹¤±¤É¡¥¤³¤³¤Ç
-¤Ïruby¤Î³ÈÄ¥¤Ë»È¤¦¤³¤È¤¬Â¿¤¤¤À¤í¤¦¤Èͽ¬¤µ¤ì¤ëµ¡Ç½¤òÃæ¿´¤Ë¾Ò
-²ð¤·¤Þ¤¹¡¥
+rb_ary_to_ary(VALUE obj) ::
-2.1 Add new features to ruby
+ Converts the object into an array.
+ Equivalent to Object#to_ary.
-ruby¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¨¤Ðruby¥¤¥ó¥¿¥×¥ê¥¿¤Ë¿·¤·¤¤µ¡Ç½
-¤òÄɲ乤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡¥ruby¤Ç¤Ï°Ê²¼¤Îµ¡Ç½¤òÄɲä¹¤ë´Ø¿ô¤¬
-Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
+There are many functions to operate an array. They may dump core if other
+types are given.
- * ¥¯¥é¥¹¡¤¥â¥¸¥å¡¼¥ë
- * ¥á¥½¥Ã¥É¡¤ÆÃ°Û¥á¥½¥Ã¥É¤Ê¤É
- * Äê¿ô
+rb_ary_aref(argc, VALUE *argv, VALUE ary) ::
-¤Ç¤Ï½ç¤Ë¾Ò²ð¤·¤Þ¤¹¡¥
+ Equivalent to Array#[].
-2.1.1 Class/module definition
+rb_ary_entry(VALUE ary, long offset) ::
-¥¯¥é¥¹¤ä¥â¥¸¥å¡¼¥ë¤òÄêµÁ¤¹¤ë¤¿¤á¤Ë¤Ï¡¤°Ê²¼¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
+ ary[offset]
- VALUE rb_define_class(char *name, VALUE super)
- VALUE rb_define_module(char *name)
+rb_ary_store(VALUE ary, long offset, VALUE obj) ::
-¤³¤ì¤é¤Î´Ø¿ô¤Ï¿·¤·¤¯ÄêµÁ¤µ¤ì¤¿¥¯¥é¥¹¤ä¥â¥¸¥å¡¼¥ë¤òÊÖ¤·¤Þ¤¹¡¥
-¥á¥½¥Ã¥É¤äÄê¿ô¤ÎÄêµÁ¤Ë¤³¤ì¤é¤ÎÃͤ¬É¬ÍפʤΤǡ¤¤Û¤È¤ó¤É¤Î¾ì¹ç
-¤ÏÌá¤êÃͤòÊÑ¿ô¤Ë³ÊǼ¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡¥
+ ary[offset] = obj
-2.1.2 Method/singleton method definition
+rb_ary_subseq(VALUE ary, long beg, long len) ::
-¥á¥½¥Ã¥É¤äÆÃ°Û¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¤Ë¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
+ ary[beg, len]
- void rb_define_method(VALUE class, char *name,
+rb_ary_push(VALUE ary, VALUE val) ::
+rb_ary_pop(VALUE ary) ::
+rb_ary_shift(VALUE ary) ::
+rb_ary_unshift(VALUE ary, VALUE val) ::
+
+rb_ary_cat(VALUE ary, const VALUE *ptr, long len) ::
+
+ Appends len elements of objects from ptr to the array.
+
+= Extending Ruby with C
+
+== Adding New Features to Ruby
+
+You can add new features (classes, methods, etc.) to the Ruby
+interpreter. Ruby provides APIs for defining the following things:
+
+* Classes, Modules
+* Methods, Singleton Methods
+* Constants
+
+=== Class and Module Definition
+
+To define a class or module, use the functions below:
+
+ VALUE rb_define_class(const char *name, VALUE super)
+ VALUE rb_define_module(const char *name)
+
+These functions return the newly created class or module. You may
+want to save this reference into a variable to use later.
+
+To define nested classes or modules, use the functions below:
+
+ VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
+ VALUE rb_define_module_under(VALUE outer, const char *name)
+
+=== Method and Singleton Method Definition
+
+To define methods or singleton methods, use these functions:
+
+ void rb_define_method(VALUE klass, const char *name,
VALUE (*func)(), int argc)
- void rb_define_singleton_method(VALUE object, char *name,
- VALUE (*func)(), int argc)
+ void rb_define_singleton_method(VALUE object, const char *name,
+ VALUE (*func)(), int argc)
+The `argc' represents the number of the arguments to the C function,
+which must be less than 17. But I doubt you'll need that many.
-ǰ¤Î¤¿¤áÀâÌÀ¤¹¤ë¤È¡ÖÆÃ°Û¥á¥½¥Ã¥É¡×¤È¤Ï¡¤¤½¤ÎÆÃÄê¤Î¥ª¥Ö¥¸¥§¥¯
-¥È¤ËÂФ·¤Æ¤À¤±Í­¸ú¤Ê¥á¥½¥Ã¥É¤Ç¤¹¡¥ruby¤Ç¤Ï¤è¤¯Smalltalk¤Ë¤ª
-¤±¤ë¥¯¥é¥¹¥á¥½¥Ã¥É¤È¤·¤Æ¡¤¥¯¥é¥¹¤ËÂФ¹¤ëÆÃ°Û¥á¥½¥Ã¥É¤¬»È¤ï¤ì
-¤Þ¤¹¡¥
+If `argc' is negative, it specifies the calling sequence, not number of
+the arguments.
-¤³¤ì¤é¤Î´Ø¿ô¤Î argc¤È¤¤¤¦°ú¿ô¤ÏC¤Î´Ø¿ô¤ØÅϤµ¤ì¤ë°ú¿ô¤Î¿ô(¤È
-·Á¼°)¤ò·è¤á¤Þ¤¹¡¥argc¤¬Àµ¤Î»þ¤Ï´Ø¿ô¤Ë°ú¤­ÅϤ¹°ú¿ô¤Î¿ô¤ò°ÕÌ£
-¤·¤Þ¤¹¡¥16¸Ä°Ê¾å¤Î°ú¿ô¤Ï»È¤¨¤Þ¤»¤ó(¤¬¡¤Íפê¤Þ¤»¤ó¤è¤Í¡¤¤½¤ó
-¤Ê¤Ë)¡¥
+If argc is -1, the function will be called as:
-argc¤¬Éé¤Î»þ¤Ï°ú¿ô¤Î¿ô¤Ç¤Ï¤Ê¤¯¡¤·Á¼°¤ò»ØÄꤷ¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥
-argc¤¬-1¤Î»þ¤Ï°ú¿ô¤òÇÛÎó¤ËÆþ¤ì¤ÆÅϤµ¤ì¤Þ¤¹¡¥argc¤¬-2¤Î»þ¤Ï°ú
-¿ô¤Ïruby¤ÎÇÛÎó¤È¤·¤ÆÅϤµ¤ì¤Þ¤¹¡¥
+ VALUE func(int argc, VALUE *argv, VALUE obj)
-¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë´Ø¿ô¤Ï¤â¤¦Æó¤Ä¤¢¤ê¤Þ¤¹¡¥¤Ò¤È¤Ä¤Ïprivate¥á
-¥½¥Ã¥É¤òÄêµÁ¤¹¤ë´Ø¿ô¤Ç¡¤°ú¿ô¤Ïrb_define_method()¤ÈƱ¤¸¤Ç¤¹¡¥
+where argc is the actual number of arguments, argv is the C array of
+the arguments, and obj is the receiver.
- void rb_define_private_method(VALUE class, char *name,
- VALUE (*func)(), int argc)
+If argc is -2, the arguments are passed in a Ruby array. The function
+will be called like:
+
+ VALUE func(VALUE obj, VALUE args)
-private¥á¥½¥Ã¥É¤È¤Ï´Ø¿ô·Á¼°¤Ç¤·¤«¸Æ¤Ó½Ð¤¹¤³¤È¤Î½ÐÍè¤Ê¤¤¥á¥½¥Ã
-¥É¤Ç¤¹¡¥
+where obj is the receiver, and args is the Ruby array containing
+actual arguments.
-¤â¤¦¤Ò¤È¤Ä¤Ï¥â¥¸¥å¡¼¥ë´Ø¿ô¤òÄêµÁ¤¹¤ë¤â¤Î¤Ç¤¹¡¥¥â¥¸¥å¡¼¥ë´Ø¿ô
-¤È¤Ï¥â¥¸¥å¡¼¥ë¤ÎÆÃ°Û¥á¥½¥Ã¥É¤Ç¤¢¤ê¡¤Æ±»þ¤Ëprivate¥á¥½¥Ã¥É¤Ç
-¤â¤¢¤ë¤â¤Î¤Ç¤¹¡¥Îã¤ò¤¢¤²¤ë¤ÈMath¥â¥¸¥å¡¼¥ë¤Îsqrt()¤Ê¤É¤¬¤¢¤²
-¤é¤ì¤Þ¤¹¡¥¤³¤Î¥á¥½¥Ã¥É¤Ï
+There are some more functions to define methods. One takes an ID
+as the name of method to be defined. See also ID or Symbol below.
+
+ void rb_define_method_id(VALUE klass, ID name,
+ VALUE (*func)(ANYARGS), int argc)
+
+There are two functions to define private/protected methods:
+
+ void rb_define_private_method(VALUE klass, const char *name,
+ VALUE (*func)(), int argc)
+ void rb_define_protected_method(VALUE klass, const char *name,
+ VALUE (*func)(), int argc)
+
+At last, rb_define_module_function defines a module functions,
+which are private AND singleton methods of the module.
+For example, sqrt is the module function defined in Math module.
+It can be called in the following way:
Math.sqrt(4)
-¤È¤¤¤¦·Á¼°¤Ç¤â
+or
include Math
sqrt(4)
-¤È¤¤¤¦·Á¼°¤Ç¤â»È¤¨¤Þ¤¹¡¥¥â¥¸¥å¡¼¥ë´Ø¿ô¤òÄêµÁ¤¹¤ë´Ø¿ô¤Ï°Ê²¼¤Î
-Ä̤ê¤Ç¤¹¡¥
+To define module functions, use:
- void rb_define_module_function(VALUE module, char *name,
+ void rb_define_module_function(VALUE module, const char *name,
VALUE (*func)(), int argc)
-´Ø¿ôŪ¥á¥½¥Ã¥É(Kernel¥â¥¸¥å¡¼¥ë¤Îprivaet method)¤òÄêµÁ¤¹¤ë¤¿
-¤á¤Î´Ø¿ô¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡¥
+In addition, function-like methods, which are private methods defined
+in the Kernel module, can be defined using:
+
+ void rb_define_global_function(const char *name, VALUE (*func)(), int argc)
+
+To define an alias for the method,
+
+ void rb_define_alias(VALUE module, const char* new, const char* old);
+
+To define a reader/writer for an attribute,
- void rb_define_global_function(char *name, VALUE (*func)(), int argc)
+ void rb_define_attr(VALUE klass, const char *name, int read, int write)
+To define and undefine the `allocate' class method,
-2.1.3 Constant definition
+ void rb_define_alloc_func(VALUE klass, VALUE (*func)(VALUE klass));
+ void rb_undef_alloc_func(VALUE klass);
-³ÈÄ¥¥â¥¸¥å¡¼¥ë¤¬É¬ÍפÊÄê¿ô¤Ï¤¢¤é¤«¤¸¤áÄêµÁ¤·¤Æ¤ª¤¤¤¿Êý¤¬Îɤ¤
-¤Ç¤·¤ç¤¦¡¥Äê¿ô¤òÄêµÁ¤¹¤ë´Ø¿ô¤ÏÆó¤Ä¤¢¤ê¤Þ¤¹¡¥
+func has to take the klass as the argument and return a newly
+allocated instance. This instance should be as empty as possible,
+without any expensive (including external) resources.
- void rb_define_const(VALUE class, char *name, VALUE val)
- void rb_define_global_const(char *name, VALUE val)
+=== Constant Definition
-Á°¼Ô¤ÏÆÃÄê¤Î¥¯¥é¥¹/¥â¥¸¥å¡¼¥ë¤Ë°¤¹¤ëÄê¿ô¤òÄêµÁ¤¹¤ë¤â¤Î¡¤¸å
-¼Ô¤Ï¥°¥í¡¼¥Ð¥ë¤ÊÄê¿ô¤òÄêµÁ¤¹¤ë¤â¤Î¤Ç¤¹¡¥
+We have 2 functions to define constants:
-2.2 Use ruby features from C
+ void rb_define_const(VALUE klass, const char *name, VALUE val)
+ void rb_define_global_const(const char *name, VALUE val)
-´û¤Ë¡Ø1.5 ruby¤Î¥Ç¡¼¥¿¤òÁàºî¤¹¤ë¡Ù¤Ç°ìÉô¾Ò²ð¤·¤¿¤è¤¦¤Ê´Ø¿ô¤ò
-»È¤¨¤Ð¡¤ruby¤Îµ¡Ç½¤ò¼Â¸½¤·¤Æ¤¤¤ë´Ø¿ô¤òľÀܸƤӽФ¹¤³¤È¤¬½ÐÍè
-¤Þ¤¹¡¥
+The former is to define a constant under specified class/module. The
+latter is to define a global constant.
-# ¤³¤Î¤è¤¦¤Ê´Ø¿ô¤Î°ìÍ÷ɽ¤Ï¤¤¤Þ¤Î¤È¤³¤í¤¢¤ê¤Þ¤»¤ó¡¥¥½¡¼¥¹¤ò¸«
-# ¤ë¤·¤«¤Ê¤¤¤Ç¤¹¤Í¡¥
+== Use Ruby Features from C
-¤½¤ì°Ê³°¤Ë¤âruby¤Îµ¡Ç½¤ò¸Æ¤Ó½Ð¤¹ÊýË¡¤Ï¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡¥
+There are several ways to invoke Ruby's features from C code.
-2.2.1 ruby¤Î¥×¥í¥°¥é¥à¤òeval¤¹¤ë
+=== Evaluate Ruby Programs in a String
-C¤«¤éruby¤Îµ¡Ç½¤ò¸Æ¤Ó½Ð¤¹¤â¤Ã¤È¤â´Êñ¤ÊÊýË¡¤È¤·¤Æ¡¤Ê¸»úÎó¤Ç
-Í¿¤¨¤é¤ì¤¿ruby¤Î¥×¥í¥°¥é¥à¤òɾ²Á¤¹¤ë´Ø¿ô¤¬¤¢¤ê¤Þ¤¹¡¥
+The easiest way to use Ruby's functionality from a C program is to
+evaluate the string as Ruby program. This function will do the job:
- VALUE rb_eval_string(char *str)
+ VALUE rb_eval_string(const char *str)
-¤³¤Îɾ²Á¤Ï¸½ºß¤Î´Ä¶­¤Ç¹Ô¤ï¤ì¤Þ¤¹¡¥¤Ä¤Þ¤ê¡¤¸½ºß¤Î¥í¡¼¥«¥ëÊÑ¿ô
-¤Ê¤É¤ò¼õ¤±·Ñ¤®¤Þ¤¹¡¥
+Evaluation is done under the current context, thus current local variables
+of the innermost method (which is defined by Ruby) can be accessed.
-2.2.2 ID or Symbol
+Note that the evaluation can raise an exception. There is a safer
+function:
-C¤«¤éʸ»úÎó¤ò·Ðͳ¤»¤º¤Ëruby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤â¤Ç¤­¤Þ
-¤¹¡¥¤½¤ÎÁ°¤Ë¡¤ruby¥¤¥ó¥¿¥×¥ê¥¿Æâ¤Ç¥á¥½¥Ã¥É¤äÊÑ¿ô̾¤ò»ØÄꤹ¤ë
-»þ¤Ë»È¤ï¤ì¤Æ¤¤¤ëID¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡¥
+ VALUE rb_eval_string_protect(const char *str, int *state)
-ID¤È¤ÏÊÑ¿ô̾¡¤¥á¥½¥Ã¥É̾¤òɽ¤¹À°¿ô¤Ç¤¹¡¥ruby¤ÎÃæ¤Ç¤Ï
+It returns nil when an error occur. Moreover, *state is zero if str was
+successfully evaluated, or nonzero otherwise.
- :¼±ÊÌ»Ò
+=== ID or Symbol
-¤Ç¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤¹¡¥C¤«¤é¤³¤ÎÀ°¿ô¤òÆÀ¤ë¤¿¤á¤Ë¤Ï´Ø¿ô
+You can invoke methods directly, without parsing the string. First I
+need to explain about ID. ID is the integer number to represent
+Ruby's identifiers such as variable names. The Ruby data type
+corresponding to ID is Symbol. It can be accessed from Ruby in the
+form:
- rb_intern(char *name)
+ :Identifier
-¤ò»È¤¤¤Þ¤¹¡¥¤Þ¤¿°ìʸ»ú¤Î±é»»»Ò¤Ï¤½¤Îʸ»ú¥³¡¼¥É¤¬¤½¤Î¤Þ¤Þ¥·¥ó
-¥Ü¥ë¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥
+or
-2.2.3 Invoke ruby method from C
+ :"any kind of string"
-C¤«¤éʸ»úÎó¤ò·Ðͳ¤»¤º¤Ëruby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤¿¤á¤Ë¤Ï°Ê²¼
-¤Î´Ø¿ô¤ò»È¤¤¤Þ¤¹¡¥
+You can get the ID value from a string within C code by using
+
+ rb_intern(const char *name)
+ rb_intern_str(VALUE name)
+
+You can retrieve ID from Ruby object (Symbol or String) given as an
+argument by using
+
+ rb_to_id(VALUE symbol)
+ rb_check_id(volatile VALUE *name)
+ rb_check_id_cstr(const char *name, long len, rb_encoding *enc)
+
+These functions try to convert the argument to a String if it was not
+a Symbol nor a String. The second function stores the converted
+result into *name, and returns 0 if the string is not a known symbol.
+After this function returned a non-zero value, *name is always a
+Symbol or a String, otherwise it is a String if the result is 0.
+The third function takes NUL-terminated C string, not Ruby VALUE.
+
+You can convert C ID to Ruby Symbol by using
+
+ VALUE ID2SYM(ID id)
+
+and to convert Ruby Symbol object to ID, use
+
+ ID SYM2ID(VALUE symbol)
+
+=== Invoke Ruby Method from C
+
+To invoke methods directly, you can use the function below
VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)
-¤³¤Î´Ø¿ô¤Ï¥ª¥Ö¥¸¥§¥¯¥Èrecv¤Îmid¤Ç»ØÄꤵ¤ì¤ë¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð
-¤·¤Þ¤¹¡¥
+This function invokes a method on the recv, with the method name
+specified by the symbol mid.
-2.2.4 ÊÑ¿ô/Äê¿ô¤ò»²¾È/¹¹¿·¤¹¤ë
+=== Accessing the Variables and Constants
-C¤«¤é´Ø¿ô¤ò»È¤Ã¤Æ»²¾È¡¦¹¹¿·¤Ç¤­¤ë¤Î¤Ï¡¤¥¯¥é¥¹Äê¿ô¡¤¥¤¥ó¥¹¥¿
-¥ó¥¹ÊÑ¿ô¤Ç¤¹¡¥Âç°èÊÑ¿ô¤Ï°ìÉô¤Î¤â¤Î¤ÏC¤ÎÂç°èÊÑ¿ô¤È¤·¤Æ¥¢¥¯¥»
-¥¹¤Ç¤­¤Þ¤¹¡¥¥í¡¼¥«¥ëÊÑ¿ô¤ò»²¾È¤¹¤ëÊýË¡¤Ï¸ø³«¤·¤Æ¤¤¤Þ¤»¤ó¡¥
+You can access class variables and instance variables using access
+functions. Also, global variables can be shared between both
+environments. There's no way to access Ruby's local variables.
-¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ò»²¾È¡¦¹¹¿·¤¹¤ë´Ø¿ô¤Ï°Ê²¼¤ÎÄÌ
-¤ê¤Ç¤¹¡¥
+The functions to access/modify instance variables are below:
VALUE rb_ivar_get(VALUE obj, ID id)
VALUE rb_ivar_set(VALUE obj, ID id, VALUE val)
-id¤Ïrb_intern()¤ÇÆÀ¤é¤ì¤ë¤â¤Î¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
+id must be the symbol, which can be retrieved by rb_intern().
-¥¯¥é¥¹Äê¿ô¤ò»²¾È¤¹¤ë¤Ë¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
+To access the constants of the class/module:
VALUE rb_const_get(VALUE obj, ID id)
-¥¯¥é¥¹Äê¿ô¤ò¿·¤·¤¯ÄêµÁ¤¹¤ë¤¿¤á¤Ë¤Ï¡Ø2.1.3 Äê¿ôÄêµÁ¡Ù¤Ç¾Ò²ð¤µ
-¤ì¤Æ¤¤¤ë´Ø¿ô¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
+See also Constant Definition above.
-3. Informatin sharing between ruby and C
+= Information Sharing Between Ruby and C
-C¸À¸ì¤Èruby¤Î´Ö¤Ç¾ðÊó¤ò¶¦Í­¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ²òÀ⤷¤Þ¤¹¡¥
+=== Ruby Constants That C Can Be Accessed From C
-3.1 Ruby constant that C¤«¤é»²¾È¤Ç¤­¤ëruby¤ÎÄê¿ô
+As stated in section 1.3,
+the following Ruby constants can be referred from C.
-Following ruby constants can be referred from C.
+ Qtrue
+ Qfalse
- TRUE
- FALSE
-
-Boolean values. FALSE is false in the C also (i.e. 0).
+Boolean values. Qfalse is false in C also (i.e. 0).
Qnil
Ruby nil in C scope.
-3.2 Global variables shared between C and ruby
+== Global Variables Shared Between C and Ruby
-C¤Èruby¤ÇÂç°èÊÑ¿ô¤ò»È¤Ã¤Æ¾ðÊó¤ò¶¦Í­¤Ç¤­¤Þ¤¹¡¥¶¦Í­¤Ç¤­¤ëÂç°è
-ÊÑ¿ô¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¼ïÎब¤¢¤ê¤Þ¤¹¡¥¤½¤Î¤Ê¤«¤Ç¤â¤Ã¤È¤âÎɤ¯»È¤ï
-¤ì¤ë¤È»×¤ï¤ì¤ë¤Î¤Ïrb_define_variable()¤Ç¤¹¡¥
+Information can be shared between the two environments using shared global
+variables. To define them, you can use functions listed below:
- void rb_define_variable(char *name, VALUE *var)
+ void rb_define_variable(const char *name, VALUE *var)
-¤³¤Î´Ø¿ô¤Ïruby¤ÈC¤È¤Ç¶¦Í­¤¹¤ëÂç°èÊÑ¿ô¤òÄêµÁ¤·¤Þ¤¹¡¥ÊÑ¿ô̾¤¬
-`$'¤Ç»Ï¤Þ¤é¤Ê¤¤»þ¤Ë¤Ï¼«Æ°Åª¤ËÄɲ䵤ì¤Þ¤¹¡¥¤³¤ÎÊÑ¿ô¤ÎÃͤòÊÑ
-¹¹¤¹¤ë¤È¼«Æ°Åª¤Ëruby¤ÎÂбþ¤¹¤ëÊÑ¿ô¤ÎÃͤâÊѤï¤ê¤Þ¤¹¡¥
+This function defines the variable which is shared by both environments.
+The value of the global variable pointed to by `var' can be accessed
+through Ruby's global variable named `name'.
-¤Þ¤¿ruby¦¤«¤é¤Ï¹¹¿·¤Ç¤­¤Ê¤¤ÊÑ¿ô¤â¤¢¤ê¤Þ¤¹¡¥¤³¤Îread only¤Î
-ÊÑ¿ô¤Ï°Ê²¼¤Î´Ø¿ô¤ÇÄêµÁ¤·¤Þ¤¹¡¥
+You can define read-only (from Ruby, of course) variables using the
+function below.
- void rb_define_readonly_variable(char *name, VALUE *var)
+ void rb_define_readonly_variable(const char *name, VALUE *var)
-¤³¤ì¤éÊÑ¿ô¤Î¾¤Ëhook¤ò¤Ä¤±¤¿Âç°èÊÑ¿ô¤òÄêµÁ¤Ç¤­¤Þ¤¹¡¥hookÉÕ¤­
-¤ÎÂç°èÊÑ¿ô¤Ï°Ê²¼¤Î´Ø¿ô¤òÍѤ¤¤ÆÄêµÁ¤·¤Þ¤¹¡¥hookÉÕ¤­Âç°èÊÑ¿ô¤Î
-Ãͤλ²¾È¤äÀßÄê¤Ïhook¤Ç¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥
+You can defined hooked variables. The accessor functions (getter and
+setter) are called on access to the hooked variables.
- void rb_define_hooked_variable(char *name, VALUE *var,
- VALUE (*getter)(), VALUE (*setter)())
+ void rb_define_hooked_variable(const char *name, VALUE *var,
+ VALUE (*getter)(), void (*setter)())
-¤³¤Î´Ø¿ô¤ÏC¤Î´Ø¿ô¤Ë¤è¤Ã¤Æhook¤Î¤Ä¤±¤é¤ì¤¿Âç°èÊÑ¿ô¤òÄêµÁ¤·¤Þ
-¤¹¡¥ÊÑ¿ô¤¬»²¾È¤µ¤ì¤¿»þ¤Ë¤Ï´Ø¿ôgetter¤¬¡¤ÊÑ¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì
-¤¿»þ¤Ë¤Ï´Ø¿ôsetter¤¬¸Æ¤Ð¤ì¤ë¡¥hook¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ïgetter¤ä
-setter¤Ë0¤ò»ØÄꤷ¤Þ¤¹¡¥
+If you need to supply either setter or getter, just supply 0 for the
+hook you don't need. If both hooks are 0, rb_define_hooked_variable()
+works just like rb_define_variable().
-# getter¤âsetter¤â0¤Ê¤é¤Ðrb_define_variable()¤ÈƱ¤¸¤Ë¤Ê¤ë¡¥
+The prototypes of the getter and setter functions are as follows:
-¤½¤ì¤«¤é¡¤C¤Î´Ø¿ô¤Ë¤è¤Ã¤Æ¼Â¸½¤µ¤ì¤ëruby¤ÎÂç°èÊÑ¿ô¤òÄêµÁ¤¹¤ë
-´Ø¿ô¤¬¤¢¤ê¤Þ¤¹¡¥
+ VALUE (*getter)(ID id, VALUE *var);
+ void (*setter)(VALUE val, ID id, VALUE *var);
- void rb_define_virtual_variable(char *name,
- VALUE (*getter)(), VALUE (*setter)())
-¤³¤Î´Ø¿ô¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤¿ruby¤ÎÂç°èÊÑ¿ô¤¬»²¾È¤µ¤ì¤¿»þ¤Ë¤Ï
-getter¤¬¡¤ÊÑ¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì¤¿»þ¤Ë¤Ïsetter¤¬¸Æ¤Ð¤ì¤Þ¤¹¡¥
+Also you can define a Ruby global variable without a corresponding C
+variable. The value of the variable will be set/get only by hooks.
-The prototypes of the getter and setter functions are as following:
+ void rb_define_virtual_variable(const char *name,
+ VALUE (*getter)(), void (*setter)())
- (*getter)(ID id, void *data, struct global_entry* entry);
- (*setter)(VALUE val, ID id, void *data, struct global_entry* entry);
+The prototypes of the getter and setter functions are as follows:
-3.3 Encapsulate C data into ruby object
+ VALUE (*getter)(ID id);
+ void (*setter)(VALUE val, ID id);
-C¤ÎÀ¤³¦¤ÇÄêµÁ¤µ¤ì¤¿¥Ç¡¼¥¿(¹½Â¤ÂÎ)¤òruby¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ
-¼è¤ê°·¤¤¤¿¤¤¾ì¹ç¤¬¤¢¤ê¤¨¤Þ¤¹¡¥¤³¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï¡¤Data¤È¤¤¤¦
-ruby¥ª¥Ö¥¸¥§¥¯¥È¤ËC¤Î¹½Â¤ÂÎ(¤Ø¤Î¥Ý¥¤¥ó¥¿)¤ò¤¯¤ë¤à¤³¤È¤Çruby
-¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ¼è¤ê°·¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥
-Data¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¤Æ¹½Â¤ÂΤòruby¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥«¥×¥»¥ë
-²½¤¹¤ë¤¿¤á¤Ë¤Ï¡¤°Ê²¼¤Î¥Þ¥¯¥í¤ò»È¤¤¤Þ¤¹¡¥
+== Encapsulate C Data into a Ruby Object
- Data_Wrap_Struct(class,mark,free,ptr)
+To wrap and objectify a C pointer as a Ruby object (so called
+DATA), use Data_Wrap_Struct().
-¤³¤Î¥Þ¥¯¥í¤ÎÌá¤êÃͤÏÀ¸À®¤µ¤ì¤¿Data¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡¥
+ Data_Wrap_Struct(klass, mark, free, sval)
-class¤Ï¤³¤ÎData¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¯¥é¥¹¤Ç¤¹¡¥ptr¤Ï¥«¥×¥»¥ë²½¤¹¤ë
-C¤Î¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¹¡¥mark¤Ï¤³¤Î¹½Â¤ÂΤ¬ruby¤Î¥ª¥Ö¥¸¥§
-¥¯¥È¤Ø¤Î»²¾È¤¬¤¢¤ë»þ¤Ë»È¤¦´Ø¿ô¤Ç¤¹¡¥¤½¤Î¤è¤¦¤Ê»²¾È¤ò´Þ¤Þ¤Ê¤¤
-»þ¤Ë¤Ï0¤ò»ØÄꤷ¤Þ¤¹¡¥
+Data_Wrap_Struct() returns a created DATA object. The klass argument
+is the class for the DATA object. The mark argument is the function
+to mark Ruby objects pointed by this data. The free argument is the
+function to free the pointer allocation. If this is -1, the pointer
+will be just freed. The functions mark and free will be called from
+garbage collector.
-# ¤½¤Î¤è¤¦¤Ê»²¾È¤Ï´«¤á¤é¤ì¤Þ¤»¤ó¡¥
+These mark / free functions are invoked during GC execution. No
+object allocations are allowed during it, so do not allocate ruby
+objects inside them.
-free¤Ï¤³¤Î¹½Â¤ÂΤ¬¤â¤¦ÉÔÍפˤʤä¿»þ¤Ë¸Æ¤Ð¤ì¤ë´Ø¿ô¤Ç¤¹¡¥¤³¤Î
-´Ø¿ô¤¬¥¬¡¼¥Ù¡¼¥¸¥³¥ì¥¯¥¿¤«¤é¸Æ¤Ð¤ì¤Þ¤¹¡¥
+You can allocate and wrap the structure in one step.
-C¤Î¹½Â¤ÂΤγäÅö¤ÈData¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¤òƱ»þ¤Ë¹Ô¤¦¥Þ¥¯¥í¤È
-¤·¤Æ°Ê²¼¤Î¤â¤Î¤¬Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
+ Data_Make_Struct(klass, type, mark, free, sval)
- Data_Make_Struct(class, type, mark, free, sval)
+This macro returns an allocated Data object, wrapping the pointer to
+the structure, which is also allocated. This macro works like:
-¤³¤Î¥Þ¥¯¥í¤ÎÌá¤êÃͤÏÀ¸À®¤µ¤ì¤¿Data¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡¥
+ (sval = ALLOC(type), Data_Wrap_Struct(klass, mark, free, sval))
-class, mark, free¤ÏData_Wrap_Struct¤ÈƱ¤¸Æ¯¤­¤ò¤·¤Þ¤¹¡¥type
-¤Ï³ä¤êÅö¤Æ¤ëC¹½Â¤ÂΤη¿¤Ç¤¹¡¥³ä¤êÅö¤Æ¤é¤ì¤¿¹½Â¤ÂΤÏÊÑ¿ôsval
-¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡¥¤³¤ÎÊÑ¿ô¤Î·¿¤Ï (type*) ¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥
+Arguments klass, mark, and free work like their counterparts in
+Data_Wrap_Struct(). A pointer to the allocated structure will be
+assigned to sval, which should be a pointer of the type specified.
-Data¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¥Ý¥¤¥ó¥¿¤ò¼è¤ê½Ð¤¹¤Î¤Ï°Ê²¼¤Î¥Þ¥¯¥í¤òÍѤ¤
-¤Þ¤¹¡¥
+To retrieve the C pointer from the Data object, use the macro
+Data_Get_Struct().
Data_Get_Struct(obj, type, sval)
-C¤Î¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤ÏÊÑ¿ôsval¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡¥
+A pointer to the structure will be assigned to the variable sval.
-¤³¤ì¤é¤ÎData¤Î»È¤¤Êý¤Ï¤Á¤ç¤Ã¤Èʬ¤«¤ê¤Ë¤¯¤¤¤Î¤Ç¡¤¸å¤ÇÀâÌÀ¤¹¤ë
-ÎãÂê¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
+See the example below for details.
-4¡¥Example - Create dbm module
+= Example - Creating dbm Extension
-¤³¤³¤Þ¤Ç¤ÎÀâÌÀ¤Ç¤È¤ê¤¢¤¨¤º³ÈÄ¥¥â¥¸¥å¡¼¥ë¤Ïºî¤ì¤ë¤Ï¤º¤Ç¤¹¡¥
-ruby¤Îext¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¹¤Ç¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ëdbm¥â¥¸¥å¡¼¥ë¤òÎã¤Ë
-¤·¤ÆÃʳ¬Åª¤ËÀâÌÀ¤·¤Þ¤¹¡¥
+OK, here's the example of making an extension library. This is the
+extension to access DBMs. The full source is included in the ext/
+directory in the Ruby's source tree.
-(1) make the directory
+== Make the Directory
% mkdir ext/dbm
-ruby¤òŸ³«¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¡¤ext¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë³ÈÄ¥¥â
-¥¸¥å¡¼¥ëÍѤΥǥ£¥ì¥¯¥È¥ê¤òºî¤ê¤Þ¤¹¡¥Ì¾Á°¤ÏŬÅö¤ËÁª¤ó¤Ç¹½¤¤¤Þ
-¤»¤ó¡¥
+Make a directory for the extension library under ext directory.
+
+== Design the Library
+
+You need to design the library features, before making it.
+
+== Write the C Code
+
+You need to write C code for your extension library. If your library
+has only one source file, choosing ``LIBRARY.c'' as a file name is
+preferred. On the other hand, in case your library has multiple source
+files, avoid choosing ``LIBRARY.c'' for a file name. It may conflict
+with an intermediate file ``LIBRARY.o'' on some platforms.
+Note that some functions in mkmf library described below generate
+a file ``conftest.c'' for checking with compilation. You shouldn't
+choose ``conftest.c'' as a name of a source file.
+
+Ruby will execute the initializing function named ``Init_LIBRARY'' in
+the library. For example, ``Init_dbm()'' will be executed when loading
+the library.
+
+Here's the example of an initializing function.
+
+ void
+ Init_dbm(void)
+ {
+ /* define DBM class */
+ cDBM = rb_define_class("DBM", rb_cObject);
+ /* DBM includes Enumerate module */
+ rb_include_module(cDBM, rb_mEnumerable);
+
+ /* DBM has class method open(): arguments are received as C array */
+ rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
+
+ /* DBM instance method close(): no args */
+ rb_define_method(cDBM, "close", fdbm_close, 0);
+ /* DBM instance method []: 1 argument */
+ rb_define_method(cDBM, "[]", fdbm_fetch, 1);
+
+ /* ... */
+
+ /* ID for a instance variable to store DBM data */
+ id_dbm = rb_intern("dbm");
+ }
+
+The dbm extension wraps the dbm struct in the C environment using
+Data_Make_Struct.
+
+ struct dbmdata {
+ int di_size;
+ DBM *di_dbm;
+ };
+
+ obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
-(2) create MANIFEST file
+This code wraps the dbmdata structure into a Ruby object. We avoid
+wrapping DBM* directly, because we want to cache size information.
- % cd ext/dbm
- % touch MANIFEST
+To retrieve the dbmdata structure from a Ruby object, we define the
+following macro:
-³ÈÄ¥¥â¥¸¥å¡¼¥ë¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤Ë¤ÏMANIFEST¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬
-ɬÍפʤΤǡ¤¤È¤ê¤¢¤¨¤º¶õ¤Î¥Õ¥¡¥¤¥ë¤òºî¤Ã¤Æ¤ª¤­¤Þ¤¹¡¥¸å¤Ç¤³¤Î
-¥Õ¥¡¥¤¥ë¤Ë¤ÏɬÍפʥե¡¥¤¥ë°ìÍ÷¤¬Æþ¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥
+ #define GetDBM(obj, dbmp) {\
+ Data_Get_Struct(obj, struct dbmdata, dbmp);\
+ if (dbmp->di_dbm == 0) closed_dbm();\
+ }
+
+This sort of complicated macro does the retrieving and close checking for
+the DBM.
+
+There are three kinds of way to receive method arguments. First,
+methods with a fixed number of arguments receive arguments like this:
+
+ static VALUE
+ fdbm_delete(VALUE obj, VALUE keystr)
+ {
+ /* ... */
+ }
+
+The first argument of the C function is the self, the rest are the
+arguments to the method.
+
+Second, methods with an arbitrary number of arguments receive
+arguments like this:
+
+ static VALUE
+ fdbm_s_open(int argc, VALUE *argv, VALUE klass)
+ {
+ /* ... */
+ if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
+ mode = 0666; /* default value */
+ }
+ /* ... */
+ }
+
+The first argument is the number of method arguments, the second
+argument is the C array of the method arguments, and the third
+argument is the receiver of the method.
+
+You can use the function rb_scan_args() to check and retrieve the
+arguments. The third argument is a string that specifies how to
+capture method arguments and assign them to the following VALUE
+references.
+
+
+The following is an example of a method that takes arguments by Ruby's
+array:
-MANIFEST¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ï¡¤make¤Î»þ¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤¬³ÈÄ¥¥â¥¸¥å¡¼
-¥ë¤ò´Þ¤ó¤Ç¤¤¤ë¤«¤É¤¦¤«È½Äꤹ¤ë¤¿¤á¤Ë»È¤ï¤ì¤ì¤Æ¤¤¤Þ¤¹¡¥
+ static VALUE
+ thread_initialize(VALUE thread, VALUE args)
+ {
+ /* ... */
+ }
-(3) design the library
+The first argument is the receiver, the second one is the Ruby array
+which contains the arguments to the method.
-¤Þ¤¢¡¤ÅöÁ³¤Ê¤ó¤Ç¤¹¤±¤É¡¤¤É¤¦¤¤¤¦µ¡Ç½¤ò¼Â¸½¤¹¤ë¤«¤É¤¦¤«¤Þ¤ºÀß
-·×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¤É¤ó¤Ê¥¯¥é¥¹¤ò¤Ä¤¯¤ë¤«¡¤¤½¤Î¥¯¥é¥¹¤Ë¤Ï
-¤É¤ó¤Ê¥á¥½¥Ã¥É¤¬¤¢¤ë¤«¡¤¥¯¥é¥¹¤¬Ä󶡤¹¤ëÄê¿ô¤Ê¤É¤Ë¤Ä¤¤¤ÆÀß·×
-¤·¤Þ¤¹¡¥dbm¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¤Ïext/dbm.doc¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
-
-(4) write C code.
-
-³ÈÄ¥¥â¥¸¥å¡¼¥ëËÜÂΤȤʤëC¸À¸ì¤Î¥½¡¼¥¹¤ò½ñ¤­¤Þ¤¹¡¥C¸À¸ì¤Î¥½¡¼
-¥¹¤¬¤Ò¤È¤Ä¤Î»þ¤Ë¤Ï¡Ö¥â¥¸¥å¡¼¥ë̾.c¡×¤òÁª¤Ö¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡¥C
-¸À¸ì¤Î¥½¡¼¥¹¤¬Ê£¿ô¤Î¾ì¹ç¤Ë¤ÏµÕ¤Ë¡Ö¥â¥¸¥å¡¼¥ë̾.c¡×¤È¤¤¤¦¥Õ¥¡
-¥¤¥ë̾¤ÏÈò¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤È¥â¥¸¥å¡¼
-¥ëÀ¸À®»þ¤ËÃæ´ÖŪ¤ËÀ¸À®¤µ¤ì¤ë¡Ö¥â¥¸¥å¡¼¥ë̾.o¡×¤È¤¤¤¦¥Õ¥¡¥¤¥ë
-¤È¤¬¾×ÆÍ¤¹¤ë¤«¤é¤Ç¤¹¡¥
-
-ruby¤Ï³ÈÄ¥¥â¥¸¥å¡¼¥ë¤ò¥í¡¼¥É¤¹¤ë»þ¤Ë¡ÖInit_¥â¥¸¥å¡¼¥ë̾¡×¤È
-¤¤¤¦´Ø¿ô¤ò¼«Æ°Åª¤Ë¼Â¹Ô¤·¤Þ¤¹¡¥dbm¥â¥¸¥å¡¼¥ë¤Î¾ì¹ç¡ÖInit_dbm¡×
-¤Ç¤¹¡¥¤³¤Î´Ø¿ô¤ÎÃæ¤Ç¥¯¥é¥¹¡¤¥â¥¸¥å¡¼¥ë¡¤¥á¥½¥Ã¥É¡¤Äê¿ô¤Ê¤É¤Î
-ÄêµÁ¤ò¹Ô¤¤¤Þ¤¹¡¥dbm.c¤«¤é°ìÉô°úÍѤ·¤Þ¤¹¡¥
-
---
-Init_dbm()
-{
- /* DBM¥¯¥é¥¹¤òÄêµÁ¤¹¤ë */
- cDBM = rb_define_class("DBM", cObject);
- /* DBM¤ÏEnumerate¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë */
- rb_include_module(cDBM, mEnumerable);
-
- /* DBM¥¯¥é¥¹¤Î¥¯¥é¥¹¥á¥½¥Ã¥Éopen(): °ú¿ô¤ÏC¤ÎÇÛÎó¤Ç¼õ¤±¤ë */
- rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
-
- /* DBM¥¯¥é¥¹¤Î¥á¥½¥Ã¥Éclose(): °ú¿ô¤Ï¤Ê¤· */
- rb_define_method(cDBM, "close", fdbm_close, 0);
- /* DBM¥¯¥é¥¹¤Î¥á¥½¥Ã¥É[]: °ú¿ô¤Ï1¸Ä */
- rb_define_method(cDBM, "[]", fdbm_fetch, 1);
- :
-
- /* DBM¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô̾¤Î¤¿¤á¤ÎID */
- id_dbm = rb_intern("dbm");
-}
---
-
-DBM¥â¥¸¥å¡¼¥ë¤Ïdbm¤Î¥Ç¡¼¥¿¤ÈÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ê¤ë¤Ï¤º¤Ç
-¤¹¤«¤é¡¤C¤ÎÀ¤³¦¤Îdbm¤òruby¤ÎÀ¤³¦¤Ë¼è¤ê¹þ¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡¥
-
-
-dbm.c¤Ç¤ÏData_Make_Struct¤ò°Ê²¼¤Î¤è¤¦¤Ë»È¤Ã¤Æ¤¤¤Þ¤¹¡¥
-
---
-struct dbmdata {
- int di_size;
- DBM *di_dbm;
-};
-
-
-obj = Data_Make_Struct(class,struct dbmdata,0,free_dbm,dbmp);
---
-
-¤³¤³¤Ç¤Ïdbmstruct¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤òData¤Ë¥«¥×¥»¥ë²½¤·¤Æ¤¤
-¤Þ¤¹¡¥DBM*¤òľÀÜ¥«¥×¥»¥ë²½¤·¤Ê¤¤¤Î¤Ïclose()¤·¤¿»þ¤Î½èÍý¤ò¹Í
-¤¨¤Æ¤Î¤³¤È¤Ç¤¹¡¥
-
-Data¥ª¥Ö¥¸¥§¥¯¥È¤«¤édbmstruct¹½Â¤ÂΤΥݥ¤¥ó¥¿¤ò¼è¤ê½Ð¤¹¤¿¤á
-¤Ë°Ê²¼¤Î¥Þ¥¯¥í¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡¥
-
---
-#define GetDBM(obj, dbmp) {\
- Data_Get_Struct(obj, struct dbmdata, dbmp);\
- if (dbmp->di_dbm == 0) closed_dbm();\
-}
---
-
-¤Á¤ç¤Ã¤ÈÊ£»¨¤Ê¥Þ¥¯¥í¤Ç¤¹¤¬¡¤Íפ¹¤ë¤Ëdbmdata¹½Â¤ÂΤΥݥ¤¥ó¥¿
-¤Î¼è¤ê½Ð¤·¤È¡¤close¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤ò¤Þ¤È¤á¤Æ¤¤
-¤ë¤À¤±¤Ç¤¹¡¥
-
-DBM¥¯¥é¥¹¤Ë¤Ï¤¿¤¯¤µ¤ó¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¤¬¡¤Ê¬Îह¤ë¤È3¼ïÎà¤Î
-°ú¿ô¤Î¼õ¤±Êý¤¬¤¢¤ê¤Þ¤¹¡¥¤Ò¤È¤Ä¤Ï°ú¿ô¤Î¿ô¤¬¸ÇÄê¤Î¤â¤Î¤Ç¡¤Îã¤È
-¤·¤Æ¤Ïdelete¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡¥delete¥á¥½¥Ã¥É¤ò¼ÂÁõ¤·¤Æ¤¤¤ë
-fdbm_delete()¤Ï¤³¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥
-
---
-static VALUE
-fdbm_delete(obj, keystr)
- VALUE obj, keystr;
-{
- :
-}
---
-
-°ú¿ô¤Î¿ô¤¬¸ÇÄê¤Î¥¿¥¤¥×¤ÏÂè1°ú¿ô¤¬self¡¤Âè2°ú¿ô°Ê¹ß¤¬¥á¥½¥Ã¥É
-¤Î°ú¿ô¤È¤Ê¤ê¤Þ¤¹¡¥
-
-°ú¿ô¤Î¿ô¤¬ÉÔÄê¤Î¤â¤Î¤ÏC¤ÎÇÛÎó¤Ç¼õ¤±¤ë¤â¤Î¤Èruby¤ÎÇÛÎó¤Ç¼õ¤±
-¤ë¤â¤Î¤È¤¬¤¢¤ê¤Þ¤¹¡¥dbm¥â¥¸¥å¡¼¥ë¤ÎÃæ¤Ç¡¤C¤ÎÇÛÎó¤Ç¼õ¤±¤ë¤â¤Î
-¤ÏDBM¤Î¥¯¥é¥¹¥á¥½¥Ã¥É¤Ç¤¢¤ëopen()¤Ç¤¹¡¥¤³¤ì¤ò¼ÂÁõ¤·¤Æ¤¤¤ë´Ø
-¿ôfdbm_s_open()¤Ï¤³¤¦¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥
-
---
-static VALUE
-fdbm_s_open(argc, argv, class)
- int argc;
- VALUE *argv;
- VALUE class;
-{
- :
- if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
- mode = 0666; /* default value */
- }
- :
-}
---
-
-¤³¤Î¥¿¥¤¥×¤Î´Ø¿ô¤ÏÂè1°ú¿ô¤¬Í¿¤¨¤é¤ì¤¿°ú¿ô¤Î¿ô¡¤Âè2°ú¿ô¤¬Í¿¤¨
-¤é¤ì¤¿°ú¿ô¤ÎÆþ¤Ã¤Æ¤¤¤ëÇÛÎó¤Ë¤Ê¤ê¤Þ¤¹¡¥self¤ÏÂè3°ú¿ô¤È¤·¤ÆÍ¿
-¤¨¤é¤ì¤Þ¤¹¡¥
-
-¤³¤ÎÇÛÎó¤ÇÍ¿¤¨¤é¤ì¤¿°ú¿ô¤ò²òÀϤ¹¤ë¤¿¤á¤Î´Ø¿ô¤¬open()¤Ç¤â»È¤ï
-¤ì¤Æ¤¤¤ërb_scan_args()¤Ç¤¹¡¥Âè3°ú¿ô¤Ë»ØÄꤷ¤¿¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë
-½¾¤¤¡¤Âè4ÊÑ¿ô°Ê¹ß¤Ë»ØÄꤷ¤¿ÊÑ¿ô¤ËÃͤòÂåÆþ¤·¤Æ¤¯¤ì¤Þ¤¹¡¥¤³¤Î
-¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¤Âè1ʸ»úÌܤ¬¾Êά¤Ç¤­¤Ê¤¤°ú¿ô¤Î¿ô¡¤Âè2ʸ»úÌܤ¬
-¾Êά¤Ç¤­¤ë°ú¿ô¤Î¿ô¡¤Âè3ʸ»úÌܤ¬Âбþ¤¹¤ëÁê¼ê¤¬Ìµ¤¤¤¢¤Þ¤ê¤Î°ú
-¿ô¤¬¤¢¤ë¤«¤É¤¦¤«¤ò¼¨¤¹"*"¤Ç¤¹¡¥2ʸ»úÌܤÈ3ʸ»úÌܤϾÊά¤Ç¤­¤Þ
-¤¹¡¥dbm.c¤ÎÎã¤Ç¤Ï¡¤¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï"11"¤Ç¤¹¤«¤é¡¤°ú¿ô¤ÏºÇÄã1¤Ä
-¤Ç¡¤2¤Ä¤Þ¤Çµö¤µ¤ì¤ë¤È¤¤¤¦°ÕÌ£¤Ë¤Ê¤ê¤Þ¤¹¡¥¾Êά¤µ¤ì¤Æ¤¤¤ë»þ¤Î
-ÊÑ¿ô¤ÎÃͤÏnil(C¸À¸ì¤Î¥ì¥Ù¥ë¤Ç¤ÏQnil)¤Ë¤Ê¤ê¤Þ¤¹¡¥
-
-ruby¤ÎÇÛÎó¤Ç°ú¿ô¤ò¼õ¤±¼è¤ë¤â¤Î¤Ïindexes¤¬¤¢¤ê¤Þ¤¹¡¥¼ÂÁõ¤Ï¤³
-¤¦¤Ç¤¹¡¥
-
---
-static VALUE
-fdbm_indexes(obj, args)
- VALUE obj;
- struct RArray *args;
-{
- :
-}
---
-
-Âè1°ú¿ô¤Ïself¡¤Âè2°ú¿ô¤Ïruby¤ÎÇÛÎó¤Ç¤¹¡¥¤³¤³¤Ç¤Ï¥­¥ã¥¹¥È¤ò¸º
-¤é¤¹¤¿¤á struct RArray* ¤Ç¼õ¤±¤Æ¤¤¤Þ¤¹¤¬¡¤VALUE¤Ç¤âƱ¤¸¤³¤È
-¤Ç¤¹¡¥
-
-** Ãí°Õ»ö¹à
-
-ruby¤È¶¦Í­¤Ï¤·¤Ê¤¤¤¬ruby¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò³ÊǼ¤¹¤ë²ÄǽÀ­¤Î¤¢¤ë
-C¤ÎÂç°èÊÑ¿ô¤Ï°Ê²¼¤Î´Ø¿ô¤ò»È¤Ã¤Æruby¥¤¥ó¥¿¥×¥ê¥¿¤ËÊÑ¿ô¤Î¸ºß
-¤ò¶µ¤¨¤Æ¤¢¤²¤Æ¤¯¤À¤µ¤¤¡¥¤Ç¤Ê¤¤¤ÈGC¤Ç¥È¥é¥Ö¥ë¤òµ¯¤³¤·¤Þ¤¹¡¥
+*Notice*: GC should know about global variables which refer to Ruby's objects,
+but are not exported to the Ruby world. You need to protect them by
void rb_global_variable(VALUE *var)
-(5) prepare extconf.rb
+== Prepare extconf.rb
-¤â¤·¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡Öextconf.rb¡×¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ì¤Ð¡¤
-make»þ¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡¥¤Ê¤±¤ì¤ÐŬÅö¤ËMakefile¤¬À¸À®¤µ¤ì¤Þ¤¹¡¥
+If the file named extconf.rb exists, it will be executed to generate
+Makefile.
-extconf.rb¤Ï¥â¥¸¥å¡¼¥ë¤Î¥³¥ó¥Ñ¥¤¥ë¤ËɬÍפʾò·ï¤Î¥Á¥§¥Ã¥¯¤Ê¤É
-¤ò¹Ô¤¦¤³¤È¤¬ÌÜŪ¤Ç¤¹¡¥extconf.rb¤ÎÃæ¤Ç¤Ï°Ê²¼¤Îruby´Ø¿ô¤ò»È¤¦
-¤³¤È¤¬½ÐÍè¤Þ¤¹¡¥
+extconf.rb is the file for checking compilation conditions etc. You
+need to put
- have_library(lib, func): ¥é¥¤¥Ö¥é¥ê¤Î¸ºß¥Á¥§¥Ã¥¯
- have_func(func): ´Ø¿ô¤Î¸ºß¥Á¥§¥Ã¥¯
- have_header(header): ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¸ºß¥Á¥§¥Ã¥¯
- create_makefile(target): Makefile¤ÎÀ¸À®
+ require 'mkmf'
-°Ê²¼¤ÎÊÑ¿ô¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥
+at the top of the file. You can use the functions below to check
+various conditions.
- $CFLAGS: ¥³¥ó¥Ñ¥¤¥ë»þ¤ËÄɲÃŪ¤Ë»ØÄꤹ¤ë¥Õ¥é¥°(-I¤Ê¤É)
- $LDFLAGS: ¥ê¥ó¥¯»þ¤ËÄɲÃŪ¤Ë»ØÄꤹ¤ë¥Õ¥é¥°(-L¤Ê¤É)
+ have_macro(macro[, headers[, opt]]): check whether macro is defined
+ have_library(lib[, func[, headers[, opt]]]): check whether library containing function exists
+ find_library(lib[, func, *paths]): find library from paths
+ have_func(func[, headers[, opt]): check whether function exists
+ have_var(var[, headers[, opt]]): check whether variable exists
+ have_header(header[, preheaders[, opt]]): check whether header file exists
+ find_header(header, *paths): find header from paths
+ have_framework(fw): check whether framework exists (for MacOS X)
+ have_struct_member(type, member[, headers[, opt]]): check whether struct has member
+ have_type(type[, headers[, opt]]): check whether type exists
+ find_type(type, opt, *headers): check whether type exists in headers
+ have_const(const[, headers[, opt]]): check whether constant is defined
+ check_sizeof(type[, headers[, opts]]): check size of type
+ check_signedness(type[, headers[, opts]]): check signedness of type
+ convertible_int(type[, headers[, opts]]): find convertible integer type
+ find_executable(bin[, path]): find executable file path
+ create_header(header): generate configured header
+ create_makefile(target[, target_prefix]): generate Makefile
-¥â¥¸¥å¡¼¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ò·ï¤¬Â·¤ï¤Ê¤º¡¤¤½¤Î¥â¥¸¥å¡¼¥ë¤Ï¥³
-¥ó¥Ñ¥¤¥ë¤·¤Ê¤¤»þ¤Ë¤Ïcreate_makefile¤ò¸Æ¤Ð¤Ê¤±¤ì¤ÐMakefile¤Ï
-À¸À®¤µ¤ì¤º¡¤¥³¥ó¥Ñ¥¤¥ë¤â¹Ô¤ï¤ì¤Þ¤»¤ó¡¥
+See MakeMakefile for full documentation of these functions.
-(6) prepare depend (optional)
+The value of the variables below will affect the Makefile.
-¤â¤·¡¤¥Ç¥£¥ì¥¯¥È¥ê¤Ëdepend¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ì¤Ð¡¤
-Makefile¤¬°Í¸´Ø·¸¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤ì¤Þ¤¹¡¥
+ $CFLAGS: included in CFLAGS make variable (such as -O)
+ $CPPFLAGS: included in CPPFLAGS make variable (such as -I, -D)
+ $LDFLAGS: included in LDFLAGS make variable (such as -L)
+ $objs: list of object file names
- % gcc -MM *.c > depend
+Normally, the object files list is automatically generated by searching
+source files, but you must define them explicitly if any sources will
+be generated while building.
-¤Ê¤É¤Çºî¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡¥¤¢¤Ã¤ÆÂ»¤Ï̵¤¤¤Ç¤·¤ç¤¦¡¥
+If a compilation condition is not fulfilled, you should not call
+``create_makefile''. The Makefile will not be generated, compilation will
+not be done.
-(7) MANIFEST¥Õ¥¡¥¤¥ë¤Ë¥Õ¥¡¥¤¥ë̾¤òÆþ¤ì¤ë
+== Prepare Depend (Optional)
- % ls > MANIFEST
- % vi MANIFEST
+If the file named depend exists, Makefile will include that file to
+check dependencies. You can make this file by invoking
-*.o, *~¤Ê¤ÉÉÔɬÍפʥե¡¥¤¥ë°Ê³°¤ÏMANIFEST¤ËÄɲ䷤Ƥª¤­¤Þ¤¹¡¥
-make»þ¤Ë¤ÏMANIFEST¤ÎÆâÍÆ¤Ï»²¾È¤·¤Þ¤»¤ó¤Î¤Ç¡¤¶õ¤Î¤Þ¤Þ¤Ç¤âÌäÂê
-¤Ïµ¯¤­¤Þ¤»¤ó¤¬¡¤¥Ñ¥Ã¥±¡¼¥¸¥ó¥°¤Î»þ¤Ë»²¾È¤¹¤ë¤³¤È¤¬¤¢¤ë¤Î¤È¡¤
-ɬÍפʥե¡¥¤¥ë¤ò¶èÊ̤Ǥ­¤ë¤Î¤Ç¡¤ÍѰդ·¤Æ¤ª¤¤¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç
-¤¦¡¥
+ % gcc -MM *.c > depend
-(8) make
+It's harmless. Prepare it.
-ruby¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Çmake¤ò¼Â¹Ô¤¹¤ë¤ÈMakefile¤òÀ¸À®¤«¤émake¡¤
-ɬÍפˤè¤Ã¤Æ¤Ï¤½¤Î¥â¥¸¥å¡¼¥ë¤Îruby¤Ø¤Î¥ê¥ó¥¯¤Þ¤Ç¼«Æ°Åª¤Ë¼Â¹Ô
-¤·¤Æ¤¯¤ì¤Þ¤¹¡¥extconf.rb¤ò½ñ¤­´¹¤¨¤ë¤Ê¤É¤·¤ÆMakefile¤ÎºÆÀ¸À®
-¤¬É¬Íפʻþ¤Ï¤Þ¤¿ruby¥Ç¥£¥ì¥¯¥È¥ê¤Çmake¤·¤Æ¤¯¤À¤µ¤¤¡¥
+== Generate Makefile
-(9) debug
+Try generating the Makefile by:
-¤Þ¤¢¡¤¥Ç¥Ð¥Ã¥°¤·¤Ê¤¤¤Èư¤«¤Ê¤¤¤Ç¤·¤ç¤¦¤Í¡¥ext/Setup¤Ë¥Ç¥£¥ì
-¥¯¥È¥ê̾¤ò½ñ¤¯¤ÈÀÅŪ¤Ë¥ê¥ó¥¯¤¹¤ë¤Î¤Ç¥Ç¥Ð¥Ã¥¬¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê
-¤ê¤Þ¤¹¡¥¤½¤Îʬ¥³¥ó¥Ñ¥¤¥ë¤¬ÃÙ¤¯¤Ê¤ê¤Þ¤¹¤±¤É¡¥
+ ruby extconf.rb
-(10) done, now you have the extension module
+If the library should be installed under vendor_ruby directory
+instead of site_ruby directory, use --vendor option as follows.
-¸å¤Ï¤³¤Ã¤½¤ê»È¤¦¤Ê¤ê¡¤¹­¤¯¸ø³«¤¹¤ë¤Ê¤ê¡¤Çä¤ë¤Ê¤ê¡¤¤´¼«Í³¤Ë¤ª
-»È¤¤¤¯¤À¤µ¤¤¡¥ruby¤Îºî¼Ô¤Ï³ÈÄ¥¥â¥¸¥å¡¼¥ë¤Ë´Ø¤·¤Æ°ìÀڤθ¢Íø¤ò
-¼çÄ¥¤·¤Þ¤»¤ó¡¥
+ ruby extconf.rb --vendor
-Appendix A. ruby¤Î¥½¡¼¥¹¥³¡¼¥É¤ÎʬÎà
+You don't need this step if you put the extension library under the ext
+directory of the ruby source tree. In that case, compilation of the
+interpreter will do this step for you.
-ruby¤Î¥½¡¼¥¹¤Ï¤¤¤¯¤Ä¤«¤ËʬÎह¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡¥¤³¤Î¤¦¤Á¥¯¥é
-¥¹¥é¥¤¥Ö¥é¥ê¤ÎÉôʬ¤Ï´ðËÜŪ¤Ë³ÈÄ¥¥â¥¸¥å¡¼¥ë¤ÈƱ¤¸ºî¤êÊý¤Ë¤Ê¤Ã
-¤Æ¤¤¤Þ¤¹¡¥¤³¤ì¤é¤Î¥½¡¼¥¹¤Ïº£¤Þ¤Ç¤ÎÀâÌÀ¤Ç¤Û¤È¤ó¤ÉÍý²ò¤Ç¤­¤ë¤È
-»×¤¤¤Þ¤¹¡¥
+== Run make
-coore ruby language
+Type
- class.c
- error.c
- eval.c
- gc.c
- object.c
- parse.y
- variable.c
+ make
+
+to compile your extension. You don't need this step either if you have
+put the extension library under the ext directory of the ruby source tree.
+
+== Debug
+
+You may need to rb_debug the extension. Extensions can be linked
+statically by adding the directory name in the ext/Setup file so that
+you can inspect the extension with the debugger.
+
+== Done! Now You Have the Extension Library
+
+You can do anything you want with your library. The author of Ruby
+will not claim any restrictions on your code depending on the Ruby API.
+Feel free to use, modify, distribute or sell your program.
+
+= Appendix A. Ruby Source Files Overview
+
+== Ruby Language Core
+
+class.c :: classes and modules
+error.c :: exception classes and exception mechanism
+gc.c :: memory management
+load.c :: library loading
+object.c :: objects
+variable.c :: variables and constants
+
+== Ruby Syntax Parser
+
+parse.y :: grammar definition
+parse.c :: automatically generated from parse.y
+keywords :: reserved keywords
+lex.c :: automatically generated from keywords
+
+== Ruby Evaluator (a.k.a. YARV)
-utility functions
+ compile.c
+ eval.c
+ eval_error.c
+ eval_jump.c
+ eval_safe.c
+ insns.def : definition of VM instructions
+ iseq.c : implementation of VM::ISeq
+ thread.c : thread management and context switching
+ thread_win32.c : thread implementation
+ thread_pthread.c : ditto
+ vm.c
+ vm_dump.c
+ vm_eval.c
+ vm_exec.c
+ vm_insnhelper.c
+ vm_method.c
+
+ opt_insns_unif.def : instruction unification
+ opt_operand.def : definitions for optimization
+
+ -> insn*.inc : automatically generated
+ -> opt*.inc : automatically generated
+ -> vm.inc : automatically generated
+
+== Regular Expression Engine (Oniguruma)
- dln.c
- fnmatch.c
- glob.c
regex.c
- st.c
- util.c
+ regcomp.c
+ regenc.c
+ regerror.c
+ regexec.c
+ regparse.c
+ regsyntax.c
+
+== Utility Functions
-ruby interpreter implementation
+debug.c :: debug symbols for C debugger
+dln.c :: dynamic loading
+st.c :: general purpose hash table
+strftime.c :: formatting times
+util.c :: misc utilities
+
+== Ruby Interpreter Implementation
dmyext.c
+ dmydln.c
+ dmyencoding.c
+ id.c
inits.c
main.c
ruby.c
version.c
-class library
+ gem_prelude.rb
+ prelude.rb
+
+== Class Library
+
+array.c :: Array
+bignum.c :: Bignum
+compar.c :: Comparable
+complex.c :: Complex
+cont.c :: Fiber, Continuation
+dir.c :: Dir
+enum.c :: Enumerable
+enumerator.c :: Enumerator
+file.c :: File
+hash.c :: Hash
+io.c :: IO
+marshal.c :: Marshal
+math.c :: Math
+numeric.c :: Numeric, Integer, Fixnum, Float
+pack.c :: Array#pack, String#unpack
+proc.c :: Binding, Proc
+process.c :: Process
+random.c :: random number
+range.c :: Range
+rational.c :: Rational
+re.c :: Regexp, MatchData
+signal.c :: Signal
+sprintf.c :: String#sprintf
+string.c :: String
+struct.c :: Struct
+time.c :: Time
+
+defs/known_errors.def :: Errno::* exception classes
+-> known_errors.inc :: automatically generated
+
+== Multilingualization
+
+encoding.c :: Encoding
+transcode.c :: Encoding::Converter
+enc/*.c :: encoding classes
+enc/trans/* :: codepoint mapping tables
+
+== goruby Interpreter Implementation
+
+ goruby.c
+ golf_prelude.rb : goruby specific libraries.
+ -> golf_prelude.c : automatically generated
+
+
+= Appendix B. Ruby Extension API Reference
+
+== Types
+
+VALUE ::
+
+ The type for the Ruby object. Actual structures are defined in ruby.h,
+ such as struct RString, etc. To refer the values in structures, use
+ casting macros like RSTRING(obj).
+
+== Variables and Constants
+
+Qnil::
+ nil object
+
+Qtrue::
+ true object (default true value)
+
+Qfalse::
+ false object
+
+== C Pointer Wrapping
+
+Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval) ::
+
+ Wrap a C pointer into a Ruby object. If object has references to other
+ Ruby objects, they should be marked by using the mark function during
+ the GC process. Otherwise, mark should be 0. When this object is no
+ longer referred by anywhere, the pointer will be discarded by free
+ function.
+
+Data_Make_Struct(klass, type, mark, free, sval) ::
+
+ This macro allocates memory using malloc(), assigns it to the variable
+ sval, and returns the DATA encapsulating the pointer to memory region.
+
+Data_Get_Struct(data, type, sval) ::
+
+ This macro retrieves the pointer value from DATA, and assigns it to
+ the variable sval.
+
+== Checking Data Types
+
+TYPE(value) ::
+
+ Internal type (T_NIL, T_FIXNUM, etc.)
+
+FIXNUM_P(value) ::
+
+ Is +value+ a Fixnum?
+
+NIL_P(value) ::
+
+ Is +value+ nil?
+
+void Check_Type(VALUE value, int type) ::
+
+ Ensures +value+ is of the given internal +type+ or raises a TypeError
+
+SaveStringValue(value) ::
+
+ Checks that +value+ is a String and is not tainted
+
+== Data Type Conversion
+
+FIX2INT(value), INT2FIX(i) ::
+
+ Fixnum <-> integer
+
+FIX2LONG(value), LONG2FIX(l) ::
+
+ Fixnum <-> long
+
+NUM2INT(value), INT2NUM(i) ::
+
+ Numeric <-> integer
+
+NUM2UINT(value), UINT2NUM(ui) ::
+
+ Numeric <-> unsigned integer
+
+NUM2LONG(value), LONG2NUM(l) ::
+
+ Numeric <-> long
+
+NUM2ULONG(value), ULONG2NUM(ul) ::
+
+ Numeric <-> unsigned long
+
+NUM2LL(value), LL2NUM(ll) ::
+
+ Numeric <-> long long
+
+NUM2ULL(value), ULL2NUM(ull) ::
+
+ Numeric <-> unsigned long long
+
+NUM2OFFT(value), OFFT2NUM(off) ::
+
+ Numeric <-> off_t
+
+NUM2SIZET(value), SIZET2NUM(size) ::
+
+ Numeric <-> size_t
+
+NUM2SSIZET(value), SSIZET2NUM(ssize) ::
+
+ Numeric <-> ssize_t
+
+rb_integer_pack(value, words, numwords, wordsize, nails, flags), rb_integer_unpack(words, numwords, wordsize, nails, flags) ::
+
+ Numeric <-> Arbitrary size integer buffer
+
+NUM2DBL(value) ::
+
+ Numeric -> double
+
+rb_float_new(f) ::
+
+ double -> Float
+
+StringValue(value) ::
+
+ Object with #to_str -> String
+
+StringValuePtr(value) ::
+
+ Object with #to_str -> pointer to String data
+
+StringValueCStr(value) ::
+
+ Object with #to_str -> pointer to String data without NULL bytes
+
+rb_str_new2(s) ::
+
+ char * -> String
+
+== Defining Class and Module
+
+VALUE rb_define_class(const char *name, VALUE super) ::
+
+ Defines a new Ruby class as a subclass of super.
+
+VALUE rb_define_class_under(VALUE module, const char *name, VALUE super) ::
+
+ Creates a new Ruby class as a subclass of super, under the module's
+ namespace.
+
+VALUE rb_define_module(const char *name) ::
+
+ Defines a new Ruby module.
+
+VALUE rb_define_module_under(VALUE module, const char *name) ::
+
+ Defines a new Ruby module under the module's namespace.
+
+void rb_include_module(VALUE klass, VALUE module) ::
+
+ Includes module into class. If class already includes it, just ignored.
+
+void rb_extend_object(VALUE object, VALUE module) ::
+
+ Extend the object with the module's attributes.
+
+== Defining Global Variables
+
+void rb_define_variable(const char *name, VALUE *var) ::
+
+ Defines a global variable which is shared between C and Ruby. If name
+ contains a character which is not allowed to be part of the symbol,
+ it can't be seen from Ruby programs.
+
+void rb_define_readonly_variable(const char *name, VALUE *var) ::
+
+ Defines a read-only global variable. Works just like
+ rb_define_variable(), except the defined variable is read-only.
+
+void rb_define_virtual_variable(const char *name, VALUE (*getter)(), VALUE (*setter)()) ::
+
+ Defines a virtual variable, whose behavior is defined by a pair of C
+ functions. The getter function is called when the variable is
+ referenced. The setter function is called when the variable is set to a
+ value. The prototype for getter/setter functions are:
+
+ VALUE getter(ID id)
+ void setter(VALUE val, ID id)
+
+ The getter function must return the value for the access.
+
+void rb_define_hooked_variable(const char *name, VALUE *var, VALUE (*getter)(), VALUE (*setter)()) ::
+
+ Defines hooked variable. It's a virtual variable with a C variable.
+ The getter is called as
+
+ VALUE getter(ID id, VALUE *var)
+
+ returning a new value. The setter is called as
+
+ void setter(VALUE val, ID id, VALUE *var)
+
+ GC requires C global variables which hold Ruby values to be marked.
+
+void rb_global_variable(VALUE *var)
+
+ Tells GC to protect these variables.
- array.c
- bignum.c
- compar.c
- dir.c
- enum.c
- file.c
- hash.c
- io.c
- math.c
- numeric.c
- pack.c
- process.c
- random.c
- range.c
- re.c
- signal.c
- sprintf.c
- string.c
- struct.c
- time.c
+== Constant Definition
-Appendix B. ³ÈÄ¥ÍÑ´Ø¿ô¥ê¥Õ¥¡¥ì¥ó¥¹
+void rb_define_const(VALUE klass, const char *name, VALUE val) ::
-C¸À¸ì¤«¤éruby¤Îµ¡Ç½¤òÍøÍѤ¹¤ëAPI¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë¡¥
+ Defines a new constant under the class/module.
-** ·¿
+void rb_define_global_const(const char *name, VALUE val) ::
- VALUE
+ Defines a global constant. This is just the same as
-ruby¥ª¥Ö¥¸¥§¥¯¥È¤òɽ¸½¤¹¤ë·¿¡¥É¬Íפ˱þ¤¸¤Æ¥­¥ã¥¹¥È¤·¤ÆÍѤ¤¤ë¡¥
-ÁȤ߹þ¤ß·¿¤òɽ¸½¤¹¤ëC¤Î·¿¤Ïruby.h¤Ëµ­½Ò¤·¤Æ¤¢¤ëR¤Ç»Ï¤Þ¤ë¹½Â¤
-ÂΤǤ¢¤ë¡¥VALUE·¿¤ò¤³¤ì¤é¤Ë¥­¥ã¥¹¥È¤¹¤ë¤¿¤á¤ËR¤Ç»Ï¤Þ¤ë¹½Â¤ÂÎ
-̾¤òÁ´¤ÆÂçʸ»ú¤Ë¤·¤¿Ì¾Á°¤Î¥Þ¥¯¥í¤¬ÍѰդµ¤ì¤Æ¤¤¤ë¡¥
+ rb_define_const(cKernal, name, val)
-** Variables and constants
+== Method Definition
- Qnil
+rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
-const: nil object
+ Defines a method for the class. func is the function pointer. argc
+ is the number of arguments. if argc is -1, the function will receive
+ 3 arguments: argc, argv, and self. if argc is -2, the function will
+ receive 2 arguments, self and args, where args is a Ruby array of
+ the method arguments.
- TRUE
+rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
-const: TRUE object(default true value)
+ Defines a private method for the class. Arguments are same as
+ rb_define_method().
- FALSE
+rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
-const: FALSE object
+ Defines a singleton method. Arguments are same as rb_define_method().
-** C¥Ç¡¼¥¿¤Î¥«¥×¥»¥ë²½
+rb_scan_args(int argc, VALUE *argv, const char *fmt, ...) ::
- Data_Wrap_Struct(VALUE class, void (*mark)(), void (*free)(), void *sval)
+ Retrieve argument from argc and argv to given VALUE references
+ according to the format string. The format can be described in ABNF
+ as follows:
-C¤ÎǤ°Õ¤Î¥Ý¥¤¥ó¥¿¤ò¥«¥×¥»¥ë²½¤·¤¿ruby¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹¡¥¤³
-¤Î¥Ý¥¤¥ó¥¿¤¬ruby¤«¤é¥¢¥¯¥»¥¹¤µ¤ì¤Ê¤¯¤Ê¤Ã¤¿»þ¡¤free¤Ç»ØÄꤷ¤¿
-´Ø¿ô¤¬¸Æ¤Ð¤ì¤ë¡¥¤Þ¤¿¡¤¤³¤Î¥Ý¥¤¥ó¥¿¤Î»Ø¤¹¥Ç¡¼¥¿¤¬Â¾¤Îruby¥ª¥Ö
-¥¸¥§¥¯¥È¤ò»Ø¤·¤Æ¤¤¤ë¾ì¹ç¡¤mark¤Ë»ØÄꤹ¤ë´Ø¿ô¤Ç¥Þ¡¼¥¯¤¹¤ëɬÍ×
-¤¬¤¢¤ë¡¥
+ scan-arg-spec := param-arg-spec [option-hash-arg-spec] [block-arg-spec]
- Data_Make_Struct(class, type, mark, free, sval)
+ param-arg-spec := pre-arg-spec [post-arg-spec] / post-arg-spec /
+ pre-opt-post-arg-spec
+ pre-arg-spec := num-of-leading-mandatory-args [num-of-optional-args]
+ post-arg-spec := sym-for-variable-length-args
+ [num-of-trailing-mandatory-args]
+ pre-opt-post-arg-spec := num-of-leading-mandatory-args num-of-optional-args
+ num-of-trailing-mandatory-args
+ option-hash-arg-spec := sym-for-option-hash-arg
+ block-arg-spec := sym-for-block-arg
-type·¿¤Î¥á¥â¥ê¤òmalloc¤·¡¤ÊÑ¿ôsval¤ËÂåÆþ¤·¤¿¸å¡¤¤½¤ì¤ò¥«¥×¥»
-¥ë²½¤·¤¿¥Ç¡¼¥¿¤òÊÖ¤¹¥Þ¥¯¥í¡¥
+ num-of-leading-mandatory-args := DIGIT ; The number of leading
+ ; mandatory arguments
+ num-of-optional-args := DIGIT ; The number of optional
+ ; arguments
+ sym-for-variable-length-args := "*" ; Indicates that variable
+ ; length arguments are
+ ; captured as a ruby array
+ num-of-trailing-mandatory-args := DIGIT ; The number of trailing
+ ; mandatory arguments
+ sym-for-option-hash-arg := ":" ; Indicates that an option
+ ; hash is captured if the last
+ ; argument is a hash or can be
+ ; converted to a hash with
+ ; #to_hash. When the last
+ ; argument is nil, it is
+ ; captured if it is not
+ ; ambiguous to take it as
+ ; empty option hash; i.e. '*'
+ ; is not specified and
+ ; arguments are given more
+ ; than sufficient.
+ sym-for-block-arg := "&" ; Indicates that an iterator
+ ; block should be captured if
+ ; given
- Data_Get_Struct(data, type, sval)
+ For example, "12" means that the method requires at least one
+ argument, and at most receives three (1+2) arguments. So, the format
+ string must be followed by three variable references, which are to be
+ assigned to captured arguments. For omitted arguments, variables are
+ set to Qnil. NULL can be put in place of a variable reference, which
+ means the corresponding captured argument(s) should be just dropped.
-data¤«¤étype·¿¤Î¥Ý¥¤¥ó¥¿¤ò¼è¤ê½Ð¤·ÊÑ¿ôsval¤ËÂåÆþ¤¹¤ë¥Þ¥¯¥í¡¥
+ The number of given arguments, excluding an option hash or iterator
+ block, is returned.
-** ¥¯¥é¥¹/¥â¥¸¥å¡¼¥ëÄêµÁ
+== Invoking Ruby method
- VALUE rb_define_class(char *name, VALUE super)
+VALUE rb_funcall(VALUE recv, ID mid, int narg, ...) ::
-super¤Î¥µ¥Ö¥¯¥é¥¹¤È¤·¤Æ¿·¤·¤¤ruby¥¯¥é¥¹¤òÄêµÁ¤¹¤ë¡¥
+ Invokes a method. To retrieve mid from a method name, use rb_intern().
+ Able to call even private/protected methods.
- VALUE rb_define_class_under(VALUE module, char *name, VALUE super)
+VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv) ::
+VALUE rb_funcallv(VALUE recv, ID mid, int argc, VALUE *argv) ::
-super¤Î¥µ¥Ö¥¯¥é¥¹¤È¤·¤Æ¿·¤·¤¤ruby¥¯¥é¥¹¤òÄêµÁ¤·¡¤module¤ÎÄê
-¿ô¤È¤·¤ÆÄêµÁ¤¹¤ë¡¥
+ Invokes a method, passing arguments as an array of values.
+ Able to call even private/protected methods.
- VALUE rb_define_module(char *name)
+VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, VALUE *argv) ::
-¿·¤·¤¤ruby¥â¥¸¥å¡¼¥ë¤òÄêµÁ¤¹¤ë¡¥
+ Invokes a method, passing arguments as an array of values.
+ Able to call only public methods.
- VALUE rb_define_module_under(VALUE module, char *name, VALUE super)
+VALUE rb_eval_string(const char *str) ::
-¿·¤·¤¤ruby¥â¥¸¥å¡¼¥ë¤òÄêµÁ¤·¡¤module¤ÎÄê¿ô¤È¤·¤ÆÄêµÁ¤¹¤ë¡¥
+ Compiles and executes the string as a Ruby program.
- void rb_include_module(VALUE class, VALUE module)
+ID rb_intern(const char *name) ::
-¥â¥¸¥å¡¼¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¡¥class¤¬¤¹¤Ç¤Ëmodule¤ò¥¤¥ó¥¯¥ë¡¼
-¥É¤·¤Æ¤¤¤ë»þ¤Ë¤Ï²¿¤â¤·¤Ê¤¤(¿½Å¥¤¥ó¥¯¥ë¡¼¥É¤Î¶Ø»ß)¡¥
+ Returns ID corresponding to the name.
- void rb_extend_object(VALUE object, VALUE module)
+char *rb_id2name(ID id) ::
-¥ª¥Ö¥¸¥§¥¯¥È¤ò¥â¥¸¥å¡¼¥ë(¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É)¤Ç³ÈÄ¥¤¹¤ë¡¥
+ Returns the name corresponding ID.
-** Âç°èÊÑ¿ôÄêµÁ
+char *rb_class2name(VALUE klass) ::
- void rb_define_variable(char *name, VALUE *var)
+ Returns the name of the class.
-ruby¤ÈC¤È¤Ç¶¦Í­¤¹¤ë¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥ÊÑ¿ô̾¤¬`$'¤Ç»Ï
-¤Þ¤é¤Ê¤¤»þ¤Ë¤Ï¼«Æ°Åª¤ËÄɲ䵤ì¤ë¡¥name¤È¤·¤Æruby¤Î¼±Ê̻ҤȤ·
-¤Æµö¤µ¤ì¤Ê¤¤Ê¸»ú(Î㤨¤Ð` ')¤ò´Þ¤à¾ì¹ç¤Ë¤Ïruby¥×¥í¥°¥é¥à¤«¤é
-¤Ï¸«¤¨¤Ê¤¯¤Ê¤ë¡¥
+int rb_respond_to(VALUE object, ID id) ::
- void rb_define_readonly_variable(char *name, VALUE *var)
+ Returns true if the object responds to the message specified by id.
-ruby¤ÈC¤È¤Ç¶¦Í­¤¹¤ëread only¤Î¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥read
-only¤Ç¤¢¤ë¤³¤È°Ê³°¤Ïrb_define_variable()¤ÈƱ¤¸¡¥
+== Instance Variables
- void rb_define_virtual_variable(char *name,
- VALUE (*getter)(), VALUE (*setter)())
+VALUE rb_iv_get(VALUE obj, const char *name) ::
-´Ø¿ô¤Ë¤è¤Ã¤Æ¼Â¸½¤µ¤ì¤ërubyÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥ÊÑ¿ô¤¬»²¾È¤µ¤ì¤¿»þ
-¤Ë¤Ïgetter¤¬¡¤ÊÑ¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì¤¿»þ¤Ë¤Ïsetter¤¬¸Æ¤Ð¤ì¤ë¡¥
+ Retrieve the value of the instance variable. If the name is not
+ prefixed by `@', that variable shall be inaccessible from Ruby.
- void rb_define_hooked_variable(char *name, VALUE *var,
- VALUE (*getter)(), VALUE (*setter)())
+VALUE rb_iv_set(VALUE obj, const char *name, VALUE val) ::
-´Ø¿ô¤Ë¤è¤Ã¤Æhook¤Î¤Ä¤±¤é¤ì¤¿¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤òÄêµÁ¤¹¤ë¡¥ÊÑ¿ô¤¬
-»²¾È¤µ¤ì¤¿»þ¤Ë¤Ïgetter¤¬¡¤´Ø¿ô¤ËÃͤ¬¥»¥Ã¥È¤µ¤ì¤¿»þ¤Ë¤Ïsetter
-¤¬¸Æ¤Ð¤ì¤ë¡¥getter¤äsetter¤Ë0¤ò»ØÄꤷ¤¿»þ¤Ë¤Ïhook¤ò»ØÄꤷ¤Ê
-¤¤¤Î¤ÈƱ¤¸»ö¤Ë¤Ê¤ë¡¥
+ Sets the value of the instance variable.
- void rb_global_variable(VALUE *var)
+== Control Structure
-GC¤Î¤¿¤á¡¤ruby¥×¥í¥°¥é¥à¤«¤é¤Ï¥¢¥¯¥»¥¹¤µ¤ì¤Ê¤¤¤¬, ruby¥ª¥Ö¥¸¥§
-¥¯¥È¤ò´Þ¤àÂç°èÊÑ¿ô¤ò¥Þ¡¼¥¯¤¹¤ë¡¥
+VALUE rb_block_call(VALUE recv, ID mid, int argc, VALUE * argv, VALUE (*func) (ANYARGS), VALUE data2) ::
-** ¥¯¥é¥¹Äê¿ô
+ Calls a method on the recv, with the method name specified by the
+ symbol mid, with argc arguments in argv, supplying func as the
+ block. When func is called as the block, it will receive the value
+ from yield as the first argument, and data2 as the second argument.
+ When yielded with multiple values (in C, rb_yield_values(),
+ rb_yield_values2() and rb_yield_splat()), data2 is packed as an Array,
+ whereas yielded values can be gotten via argc/argv of the third/fourth
+ arguments.
- void rb_define_const(VALUE class, char *name, VALUE val)
+[OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2) ::
-¥¯¥é¥¹Äê¿ô¤òÄêµÁ¤¹¤ë¡¥
+ Calls the function func1, supplying func2 as the block. func1 will be
+ called with the argument arg1. func2 receives the value from yield as
+ the first argument, arg2 as the second argument.
- void rb_define_global_const(char *name, VALUE val)
+ When rb_iterate is used in 1.9, func1 has to call some Ruby-level method.
+ This function is obsolete since 1.9; use rb_block_call instead.
-Âç°èÄê¿ô¤òÄêµÁ¤¹¤ë¡¥
+VALUE rb_yield(VALUE val) ::
- rb_define_const(cKernal, name, val)
+ Evaluates the block with value val.
-¤ÈƱ¤¸°ÕÌ£¡¥
+VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
-** ¥á¥½¥Ã¥ÉÄêµÁ
+ Calls the function func1, with arg1 as the argument. If an exception
+ occurs during func1, it calls func2 with arg2 as the argument. The
+ return value of rb_rescue() is the return value from func1 if no
+ exception occurs, from func2 otherwise.
- rb_define_method(VALUE class, char *name, VALUE (*func)(), int argc)
+VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
-¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¡¥argc¤Ïself¤ò½ü¤¯°ú¿ô¤Î¿ô¡¥argc¤¬-1¤Î»þ,
-´Ø¿ô¤Ë¤Ï°ú¿ô¤Î¿ô(self¤ò´Þ¤Þ¤Ê¤¤)¤òÂè1°ú¿ô, °ú¿ô¤ÎÇÛÎó¤òÂè2°ú
-¿ô¤È¤¹¤ë·Á¼°¤ÇÍ¿¤¨¤é¤ì¤ë(Âè3°ú¿ô¤Ïself)¡¥argc¤¬-2¤Î»þ, Âè1°ú
-¿ô¤¬self, Âè2°ú¿ô¤¬args(args¤Ï°ú¿ô¤ò´Þ¤àruby¤ÎÇÛÎó)¤È¤¤¤¦·Á
-¼°¤ÇÍ¿¤¨¤é¤ì¤ë¡¥
+ Calls the function func1 with arg1 as the argument, then calls func2
+ with arg2 if execution terminated. The return value from
+ rb_ensure() is that of func1 when no exception occurred.
- rb_define_private_method(VALUE class, char *name, VALUE (*func)(), int argc)
+VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state) ::
-private¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¡¥°ú¿ô¤Ïrb_define_method()¤ÈƱ¤¸¡¥
+ Calls the function func with arg as the argument. If no exception
+ occurred during func, it returns the result of func and *state is zero.
+ Otherwise, it returns Qnil and sets *state to nonzero. If state is
+ NULL, it is not set in both cases.
+ You have to clear the error info with rb_set_errinfo(Qnil) when
+ ignoring the caught exception.
- rb_define_singleton_method(VALUE class, char *name, VALUE (*func)(), int argc)
+void rb_jump_tag(int state) ::
-ÆÃ°Û¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ë¡¥°ú¿ô¤Ïrb_define_method()¤ÈƱ¤¸¡¥
+ Continues the exception caught by rb_protect() and rb_eval_string_protect().
+ state must be the returned value from those functions. This function
+ never return to the caller.
- rb_scan_args(int atgc, VALUE *argv, char *fmt, ...)
+void rb_iter_break() ::
-argc,argv·Á¼°¤ÇÍ¿¤¨¤é¤ì¤¿°ú¿ô¤òʬ²ò¤¹¤ë¡¥fmt¤Ïɬ¿Ü°ú¿ô¤Î¿ô,
-Éղðú¿ô¤Î¿ô, »Ä¤ê¤Î°ú¿ô¤¬¤¢¤ë¤«¤ò»ØÄꤹ¤ëʸ»úÎó¤Ç, "¿ô»ú¿ô
-»ú*"¤È¤¤¤¦·Á¼°¤Ç¤¢¤ë¡¥ 2 ÈÖÌܤοô»ú¤È"*"¤Ï¤½¤ì¤¾¤ì¾Êά²Äǽ¤Ç
-¤¢¤ë¡¥É¬¿Ü°ú¿ô¤¬°ì¤Ä¤â¤Ê¤¤¾ì¹ç¤Ï0¤ò»ØÄꤹ¤ë¡¥Âè3°ú¿ô°Ê¹ß¤ÏÊÑ
-¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç, ³ºÅö¤¹¤ëÍ×ÁǤ¬¤½¤ÎÊÑ¿ô¤Ë³ÊǼ¤µ¤ì¤ë¡¥Éղðú
-¿ô¤ËÂбþ¤¹¤ë°ú¿ô¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤ÏÊÑ¿ô¤ËQnil¤¬ÂåÆþ¤µ¤ì
-¤ë¡¥
+ Exits from the current innermost block. This function never return to
+ the caller.
-** ruby¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·
+void rb_iter_break_value(VALUE value) ::
- VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
+ Exits from the current innermost block with the value. The block will
+ return the given argument value. This function never return to the
+ caller.
-¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¡¥Ê¸»úÎ󤫤émid¤òÆÀ¤ë¤¿¤á¤Ë¤Ïrb_intern()¤ò»È¤¦¡¥
+== Exceptions and Errors
- VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
+void rb_warn(const char *fmt, ...) ::
-¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¡¥°ú¿ô¤òargc,argv·Á¼°¤ÇÅϤ¹¡¥
+ Prints a warning message according to a printf-like format.
- VALUE rb_eval_string(char *str)
+void rb_warning(const char *fmt, ...) ::
-ʸ»úÎó¤òruby¤È¥¹¥¯¥ê¥×¥È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¡¦¼Â¹Ô¤¹¤ë¡¥
+ Prints a warning message according to a printf-like format, if
+ $VERBOSE is true.
- ID rb_intern(char *name)
+void rb_raise(rb_eRuntimeError, const char *fmt, ...) ::
-ʸ»úÎó¤ËÂбþ¤¹¤ëID¤òÊÖ¤¹¡¥
+ Raises RuntimeError. The fmt is a format string just like printf().
- char *rb_id2name(ID id)
+void rb_raise(VALUE exception, const char *fmt, ...) ::
-ID¤ËÂбþ¤¹¤ëʸ»úÎó¤òÊÖ¤¹(¥Ç¥Ð¥Ã¥°ÍÑ)¡¥
+ Raises a class exception. The fmt is a format string just like printf().
- char *rb_class2name(VALUE class)
+void rb_fatal(const char *fmt, ...) ::
-class¤Î̾Á°¤òÊÖ¤¹(¥Ç¥Ð¥Ã¥°ÍÑ)¡¥class¤¬Ì¾Á°¤ò»ý¤¿¤Ê¤¤»þ¤Ë¤Ï,
-ÁÄÀè¤òÁ̤äÆÌ¾Á°¤ò»ý¤Ä¥¯¥é¥¹¤Î̾Á°¤òÊÖ¤¹¡¥
+ Raises a fatal error, terminates the interpreter. No exception handling
+ will be done for fatal errors, but ensure blocks will be executed.
-** ¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô
+void rb_bug(const char *fmt, ...) ::
- VALUE rb_iv_get(VALUE obj, char *name)
+ Terminates the interpreter immediately. This function should be
+ called under the situation caused by the bug in the interpreter. No
+ exception handling nor ensure execution will be done.
-obj¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤ÎÃͤòÆÀ¤ë¡¥`@'¤Ç»Ï¤Þ¤é¤Ê¤¤¥¤¥ó¥¹¥¿¥ó¥¹
-ÊÑ¿ô¤Ï ruby¥×¥í¥°¥é¥à¤«¤é¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤¡Ö±£¤ì¤¿¡×¥¤¥ó¥¹¥¿
-¥ó¥¹ÊÑ¿ô¤Ë¤Ê¤ë¡¥
+Note: In the format string, %i is used for Object#to_s (or Object#inspect if
+'+' flag is set) output (and related argument must be a VALUE). For integers
+in format strings, use %d.
- VALUE rb_iv_set(VALUE obj, char *name, VALUE val)
+== Initialize and Start the Interpreter
-obj¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊÑ¿ô¤òval¤Ë¥»¥Ã¥È¤¹¤ë¡¥
+The embedding API functions are below (not needed for extension libraries):
-** À©¸æ¹½Â¤
+void ruby_init() ::
- VALUE rb_iterate(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2)
+ Initializes the interpreter.
-func2¤ò¥Ö¥í¥Ã¥¯¤È¤·¤ÆÀßÄꤷ, func1¤ò¥¤¥Æ¥ì¡¼¥¿¤È¤·¤Æ¸Æ¤Ö¡¥
-func1¤Ë¤Ï arg1¤¬°ú¿ô¤È¤·¤ÆÅϤµ¤ì, func2¤Ë¤ÏÂè1°ú¿ô¤Ë¥¤¥Æ¥ì¡¼
-¥¿¤«¤éÍ¿¤¨¤é¤ì¤¿ÃÍ, Âè2°ú¿ô¤Ëarg2¤¬ÅϤµ¤ì¤ë¡¥
-
- VALUE rb_yield(VALUE val)
+void ruby_options(int argc, char **argv) ::
-val¤òÃͤȤ·¤Æ¥¤¥Æ¥ì¡¼¥¿¥Ö¥í¥Ã¥¯¤ò¸Æ¤Ó½Ð¤¹¡¥
+ Process command line arguments for the interpreter.
- VALUE rb_rescue(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2)
+void ruby_run() ::
-´Ø¿ôfunc1¤òarg1¤ò°ú¿ô¤Ë¸Æ¤Ó½Ð¤¹¡¥func1¤Î¼Â¹ÔÃæ¤ËÎã³°¤¬È¯À¸¤·
-¤¿»þ¤Ë¤Ï func2¤òarg2¤ò°ú¿ô¤È¤·¤Æ¸Æ¤Ö¡¥Ìá¤êÃͤÏÎã³°¤¬È¯À¸¤·¤Ê
-¤«¤Ã¤¿»þ¤Ïfunc1¤ÎÌá¤êÃÍ, Îã³°¤¬È¯À¸¤·¤¿»þ¤Ë¤Ïfunc2¤ÎÌá¤êÃͤÇ
-¤¢¤ë¡¥
+ Starts execution of the interpreter.
- VALUE rb_ensure(VALUE (*func1)(), void *arg1, void (*func2)(), void *arg2)
+void ruby_script(char *name) ::
-´Ø¿ôfunc1¤òarg1¤ò°ú¿ô¤È¤·¤Æ¼Â¹Ô¤·, ¼Â¹Ô½ªÎ»¸å(¤¿¤È¤¨Îã³°¤¬È¯
-À¸¤·¤Æ¤â) func2¤òarg2¤ò°ú¿ô¤È¤·¤Æ¼Â¹Ô¤¹¤ë¡¥Ìá¤êÃͤÏfunc1¤ÎÌá
-¤êÃͤǤ¢¤ë(Îã³°¤¬È¯À¸¤·¤¿»þ¤ÏÌá¤é¤Ê¤¤)¡¥
+ Specifies the name of the script ($0).
-** Îã³°¡¦¥¨¥é¡¼
+== Hooks for the Interpreter Events
- void Warning(char *fmt, ...)
+ void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
+ VALUE data)
-verbose»þ¤Ëɸ½à¥¨¥é¡¼½ÐÎϤ˷ٹð¾ðÊó¤òɽ¼¨¤¹¤ë¡¥°ú¿ô¤Ïprintf()¤ÈƱ¤¸¡¥
+Adds a hook function for the specified interpreter events.
+events should be OR'ed value of:
- void Fail(char *fmt, ...)
+ RUBY_EVENT_LINE
+ RUBY_EVENT_CLASS
+ RUBY_EVENT_END
+ RUBY_EVENT_CALL
+ RUBY_EVENT_RETURN
+ RUBY_EVENT_C_CALL
+ RUBY_EVENT_C_RETURN
+ RUBY_EVENT_RAISE
+ RUBY_EVENT_ALL
-Îã³°¤òȯÀ¸¤µ¤»¤ë¡¥°ú¿ô¤Ïprintf()¤ÈƱ¤¸¡¥
+The definition of rb_event_hook_func_t is below:
- void Fatal(char *fmt, ...)
+ typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,
+ VALUE self, ID id, VALUE klass)
-Ã×̿ŪÎã³°¤òȯÀ¸¤µ¤»¤ë¡¥Ä̾ï¤ÎÎã³°½èÍý¤Ï¹Ô¤Ê¤ï¤ì¤º, ¥¤¥ó¥¿¡¼
-¥×¥ê¥¿¤¬½ªÎ»¤¹¤ë(¤¿¤À¤·ensure¤Ç»ØÄꤵ¤ì¤¿¥³¡¼¥É¤Ï½ªÎ»Á°¤Ë¼Â
-¹Ô¤µ¤ì¤ë)¡¥
+The third argument `data' to rb_add_event_hook() is passed to the hook
+function as the second argument, which was the pointer to the current
+NODE in 1.8. See RB_EVENT_HOOKS_HAVE_CALLBACK_DATA below.
- void Bug(char *fmt, ...)
+ int rb_remove_event_hook(rb_event_hook_func_t func)
-¥¤¥ó¥¿¡¼¥×¥ê¥¿¤Ê¤É¥×¥í¥°¥é¥à¤Î¥Ð¥°¤Ç¤·¤«È¯À¸¤¹¤ë¤Ï¤º¤Î¤Ê¤¤¾õ
-¶·¤Î»þ¸Æ¤Ö¡¥¥¤¥ó¥¿¡¼¥×¥ê¥¿¤Ï¥³¥¢¥À¥ó¥×¤·Ä¾¤Á¤Ë½ªÎ»¤¹¤ë¡¥Îã³°
-½èÍý¤Ï°ìÀڹԤʤï¤ì¤Ê¤¤¡¥
+Removes the specified hook function.
-** ruby¤Î½é´ü²½¡¦¼Â¹Ô
+== Macros for Compatibility
-ruby¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËËä¤á¹þ¤à¾ì¹ç¤Ë¤Ï°Ê²¼¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹
-¤ò»È¤¦¡¥Ä̾ï¤Î³ÈÄ¥¥â¥¸¥å¡¼¥ë¤Ë¤ÏɬÍפʤ¤¡¥
+Some macros to check API compatibilities are available by default.
- void ruby_init(int argc, char **argv, char **envp)
+NORETURN_STYLE_NEW ::
-ruby¥¤¥ó¥¿¥×¥ê¥¿¤Î½é´ü²½¤ò¹Ô¤Ê¤¦¡¥
+ Means that NORETURN macro is functional style instead of prefix.
- void ruby_run()
+HAVE_RB_DEFINE_ALLOC_FUNC ::
-ruby¥¤¥ó¥¿¥×¥ê¥¿¤ò¼Â¹Ô¤¹¤ë¡¥
+ Means that function rb_define_alloc_func() is provided, that means the
+ allocation framework is used. This is same as the result of
+ have_func("rb_define_alloc_func", "ruby.h").
- void ruby_script(char *name)
+HAVE_RB_REG_NEW_STR ::
-ruby¤Î¥¹¥¯¥ê¥×¥È̾($0)¤òÀßÄꤹ¤ë¡¥
+ Means that function rb_reg_new_str() is provided, that creates Regexp
+ object from String object. This is same as the result of
+ have_func("rb_reg_new_str", "ruby.h").
-Appendix B. extconf.rb¤Ç»È¤¨¤ë´Ø¿ô¤¿¤Á
+HAVE_RB_IO_T ::
-extconf.rb¤ÎÃæ¤Ç¤ÏÍøÍѲÄǽ¤Ê¥³¥ó¥Ñ¥¤¥ë¾ò·ï¥Á¥§¥Ã¥¯¤Î´Ø¿ô¤Ï°Ê
-²¼¤ÎÄ̤ê¤Ç¤¢¤ë¡¥
+ Means that type rb_io_t is provided.
- have_library(lib, func)
+USE_SYMBOL_AS_METHOD_NAME ::
-´Ø¿ôfunc¤òÄêµÁ¤·¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥êlib¤Î¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡¥¥é
-¥¤¥Ö¥é¥ê¤¬Â¸ºß¤¹¤ë»þ¡¤TRUE¤òÊÖ¤¹¡¥
+ Means that Symbols will be returned as method names, e.g.,
+ Module#methods, #singleton_methods and so on.
- have_func(func)
+HAVE_RUBY_*_H ::
-´Ø¿ôfunc¤Î¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡¥func¤¬É¸½à¤Ç¤Ï¥ê¥ó¥¯¤µ¤ì¤Ê¤¤¥é
-¥¤¥Ö¥é¥êÆâ¤Î¤â¤Î¤Ç¤¢¤ë»þ¤Ë¤ÏÀè¤Ëhave_library¤Ç¤½¤Î¥é¥¤¥Ö¥é¥ê
-¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤ª¤¯»ö¡¥´Ø¿ô¤¬Â¸ºß¤¹¤ë»þTRUE¤òÊÖ¤¹¡¥
+ Defined in ruby.h and means corresponding header is available. For
+ instance, when HAVE_RUBY_ST_H is defined you should use ruby/st.h not
+ mere st.h.
- have_header(header)
+RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ::
-¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡¥¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë
-»þTRUE¤òÊÖ¤¹¡¥
+ Means that rb_add_event_hook() takes the third argument `data', to be
+ passed to the given event hook function.
- create_makefile(target)
+= Appendix C. Functions available for use in extconf.rb
-³ÈÄ¥¥â¥¸¥å¡¼¥ëÍѤÎMakefile¤òÀ¸À®¤¹¤ë¡¥¤³¤Î´Ø¿ô¤ò¸Æ¤Ð¤Ê¤±¤ì¤Ð
-¤½¤Î¥â¥¸¥å¡¼¥ë¤Ï¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Ê¤¤¡¥target¤Ï¥â¥¸¥å¡¼¥ë̾¤òɽ
-¤¹¡¥
+See documentation for {mkmf}[rdoc-ref:MakeMakefile].
/*
* Local variables:
- * fill-column: 60
+ * fill-column: 70
* end:
*/
diff --git a/README.EXT.ja b/README.EXT.ja
new file mode 100644
index 0000000000..9bba51a0d0
--- /dev/null
+++ b/README.EXT.ja
@@ -0,0 +1,1634 @@
+# README.EXT.ja - -*- RDoc -*- created at: Mon Aug 7 16:45:54 JST 1995
+
+Rubyã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã®ä½œã‚Šæ–¹ã‚’説明ã—ã¾ã™ï¼Ž
+
+= 基礎知識
+
+Cã®å¤‰æ•°ã«ã¯åž‹ãŒã‚り,データã«ã¯åž‹ãŒã‚りã¾ã›ã‚“.ã§ã™ã‹ã‚‰ï¼ŒãŸ
+ã¨ãˆã°ãƒã‚¤ãƒ³ã‚¿ã‚’intã®å¤‰æ•°ã«ä»£å…¥ã™ã‚‹ã¨ï¼Œãã®å€¤ã¯æ•´æ•°ã¨ã—ã¦å–
+り扱ã‚れã¾ã™ï¼Žé€†ã«Rubyã®å¤‰æ•°ã«ã¯åž‹ãŒãªã,データã«åž‹ãŒã‚りã¾
+ã™ï¼Žã“ã®é•ã„ã®ãŸã‚,Cã¨Rubyã¯ç›¸äº’ã«å¤‰æ›ã—ãªã‘れã°ï¼ŒãŠäº’ã„ã®
+データをアクセスã§ãã¾ã›ã‚“.
+
+Rubyã®ãƒ‡ãƒ¼ã‚¿ã¯VALUEã¨ã„ã†Cã®åž‹ã§è¡¨ç¾ã•れã¾ã™ï¼ŽVALUEåž‹ã®ãƒ‡ãƒ¼
+ã‚¿ã¯ãã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—を自分ã§çŸ¥ã£ã¦ã„ã¾ã™ï¼Žã“ã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã¨
+ã„ã†ã®ã¯ãƒ‡ãƒ¼ã‚¿(オブジェクト)ã®å®Ÿéš›ã®æ§‹é€ ã‚’æ„味ã—ã¦ã„ã¦ï¼ŒRuby
+ã®ã‚¯ãƒ©ã‚¹ã¨ã¯ã¾ãŸé•ã£ãŸã‚‚ã®ã§ã™ï¼Ž
+
+VALUEã‹ã‚‰Cã«ã¨ã£ã¦æ„味ã®ã‚るデータをå–り出ã™ãŸã‚ã«ã¯
+
+1. VALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—を知る
+2. VALUEã‚’Cã®ãƒ‡ãƒ¼ã‚¿ã«å¤‰æ›ã™ã‚‹
+
+ã®ä¸¡æ–¹ãŒå¿…è¦ã§ã™ï¼Ž(1)を忘れるã¨é–“é•ã£ãŸãƒ‡ãƒ¼ã‚¿ã®å¤‰æ›ãŒè¡Œã‚れ
+ã¦ï¼Œæœ€æ‚ªãƒ—ログラムãŒcore dumpã—ã¾ã™ï¼Ž
+
+== データタイプ
+
+Rubyã«ã¯ãƒ¦ãƒ¼ã‚¶ãŒä½¿ã†å¯èƒ½æ€§ã®ã‚る以下ã®ã‚¿ã‚¤ãƒ—ãŒã‚りã¾ã™ï¼Ž
+
+T_NIL :: nil
+T_OBJECT :: 通常ã®ã‚ªãƒ–ジェクト
+T_CLASS :: クラス
+T_MODULE :: モジュール
+T_FLOAT :: æµ®å‹•å°æ•°ç‚¹æ•°
+T_STRING :: 文字列
+T_REGEXP :: æ­£è¦è¡¨ç¾
+T_ARRAY :: é…列
+T_HASH :: 連想é…列
+T_STRUCT :: (Rubyã®)構造体
+T_BIGNUM :: 多å€é•·æ•´æ•°
+T_FIXNUM :: Fixnum(31bitã¾ãŸã¯63bité•·æ•´æ•°)
+T_COMPLEX :: 複素数
+T_RATIONAL :: æœ‰ç†æ•°
+T_FILE :: 入出力
+T_TRUE :: 真
+T_FALSE :: å½
+T_DATA :: データ
+T_SYMBOL :: シンボル
+
+ãã®ä»–ã«å†…部ã§åˆ©ç”¨ã•れã¦ã„る以下ã®ã‚¿ã‚¤ãƒ—ãŒã‚りã¾ã™ï¼Ž
+
+ T_ICLASS
+ T_MATCH
+ T_UNDEF
+ T_NODE
+ T_ZOMBIE
+
+ã»ã¨ã‚“ã©ã®ã‚¿ã‚¤ãƒ—ã¯Cã®æ§‹é€ ä½“ã§å®Ÿè£…ã•れã¦ã„ã¾ã™ï¼Ž
+
+== VALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹
+
+ruby.hã§ã¯TYPE()ã¨ã„ã†ãƒžã‚¯ãƒ­ãŒå®šç¾©ã•れã¦ã„ã¦ï¼ŒVALUEã®ãƒ‡ãƒ¼ã‚¿
+タイプを知るã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼ŽTYPE()マクロã¯ä¸Šã§ç´¹ä»‹ã—ãŸT_XXXX
+ã®å½¢å¼ã®å®šæ•°ã‚’è¿”ã—ã¾ã™ï¼ŽVALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã«å¿œã˜ã¦å‡¦ç†ã™ã‚‹
+å ´åˆã«ã¯ï¼ŒTYPE()ã®å€¤ã§åˆ†å²ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ï¼Ž
+
+ switch (TYPE(obj)) {
+ case T_FIXNUM:
+ /* FIXNUMã®å‡¦ç† */
+ break;
+ case T_STRING:
+ /* 文字列ã®å‡¦ç† */
+ break;
+ case T_ARRAY:
+ /* é…列ã®å‡¦ç† */
+ break;
+ default:
+ /* 例外を発生ã•ã›ã‚‹ */
+ rb_raise(rb_eTypeError, "not valid value");
+ break;
+ }
+
+ãれã¨ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ï¼Œæ­£ã—ããªã‘れã°ä¾‹å¤–を発生ã™
+る関数ãŒç”¨æ„ã•れã¦ã„ã¾ã™ï¼Ž
+
+ void Check_Type(VALUE value, int type)
+
+ã“ã®é–¢æ•°ã¯valueãŒtypeã§ç„¡ã‘れã°ï¼Œä¾‹å¤–を発生ã•ã›ã¾ã™ï¼Žå¼•æ•°ã¨
+ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸVALUEã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ãŒæ­£ã—ã„ã‹ã©ã†ã‹ãƒã‚§ãƒƒã‚¯ã™
+ã‚‹ãŸã‚ã«ã¯ï¼Œã“ã®é–¢æ•°ã‚’使ã„ã¾ã™ï¼Ž
+
+FIXNUMã¨NILã«é–¢ã—ã¦ã¯ã‚ˆã‚Šé«˜é€Ÿãªåˆ¤åˆ¥ãƒžã‚¯ãƒ­ãŒç”¨æ„ã•れã¦ã„ã¾ã™ï¼Ž
+
+ FIXNUM_P(obj)
+ NIL_P(obj)
+
+== VALUEã‚’Cã®ãƒ‡ãƒ¼ã‚¿ã«å¤‰æ›ã™ã‚‹
+
+データタイプãŒT_NIL,T_FALSE,T_TRUEã§ã‚る時,データã¯ãれãž
+れnil,false,trueã§ã™ï¼Žã“ã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã®ã‚ªãƒ–ジェクトã¯ã²ã¨
+ã¤ãšã¤ã—ã‹å­˜åœ¨ã—ã¾ã›ã‚“.
+
+データタイプãŒT_FIXNUMã®æ™‚,ã“れã¯31bitã¾ãŸã¯63bitã®ã‚µã‚¤ã‚ºã‚’
+æŒã¤æ•´æ•°ã§ã™ï¼Žlongã®ã‚µã‚¤ã‚ºãŒ32bitã®ãƒ—ラットフォームã§ã‚れã°
+31bitã«ï¼Œlongã®ã‚µã‚¤ã‚ºãŒ64bitã®ãƒ—ラットフォームã§ã‚れã°63bit
+ã«ãªã‚Šã¾ã™. FIXNUM ã‚’ C ã®æ•´æ•°ã«å¤‰æ›ã™ã‚‹ãŸã‚ã«ã¯ãƒžã‚¯ãƒ­
+「FIX2INT()ã€ã¾ãŸã¯ã€ŒFIX2LONG()ã€ã‚’使ã„ã¾ã™ï¼Žã“れらã®ãƒžã‚¯ãƒ­
+を使用ã™ã‚‹éš›ã«ã¯äº‹å‰ã«ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ãŒFIXNUMã§ã‚ã‚‹ã“ã¨ã‚’確èªã™
+ã‚‹å¿…è¦ãŒã‚りã¾ã™ãŒï¼Œæ¯”較的高速ã«å¤‰æ›ã‚’行ã†ã“ã¨ãŒã§ãã¾ã™ï¼Žã¾
+ãŸï¼Œã€ŒFIX2LONG()ã€ã¯ä¾‹å¤–を発生ã—ã¾ã›ã‚“ãŒï¼Œã€ŒFIX2INT()ã€ã¯å¤‰
+æ›çµæžœãŒintã®ã‚µã‚¤ã‚ºã«åŽã¾ã‚‰ãªã„å ´åˆã«ã¯ä¾‹å¤–を発生ã—ã¾ã™ï¼Ž
+ãれã‹ã‚‰ï¼ŒFIXNUMã«é™ã‚‰ãšRubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ•´æ•°ã«å¤‰æ›ã™ã‚‹
+「NUM2INT()ã€ãŠã‚ˆã³ã€ŒNUM2LONG()ã€ã¨ã„ã†ãƒžã‚¯ãƒ­ãŒã‚りã¾ã™ï¼Žã“
+れらã®ãƒžã‚¯ãƒ­ã¯ãƒžã‚¯ãƒ­ã¯ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã®ãƒã‚§ãƒƒã‚¯ç„¡ã—ã§ä½¿ãˆã¾ã™
+(æ•´æ•°ã«å¤‰æ›ã§ããªã„å ´åˆã«ã¯ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹)ï¼ŽåŒæ§˜ã«ãƒã‚§ãƒƒã‚¯ç„¡
+ã§ä½¿ãˆã‚‹å¤‰æ›ãƒžã‚¯ãƒ­ã¯doubleã‚’å–り出ã™ã€ŒNUM2DBL()ã€ãŒã‚りã¾ã™ï¼Ž
+
+char* ã‚’å–り出ã™å ´åˆï¼Œ StringValue() 㨠StringValuePtr()
+を使ã„ã¾ã™ï¼Ž
+StringValue(var) 㯠var ㌠String
+ã§ã‚れã°ä½•ã‚‚ã›ãšï¼Œãã†ã§ãªã‘れ㰠var ã‚’ var.to_str() ã®çµæžœ
+ã«ç½®ãæ›ãˆã‚‹ãƒžã‚¯ãƒ­ï¼ŒStringValuePtr(var) ã¯åŒæ§˜ã« var ã‚’
+String ã«ç½®ãæ›ãˆã¦ã‹ã‚‰ var ã®ãƒã‚¤ãƒˆåˆ—表ç¾ã«å¯¾ã™ã‚‹ char* ã‚’
+è¿”ã™ãƒžã‚¯ãƒ­ã§ã™ï¼Žvar ã®å†…å®¹ã‚’ç›´æŽ¥ç½®ãæ›ãˆã‚‹å‡¦ç†ãŒå…¥ã‚‹ã®ã§ï¼Œ
+var 㯠lvalue ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼Ž
+ã¾ãŸï¼ŒStringValuePtr() ã«é¡žä¼¼ã—㟠StringValueCStr() ã¨ã„ã†ãƒž
+クロもã‚りã¾ã™ï¼ŽStringValueCStr(var) 㯠var ã‚’ String ã«ç½®ã
+æ›ãˆã¦ã‹ã‚‰ var ã®æ–‡å­—列表ç¾ã«å¯¾ã™ã‚‹ char* ã‚’è¿”ã—ã¾ã™ï¼Žè¿”ã•れ
+ã‚‹æ–‡å­—åˆ—ã®æœ«å°¾ã«ã¯ nul 文字ãŒä»˜åŠ ã•れã¾ã™ï¼ŽãªãŠï¼Œé€”中㫠nul
+文字ãŒå«ã¾ã‚Œã‚‹å ´åˆã¯ ArgumentError ãŒç™ºç”Ÿã—ã¾ã™ï¼Ž
+一方,StringValuePtr() ã§ã¯ï¼Œæœ«å°¾ã« nul 文字ãŒã‚ã‚‹ä¿è¨¼ã¯ãªã,
+途中㫠nul 文字ãŒå«ã¾ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ã‚‚ã‚りã¾ã™ï¼Ž
+
+ãれ以外ã®ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã¯å¯¾å¿œã™ã‚‹Cã®æ§‹é€ ä½“ãŒã‚りã¾ã™ï¼Žå¯¾å¿œã™
+る構造体ã®ã‚ã‚‹VALUEã¯ãã®ã¾ã¾ã‚­ãƒ£ã‚¹ãƒˆ(型変æ›)ã™ã‚Œã°æ§‹é€ ä½“ã®
+ãƒã‚¤ãƒ³ã‚¿ã«å¤‰æ›ã§ãã¾ã™ï¼Ž
+
+構造体ã¯ã€Œstruct RXxxxxã€ã¨ã„ã†åå‰ã§ruby.hã§å®šç¾©ã•れã¦ã„ã¾
+ã™ï¼Žä¾‹ãˆã°æ–‡å­—列ã¯ã€Œstruct RStringã€ã§ã™ï¼Žå®Ÿéš›ã«ä½¿ã†å¯èƒ½æ€§ãŒ
+ã‚ã‚‹ã®ã¯æ–‡å­—列ã¨é…列ãらã„ã ã¨æ€ã„ã¾ã™ï¼Ž
+
+ruby.hã§ã¯æ§‹é€ ä½“ã¸ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ãƒžã‚¯ãƒ­ã‚‚「RXXXXX()ã€(全部大文
+å­—ã«ã—ãŸã‚‚ã®)ã¨ã„ã†åå‰ã§æä¾›ã•れã¦ã„ã¾ã™(例: RSTRING()).ãŸ
+ã ã—ã€æ§‹é€ ä½“ã¸ã®ç›´æŽ¥ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯ã§ãã‚‹ã ã‘é¿ã‘,対応ã™ã‚‹
+rb_xxxx() ã¨ã„ã£ãŸé–¢æ•°ã‚’使ã†ã‚ˆã†ã«ã—ã¦ä¸‹ã•ã„.例ãˆã°ï¼Œé…列ã®
+è¦ç´ ã¸ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å ´åˆã¯ï¼Œrb_ary_entry(ary, offset),
+rb_ary_store(ary, offset, obj) を利用ã™ã‚‹ã‚ˆã†ã«ã—ã¦ä¸‹ã•ã„.
+
+構造体ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’å–り出ã™ãƒžã‚¯ãƒ­ãŒæä¾›ã•れã¦ã„ã¾ã™ï¼Žæ–‡å­—列
+strã®é•·ã•ã‚’å¾—ã‚‹ãŸã‚ã«ã¯ã€ŒRSTRING_LEN(str)ã€ã¨ã—,文字列strã‚’
+char*ã¨ã—ã¦å¾—ã‚‹ãŸã‚ã«ã¯ã€ŒRSTRING_PTR(str)ã€ã¨ã—ã¾ã™ï¼Ž
+
+Rubyã®æ§‹é€ ä½“を直接アクセスã™ã‚‹æ™‚ã«æ°—ã‚’ã¤ã‘ãªã‘れã°ãªã‚‰ãªã„ã“
+ã¨ã¯ï¼Œé…åˆ—ã‚„æ–‡å­—åˆ—ã®æ§‹é€ ä½“ã®ä¸­èº«ã¯å‚ç…§ã™ã‚‹ã ã‘ã§ï¼Œç›´æŽ¥å¤‰æ›´ã—
+ãªã„ã“ã¨ã§ã™ï¼Žç›´æŽ¥å¤‰æ›´ã—ãŸå ´åˆï¼Œã‚ªãƒ–ジェクトã®å†…å®¹ã®æ•´åˆæ€§ãŒ
+ã¨ã‚Œãªããªã£ã¦ï¼Œæ€ã‚ã¬ãƒã‚°ã®åŽŸå› ã«ãªã‚Šã¾ã™ï¼Ž
+
+== Cã®ãƒ‡ãƒ¼ã‚¿ã‚’VALUEã«å¤‰æ›ã™ã‚‹
+
+VALUEã®å®Ÿéš›ã®æ§‹é€ ã¯
+
+FIXNUMã®å ´åˆ ::
+
+ 1bit左シフトã—ã¦ï¼ŒLSBã‚’ç«‹ã¦ã‚‹ï¼Ž
+
+ãã®ä»–ã®ãƒã‚¤ãƒ³ã‚¿ã®å ´åˆ ::
+
+ ãã®ã¾ã¾VALUEã«ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ï¼Ž
+
+ã¨ãªã£ã¦ã„ã¾ã™ï¼Žã‚ˆã£ã¦ï¼ŒLSBã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚Œã°VALUEãŒFIXNUMã‹ã©
+ã†ã‹ã‚ã‹ã‚‹ã‚ã‘ã§ã™(ãƒã‚¤ãƒ³ã‚¿ã®LSBãŒç«‹ã£ã¦ã„ãªã„ã“ã¨ã‚’仮定ã—ã¦
+ã„ã‚‹).
+
+ã§ã™ã‹ã‚‰ï¼ŒFIXNUM以外ã®Rubyã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã®æ§‹é€ ä½“ã¯å˜ã«VALUE
+ã«ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ã ã‘ã§VALUEã«å¤‰æ›å‡ºæ¥ã¾ã™ï¼ŽãŸã ã—,任æ„ã®æ§‹é€ 
+体ãŒVALUEã«ã‚­ãƒ£ã‚¹ãƒˆå‡ºæ¥ã‚‹ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“.キャストã™ã‚‹ã®
+ã¯Rubyã®çŸ¥ã£ã¦ã„る構造体(ruby.hã§å®šç¾©ã•れã¦ã„ã‚‹struct RXxxx
+ã®ã‚‚ã®)ã ã‘ã§ã™ï¼Ž
+
+FIXNUMã«é–¢ã—ã¦ã¯å¤‰æ›ãƒžã‚¯ãƒ­ã‚’経由ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼ŽCã®æ•´æ•°
+ã‹ã‚‰VALUEã«å¤‰æ›ã™ã‚‹ãƒžã‚¯ãƒ­ã¯ä»¥ä¸‹ã®ã‚‚ã®ãŒã‚りã¾ã™ï¼Žå¿…è¦ã«å¿œã˜
+ã¦ä½¿ã„分ã‘ã¦ãã ã•ã„.
+
+INT2FIX() :: ã‚‚ã¨ã®æ•´æ•°ãŒ31bitã¾ãŸã¯63bit以内ã«åŽã¾ã‚‹è‡ªä¿¡
+ ãŒã‚る時
+INT2NUM() :: ä»»æ„ã®æ•´æ•°ã‹ã‚‰VALUEã¸
+
+INT2NUM()ã¯æ•´æ•°ãŒFIXNUMã®ç¯„囲ã«åŽã¾ã‚‰ãªã„å ´åˆï¼ŒBignumã«å¤‰æ›
+ã—ã¦ãれã¾ã™(ãŒï¼Œå°‘ã—é…ã„).
+
+== Rubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ“作ã™ã‚‹
+
+先程も述ã¹ãŸé€šã‚Šï¼ŒRubyã®æ§‹é€ ä½“をアクセスã™ã‚‹æ™‚ã«å†…å®¹ã®æ›´æ–°ã‚’
+行ã†ã“ã¨ã¯å‹§ã‚られã¾ã›ã‚“.ã§ï¼ŒRubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ“作ã™ã‚‹æ™‚ã«ã¯
+RubyãŒç”¨æ„ã—ã¦ã„る関数を用ã„ã¦ãã ã•ã„.
+
+ã“ã“ã§ã¯ã‚‚ã£ã¨ã‚‚使ã‚れるã§ã‚ã‚ã†æ–‡å­—列ã¨é…列ã®ç”Ÿæˆ/æ“作を行
+ã†é–¢æ•°ã‚’ã‚ã’ã¾ã™(全部ã§ã¯ãªã„ã§ã™).
+
+=== 文字列ã«å¯¾ã™ã‚‹é–¢æ•°
+
+rb_str_new(const char *ptr, long len) ::
+
+ æ–°ã—ã„Rubyã®æ–‡å­—列を生æˆã™ã‚‹ï¼Ž
+
+rb_str_new2(const char *ptr)
+rb_str_new_cstr(const char *ptr)
+
+ Cã®æ–‡å­—列ã‹ã‚‰Rubyã®æ–‡å­—列を生æˆã™ã‚‹ï¼Žã“ã®é–¢æ•°ã®æ©Ÿèƒ½ã¯
+ rb_str_new(ptr, strlen(ptr))ã¨åŒç­‰ã§ã‚る.
+
+rb_tainted_str_new(const char *ptr, long len)
+
+ 汚染マークãŒä»˜åŠ ã•ã‚ŒãŸæ–°ã—ã„Rubyã®æ–‡å­—列を生æˆã™ã‚‹ï¼Žå¤–部
+ ã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ã«åŸºã¥ã文字列ã«ã¯æ±šæŸ“マークãŒä»˜åŠ ã•れるã¹ã
+ ã§ã‚る.
+
+rb_tainted_str_new2(const char *ptr)
+rb_tainted_str_new_cstr(const char *ptr)
+
+ Cã®æ–‡å­—列ã‹ã‚‰æ±šæŸ“マークãŒä»˜åŠ ã•れãŸRubyã®æ–‡å­—列を生æˆã™ã‚‹ï¼Ž
+
+rb_sprintf(const char *format, ...)
+rb_vsprintf(const char *format, va_list ap)
+
+ Cã®æ–‡å­—列formatã¨ç¶šã引数をprintf(3)ã®ãƒ•ォーマットã«ã—ãŸãŒã£ã¦
+ æ•´å½¢ã—,Rubyã®æ–‡å­—列を生æˆã™ã‚‹ï¼Ž
+
+ 注æ„: %iã¯Object#to_s('+'ãƒ•ãƒ©ã‚°ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã¨ãã¯Object#inspect)ã‚’
+ 使ã£ãŸVALUEã®å‡ºåŠ›ã«ä½¿ç”¨ã•れã¦ã„ã‚‹ãŸã‚,整数ã«ã¯%dを使用ã™ã‚‹ã“ã¨ï¼Ž
+
+rb_str_cat(VALUE str, const char *ptr, long len)
+
+ Rubyã®æ–‡å­—列strã«lenãƒã‚¤ãƒˆã®æ–‡å­—列ptrを追加ã™ã‚‹ï¼Ž
+
+rb_str_cat2(VALUE str, const char* ptr)
+
+ Rubyã®æ–‡å­—列strã«Cã®æ–‡å­—列ptrを追加ã™ã‚‹ï¼Žã“ã®é–¢æ•°ã®æ©Ÿèƒ½ã¯
+ rb_str_cat(str, ptr, strlen(ptr))ã¨åŒç­‰ã§ã‚る.
+
+rb_str_catf(VALUE str, const char* format, ...)
+rb_str_vcatf(VALUE str, const char* format, va_list ap)
+
+ Cã®æ–‡å­—列formatã¨ç¶šã引数をprintf(3)ã®ãƒ•ォーマットã«ã—ãŸãŒã£ã¦
+ æ•´å½¢ã—,Rubyã®æ–‡å­—列strã«è¿½åŠ ã™ã‚‹ï¼Žã“ã®é–¢æ•°ã®æ©Ÿèƒ½ã¯ï¼Œãれãžã‚Œ
+ rb_str_cat2(str, rb_sprintf(format, ...)) ã‚„
+ rb_str_cat2(str, rb_vsprintf(format, ap)) ã¨åŒç­‰ã§ã‚る.
+
+rb_enc_str_new(const char *ptr, long len, rb_encoding *enc)
+rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc)
+
+ 指定ã•れãŸã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã§Rubyã®æ–‡å­—列を生æˆã™ã‚‹.
+
+rb_usascii_str_new(const char *ptr, long len)
+rb_usascii_str_new_cstr(const char *ptr)
+
+ エンコーディングãŒUS-ASCIIã®Rubyã®æ–‡å­—列を生æˆã™ã‚‹.
+
+rb_str_resize(VALUE str, long len)
+
+ Rubyã®æ–‡å­—列ã®ã‚µã‚¤ã‚ºã‚’lenãƒã‚¤ãƒˆã«å¤‰æ›´ã™ã‚‹ï¼Žstrã®é•·ã•ã¯å‰
+ 以ã¦ã‚»ãƒƒãƒˆã•れã¦ã„ãªã‘れã°ãªã‚‰ãªã„.lenãŒå…ƒã®é•·ã•よりも短
+ ã„æ™‚ã¯ï¼Œlenãƒã‚¤ãƒˆã‚’è¶ŠãˆãŸéƒ¨åˆ†ã®å†…å®¹ã¯æ¨ã¦ã‚‰ã‚Œã‚‹ï¼ŽlenãŒå…ƒ
+ ã®é•·ã•ã‚ˆã‚Šã‚‚é•·ã„æ™‚ã¯ï¼Œå…ƒã®é•·ã•ã‚’è¶ŠãˆãŸéƒ¨åˆ†ã®å†…容ã¯ä¿å­˜ã•
+ れãªã„ã§ã‚´ãƒŸã«ãªã‚‹ã ã‚ã†ï¼Žã“ã®é–¢æ•°ã®å‘¼ã³å‡ºã—ã«ã‚ˆã£ã¦
+ RSTRING_PTR(str)ãŒå¤‰æ›´ã•れるã‹ã‚‚ã—れãªã„ã“ã¨ã«æ³¨æ„.
+
+rb_str_set_len(VALUE str, long len)
+
+ Rubyã®æ–‡å­—列ã®ã‚µã‚¤ã‚ºã‚’lenãƒã‚¤ãƒˆã«ã‚»ãƒƒãƒˆã™ã‚‹ï¼ŽstrãŒå¤‰æ›´å¯
+ 能ã§ãªã‘れã°ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹ï¼ŽRSTRING_LEN(str)ã¨ã¯ç„¡é–¢ä¿‚ã«ï¼Œ
+ lenãƒã‚¤ãƒˆã¾ã§ã®å†…容ã¯ä¿å­˜ã•れる.lenã¯strã®å®¹é‡ã‚’è¶Šãˆã¦ã„
+ ã¦ã¯ãªã‚‰ãªã„.
+
+
+== é…列ã«å¯¾ã™ã‚‹é–¢æ•°
+
+rb_ary_new()
+
+ è¦ç´ ãŒ0ã®é…列を生æˆã™ã‚‹ï¼Ž
+
+rb_ary_new2(long len)
+rb_ary_new_capa(long len)
+
+ è¦ç´ ãŒ0ã®é…列を生æˆã™ã‚‹ï¼Žlenè¦ç´ åˆ†ã®é ˜åŸŸã‚’ã‚らã‹ã˜ã‚割り
+ 当ã¦ã¦ãŠã.
+
+rb_ary_new3(long n, ...)
+rb_ary_new_from_args(long n, ...)
+
+ å¼•æ•°ã§æŒ‡å®šã—ãŸnè¦ç´ ã‚’å«ã‚€é…列を生æˆã™ã‚‹ï¼Ž
+
+rb_ary_new4(long n, VALUE *elts)
+rb_ary_new_from_values(long n, VALUE *elts)
+
+ é…列ã§ä¸ŽãˆãŸnè¦ç´ ã®é…列を生æˆã™ã‚‹ï¼Ž
+
+rb_ary_to_ary(VALUE obj)
+
+ オブジェクトをé…列ã«å¤‰æ›ã™ã‚‹.
+ Object#to_aryã¨åŒç­‰ã§ã‚ã‚‹.
+
+ä»–ã«ã‚‚é…列をæ“作ã™ã‚‹é–¢æ•°ãŒå¤šæ•°ã‚ã‚‹. ã“れらã¯
+引数aryã«é…列を渡ã•ãªã‘れã°ãªã‚‰ãªã„. ã•ã‚‚ãªã„ã¨
+コアをåã.
+
+rb_ary_aref(argc, VALUE *argv, VALUE ary)
+
+ Array#[]ã¨åŒç­‰.
+
+rb_ary_entry(VALUE ary, long offset)
+
+ ary[offset]
+
+rb_ary_store(VALUE ary, long offset, VALUE obj) ::
+
+ ary[offset] = obj
+
+rb_ary_subseq(VALUE ary, long beg, long len)
+
+ ary[beg, len]
+
+rb_ary_push(VALUE ary, VALUE val)
+rb_ary_pop(VALUE ary)
+rb_ary_shift(VALUE ary)
+rb_ary_unshift(VALUE ary, VALUE val)
+
+rb_ary_cat(VALUE ary, const VALUE *ptr, long len)
+
+ é…列aryã«ptrã‹ã‚‰len個ã®ã‚ªãƒ–ジェクトを追加ã™ã‚‹ï¼Ž
+
+= Rubyã®æ©Ÿèƒ½ã‚’使ã†
+
+原ç†çš„ã«Rubyã§æ›¸ã‘ã‚‹ã“ã¨ã¯Cã§ã‚‚書ã‘ã¾ã™ï¼ŽRubyãã®ã‚‚ã®ãŒCã§è¨˜
+è¿°ã•れã¦ã„ã‚‹ã‚“ã§ã™ã‹ã‚‰ï¼Œå½“ç„¶ã¨ã„ãˆã°å½“ç„¶ãªã‚“ã§ã™ã‘ã©ï¼Žã“ã“ã§
+ã¯Rubyã®æ‹¡å¼µã«ä½¿ã†ã“ã¨ãŒå¤šã„ã ã‚ã†ã¨äºˆæ¸¬ã•れる機能を中心ã«ç´¹
+介ã—ã¾ã™ï¼Ž
+
+== Rubyã«æ©Ÿèƒ½ã‚’追加ã™ã‚‹
+
+Rubyã§æä¾›ã•れã¦ã„る関数を使ãˆã°Rubyã‚¤ãƒ³ã‚¿ãƒ—ãƒªã‚¿ã«æ–°ã—ã„æ©Ÿèƒ½
+を追加ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼ŽRubyã§ã¯ä»¥ä¸‹ã®æ©Ÿèƒ½ã‚’追加ã™ã‚‹é–¢æ•°ãŒ
+æä¾›ã•れã¦ã„ã¾ã™ï¼Ž
+
+* クラス,モジュール
+* メソッド,特異メソッドãªã©
+* 定数
+
+ã§ã¯é †ã«ç´¹ä»‹ã—ã¾ã™ï¼Ž
+
+=== クラス/モジュール定義
+
+クラスやモジュールを定義ã™ã‚‹ãŸã‚ã«ã¯ï¼Œä»¥ä¸‹ã®é–¢æ•°ã‚’使ã„ã¾ã™ï¼Ž
+
+ VALUE rb_define_class(const char *name, VALUE super)
+ VALUE rb_define_module(const char *name)
+
+ã“れらã®é–¢æ•°ã¯æ–°ã—ã定義ã•れãŸã‚¯ãƒ©ã‚¹ã‚„モジュールを返ã—ã¾ã™ï¼Ž
+メソッドや定数ã®å®šç¾©ã«ã“れらã®å€¤ãŒå¿…è¦ãªã®ã§ï¼Œã»ã¨ã‚“ã©ã®å ´åˆ
+ã¯æˆ»ã‚Šå€¤ã‚’å¤‰æ•°ã«æ ¼ç´ã—ã¦ãŠãå¿…è¦ãŒã‚ã‚‹ã§ã—ょã†ï¼Ž
+
+クラスやモジュールを他ã®ã‚¯ãƒ©ã‚¹ã®å†…部ã«ãƒã‚¹ãƒˆã—ã¦å®šç¾©ã™ã‚‹æ™‚ã«
+ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’使ã„ã¾ã™ï¼Ž
+
+ VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
+ VALUE rb_define_module_under(VALUE outer, const char *name)
+
+=== メソッド/特異メソッド定義
+
+メソッドや特異メソッドを定義ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’使ã„ã¾ã™ï¼Ž
+
+ void rb_define_method(VALUE klass, const char *name,
+ VALUE (*func)(), int argc)
+
+ void rb_define_singleton_method(VALUE object, const char *name,
+ VALUE (*func)(), int argc)
+
+
+念ã®ãŸã‚説明ã™ã‚‹ã¨ã€Œç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã€ã¨ã¯ï¼Œãã®ç‰¹å®šã®ã‚ªãƒ–ジェク
+トã«å¯¾ã—ã¦ã ã‘有効ãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã™ï¼ŽRubyã§ã¯ã‚ˆãSmalltalkã«ãŠ
+ã‘るクラスメソッドã¨ã—ã¦ï¼Œã‚¯ãƒ©ã‚¹ã«å¯¾ã™ã‚‹ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ãŒä½¿ã‚れ
+ã¾ã™ï¼Ž
+
+ã“れらã®é–¢æ•°ã® argcã¨ã„ã†å¼•æ•°ã¯Cã®é–¢æ•°ã¸æ¸¡ã•ã‚Œã‚‹å¼•æ•°ã®æ•°(ã¨
+å½¢å¼)を決ã‚ã¾ã™ï¼ŽargcãŒ0ä»¥ä¸Šã®æ™‚ã¯é–¢æ•°ã«å¼•ãæ¸¡ã™å¼•æ•°ã®æ•°ã‚’æ„
+味ã—ã¾ã™ï¼Ž16個以上ã®å¼•æ•°ã¯ä½¿ãˆã¾ã›ã‚“(ãŒï¼Œè¦ã‚Šã¾ã›ã‚“よã­ï¼Œã
+ã‚“ãªã«).実際ã®é–¢æ•°ã«ã¯å…ˆé ­ã®å¼•æ•°ã¨ã—ã¦selfãŒä¸Žãˆã‚‰ã‚Œã¾ã™ã®
+ã§ï¼ŒæŒ‡å®šã—ãŸæ•°ã‚ˆã‚Š1多ã„引数をæŒã¤ã“ã¨ã«ãªã‚Šã¾ã™ï¼Ž
+
+argcãŒè² ã®æ™‚ã¯å¼•æ•°ã®æ•°ã§ã¯ãªã,形å¼ã‚’指定ã—ãŸã“ã¨ã«ãªã‚Šã¾ã™ï¼Ž
+argcãŒ-1ã®æ™‚ã¯å¼•æ•°ã‚’é…列ã«å…¥ã‚Œã¦æ¸¡ã•れã¾ã™ï¼ŽargcãŒ-2ã®æ™‚ã¯å¼•
+æ•°ã¯Rubyã®é…列ã¨ã—ã¦æ¸¡ã•れã¾ã™ï¼Ž
+
+メソッドを定義ã™ã‚‹é–¢æ•°ã¯ã¾ã ã„ãã¤ã‹ã‚りã¾ã™. ã²ã¨ã¤ã¯ãƒ¡ã‚½ãƒƒãƒ‰
+åã¨ã—ã¦IDã‚’å–りã¾ã™. IDã«ã¤ã„ã¦ã¯2.2.2ã‚’å‚ç…§.
+
+ void rb_define_method_id(VALUE klass, ID name,
+ VALUE (*func)(ANYARGS), int argc)
+
+private/protectedãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’定義ã™ã‚‹ãµãŸã¤ã®é–¢æ•°ãŒã‚りã¾ã™.
+
+ void rb_define_private_method(VALUE klass, const char *name,
+ VALUE (*func)(), int argc)
+ void rb_define_protected_method(VALUE klass, const char *name,
+ VALUE (*func)(), int argc)
+
+privateメソッドã¨ã¯é–¢æ•°å½¢å¼ã§ã—ã‹å‘¼ã³å‡ºã™ã“ã¨ã®å‡ºæ¥ãªã„メソッ
+ドã§ã™ï¼Ž
+
+最後ã«ï¼Œ rb_define_module関数ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«é–¢æ•°ã‚’定義ã—ã¾ã™ï¼Ž
+モジュール関数ã¨ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ç‰¹ç•°ãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚ã‚Šï¼ŒåŒæ™‚ã«
+privateメソッドã§ã‚‚ã‚ã‚‹ã‚‚ã®ã§ã™ï¼Žä¾‹ã‚’ã‚ã’ã‚‹ã¨Mathモジュール
+ã®sqrt()ãªã©ãŒã‚ã’られã¾ã™ï¼Žã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯
+
+ Math.sqrt(4)
+
+ã¨ã„ã†å½¢å¼ã§ã‚‚
+
+ include Math
+ sqrt(4)
+
+ã¨ã„ã†å½¢å¼ã§ã‚‚使ãˆã¾ã™ï¼Žãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«é–¢æ•°ã‚’定義ã™ã‚‹é–¢æ•°ã¯ä»¥ä¸‹ã®
+通りã§ã™ï¼Ž
+
+ void rb_define_module_function(VALUE module, const char *name,
+ VALUE (*func)(), int argc)
+
+関数的メソッド(Kernelモジュールã®private method)を定義ã™ã‚‹ãŸ
+ã‚ã®é–¢æ•°ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž
+
+ void rb_define_global_function(const char *name, VALUE (*func)(), int argc)
+
+
+メソッドã®åˆ¥åを定義ã™ã‚‹ãŸã‚ã®é–¢æ•°ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž
+
+ void rb_define_alias(VALUE module, const char* new, const char* old);
+
+属性ã®å–得・設定メソッドを定義ã™ã‚‹ã«ã¯
+
+ void rb_define_attr(VALUE klass, const char *name, int read, int write)
+
+クラスメソッドallocateを定義ã—ãŸã‚Šå‰Šé™¤ã—ãŸã‚Šã™ã‚‹ãŸã‚ã®é–¢æ•°ã¯
+以下ã®é€šã‚Šã§ã™ï¼Ž
+
+ void rb_define_alloc_func(VALUE klass, VALUE (*func)(VALUE klass));
+ void rb_undef_alloc_func(VALUE klass);
+
+funcã¯ã‚¯ãƒ©ã‚¹ã‚’引数ã¨ã—ã¦å—ã‘å–ã£ã¦ï¼Œæ–°ã—ã割り当ã¦ã‚‰ã‚ŒãŸã‚¤ãƒ³
+スタンスを返ã•ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“.ã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã¯ï¼Œå¤–部リ
+ソースãªã©ã‚’å«ã¾ãªã„,ã§ãã‚‹ã ã‘「空ã€ã®ã¾ã¾ã«ã—ã¦ãŠã„ãŸã»ã†
+ãŒã‚ˆã„ã§ã—ょã†ï¼Ž
+
+=== 定数定義
+
+拡張ライブラリãŒå¿…è¦ãªå®šæ•°ã¯ã‚らã‹ã˜ã‚定義ã—ã¦ãŠã„ãŸæ–¹ãŒè‰¯ã„
+ã§ã—ょã†ï¼Žå®šæ•°ã‚’定義ã™ã‚‹é–¢æ•°ã¯äºŒã¤ã‚りã¾ã™ï¼Ž
+
+ void rb_define_const(VALUE klass, const char *name, VALUE val)
+ void rb_define_global_const(const char *name, VALUE val)
+
+å‰è€…ã¯ç‰¹å®šã®ã‚¯ãƒ©ã‚¹/モジュールã«å±žã™ã‚‹å®šæ•°ã‚’定義ã™ã‚‹ã‚‚ã®ï¼Œå¾Œ
+者ã¯ã‚°ãƒ­ãƒ¼ãƒãƒ«ãªå®šæ•°ã‚’定義ã™ã‚‹ã‚‚ã®ã§ã™ï¼Ž
+
+== Rubyã®æ©Ÿèƒ½ã‚’Cã‹ã‚‰å‘¼ã³å‡ºã™
+
+æ—¢ã«ã€Ž1.5 Rubyã®ãƒ‡ãƒ¼ã‚¿ã‚’æ“作ã™ã‚‹ã€ã§ä¸€éƒ¨ç´¹ä»‹ã—ãŸã‚ˆã†ãªé–¢æ•°ã‚’
+使ãˆã°ï¼ŒRubyã®æ©Ÿèƒ½ã‚’実ç¾ã—ã¦ã„る関数を直接呼ã³å‡ºã™ã“ã¨ãŒå‡ºæ¥
+ã¾ã™ï¼Ž
+
+# ã“ã®ã‚ˆã†ãªé–¢æ•°ã®ä¸€è¦§è¡¨ã¯ã„ã¾ã®ã¨ã“ã‚ã‚りã¾ã›ã‚“.ソースを見
+# ã‚‹ã—ã‹ãªã„ã§ã™ã­ï¼Ž
+
+ãれ以外ã«ã‚‚Rubyã®æ©Ÿèƒ½ã‚’呼ã³å‡ºã™æ–¹æ³•ã¯ã„ãã¤ã‹ã‚りã¾ã™ï¼Ž
+
+=== Rubyã®ãƒ—ログラムをevalã™ã‚‹
+
+Cã‹ã‚‰Rubyã®æ©Ÿèƒ½ã‚’呼ã³å‡ºã™ã‚‚ã£ã¨ã‚‚ç°¡å˜ãªæ–¹æ³•ã¨ã—ã¦ï¼Œæ–‡å­—列ã§
+与ãˆã‚‰ã‚ŒãŸRubyã®ãƒ—ログラムを評価ã™ã‚‹ä»¥ä¸‹ã®é–¢æ•°ãŒã‚りã¾ã™ï¼Ž
+
+ VALUE rb_eval_string(const char *str)
+
+ã“ã®è©•価ã¯ç¾åœ¨ã®ç’°å¢ƒã§è¡Œã‚れã¾ã™ï¼Žã¤ã¾ã‚Šï¼Œç¾åœ¨ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°
+ãªã©ã‚’å—ã‘ç¶™ãŽã¾ã™ï¼Ž
+
+評価ã¯ä¾‹å¤–を発生ã™ã‚‹ã‹ã‚‚ã—れãªã„ã“ã¨ã«æ³¨æ„ã—ã¾ã—ょã†. より安全
+ãªé–¢æ•°ã‚‚ã‚りã¾ã™.
+
+ VALUE rb_eval_string_protect(const char *str, int *state)
+
+ã“ã®é–¢æ•°ã¯ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹ã¨nilã‚’è¿”ã—ã¾ã™ï¼Žãã—ã¦ï¼ŒæˆåŠŸæ™‚ã«ã¯
+*stateã¯ã‚¼ãƒ­ã«ï¼Œã•ã‚‚ãªãã°éžã‚¼ãƒ­ã«ãªã‚Šã¾ã™ï¼Ž
+
+=== IDã¾ãŸã¯ã‚·ãƒ³ãƒœãƒ«
+
+Cã‹ã‚‰æ–‡å­—列を経由ã›ãšã«Rubyã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™ã“ã¨ã‚‚ã§ãã¾
+ã™ï¼Žãã®å‰ã«ï¼ŒRubyインタプリタ内ã§ãƒ¡ã‚½ãƒƒãƒ‰ã‚„変数åを指定ã™ã‚‹
+時ã«ä½¿ã‚れã¦ã„ã‚‹IDã«ã¤ã„ã¦èª¬æ˜Žã—ã¦ãŠãã¾ã—ょã†ï¼Ž
+
+IDã¨ã¯å¤‰æ•°å,メソッドåã‚’è¡¨ã™æ•´æ•°ã§ã™ï¼ŽRubyã®ä¸­ã§ã¯
+
+ :識別å­
+
+ã¾ãŸã¯
+
+ :"ä»»æ„ã®æ–‡å­—列"
+
+ã§ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ï¼ŽCã‹ã‚‰ã“ã®æ•´æ•°ã‚’å¾—ã‚‹ãŸã‚ã«ã¯é–¢æ•°
+
+ rb_intern(const char *name)
+ rb_intern_str(VALUE name)
+
+を使ã„ã¾ã™ï¼ŽRubyã‹ã‚‰å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«(ã¾ãŸã¯æ–‡å­—
+列)ã‚’IDã«å¤‰æ›ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’使ã„ã¾ã™ï¼Ž
+
+ rb_to_id(VALUE symbol)
+ rb_check_id(volatile VALUE *name)
+ rb_check_id_cstr(const char *name, long len, rb_encoding *enc)
+
+ã‚‚ã—引数ãŒã‚·ãƒ³ãƒœãƒ«ã§ã‚‚文字列ã§ã‚‚ãªã‘れã°ã€to_strãƒ¡ã‚½ãƒƒãƒ‰ã§æ–‡
+字列ã«å¤‰æ›ã—よã†ã¨ã—ã¾ã™ï¼Žç¬¬äºŒã®é–¢æ•°ã¯ãã®å¤‰æ›çµæžœã‚’*nameã«ä¿
+å­˜ã—,ãã®åå‰ãŒæ—¢çŸ¥ã®ã‚·ãƒ³ãƒœãƒ«ã§ãªã„å ´åˆã¯0ã‚’è¿”ã—ã¾ã™ï¼Žã“ã®é–¢
+æ•°ãŒ0以外を返ã—ãŸå ´åˆã¯*nameã¯å¸¸ã«ã‚·ãƒ³ãƒœãƒ«ã‹æ–‡å­—列ã§ã‚りã€0ã‚’
+è¿”ã—ãŸå ´åˆã¯å¸¸ã«æ–‡å­—列ã§ã™ï¼Žç¬¬ä¸‰ã®é–¢æ•°ã¯Rubyã®æ–‡å­—列ã§ã¯ãªã
+NUL終端ã•れãŸCã®æ–‡å­—列を使ã„ã¾ã™ï¼Ž
+
+=== Cã‹ã‚‰Rubyã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™
+
+Cã‹ã‚‰æ–‡å­—列を経由ã›ãšã«Rubyã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™ãŸã‚ã«ã¯ä»¥ä¸‹
+ã®é–¢æ•°ã‚’使ã„ã¾ã™ï¼Ž
+
+ VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)
+
+ã“ã®é–¢æ•°ã¯ã‚ªãƒ–ジェクトrecvã®midã§æŒ‡å®šã•れるメソッドを呼ã³å‡º
+ã—ã¾ã™ï¼Žãã®ä»–ã«å¼•æ•°ã®æŒ‡å®šã®ä»•æ–¹ãŒé•ã†ä»¥ä¸‹ã®é–¢æ•°ã‚‚ã‚りã¾ã™ï¼Ž
+
+ VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
+ VALUE rb_funcallv(VALUE recv, ID mid, int argc, VALUE *argv)
+ VALUE rb_apply(VALUE recv, ID mid, VALUE args)
+
+applyã«ã¯å¼•æ•°ã¨ã—ã¦Rubyã®é…列を与ãˆã¾ã™ï¼Ž
+
+=== 変数/定数をå‚ç…§/æ›´æ–°ã™ã‚‹
+
+Cã‹ã‚‰é–¢æ•°ã‚’使ã£ã¦å‚照・更新ã§ãã‚‹ã®ã¯ï¼Œå®šæ•°ï¼Œã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰
+æ•°ã§ã™ï¼Žå¤§åŸŸå¤‰æ•°ã¯ä¸€éƒ¨ã®ã‚‚ã®ã¯Cã®å¤§åŸŸå¤‰æ•°ã¨ã—ã¦ã‚¢ã‚¯ã‚»ã‚¹ã§ã
+ã¾ã™ï¼Žãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã‚’å‚ç…§ã™ã‚‹æ–¹æ³•ã¯å…¬é–‹ã—ã¦ã„ã¾ã›ã‚“.
+
+オブジェクトã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’å‚照・更新ã™ã‚‹é–¢æ•°ã¯ä»¥ä¸‹ã®é€š
+りã§ã™ï¼Ž
+
+ VALUE rb_ivar_get(VALUE obj, ID id)
+ VALUE rb_ivar_set(VALUE obj, ID id, VALUE val)
+
+idã¯rb_intern()ã§å¾—られるもã®ã‚’使ã£ã¦ãã ã•ã„.
+
+定数をå‚ç…§ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’使ã£ã¦ãã ã•ã„.
+
+ VALUE rb_const_get(VALUE obj, ID id)
+
+定数を新ã—ã定義ã™ã‚‹ãŸã‚ã«ã¯ã€Ž2.1.3 定数定義ã€ã§ç´¹ä»‹ã•
+れã¦ã„る関数を使ã£ã¦ãã ã•ã„.
+
+= Rubyã¨Cã¨ã®æƒ…報共有
+
+C言語ã¨Rubyã®é–“ã§æƒ…報を共有ã™ã‚‹æ–¹æ³•ã«ã¤ã„ã¦è§£èª¬ã—ã¾ã™ï¼Ž
+
+== Cã‹ã‚‰å‚ç…§ã§ãã‚‹Rubyã®å®šæ•°
+
+以下ã®Rubyã®å®šæ•°ã¯Cã®ãƒ¬ãƒ™ãƒ«ã‹ã‚‰å‚ç…§ã§ãã¾ã™ï¼Ž
+
+ Qtrue
+ Qfalse
+
+真å½å€¤ï¼ŽQfalseã¯C言語ã§ã‚‚å½ã¨ã¿ãªã•れã¾ã™(ã¤ã¾ã‚Š0).
+
+ Qnil
+
+C言語ã‹ã‚‰è¦‹ãŸã€Œnilã€ï¼Ž
+
+== Cã¨Rubyã§å…±æœ‰ã•れる大域変数
+
+Cã¨Rubyã§å¤§åŸŸå¤‰æ•°ã‚’使ã£ã¦æƒ…報を共有ã§ãã¾ã™ï¼Žå…±æœ‰ã§ãる大域
+変数ã«ã¯ã„ãã¤ã‹ã®ç¨®é¡žãŒã‚りã¾ã™ï¼Žãã®ãªã‹ã§ã‚‚ã£ã¨ã‚‚良ã使ã‚
+ã‚Œã‚‹ã¨æ€ã‚れるã®ã¯rb_define_variable()ã§ã™ï¼Ž
+
+ void rb_define_variable(const char *name, VALUE *var)
+
+ã“ã®é–¢æ•°ã¯Rubyã¨Cã¨ã§å…±æœ‰ã™ã‚‹å¤§åŸŸå¤‰æ•°ã‚’定義ã—ã¾ã™ï¼Žå¤‰æ•°åãŒ
+`$'ã§å§‹ã¾ã‚‰ãªã„時ã«ã¯è‡ªå‹•çš„ã«è¿½åŠ ã•れã¾ã™ï¼Žã“ã®å¤‰æ•°ã®å€¤ã‚’変
+æ›´ã™ã‚‹ã¨è‡ªå‹•çš„ã«Rubyã®å¯¾å¿œã™ã‚‹å¤‰æ•°ã®å€¤ã‚‚変ã‚りã¾ã™ï¼Ž
+
+ã¾ãŸRubyå´ã‹ã‚‰ã¯æ›´æ–°ã§ããªã„変数もã‚りã¾ã™ï¼Žã“ã®read onlyã®
+変数ã¯ä»¥ä¸‹ã®é–¢æ•°ã§å®šç¾©ã—ã¾ã™ï¼Ž
+
+ void rb_define_readonly_variable(const char *name, VALUE *var)
+
+ã“れら変数ã®ä»–ã«hookã‚’ã¤ã‘ãŸå¤§åŸŸå¤‰æ•°ã‚’定義ã§ãã¾ã™ï¼Žhook付ã
+ã®å¤§åŸŸå¤‰æ•°ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’用ã„ã¦å®šç¾©ã—ã¾ã™ï¼Žhook付ã大域変数ã®
+値ã®å‚照や設定ã¯hookã§è¡Œã†å¿…è¦ãŒã‚りã¾ã™ï¼Ž
+
+ void rb_define_hooked_variable(const char *name, VALUE *var,
+ VALUE (*getter)(), void (*setter)())
+
+ã“ã®é–¢æ•°ã¯Cã®é–¢æ•°ã«ã‚ˆã£ã¦hookã®ã¤ã‘られãŸå¤§åŸŸå¤‰æ•°ã‚’定義ã—ã¾
+ã™ï¼Žå¤‰æ•°ãŒå‚ç…§ã•ã‚ŒãŸæ™‚ã«ã¯é–¢æ•°getterãŒï¼Œå¤‰æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•れ
+ãŸæ™‚ã«ã¯é–¢æ•°setterãŒå‘¼ã°ã‚Œã‚‹ï¼Žhookを指定ã—ãªã„å ´åˆã¯getterã‚„
+setterã«0を指定ã—ã¾ã™ï¼Ž
+# getterã‚‚setterã‚‚0ãªã‚‰ã°rb_define_variable()ã¨åŒã˜ã«ãªã‚‹ï¼Ž
+
+getterã¨setterã®ä»•æ§˜ã¯æ¬¡ã®é€šã‚Šã§ã™ï¼Ž
+
+ VALUE (*getter)(ID id, VALUE *var);
+ void (*setter)(VALUE val, ID id, VALUE *var);
+
+
+ãれã‹ã‚‰ï¼Œå¯¾å¿œã™ã‚‹Cã®å¤‰æ•°ã‚’æŒãŸãªã„Rubyã®å¤§åŸŸå¤‰æ•°ã‚’定義ã™ã‚‹
+ã“ã¨ã‚‚ã§ãã¾ã™. ãã®å¤‰æ•°ã®å€¤ã¯ãƒ•ック関数ã®ã¿ã«ã‚ˆã£ã¦å–得・設定
+ã•れã¾ã™.
+
+ void rb_define_virtual_variable(const char *name,
+ VALUE (*getter)(), void (*setter)())
+
+ã“ã®é–¢æ•°ã«ã‚ˆã£ã¦å®šç¾©ã•れãŸRubyã®å¤§åŸŸå¤‰æ•°ãŒå‚ç…§ã•ã‚ŒãŸæ™‚ã«ã¯
+getterãŒï¼Œå¤‰æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•ã‚ŒãŸæ™‚ã«ã¯setterãŒå‘¼ã°ã‚Œã¾ã™ï¼Ž
+
+getterã¨setterã®ä»•様ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž
+
+ (*getter)(ID id);
+ (*setter)(VALUE val, ID id);
+
+== Cã®ãƒ‡ãƒ¼ã‚¿ã‚’Rubyオブジェクトã«ã™ã‚‹
+
+Cã®ä¸–界ã§å®šç¾©ã•れãŸãƒ‡ãƒ¼ã‚¿(構造体)ã‚’Rubyã®ã‚ªãƒ–ジェクトã¨ã—ã¦
+å–り扱ã„ãŸã„å ´åˆãŒã‚りãˆã¾ã™ï¼Žã“ã®ã‚ˆã†ãªå ´åˆã«ã¯ï¼ŒDataã¨ã„ã†
+Rubyオブジェクトã«Cã®æ§‹é€ ä½“(ã¸ã®ãƒã‚¤ãƒ³ã‚¿)ã‚’ãã‚‹ã‚€ã“ã¨ã§Ruby
+オブジェクトã¨ã—ã¦å–り扱ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ï¼Ž
+
+Dataオブジェクトを生æˆã—ã¦æ§‹é€ ä½“ã‚’Rubyオブジェクトã«ã‚«ãƒ—セル
+化ã™ã‚‹ãŸã‚ã«ã¯ï¼Œä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã‚’使ã„ã¾ã™ï¼Ž
+
+ Data_Wrap_Struct(klass, mark, free, sval)
+
+ã“ã®ãƒžã‚¯ãƒ­ã®æˆ»ã‚Šå€¤ã¯ç”Ÿæˆã•れãŸDataオブジェクトã§ã™ï¼Ž
+
+klassã¯ã“ã®Dataオブジェクトã®ã‚¯ãƒ©ã‚¹ã§ã™ï¼Žmarkã¯ã“ã®æ§‹é€ ä½“ãŒ
+Rubyã®ã‚ªãƒ–ジェクトã¸ã®å‚ç…§ãŒã‚る時ã«ä½¿ã†é–¢æ•°ã§ã™ï¼Žãã®ã‚ˆã†ãª
+å‚ç…§ã‚’å«ã¾ãªã„時ã«ã¯0を指定ã—ã¾ã™ï¼Ž
+
+# ãã®ã‚ˆã†ãªå‚ç…§ã¯å‹§ã‚られã¾ã›ã‚“.
+
+freeã¯ã“ã®æ§‹é€ ä½“ãŒã‚‚ã†ä¸è¦ã«ãªã£ãŸæ™‚ã«å‘¼ã°ã‚Œã‚‹é–¢æ•°ã§ã™ï¼Žã“ã®
+関数ãŒã‚¬ãƒ¼ãƒ™ãƒ¼ã‚¸ã‚³ãƒ¬ã‚¯ã‚¿ã‹ã‚‰å‘¼ã°ã‚Œã¾ã™ï¼Žã“れãŒ-1ã®å ´åˆã¯ï¼Œå˜
+ç´”ã«é–‹æ”¾ã•れã¾ã™ï¼Ž
+
+markãŠã‚ˆã³free関数ã¯GC実行中ã«å‘¼ã³å‡ºã•れã¾ã™.
+ãªãŠ, GC実行中ã¯Rubyオブジェクトã®ã‚¢ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯ç¦æ­¢ã•れã¾
+ã™. よã£ã¦, markãŠã‚ˆã³free関数ã§Rubyオブジェクトã®ã‚¢ãƒ­ã‚±ãƒ¼ã‚·
+ョンã¯è¡Œã‚ãªã„ã§ãã ã•ã„.
+
+Cã®æ§‹é€ ä½“ã®å‰²å½“ã¨Dataオブジェクトã®ç”Ÿæˆã‚’åŒæ™‚ã«è¡Œã†ãƒžã‚¯ãƒ­ã¨
+ã—ã¦ä»¥ä¸‹ã®ã‚‚ã®ãŒæä¾›ã•れã¦ã„ã¾ã™ï¼Ž
+
+ Data_Make_Struct(klass, type, mark, free, sval)
+
+ã“ã®ãƒžã‚¯ãƒ­ã®æˆ»ã‚Šå€¤ã¯ç”Ÿæˆã•れãŸDataオブジェクトã§ã™ï¼Žã“ã®ãƒžã‚¯
+ロã¯ä»¥ä¸‹ã®å¼ã®ã‚ˆã†ã«åƒãã¾ã™:
+
+ (sval = ALLOC(type), Data_Wrap_Struct(klass, mark, free, sval))
+
+klass, mark, freeã¯Data_Wrap_Structã¨åŒã˜åƒãã‚’ã—ã¾ã™ï¼Žtype
+ã¯å‰²ã‚Šå½“ã¦ã‚‹C構造体ã®åž‹ã§ã™ï¼Žå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸæ§‹é€ ä½“ã¯å¤‰æ•°sval
+ã«ä»£å…¥ã•れã¾ã™ï¼Žã“ã®å¤‰æ•°ã®åž‹ã¯ (type*) ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼Ž
+
+Dataオブジェクトã‹ã‚‰ãƒã‚¤ãƒ³ã‚¿ã‚’å–り出ã™ã®ã¯ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã‚’用ã„
+ã¾ã™ï¼Ž
+
+ Data_Get_Struct(obj, type, sval)
+
+Cã®æ§‹é€ ä½“ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã¯å¤‰æ•°svalã«ä»£å…¥ã•れã¾ã™ï¼Ž
+
+ã“れらã®Dataã®ä½¿ã„æ–¹ã¯ã¡ã‚‡ã£ã¨åˆ†ã‹ã‚Šã«ãã„ã®ã§ï¼Œå¾Œã§èª¬æ˜Žã™ã‚‹
+例題をå‚ç…§ã—ã¦ãã ã•ã„.
+
+= 例題 - dbmパッケージを作る
+
+ã“ã“ã¾ã§ã®èª¬æ˜Žã§ã¨ã‚Šã‚ãˆãšæ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¯ä½œã‚Œã‚‹ã¯ãšã§ã™ï¼Ž
+Rubyã®extディレクトリã«ã™ã§ã«å«ã¾ã‚Œã¦ã„ã‚‹dbmライブラリを例ã«
+ã—ã¦æ®µéšŽçš„ã«èª¬æ˜Žã—ã¾ã™ï¼Ž
+
+== ディレクトリを作る
+
+ % mkdir ext/dbm
+
+Ruby 1.1ã‹ã‚‰ã¯ä»»æ„ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ãƒ€ã‚¤ãƒŠãƒŸãƒƒã‚¯ãƒ©ã‚¤ãƒ–ラリを作
+ã‚‹ã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã—ãŸï¼ŽRubyã«é™çš„ã«ãƒªãƒ³ã‚¯ã™ã‚‹å ´åˆã«
+ã¯Rubyを展開ã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸‹ï¼Œextディレクトリã®ä¸­ã«æ‹¡å¼µ
+ライブラリ用ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’作る必è¦ãŒã‚りã¾ã™ï¼Žåå‰ã¯é©å½“ã«
+é¸ã‚“ã§æ§‹ã„ã¾ã›ã‚“.
+
+== 設計ã™ã‚‹
+
+ã¾ã‚,当然ãªã‚“ã§ã™ã‘ã©ï¼Œã©ã†ã„ã†æ©Ÿèƒ½ã‚’実ç¾ã™ã‚‹ã‹ã©ã†ã‹ã¾ãšè¨­
+計ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼Žã©ã‚“ãªã‚¯ãƒ©ã‚¹ã‚’ã¤ãã‚‹ã‹ï¼Œãã®ã‚¯ãƒ©ã‚¹ã«ã¯
+ã©ã‚“ãªãƒ¡ã‚½ãƒƒãƒ‰ãŒã‚ã‚‹ã‹ï¼Œã‚¯ãƒ©ã‚¹ãŒæä¾›ã™ã‚‹å®šæ•°ãªã©ã«ã¤ã„ã¦è¨­è¨ˆ
+ã—ã¾ã™ï¼Ž
+
+== Cコードを書ã
+
+拡張ライブラリ本体ã¨ãªã‚‹C言語ã®ã‚½ãƒ¼ã‚¹ã‚’書ãã¾ã™ï¼ŽC言語ã®ã‚½ãƒ¼
+スãŒã²ã¨ã¤ã®æ™‚ã«ã¯ã€Œãƒ©ã‚¤ãƒ–ラリå.cã€ã‚’é¸ã¶ã¨è‰¯ã„ã§ã—ょã†ï¼ŽC
+言語ã®ã‚½ãƒ¼ã‚¹ãŒè¤‡æ•°ã®å ´åˆã«ã¯é€†ã«ã€Œãƒ©ã‚¤ãƒ–ラリå.cã€ã¨ã„ã†ãƒ•ã‚¡
+イルåã¯é¿ã‘ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼Žã‚ªãƒ–ジェクトファイルã¨ãƒ¢ã‚¸ãƒ¥ãƒ¼
+ãƒ«ç”Ÿæˆæ™‚ã«ä¸­é–“çš„ã«ç”Ÿæˆã•れる「ライブラリå.oã€ã¨ã„ã†ãƒ•ァイル
+ã¨ãŒè¡çªã™ã‚‹ã‹ã‚‰ã§ã™ï¼Žã¾ãŸï¼Œå¾Œè¿°ã™ã‚‹ mkmf ライブラリã®ã„ãã¤
+ã‹ã®é–¢æ•°ãŒã‚³ãƒ³ãƒ‘イルをè¦ã™ã‚‹ãƒ†ã‚¹ãƒˆã®ãŸã‚ã«ã€Œconftest.cã€ã¨ã„
+ã†ãƒ•ァイルåを使用ã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„.ソースファイル
+åã¨ã—ã¦ã€Œconftest.cã€ã‚’使用ã—ã¦ã¯ãªã‚Šã¾ã›ã‚“.
+
+Rubyã¯æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリをロードã™ã‚‹æ™‚ã«ã€ŒInit_ライブラリåã€ã¨
+ã„ã†é–¢æ•°ã‚’自動的ã«å®Ÿè¡Œã—ã¾ã™ï¼Ždbmライブラリã®å ´åˆã€ŒInit_dbmã€
+ã§ã™ï¼Žã“ã®é–¢æ•°ã®ä¸­ã§ã‚¯ãƒ©ã‚¹ï¼Œãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ï¼Œãƒ¡ã‚½ãƒƒãƒ‰ï¼Œå®šæ•°ãªã©ã®
+定義を行ã„ã¾ã™ï¼Ždbm.cã‹ã‚‰ä¸€éƒ¨å¼•用ã—ã¾ã™ï¼Ž
+
+ void
+ Init_dbm(void)
+ {
+ /* DBMクラスを定義ã™ã‚‹ */
+ cDBM = rb_define_class("DBM", rb_cObject);
+ /* DBMã¯Enumerateモジュールをインクルードã™ã‚‹ */
+ rb_include_module(cDBM, rb_mEnumerable);
+
+ /* DBMクラスã®ã‚¯ãƒ©ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰open(): 引数ã¯Cã®é…列ã§å—ã‘ã‚‹ */
+ rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
+
+ /* DBMクラスã®ãƒ¡ã‚½ãƒƒãƒ‰close(): 引数ã¯ãªã— */
+ rb_define_method(cDBM, "close", fdbm_close, 0);
+ /* DBMクラスã®ãƒ¡ã‚½ãƒƒãƒ‰[]: 引数ã¯1個 */
+ rb_define_method(cDBM, "[]", fdbm_fetch, 1);
+
+ /* ... */
+
+ /* DBMデータを格ç´ã™ã‚‹ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°åã®ãŸã‚ã®ID */
+ id_dbm = rb_intern("dbm");
+ }
+
+DBMライブラリã¯dbmã®ãƒ‡ãƒ¼ã‚¿ã¨å¯¾å¿œã™ã‚‹ã‚ªãƒ–ジェクトã«ãªã‚‹ã¯ãšã§
+ã™ã‹ã‚‰ï¼ŒCã®ä¸–界ã®dbmã‚’Rubyã®ä¸–界ã«å–り込む必è¦ãŒã‚りã¾ã™ï¼Ž
+
+dbm.cã§ã¯Data_Make_Structを以下ã®ã‚ˆã†ã«ä½¿ã£ã¦ã„ã¾ã™ï¼Ž
+
+ struct dbmdata {
+ int di_size;
+ DBM *di_dbm;
+ };
+
+
+ obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
+
+ã“ã“ã§ã¯dbmstruct構造体ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã‚’Dataã«ã‚«ãƒ—セル化ã—ã¦ã„
+ã¾ã™ï¼ŽDBM*を直接カプセル化ã—ãªã„ã®ã¯close()ã—ãŸæ™‚ã®å‡¦ç†ã‚’考
+ãˆã¦ã®ã“ã¨ã§ã™ï¼Ž
+
+Dataオブジェクトã‹ã‚‰dbmstruct構造体ã®ãƒã‚¤ãƒ³ã‚¿ã‚’å–り出ã™ãŸã‚
+ã«ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã‚’使ã£ã¦ã„ã¾ã™ï¼Ž
+
+ #define GetDBM(obj, dbmp) {\
+ Data_Get_Struct(obj, struct dbmdata, dbmp);\
+ if (dbmp->di_dbm == 0) closed_dbm();\
+ }
+
+ã¡ã‚‡ã£ã¨è¤‡é›‘ãªãƒžã‚¯ãƒ­ã§ã™ãŒï¼Œè¦ã™ã‚‹ã«dbmdata構造体ã®ãƒã‚¤ãƒ³ã‚¿
+ã®å–り出ã—ã¨ï¼Œcloseã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ã®ãƒã‚§ãƒƒã‚¯ã‚’ã¾ã¨ã‚ã¦ã„
+ã‚‹ã ã‘ã§ã™ï¼Ž
+
+DBMクラスã«ã¯ãŸãã•んメソッドãŒã‚りã¾ã™ãŒï¼Œåˆ†é¡žã™ã‚‹ã¨3種類ã®
+引数ã®å—ã‘æ–¹ãŒã‚りã¾ã™ï¼Žã²ã¨ã¤ã¯å¼•æ•°ã®æ•°ãŒå›ºå®šã®ã‚‚ã®ã§ï¼Œä¾‹ã¨
+ã—ã¦ã¯deleteメソッドãŒã‚りã¾ã™ï¼Ždeleteメソッドを実装ã—ã¦ã„ã‚‹
+fdbm_delete()ã¯ã“ã®ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ï¼Ž
+
+ static VALUE
+ fdbm_delete(VALUE obj, VALUE keystr)
+ {
+ /* ... */
+ }
+
+å¼•æ•°ã®æ•°ãŒå›ºå®šã®ã‚¿ã‚¤ãƒ—ã¯ç¬¬1引数ãŒself,第2引数以é™ãŒãƒ¡ã‚½ãƒƒãƒ‰
+ã®å¼•æ•°ã¨ãªã‚Šã¾ã™ï¼Ž
+
+å¼•æ•°ã®æ•°ãŒä¸å®šã®ã‚‚ã®ã¯Cã®é…列ã§å—ã‘ã‚‹ã‚‚ã®ã¨Rubyã®é…列ã§å—ã‘
+ã‚‹ã‚‚ã®ã¨ãŒã‚りã¾ã™ï¼Ždbmライブラリã®ä¸­ã§ï¼ŒCã®é…列ã§å—ã‘ã‚‹ã‚‚ã®
+ã¯DBMã®ã‚¯ãƒ©ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚ã‚‹open()ã§ã™ï¼Žã“れを実装ã—ã¦ã„ã‚‹é–¢
+æ•°fdbm_s_open()ã¯ã“ã†ãªã£ã¦ã„ã¾ã™ï¼Ž
+
+ static VALUE
+ fdbm_s_open(int argc, VALUE *argv, VALUE klass)
+ {
+ /* ... */
+
+ if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
+ mode = 0666; /* default value */
+ }
+
+ /* ... */
+ }
+
+ã“ã®ã‚¿ã‚¤ãƒ—ã®é–¢æ•°ã¯ç¬¬1引数ãŒä¸Žãˆã‚‰ã‚ŒãŸå¼•æ•°ã®æ•°ï¼Œç¬¬2引数ãŒä¸Žãˆ
+られãŸå¼•æ•°ã®å…¥ã£ã¦ã„ã‚‹é…列ã«ãªã‚Šã¾ã™ï¼Žselfã¯ç¬¬3引数ã¨ã—ã¦ä¸Ž
+ãˆã‚‰ã‚Œã¾ã™ï¼Ž
+
+ã“ã®é…列ã§ä¸Žãˆã‚‰ã‚ŒãŸå¼•æ•°ã‚’è§£æžã™ã‚‹ãŸã‚ã®é–¢æ•°ãŒopen()ã§ã‚‚使ã‚
+れã¦ã„ã‚‹rb_scan_args()ã§ã™ï¼Žç¬¬3å¼•æ•°ã«æŒ‡å®šã—ãŸãƒ•ォーマットã«å¾“
+ã„,第4変数以é™ã«æŒ‡å®šã—ãŸVALUEã¸ã®å‚ç…§ã«å€¤ã‚’代入ã—ã¦ãれã¾
+ã™ï¼Ž
+
+
+引数をRubyã®é…列ã¨ã—ã¦å—ã‘å–るメソッドã®ä¾‹ã«ã¯
+Thread#initializeãŒã‚りã¾ã™ï¼Žå®Ÿè£…ã¯ã“ã†ã§ã™ï¼Ž
+
+ static VALUE
+ thread_initialize(VALUE thread, VALUE args)
+ {
+ /* ... */
+ }
+
+第1引数ã¯self,第2引数ã¯Rubyã®é…列ã§ã™ï¼Ž
+
+*注æ„事項*
+
+Rubyã¨å…±æœ‰ã¯ã—ãªã„ãŒRubyã®ã‚ªãƒ–ジェクトを格ç´ã™ã‚‹å¯èƒ½æ€§ã®ã‚ã‚‹
+Cã®å¤§åŸŸå¤‰æ•°ã¯ä»¥ä¸‹ã®é–¢æ•°ã‚’使ã£ã¦Rubyインタプリタã«å¤‰æ•°ã®å­˜åœ¨
+ã‚’æ•™ãˆã¦ã‚ã’ã¦ãã ã•ã„.ã§ãªã„ã¨GCã§ãƒˆãƒ©ãƒ–ルを起ã“ã—ã¾ã™ï¼Ž
+
+ void rb_global_variable(VALUE *var)
+
+== extconf.rbを用æ„ã™ã‚‹
+
+Makefileを作る場åˆã®é››åž‹ã«ãªã‚‹extconf.rbã¨ã„ã†ãƒ•ァイルを作り
+ã¾ã™ï¼Žextconf.rbã¯ãƒ©ã‚¤ãƒ–ラリã®ã‚³ãƒ³ãƒ‘イルã«å¿…è¦ãªæ¡ä»¶ã®ãƒã‚§ãƒƒ
+クãªã©ã‚’行ã†ã“ã¨ãŒç›®çš„ã§ã™ï¼Žã¾ãšï¼Œ
+
+ require 'mkmf'
+
+ã‚’extconf.rbã®å…ˆé ­ã«ç½®ãã¾ã™ï¼Žextconf.rbã®ä¸­ã§ã¯ä»¥ä¸‹ã®Rubyé–¢
+数を使ã†ã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼Ž
+
+ have_library(lib, func): ライブラリã®å­˜åœ¨ãƒã‚§ãƒƒã‚¯
+ have_func(func, header): 関数ã®å­˜åœ¨ãƒã‚§ãƒƒã‚¯
+ have_header(header): ヘッダファイルã®å­˜åœ¨ãƒã‚§ãƒƒã‚¯
+ create_makefile(target[, target_prefix]): Makefileã®ç”Ÿæˆ
+
+以下ã®å¤‰æ•°ã‚’使ã†ã“ã¨ãŒã§ãã¾ã™ï¼Ž
+
+ $CFLAGS: コンパイル時ã«è¿½åŠ çš„ã«æŒ‡å®šã™ã‚‹ãƒ•ラグ(-Oãªã©)
+ $CPPFLAGS: プリプロセッサã«è¿½åŠ çš„ã«æŒ‡å®šã™ã‚‹ãƒ•ラグ(-Iã‚„-Dãªã©)
+ $LDFLAGS: リンク時ã«è¿½åŠ çš„ã«æŒ‡å®šã™ã‚‹ãƒ•ラグ(-Lãªã©)
+ $objs: リンクã•れるオブジェクトファイルåã®ãƒªã‚¹ãƒˆ
+
+オブジェクトファイルã®ãƒªã‚¹ãƒˆã¯ï¼Œé€šå¸¸ã¯ã‚½ãƒ¼ã‚¹ãƒ•ァイルを検索ã—
+ã¦è‡ªå‹•çš„ã«ç”Ÿæˆã•れã¾ã™ãŒï¼Œmakeã®é€”中ã§ã‚½ãƒ¼ã‚¹ã‚’生æˆã™ã‚‹ã‚ˆã†ãª
+å ´åˆã¯æ˜Žç¤ºçš„ã«æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼Ž
+
+ライブラリをコンパイルã™ã‚‹æ¡ä»¶ãŒæƒã‚ãšï¼Œãã®ãƒ©ã‚¤ãƒ–ラリをコン
+パイルã—ãªã„時ã«ã¯create_makefileを呼ã°ãªã‘れã°Makefileã¯ç”Ÿ
+æˆã•れãšï¼Œã‚³ãƒ³ãƒ‘イルも行ã‚れã¾ã›ã‚“.
+
+== dependを用æ„ã™ã‚‹
+
+ã‚‚ã—,ディレクトリã«dependã¨ã„ã†ãƒ•ァイルãŒå­˜åœ¨ã™ã‚Œã°ï¼Œ
+MakefileãŒä¾å­˜é–¢ä¿‚ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãれã¾ã™ï¼Ž
+
+ % gcc -MM *.c > depend
+
+ãªã©ã§ä½œã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼Žã‚ã£ã¦æã¯ç„¡ã„ã§ã—ょã†ï¼Ž
+
+== Makefileを生æˆã™ã‚‹
+
+Makefileを実際ã«ç”Ÿæˆã™ã‚‹ãŸã‚ã«ã¯
+
+ ruby extconf.rb
+
+ã¨ã—ã¾ã™ï¼Žextconf.rbã« require 'mkmf' ã®è¡ŒãŒãªã„å ´åˆã«ã¯ã‚¨ãƒ©ãƒ¼
+ã«ãªã‚Šã¾ã™ã®ã§ï¼Œå¼•数を追加ã—ã¦
+
+ ruby -r mkmf extconf.rb
+
+ã¨ã—ã¦ãã ã•ã„.
+
+site_ruby ディレクトリã§ãªã,
+vendor_ruby ディレクトリã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å ´åˆã«ã¯
+以下ã®ã‚ˆã†ã« --vendor オプションを加ãˆã¦ãã ã•ã„.
+
+ ruby extconf.rb --vendor
+
+ディレクトリをext以下ã«ç”¨æ„ã—ãŸå ´åˆã«ã¯Ruby全体ã®makeã®æ™‚ã«
+自動的ã«MakefileãŒç”Ÿæˆã•れã¾ã™ã®ã§ï¼Œã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã¯ä¸è¦ã§ã™ï¼Ž
+
+== makeã™ã‚‹
+
+動的リンクライブラリを生æˆã™ã‚‹å ´åˆã«ã¯ãã®å ´ã§makeã—ã¦ãã ã•
+ã„.必è¦ã§ã‚れ㰠make install ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¾ã™ï¼Ž
+
+ext以下ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’用æ„ã—ãŸå ´åˆã¯ï¼ŒRubyã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§
+makeを実行ã™ã‚‹ã¨Makefileを生æˆã‹ã‚‰make,必è¦ã«ã‚ˆã£ã¦ã¯ãã®ãƒ¢
+ジュールã®Rubyã¸ã®ãƒªãƒ³ã‚¯ã¾ã§è‡ªå‹•çš„ã«å®Ÿè¡Œã—ã¦ãれã¾ã™ï¼Ž
+extconf.rbã‚’æ›¸ãæ›ãˆã‚‹ãªã©ã—ã¦Makefileã®å†ç”ŸæˆãŒå¿…è¦ãªæ™‚ã¯ã¾
+ãŸRubyディレクトリã§makeã—ã¦ãã ã•ã„.
+
+拡張ライブラリã¯make installã§Rubyライブラリã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®
+下ã«ã‚³ãƒ”ーã•れã¾ã™ï¼Žã‚‚ã—æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã¨å”調ã—ã¦ä½¿ã†Rubyã§è¨˜
+è¿°ã•れãŸãƒ—ログラムãŒã‚り,Rubyライブラリã«ç½®ããŸã„å ´åˆã«ã¯ï¼Œ
+拡張ライブラリ用ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸‹ã« lib ã¨ã„ã†ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª
+を作り,ãã“ã« æ‹¡å¼µå­ .rb ã®ãƒ•ァイルを置ã„ã¦ãŠã‘ã°åŒæ™‚ã«ã‚¤ãƒ³
+ストールã•れã¾ã™ï¼Ž
+
+== デãƒãƒƒã‚°
+
+ã¾ã‚,デãƒãƒƒã‚°ã—ãªã„ã¨å‹•ã‹ãªã„ã§ã—ょã†ã­ï¼Žext/Setupã«ãƒ‡ã‚£ãƒ¬
+クトリåを書ãã¨é™çš„ã«ãƒªãƒ³ã‚¯ã™ã‚‹ã®ã§ãƒ‡ãƒãƒƒã‚¬ãŒä½¿ãˆã‚‹ã‚ˆã†ã«ãª
+りã¾ã™ï¼Žãã®åˆ†ã‚³ãƒ³ãƒ‘イルãŒé…ããªã‚Šã¾ã™ã‘ã©ï¼Ž
+
+== ã§ãã‚ãŒã‚Š
+
+後ã¯ã“ã£ãり使ã†ãªã‚Šï¼Œåºƒã公開ã™ã‚‹ãªã‚Šï¼Œå£²ã‚‹ãªã‚Šï¼Œã”自由ã«ãŠ
+使ã„ãã ã•ã„.Rubyã®ä½œè€…ã¯æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã«é–¢ã—ã¦ä¸€åˆ‡ã®æ¨©åˆ©ã‚’
+主張ã—ã¾ã›ã‚“.
+
+= Appendix A. Rubyã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®åˆ†é¡ž
+
+Rubyã®ã‚½ãƒ¼ã‚¹ã¯ã„ãã¤ã‹ã«åˆ†é¡žã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ï¼Žã“ã®ã†ã¡ã‚¯ãƒ©
+スライブラリã®éƒ¨åˆ†ã¯åŸºæœ¬çš„ã«æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã¨åŒã˜ä½œã‚Šæ–¹ã«ãªã£
+ã¦ã„ã¾ã™ï¼Žã“れらã®ã‚½ãƒ¼ã‚¹ã¯ä»Šã¾ã§ã®èª¬æ˜Žã§ã»ã¨ã‚“ã©ç†è§£ã§ãã‚‹ã¨
+æ€ã„ã¾ã™ï¼Ž
+
+== Ruby言語ã®ã‚³ã‚¢
+
+class.c :: クラスã¨ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«
+error.c :: 例外クラスã¨ä¾‹å¤–機構
+gc.c :: 記憶領域管ç†
+load.c :: ライブラリã®ãƒ­ãƒ¼ãƒ‰
+object.c :: オブジェクト
+variable.c :: 変数ã¨å®šæ•°
+
+== Rubyã®æ§‹æ–‡è§£æžå™¨
+
+ parse.y : å­—å¥è§£æžå™¨ã¨æ§‹æ–‡å®šç¾©
+ -> parse.c : 自動生æˆ
+ keywords : 予約語
+ -> lex.c : 自動生æˆ
+
+== Rubyã®è©•価器 (通称YARV)
+ compile.c
+ eval.c
+ eval_error.c
+ eval_jump.c
+ eval_safe.c
+ insns.def : 仮想機械語ã®å®šç¾©
+ iseq.c : VM::ISeqã®å®Ÿè£…
+ thread.c : スレッド管ç†ã¨ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆåˆ‡ã‚Šæ›¿ãˆ
+ thread_win32.c : スレッド実装
+ thread_pthread.c : åŒä¸Š
+ vm.c
+ vm_dump.c
+ vm_eval.c
+ vm_exec.c
+ vm_insnhelper.c
+ vm_method.c
+
+ opt_insns_unif.def : 命令èžåˆ
+ opt_operand.def : 最é©åŒ–ã®ãŸã‚ã®å®šç¾©
+
+ -> insn*.inc : 自動生æˆ
+ -> opt*.inc : 自動生æˆ
+ -> vm.inc : 自動生æˆ
+
+== æ­£è¦è¡¨ç¾ã‚¨ãƒ³ã‚¸ãƒ³ (鬼車)
+
+ regex.c
+ regcomp.c
+ regenc.c
+ regerror.c
+ regexec.c
+ regparse.c
+ regsyntax.c
+
+== ユーティリティ関数
+
+debug.c :: Cデãƒãƒƒã‚¬ç”¨ã®ãƒ‡ãƒãƒƒã‚°ã‚·ãƒ³ãƒœãƒ«
+dln.c :: 動的ローディング
+st.c :: 汎用ãƒãƒƒã‚·ãƒ¥è¡¨
+strftime.c :: 時刻整形
+util.c :: ãã®ä»–ã®ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£
+
+== Rubyコマンドã®å®Ÿè£…
+
+ dmyext.c
+ dmydln.c
+ dmyencoding.c
+ id.c
+ inits.c
+ main.c
+ ruby.c
+ version.c
+
+ gem_prelude.rb
+ prelude.rb
+
+== クラスライブラリ
+
+array.c :: Array
+bignum.c :: Bignum
+compar.c :: Comparable
+complex.c :: Complex
+cont.c :: Fiber, Continuation
+dir.c :: Dir
+enum.c :: Enumerable
+enumerator.c :: Enumerator
+file.c :: File
+hash.c :: Hash
+io.c :: IO
+marshal.c :: Marshal
+math.c :: Math
+numeric.c :: Numeric, Integer, Fixnum, Float
+pack.c :: Array#pack, String#unpack
+proc.c :: Binding, Proc
+process.c :: Process
+random.c :: 乱数
+range.c :: Range
+rational.c :: Rational
+re.c :: Regexp, MatchData
+signal.c :: Signal
+sprintf.c :: String#sprintf
+string.c :: String
+struct.c :: Struct
+time.c :: Time
+defs/known_errors.def :: 例外クラス Errno::*
+-> known_errors.inc :: 自動生æˆ
+
+== 多言語化
+
+encoding.c :: Encoding
+transcode.c :: Encoding::Converter
+enc/*.c :: エンコーディングクラス群
+enc/trans/* :: コードãƒã‚¤ãƒ³ãƒˆå¯¾å¿œè¡¨
+
+== gorubyコマンドã®å®Ÿè£…
+
+ goruby.c
+ golf_prelude.rb : goruby固有ã®ãƒ©ã‚¤ãƒ–ラリ
+ -> golf_prelude.c : 自動生æˆ
+
+= Appendix B. 拡張用関数リファレンス
+
+C言語ã‹ã‚‰Rubyã®æ©Ÿèƒ½ã‚’利用ã™ã‚‹APIã¯ä»¥ä¸‹ã®é€šã‚Šã§ã‚る.
+
+== åž‹
+
+VALUE ::
+
+ Rubyオブジェクトを表ç¾ã™ã‚‹åž‹ï¼Žå¿…è¦ã«å¿œã˜ã¦ã‚­ãƒ£ã‚¹ãƒˆã—ã¦ç”¨ã„る.
+ 組ã¿è¾¼ã¿åž‹ã‚’表ç¾ã™ã‚‹Cã®åž‹ã¯ruby.hã«è¨˜è¿°ã—ã¦ã‚ã‚‹Rã§å§‹ã¾ã‚‹æ§‹é€ 
+ 体ã§ã‚る.VALUE型をã“れらã«ã‚­ãƒ£ã‚¹ãƒˆã™ã‚‹ãŸã‚ã«Rã§å§‹ã¾ã‚‹æ§‹é€ ä½“
+ åã‚’å…¨ã¦å¤§æ–‡å­—ã«ã—ãŸåå‰ã®ãƒžã‚¯ãƒ­ãŒç”¨æ„ã•れã¦ã„る.
+
+== 変数・定数
+
+Qnil ::
+
+ 定数: nilオブジェクト
+
+Qtrue ::
+
+ 定数: trueオブジェクト(真ã®ãƒ‡ãƒ•ォルト値)
+
+Qfalse ::
+
+ 定数: falseオブジェクト
+
+== Cデータã®ã‚«ãƒ—セル化
+
+Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval) ::
+
+ Cã®ä»»æ„ã®ãƒã‚¤ãƒ³ã‚¿ã‚’カプセル化ã—ãŸRubyオブジェクトを返ã™ï¼Žã“
+ ã®ãƒã‚¤ãƒ³ã‚¿ãŒRubyã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã•れãªããªã£ãŸæ™‚,freeã§æŒ‡å®šã—ãŸ
+ 関数ãŒå‘¼ã°ã‚Œã‚‹ï¼Žã¾ãŸï¼Œã“ã®ãƒã‚¤ãƒ³ã‚¿ã®æŒ‡ã™ãƒ‡ãƒ¼ã‚¿ãŒä»–ã®Rubyオブ
+ ジェクトを指ã—ã¦ã„ã‚‹å ´åˆï¼Œmarkã«æŒ‡å®šã™ã‚‹é–¢æ•°ã§ãƒžãƒ¼ã‚¯ã™ã‚‹å¿…è¦
+ ãŒã‚る.
+
+Data_Make_Struct(klass, type, mark, free, sval) ::
+
+ typeåž‹ã®ãƒ¡ãƒ¢ãƒªã‚’mallocã—,変数svalã«ä»£å…¥ã—ãŸå¾Œï¼Œãれをカプセ
+ ル化ã—ãŸãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã™ãƒžã‚¯ãƒ­ï¼Ž
+
+Data_Get_Struct(data, type, sval) ::
+
+ dataã‹ã‚‰typeåž‹ã®ãƒã‚¤ãƒ³ã‚¿ã‚’å–り出ã—変数svalã«ä»£å…¥ã™ã‚‹ãƒžã‚¯ãƒ­ï¼Ž
+
+== åž‹ãƒã‚§ãƒƒã‚¯
+
+ TYPE(value)
+ FIXNUM_P(value)
+ NIL_P(value)
+ void Check_Type(VALUE value, int type)
+ SafeStringValue(value)
+
+== 型変æ›
+
+ FIX2INT(value), INT2FIX(i)
+ FIX2LONG(value), LONG2FIX(l)
+ NUM2INT(value), INT2NUM(i)
+ NUM2UINT(value), UINT2NUM(ui)
+ NUM2LONG(value), LONG2NUM(l)
+ NUM2ULONG(value), ULONG2NUM(ul)
+ NUM2LL(value), LL2NUM(ll)
+ NUM2ULL(value), ULL2NUM(ull)
+ NUM2OFFT(value), OFFT2NUM(off)
+ NUM2SIZET(value), SIZET2NUM(size)
+ NUM2SSIZET(value), SSIZET2NUM(ssize)
+ rb_integer_pack(value, words, numwords, wordsize, nails, flags), rb_integer_unpack(words, numwords, wordsize, nails, flags)
+ NUM2DBL(value)
+ rb_float_new(f)
+ StringValue(value)
+ StringValuePtr(value)
+ StringValueCStr(value)
+ rb_str_new2(s)
+
+== クラス/モジュール定義
+
+VALUE rb_define_class(const char *name, VALUE super) ::
+
+ superã®ã‚µãƒ–クラスã¨ã—ã¦æ–°ã—ã„Rubyクラスを定義ã™ã‚‹ï¼Ž
+
+VALUE rb_define_class_under(VALUE module, const char *name, VALUE super) ::
+
+ superã®ã‚µãƒ–クラスã¨ã—ã¦æ–°ã—ã„Rubyクラスを定義ã—,moduleã®
+ 定数ã¨ã—ã¦å®šç¾©ã™ã‚‹ï¼Ž
+
+VALUE rb_define_module(const char *name) ::
+
+ æ–°ã—ã„Rubyモジュールを定義ã™ã‚‹ï¼Ž
+
+VALUE rb_define_module_under(VALUE module, const char *name) ::
+
+ æ–°ã—ã„Rubyモジュールを定義ã—,moduleã®å®šæ•°ã¨ã—ã¦å®šç¾©ã™ã‚‹ï¼Ž
+
+void rb_include_module(VALUE klass, VALUE module) ::
+
+ モジュールをインクルードã™ã‚‹ï¼ŽclassãŒã™ã§ã«moduleをインク
+ ルードã—ã¦ã„る時ã«ã¯ä½•ã‚‚ã—ãªã„(多é‡ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã®ç¦æ­¢).
+
+void rb_extend_object(VALUE object, VALUE module) ::
+
+ オブジェクトをモジュール(ã§å®šç¾©ã•れã¦ã„るメソッド)ã§æ‹¡å¼µã™ã‚‹ï¼Ž
+
+== 大域変数定義
+
+void rb_define_variable(const char *name, VALUE *var) ::
+
+ Rubyã¨Cã¨ã§å…±æœ‰ã™ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’定義ã™ã‚‹ï¼Žå¤‰æ•°åãŒ`$'ã§
+ å§‹ã¾ã‚‰ãªã„時ã«ã¯è‡ªå‹•çš„ã«è¿½åŠ ã•れる.nameã¨ã—ã¦Rubyã®è­˜åˆ¥å­
+ ã¨ã—ã¦è¨±ã•れãªã„文字(例ãˆã°` ')ã‚’å«ã‚€å ´åˆã«ã¯Rubyプログラ
+ ムã‹ã‚‰ã¯è¦‹ãˆãªããªã‚‹ï¼Ž
+
+void rb_define_readonly_variable(const char *name, VALUE *var) ::
+
+ Rubyã¨Cã¨ã§å…±æœ‰ã™ã‚‹read onlyã®ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’定義ã™ã‚‹ï¼Ž
+ read onlyã§ã‚ã‚‹ã“ã¨ä»¥å¤–ã¯rb_define_variable()ã¨åŒã˜ï¼Ž
+
+void rb_define_virtual_variable(const char *name, VALUE (*getter)(), void (*setter)()) ::
+
+ 関数ã«ã‚ˆã£ã¦å®Ÿç¾ã•れるRuby変数を定義ã™ã‚‹ï¼Žå¤‰æ•°ãŒå‚ç…§ã•れãŸ
+ 時ã«ã¯getterãŒï¼Œå¤‰æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•ã‚ŒãŸæ™‚ã«ã¯setterãŒå‘¼ã°ã‚Œ
+ る.
+
+void rb_define_hooked_variable(const char *name, VALUE *var, VALUE (*getter)(), void (*setter)()) ::
+
+ 関数ã«ã‚ˆã£ã¦hookã®ã¤ã‘られãŸã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°ã‚’定義ã™ã‚‹ï¼Žå¤‰æ•°
+ ãŒå‚ç…§ã•ã‚ŒãŸæ™‚ã«ã¯getterãŒï¼Œé–¢æ•°ã«å€¤ãŒã‚»ãƒƒãƒˆã•ã‚ŒãŸæ™‚ã«ã¯
+ setterãŒå‘¼ã°ã‚Œã‚‹ï¼Žgetterã‚„setterã«0を指定ã—ãŸæ™‚ã«ã¯hookã‚’
+ 指定ã—ãªã„ã®ã¨åŒã˜äº‹ã«ãªã‚‹ï¼Ž
+
+void rb_global_variable(VALUE *var)
+
+ GCã®ãŸã‚,Rubyプログラムã‹ã‚‰ã¯ã‚¢ã‚¯ã‚»ã‚¹ã•れãªã„ãŒ, Rubyオブ
+ ジェクトをå«ã‚€å¤§åŸŸå¤‰æ•°ã‚’マークã™ã‚‹ï¼Ž
+
+== 定数
+
+void rb_define_const(VALUE klass, const char *name, VALUE val) ::
+
+ 定数を定義ã™ã‚‹ï¼Ž
+
+void rb_define_global_const(const char *name, VALUE val) ::
+
+ 大域定数を定義ã™ã‚‹ï¼Ž
+
+ rb_define_const(rb_cObject, name, val)
+
+ ã¨åŒã˜æ„味.
+
+== メソッド定義
+
+rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
+
+ メソッドを定義ã™ã‚‹ï¼Žargcã¯selfを除ãå¼•æ•°ã®æ•°ï¼ŽargcãŒ-1ã®æ™‚,
+ 関数ã«ã¯å¼•æ•°ã®æ•°(selfã‚’å«ã¾ãªã„)を第1引数, 引数ã®é…列を第2
+ 引数ã¨ã™ã‚‹å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹(第3引数ã¯self).argcãŒ-2ã®æ™‚,
+ 第1引数ãŒself, 第2引数ãŒargs(argsã¯å¼•æ•°ã‚’å«ã‚€Rubyã®é…列)ã¨
+ ã„ã†å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž
+
+rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
+
+ privateメソッドを定義ã™ã‚‹ï¼Žå¼•æ•°ã¯rb_define_method()ã¨åŒã˜ï¼Ž
+
+rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
+
+ 特異メソッドを定義ã™ã‚‹ï¼Žå¼•æ•°ã¯rb_define_method()ã¨åŒã˜ï¼Ž
+
+rb_scan_args(int argc, VALUE *argv, const char *fmt, ...) ::
+
+ argc, argvå½¢å¼ã§ä¸Žãˆã‚‰ã‚ŒãŸæŒ‡å®šã•れãŸãƒ•ォーマットã«å¾“ã£ã¦å¼•
+ 数を分解ã—,続ãVALUEã¸ã®å‚ç…§ã«ã‚»ãƒƒãƒˆã—ã¾ã™ï¼Žã“ã®ãƒ•ォーマッ
+ トã¯ï¼ŒABNFã§è¨˜è¿°ã™ã‚‹ã¨ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼Ž
+
+ scan-arg-spec := param-arg-spec [option-hash-arg-spec] [block-arg-spec]
+
+ param-arg-spec := pre-arg-spec [post-arg-spec] / post-arg-spec /
+ pre-opt-post-arg-spec
+ pre-arg-spec := num-of-leading-mandatory-args [num-of-optional-args]
+ post-arg-spec := sym-for-variable-length-args
+ [num-of-trailing-mandatory-args]
+ pre-opt-post-arg-spec := num-of-leading-mandatory-args num-of-optional-args
+ num-of-trailing-mandatory-args
+ option-hash-arg-spec := sym-for-option-hash-arg
+ block-arg-spec := sym-for-block-arg
+
+ num-of-leading-mandatory-args := DIGIT ; 先頭ã«ç½®ã‹ã‚Œã‚‹çœç•¥ä¸èƒ½ãªå¼•æ•°ã®æ•°
+ num-of-optional-args := DIGIT ; ç¶šã„ã¦ç½®ã‹ã‚Œã‚‹çœç•¥å¯èƒ½ãªå¼•æ•°ã®æ•°
+ sym-for-variable-length-args := "*" ; ç¶šã„ã¦ç½®ã‹ã‚Œã‚‹å¯å¤‰é•·å¼•æ•°ã‚’
+ ; Rubyã®é…列ã§å–å¾—ã™ã‚‹ãŸã‚ã®æŒ‡å®š
+ num-of-trailing-mandatory-args := DIGIT ; 終端ã«ç½®ã‹ã‚Œã‚‹çœç•¥ä¸èƒ½ãªå¼•æ•°ã®æ•°
+ sym-for-option-hash-arg := ":" ; オプションãƒãƒƒã‚·ãƒ¥ã‚’å–å¾—ã™ã‚‹
+ ; ãŸã‚ã®æŒ‡å®š; çœç•¥ä¸èƒ½ãªå¼•æ•°ã®
+ ; 数よりも多ãã®å¼•æ•°ãŒæŒ‡å®šã•れ,
+ ; 最後ã®å¼•æ•°ãŒãƒãƒƒã‚·ãƒ¥ï¼ˆã¾ãŸã¯
+ ; #to_hashã§å¤‰æ›å¯èƒ½ï¼‰ã®å ´åˆã«
+ ; å–å¾—ã•れる.最後ã®å¼•æ•°ãŒnilã®
+ ; å ´åˆï¼Œå¯å¤‰é•·å¼•数指定ãŒãªã,
+ ; çœç•¥ä¸èƒ½å¼•æ•°ã®æ•°ã‚ˆã‚Šã‚‚多ãã®
+ ; å¼•æ•°ãŒæŒ‡å®šã•れãŸå ´åˆã«å–å¾—ã•れる
+ sym-for-block-arg := "&" ; イテレータブロックをå–å¾—ã™ã‚‹ãŸã‚ã®
+ ; 指定
+
+ フォーマットãŒ"12"ã®å ´åˆï¼Œå¼•æ•°ã¯æœ€ä½Ž1ã¤ã§ï¼Œ3ã¤(1+2)ã¾ã§è¨±ã•
+ れるã¨ã„ã†æ„味ã«ãªã‚Šã¾ã™ï¼Žå¾“ã£ã¦ï¼Œãƒ•ォーマット文字列ã«ç¶šã„
+ ã¦3ã¤ã®VALUEã¸ã®å‚ç…§ã‚’ç½®ãå¿…è¦ãŒã‚りã¾ã™ï¼Žãれらã«ã¯å–å¾—ã—ãŸ
+ 変数ãŒã‚»ãƒƒãƒˆã•れã¾ã™ï¼Žå¤‰æ•°ã¸ã®å‚ç…§ã®ä»£ã‚りã«NULLを指定ã™ã‚‹
+ ã“ã¨ã‚‚ã§ã,ãã®å ´åˆã¯å–å¾—ã—ãŸå¼•æ•°ã®å€¤ã¯æ¨ã¦ã‚‰ã‚Œã¾ã™ï¼ŽãªãŠï¼Œ
+ çœç•¥å¯èƒ½å¼•æ•°ãŒçœç•¥ã•ã‚ŒãŸæ™‚ã®å¤‰æ•°ã®å€¤ã¯nil(C言語ã®ãƒ¬ãƒ™ãƒ«ã§ã¯
+ Qnil)ã«ãªã‚Šã¾ã™ï¼Ž
+
+ 返り値ã¯ä¸Žãˆã‚‰ã‚ŒãŸå¼•æ•°ã®æ•°ã§ã™ï¼Žã‚ªãƒ—ションãƒãƒƒã‚·ãƒ¥ãŠã‚ˆã³ã‚¤
+ ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ãƒ­ãƒƒã‚¯ã¯æ•°ãˆã¾ã›ã‚“.
+
+== Rubyメソッド呼ã³å‡ºã—
+
+VALUE rb_funcall(VALUE recv, ID mid, int narg, ...) ::
+
+ メソッド呼ã³å‡ºã—.文字列ã‹ã‚‰midã‚’å¾—ã‚‹ãŸã‚ã«ã¯rb_intern()ã‚’
+ 使ã†ï¼Ž
+ private/protectedãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚‚呼ã³å‡ºã›ã‚‹ï¼Ž
+
+VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv) ::
+VALUE rb_funcallv(VALUE recv, ID mid, int argc, VALUE *argv) ::
+
+ メソッド呼ã³å‡ºã—.引数をargc, argvå½¢å¼ã§æ¸¡ã™ï¼Ž
+ private/protectedãªãƒ¡ã‚½ãƒƒãƒ‰ã§ã‚‚呼ã³å‡ºã›ã‚‹ï¼Ž
+
+VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, VALUE *argv) ::
+
+ メソッド呼ã³å‡ºã—.
+ publicãªãƒ¡ã‚½ãƒƒãƒ‰ã—ã‹å‘¼ã¹ãªã„.
+
+VALUE rb_eval_string(const char *str)
+
+ 文字列をRubyスクリプトã¨ã—ã¦ã‚³ãƒ³ãƒ‘イル・実行ã™ã‚‹ï¼Ž
+
+ID rb_intern(const char *name) ::
+
+ 文字列ã«å¯¾å¿œã™ã‚‹IDã‚’è¿”ã™ï¼Ž
+
+char *rb_id2name(ID id) ::
+
+ IDã«å¯¾å¿œã™ã‚‹æ–‡å­—列を返ã™(デãƒãƒƒã‚°ç”¨).
+
+char *rb_class2name(VALUE klass) ::
+
+ クラスã®åå‰ã‚’è¿”ã™(デãƒãƒƒã‚°ç”¨).クラスãŒåå‰ã‚’æŒãŸãªã„時ã«
+ ã¯, 祖先をé¡ã£ã¦åå‰ã‚’æŒã¤ã‚¯ãƒ©ã‚¹ã®åå‰ã‚’è¿”ã™ï¼Ž
+
+int rb_respond_to(VALUE obj, ID id) ::
+
+ objãŒidã§ç¤ºã•れるメソッドをæŒã¤ã‹ã©ã†ã‹ã‚’è¿”ã™ï¼Ž
+
+== インスタンス変数
+
+VALUE rb_iv_get(VALUE obj, const char *name) ::
+
+ objã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã®å€¤ã‚’得る.`@'ã§å§‹ã¾ã‚‰ãªã„インスタン
+ ス変数㯠Rubyプログラムã‹ã‚‰ã‚¢ã‚¯ã‚»ã‚¹ã§ããªã„「隠れãŸã€ã‚¤ãƒ³
+ スタンス変数ã«ãªã‚‹ï¼Žå®šæ•°ã¯å¤§æ–‡å­—ã®åå‰ã‚’æŒã¤ã‚¯ãƒ©ã‚¹(ã¾ãŸã¯
+ モジュール)ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã¨ã—ã¦å®Ÿè£…ã•れã¦ã„る.
+
+VALUE rb_iv_set(VALUE obj, const char *name, VALUE val) ::
+
+ objã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å¤‰æ•°ã‚’valã«ã‚»ãƒƒãƒˆã™ã‚‹ï¼Ž
+
+== 制御構造
+
+VALUE rb_block_call(VALUE obj, ID mid, int argc, VALUE * argv, VALUE (*func) (ANYARGS), VALUE data2) ::
+
+ funcをブロックã¨ã—ã¦è¨­å®šã—,objをレシーãƒï¼Œargcã¨argvを引数
+ ã¨ã—ã¦midメソッドを呼ã³å‡ºã™ï¼Žfuncã¯ç¬¬ä¸€å¼•æ•°ã«yieldã•れãŸå€¤ï¼Œ
+ 第二引数ã«data2ã‚’å—ã‘å–る.複数ã®å€¤ãŒyieldã•れãŸå ´åˆ(Cã§ã¯
+ rb_yield_values()ã¨rb_yield_values2(), rb_yield_splat()),
+ data2ã¯Arrayã¨ã—ã¦ãƒ‘ックã•れã¦ã„る.第三, 第四引数ã®argcã¨
+ argvã«ã‚ˆã£ã¦yieldã•れãŸå€¤ã‚’å–り出ã™ã“ã¨ãŒã§ãる.
+
+[OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
+
+ func2をブロックã¨ã—ã¦è¨­å®šã—, func1をイテレータã¨ã—ã¦å‘¼ã¶ï¼Ž
+ func1ã«ã¯ arg1ãŒå¼•æ•°ã¨ã—ã¦æ¸¡ã•れ, func2ã«ã¯ç¬¬1引数ã«ã‚¤ãƒ†ãƒ¬ãƒ¼
+ ã‚¿ã‹ã‚‰ä¸Žãˆã‚‰ã‚ŒãŸå€¤, 第2引数ã«arg2ãŒæ¸¡ã•れる.
+
+ 1.9ã§rb_iterateを使ã†å ´åˆã¯, func1ã®ä¸­ã§Rubyレベルã®ãƒ¡ã‚½ãƒƒãƒ‰
+ を呼ã³å‡ºã•ãªã‘れã°ãªã‚‰ãªã„.
+ 1.9ã§obsoleteã¨ãªã£ãŸ. 代ã‚りã«rb_block_callãŒç”¨æ„ã•れãŸ.
+
+VALUE rb_yield(VALUE val) ::
+
+ valを値ã¨ã—ã¦ã‚¤ãƒ†ãƒ¬ãƒ¼ã‚¿ãƒ–ロックを呼ã³å‡ºã™ï¼Ž
+
+VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
+
+ 関数func1ã‚’arg1を引数ã«å‘¼ã³å‡ºã™ï¼Žfunc1ã®å®Ÿè¡Œä¸­ã«ä¾‹å¤–ãŒç™ºç”Ÿ
+ ã—ãŸæ™‚ã«ã¯ func2ã‚’arg2を引数ã¨ã—ã¦å‘¼ã¶ï¼Žæˆ»ã‚Šå€¤ã¯ä¾‹å¤–ãŒç™ºç”Ÿ
+ ã—ãªã‹ã£ãŸæ™‚ã¯func1ã®æˆ»ã‚Šå€¤, 例外ãŒç™ºç”Ÿã—ãŸæ™‚ã«ã¯func2ã®æˆ»
+ り値ã§ã‚る.
+
+VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
+
+ 関数func1ã‚’arg1を引数ã¨ã—ã¦å®Ÿè¡Œã—, 実行終了後(ãŸã¨ãˆä¾‹å¤–ãŒ
+ 発生ã—ã¦ã‚‚) func2ã‚’arg2を引数ã¨ã—ã¦å®Ÿè¡Œã™ã‚‹ï¼Žæˆ»ã‚Šå€¤ã¯func1
+ ã®æˆ»ã‚Šå€¤ã§ã‚ã‚‹(例外ãŒç™ºç”Ÿã—ãŸæ™‚ã¯æˆ»ã‚‰ãªã„).
+
+VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state) ::
+
+ 関数funcã‚’argを引数ã¨ã—ã¦å®Ÿè¡Œã—, 例外ãŒç™ºç”Ÿã—ãªã‘れã°ãã®æˆ»
+ り値を返ã™ï¼Žä¾‹å¤–ãŒç™ºç”Ÿã—ãŸå ´åˆã¯, *stateã«éž0をセットã—ã¦
+ Qnilã‚’è¿”ã™ï¼Ž
+ rb_jump_tag()を呼ã°ãšã«æ•æ‰ã—ãŸä¾‹å¤–を無視ã™ã‚‹å ´åˆã«ã¯ï¼Œ
+ rb_set_errinfo(Qnil)ã§ã‚¨ãƒ©ãƒ¼æƒ…報をクリアã—ãªã‘れã°ãªã‚‰ãªã„.
+
+void rb_jump_tag(int state) ::
+
+ rb_protect()ã‚„rb_eval_string_protect()ã§æ•æ‰ã•れãŸä¾‹å¤–ã‚’å†
+ é€ã™ã‚‹ï¼Žstateã¯ãれらã®é–¢æ•°ã‹ã‚‰è¿”ã•れãŸå€¤ã§ãªã‘れã°ãªã‚‰ãªã„.
+ ã“ã®é–¢æ•°ã¯ç›´æŽ¥ã®å‘¼ã³å‡ºã—å…ƒã«æˆ»ã‚‰ãªã„.
+
+void rb_iter_break() ::
+
+ ç¾åœ¨ã®æœ€ã‚‚内å´ã®ãƒ–ロックを終了ã™ã‚‹ï¼Žã“ã®é–¢æ•°ã¯ç›´æŽ¥ã®å‘¼ã³å‡º
+ ã—å…ƒã«æˆ»ã‚‰ãªã„.
+
+void rb_iter_break_value(VALUE value) ::
+
+ ç¾åœ¨ã®æœ€ã‚‚内å´ã®ãƒ–ロックをvalueã§çµ‚了ã™ã‚‹ï¼Žãƒ–ロックã¯å¼•æ•°ã§
+ 与ãˆã‚‰ã‚ŒãŸvalueã‚’è¿”ã™ï¼Žã“ã®é–¢æ•°ã¯ç›´æŽ¥ã®å‘¼ã³å‡ºã—å…ƒã«æˆ»ã‚‰ãªã„.
+
+== 例外・エラー
+
+void rb_warning(const char *fmt, ...) ::
+
+ rb_verboseæ™‚ã«æ¨™æº–エラー出力ã«è­¦å‘Šæƒ…報を表示ã™ã‚‹ï¼Žå¼•æ•°ã¯
+ printf()ã¨åŒã˜ï¼Ž
+
+void rb_raise(rb_eRuntimeError, const char *fmt, ...) ::
+
+ RuntimeError例外を発生ã•ã›ã‚‹ï¼Žå¼•æ•°ã¯printf()ã¨åŒã˜ï¼Ž
+
+void rb_raise(VALUE exception, const char *fmt, ...) ::
+
+ exceptionã§æŒ‡å®šã—ãŸä¾‹å¤–を発生ã•ã›ã‚‹ï¼Žfmt以下ã®å¼•æ•°ã¯
+ printf()ã¨åŒã˜ï¼Ž
+
+void rb_fatal(const char *fmt, ...) ::
+
+ 致命的例外を発生ã•ã›ã‚‹ï¼Žé€šå¸¸ã®ä¾‹å¤–処ç†ã¯è¡Œãªã‚れãš, インター
+ プリタãŒçµ‚了ã™ã‚‹(ãŸã ã—ensureã§æŒ‡å®šã•れãŸã‚³ãƒ¼ãƒ‰ã¯çµ‚了å‰ã«
+ 実行ã•れる).
+
+void rb_bug(const char *fmt, ...) ::
+
+ インタープリタãªã©ãƒ—ログラムã®ãƒã‚°ã§ã—ã‹ç™ºç”Ÿã™ã‚‹ã¯ãšã®ãªã„
+ 状æ³ã®æ™‚呼ã¶ï¼Žã‚¤ãƒ³ã‚¿ãƒ¼ãƒ—リタã¯ã‚³ã‚¢ãƒ€ãƒ³ãƒ—ã—ç›´ã¡ã«çµ‚了ã™ã‚‹ï¼Ž
+ 例外処ç†ã¯ä¸€åˆ‡è¡Œãªã‚れãªã„.
+
+注æ„: %iã¯Object#to_s('+'ãƒ•ãƒ©ã‚°ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã¨ãã¯Object#inspect)ã‚’
+使ã£ãŸVALUEã®å‡ºåŠ›ã«ä½¿ç”¨ã•れã¦ã„ã‚‹ãŸã‚,整数ã«ã¯%dを使用ã™ã‚‹ã“ã¨ï¼Ž
+
+== Rubyã®åˆæœŸåŒ–・実行
+
+Rubyをアプリケーションã«åŸ‹ã‚込む場åˆã«ã¯ä»¥ä¸‹ã®ã‚¤ãƒ³ã‚¿ãƒ•ェース
+を使ã†ï¼Žé€šå¸¸ã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ラリã«ã¯å¿…è¦ãªã„.
+
+void ruby_init() ::
+
+ Rubyインタプリタã®åˆæœŸåŒ–を行ãªã†ï¼Ž
+
+void ruby_options(int argc, char **argv) ::
+
+ Rubyインタプリタã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³å¼•æ•°ã®å‡¦ç†ã‚’行ãªã†ï¼Ž
+
+void ruby_run() ::
+
+ Rubyインタプリタを実行ã™ã‚‹ï¼Ž
+
+void ruby_script(char *name) ::
+
+ Rubyã®ã‚¹ã‚¯ãƒªãƒ—トå($0)を設定ã™ã‚‹ï¼Ž
+
+== インタプリタã®ã‚¤ãƒ™ãƒ³ãƒˆã®ãƒ•ック
+
+ void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
+ VALUE data)
+
+指定ã•れãŸã‚¤ãƒ³ã‚¿ãƒ—リタã®ã‚¤ãƒ™ãƒ³ãƒˆã«å¯¾ã™ã‚‹ãƒ•ック関数を追加ã—ã¾ã™ï¼Ž
+eventsã¯ä»¥ä¸‹ã®å€¤ã®orã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“:
+
+ RUBY_EVENT_LINE
+ RUBY_EVENT_CLASS
+ RUBY_EVENT_END
+ RUBY_EVENT_CALL
+ RUBY_EVENT_RETURN
+ RUBY_EVENT_C_CALL
+ RUBY_EVENT_C_RETURN
+ RUBY_EVENT_RAISE
+ RUBY_EVENT_ALL
+
+rb_event_hook_func_tã®å®šç¾©ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™:
+
+ typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,
+ VALUE self, ID id, VALUE klass)
+
+rb_add_event_hook() ã®ç¬¬3引数 data ã¯ï¼Œãƒ•ック関数ã®ç¬¬2引数ã¨
+ã—ã¦æ¸¡ã•れã¾ã™ï¼Žã“れã¯1.8ã§ã¯ç¾åœ¨ã®NODEã¸ã®ãƒã‚¤ãƒ³ã‚¿ã§ã—ãŸï¼Žä»¥
+下㮠RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ã‚‚å‚ç…§ã—ã¦ãã ã•ã„.
+
+ int rb_remove_event_hook(rb_event_hook_func_t func)
+
+指定ã•れãŸãƒ•ック関数を削除ã—ã¾ã™ï¼Ž
+
+== äº’æ›æ€§ã®ãŸã‚ã®ãƒžã‚¯ãƒ­
+
+APIã®äº’æ›æ€§ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ãŸã‚ã«ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ãŒãƒ‡ãƒ•ォルトã§å®šç¾©ã•れã¦ã„ã¾ã™ï¼Ž
+
+NORETURN_STYLE_NEW ::
+
+ NORETURN マクロãŒé–¢æ•°åž‹ãƒžã‚¯ãƒ­ã¨ã—ã¦å®šç¾©ã•れã¦ã„ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ï¼Ž
+
+HAVE_RB_DEFINE_ALLOC_FUNC ::
+
+ rb_define_alloc_func() é–¢æ•°ãŒæä¾›ã•れã¦ã„ã‚‹ã“ã¨ï¼Œã¤ã¾ã‚Š
+ allocation framework ãŒä½¿ã‚れるã“ã¨ã‚’æ„味ã™ã‚‹ï¼Ž
+ have_func("rb_define_alloc_func", "ruby.h")
+ ã®çµæžœã¨åŒã˜ï¼Ž
+
+HAVE_RB_REG_NEW_STR ::
+
+ Stringオブジェクトã‹ã‚‰Regexpオブジェクトを作る
+ rb_reg_new_str() é–¢æ•°ãŒæä¾›ã•れã¦ã„ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ï¼Ž
+ have_func("rb_reg_new_str", "ruby.h").
+ ã®çµæžœã¨åŒã˜ï¼Ž
+
+HAVE_RB_IO_T ::
+
+ rb_io_t åž‹ãŒæä¾›ã•れã¦ã„ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ï¼Ž
+
+USE_SYMBOL_AS_METHOD_NAME ::
+
+ メソッドåã‚’è¿”ã™ãƒ¡ã‚½ãƒƒãƒ‰ï¼ŒModule#methods, #singleton_methods
+ ãªã©ãŒSymbolã‚’è¿”ã™ã“ã¨ã‚’æ„味ã™ã‚‹ï¼Ž
+
+HAVE_RUBY_*_H ::
+
+ ruby.h ã§å®šç¾©ã•れã¦ã„る.対応ã™ã‚‹ãƒ˜ãƒƒãƒ€ãŒæä¾›ã•れã¦ã„ã‚‹ã“ã¨
+ ã‚’æ„味ã™ã‚‹ï¼ŽãŸã¨ãˆã°ï¼ŒHAVE_RUBY_ST_H ãŒå®šç¾©ã•れã¦ã„ã‚‹å ´åˆã¯
+ å˜ãªã‚‹ st.h ã§ã¯ãªã ruby/st.h を使用ã™ã‚‹ï¼Ž
+
+RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ::
+
+ rb_add_event_hook() ãŒãƒ•ãƒƒã‚¯é–¢æ•°ã«æ¸¡ã™ data を第3引数ã¨ã—ã¦
+ å—ã‘å–ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ï¼Ž
+
+= Appendix C. extconf.rbã§ä½¿ãˆã‚‹é–¢æ•°ãŸã¡
+
+extconf.rbã®ä¸­ã§ã¯åˆ©ç”¨å¯èƒ½ãªã‚³ãƒ³ãƒ‘イルæ¡ä»¶ãƒã‚§ãƒƒã‚¯ã®é–¢æ•°ã¯ä»¥
+下ã®é€šã‚Šã§ã‚る.
+
+have_macro(macro, headers) ::
+
+ ヘッダファイルheaderをインクルードã—ã¦ãƒžã‚¯ãƒ­macroãŒå®šç¾©ã•
+ れã¦ã„ã‚‹ã‹ã©ã†ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒžã‚¯ãƒ­ãŒå®šç¾©ã•れã¦ã„る時true
+ ã‚’è¿”ã™ï¼Ž
+
+have_library(lib, func) ::
+
+ 関数funcを定義ã—ã¦ã„るライブラリlibã®å­˜åœ¨ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Ž
+ ãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œ-llibã‚’$libsã«è¿½åŠ ã—,trueã‚’è¿”ã™ï¼Ž
+
+find_library(lib, func, path...) ::
+
+ 関数funcを定義ã—ã¦ã„るライブラリlibã®å­˜åœ¨ã‚’ -Lpath を追加
+ ã—ãªãŒã‚‰ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œ-llibã‚’$libsã«
+ 追加ã—,trueã‚’è¿”ã™ï¼Ž
+
+have_func(func, header) ::
+
+ ヘッダファイルheaderをインクルードã—ã¦é–¢æ•°funcã®å­˜åœ¨ã‚’ãƒã‚§
+ ックã™ã‚‹ï¼ŽfuncãŒæ¨™æº–ã§ã¯ãƒªãƒ³ã‚¯ã•れãªã„ライブラリ内ã®ã‚‚ã®ã§
+ ã‚る時ã«ã¯å…ˆã«have_libraryã§ãã®ãƒ©ã‚¤ãƒ–ラリをãƒã‚§ãƒƒã‚¯ã—ã¦ãŠ
+ ã事.ãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ
+ `HAVE_{FUNC}` を定義ã—,trueã‚’è¿”ã™ï¼Ž
+
+have_var(var, header) ::
+
+ ヘッダファイルheaderをインクルードã—ã¦å¤‰æ•°varã®å­˜åœ¨ã‚’ãƒã‚§ãƒƒ
+ クã™ã‚‹ï¼ŽvarãŒæ¨™æº–ã§ã¯ãƒªãƒ³ã‚¯ã•れãªã„ライブラリ内ã®ã‚‚ã®ã§ã‚
+ る時ã«ã¯å…ˆã«have_libraryã§ãã®ãƒ©ã‚¤ãƒ–ラリをãƒã‚§ãƒƒã‚¯ã—ã¦ãŠã
+ 事.ãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ
+ `HAVE_{VAR}` を定義ã—,trueã‚’è¿”ã™ï¼Ž
+
+have_header(header) ::
+
+ ヘッダファイルã®å­˜åœ¨ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œ
+ プリプロセッサマクロ `HAVE_{HEADER_H}` を定義ã—,trueã‚’è¿”ã™ï¼Ž
+ (スラッシュやドットã¯ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã«ç½®æ›ã•れる)
+
+find_header(header, path...) ::
+
+ ヘッダファイルheaderã®å­˜åœ¨ã‚’ -Ipath を追加ã—ãªãŒã‚‰ãƒã‚§ãƒƒã‚¯
+ ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ
+ `HAVE_{HEADER_H}` を定義ã—,trueã‚’è¿”ã™ï¼Ž
+ (スラッシュやドットã¯ã‚¢ãƒ³ãƒ€ãƒ¼ã‚¹ã‚³ã‚¢ã«ç½®æ›ã•れる)
+
+have_struct_member(type, member[, header[, opt]]) ::
+
+ ヘッダファイルheaderをインクルードã—ã¦åž‹typeãŒå®šç¾©ã•れ,
+ ãªãŠã‹ã¤ãƒ¡ãƒ³ãƒmemberãŒå­˜åœ¨ã™ã‚‹ã‹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«
+ æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ `HAVE_{TYPE}_{MEMBER}` ã‚’
+ 定義ã—,trueã‚’è¿”ã™ï¼Ž
+
+have_type(type, header, opt) ::
+
+ ヘッダファイルheaderをインクルードã—ã¦åž‹typeãŒå­˜åœ¨ã™ã‚‹ã‹ã‚’
+ ãƒã‚§ãƒƒã‚¯ã™ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ
+ `HAVE_TYPE_{TYPE}` を定義ã—,trueã‚’è¿”ã™ï¼Ž
+
+check_sizeof(type, header) ::
+
+ ヘッダファイルheaderをインクルードã—ã¦åž‹typeã®charå˜ä½ã‚µã‚¤
+ ズを調ã¹ã‚‹ï¼Žãƒã‚§ãƒƒã‚¯ã«æˆåŠŸã™ã‚‹ã¨ï¼Œãƒ—リプロセッサマクロ
+ `SIZEOF_{TYPE}` を定義ã—,ãã®ã‚µã‚¤ã‚ºã‚’è¿”ã™ï¼Žå®šç¾©ã•れã¦ã„ãª
+ ã„ã¨ãã¯nilã‚’è¿”ã™ï¼Ž
+
+create_makefile(target[, target_prefix]) ::
+
+ 拡張ライブラリ用ã®Makefileを生æˆã™ã‚‹ï¼Žã“ã®é–¢æ•°ã‚’呼ã°ãªã‘れ
+ ã°ãã®ãƒ©ã‚¤ãƒ–ラリã¯ã‚³ãƒ³ãƒ‘イルã•れãªã„.targetã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«å
+ を表ã™ï¼Ž
+
+find_executable(command, path) ::
+
+ コマンドcommandã‚’File::PATH_SEPARATORã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒ‘スåã®
+ リストpathã‹ã‚‰æŽ¢ã™ï¼ŽpathãŒnilã¾ãŸã¯çœç•¥ã•れãŸå ´åˆã¯ï¼Œç’°å¢ƒ
+ 変数PATHã®å€¤ã‚’使用ã™ã‚‹ï¼Žå®Ÿè¡Œå¯èƒ½ãªã‚³ãƒžãƒ³ãƒ‰ãŒè¦‹ã¤ã‹ã£ãŸå ´åˆ
+ ã¯ãƒ‘スをå«ã‚€ãƒ•ァイルå,見ã¤ã‹ã‚‰ãªã‹ã£ãŸå ´åˆã¯nilã‚’è¿”ã™ï¼Ž
+
+with_config(withval[, default=nil]) ::
+
+ コマンドライン上ã®--with-<withval>ã§æŒ‡å®šã•れãŸã‚ªãƒ—ション値
+ を得る.
+
+enable_config(config, *defaults) ::
+disable_config(config, *defaults) ::
+
+ コマンドライン上ã®--enable-<config>ã¾ãŸã¯
+ --disable-<config>ã§æŒ‡å®šã•れãŸçœŸå½å€¤ã‚’得る.
+ --enable-<config>ãŒæŒ‡å®šã•れã¦ã„ãŸå ´åˆã¯true,
+ --disable-<config>ãŒæŒ‡å®šã•れã¦ã„ãŸå ´åˆã¯falseã‚’è¿”ã™ï¼Ž
+ ã©ã¡ã‚‰ã‚‚指定ã•れã¦ã„ãªã„å ´åˆã¯ï¼Œãƒ–ロックã¤ãã§å‘¼ã³å‡ºã•れã¦
+ ã„ã‚‹å ´åˆã¯*defaultsã‚’yieldã—ãŸçµæžœï¼Œãƒ–ロックãªã—ãªã‚‰
+ *defaultsã‚’è¿”ã™ï¼Ž
+
+dir_config(target[, default_dir]) ::
+dir_config(target[, default_include, default_lib]) ::
+
+ コマンドライン上ã®--with-<target>-dir, --with-<target>-include,
+ --with-<target>-libã®ã„ãšã‚Œã‹ã§æŒ‡å®šã•れるディレクトリを
+ $CFLAGS ã‚„ $LDFLAGS ã«è¿½åŠ ã™ã‚‹ï¼Ž--with-<target>-dir=/pathã¯
+ --with-<target>-include=/path/include --with-<target>-lib=/path/lib
+ ã¨ç­‰ä¾¡ã§ã‚る.追加ã•れ㟠include ディレクトリ㨠lib ディレ
+ クトリã®é…列を返ã™ï¼Ž ([include_dir, lib_dir])
+
+pkg_config(pkg, option=nil) ::
+
+ pkg-configコマンドã‹ã‚‰ãƒ‘ッケージpkgã®æƒ…報を [cflags, ldflags, libs]
+ ã®é…列ã¨ã—ã¦å¾—る.$CFLAGS, $LDFLAGS, $libs ã«ã¯ãれãžã‚Œã®å€¤ãŒ
+ 追加ã•れる.
+
+ pkg-configã®å®Ÿéš›ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ï¼Œä»¥ä¸‹ã®é †ã§è©¦ã•れる.
+
+ 1. コマンドラインã§--with-{pkg}-config={command}オプションãŒ
+ 指定ã•れãŸå ´åˆ: {command} {option}
+ 2. {pkg}-config {option}
+ 3. pkg-config {option} {pkg}
+
+ optionãŒæŒ‡å®šã•れãŸå ´åˆã¯ã€ä¸Šè¨˜ã®é…列ã®ä»£ã‚りã«ãã®ã‚ªãƒ—ションを
+ 指定ã—ã¦å¾—られãŸå‡ºåŠ›ã‚’stripã—ãŸã‚‚ã®ã‚’è¿”ã™ï¼Ž
+
+/*
+ * Local variables:
+ * fill-column: 60
+ * end:
+ */
diff --git a/README.ja b/README.ja
new file mode 100644
index 0000000000..9ab2f3ca0e
--- /dev/null
+++ b/README.ja
@@ -0,0 +1,192 @@
+= Rubyã¨ã¯
+
+Rubyã¯ã‚·ãƒ³ãƒ—ルã‹ã¤å¼·åŠ›ãªã‚ªãƒ–ジェクト指å‘スクリプト言語ã§ã™ï¼Ž
+Rubyã¯æœ€åˆã‹ã‚‰ç´”粋ãªã‚ªãƒ–ジェクト指å‘言語ã¨ã—ã¦è¨­è¨ˆã•れã¦ã„ã¾
+ã™ã‹ã‚‰ï¼Œã‚ªãƒ–ジェクト指å‘プログラミングを手軽ã«è¡Œã†äº‹ãŒå‡ºæ¥ã¾
+ã™ï¼Žã‚‚ã¡ã‚ã‚“é€šå¸¸ã®æ‰‹ç¶šãåž‹ã®ãƒ—ログラミングもå¯èƒ½ã§ã™ï¼Ž
+
+Rubyã¯ãƒ†ã‚­ã‚¹ãƒˆå‡¦ç†é–¢ä¿‚ã®èƒ½åŠ›ãªã©ã«å„ªã‚Œï¼ŒPerlã¨åŒã˜ãらã„強力
+ã§ã™ï¼Žã•らã«ã‚·ãƒ³ãƒ—ãƒ«ãªæ–‡æ³•ã¨ï¼Œä¾‹å¤–処ç†ã‚„イテレータãªã©ã®æ©Ÿæ§‹
+ã«ã‚ˆã£ã¦ï¼Œã‚ˆã‚Šåˆ†ã‹ã‚Šã‚„ã™ã„プログラミングãŒå‡ºæ¥ã¾ã™ï¼Ž
+
+
+== Rubyã®ç‰¹é•·
+
+* ã‚·ãƒ³ãƒ—ãƒ«ãªæ–‡æ³•
+* 普通ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘æ©Ÿèƒ½(クラス,メソッドコールãªã©)
+* 特殊ãªã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆæŒ‡å‘æ©Ÿèƒ½(Mixin, 特異メソッドãªã©)
+* 演算å­ã‚ªãƒ¼ãƒãƒ¼ãƒ­ãƒ¼ãƒ‰
+* ä¾‹å¤–å‡¦ç†æ©Ÿèƒ½
+* イテレータã¨ã‚¯ãƒ­ãƒ¼ã‚¸ãƒ£
+* ガーベージコレクタ
+* ダイナミックローディング (アーキテクãƒãƒ£ã«ã‚ˆã‚‹)
+* ç§»æ¤æ€§ãŒé«˜ã„.多ãã®Unix-like/POSIX互æ›ãƒ—ラットフォーム上ã§
+ å‹•ãã ã‘ã§ãªã,Windows, Mac OS X,BeOSãªã©ã®ä¸Šã§ã‚‚å‹•ã
+ cf. http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatformsJa
+
+== 入手法
+
+=== FTPã§
+
+以下ã®å ´æ‰€ã«ãŠã„ã¦ã‚りã¾ã™ï¼Ž
+
+ftp://ftp.ruby-lang.org/pub/ruby/
+
+=== Subversionã§
+
+開発先端ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã§å–å¾—ã§ãã¾ã™ï¼Ž
+
+ $ svn co http://svn.ruby-lang.org/repos/ruby/trunk/ ruby
+
+ä»–ã«é–‹ç™ºä¸­ã®ãƒ–ランãƒã®ä¸€è¦§ã¯æ¬¡ã®ã‚³ãƒžãƒ³ãƒ‰ã§è¦‹ã‚‰ã‚Œã¾ã™ï¼Ž
+
+ $ svn ls http://svn.ruby-lang.org/repos/ruby/branches/
+
+=== Gitã§
+
+Subversionã®ãƒŸãƒ©ãƒ¼ã‚’GitHubã«å…¬é–‹ã—ã¦ã„ã¾ã™ï¼Ž
+以下ã®ã‚³ãƒžãƒ³ãƒ‰ã§ãƒªãƒã‚¸ãƒˆãƒªã‚’å–å¾—ã§ãã¾ã™ï¼Ž
+
+ $ git clone git://github.com/ruby/ruby.git
+
+== ホームページ
+
+Rubyã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸ã®URLã¯
+
+http://www.ruby-lang.org/
+
+ã§ã™ï¼Ž
+
+
+== メーリングリスト
+
+Rubyã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆãŒã‚りã¾ã™ã€‚å‚åŠ å¸Œæœ›ã®æ–¹ã¯
+
+mailto:ruby-list-ctl@ruby-lang.org
+
+ã¾ã§æœ¬æ–‡ã«
+
+ subscribe YourFirstName YourFamilyName
+
+ã¨æ›¸ã„ã¦é€ã£ã¦ä¸‹ã•ã„。
+
+Ruby開発者å‘ã‘メーリングリストもã‚りã¾ã™ã€‚ã“ã¡ã‚‰ã§ã¯rubyã®ãƒ
+ã‚°ã€å°†æ¥ã®ä»•様拡張ãªã©å®Ÿè£…上ã®å•題ã«ã¤ã„ã¦è­°è«–ã•れã¦ã„ã¾ã™ã€‚
+å‚åŠ å¸Œæœ›ã®æ–¹ã¯
+
+mailto:ruby-dev-ctl@ruby-lang.org
+
+ã¾ã§ruby-listã¨åŒæ§˜ã®æ–¹æ³•ã§ãƒ¡ãƒ¼ãƒ«ã—ã¦ãã ã•ã„。
+
+Ruby拡張モジュールã«ã¤ã„ã¦è©±ã—åˆã†ruby-extメーリングリストã¨
+数学関係ã®è©±é¡Œã«ã¤ã„ã¦è©±ã—åˆã†ruby-mathメーリングリストã¨
+英語ã§è©±ã—åˆã†ruby-talkメーリングリストもã‚りã¾ã™ã€‚å‚加方法
+ã¯ã©ã‚Œã‚‚åŒã˜ã§ã™ã€‚
+
+
+== コンパイル・インストール
+
+ä»¥ä¸‹ã®æ‰‹é †ã§è¡Œã£ã¦ãã ã•ã„.
+
+1. ã‚‚ã— +configure+ ファイルãŒè¦‹ã¤ã‹ã‚‰ãªã„ã€ã‚‚ã—ãã¯
+ +configure.in+ よりå¤ã„よã†ãªã‚‰ã€ +autoconf+ を実行ã—ã¦
+ æ–°ã—ã +configure+ を生æˆã™ã‚‹
+
+2. +configure+ を実行ã—㦠+Makefile+ ãªã©ã‚’生æˆã™ã‚‹
+
+ 環境ã«ã‚ˆã£ã¦ã¯ãƒ‡ãƒ•ォルトã®Cコンパイラ用オプションãŒä»˜ã
+ ã¾ã™ï¼Ž +configure+ オプション㧠<tt>optflags=..</tt> <tt>warnflags=..</tt> ç­‰
+ ã§ä¸Šæ›¸ãã§ãã¾ã™ï¼Ž
+
+3. (å¿…è¦ãªã‚‰ã°)+defines.h+ を編集ã™ã‚‹
+
+ 多分,必è¦ç„¡ã„ã¨æ€ã„ã¾ã™ï¼Ž
+
+4. (å¿…è¦ãªã‚‰ã°)+ext/Setup+ ã«é™çš„ã«ãƒªãƒ³ã‚¯ã™ã‚‹æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’
+ 指定ã™ã‚‹
+
+ +ext/Setup+ ã«è¨˜è¿°ã—ãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯é™çš„ã«ãƒªãƒ³ã‚¯ã•れã¾ã™ï¼Ž
+
+ ダイナミックローディングをサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„アーキテク
+ ãƒãƒ£ã§ã¯ +Setup+ ã®1行目ã®ã€Œ<tt>option nodynamic</tt>ã€ã¨ã„ã†è¡Œã®ã‚³
+ メントを外ã™å¿…è¦ãŒã‚りã¾ã™ï¼Žã¾ãŸï¼Œã“ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§
+ 拡張モジュールを利用ã™ã‚‹ãŸã‚ã«ã¯ï¼Œã‚らã‹ã˜ã‚é™çš„ã«ãƒªãƒ³
+ クã—ã¦ãŠãå¿…è¦ãŒã‚りã¾ã™ï¼Ž
+
+5. +make+ を実行ã—ã¦ã‚³ãƒ³ãƒ‘イルã™ã‚‹
+
+6. <tt>make check</tt>ã§ãƒ†ã‚¹ãƒˆã‚’行ã†ï¼Ž
+
+ 「<tt>check succeeded</tt>ã€ã¨è¡¨ç¤ºã•ã‚Œã‚Œã°æˆåŠŸã§ã™ï¼ŽãŸã ã—テスト
+ ã«æˆåŠŸã—ã¦ã‚‚完璧ã ã¨ä¿è¨¼ã•れã¦ã„る訳ã§ã¯ã‚りã¾ã›ã‚“.
+
+7. <tt>make install</tt>
+
+ 以下ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’作ã£ã¦ï¼Œãã“ã«ãƒ•ァイルをインストー
+ ルã—ã¾ã™ï¼Ž
+
+ * <tt>${DESTDIR}${prefix}/bin</tt>
+ * <tt>${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}</tt>
+ * <tt>${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
+ * <tt>${DESTDIR}${prefix}/lib</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
+ * <tt>${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}</tt>
+ * <tt>${DESTDIR}${prefix}/share/man/man1</tt>
+ * <tt>${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system</tt>
+
+ Rubyã®APIãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒ'_x.y.z_'ã§ã‚れã°ï¼Œ<tt>${MAJOR}</tt>ã¯
+ '_x_'ã§ï¼Œ<tt>${MINOR}</tt>ã¯'_y_',<tt>${TEENY}</tt>ã¯'_z_'ã§ã™ï¼Ž
+
+ <b>注æ„</b>: APIãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® +teeny+ ã¯ï¼ŒRubyプログラムã®ãƒãƒ¼ã‚¸ãƒ§
+ ンã¨ã¯ç•°ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ï¼Ž
+
+ +root+ ã§ä½œæ¥­ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“.
+
+ã‚‚ã—,コンパイル時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆã«ã¯ã‚¨ãƒ©ãƒ¼ã®ãƒ­ã‚°ã¨ãƒž
+シン,OSã®ç¨®é¡žã‚’å«ã‚€ã§ãã‚‹ã ã‘詳ã—ã„レãƒãƒ¼ãƒˆã‚’作者ã«é€ã£ã¦ã
+ã ã•ã‚‹ã¨ä»–ã®æ–¹ã®ãŸã‚ã«ã‚‚ãªã‚Šã¾ã™ï¼Ž
+
+
+== ç§»æ¤
+
+UNIXã§ã‚れ㰠+configure+ ãŒã»ã¨ã‚“ã©ã®å·®ç•°ã‚’å¸åŽã—ã¦ãれるã¯ãšã§
+ã™ãŒï¼Œæ€ã‚ã¬è¦‹è½ã¨ã—ãŒã‚ã£ãŸå ´åˆ(ã‚ã‚‹ã«é•ã„ãªã„),作者ã«ãã®
+ã“ã¨ã‚’レãƒãƒ¼ãƒˆã™ã‚Œã°ï¼Œè§£æ±ºã§ãã‚‹ã‹ã‚‚知れã¾ã›ã‚“.
+
+アーキテクãƒãƒ£ã«ã‚‚ã£ã¨ã‚‚ä¾å­˜ã™ã‚‹ã®ã¯GC部ã§ã™ï¼ŽRubyã®GCã¯å¯¾è±¡
+ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ãŒ<tt>setjmp()</tt>ã¾ãŸã¯<tt>getcontext()</tt>ã«ã‚ˆã£ã¦å…¨ã¦ã®ãƒ¬
+ジスタを +jmp_buf+ ã‚„ +ucontext_t+ ã«æ ¼ç´ã™ã‚‹ã“ã¨ã¨ï¼Œ +jmp_buf+ ã‚„
++ucontext_t+ ã¨ã‚¹ã‚¿ãƒƒã‚¯ãŒ32bitアラインメントã•れã¦ã„ã‚‹ã“ã¨ã‚’仮定
+ã—ã¦ã„ã¾ã™ï¼Žç‰¹ã«å‰è€…ãŒæˆç«‹ã—ãªã„å ´åˆã®å¯¾å¿œã¯éžå¸¸ã«å›°é›£ã§ã—ょã†ï¼Ž
+後者ã®è§£æ±ºã¯æ¯”較的簡å˜ã§ï¼Œ +gc.c+ ã§ã‚¹ã‚¿ãƒƒã‚¯ã‚’マークã—ã¦ã„ã‚‹
+部分ã«ã‚¢ãƒ©ã‚¤ãƒ³ãƒ¡ãƒ³ãƒˆã®ãƒã‚¤ãƒˆæ•°ã ã‘ãšã‚‰ã—ã¦ãƒžãƒ¼ã‚¯ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’
+追加ã™ã‚‹ã ã‘ã§æ¸ˆã¿ã¾ã™ï¼Ž<tt>defined(\_\_mc68000\_\_)</tt>ã§æ‹¬ã‚‰ã‚Œã¦ã„
+る部分をå‚考ã«ã—ã¦ãã ã•ã„.
+
+レジスタウィンドウをæŒã¤CPUã§ã¯ï¼Œãƒ¬ã‚¸ã‚¹ã‚¿ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’スタッ
+クã«ãƒ•ラッシュã™ã‚‹ã‚¢ã‚»ãƒ³ãƒ–ラコードを追加ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚知
+れã¾ã›ã‚“.
+
+
+== é…布æ¡ä»¶
+
++COPYING.ja+ ファイルをå‚ç…§ã—ã¦ãã ã•ã„。
+
+
+== 著者
+
+コメント,ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆãã®ä»–㯠mailto:matz@ruby-lang.org ã¾ã§ï¼Ž
+-------------------------------------------------------
+created at: Thu Aug 3 11:57:36 JST 1995
+--
+Local variables:
+mode: rdoc
+end:
diff --git a/README.jp b/README.jp
deleted file mode 100644
index 8a100106b1..0000000000
--- a/README.jp
+++ /dev/null
@@ -1,150 +0,0 @@
-* Ruby¤È¤Ï
-
-Ruby¤Ï¥·¥ó¥×¥ë¤«¤Ä¶¯ÎϤʥª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥¹¥¯¥ê¥×¥È¸À¸ì¤Ç¤¹¡¥
-Ruby¤ÏºÇ½é¤«¤é½ã¿è¤Ê¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¸À¸ì¤È¤·¤ÆÀ߷פµ¤ì¤Æ¤¤¤Þ
-¤¹¤«¤é¡¤¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥°¤ò¼ê·Ú¤Ë¹Ô¤¦»ö¤¬½ÐÍè¤Þ
-¤¹¡¥¤â¤Á¤í¤óÄ̾ï¤Î¼ê³¤­·¿¤Î¥×¥í¥°¥é¥ß¥ó¥°¤â²Äǽ¤Ç¤¹¡¥
-
-Ruby¤Ï¥Æ¥­¥¹¥È½èÍý´Ø·¸¤ÎǽÎϤʤɤËÍ¥¤ì¡¤perl¤ÈƱ¤¸¤¯¤é¤¤¶¯ÎÏ
-¤Ç¤¹¡¥¤µ¤é¤Ë¥·¥ó¥×¥ë¤Êʸˡ¤È¡¤Îã³°½èÍý¤ä¥¤¥Æ¥ì¡¼¥¿¤Ê¤É¤Îµ¡¹½
-¤Ë¤è¤Ã¤Æ¡¤¤è¤êʬ¤«¤ê¤ä¤¹¤¤¥×¥í¥°¥é¥ß¥ó¥°¤¬½ÐÍè¤Þ¤¹¡¥
-
-* Ruby¤ÎÆÃĹ¡¥
-
- + ¥·¥ó¥×¥ë¤Êʸˡ
- + ÉáÄ̤Υª¥Ö¥¸¥§¥¯¥È»Ø¸þµ¡Ç½(¥¯¥é¥¹¡¤¥á¥½¥Ã¥É¥³¡¼¥ë¤Ê¤É)
- + ÆÃ¼ì¤Ê¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þµ¡Ç½(Mixin, ÆÃ°Û¥á¥½¥Ã¥É¤Ê¤É)
- + ±é»»»Ò¥ª¡¼¥Ð¡¼¥í¡¼¥É
- + Îã³°½èÍýµ¡Ç½
- + ¥¤¥Æ¥ì¡¼¥¿¤È¥¯¥í¡¼¥¸¥ã
- + ¥¬¡¼¥Ù¡¼¥¸¥³¥ì¥¯¥¿
- + ¥À¥¤¥Ê¥ß¥Ã¥¯¥í¡¼¥Ç¥£¥ó¥° (¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ë¤è¤ë)
- + °Ü¿¢À­¤¬¹â¤¤¡¥Â¿¤¯¤ÎUNIX¾å¤Çư¤¯
-
-* Æþ¼êË¡
-
-** ftp¤Ç
-
-°Ê²¼¤Î¾ì½ê¤Ë¤ª¤¤¤Æ¤¢¤ê¤Þ¤¹¡¥
-
- ftp://ftp.netlab.co.jp/pub/lang/ruby/
-
-* ¥Û¡¼¥à¥Ú¡¼¥¸
-
- Ruby¤Î¥Û¡¼¥à¥Ú¡¼¥¸¤ÎURL¤Ï
-
- http://www.netlab.co.jp/ruby/jp/
-
- ¤Ç¤¹¡¥
-
-* ¥á¥¤¥ê¥ó¥°¥ê¥¹¥È
-
- Ruby¤Ë´Ø¤ï¤ëÏÃÂê¤Î¤¿¤á¤Î¥á¥¤¥ê¥ó¥°¥ê¥¹¥È¤ò³«Àߤ·¤Þ¤·¤¿¡¥¥¢
- ¥É¥ì¥¹¤Ï
-
- ruby-list@netlab.co.jp
-
- ¤Ç¤¹¡¥¤³¤Î¥¢¥É¥ì¥¹¤Ë¥á¥¤¥ë¤òÁ÷¤ì¤Ð¡¤¼«Æ°Åª¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡¥
-
-* ¥³¥ó¥Ñ¥¤¥ë¡¦¥¤¥ó¥¹¥È¡¼¥ë
-
-°Ê²¼¤Î¼ê½ç¤Ç¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡¥
-
- 1. configure¤ò¼Â¹Ô¤·¤ÆMakefile¤Ê¤É¤òÀ¸À®¤¹¤ë
-
- 2. (ɬÍפʤé¤Ð)defines.h¤òÊÔ½¸¤¹¤ë
-
- ¿ʬ¡¤É¬Í×̵¤¤¤È»×¤¤¤Þ¤¹¡¥
-
- 3. (ɬÍפʤé¤Ð)ext/Setup¤ËÀÅŪ¤Ë¥ê¥ó¥¯¤¹¤ë³ÈÄ¥¥â¥¸¥å¡¼¥ë¤ò
- »ØÄꤹ¤ë
-
- ext/Setup¤Ëµ­½Ò¤·¤¿¥â¥¸¥å¡¼¥ë¤ÏÀÅŪ¤Ë¥ê¥ó¥¯¤µ¤ì¤Þ¤¹¡¥
-
- ¥À¥¤¥Ê¥ß¥Ã¥¯¥í¡¼¥Ç¥£¥ó¥°¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¥¢¡¼¥­¥Æ¥¯
- ¥Á¥ã¤Ç¤ÏSetup¤Î1¹ÔÌܤΡÖoption nodynamic¡×¤È¤¤¤¦¹Ô¤Î¥³
- ¥á¥ó¥È¤ò³°¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥¤Þ¤¿¡¤¤³¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç
- ³ÈÄ¥¥â¥¸¥å¡¼¥ë¤òÍøÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¤¤¢¤é¤«¤¸¤áÀÅŪ¤Ë¥ê¥ó
- ¥¯¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥
-
- 4. make¤ò¼Â¹Ô¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë
-
- 5. make test¤Ç¥Æ¥¹¥È¤ò¹Ô¤¦¡¥
-
- ¡Ötest succeeded¡×¤Èɽ¼¨¤µ¤ì¤ì¤ÐÀ®¸ù¤Ç¤¹¡¥¤¿¤À¤·¥Æ¥¹¥È
- ¤ËÀ®¸ù¤·¤Æ¤â´°àú¤À¤ÈÊݾڤµ¤ì¤Æ¤¤¤ëÌõ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥
-
- 6. make install
-
-¤â¤·¡¤¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¤Ï¥¨¥é¡¼¤Î¥í¥°¤È¥Þ
-¥·¥ó¡¤OS¤Î¼ïÎà¤ò´Þ¤à¤Ç¤­¤ë¤À¤±¾Ü¤·¤¤¥ì¥Ý¡¼¥È¤òºî¼Ô¤ËÁ÷¤Ã¤Æ¤¯
-¤À¤µ¤ë¤È¾¤ÎÊý¤Î¤¿¤á¤Ë¤â¤Ê¤ê¤Þ¤¹¡¥
-
-* °Ü¿¢
-
-UNIX¤Ç¤¢¤ì¤Ðconfigure¤¬¤Û¤È¤ó¤É¤Îº¹°Û¤òµÛ¼ý¤·¤Æ¤¯¤ì¤ë¤Ï¤º¤Ç
-¤¹¤¬¡¤»×¤ï¤Ì¸«Íî¤È¤·¤¬¤¢¤Ã¤¿¾ì¹ç(¤¢¤ë¤Ë°ã¤¤¤Ê¤¤)¡¤ºî¼Ô¤Ë¤½¤Î
-¤³¤È¤ò¥ì¥Ý¡¼¥È¤¹¤ì¤Ð¡¤²ò·è¤Ç¤­¤ë¤«¤âÃΤì¤Þ¤»¤ó¡¥
-
-¥¢¡¼¥¯¥Æ¥¯¥Á¥ã¤Ë¤â¤Ã¤È¤â°Í¸¤¹¤ë¤Î¤ÏGCÉô¤Ç¤¹¡¥ruby¤ÎGC¤ÏÂоÝ
-¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤¬setjmp()¤Ë¤è¤Ã¤ÆÁ´¤Æ¤Î¥ì¥¸¥¹¥¿¤ò jmp_buf¤Ë
-³ÊǼ¤¹¤ë¤³¤È¤È¡¤jmp_buf¤È¥¹¥¿¥Ã¥¯¤¬32bit¥¢¥é¥¤¥ó¥á¥ó¥È¤µ¤ì¤Æ
-¤¤¤ë¤³¤È¤ò²¾Äꤷ¤Æ¤¤¤Þ¤¹¡¥ÆÃ¤ËÁ°¼Ô¤¬À®Î©¤·¤Ê¤¤¾ì¹ç¤ÎÂбþ¤ÏÈó
-¾ï¤Ëº¤Æñ¤Ç¤·¤ç¤¦¡¥¸å¼Ô¤Î²ò·è¤ÏÈæ³ÓŪ´Êñ¤Ç¡¤gc.c¤Ç¥¹¥¿¥Ã¥¯¤ò
-¥Þ¡¼¥¯¤·¤Æ¤¤¤ëÉôʬ¤Ë¥¢¥é¥¤¥ó¥á¥ó¥È¤Î¥Ð¥¤¥È¿ô¤À¤±¤º¤é¤·¤Æ¥Þ¡¼
-¥¯¤¹¤ë¥³¡¼¥É¤òÄɲ乤ë¤À¤±¤ÇºÑ¤ß¤Þ¤¹¡¥¡Ödefined(THINK_C)¡×¤Ç
-³ç¤é¤ì¤Æ¤¤¤ëÉôʬ¤ò»²¹Í¤Ë¤·¤Æ¤¯¤À¤µ¤¤
-
-# ¼ÂºÝ¤Ë¤Ïruby¤ÏThink C¤Ç¤Ï¥³¥ó¥Ñ¥¤¥ë¤Ç¤­¤Þ¤»¤ó¡¥
-
-¥ì¥¸¥¹¥¿¥¦¥£¥ó¥É¥¦¤ò»ý¤ÄCPU¤Ç¤Ï¡¤¥ì¥¸¥¹¥¿¥¦¥£¥ó¥É¥¦¤ò¥¹¥¿¥Ã
-¥¯¤Ë¥Õ¥é¥Ã¥·¥å¤¹¤ë¥¢¥»¥ó¥Ö¥é¥³¡¼¥É¤òÄɲ乤ëɬÍפ¬¤¢¤ë¤«¤âÃÎ
-¤ì¤Þ¤»¤ó¡¥
-
-* ÇÛÉÛ¾ò·ï
-
-ºî¼Ô¤Ï°Ê²¼¤Î¾ò·ï¤Î¤â¤È¤Ëruby¤òÇÛÉÛ¤·¤Þ¤¹¡¥
-
- + ºÆÇÛÉÛ
-
- ÇÛÉÛ¤·¤¿¾õÂÖ¤ò°Ý»ý¤¹¤ë¸Â¤ê¼«Í³¤Ç¤¹¡¥Êѹ¹¤ò¹Ô¤Ã¤¿¤â¤Î¤òºÆ
- ÇÛÉÛ¤¹¤ë¤³¤È¤ò´õ˾¤¹¤ë»þ¤Ë¤Ïºî¼Ô¤ËÏ¢Íí¤·¤Æ¤¯¤À¤µ¤¤¡¥
-
- Êѹ¹¤ò¹Ô¤Ê¤ï¤Ê¤¤ruby¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥Ð¥¤¥Ê¥ê¤ÎÇÛÉۤ϶ػß
- ¤·¤Þ¤»¤ó¤¬¡¤¥Ð¥¤¥Ê¥ê¤ò¼õ¤±¼è¤Ã¤¿¿Í¤¬¥½¡¼¥¹¤òÆþ¼ê¤Ç¤­¤ë¤è
- ¤¦¤Ë¡¤¥½¡¼¥¹¤ÎÆþ¼êË¡¤òÌÀ¼¨¤·¤Æ¤¯¤À¤µ¤¤¡¥
-
- + Êѹ¹
-
- ºÆÇÛÉÛ¤ò¹Ô¤ï¤Ê¤¤¸Â¤ê¡¤¤¤¤«¤Ê¤ëÌÜŪ¤Ç¤¢¤ì¼«Í³¤Ç¤¹¡¥¤¿¤À¤·¡¤
- µ¡Ç½³ÈÄ¥¤ä¥Ð¥°½¤Àµ¤Ïºî¼Ô¤Ø¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤ò´üÂÔ¤·¤Þ¤¹
- (¤â¤Á¤í¤ó¶¯À©¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó)¡¥
-
- + ¾¤Î¥×¥í¥°¥é¥à¤Ø¤Î°úÍÑ
-
- ¤¤¤«¤Ê¤ëÌÜŪ¤Ç¤¢¤ì¼«Í³¤Ç¤¹¡¥¤¿¤À¤·¡¤ruby¤Ë´Þ¤Þ¤ì¤ë¾¤Îºî
- ¼Ô¤Ë¤è¤ë¥³¡¼¥É¤Ï¡¤¤½¤ì¤¾¤ì¤Îºî¼Ô¤Î°Õ¸þ¤Ë¤è¤ëÀ©¸Â¤¬²Ã¤¨¤é
- ¤ì¤Þ¤¹¡¥¶ñÂÎŪ¤Ë¤Ïgc.c(°ìÉô)¡¤util.c(°ìÉô)¡¤regex.[ch]¡¤
- fnmatch.[ch]¡¤glob.c¡¤st.[ch]¤È./missing¥Ç¥£¥ì¥¯¥È¥ê²¼¤Î
- ¥Õ¥¡¥¤¥ë·²¤¬³ºÅö¤·¤Þ¤¹¡¥
-
- + Ruby¥¹¥¯¥ê¥×¥È¤Î¸¢Íø
-
- Á´¤Æ¤Îruby¥¹¥¯¥ê¥×¥È¤Î¸¢Íø¤Ï¤½¤ì¤¾¤ì¤ÎÃøºî¼Ô¤Ë°¤·¤Þ¤¹¡¥
- ºî¼Ô¤Ï¤³¤ì¤é¤Ë´Ø¤·¤Æ°ìÀڤθ¢Íø¤ò¼çÄ¥¤·¤Þ¤»¤ó¡¥¤Þ¤¿ruby¤Ë
- ÁȤ߹þ¤à¤¿¤á¤Î³ÈÄ¥¥â¥¸¥å¡¼¥ë¤Ë´Ø¤·¤Æ¤âƱÍͤǤ¹¡¥
-
- + ̵ÊݾÚ
-
- Ruby¤Ï̵ÊݾڤǤ¹¡¥ºî¼Ô¤Ïruby¤ò¥µ¥Ý¡¼¥È¤¹¤ë°Õ»Ö¤Ï¤¢¤ê¤Þ¤¹
- ¤¬¡¤ruby¼«¿È¤Î¥Ð¥°¤¢¤ë¤¤¤Ïruby¥¹¥¯¥ê¥×¥È¤Î¥Ð¥°¤Ê¤É¤«¤éȯ
- À¸¤¹¤ë¤¤¤«¤Ê¤ë»³²¤ËÂФ·¤Æ¤âÀÕǤ¤ò»ý¤Á¤Þ¤»¤ó¡¥
-
-* Ãø¼Ô
-
-¥³¥á¥ó¥È¡¤¥Ð¥°¥ì¥Ý¡¼¥È¤½¤Î¾¤Ï matz@netlab.co.jp ¤Þ¤Ç¡¥
--------------------------------------------------------
-created at: Thu Aug 3 11:57:36 JST 1995
-Local variables:
-mode: indented-text
-end:
diff --git a/ToDo b/ToDo
deleted file mode 100644
index 3b6edee08f..0000000000
--- a/ToDo
+++ /dev/null
@@ -1,4 +0,0 @@
-* non-blocking open/write for thread
-* ¥Ñ¥Ã¥±¡¼¥¸¤Þ¤¿¤ÏÂç°èÊÑ¿ô¤Î¥¢¥¯¥»¥¹À©¸æ
-* formatµ¡Ç½
-* re-write regex code for speed and copyright
diff --git a/addr2line.c b/addr2line.c
new file mode 100644
index 0000000000..f936694724
--- /dev/null
+++ b/addr2line.c
@@ -0,0 +1,1082 @@
+/**********************************************************************
+
+ addr2line.c -
+
+ $Author$
+
+ Copyright (C) 2010 Shinichiro Hamaji
+
+**********************************************************************/
+
+#include "ruby/config.h"
+#include "ruby/missing.h"
+#include "addr2line.h"
+
+#include <stdio.h>
+#include <errno.h>
+
+#ifdef USE_ELF
+
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#ifdef __OpenBSD__
+#include <elf_abi.h>
+#else
+#include <elf.h>
+#endif
+
+/* Make alloca work the best possible way. */
+#ifdef __GNUC__
+# ifndef atarist
+# ifndef alloca
+# define alloca __builtin_alloca
+# endif
+# endif /* atarist */
+#else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+#pragma alloca
+# else
+# ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca();
+# endif
+# endif /* AIX */
+# endif /* HAVE_ALLOCA_H */
+#endif /* __GNUC__ */
+
+#ifdef HAVE_DL_ITERATE_PHDR
+# ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+# endif
+# include <link.h>
+#endif
+
+#define DW_LNS_copy 0x01
+#define DW_LNS_advance_pc 0x02
+#define DW_LNS_advance_line 0x03
+#define DW_LNS_set_file 0x04
+#define DW_LNS_set_column 0x05
+#define DW_LNS_negate_stmt 0x06
+#define DW_LNS_set_basic_block 0x07
+#define DW_LNS_const_add_pc 0x08
+#define DW_LNS_fixed_advance_pc 0x09
+#define DW_LNS_set_prologue_end 0x0a /* DWARF3 */
+#define DW_LNS_set_epilogue_begin 0x0b /* DWARF3 */
+#define DW_LNS_set_isa 0x0c /* DWARF3 */
+
+/* Line number extended opcode name. */
+#define DW_LNE_end_sequence 0x01
+#define DW_LNE_set_address 0x02
+#define DW_LNE_define_file 0x03
+#define DW_LNE_set_discriminator 0x04 /* DWARF4 */
+
+#ifndef ElfW
+# if SIZEOF_VOIDP == 8
+# define ElfW(x) Elf64##_##x
+# else
+# define ElfW(x) Elf32##_##x
+# endif
+#endif
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
+
+int kprintf(const char *fmt, ...);
+
+typedef struct {
+ const char *dirname;
+ const char *filename;
+ int line;
+
+ int fd;
+ void *mapped;
+ size_t mapped_size;
+ unsigned long base_addr;
+} line_info_t;
+
+/* Avoid consuming stack as this module may be used from signal handler */
+static char binary_filename[PATH_MAX];
+
+static unsigned long
+uleb128(char **p)
+{
+ unsigned long r = 0;
+ int s = 0;
+ for (;;) {
+ unsigned char b = *(unsigned char *)(*p)++;
+ if (b < 0x80) {
+ r += (unsigned long)b << s;
+ break;
+ }
+ r += (b & 0x7f) << s;
+ s += 7;
+ }
+ return r;
+}
+
+static long
+sleb128(char **p)
+{
+ long r = 0;
+ int s = 0;
+ for (;;) {
+ unsigned char b = *(unsigned char *)(*p)++;
+ if (b < 0x80) {
+ if (b & 0x40) {
+ r -= (0x80 - b) << s;
+ }
+ else {
+ r += (b & 0x3f) << s;
+ }
+ break;
+ }
+ r += (b & 0x7f) << s;
+ s += 7;
+ }
+ return r;
+}
+
+static const char *
+get_nth_dirname(unsigned long dir, char *p)
+{
+ if (!dir--) {
+ return "";
+ }
+ while (dir--) {
+ while (*p) p++;
+ p++;
+ if (!*p) {
+ kprintf("Unexpected directory number %lu in %s\n",
+ dir, binary_filename);
+ return "";
+ }
+ }
+ return p;
+}
+
+static void
+fill_filename(int file, char *include_directories, char *filenames,
+ line_info_t *line)
+{
+ int i;
+ char *p = filenames;
+ char *filename;
+ unsigned long dir;
+ for (i = 1; i <= file; i++) {
+ filename = p;
+ if (!*p) {
+ /* Need to output binary file name? */
+ kprintf("Unexpected file number %d in %s\n",
+ file, binary_filename);
+ return;
+ }
+ while (*p) p++;
+ p++;
+ dir = uleb128(&p);
+ /* last modified. */
+ uleb128(&p);
+ /* size of the file. */
+ uleb128(&p);
+
+ if (i == file) {
+ line->filename = filename;
+ line->dirname = get_nth_dirname(dir, include_directories);
+ }
+ }
+}
+
+static int
+get_path_from_symbol(const char *symbol, const char **p, size_t *len)
+{
+ if (symbol[0] == '0') {
+ /* libexecinfo */
+ *p = strchr(symbol, '/');
+ if (*p == NULL) return 0;
+ *len = strlen(*p);
+ }
+ else {
+ /* glibc */
+ const char *q;
+ *p = symbol;
+ q = strchr(symbol, '(');
+ if (q == NULL) return 0;
+ *len = q - symbol;
+ }
+ return 1;
+}
+
+static void
+fill_line(int num_traces, void **traces,
+ unsigned long addr, int file, int line,
+ char *include_directories, char *filenames, line_info_t *lines)
+{
+ int i;
+ for (i = 0; i < num_traces; i++) {
+ unsigned long a = (unsigned long)traces[i] - lines[i].base_addr;
+ /* We assume one line code doesn't result >100 bytes of native code.
+ We may want more reliable way eventually... */
+ if (addr < a && a < addr + 100) {
+ fill_filename(file, include_directories, filenames, &lines[i]);
+ lines[i].line = line;
+ }
+ }
+}
+
+static void
+parse_debug_line_cu(int num_traces, void **traces,
+ char **debug_line, line_info_t *lines)
+{
+ char *p, *cu_end, *cu_start, *include_directories, *filenames;
+ unsigned long unit_length;
+ int default_is_stmt, line_base;
+ unsigned int header_length, minimum_instruction_length, line_range,
+ opcode_base;
+ /* unsigned char *standard_opcode_lengths; */
+
+ /* The registers. */
+ unsigned long addr = 0;
+ unsigned int file = 1;
+ unsigned int line = 1;
+ /* unsigned int column = 0; */
+ int is_stmt;
+ /* int basic_block = 0; */
+ /* int end_sequence = 0; */
+ /* int prologue_end = 0; */
+ /* int epilogue_begin = 0; */
+ /* unsigned int isa = 0; */
+
+ p = *debug_line;
+
+ unit_length = *(unsigned int *)p;
+ p += sizeof(unsigned int);
+ if (unit_length == 0xffffffff) {
+ unit_length = *(unsigned long *)p;
+ p += sizeof(unsigned long);
+ }
+
+ cu_end = p + unit_length;
+
+ /*dwarf_version = *(unsigned short *)p;*/
+ p += 2;
+
+ header_length = *(unsigned int *)p;
+ p += sizeof(unsigned int);
+
+ cu_start = p + header_length;
+
+ minimum_instruction_length = *(unsigned char *)p;
+ p++;
+
+ is_stmt = default_is_stmt = *(unsigned char *)p;
+ p++;
+
+ line_base = *(char *)p;
+ p++;
+
+ line_range = *(unsigned char *)p;
+ p++;
+
+ opcode_base = *(unsigned char *)p;
+ p++;
+
+ /* standard_opcode_lengths = (unsigned char *)p - 1; */
+ p += opcode_base - 1;
+
+ include_directories = p;
+
+ /* skip include directories */
+ while (*p) {
+ while (*p) p++;
+ p++;
+ }
+ p++;
+
+ filenames = p;
+
+ p = cu_start;
+
+#define FILL_LINE() \
+ do { \
+ fill_line(num_traces, traces, addr, file, line, \
+ include_directories, filenames, lines); \
+ /*basic_block = prologue_end = epilogue_begin = 0;*/ \
+ } while (0)
+
+ while (p < cu_end) {
+ unsigned long a;
+ unsigned char op = *p++;
+ switch (op) {
+ case DW_LNS_copy:
+ FILL_LINE();
+ break;
+ case DW_LNS_advance_pc:
+ a = uleb128(&p);
+ addr += a;
+ break;
+ case DW_LNS_advance_line: {
+ long a = sleb128(&p);
+ line += a;
+ break;
+ }
+ case DW_LNS_set_file:
+ file = (unsigned int)uleb128(&p);
+ break;
+ case DW_LNS_set_column:
+ /*column = (unsigned int)*/(void)uleb128(&p);
+ break;
+ case DW_LNS_negate_stmt:
+ is_stmt = !is_stmt;
+ break;
+ case DW_LNS_set_basic_block:
+ /*basic_block = 1; */
+ break;
+ case DW_LNS_const_add_pc:
+ a = ((255 - opcode_base) / line_range) *
+ minimum_instruction_length;
+ addr += a;
+ break;
+ case DW_LNS_fixed_advance_pc:
+ a = *(unsigned char *)p++;
+ addr += a;
+ break;
+ case DW_LNS_set_prologue_end:
+ /* prologue_end = 1; */
+ break;
+ case DW_LNS_set_epilogue_begin:
+ /* epilogue_begin = 1; */
+ break;
+ case DW_LNS_set_isa:
+ /* isa = (unsigned int)*/(void)uleb128(&p);
+ break;
+ case 0:
+ a = *(unsigned char *)p++;
+ op = *p++;
+ switch (op) {
+ case DW_LNE_end_sequence:
+ /* end_sequence = 1; */
+ FILL_LINE();
+ addr = 0;
+ file = 1;
+ line = 1;
+ /* column = 0; */
+ is_stmt = default_is_stmt;
+ /* end_sequence = 0; */
+ /* isa = 0; */
+ break;
+ case DW_LNE_set_address:
+ addr = *(unsigned long *)p;
+ p += sizeof(unsigned long);
+ break;
+ case DW_LNE_define_file:
+ kprintf("Unsupported operation in %s\n",
+ binary_filename);
+ break;
+ case DW_LNE_set_discriminator:
+ /* TODO:currently ignore */
+ uleb128(&p);
+ break;
+ default:
+ kprintf("Unknown extended opcode: %d in %s\n",
+ op, binary_filename);
+ }
+ break;
+ default: {
+ unsigned long addr_incr;
+ unsigned long line_incr;
+ a = op - opcode_base;
+ addr_incr = (a / line_range) * minimum_instruction_length;
+ line_incr = line_base + (a % line_range);
+ addr += (unsigned int)addr_incr;
+ line += (unsigned int)line_incr;
+ FILL_LINE();
+ }
+ }
+ }
+ *debug_line = p;
+}
+
+static void
+parse_debug_line(int num_traces, void **traces,
+ char *debug_line, unsigned long size, line_info_t *lines)
+{
+ char *debug_line_end = debug_line + size;
+ while (debug_line < debug_line_end) {
+ parse_debug_line_cu(num_traces, traces, &debug_line, lines);
+ }
+ if (debug_line != debug_line_end) {
+ kprintf("Unexpected size of .debug_line in %s\n",
+ binary_filename);
+ }
+}
+
+/* read file and fill lines */
+static void
+fill_lines(int num_traces, void **traces, char **syms, int check_debuglink,
+ line_info_t *current_line, line_info_t *lines);
+
+static void
+follow_debuglink(char *debuglink, int num_traces, void **traces, char **syms,
+ line_info_t *current_line, line_info_t *lines)
+{
+ /* Ideally we should check 4 paths to follow gnu_debuglink,
+ but we handle only one case for now as this format is used
+ by some linux distributions. See GDB's info for detail. */
+ static const char global_debug_dir[] = "/usr/lib/debug";
+ char *p, *subdir;
+
+ p = strrchr(binary_filename, '/');
+ if (!p) {
+ return;
+ }
+ p[1] = '\0';
+
+ subdir = (char *)alloca(strlen(binary_filename) + 1);
+ strcpy(subdir, binary_filename);
+ strcpy(binary_filename, global_debug_dir);
+ strncat(binary_filename, subdir,
+ PATH_MAX - strlen(binary_filename) - 1);
+ strncat(binary_filename, debuglink,
+ PATH_MAX - strlen(binary_filename) - 1);
+
+ munmap(current_line->mapped, current_line->mapped_size);
+ close(current_line->fd);
+ fill_lines(num_traces, traces, syms, 0, current_line, lines);
+}
+
+/* read file and fill lines */
+static void
+fill_lines(int num_traces, void **traces, char **syms, int check_debuglink,
+ line_info_t *current_line, line_info_t *lines)
+{
+ int i;
+ char *shstr;
+ char *section_name;
+ ElfW(Ehdr) *ehdr;
+ ElfW(Shdr) *shdr, *shstr_shdr;
+ ElfW(Shdr) *debug_line_shdr = NULL, *gnu_debuglink_shdr = NULL;
+ int fd;
+ off_t filesize;
+ char *file;
+
+ fd = open(binary_filename, O_RDONLY);
+ if (fd < 0) {
+ return;
+ }
+ filesize = lseek(fd, 0, SEEK_END);
+ if (filesize < 0) {
+ int e = errno;
+ close(fd);
+ kprintf("lseek: %s\n", strerror(e));
+ return;
+ }
+#if SIZEOF_OFF_T > SIZEOF_SIZE_T
+ if (filesize > (off_t)SIZE_MAX) {
+ close(fd);
+ kprintf("Too large file %s\n", binary_filename);
+ return;
+ }
+#endif
+ lseek(fd, 0, SEEK_SET);
+ /* async-signal unsafe */
+ file = (char *)mmap(NULL, (size_t)filesize, PROT_READ, MAP_SHARED, fd, 0);
+ if (file == MAP_FAILED) {
+ int e = errno;
+ close(fd);
+ kprintf("mmap: %s\n", strerror(e));
+ return;
+ }
+
+ ehdr = (ElfW(Ehdr) *)file;
+ if (memcmp(ehdr->e_ident, "\177ELF", 4) != 0) {
+ /*
+ * Huh? Maybe filename was overridden by setproctitle() and
+ * it match non-elf file.
+ */
+ close(fd);
+ return;
+ }
+
+ current_line->fd = fd;
+ current_line->mapped = file;
+ current_line->mapped_size = (size_t)filesize;
+
+ for (i = 0; i < num_traces; i++) {
+ const char *path;
+ size_t len;
+ if (get_path_from_symbol(syms[i], &path, &len) &&
+ !strncmp(path, binary_filename, len)) {
+ lines[i].line = -1;
+ }
+ }
+
+ shdr = (ElfW(Shdr) *)(file + ehdr->e_shoff);
+
+ shstr_shdr = shdr + ehdr->e_shstrndx;
+ shstr = file + shstr_shdr->sh_offset;
+
+ for (i = 0; i < ehdr->e_shnum; i++) {
+ section_name = shstr + shdr[i].sh_name;
+ if (!strcmp(section_name, ".debug_line")) {
+ debug_line_shdr = shdr + i;
+ break;
+ } else if (!strcmp(section_name, ".gnu_debuglink")) {
+ gnu_debuglink_shdr = shdr + i;
+ }
+ }
+
+ if (!debug_line_shdr) {
+ /* This file doesn't have .debug_line section,
+ let's check .gnu_debuglink section instead. */
+ if (gnu_debuglink_shdr && check_debuglink) {
+ follow_debuglink(file + gnu_debuglink_shdr->sh_offset,
+ num_traces, traces, syms,
+ current_line, lines);
+ }
+ return;
+ }
+
+ parse_debug_line(num_traces, traces,
+ file + debug_line_shdr->sh_offset,
+ debug_line_shdr->sh_size,
+ lines);
+}
+
+#ifdef HAVE_DL_ITERATE_PHDR
+
+typedef struct {
+ int num_traces;
+ char **syms;
+ line_info_t *lines;
+} fill_base_addr_state_t;
+
+static int
+fill_base_addr(struct dl_phdr_info *info, size_t size, void *data)
+{
+ int i;
+ fill_base_addr_state_t *st = (fill_base_addr_state_t *)data;
+ for (i = 0; i < st->num_traces; i++) {
+ const char *path;
+ size_t len;
+ size_t name_len = strlen(info->dlpi_name);
+
+ if (get_path_from_symbol(st->syms[i], &path, &len) &&
+ (len == name_len || (len > name_len && path[len-name_len-1] == '/')) &&
+ !strncmp(path+len-name_len, info->dlpi_name, name_len)) {
+ st->lines[i].base_addr = info->dlpi_addr;
+ }
+ }
+ return 0;
+}
+
+#endif /* HAVE_DL_ITERATE_PHDR */
+
+void
+rb_dump_backtrace_with_lines(int num_traces, void **trace, char **syms)
+{
+ int i;
+ /* async-signal unsafe */
+ line_info_t *lines = (line_info_t *)calloc(num_traces,
+ sizeof(line_info_t));
+
+ /* Note that line info of shared objects might not be shown
+ if we don't have dl_iterate_phdr */
+#ifdef HAVE_DL_ITERATE_PHDR
+ fill_base_addr_state_t fill_base_addr_state;
+
+ fill_base_addr_state.num_traces = num_traces;
+ fill_base_addr_state.syms = syms;
+ fill_base_addr_state.lines = lines;
+ /* maybe async-signal unsafe */
+ dl_iterate_phdr(fill_base_addr, &fill_base_addr_state);
+#endif /* HAVE_DL_ITERATE_PHDR */
+
+ for (i = 0; i < num_traces; i++) {
+ const char *path;
+ size_t len;
+ if (lines[i].line) {
+ continue;
+ }
+
+ if (!get_path_from_symbol(syms[i], &path, &len)) {
+ continue;
+ }
+
+ strncpy(binary_filename, path, len);
+ binary_filename[len] = '\0';
+
+ fill_lines(num_traces, trace, syms, 1, &lines[i], lines);
+ }
+
+ for (i = 0; i < num_traces; i++) {
+ line_info_t *line = &lines[i];
+
+ if (line->line > 0) {
+ if (line->filename) {
+ if (line->dirname && line->dirname[0]) {
+ kprintf("%s %s/%s:%d\n", syms[i], line->dirname, line->filename, line->line);
+ }
+ else {
+ kprintf("%s %s:%d\n", syms[i], line->filename, line->line);
+ }
+ } else {
+ kprintf("%s ???:%d\n", syms[i], line->line);
+ }
+ } else {
+ kprintf("%s\n", syms[i]);
+ }
+ }
+
+ for (i = 0; i < num_traces; i++) {
+ line_info_t *line = &lines[i];
+ if (line->fd) {
+ munmap(line->mapped, line->mapped_size);
+ close(line->fd);
+ }
+ }
+ free(lines);
+}
+
+/* From FreeBSD's lib/libstand/printf.c */
+/*-
+ * Copyright (c) 1986, 1988, 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)subr_prf.c 8.3 (Berkeley) 1/21/94
+ */
+
+#include <stdarg.h>
+#define MAXNBUF (sizeof(intmax_t) * CHAR_BIT + 1)
+extern int rb_toupper(int c);
+#define toupper(c) rb_toupper(c)
+#define hex2ascii(hex) (hex2ascii_data[hex])
+char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz";
+static inline int imax(int a, int b) { return (a > b ? a : b); }
+static int kvprintf(char const *fmt, void (*func)(int), void *arg, int radix, va_list ap);
+
+static void putce(int c)
+{
+ char s[1];
+ ssize_t ret;
+
+ s[0] = (char)c;
+ ret = write(2, s, 1);
+ (void)ret;
+}
+
+int
+kprintf(const char *fmt, ...)
+{
+ va_list ap;
+ int retval;
+
+ va_start(ap, fmt);
+ retval = kvprintf(fmt, putce, NULL, 10, ap);
+ va_end(ap);
+ return retval;
+}
+
+/*
+ * Put a NUL-terminated ASCII number (base <= 36) in a buffer in reverse
+ * order; return an optional length and a pointer to the last character
+ * written in the buffer (i.e., the first character of the string).
+ * The buffer pointed to by `nbuf' must have length >= MAXNBUF.
+ */
+static char *
+ksprintn(char *nbuf, uintmax_t num, int base, int *lenp, int upper)
+{
+ char *p, c;
+
+ p = nbuf;
+ *p = '\0';
+ do {
+ c = hex2ascii(num % base);
+ *++p = upper ? toupper(c) : c;
+ } while (num /= base);
+ if (lenp)
+ *lenp = (int)(p - nbuf);
+ return (p);
+}
+
+/*
+ * Scaled down version of printf(3).
+ *
+ * Two additional formats:
+ *
+ * The format %b is supported to decode error registers.
+ * Its usage is:
+ *
+ * printf("reg=%b\n", regval, "<base><arg>*");
+ *
+ * where <base> is the output base expressed as a control character, e.g.
+ * \10 gives octal; \20 gives hex. Each arg is a sequence of characters,
+ * the first of which gives the bit number to be inspected (origin 1), and
+ * the next characters (up to a control character, i.e. a character <= 32),
+ * give the name of the register. Thus:
+ *
+ * kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n");
+ *
+ * would produce output:
+ *
+ * reg=3<BITTWO,BITONE>
+ *
+ * XXX: %D -- Hexdump, takes pointer and separator string:
+ * ("%6D", ptr, ":") -> XX:XX:XX:XX:XX:XX
+ * ("%*D", len, ptr, " " -> XX XX XX XX ...
+ */
+static int
+kvprintf(char const *fmt, void (*func)(int), void *arg, int radix, va_list ap)
+{
+#define PCHAR(c) {int cc=(c); if (func) (*func)(cc); else *d++ = cc; retval++; }
+ char nbuf[MAXNBUF];
+ char *d;
+ const char *p, *percent, *q;
+ unsigned char *up;
+ int ch, n;
+ uintmax_t num;
+ int base, lflag, qflag, tmp, width, ladjust, sharpflag, neg, sign, dot;
+ int cflag, hflag, jflag, tflag, zflag;
+ int dwidth, upper;
+ char padc;
+ int stop = 0, retval = 0;
+
+ num = 0;
+ if (!func)
+ d = (char *) arg;
+ else
+ d = NULL;
+
+ if (fmt == NULL)
+ fmt = "(fmt null)\n";
+
+ if (radix < 2 || radix > 36)
+ radix = 10;
+
+ for (;;) {
+ padc = ' ';
+ width = 0;
+ while ((ch = (unsigned char)*fmt++) != '%' || stop) {
+ if (ch == '\0')
+ return (retval);
+ PCHAR(ch);
+ }
+ percent = fmt - 1;
+ qflag = 0; lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
+ sign = 0; dot = 0; dwidth = 0; upper = 0;
+ cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
+reswitch: switch (ch = (unsigned char)*fmt++) {
+ case '.':
+ dot = 1;
+ goto reswitch;
+ case '#':
+ sharpflag = 1;
+ goto reswitch;
+ case '+':
+ sign = 1;
+ goto reswitch;
+ case '-':
+ ladjust = 1;
+ goto reswitch;
+ case '%':
+ PCHAR(ch);
+ break;
+ case '*':
+ if (!dot) {
+ width = va_arg(ap, int);
+ if (width < 0) {
+ ladjust = !ladjust;
+ width = -width;
+ }
+ } else {
+ dwidth = va_arg(ap, int);
+ }
+ goto reswitch;
+ case '0':
+ if (!dot) {
+ padc = '0';
+ goto reswitch;
+ }
+ case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ for (n = 0;; ++fmt) {
+ n = n * 10 + ch - '0';
+ ch = *fmt;
+ if (ch < '0' || ch > '9')
+ break;
+ }
+ if (dot)
+ dwidth = n;
+ else
+ width = n;
+ goto reswitch;
+ case 'b':
+ num = (unsigned int)va_arg(ap, int);
+ p = va_arg(ap, char *);
+ for (q = ksprintn(nbuf, num, *p++, NULL, 0); *q;)
+ PCHAR(*q--);
+
+ if (num == 0)
+ break;
+
+ for (tmp = 0; *p;) {
+ n = *p++;
+ if (num & (1 << (n - 1))) {
+ PCHAR(tmp ? ',' : '<');
+ for (; (n = *p) > ' '; ++p)
+ PCHAR(n);
+ tmp = 1;
+ } else
+ for (; *p > ' '; ++p)
+ continue;
+ }
+ if (tmp)
+ PCHAR('>');
+ break;
+ case 'c':
+ PCHAR(va_arg(ap, int));
+ break;
+ case 'D':
+ up = va_arg(ap, unsigned char *);
+ p = va_arg(ap, char *);
+ if (!width)
+ width = 16;
+ while(width--) {
+ PCHAR(hex2ascii(*up >> 4));
+ PCHAR(hex2ascii(*up & 0x0f));
+ up++;
+ if (width)
+ for (q=p;*q;q++)
+ PCHAR(*q);
+ }
+ break;
+ case 'd':
+ case 'i':
+ base = 10;
+ sign = 1;
+ goto handle_sign;
+ case 'h':
+ if (hflag) {
+ hflag = 0;
+ cflag = 1;
+ } else
+ hflag = 1;
+ goto reswitch;
+ case 'j':
+ jflag = 1;
+ goto reswitch;
+ case 'l':
+ if (lflag) {
+ lflag = 0;
+ qflag = 1;
+ } else
+ lflag = 1;
+ goto reswitch;
+ case 'n':
+ if (jflag)
+ *(va_arg(ap, intmax_t *)) = retval;
+ else if (qflag)
+ *(va_arg(ap, int64_t *)) = retval;
+ else if (lflag)
+ *(va_arg(ap, long *)) = retval;
+ else if (zflag)
+ *(va_arg(ap, size_t *)) = retval;
+ else if (hflag)
+ *(va_arg(ap, short *)) = retval;
+ else if (cflag)
+ *(va_arg(ap, char *)) = retval;
+ else
+ *(va_arg(ap, int *)) = retval;
+ break;
+ case 'o':
+ base = 8;
+ goto handle_nosign;
+ case 'p':
+ base = 16;
+ sharpflag = (width == 0);
+ sign = 0;
+ num = (uintptr_t)va_arg(ap, void *);
+ goto number;
+ case 'q':
+ qflag = 1;
+ goto reswitch;
+ case 'r':
+ base = radix;
+ if (sign)
+ goto handle_sign;
+ goto handle_nosign;
+ case 's':
+ p = va_arg(ap, char *);
+ if (p == NULL)
+ p = "(null)";
+ if (!dot)
+ n = (int)strlen (p);
+ else
+ for (n = 0; n < dwidth && p[n]; n++)
+ continue;
+
+ width -= n;
+
+ if (!ladjust && width > 0)
+ while (width--)
+ PCHAR(padc);
+ while (n--)
+ PCHAR(*p++);
+ if (ladjust && width > 0)
+ while (width--)
+ PCHAR(padc);
+ break;
+ case 't':
+ tflag = 1;
+ goto reswitch;
+ case 'u':
+ base = 10;
+ goto handle_nosign;
+ case 'X':
+ upper = 1;
+ case 'x':
+ base = 16;
+ goto handle_nosign;
+ case 'y':
+ base = 16;
+ sign = 1;
+ goto handle_sign;
+ case 'z':
+ zflag = 1;
+ goto reswitch;
+handle_nosign:
+ sign = 0;
+ if (jflag)
+ num = va_arg(ap, uintmax_t);
+ else if (qflag)
+ num = va_arg(ap, uint64_t);
+ else if (tflag)
+ num = va_arg(ap, ptrdiff_t);
+ else if (lflag)
+ num = va_arg(ap, unsigned long);
+ else if (zflag)
+ num = va_arg(ap, size_t);
+ else if (hflag)
+ num = (unsigned short)va_arg(ap, int);
+ else if (cflag)
+ num = (unsigned char)va_arg(ap, int);
+ else
+ num = va_arg(ap, unsigned int);
+ goto number;
+handle_sign:
+ if (jflag)
+ num = va_arg(ap, intmax_t);
+ else if (qflag)
+ num = va_arg(ap, int64_t);
+ else if (tflag)
+ num = va_arg(ap, ptrdiff_t);
+ else if (lflag)
+ num = va_arg(ap, long);
+ else if (zflag)
+ num = va_arg(ap, ssize_t);
+ else if (hflag)
+ num = (short)va_arg(ap, int);
+ else if (cflag)
+ num = (char)va_arg(ap, int);
+ else
+ num = va_arg(ap, int);
+number:
+ if (sign && (intmax_t)num < 0) {
+ neg = 1;
+ num = -(intmax_t)num;
+ }
+ p = ksprintn(nbuf, num, base, &n, upper);
+ tmp = 0;
+ if (sharpflag && num != 0) {
+ if (base == 8)
+ tmp++;
+ else if (base == 16)
+ tmp += 2;
+ }
+ if (neg)
+ tmp++;
+
+ if (!ladjust && padc == '0')
+ dwidth = width - tmp;
+ width -= tmp + imax(dwidth, n);
+ dwidth -= n;
+ if (!ladjust)
+ while (width-- > 0)
+ PCHAR(' ');
+ if (neg)
+ PCHAR('-');
+ if (sharpflag && num != 0) {
+ if (base == 8) {
+ PCHAR('0');
+ } else if (base == 16) {
+ PCHAR('0');
+ PCHAR('x');
+ }
+ }
+ while (dwidth-- > 0)
+ PCHAR('0');
+
+ while (*p)
+ PCHAR(*p--);
+
+ if (ladjust)
+ while (width-- > 0)
+ PCHAR(' ');
+
+ break;
+ default:
+ while (percent < fmt)
+ PCHAR(*percent++);
+ /*
+ * Since we ignore an formatting argument it is no
+ * longer safe to obey the remaining formatting
+ * arguments as the arguments will no longer match
+ * the format specs.
+ */
+ stop = 1;
+ break;
+ }
+ }
+#undef PCHAR
+}
+#else /* defined(USE_ELF) */
+#error not supported
+#endif
diff --git a/addr2line.h b/addr2line.h
new file mode 100644
index 0000000000..3782d89e07
--- /dev/null
+++ b/addr2line.h
@@ -0,0 +1,21 @@
+/**********************************************************************
+
+ addr2line.h -
+
+ $Author$
+
+ Copyright (C) 2010 Shinichiro Hamaji
+
+**********************************************************************/
+
+#ifndef RUBY_ADDR2LINE_H
+#define RUBY_ADDR2LINE_H
+
+#ifdef USE_ELF
+
+void
+rb_dump_backtrace_with_lines(int num_traces, void **traces, char **syms);
+
+#endif /* USE_ELF */
+
+#endif /* RUBY_ADDR2LINE_H */
diff --git a/array.c b/array.c
index 28ea06fb3e..5d01fdb551 100644
--- a/array.c
+++ b/array.c
@@ -1,1242 +1,5704 @@
-/************************************************
+/**********************************************************************
array.c -
- $Author: matz $
- $Date: 1996/12/25 10:42:18 $
+ $Author$
created at: Fri Aug 6 09:46:12 JST 1993
- Copyright (C) 1993-1996 Yukihiro Matsumoto
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
+ Copyright (C) 2000 Network Applied Communication Laboratory, Inc.
+ Copyright (C) 2000 Information-technology Promotion Agency, Japan
-************************************************/
+**********************************************************************/
-#include "ruby.h"
+#include "ruby/ruby.h"
+#include "ruby/util.h"
+#include "ruby/st.h"
+#include "ruby/encoding.h"
+#include "internal.h"
+#include "probes.h"
+#include "id.h"
-VALUE cArray;
+#ifndef ARRAY_DEBUG
+# define NDEBUG
+#endif
+#include <assert.h>
+
+VALUE rb_cArray;
-VALUE rb_to_a();
+static ID id_cmp, id_div, id_power;
#define ARY_DEFAULT_SIZE 16
+#define ARY_MAX_SIZE (LONG_MAX / (int)sizeof(VALUE))
void
-memclear(mem, size)
- register VALUE *mem;
- register int size;
+rb_mem_clear(register VALUE *mem, register long size)
{
while (size--) {
*mem++ = Qnil;
}
}
-#define ARY_FREEZE FL_USER1
+static void
+ary_mem_clear(VALUE ary, long beg, long size)
+{
+ RARRAY_PTR_USE(ary, ptr, {
+ rb_mem_clear(ptr + beg, size);
+ });
+}
+
+static inline void
+memfill(register VALUE *mem, register long size, register VALUE val)
+{
+ while (size--) {
+ *mem++ = val;
+ }
+}
static void
-ary_modify(ary)
- VALUE ary;
+ary_memfill(VALUE ary, long beg, long size, VALUE val)
+{
+ RARRAY_PTR_USE(ary, ptr, {
+ memfill(ptr + beg, size, val);
+ OBJ_WRITTEN(ary, Qundef, val);
+ });
+}
+
+static void
+ary_memcpy(VALUE ary, long beg, long argc, const VALUE *argv)
+{
+#if 1
+ if (OBJ_PROMOTED(ary)) {
+ if (argc > (int)(128/sizeof(VALUE)) /* is magic number (cache line size) */) {
+ rb_gc_writebarrier_remember_promoted(ary);
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMCPY(ptr+beg, argv, VALUE, argc);
+ });
+ }
+ else {
+ int i;
+ RARRAY_PTR_USE(ary, ptr, {
+ for (i=0; i<argc; i++) {
+ OBJ_WRITE(ary, &ptr[i+beg], argv[i]);
+ }
+ });
+ }
+ }
+ else {
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMCPY(ptr+beg, argv, VALUE, argc);
+ });
+ }
+#else
+ /* use shady (traditional way) */
+ MEMCPY(RARRAY_PTR(ary)+beg, argv, VALUE, argc);
+#endif
+}
+
+# define ARY_SHARED_P(ary) \
+ (assert(!FL_TEST((ary), ELTS_SHARED) || !FL_TEST((ary), RARRAY_EMBED_FLAG)), \
+ FL_TEST((ary),ELTS_SHARED)!=0)
+# define ARY_EMBED_P(ary) \
+ (assert(!FL_TEST((ary), ELTS_SHARED) || !FL_TEST((ary), RARRAY_EMBED_FLAG)), \
+ FL_TEST((ary), RARRAY_EMBED_FLAG)!=0)
+
+#define ARY_HEAP_PTR(a) (assert(!ARY_EMBED_P(a)), RARRAY(a)->as.heap.ptr)
+#define ARY_HEAP_LEN(a) (assert(!ARY_EMBED_P(a)), RARRAY(a)->as.heap.len)
+#define ARY_EMBED_PTR(a) (assert(ARY_EMBED_P(a)), RARRAY(a)->as.ary)
+#define ARY_EMBED_LEN(a) \
+ (assert(ARY_EMBED_P(a)), \
+ (long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & \
+ (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)))
+#define ARY_HEAP_SIZE(a) (assert(!ARY_EMBED_P(a)), assert(ARY_OWNS_HEAP_P(a)), RARRAY(a)->as.heap.aux.capa * sizeof(VALUE))
+
+#define ARY_OWNS_HEAP_P(a) (!FL_TEST((a), ELTS_SHARED|RARRAY_EMBED_FLAG))
+#define FL_SET_EMBED(a) do { \
+ assert(!ARY_SHARED_P(a)); \
+ FL_SET((a), RARRAY_EMBED_FLAG); \
+} while (0)
+#define FL_UNSET_EMBED(ary) FL_UNSET((ary), RARRAY_EMBED_FLAG|RARRAY_EMBED_LEN_MASK)
+#define FL_SET_SHARED(ary) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ FL_SET((ary), ELTS_SHARED); \
+} while (0)
+#define FL_UNSET_SHARED(ary) FL_UNSET((ary), ELTS_SHARED)
+
+#define ARY_SET_PTR(ary, p) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ assert(!OBJ_FROZEN(ary)); \
+ RARRAY(ary)->as.heap.ptr = (p); \
+} while (0)
+#define ARY_SET_EMBED_LEN(ary, n) do { \
+ long tmp_n = (n); \
+ assert(ARY_EMBED_P(ary)); \
+ assert(!OBJ_FROZEN(ary)); \
+ RBASIC(ary)->flags &= ~RARRAY_EMBED_LEN_MASK; \
+ RBASIC(ary)->flags |= (tmp_n) << RARRAY_EMBED_LEN_SHIFT; \
+} while (0)
+#define ARY_SET_HEAP_LEN(ary, n) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ RARRAY(ary)->as.heap.len = (n); \
+} while (0)
+#define ARY_SET_LEN(ary, n) do { \
+ if (ARY_EMBED_P(ary)) { \
+ ARY_SET_EMBED_LEN((ary), (n)); \
+ } \
+ else { \
+ ARY_SET_HEAP_LEN((ary), (n)); \
+ } \
+ assert(RARRAY_LEN(ary) == (n)); \
+} while (0)
+#define ARY_INCREASE_PTR(ary, n) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ assert(!OBJ_FROZEN(ary)); \
+ RARRAY(ary)->as.heap.ptr += (n); \
+} while (0)
+#define ARY_INCREASE_LEN(ary, n) do { \
+ assert(!OBJ_FROZEN(ary)); \
+ if (ARY_EMBED_P(ary)) { \
+ ARY_SET_EMBED_LEN((ary), RARRAY_LEN(ary)+(n)); \
+ } \
+ else { \
+ RARRAY(ary)->as.heap.len += (n); \
+ } \
+} while (0)
+
+#define ARY_CAPA(ary) (ARY_EMBED_P(ary) ? RARRAY_EMBED_LEN_MAX : \
+ ARY_SHARED_ROOT_P(ary) ? RARRAY_LEN(ary) : RARRAY(ary)->as.heap.aux.capa)
+#define ARY_SET_CAPA(ary, n) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ assert(!ARY_SHARED_P(ary)); \
+ assert(!OBJ_FROZEN(ary)); \
+ RARRAY(ary)->as.heap.aux.capa = (n); \
+} while (0)
+
+#define ARY_SHARED(ary) (assert(ARY_SHARED_P(ary)), RARRAY(ary)->as.heap.aux.shared)
+#define ARY_SET_SHARED(ary, value) do { \
+ const VALUE _ary_ = (ary); \
+ const VALUE _value_ = (value); \
+ assert(!ARY_EMBED_P(_ary_)); \
+ assert(ARY_SHARED_P(_ary_)); \
+ assert(ARY_SHARED_ROOT_P(_value_)); \
+ OBJ_WRITE(_ary_, &RARRAY(_ary_)->as.heap.aux.shared, _value_); \
+} while (0)
+#define RARRAY_SHARED_ROOT_FLAG FL_USER5
+#define ARY_SHARED_ROOT_P(ary) (FL_TEST((ary), RARRAY_SHARED_ROOT_FLAG))
+#define ARY_SHARED_NUM(ary) \
+ (assert(ARY_SHARED_ROOT_P(ary)), RARRAY(ary)->as.heap.aux.capa)
+#define ARY_SHARED_OCCUPIED(ary) (ARY_SHARED_NUM(ary) == 1)
+#define ARY_SET_SHARED_NUM(ary, value) do { \
+ assert(ARY_SHARED_ROOT_P(ary)); \
+ RARRAY(ary)->as.heap.aux.capa = (value); \
+} while (0)
+#define FL_SET_SHARED_ROOT(ary) do { \
+ assert(!ARY_EMBED_P(ary)); \
+ FL_SET((ary), RARRAY_SHARED_ROOT_FLAG); \
+} while (0)
+
+static void
+ary_resize_capa(VALUE ary, long capacity)
+{
+ assert(RARRAY_LEN(ary) <= capacity);
+ assert(!OBJ_FROZEN(ary));
+ assert(!ARY_SHARED_P(ary));
+ if (capacity > RARRAY_EMBED_LEN_MAX) {
+ if (ARY_EMBED_P(ary)) {
+ long len = ARY_EMBED_LEN(ary);
+ VALUE *ptr = ALLOC_N(VALUE, (capacity));
+ MEMCPY(ptr, ARY_EMBED_PTR(ary), VALUE, len);
+ FL_UNSET_EMBED(ary);
+ ARY_SET_PTR(ary, ptr);
+ ARY_SET_HEAP_LEN(ary, len);
+ }
+ else {
+ SIZED_REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, capacity, RARRAY(ary)->as.heap.aux.capa);
+ }
+ ARY_SET_CAPA(ary, (capacity));
+ }
+ else {
+ if (!ARY_EMBED_P(ary)) {
+ long len = RARRAY_LEN(ary);
+ const VALUE *ptr = RARRAY_CONST_PTR(ary);
+ size_t size = ARY_HEAP_SIZE(ary);
+
+ if (len > capacity) len = capacity;
+ MEMCPY((VALUE *)RARRAY(ary)->as.ary, ptr, VALUE, len);
+ FL_SET_EMBED(ary);
+ ARY_SET_LEN(ary, len);
+ ruby_sized_xfree((VALUE *)ptr, size);
+ }
+ }
+}
+
+static inline void
+ary_shrink_capa(VALUE ary)
+{
+ long capacity = ARY_HEAP_LEN(ary);
+ long old_capa = RARRAY(ary)->as.heap.aux.capa;
+ assert(!ARY_SHARED_P(ary));
+ assert(old_capa >= capacity);
+ if (old_capa > capacity)
+ REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, capacity);
+}
+
+static void
+ary_double_capa(VALUE ary, long min)
+{
+ long new_capa = ARY_CAPA(ary) / 2;
+
+ if (new_capa < ARY_DEFAULT_SIZE) {
+ new_capa = ARY_DEFAULT_SIZE;
+ }
+ if (new_capa >= ARY_MAX_SIZE - min) {
+ new_capa = (ARY_MAX_SIZE - min) / 2;
+ }
+ new_capa += min;
+ ary_resize_capa(ary, new_capa);
+}
+
+static void
+rb_ary_decrement_share(VALUE shared)
+{
+ if (shared) {
+ long num = ARY_SHARED_NUM(shared) - 1;
+ if (num == 0) {
+ rb_ary_free(shared);
+ rb_gc_force_recycle(shared);
+ }
+ else if (num > 0) {
+ ARY_SET_SHARED_NUM(shared, num);
+ }
+ }
+}
+
+static void
+rb_ary_unshare(VALUE ary)
+{
+ VALUE shared = RARRAY(ary)->as.heap.aux.shared;
+ rb_ary_decrement_share(shared);
+ FL_UNSET_SHARED(ary);
+}
+
+static inline void
+rb_ary_unshare_safe(VALUE ary)
+{
+ if (ARY_SHARED_P(ary) && !ARY_EMBED_P(ary)) {
+ rb_ary_unshare(ary);
+ }
+}
+
+static VALUE
+rb_ary_increment_share(VALUE shared)
+{
+ long num = ARY_SHARED_NUM(shared);
+ if (num >= 0) {
+ ARY_SET_SHARED_NUM(shared, num + 1);
+ }
+ return shared;
+}
+
+static void
+rb_ary_set_shared(VALUE ary, VALUE shared)
+{
+ rb_ary_increment_share(shared);
+ FL_SET_SHARED(ary);
+ ARY_SET_SHARED(ary, shared);
+}
+
+static inline void
+rb_ary_modify_check(VALUE ary)
+{
+ rb_check_frozen(ary);
+}
+
+void
+rb_ary_modify(VALUE ary)
+{
+ rb_ary_modify_check(ary);
+ if (ARY_SHARED_P(ary)) {
+ long shared_len, len = RARRAY_LEN(ary);
+ VALUE shared = ARY_SHARED(ary);
+ if (len <= RARRAY_EMBED_LEN_MAX) {
+ const VALUE *ptr = ARY_HEAP_PTR(ary);
+ FL_UNSET_SHARED(ary);
+ FL_SET_EMBED(ary);
+ MEMCPY((VALUE *)ARY_EMBED_PTR(ary), ptr, VALUE, len);
+ rb_ary_decrement_share(shared);
+ ARY_SET_EMBED_LEN(ary, len);
+ }
+ else if (ARY_SHARED_OCCUPIED(shared) && len > ((shared_len = RARRAY_LEN(shared))>>1)) {
+ long shift = RARRAY_CONST_PTR(ary) - RARRAY_CONST_PTR(shared);
+ FL_UNSET_SHARED(ary);
+ ARY_SET_PTR(ary, RARRAY_CONST_PTR(shared));
+ ARY_SET_CAPA(ary, shared_len);
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr, ptr+shift, VALUE, len);
+ });
+ FL_SET_EMBED(shared);
+ rb_ary_decrement_share(shared);
+ }
+ else {
+ VALUE *ptr = ALLOC_N(VALUE, len);
+ MEMCPY(ptr, RARRAY_CONST_PTR(ary), VALUE, len);
+ rb_ary_unshare(ary);
+ ARY_SET_CAPA(ary, len);
+ ARY_SET_PTR(ary, ptr);
+ }
+ }
+}
+
+static void
+ary_ensure_room_for_push(VALUE ary, long add_len)
{
- rb_secure(5);
- if (FL_TEST(ary, ARY_FREEZE)) {
- TypeError("can't modify frozen array");
+ long new_len = RARRAY_LEN(ary) + add_len;
+ long capa;
+
+ if (ARY_SHARED_P(ary)) {
+ if (new_len > RARRAY_EMBED_LEN_MAX) {
+ VALUE shared = ARY_SHARED(ary);
+ if (ARY_SHARED_OCCUPIED(shared)) {
+ if (RARRAY_CONST_PTR(ary) - RARRAY_CONST_PTR(shared) + new_len <= RARRAY_LEN(shared)) {
+ rb_ary_modify_check(ary);
+ }
+ else {
+ /* if array is shared, then it is likely it participate in push/shift pattern */
+ rb_ary_modify(ary);
+ capa = ARY_CAPA(ary);
+ if (new_len > capa - (capa >> 6)) {
+ ary_double_capa(ary, new_len);
+ }
+ }
+ return;
+ }
+ }
+ }
+ rb_ary_modify(ary);
+ capa = ARY_CAPA(ary);
+ if (new_len > capa) {
+ ary_double_capa(ary, new_len);
}
}
+/*
+ * call-seq:
+ * ary.freeze -> ary
+ *
+ * Calls Object#freeze on +ary+ to prevent any further
+ * modification. A RuntimeError will be raised if a modification
+ * attempt is made.
+ *
+ */
+
VALUE
-ary_freeze(ary)
- VALUE ary;
+rb_ary_freeze(VALUE ary)
{
- FL_SET(ary, ARY_FREEZE);
- return ary;
+ return rb_obj_freeze(ary);
}
+/*
+ * call-seq:
+ * ary.frozen? -> true or false
+ *
+ * Return +true+ if this array is frozen (or temporarily frozen
+ * while being sorted). See also Object#frozen?
+ */
+
static VALUE
-ary_frozen_p(ary)
- VALUE ary;
+rb_ary_frozen_p(VALUE ary)
{
- if (FL_TEST(ary, ARY_FREEZE))
- return TRUE;
- return FALSE;
+ if (OBJ_FROZEN(ary)) return Qtrue;
+ return Qfalse;
}
+/* This can be used to take a snapshot of an array (with
+ e.g. rb_ary_replace) and check later whether the array has been
+ modified from the snapshot. The snapshot is cheap, though if
+ something does modify the array it will pay the cost of copying
+ it. If Array#pop or Array#shift has been called, the array will
+ be still shared with the snapshot, but the array length will
+ differ. */
VALUE
-ary_new2(len)
- int len;
+rb_ary_shared_with_p(VALUE ary1, VALUE ary2)
{
- NEWOBJ(ary, struct RArray);
- OBJSETUP(ary, cArray, T_ARRAY);
+ if (!ARY_EMBED_P(ary1) && ARY_SHARED_P(ary1) &&
+ !ARY_EMBED_P(ary2) && ARY_SHARED_P(ary2) &&
+ RARRAY(ary1)->as.heap.aux.shared == RARRAY(ary2)->as.heap.aux.shared &&
+ RARRAY(ary1)->as.heap.len == RARRAY(ary2)->as.heap.len) {
+ return Qtrue;
+ }
+ return Qfalse;
+}
- ary->len = 0;
- ary->capa = len;
- if (len == 0)
- ary->ptr = 0;
+static VALUE
+ary_alloc(VALUE klass)
+{
+ NEWOBJ_OF(ary, struct RArray, klass, T_ARRAY | RARRAY_EMBED_FLAG | (RGENGC_WB_PROTECTED_ARRAY ? FL_WB_PROTECTED : 0));
+ /* Created array is:
+ * FL_SET_EMBED((VALUE)ary);
+ * ARY_SET_EMBED_LEN((VALUE)ary, 0);
+ */
+ return (VALUE)ary;
+}
+
+static VALUE
+empty_ary_alloc(VALUE klass)
+{
+ if (RUBY_DTRACE_ARRAY_CREATE_ENABLED()) {
+ RUBY_DTRACE_ARRAY_CREATE(0, rb_sourcefile(), rb_sourceline());
+ }
+
+ return ary_alloc(klass);
+}
+
+static VALUE
+ary_new(VALUE klass, long capa)
+{
+ VALUE ary,*ptr;
+
+ if (capa < 0) {
+ rb_raise(rb_eArgError, "negative array size (or size too big)");
+ }
+ if (capa > ARY_MAX_SIZE) {
+ rb_raise(rb_eArgError, "array size too big");
+ }
+
+ if (RUBY_DTRACE_ARRAY_CREATE_ENABLED()) {
+ RUBY_DTRACE_ARRAY_CREATE(capa, rb_sourcefile(), rb_sourceline());
+ }
+
+ if (capa > RARRAY_EMBED_LEN_MAX) {
+ ptr = ALLOC_N(VALUE, capa);
+ ary = ary_alloc(klass);
+ FL_UNSET_EMBED(ary);
+ ARY_SET_PTR(ary, ptr);
+ ARY_SET_CAPA(ary, capa);
+ ARY_SET_HEAP_LEN(ary, 0);
+ }
else {
- ary->ptr = ALLOC_N(VALUE, len);
- memclear(ary->ptr, len);
+ ary = ary_alloc(klass);
}
- return (VALUE)ary;
+ return ary;
}
VALUE
-ary_new()
+rb_ary_new_capa(long capa)
{
- return ary_new2(ARY_DEFAULT_SIZE);
+ return ary_new(rb_cArray, capa);
}
-#include <varargs.h>
+VALUE
+rb_ary_new(void)
+{
+ return rb_ary_new2(RARRAY_EMBED_LEN_MAX);
+}
VALUE
-ary_new3(n, va_alist)
- int n;
- va_dcl
+rb_ary_new_from_args(long n, ...)
{
va_list ar;
- struct RArray* ary;
- int i;
+ VALUE ary;
+ long i;
- if (n < 0) {
- IndexError("Negative number of items(%d)", n);
- }
- ary = (struct RArray*)ary_new2(n<ARY_DEFAULT_SIZE?ARY_DEFAULT_SIZE:n);
+ ary = rb_ary_new2(n);
- va_start(ar);
+ va_start(ar, n);
for (i=0; i<n; i++) {
- ary->ptr[i] = va_arg(ar, VALUE);
+ RARRAY_ASET(ary, i, va_arg(ar, VALUE));
}
va_end(ar);
- ary->len = n;
- return (VALUE)ary;
+ ARY_SET_LEN(ary, n);
+ return ary;
}
VALUE
-ary_new4(n, elts)
- int n;
- VALUE *elts;
+rb_ary_new_from_values(long n, const VALUE *elts)
{
- struct RArray* ary;
+ VALUE ary;
- ary = (struct RArray*)ary_new2(n);
- MEMCPY(ary->ptr, elts, VALUE, n);
- ary->len = n;
+ ary = rb_ary_new2(n);
+ if (n > 0 && elts) {
+ ary_memcpy(ary, 0, n, elts);
+ ARY_SET_LEN(ary, n);
+ }
- return (VALUE)ary;
+ return ary;
}
VALUE
-assoc_new(car, cdr)
- VALUE car, cdr;
+rb_ary_tmp_new(long capa)
{
- struct RArray* ary;
+ return ary_new(0, capa);
+}
- ary = (struct RArray*)ary_new2(2);
- ary->ptr[0] = car;
- ary->ptr[1] = cdr;
- ary->len = 2;
+void
+rb_ary_free(VALUE ary)
+{
+ if (ARY_OWNS_HEAP_P(ary)) {
+ ruby_sized_xfree((void *)ARY_HEAP_PTR(ary), ARY_HEAP_SIZE(ary));
+ }
+}
- return (VALUE)ary;
+RUBY_FUNC_EXPORTED size_t
+rb_ary_memsize(VALUE ary)
+{
+ if (ARY_OWNS_HEAP_P(ary)) {
+ return RARRAY(ary)->as.heap.aux.capa * sizeof(VALUE);
+ }
+ else {
+ return 0;
+ }
+}
+
+static inline void
+ary_discard(VALUE ary)
+{
+ rb_ary_free(ary);
+ RBASIC(ary)->flags |= RARRAY_EMBED_FLAG;
+ RBASIC(ary)->flags &= ~RARRAY_EMBED_LEN_MASK;
}
static VALUE
-ary_s_new(argc, argv, class)
- int argc;
- VALUE *argv;
- VALUE class;
+ary_make_shared(VALUE ary)
{
- VALUE size;
- NEWOBJ(ary, struct RArray);
- OBJSETUP(ary, class, T_ARRAY);
+ assert(!ARY_EMBED_P(ary));
+ if (ARY_SHARED_P(ary)) {
+ return ARY_SHARED(ary);
+ }
+ else if (ARY_SHARED_ROOT_P(ary)) {
+ return ary;
+ }
+ else if (OBJ_FROZEN(ary)) {
+ ary_shrink_capa(ary);
+ FL_SET_SHARED_ROOT(ary);
+ ARY_SET_SHARED_NUM(ary, 1);
+ return ary;
+ }
+ else {
+ long capa = ARY_CAPA(ary), len = RARRAY_LEN(ary);
+ NEWOBJ_OF(shared, struct RArray, 0, T_ARRAY); /* keep shared ary as shady */
+ FL_UNSET_EMBED(shared);
+
+ ARY_SET_LEN((VALUE)shared, capa);
+ ARY_SET_PTR((VALUE)shared, RARRAY_CONST_PTR(ary));
+ ary_mem_clear((VALUE)shared, len, capa - len);
+ FL_SET_SHARED_ROOT(shared);
+ ARY_SET_SHARED_NUM((VALUE)shared, 1);
+ FL_SET_SHARED(ary);
+ ARY_SET_SHARED(ary, (VALUE)shared);
+ OBJ_FREEZE(shared);
+ return (VALUE)shared;
+ }
+}
- rb_scan_args(argc, argv, "01", &size);
- ary->len = 0;
- ary->capa = NIL_P(size)?ARY_DEFAULT_SIZE:NUM2INT(size);
- ary->ptr = ALLOC_N(VALUE, ary->capa);
- memclear(ary->ptr, ary->capa);
+static VALUE
+ary_make_substitution(VALUE ary)
+{
+ long len = RARRAY_LEN(ary);
- return (VALUE)ary;
+ if (len <= RARRAY_EMBED_LEN_MAX) {
+ VALUE subst = rb_ary_new2(len);
+ ary_memcpy(subst, 0, len, RARRAY_CONST_PTR(ary));
+ ARY_SET_EMBED_LEN(subst, len);
+ return subst;
+ }
+ else {
+ return rb_ary_increment_share(ary_make_shared(ary));
+ }
+}
+
+VALUE
+rb_assoc_new(VALUE car, VALUE cdr)
+{
+ return rb_ary_new3(2, car, cdr);
}
static VALUE
-ary_s_create(argc, argv, class)
- int argc;
- VALUE *argv;
- VALUE class;
+to_ary(VALUE ary)
+{
+ return rb_convert_type(ary, T_ARRAY, "Array", "to_ary");
+}
+
+VALUE
+rb_check_array_type(VALUE ary)
+{
+ return rb_check_convert_type(ary, T_ARRAY, "Array", "to_ary");
+}
+
+/*
+ * call-seq:
+ * Array.try_convert(obj) -> array or nil
+ *
+ * Tries to convert +obj+ into an array, using +to_ary+ method. Returns the
+ * converted array or +nil+ if +obj+ cannot be converted for any reason.
+ * This method can be used to check if an argument is an array.
+ *
+ * Array.try_convert([1]) #=> [1]
+ * Array.try_convert("1") #=> nil
+ *
+ * if tmp = Array.try_convert(arg)
+ * # the argument is an array
+ * elsif tmp = String.try_convert(arg)
+ * # the argument is a string
+ * end
+ *
+ */
+
+static VALUE
+rb_ary_s_try_convert(VALUE dummy, VALUE ary)
+{
+ return rb_check_array_type(ary);
+}
+
+/*
+ * call-seq:
+ * Array.new(size=0, obj=nil)
+ * Array.new(array)
+ * Array.new(size) {|index| block }
+ *
+ * Returns a new array.
+ *
+ * In the first form, if no arguments are sent, the new array will be empty.
+ * When a +size+ and an optional +obj+ are sent, an array is created with
+ * +size+ copies of +obj+. Take notice that all elements will reference the
+ * same object +obj+.
+ *
+ * The second form creates a copy of the array passed as a parameter (the
+ * array is generated by calling to_ary on the parameter).
+ *
+ * first_array = ["Matz", "Guido"]
+ *
+ * second_array = Array.new(first_array) #=> ["Matz", "Guido"]
+ *
+ * first_array.equal? second_array #=> false
+ *
+ * In the last form, an array of the given size is created. Each element in
+ * this array is created by passing the element's index to the given block
+ * and storing the return value.
+ *
+ * Array.new(3){ |index| index ** 2 }
+ * # => [0, 1, 4]
+ *
+ * == Common gotchas
+ *
+ * When sending the second parameter, the same object will be used as the
+ * value for all the array elements:
+ *
+ * a = Array.new(2, Hash.new)
+ * # => [{}, {}]
+ *
+ * a[0]['cat'] = 'feline'
+ * a # => [{"cat"=>"feline"}, {"cat"=>"feline"}]
+ *
+ * a[1]['cat'] = 'Felix'
+ * a # => [{"cat"=>"Felix"}, {"cat"=>"Felix"}]
+ *
+ * Since all the Array elements store the same hash, changes to one of them
+ * will affect them all.
+ *
+ * If multiple copies are what you want, you should use the block
+ * version which uses the result of that block each time an element
+ * of the array needs to be initialized:
+ *
+ * a = Array.new(2) { Hash.new }
+ * a[0]['cat'] = 'feline'
+ * a # => [{"cat"=>"feline"}, {}]
+ *
+ */
+
+static VALUE
+rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
{
- NEWOBJ(ary, struct RArray);
- OBJSETUP(ary, class, T_ARRAY);
+ long len;
+ VALUE size, val;
- ary->len = argc;
- ary->capa = argc;
+ rb_ary_modify(ary);
if (argc == 0) {
- ary->ptr = 0;
+ if (ARY_OWNS_HEAP_P(ary) && RARRAY_CONST_PTR(ary) != 0) {
+ ruby_sized_xfree((void *)RARRAY_CONST_PTR(ary), ARY_HEAP_SIZE(ary));
+ }
+ rb_ary_unshare_safe(ary);
+ FL_SET_EMBED(ary);
+ ARY_SET_EMBED_LEN(ary, 0);
+ if (rb_block_given_p()) {
+ rb_warning("given block not used");
+ }
+ return ary;
+ }
+ rb_scan_args(argc, argv, "02", &size, &val);
+ if (argc == 1 && !FIXNUM_P(size)) {
+ val = rb_check_array_type(size);
+ if (!NIL_P(val)) {
+ rb_ary_replace(ary, val);
+ return ary;
+ }
+ }
+
+ len = NUM2LONG(size);
+ if (len < 0) {
+ rb_raise(rb_eArgError, "negative array size");
+ }
+ if (len > ARY_MAX_SIZE) {
+ rb_raise(rb_eArgError, "array size too big");
+ }
+ rb_ary_modify(ary);
+ ary_resize_capa(ary, len);
+ if (rb_block_given_p()) {
+ long i;
+
+ if (argc == 2) {
+ rb_warn("block supersedes default value argument");
+ }
+ for (i=0; i<len; i++) {
+ rb_ary_store(ary, i, rb_yield(LONG2NUM(i)));
+ ARY_SET_LEN(ary, i + 1);
+ }
}
else {
- ary->ptr = ALLOC_N(VALUE, argc);
- MEMCPY(ary->ptr, argv, VALUE, argc);
+ ary_memfill(ary, 0, len, val);
+ ARY_SET_LEN(ary, len);
}
+ return ary;
+}
- return (VALUE)ary;
+/*
+ * Returns a new array populated with the given objects.
+ *
+ * Array.[]( 1, 'a', /^A/ ) # => [1, "a", /^A/]
+ * Array[ 1, 'a', /^A/ ] # => [1, "a", /^A/]
+ * [ 1, 'a', /^A/ ] # => [1, "a", /^A/]
+ */
+
+static VALUE
+rb_ary_s_create(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE ary = ary_new(klass, argc);
+ if (argc > 0 && argv) {
+ ary_memcpy(ary, 0, argc, argv);
+ ARY_SET_LEN(ary, argc);
+ }
+
+ return ary;
}
void
-ary_store(ary, idx, val)
- struct RArray *ary;
- int idx;
- VALUE val;
+rb_ary_store(VALUE ary, long idx, VALUE val)
{
- ary_modify(ary);
+ long len = RARRAY_LEN(ary);
+
if (idx < 0) {
- IndexError("negative index for array");
+ idx += len;
+ if (idx < 0) {
+ rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
+ idx - len, -len);
+ }
+ }
+ else if (idx >= ARY_MAX_SIZE) {
+ rb_raise(rb_eIndexError, "index %ld too big", idx);
}
- if (idx >= ary->capa) {
- ary->capa = idx + ARY_DEFAULT_SIZE;
- REALLOC_N(ary->ptr, VALUE, ary->capa);
+ rb_ary_modify(ary);
+ if (idx >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, idx);
}
- if (idx > ary->len) {
- memclear(ary->ptr+ary->len, idx-ary->len+1);
+ if (idx > len) {
+ ary_mem_clear(ary, len, idx - len + 1);
}
- if (idx >= ary->len) {
- ary->len = idx + 1;
+ if (idx >= len) {
+ ARY_SET_LEN(ary, idx + 1);
}
- ary->ptr[idx] = val;
+ RARRAY_ASET(ary, idx, val);
}
-VALUE
-ary_push(ary, item)
- struct RArray *ary;
- VALUE item;
+static VALUE
+ary_make_partial(VALUE ary, VALUE klass, long offset, long len)
{
- ary_store(ary, ary->len, item);
- return (VALUE)ary;
+ assert(offset >= 0);
+ assert(len >= 0);
+ assert(offset+len <= RARRAY_LEN(ary));
+
+ if (len <= RARRAY_EMBED_LEN_MAX) {
+ VALUE result = ary_alloc(klass);
+ ary_memcpy(result, 0, len, RARRAY_CONST_PTR(ary) + offset);
+ ARY_SET_EMBED_LEN(result, len);
+ return result;
+ }
+ else {
+ VALUE shared, result = ary_alloc(klass);
+ FL_UNSET_EMBED(result);
+
+ shared = ary_make_shared(ary);
+ ARY_SET_PTR(result, RARRAY_CONST_PTR(ary));
+ ARY_SET_LEN(result, RARRAY_LEN(ary));
+ rb_ary_set_shared(result, shared);
+
+ ARY_INCREASE_PTR(result, offset);
+ ARY_SET_LEN(result, len);
+ return result;
+ }
}
static VALUE
-ary_push_method(argc, argv, ary)
- int argc;
- VALUE *argv;
- struct RArray *ary;
+ary_make_shared_copy(VALUE ary)
{
- while (argc--) {
- ary_store(ary, ary->len, *argv++);
- }
- return (VALUE)ary;
+ return ary_make_partial(ary, rb_obj_class(ary), 0, RARRAY_LEN(ary));
}
-VALUE
-ary_pop(ary)
- struct RArray *ary;
+enum ary_take_pos_flags
{
- if (ary->len == 0) return Qnil;
- if (ary->len * 10 < ary->capa && ary->capa > ARY_DEFAULT_SIZE) {
- ary->capa = ary->len * 2;
- REALLOC_N(ary->ptr, VALUE, ary->capa);
+ ARY_TAKE_FIRST = 0,
+ ARY_TAKE_LAST = 1
+};
+
+static VALUE
+ary_take_first_or_last(int argc, VALUE *argv, VALUE ary, enum ary_take_pos_flags last)
+{
+ VALUE nv;
+ long n;
+ long len;
+ long offset = 0;
+
+ rb_scan_args(argc, argv, "1", &nv);
+ n = NUM2LONG(nv);
+ len = RARRAY_LEN(ary);
+ if (n > len) {
+ n = len;
+ }
+ else if (n < 0) {
+ rb_raise(rb_eArgError, "negative array size");
+ }
+ if (last) {
+ offset = len - n;
}
- return ary->ptr[--ary->len];
+ return ary_make_partial(ary, rb_cArray, offset, n);
}
+/*
+ * call-seq:
+ * ary << obj -> ary
+ *
+ * Append---Pushes the given object on to the end of this array. This
+ * expression returns the array itself, so several appends
+ * may be chained together.
+ *
+ * [ 1, 2 ] << "c" << "d" << [ 3, 4 ]
+ * #=> [ 1, 2, "c", "d", [ 3, 4 ] ]
+ *
+ */
+
VALUE
-ary_shift(ary)
- struct RArray *ary;
+rb_ary_push(VALUE ary, VALUE item)
{
- VALUE top;
+ long idx = RARRAY_LEN(ary);
- if (ary->len == 0) return Qnil;
+ ary_ensure_room_for_push(ary, 1);
+ RARRAY_ASET(ary, idx, item);
+ ARY_SET_LEN(ary, idx + 1);
+ return ary;
+}
- top = ary->ptr[0];
- ary->len--;
+static VALUE
+rb_ary_push_1(VALUE ary, VALUE item)
+{
+ long idx = RARRAY_LEN(ary);
- /* sliding items */
- MEMMOVE(ary->ptr, ary->ptr+1, VALUE, ary->len);
- if (ary->len * 10 < ary->capa && ary->capa > ARY_DEFAULT_SIZE) {
- ary->capa = ary->len * 2;
- REALLOC_N(ary->ptr, VALUE, ary->capa);
+ if (idx >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, idx);
}
+ RARRAY_ASET(ary, idx, item);
+ ARY_SET_LEN(ary, idx + 1);
+ return ary;
+}
- return top;
+VALUE
+rb_ary_cat(VALUE ary, const VALUE *ptr, long len)
+{
+ long oldlen = RARRAY_LEN(ary);
+
+ ary_ensure_room_for_push(ary, len);
+ ary_memcpy(ary, oldlen, len, ptr);
+ ARY_SET_LEN(ary, oldlen + len);
+ return ary;
+}
+
+/*
+ * call-seq:
+ * ary.push(obj, ... ) -> ary
+ *
+ * Append --- Pushes the given object(s) on to the end of this array. This
+ * expression returns the array itself, so several appends
+ * may be chained together. See also Array#pop for the opposite
+ * effect.
+ *
+ * a = [ "a", "b", "c" ]
+ * a.push("d", "e", "f")
+ * #=> ["a", "b", "c", "d", "e", "f"]
+ * [1, 2, 3,].push(4).push(5)
+ * #=> [1, 2, 3, 4, 5]
+ */
+
+static VALUE
+rb_ary_push_m(int argc, VALUE *argv, VALUE ary)
+{
+ return rb_ary_cat(ary, argv, argc);
}
VALUE
-ary_unshift(ary, item)
- struct RArray *ary;
- int item;
+rb_ary_pop(VALUE ary)
{
- ary_modify(ary);
- if (ary->len >= ary->capa) {
- ary->capa+=ARY_DEFAULT_SIZE;
- REALLOC_N(ary->ptr, VALUE, ary->capa);
+ long n;
+ rb_ary_modify_check(ary);
+ n = RARRAY_LEN(ary);
+ if (n == 0) return Qnil;
+ if (ARY_OWNS_HEAP_P(ary) &&
+ n * 3 < ARY_CAPA(ary) &&
+ ARY_CAPA(ary) > ARY_DEFAULT_SIZE)
+ {
+ ary_resize_capa(ary, n * 2);
}
+ --n;
+ ARY_SET_LEN(ary, n);
+ return RARRAY_AREF(ary, n);
+}
+
+/*
+ * call-seq:
+ * ary.pop -> obj or nil
+ * ary.pop(n) -> new_ary
+ *
+ * Removes the last element from +self+ and returns it, or
+ * +nil+ if the array is empty.
+ *
+ * If a number +n+ is given, returns an array of the last +n+ elements
+ * (or less) just like <code>array.slice!(-n, n)</code> does. See also
+ * Array#push for the opposite effect.
+ *
+ * a = [ "a", "b", "c", "d" ]
+ * a.pop #=> "d"
+ * a.pop(2) #=> ["b", "c"]
+ * a #=> ["a"]
+ */
+
+static VALUE
+rb_ary_pop_m(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE result;
- /* sliding items */
- MEMMOVE(ary->ptr+1, ary->ptr, VALUE, ary->len);
+ if (argc == 0) {
+ return rb_ary_pop(ary);
+ }
- ary->len++;
- return ary->ptr[0] = item;
+ rb_ary_modify_check(ary);
+ result = ary_take_first_or_last(argc, argv, ary, ARY_TAKE_LAST);
+ ARY_INCREASE_LEN(ary, -RARRAY_LEN(result));
+ return result;
}
VALUE
-ary_entry(ary, offset)
- struct RArray *ary;
- int offset;
+rb_ary_shift(VALUE ary)
{
- if (ary->len == 0) return Qnil;
+ VALUE top;
+ long len = RARRAY_LEN(ary);
+
+ rb_ary_modify_check(ary);
+ if (len == 0) return Qnil;
+ top = RARRAY_AREF(ary, 0);
+ if (!ARY_SHARED_P(ary)) {
+ if (len < ARY_DEFAULT_SIZE) {
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr, ptr+1, VALUE, len-1);
+ }); /* WB: no new reference */
+ ARY_INCREASE_LEN(ary, -1);
+ return top;
+ }
+ assert(!ARY_EMBED_P(ary)); /* ARY_EMBED_LEN_MAX < ARY_DEFAULT_SIZE */
- if (offset < 0) {
- offset = ary->len + offset;
+ RARRAY_ASET(ary, 0, Qnil);
+ ary_make_shared(ary);
}
- if (offset < 0 || ary->len <= offset) {
- return Qnil;
+ else if (ARY_SHARED_OCCUPIED(ARY_SHARED(ary))) {
+ RARRAY_ASET(ary, 0, Qnil);
}
+ ARY_INCREASE_PTR(ary, 1); /* shift ptr */
+ ARY_INCREASE_LEN(ary, -1);
- return ary->ptr[offset];
+ return top;
}
+/*
+ * call-seq:
+ * ary.shift -> obj or nil
+ * ary.shift(n) -> new_ary
+ *
+ * Removes the first element of +self+ and returns it (shifting all
+ * other elements down by one). Returns +nil+ if the array
+ * is empty.
+ *
+ * If a number +n+ is given, returns an array of the first +n+ elements
+ * (or less) just like <code>array.slice!(0, n)</code> does. With +ary+
+ * containing only the remainder elements, not including what was shifted to
+ * +new_ary+. See also Array#unshift for the opposite effect.
+ *
+ * args = [ "-m", "-q", "filename" ]
+ * args.shift #=> "-m"
+ * args #=> ["-q", "filename"]
+ *
+ * args = [ "-m", "-q", "filename" ]
+ * args.shift(2) #=> ["-m", "-q"]
+ * args #=> ["filename"]
+ */
+
static VALUE
-ary_subseq(ary, beg, len)
- struct RArray *ary;
- int beg, len;
+rb_ary_shift_m(int argc, VALUE *argv, VALUE ary)
{
- struct RArray *ary2;
+ VALUE result;
+ long n;
- if (beg < 0) {
- beg = ary->len + beg;
- if (beg < 0) beg = 0;
+ if (argc == 0) {
+ return rb_ary_shift(ary);
}
- if (len < 0) {
- IndexError("negative length %d", ary->len);
+
+ rb_ary_modify_check(ary);
+ result = ary_take_first_or_last(argc, argv, ary, ARY_TAKE_FIRST);
+ n = RARRAY_LEN(result);
+ if (ARY_SHARED_P(ary)) {
+ if (ARY_SHARED_OCCUPIED(ARY_SHARED(ary))) {
+ ary_mem_clear(ary, 0, n);
+ }
+ ARY_INCREASE_PTR(ary, n);
}
- if (len == 0) {
- return ary_new2(0);
+ else {
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr, ptr + n, VALUE, RARRAY_LEN(ary)-n);
+ }); /* WB: no new reference */
}
- if (beg + len > ary->len) {
- len = ary->len - beg;
+ ARY_INCREASE_LEN(ary, -n);
+
+ return result;
+}
+
+static void
+ary_ensure_room_for_unshift(VALUE ary, int argc)
+{
+ long len = RARRAY_LEN(ary);
+ long new_len = len + argc;
+ long capa;
+ const VALUE *head, *sharedp;
+
+ if (ARY_SHARED_P(ary)) {
+ VALUE shared = ARY_SHARED(ary);
+ capa = RARRAY_LEN(shared);
+ if (ARY_SHARED_OCCUPIED(shared) && capa > new_len) {
+ head = RARRAY_CONST_PTR(ary);
+ sharedp = RARRAY_CONST_PTR(shared);
+ goto makeroom_if_need;
+ }
}
- ary2 = (struct RArray*)ary_new2(len);
- MEMCPY(ary2->ptr, ary->ptr+beg, VALUE, len);
- ary2->len = len;
+ rb_ary_modify(ary);
+ capa = ARY_CAPA(ary);
+ if (capa - (capa >> 6) <= new_len) {
+ ary_double_capa(ary, new_len);
+ }
- return (VALUE)ary2;
+ /* use shared array for big "queues" */
+ if (new_len > ARY_DEFAULT_SIZE * 4) {
+ /* make a room for unshifted items */
+ capa = ARY_CAPA(ary);
+ ary_make_shared(ary);
+
+ head = sharedp = RARRAY_CONST_PTR(ary);
+ goto makeroom;
+ makeroom_if_need:
+ if (head - sharedp < argc) {
+ long room;
+ makeroom:
+ room = capa - new_len;
+ room -= room >> 4;
+ MEMMOVE((VALUE *)sharedp + argc + room, head, VALUE, len);
+ head = sharedp + argc + room;
+ }
+ ARY_SET_PTR(ary, head - argc);
+ }
+ else {
+ /* sliding items */
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr + argc, ptr, VALUE, len);
+ });
+ }
}
+/*
+ * call-seq:
+ * ary.unshift(obj, ...) -> ary
+ *
+ * Prepends objects to the front of +self+, moving other elements upwards.
+ * See also Array#shift for the opposite effect.
+ *
+ * a = [ "b", "c", "d" ]
+ * a.unshift("a") #=> ["a", "b", "c", "d"]
+ * a.unshift(1, 2) #=> [ 1, 2, "a", "b", "c", "d"]
+ */
+
static VALUE
-beg_len(range, begp, lenp, len)
- VALUE range;
- int *begp, *lenp;
- int len;
+rb_ary_unshift_m(int argc, VALUE *argv, VALUE ary)
{
- int beg, end;
+ long len = RARRAY_LEN(ary);
+
+ if (argc == 0) {
+ rb_ary_modify_check(ary);
+ return ary;
+ }
+
+ ary_ensure_room_for_unshift(ary, argc);
+ ary_memcpy(ary, 0, argc, argv);
+ ARY_SET_LEN(ary, len + argc);
+ return ary;
+}
- if (!range_beg_end(range, &beg, &end)) return FALSE;
+VALUE
+rb_ary_unshift(VALUE ary, VALUE item)
+{
+ return rb_ary_unshift_m(1,&item,ary);
+}
- if ((beg > 0 && end > 0 || beg < 0 && end < 0) && beg > end) {
- IndexError("end smaller than beg [%d..%d]", beg, end);
+/* faster version - use this if you don't need to treat negative offset */
+static inline VALUE
+rb_ary_elt(VALUE ary, long offset)
+{
+ long len = RARRAY_LEN(ary);
+ if (len == 0) return Qnil;
+ if (offset < 0 || len <= offset) {
+ return Qnil;
}
+ return RARRAY_AREF(ary, offset);
+}
- if (beg < 0) {
- beg = len + beg;
- if (beg < 0) beg = 0;
+VALUE
+rb_ary_entry(VALUE ary, long offset)
+{
+ if (offset < 0) {
+ offset += RARRAY_LEN(ary);
}
- *begp = beg;
- if (beg > len) {
- *lenp = 0;
+ return rb_ary_elt(ary, offset);
+}
+
+VALUE
+rb_ary_subseq(VALUE ary, long beg, long len)
+{
+ VALUE klass;
+ long alen = RARRAY_LEN(ary);
+
+ if (beg > alen) return Qnil;
+ if (beg < 0 || len < 0) return Qnil;
+
+ if (alen < len || alen < beg + len) {
+ len = alen - beg;
}
- else {
- if (end < 0) {
- end = len + end;
- if (end < 0) end = -1;
- }
- if (end > len) end = len;
- if (beg > end) {
- *lenp = 0;
- }
- else {
- *lenp = end - beg +1;
+ klass = rb_obj_class(ary);
+ if (len == 0) return ary_new(klass, 0);
+
+ return ary_make_partial(ary, klass, beg, len);
+}
+
+/*
+ * call-seq:
+ * ary[index] -> obj or nil
+ * ary[start, length] -> new_ary or nil
+ * ary[range] -> new_ary or nil
+ * ary.slice(index) -> obj or nil
+ * ary.slice(start, length) -> new_ary or nil
+ * ary.slice(range) -> new_ary or nil
+ *
+ * Element Reference --- Returns the element at +index+, or returns a
+ * subarray starting at the +start+ index and continuing for +length+
+ * elements, or returns a subarray specified by +range+ of indices.
+ *
+ * Negative indices count backward from the end of the array (-1 is the last
+ * element). For +start+ and +range+ cases the starting index is just before
+ * an element. Additionally, an empty array is returned when the starting
+ * index for an element range is at the end of the array.
+ *
+ * Returns +nil+ if the index (or starting index) are out of range.
+ *
+ * a = [ "a", "b", "c", "d", "e" ]
+ * a[2] + a[0] + a[1] #=> "cab"
+ * a[6] #=> nil
+ * a[1, 2] #=> [ "b", "c" ]
+ * a[1..3] #=> [ "b", "c", "d" ]
+ * a[4..7] #=> [ "e" ]
+ * a[6..10] #=> nil
+ * a[-3, 3] #=> [ "c", "d", "e" ]
+ * # special cases
+ * a[5] #=> nil
+ * a[6, 1] #=> nil
+ * a[5, 1] #=> []
+ * a[5..10] #=> []
+ *
+ */
+
+VALUE
+rb_ary_aref(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE arg;
+ long beg, len;
+
+ if (argc == 2) {
+ beg = NUM2LONG(argv[0]);
+ len = NUM2LONG(argv[1]);
+ if (beg < 0) {
+ beg += RARRAY_LEN(ary);
}
+ return rb_ary_subseq(ary, beg, len);
+ }
+ if (argc != 1) {
+ rb_scan_args(argc, argv, "11", NULL, NULL);
+ }
+ arg = argv[0];
+ /* special case - speeding up */
+ if (FIXNUM_P(arg)) {
+ return rb_ary_entry(ary, FIX2LONG(arg));
+ }
+ /* check if idx is Range */
+ switch (rb_range_beg_len(arg, &beg, &len, RARRAY_LEN(ary), 0)) {
+ case Qfalse:
+ break;
+ case Qnil:
+ return Qnil;
+ default:
+ return rb_ary_subseq(ary, beg, len);
}
- return TRUE;
+ return rb_ary_entry(ary, NUM2LONG(arg));
}
+/*
+ * call-seq:
+ * ary.at(index) -> obj or nil
+ *
+ * Returns the element at +index+. A negative index counts from the end of
+ * +self+. Returns +nil+ if the index is out of range. See also
+ * Array#[].
+ *
+ * a = [ "a", "b", "c", "d", "e" ]
+ * a.at(0) #=> "a"
+ * a.at(-1) #=> "e"
+ */
+
static VALUE
-ary_aref(argc, argv, ary)
- int argc;
- VALUE *argv;
- struct RArray *ary;
+rb_ary_at(VALUE ary, VALUE pos)
{
- VALUE arg1, arg2;
- int beg, len;
+ return rb_ary_entry(ary, NUM2LONG(pos));
+}
- if (rb_scan_args(argc, argv, "11", &arg1, &arg2) == 2) {
- beg = NUM2INT(arg1);
- len = NUM2INT(arg2);
- if (len <= 0) {
- return ary_new();
- }
- return ary_subseq(ary, beg, len);
+/*
+ * call-seq:
+ * ary.first -> obj or nil
+ * ary.first(n) -> new_ary
+ *
+ * Returns the first element, or the first +n+ elements, of the array.
+ * If the array is empty, the first form returns +nil+, and the
+ * second form returns an empty array. See also Array#last for
+ * the opposite effect.
+ *
+ * a = [ "q", "r", "s", "t" ]
+ * a.first #=> "q"
+ * a.first(2) #=> ["q", "r"]
+ */
+
+static VALUE
+rb_ary_first(int argc, VALUE *argv, VALUE ary)
+{
+ if (argc == 0) {
+ if (RARRAY_LEN(ary) == 0) return Qnil;
+ return RARRAY_AREF(ary, 0);
+ }
+ else {
+ return ary_take_first_or_last(argc, argv, ary, ARY_TAKE_FIRST);
}
+}
- /* special case - speeding up */
- if (FIXNUM_P(arg1)) {
- return ary_entry(ary, FIX2INT(arg1));
+/*
+ * call-seq:
+ * ary.last -> obj or nil
+ * ary.last(n) -> new_ary
+ *
+ * Returns the last element(s) of +self+. If the array is empty,
+ * the first form returns +nil+.
+ *
+ * See also Array#first for the opposite effect.
+ *
+ * a = [ "w", "x", "y", "z" ]
+ * a.last #=> "z"
+ * a.last(2) #=> ["y", "z"]
+ */
+
+VALUE
+rb_ary_last(int argc, VALUE *argv, VALUE ary)
+{
+ if (argc == 0) {
+ long len = RARRAY_LEN(ary);
+ if (len == 0) return Qnil;
+ return RARRAY_AREF(ary, len-1);
}
else {
- /* check if idx is Range */
- if (beg_len(arg1, &beg, &len, ary->len)) {
- return ary_subseq(ary, beg, len);
- }
+ return ary_take_first_or_last(argc, argv, ary, ARY_TAKE_LAST);
+ }
+}
+
+/*
+ * call-seq:
+ * ary.fetch(index) -> obj
+ * ary.fetch(index, default) -> obj
+ * ary.fetch(index) { |index| block } -> obj
+ *
+ * Tries to return the element at position +index+, but throws an IndexError
+ * exception if the referenced +index+ lies outside of the array bounds. This
+ * error can be prevented by supplying a second argument, which will act as a
+ * +default+ value.
+ *
+ * Alternatively, if a block is given it will only be executed when an
+ * invalid +index+ is referenced. Negative values of +index+ count from the
+ * end of the array.
+ *
+ * a = [ 11, 22, 33, 44 ]
+ * a.fetch(1) #=> 22
+ * a.fetch(-1) #=> 44
+ * a.fetch(4, 'cat') #=> "cat"
+ * a.fetch(100) { |i| puts "#{i} is out of bounds" }
+ * #=> "100 is out of bounds"
+ */
+
+static VALUE
+rb_ary_fetch(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE pos, ifnone;
+ long block_given;
+ long idx;
+
+ rb_scan_args(argc, argv, "11", &pos, &ifnone);
+ block_given = rb_block_given_p();
+ if (block_given && argc == 2) {
+ rb_warn("block supersedes default value argument");
}
- if (TYPE(arg1) == T_BIGNUM) {
- IndexError("index too big");
+ idx = NUM2LONG(pos);
+
+ if (idx < 0) {
+ idx += RARRAY_LEN(ary);
+ }
+ if (idx < 0 || RARRAY_LEN(ary) <= idx) {
+ if (block_given) return rb_yield(pos);
+ if (argc == 1) {
+ rb_raise(rb_eIndexError, "index %ld outside of array bounds: %ld...%ld",
+ idx - (idx < 0 ? RARRAY_LEN(ary) : 0), -RARRAY_LEN(ary), RARRAY_LEN(ary));
+ }
+ return ifnone;
}
- return ary_entry(ary, NUM2INT(arg1));
+ return RARRAY_AREF(ary, idx);
}
+/*
+ * call-seq:
+ * ary.find_index(obj) -> int or nil
+ * ary.find_index { |item| block } -> int or nil
+ * ary.find_index -> Enumerator
+ * ary.index(obj) -> int or nil
+ * ary.index { |item| block } -> int or nil
+ * ary.index -> Enumerator
+ *
+ * Returns the _index_ of the first object in +ary+ such that the object is
+ * <code>==</code> to +obj+.
+ *
+ * If a block is given instead of an argument, returns the _index_ of the
+ * first object for which the block returns +true+. Returns +nil+ if no
+ * match is found.
+ *
+ * See also Array#rindex.
+ *
+ * An Enumerator is returned if neither a block nor argument is given.
+ *
+ * a = [ "a", "b", "c" ]
+ * a.index("b") #=> 1
+ * a.index("z") #=> nil
+ * a.index { |x| x == "b" } #=> 1
+ */
+
static VALUE
-ary_index(ary, val)
- struct RArray *ary;
- VALUE val;
+rb_ary_index(int argc, VALUE *argv, VALUE ary)
{
- int i;
+ const VALUE *ptr;
+ VALUE val;
+ long i, len;
- for (i=0; i<ary->len; i++) {
- if (rb_equal(ary->ptr[i], val))
- return INT2FIX(i);
+ if (argc == 0) {
+ RETURN_ENUMERATOR(ary, 0, 0);
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
+ return LONG2NUM(i);
+ }
+ }
+ return Qnil;
+ }
+ rb_check_arity(argc, 0, 1);
+ val = argv[0];
+ if (rb_block_given_p())
+ rb_warn("given block not used");
+ len = RARRAY_LEN(ary);
+ ptr = RARRAY_CONST_PTR(ary);
+ for (i=0; i<len; i++) {
+ VALUE e = ptr[i];
+ switch (rb_equal_opt(e, val)) {
+ case Qundef:
+ if (!rb_equal(e, val)) break;
+ case Qtrue:
+ return LONG2NUM(i);
+ case Qfalse:
+ continue;
+ }
+ len = RARRAY_LEN(ary);
+ ptr = RARRAY_CONST_PTR(ary);
}
return Qnil;
}
+/*
+ * call-seq:
+ * ary.rindex(obj) -> int or nil
+ * ary.rindex { |item| block } -> int or nil
+ * ary.rindex -> Enumerator
+ *
+ * Returns the _index_ of the last object in +self+ <code>==</code> to +obj+.
+ *
+ * If a block is given instead of an argument, returns the _index_ of the
+ * first object for which the block returns +true+, starting from the last
+ * object.
+ *
+ * Returns +nil+ if no match is found.
+ *
+ * See also Array#index.
+ *
+ * If neither block nor argument is given, an Enumerator is returned instead.
+ *
+ * a = [ "a", "b", "b", "b", "c" ]
+ * a.rindex("b") #=> 3
+ * a.rindex("z") #=> nil
+ * a.rindex { |x| x == "b" } #=> 3
+ */
+
static VALUE
-ary_indexes(ary, args)
- struct RArray *ary, *args;
+rb_ary_rindex(int argc, VALUE *argv, VALUE ary)
{
- VALUE *p, *pend;
- VALUE new_ary;
- int i = 0;
+ const VALUE *ptr;
+ VALUE val;
+ long i = RARRAY_LEN(ary), len;
- if (!args || NIL_P(args)) {
- return ary_new2(0);
+ if (argc == 0) {
+ RETURN_ENUMERATOR(ary, 0, 0);
+ while (i--) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i))))
+ return LONG2NUM(i);
+ if (i > (len = RARRAY_LEN(ary))) {
+ i = len;
+ }
+ }
+ return Qnil;
}
+ rb_check_arity(argc, 0, 1);
+ val = argv[0];
+ if (rb_block_given_p())
+ rb_warn("given block not used");
+ ptr = RARRAY_CONST_PTR(ary);
+ while (i--) {
+ VALUE e = ptr[i];
+ switch (rb_equal_opt(e, val)) {
+ case Qundef:
+ if (!rb_equal(e, val)) break;
+ case Qtrue:
+ return LONG2NUM(i);
+ case Qfalse:
+ continue;
+ }
+ if (i > (len = RARRAY_LEN(ary))) {
+ i = len;
+ }
+ ptr = RARRAY_CONST_PTR(ary);
+ }
+ return Qnil;
+}
- new_ary = ary_new2(args->len);
+VALUE
+rb_ary_to_ary(VALUE obj)
+{
+ VALUE tmp = rb_check_array_type(obj);
- p = args->ptr; pend = p + args->len;
- while (p < pend) {
- ary_store(new_ary, i++, ary_entry(ary, NUM2INT(*p)));
- p++;
- }
- return new_ary;
+ if (!NIL_P(tmp)) return tmp;
+ return rb_ary_new3(1, obj);
}
static void
-ary_replace(ary, beg, len, rpl)
- struct RArray *ary, *rpl;
- int beg, len;
+rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)
{
- ary_modify(ary);
- if (TYPE(rpl) != T_ARRAY) {
- rpl = (struct RArray*)rb_to_a(rpl);
- }
+ long rlen;
+ long olen;
+
+ if (len < 0) rb_raise(rb_eIndexError, "negative length (%ld)", len);
+ olen = RARRAY_LEN(ary);
if (beg < 0) {
- beg = ary->len + beg;
- if (beg < 0) beg = 0;
+ beg += olen;
+ if (beg < 0) {
+ rb_raise(rb_eIndexError, "index %ld too small for array; minimum: %ld",
+ beg - olen, -olen);
+ }
+ }
+ if (olen < len || olen < beg + len) {
+ len = olen - beg;
}
- if (beg >= ary->len) {
- len = beg + rpl->len;
- if (len >= ary->capa) {
- ary->capa=len;
- REALLOC_N(ary->ptr, VALUE, ary->capa);
+
+ if (rpl == Qundef) {
+ rlen = 0;
+ }
+ else {
+ rpl = rb_ary_to_ary(rpl);
+ rlen = RARRAY_LEN(rpl);
+ olen = RARRAY_LEN(ary); /* ary may be resized in rpl.to_ary too */
+ }
+ if (beg >= olen) {
+ if (beg > ARY_MAX_SIZE - rlen) {
+ rb_raise(rb_eIndexError, "index %ld too big", beg);
+ }
+ ary_ensure_room_for_push(ary, rlen-len); /* len is 0 or negative */
+ len = beg + rlen;
+ ary_mem_clear(ary, olen, beg - olen);
+ if (rlen > 0) {
+ ary_memcpy(ary, beg, rlen, RARRAY_CONST_PTR(rpl));
}
- memclear(ary->ptr+ary->len, beg-ary->len);
- MEMCPY(ary->ptr+beg, rpl->ptr, VALUE, rpl->len);
- ary->len = len;
+ ARY_SET_LEN(ary, len);
}
else {
- int alen;
+ long alen;
- if (beg + len > ary->len) {
- len = ary->len - beg;
- }
- if (len < 0) {
- IndexError("negative length %d", ary->len);
+ rb_ary_modify(ary);
+ alen = olen + rlen - len;
+ if (alen >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, alen);
}
- alen = ary->len + rpl->len - len;
- if (alen >= ary->capa) {
- ary->capa=alen;
- REALLOC_N(ary->ptr, VALUE, ary->capa);
+ if (len != rlen) {
+ RARRAY_PTR_USE(ary, ptr,
+ MEMMOVE(ptr + beg + rlen, ptr + beg + len,
+ VALUE, olen - (beg + len)));
+ ARY_SET_LEN(ary, alen);
+ }
+ if (rlen > 0) {
+ MEMMOVE(RARRAY_PTR(ary) + beg, RARRAY_CONST_PTR(rpl), VALUE, rlen);
}
+ }
+}
- if (len != RARRAY(rpl)->len) {
- MEMMOVE(ary->ptr+beg+rpl->len, ary->ptr+beg+len,
- VALUE, ary->len-(beg+len));
- ary->len = alen;
+void
+rb_ary_set_len(VALUE ary, long len)
+{
+ long capa;
+
+ rb_ary_modify_check(ary);
+ if (ARY_SHARED_P(ary)) {
+ rb_raise(rb_eRuntimeError, "can't set length of shared ");
+ }
+ if (len > (capa = (long)ARY_CAPA(ary))) {
+ rb_bug("probable buffer overflow: %ld for %ld", len, capa);
+ }
+ ARY_SET_LEN(ary, len);
+}
+
+/*!
+ * expands or shrinks \a ary to \a len elements.
+ * expanded region will be filled with Qnil.
+ * \param ary an array
+ * \param len new size
+ * \return \a ary
+ * \post the size of \a ary is \a len.
+ */
+VALUE
+rb_ary_resize(VALUE ary, long len)
+{
+ long olen;
+
+ rb_ary_modify(ary);
+ olen = RARRAY_LEN(ary);
+ if (len == olen) return ary;
+ if (len > ARY_MAX_SIZE) {
+ rb_raise(rb_eIndexError, "index %ld too big", len);
+ }
+ if (len > olen) {
+ if (len >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, len);
}
- MEMCPY(ary->ptr+beg, rpl->ptr, VALUE, rpl->len);
+ ary_mem_clear(ary, olen, len - olen);
+ ARY_SET_LEN(ary, len);
+ }
+ else if (ARY_EMBED_P(ary)) {
+ ARY_SET_EMBED_LEN(ary, len);
}
+ else if (len <= RARRAY_EMBED_LEN_MAX) {
+ VALUE tmp[RARRAY_EMBED_LEN_MAX];
+ MEMCPY(tmp, ARY_HEAP_PTR(ary), VALUE, len);
+ ary_discard(ary);
+ MEMCPY((VALUE *)ARY_EMBED_PTR(ary), tmp, VALUE, len); /* WB: no new reference */
+ ARY_SET_EMBED_LEN(ary, len);
+ }
+ else {
+ if (olen > len + ARY_DEFAULT_SIZE) {
+ SIZED_REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, len, RARRAY(ary)->as.heap.aux.capa);
+ ARY_SET_CAPA(ary, len);
+ }
+ ARY_SET_HEAP_LEN(ary, len);
+ }
+ return ary;
}
+/*
+ * call-seq:
+ * ary[index] = obj -> obj
+ * ary[start, length] = obj or other_ary or nil -> obj or other_ary or nil
+ * ary[range] = obj or other_ary or nil -> obj or other_ary or nil
+ *
+ * Element Assignment --- Sets the element at +index+, or replaces a subarray
+ * from the +start+ index for +length+ elements, or replaces a subarray
+ * specified by the +range+ of indices.
+ *
+ * If indices are greater than the current capacity of the array, the array
+ * grows automatically. Elements are inserted into the array at +start+ if
+ * +length+ is zero.
+ *
+ * Negative indices will count backward from the end of the array. For
+ * +start+ and +range+ cases the starting index is just before an element.
+ *
+ * An IndexError is raised if a negative index points past the beginning of
+ * the array.
+ *
+ * See also Array#push, and Array#unshift.
+ *
+ * a = Array.new
+ * a[4] = "4"; #=> [nil, nil, nil, nil, "4"]
+ * a[0, 3] = [ 'a', 'b', 'c' ] #=> ["a", "b", "c", nil, "4"]
+ * a[1..2] = [ 1, 2 ] #=> ["a", 1, 2, nil, "4"]
+ * a[0, 2] = "?" #=> ["?", 2, nil, "4"]
+ * a[0..2] = "A" #=> ["A", "4"]
+ * a[-1] = "Z" #=> ["A", "Z"]
+ * a[1..-1] = nil #=> ["A", nil]
+ * a[1..-1] = [] #=> ["A"]
+ * a[0, 0] = [ 1, 2 ] #=> [1, 2, "A"]
+ * a[3, 0] = "B" #=> [1, 2, "A", "B"]
+ */
+
static VALUE
-ary_aset(argc, argv, ary)
- int argc;
- VALUE *argv;
- struct RArray *ary;
+rb_ary_aset(int argc, VALUE *argv, VALUE ary)
{
- VALUE arg1, arg2;
- struct RArray *arg3;
- int offset;
- int beg, len;
-
- if (rb_scan_args(argc, argv, "21", &arg1, &arg2, &arg3) == 3) {
- beg = NUM2INT(arg1);
- len = NUM2INT(arg2);
- ary_replace(ary, beg, len, arg3);
- return (VALUE)arg3;
- }
- else if (FIXNUM_P(arg1)) {
- offset = FIX2INT(arg1);
+ long offset, beg, len;
+
+ if (argc == 3) {
+ rb_ary_modify_check(ary);
+ beg = NUM2LONG(argv[0]);
+ len = NUM2LONG(argv[1]);
+ rb_ary_splice(ary, beg, len, argv[2]);
+ return argv[2];
+ }
+ rb_check_arity(argc, 2, 2);
+ rb_ary_modify_check(ary);
+ if (FIXNUM_P(argv[0])) {
+ offset = FIX2LONG(argv[0]);
goto fixnum;
}
- else if (beg_len(arg1, &beg, &len, ary->len)) {
+ if (rb_range_beg_len(argv[0], &beg, &len, RARRAY_LEN(ary), 1)) {
/* check if idx is Range */
- ary_replace(ary, beg, len, arg2);
- return arg2;
- }
- if (TYPE(arg1) == T_BIGNUM) {
- IndexError("index too big");
+ rb_ary_splice(ary, beg, len, argv[1]);
+ return argv[1];
}
- offset = NUM2INT(arg1);
- fixnum:
- if (offset < 0) {
- offset = ary->len + offset;
+ offset = NUM2LONG(argv[0]);
+fixnum:
+ rb_ary_store(ary, offset, argv[1]);
+ return argv[1];
+}
+
+/*
+ * call-seq:
+ * ary.insert(index, obj...) -> ary
+ *
+ * Inserts the given values before the element with the given +index+.
+ *
+ * Negative indices count backwards from the end of the array, where +-1+ is
+ * the last element.
+ *
+ * a = %w{ a b c d }
+ * a.insert(2, 99) #=> ["a", "b", 99, "c", "d"]
+ * a.insert(-2, 1, 2, 3) #=> ["a", "b", 99, "c", 1, 2, 3, "d"]
+ */
+
+static VALUE
+rb_ary_insert(int argc, VALUE *argv, VALUE ary)
+{
+ long pos;
+
+ rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);
+ rb_ary_modify_check(ary);
+ if (argc == 1) return ary;
+ pos = NUM2LONG(argv[0]);
+ if (pos == -1) {
+ pos = RARRAY_LEN(ary);
+ }
+ if (pos < 0) {
+ pos++;
}
- ary_store(ary, offset, arg2);
- return arg2;
+ rb_ary_splice(ary, pos, 0, rb_ary_new4(argc - 1, argv + 1));
+ return ary;
+}
+
+static VALUE
+rb_ary_length(VALUE ary);
+
+static VALUE
+ary_enum_length(VALUE ary, VALUE args, VALUE eobj)
+{
+ return rb_ary_length(ary);
}
+/*
+ * call-seq:
+ * ary.each { |item| block } -> ary
+ * ary.each -> Enumerator
+ *
+ * Calls the given block once for each element in +self+, passing that element
+ * as a parameter.
+ *
+ * An Enumerator is returned if no block is given.
+ *
+ * a = [ "a", "b", "c" ]
+ * a.each {|x| print x, " -- " }
+ *
+ * produces:
+ *
+ * a -- b -- c --
+ */
+
VALUE
-ary_each(ary)
- struct RArray *ary;
+rb_ary_each(VALUE array)
{
- int i;
+ long i;
+ volatile VALUE ary = array;
- for (i=0; i<ary->len; i++) {
- rb_yield(ary->ptr[i]);
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ rb_yield(RARRAY_AREF(ary, i));
}
- return Qnil;
+ return ary;
}
+/*
+ * call-seq:
+ * ary.each_index { |index| block } -> ary
+ * ary.each_index -> Enumerator
+ *
+ * Same as Array#each, but passes the +index+ of the element instead of the
+ * element itself.
+ *
+ * An Enumerator is returned if no block is given.
+ *
+ * a = [ "a", "b", "c" ]
+ * a.each_index {|x| print x, " -- " }
+ *
+ * produces:
+ *
+ * 0 -- 1 -- 2 --
+ */
+
static VALUE
-ary_each_index(ary)
- struct RArray *ary;
+rb_ary_each_index(VALUE ary)
{
- int i;
+ long i;
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
- for (i=0; i<ary->len; i++) {
- rb_yield(INT2FIX(i));
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ rb_yield(LONG2NUM(i));
}
- return Qnil;
+ return ary;
}
+/*
+ * call-seq:
+ * ary.reverse_each { |item| block } -> ary
+ * ary.reverse_each -> Enumerator
+ *
+ * Same as Array#each, but traverses +self+ in reverse order.
+ *
+ * a = [ "a", "b", "c" ]
+ * a.reverse_each {|x| print x, " " }
+ *
+ * produces:
+ *
+ * c b a
+ */
+
static VALUE
-ary_reverse_each(ary)
- struct RArray *ary;
+rb_ary_reverse_each(VALUE ary)
{
- int len = ary->len;
+ long len;
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ len = RARRAY_LEN(ary);
while (len--) {
- rb_yield(ary->ptr[len]);
+ long nlen;
+ rb_yield(RARRAY_AREF(ary, len));
+ nlen = RARRAY_LEN(ary);
+ if (nlen < len) {
+ len = nlen;
+ }
}
- return Qnil;
+ return ary;
}
+/*
+ * call-seq:
+ * ary.length -> int
+ *
+ * Returns the number of elements in +self+. May be zero.
+ *
+ * [ 1, 2, 3, 4, 5 ].length #=> 5
+ * [].length #=> 0
+ */
+
static VALUE
-ary_length(ary)
- struct RArray *ary;
+rb_ary_length(VALUE ary)
{
- return INT2FIX(ary->len);
+ long len = RARRAY_LEN(ary);
+ return LONG2NUM(len);
}
+/*
+ * call-seq:
+ * ary.empty? -> true or false
+ *
+ * Returns +true+ if +self+ contains no elements.
+ *
+ * [].empty? #=> true
+ */
+
static VALUE
-ary_empty_p(ary)
- struct RArray *ary;
+rb_ary_empty_p(VALUE ary)
+{
+ if (RARRAY_LEN(ary) == 0)
+ return Qtrue;
+ return Qfalse;
+}
+
+VALUE
+rb_ary_dup(VALUE ary)
+{
+ long len = RARRAY_LEN(ary);
+ VALUE dup = rb_ary_new2(len);
+ ary_memcpy(dup, 0, len, RARRAY_CONST_PTR(ary));
+ ARY_SET_LEN(dup, len);
+ return dup;
+}
+
+VALUE
+rb_ary_resurrect(VALUE ary)
{
- if (ary->len == 0)
- return TRUE;
- return FALSE;
+ return rb_ary_new4(RARRAY_LEN(ary), RARRAY_CONST_PTR(ary));
}
+extern VALUE rb_output_fs;
+
+static void ary_join_1(VALUE obj, VALUE ary, VALUE sep, long i, VALUE result, int *first);
+
static VALUE
-ary_clone(ary)
- struct RArray *ary;
+recursive_join(VALUE obj, VALUE argp, int recur)
+{
+ VALUE *arg = (VALUE *)argp;
+ VALUE ary = arg[0];
+ VALUE sep = arg[1];
+ VALUE result = arg[2];
+ int *first = (int *)arg[3];
+
+ if (recur) {
+ rb_raise(rb_eArgError, "recursive array join");
+ }
+ else {
+ ary_join_1(obj, ary, sep, 0, result, first);
+ }
+ return Qnil;
+}
+
+static void
+ary_join_0(VALUE ary, VALUE sep, long max, VALUE result)
{
- VALUE ary2 = ary_new2(ary->len);
+ long i;
+ VALUE val;
- CLONESETUP(ary2, ary);
- MEMCPY(RARRAY(ary2)->ptr, ary->ptr, VALUE, ary->len);
- RARRAY(ary2)->len = ary->len;
- return ary2;
+ if (max > 0) rb_enc_copy(result, RARRAY_AREF(ary, 0));
+ for (i=0; i<max; i++) {
+ val = RARRAY_AREF(ary, i);
+ if (i > 0 && !NIL_P(sep))
+ rb_str_buf_append(result, sep);
+ rb_str_buf_append(result, val);
+ if (OBJ_TAINTED(val)) OBJ_TAINT(result);
+ }
}
-extern VALUE OFS;
+static void
+ary_join_1(VALUE obj, VALUE ary, VALUE sep, long i, VALUE result, int *first)
+{
+ VALUE val, tmp;
+
+ for (; i<RARRAY_LEN(ary); i++) {
+ if (i > 0 && !NIL_P(sep))
+ rb_str_buf_append(result, sep);
+
+ val = RARRAY_AREF(ary, i);
+ if (RB_TYPE_P(val, T_STRING)) {
+ str_join:
+ rb_str_buf_append(result, val);
+ *first = FALSE;
+ }
+ else if (RB_TYPE_P(val, T_ARRAY)) {
+ obj = val;
+ ary_join:
+ if (val == ary) {
+ rb_raise(rb_eArgError, "recursive array join");
+ }
+ else {
+ VALUE args[4];
+
+ args[0] = val;
+ args[1] = sep;
+ args[2] = result;
+ args[3] = (VALUE)first;
+ rb_exec_recursive(recursive_join, obj, (VALUE)args);
+ }
+ }
+ else {
+ tmp = rb_check_string_type(val);
+ if (!NIL_P(tmp)) {
+ val = tmp;
+ goto str_join;
+ }
+ tmp = rb_check_convert_type(val, T_ARRAY, "Array", "to_ary");
+ if (!NIL_P(tmp)) {
+ obj = val;
+ val = tmp;
+ goto ary_join;
+ }
+ val = rb_obj_as_string(val);
+ if (*first) {
+ rb_enc_copy(result, val);
+ *first = FALSE;
+ }
+ goto str_join;
+ }
+ }
+}
VALUE
-ary_join(ary, sep)
- struct RArray *ary;
- struct RString *sep;
+rb_ary_join(VALUE ary, VALUE sep)
{
- int i;
- VALUE result, tmp;
- if (ary->len == 0) return str_new(0, 0);
+ long len = 1, i;
+ int taint = FALSE;
+ VALUE val, tmp, result;
- switch (TYPE(ary->ptr[0])) {
- case T_STRING:
- result = str_dup(ary->ptr[0]);
- break;
- case T_ARRAY:
- result = ary_join(ary->ptr[0], sep);
- break;
- default:
- result = obj_as_string(ary->ptr[0]);
- break;
- }
+ if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new(0, 0);
+ if (OBJ_TAINTED(ary)) taint = TRUE;
- for (i=1; i<ary->len; i++) {
- tmp = ary->ptr[i];
- switch (TYPE(tmp)) {
- case T_STRING:
- break;
- case T_ARRAY:
- tmp = ary_join(tmp, sep);
- break;
- default:
- tmp = obj_as_string(tmp);
+ if (!NIL_P(sep)) {
+ StringValue(sep);
+ len += RSTRING_LEN(sep) * (RARRAY_LEN(ary) - 1);
+ }
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ val = RARRAY_AREF(ary, i);
+ tmp = rb_check_string_type(val);
+
+ if (NIL_P(tmp) || tmp != val) {
+ int first;
+ result = rb_str_buf_new(len + (RARRAY_LEN(ary)-i)*10);
+ rb_enc_associate(result, rb_usascii_encoding());
+ if (taint) OBJ_TAINT(result);
+ ary_join_0(ary, sep, i, result);
+ first = i == 0;
+ ary_join_1(ary, ary, sep, i, result, &first);
+ return result;
}
- if (!NIL_P(sep)) str_cat(result, sep->ptr, sep->len);
- str_cat(result, RSTRING(tmp)->ptr, RSTRING(tmp)->len);
- if (str_tainted(tmp)) str_taint(result);
+
+ len += RSTRING_LEN(tmp);
}
+ result = rb_str_buf_new(len);
+ if (taint) OBJ_TAINT(result);
+ ary_join_0(ary, sep, RARRAY_LEN(ary), result);
+
return result;
}
+/*
+ * call-seq:
+ * ary.join(separator=$,) -> str
+ *
+ * Returns a string created by converting each element of the array to
+ * a string, separated by the given +separator+.
+ * If the +separator+ is +nil+, it uses current $,.
+ * If both the +separator+ and $, are nil, it uses empty string.
+ *
+ * [ "a", "b", "c" ].join #=> "abc"
+ * [ "a", "b", "c" ].join("-") #=> "a-b-c"
+ */
+
static VALUE
-ary_join_method(argc, argv, ary)
- int argc;
- VALUE *argv;
- struct RArray *ary;
+rb_ary_join_m(int argc, VALUE *argv, VALUE ary)
{
VALUE sep;
rb_scan_args(argc, argv, "01", &sep);
- if (NIL_P(sep)) sep = OFS;
- if (!NIL_P(sep)) Check_Type(sep, T_STRING);
+ if (NIL_P(sep)) sep = rb_output_fs;
- return ary_join(ary, sep);
+ return rb_ary_join(ary, sep);
}
-VALUE
-ary_to_s(ary)
- VALUE ary;
+static VALUE
+inspect_ary(VALUE ary, VALUE dummy, int recur)
{
- VALUE str = ary_join(ary, OFS);
- if (NIL_P(str)) return str_new(0, 0);
+ int tainted = OBJ_TAINTED(ary);
+ long i;
+ VALUE s, str;
+
+ if (recur) return rb_usascii_str_new_cstr("[...]");
+ str = rb_str_buf_new2("[");
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ s = rb_inspect(RARRAY_AREF(ary, i));
+ if (OBJ_TAINTED(s)) tainted = TRUE;
+ if (i > 0) rb_str_buf_cat2(str, ", ");
+ else rb_enc_copy(str, s);
+ rb_str_buf_append(str, s);
+ }
+ rb_str_buf_cat2(str, "]");
+ if (tainted) OBJ_TAINT(str);
return str;
}
+/*
+ * call-seq:
+ * ary.inspect -> string
+ * ary.to_s -> string
+ *
+ * Creates a string representation of +self+.
+ *
+ * [ "a", "b", "c" ].to_s #=> "[\"a\", \"b\", \"c\"]"
+ */
+
+static VALUE
+rb_ary_inspect(VALUE ary)
+{
+ if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new2("[]");
+ return rb_exec_recursive(inspect_ary, ary, 0);
+}
+
VALUE
-ary_print_on(ary, port)
- struct RArray *ary;
- VALUE port;
+rb_ary_to_s(VALUE ary)
{
- int i;
+ return rb_ary_inspect(ary);
+}
- for (i=0; i<ary->len; i++) {
- if (!NIL_P(OFS) && i>0) {
- io_write(port, OFS);
+/*
+ * call-seq:
+ * ary.to_a -> ary
+ *
+ * Returns +self+.
+ *
+ * If called on a subclass of Array, converts the receiver to an Array object.
+ */
+
+static VALUE
+rb_ary_to_a(VALUE ary)
+{
+ if (rb_obj_class(ary) != rb_cArray) {
+ VALUE dup = rb_ary_new2(RARRAY_LEN(ary));
+ rb_ary_replace(dup, ary);
+ return dup;
+ }
+ return ary;
+}
+
+/*
+ * call-seq:
+ * ary.to_h -> hash
+ *
+ * Returns the result of interpreting <i>ary</i> as an array of
+ * <tt>[key, value]</tt> pairs. Elements other than pairs of
+ * values are ignored.
+ *
+ * [[:foo, :bar], [1, 2]].to_h
+ * # => {:foo => :bar, 1 => 2}
+ */
+
+static VALUE
+rb_ary_to_h(VALUE ary)
+{
+ long i;
+ VALUE hash = rb_hash_new();
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ VALUE key_value_pair = rb_check_array_type(rb_ary_elt(ary, i));
+ if (!NIL_P(key_value_pair) && (RARRAY_LEN(key_value_pair) == 2)) {
+ rb_hash_aset(hash, RARRAY_AREF(key_value_pair, 0), RARRAY_AREF(key_value_pair, 1));
}
- io_write(port, ary->ptr[i]);
}
- return port;
+ return hash;
}
+/*
+ * call-seq:
+ * ary.to_ary -> ary
+ *
+ * Returns +self+.
+ */
+
static VALUE
-ary_inspect(ary)
- struct RArray *ary;
+rb_ary_to_ary_m(VALUE ary)
{
- int i, len;
- VALUE s, str;
+ return ary;
+}
- if (ary->len == 0) return str_new2("[]");
- str = str_new2("[");
- len = 1;
+static void
+ary_reverse(VALUE *p1, VALUE *p2)
+{
+ while (p1 < p2) {
+ VALUE tmp = *p1;
+ *p1++ = *p2;
+ *p2-- = tmp;
+ }
+}
- for (i=0; i<ary->len; i++) {
- s = rb_inspect(ary->ptr[i]);
- if (i > 0) str_cat(str, ", ", 2);
- str_cat(str, RSTRING(s)->ptr, RSTRING(s)->len);
- len += RSTRING(s)->len + 2;
+VALUE
+rb_ary_reverse(VALUE ary)
+{
+ VALUE *p2;
+ long len = RARRAY_LEN(ary);
+
+ rb_ary_modify(ary);
+ if (len > 1) {
+ RARRAY_PTR_USE(ary, p1, {
+ p2 = p1 + len - 1; /* points last item */
+ ary_reverse(p1, p2);
+ }); /* WB: no new reference */
}
- str_cat(str, "]", 1);
+ return ary;
+}
- return str;
+/*
+ * call-seq:
+ * ary.reverse! -> ary
+ *
+ * Reverses +self+ in place.
+ *
+ * a = [ "a", "b", "c" ]
+ * a.reverse! #=> ["c", "b", "a"]
+ * a #=> ["c", "b", "a"]
+ */
+
+static VALUE
+rb_ary_reverse_bang(VALUE ary)
+{
+ return rb_ary_reverse(ary);
}
+/*
+ * call-seq:
+ * ary.reverse -> new_ary
+ *
+ * Returns a new array containing +self+'s elements in reverse order.
+ *
+ * [ "a", "b", "c" ].reverse #=> ["c", "b", "a"]
+ * [ 1 ].reverse #=> [1]
+ */
+
static VALUE
-ary_to_a(ary)
- VALUE ary;
+rb_ary_reverse_m(VALUE ary)
{
- return ary;
+ long len = RARRAY_LEN(ary);
+ VALUE dup = rb_ary_new2(len);
+
+ if (len > 0) {
+ const VALUE *p1 = RARRAY_CONST_PTR(ary);
+ VALUE *p2 = (VALUE *)RARRAY_CONST_PTR(dup) + len - 1;
+ do *p2-- = *p1++; while (--len > 0);
+ }
+ ARY_SET_LEN(dup, RARRAY_LEN(ary));
+ return dup;
+}
+
+static inline long
+rotate_count(long cnt, long len)
+{
+ return (cnt < 0) ? (len - (~cnt % len) - 1) : (cnt % len);
}
VALUE
-rb_to_a(obj)
- VALUE obj;
+rb_ary_rotate(VALUE ary, long cnt)
{
- if (TYPE(obj) == T_ARRAY) return obj;
- obj = rb_funcall(obj, rb_intern("to_a"), 0);
- if (TYPE(obj) != T_ARRAY) {
- Bug("`to_a' did not return Array");
+ rb_ary_modify(ary);
+
+ if (cnt != 0) {
+ VALUE *ptr = RARRAY_PTR(ary);
+ long len = RARRAY_LEN(ary);
+
+ if (len > 0 && (cnt = rotate_count(cnt, len)) > 0) {
+ --len;
+ if (cnt < len) ary_reverse(ptr + cnt, ptr + len);
+ if (--cnt > 0) ary_reverse(ptr, ptr + cnt);
+ if (len > 0) ary_reverse(ptr, ptr + len);
+ return ary;
+ }
}
- return obj;
+
+ return Qnil;
}
-VALUE
-ary_reverse(ary)
- struct RArray *ary;
+/*
+ * call-seq:
+ * ary.rotate!(count=1) -> ary
+ *
+ * Rotates +self+ in place so that the element at +count+ comes first, and
+ * returns +self+.
+ *
+ * If +count+ is negative then it rotates in the opposite direction, starting
+ * from the end of the array where +-1+ is the last element.
+ *
+ * a = [ "a", "b", "c", "d" ]
+ * a.rotate! #=> ["b", "c", "d", "a"]
+ * a #=> ["b", "c", "d", "a"]
+ * a.rotate!(2) #=> ["d", "a", "b", "c"]
+ * a.rotate!(-3) #=> ["a", "b", "c", "d"]
+ */
+
+static VALUE
+rb_ary_rotate_bang(int argc, VALUE *argv, VALUE ary)
{
- VALUE *p1, *p2;
- VALUE tmp;
+ long n = 1;
- p1 = ary->ptr;
- p2 = p1 + ary->len - 1; /* points last item */
+ switch (argc) {
+ case 1: n = NUM2LONG(argv[0]);
+ case 0: break;
+ default: rb_scan_args(argc, argv, "01", NULL);
+ }
+ rb_ary_rotate(ary, n);
+ return ary;
+}
- while (p1 < p2) {
- tmp = *p1;
- *p1 = *p2;
- *p2 = tmp;
- p1++; p2--;
+/*
+ * call-seq:
+ * ary.rotate(count=1) -> new_ary
+ *
+ * Returns a new array by rotating +self+ so that the element at +count+ is
+ * the first element of the new array.
+ *
+ * If +count+ is negative then it rotates in the opposite direction, starting
+ * from the end of +self+ where +-1+ is the last element.
+ *
+ * a = [ "a", "b", "c", "d" ]
+ * a.rotate #=> ["b", "c", "d", "a"]
+ * a #=> ["a", "b", "c", "d"]
+ * a.rotate(2) #=> ["c", "d", "a", "b"]
+ * a.rotate(-3) #=> ["b", "c", "d", "a"]
+ */
+
+static VALUE
+rb_ary_rotate_m(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE rotated;
+ const VALUE *ptr;
+ long len, cnt = 1;
+
+ switch (argc) {
+ case 1: cnt = NUM2LONG(argv[0]);
+ case 0: break;
+ default: rb_scan_args(argc, argv, "01", NULL);
}
- return (VALUE)ary;
+ len = RARRAY_LEN(ary);
+ rotated = rb_ary_new2(len);
+ if (len > 0) {
+ cnt = rotate_count(cnt, len);
+ ptr = RARRAY_CONST_PTR(ary);
+ len -= cnt;
+ ary_memcpy(rotated, 0, len, ptr + cnt);
+ ary_memcpy(rotated, len, cnt, ptr);
+ }
+ ARY_SET_LEN(rotated, RARRAY_LEN(ary));
+ return rotated;
}
+struct ary_sort_data {
+ VALUE ary;
+ int opt_methods;
+ int opt_inited;
+};
+
+enum {
+ sort_opt_Fixnum,
+ sort_opt_String,
+ sort_optimizable_count
+};
+
+#define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
+
+#define SORT_OPTIMIZABLE_BIT(type) (1U << TOKEN_PASTE(sort_opt_,type))
+#define SORT_OPTIMIZABLE(data, type) \
+ (((data)->opt_inited & SORT_OPTIMIZABLE_BIT(type)) ? \
+ ((data)->opt_methods & SORT_OPTIMIZABLE_BIT(type)) : \
+ (((data)->opt_inited |= SORT_OPTIMIZABLE_BIT(type)), \
+ rb_method_basic_definition_p(TOKEN_PASTE(rb_c,type), id_cmp) && \
+ ((data)->opt_methods |= SORT_OPTIMIZABLE_BIT(type))))
+
static VALUE
-ary_reverse_method(ary)
- struct RArray *ary;
+sort_reentered(VALUE ary)
{
- return ary_reverse(ary_clone(ary));
+ if (RBASIC(ary)->klass) {
+ rb_raise(rb_eRuntimeError, "sort reentered");
+ }
+ return Qnil;
}
-static ID cmp;
-
static int
-sort_1(a, b)
- VALUE *a, *b;
+sort_1(const void *ap, const void *bp, void *dummy)
{
- VALUE retval = rb_yield(assoc_new(*a, *b));
- return NUM2INT(retval);
+ struct ary_sort_data *data = dummy;
+ VALUE retval = sort_reentered(data->ary);
+ VALUE a = *(const VALUE *)ap, b = *(const VALUE *)bp;
+ int n;
+
+ retval = rb_yield_values(2, a, b);
+ n = rb_cmpint(retval, a, b);
+ sort_reentered(data->ary);
+ return n;
}
static int
-sort_2(a, b)
- VALUE *a, *b;
+sort_2(const void *ap, const void *bp, void *dummy)
{
- VALUE retval;
+ struct ary_sort_data *data = dummy;
+ VALUE retval = sort_reentered(data->ary);
+ VALUE a = *(const VALUE *)ap, b = *(const VALUE *)bp;
+ int n;
- if (FIXNUM_P(*a)) {
- if (FIXNUM_P(*b)) return *a - *b;
+ if (FIXNUM_P(a) && FIXNUM_P(b) && SORT_OPTIMIZABLE(data, Fixnum)) {
+ if ((long)a > (long)b) return 1;
+ if ((long)a < (long)b) return -1;
+ return 0;
}
- else if (TYPE(*a) == T_STRING) {
- if (TYPE(*b) == T_STRING) return str_cmp(*a, *b);
+ if (STRING_P(a) && STRING_P(b) && SORT_OPTIMIZABLE(data, String)) {
+ return rb_str_cmp(a, b);
}
- retval = rb_funcall(*a, cmp, 1, *b);
- return NUM2INT(retval);
+ retval = rb_funcallv(a, id_cmp, 1, &b);
+ n = rb_cmpint(retval, a, b);
+ sort_reentered(data->ary);
+
+ return n;
}
+/*
+ * call-seq:
+ * ary.sort! -> ary
+ * ary.sort! { |a, b| block } -> ary
+ *
+ * Sorts +self+ in place.
+ *
+ * Comparisons for the sort will be done using the <code><=></code> operator
+ * or using an optional code block.
+ *
+ * The block must implement a comparison between +a+ and +b+, and return
+ * +-1+, when +a+ follows +b+, +0+ when +a+ and +b+ are equivalent, or ++1+
+ * if +b+ follows +a+.
+ *
+ * See also Enumerable#sort_by.
+ *
+ * a = [ "d", "a", "e", "c", "b" ]
+ * a.sort! #=> ["a", "b", "c", "d", "e"]
+ * a.sort! { |x,y| y <=> x } #=> ["e", "d", "c", "b", "a"]
+ */
+
VALUE
-ary_sort_bang(ary)
- struct RArray *ary;
+rb_ary_sort_bang(VALUE ary)
{
- ary_modify(ary);
- qsort(ary->ptr, ary->len, sizeof(VALUE), iterator_p()?sort_1:sort_2);
- return (VALUE)ary;
+ rb_ary_modify(ary);
+ assert(!ARY_SHARED_P(ary));
+ if (RARRAY_LEN(ary) > 1) {
+ VALUE tmp = ary_make_substitution(ary); /* only ary refers tmp */
+ struct ary_sort_data data;
+ long len = RARRAY_LEN(ary);
+
+ RBASIC_CLEAR_CLASS(tmp);
+ data.ary = tmp;
+ data.opt_methods = 0;
+ data.opt_inited = 0;
+ RARRAY_PTR_USE(tmp, ptr, {
+ ruby_qsort(ptr, len, sizeof(VALUE),
+ rb_block_given_p()?sort_1:sort_2, &data);
+ }); /* WB: no new reference */
+ rb_ary_modify(ary);
+ if (ARY_EMBED_P(tmp)) {
+ if (ARY_SHARED_P(ary)) { /* ary might be destructively operated in the given block */
+ rb_ary_unshare(ary);
+ }
+ FL_SET_EMBED(ary);
+ ary_memcpy(ary, 0, ARY_EMBED_LEN(tmp), ARY_EMBED_PTR(tmp));
+ ARY_SET_LEN(ary, ARY_EMBED_LEN(tmp));
+ }
+ else {
+ if (!ARY_EMBED_P(ary) && ARY_HEAP_PTR(ary) == ARY_HEAP_PTR(tmp)) {
+ FL_UNSET_SHARED(ary);
+ ARY_SET_CAPA(ary, RARRAY_LEN(tmp));
+ }
+ else {
+ assert(!ARY_SHARED_P(tmp));
+ if (ARY_EMBED_P(ary)) {
+ FL_UNSET_EMBED(ary);
+ }
+ else if (ARY_SHARED_P(ary)) {
+ /* ary might be destructively operated in the given block */
+ rb_ary_unshare(ary);
+ }
+ else {
+ ruby_sized_xfree((void *)ARY_HEAP_PTR(ary), ARY_HEAP_SIZE(ary));
+ }
+ ARY_SET_PTR(ary, RARRAY_CONST_PTR(tmp));
+ ARY_SET_HEAP_LEN(ary, len);
+ ARY_SET_CAPA(ary, RARRAY_LEN(tmp));
+ }
+ /* tmp was lost ownership for the ptr */
+ FL_UNSET(tmp, FL_FREEZE);
+ FL_SET_EMBED(tmp);
+ ARY_SET_EMBED_LEN(tmp, 0);
+ FL_SET(tmp, FL_FREEZE);
+ }
+ /* tmp will be GC'ed. */
+ RBASIC_SET_CLASS_RAW(tmp, rb_cArray); /* rb_cArray must be marked */
+ }
+ return ary;
}
+/*
+ * call-seq:
+ * ary.sort -> new_ary
+ * ary.sort { |a, b| block } -> new_ary
+ *
+ * Returns a new array created by sorting +self+.
+ *
+ * Comparisons for the sort will be done using the <code><=></code> operator
+ * or using an optional code block.
+ *
+ * The block must implement a comparison between +a+ and +b+, and return
+ * +-1+, when +a+ follows +b+, +0+ when +a+ and +b+ are equivalent, or ++1+
+ * if +b+ follows +a+.
+ *
+ *
+ * See also Enumerable#sort_by.
+ *
+ * a = [ "d", "a", "e", "c", "b" ]
+ * a.sort #=> ["a", "b", "c", "d", "e"]
+ * a.sort { |x,y| y <=> x } #=> ["e", "d", "c", "b", "a"]
+ */
+
VALUE
-ary_sort(ary)
- VALUE ary;
+rb_ary_sort(VALUE ary)
+{
+ ary = rb_ary_dup(ary);
+ rb_ary_sort_bang(ary);
+ return ary;
+}
+
+/*
+ * call-seq:
+ * ary.bsearch {|x| block } -> elem
+ *
+ * By using binary search, finds a value from this array which meets
+ * the given condition in O(log n) where n is the size of the array.
+ *
+ * You can use this method in two use cases: a find-minimum mode and
+ * a find-any mode. In either case, the elements of the array must be
+ * monotone (or sorted) with respect to the block.
+ *
+ * In find-minimum mode (this is a good choice for typical use case),
+ * the block must return true or false, and there must be an index i
+ * (0 <= i <= ary.size) so that:
+ *
+ * - the block returns false for any element whose index is less than
+ * i, and
+ * - the block returns true for any element whose index is greater
+ * than or equal to i.
+ *
+ * This method returns the i-th element. If i is equal to ary.size,
+ * it returns nil.
+ *
+ * ary = [0, 4, 7, 10, 12]
+ * ary.bsearch {|x| x >= 4 } #=> 4
+ * ary.bsearch {|x| x >= 6 } #=> 7
+ * ary.bsearch {|x| x >= -1 } #=> 0
+ * ary.bsearch {|x| x >= 100 } #=> nil
+ *
+ * In find-any mode (this behaves like libc's bsearch(3)), the block
+ * must return a number, and there must be two indices i and j
+ * (0 <= i <= j <= ary.size) so that:
+ *
+ * - the block returns a positive number for ary[k] if 0 <= k < i,
+ * - the block returns zero for ary[k] if i <= k < j, and
+ * - the block returns a negative number for ary[k] if
+ * j <= k < ary.size.
+ *
+ * Under this condition, this method returns any element whose index
+ * is within i...j. If i is equal to j (i.e., there is no element
+ * that satisfies the block), this method returns nil.
+ *
+ * ary = [0, 4, 7, 10, 12]
+ * # try to find v such that 4 <= v < 8
+ * ary.bsearch {|x| 1 - x / 4 } #=> 4 or 7
+ * # try to find v such that 8 <= v < 10
+ * ary.bsearch {|x| 4 - x / 2 } #=> nil
+ *
+ * You must not mix the two modes at a time; the block must always
+ * return either true/false, or always return a number. It is
+ * undefined which value is actually picked up at each iteration.
+ */
+
+static VALUE
+rb_ary_bsearch(VALUE ary)
+{
+ long low = 0, high = RARRAY_LEN(ary), mid;
+ int smaller = 0, satisfied = 0;
+ VALUE v, val;
+
+ RETURN_ENUMERATOR(ary, 0, 0);
+ while (low < high) {
+ mid = low + ((high - low) / 2);
+ val = rb_ary_entry(ary, mid);
+ v = rb_yield(val);
+ if (FIXNUM_P(v)) {
+ if (FIX2INT(v) == 0) return val;
+ smaller = FIX2INT(v) < 0;
+ }
+ else if (v == Qtrue) {
+ satisfied = 1;
+ smaller = 1;
+ }
+ else if (v == Qfalse || v == Qnil) {
+ smaller = 0;
+ }
+ else if (rb_obj_is_kind_of(v, rb_cNumeric)) {
+ const VALUE zero = INT2FIX(0);
+ switch (rb_cmpint(rb_funcallv(v, id_cmp, 1, &zero), v, INT2FIX(0))) {
+ case 0: return val;
+ case 1: smaller = 1; break;
+ case -1: smaller = 0;
+ }
+ }
+ else {
+ rb_raise(rb_eTypeError, "wrong argument type %s"
+ " (must be numeric, true, false or nil)",
+ rb_obj_classname(v));
+ }
+ if (smaller) {
+ high = mid;
+ }
+ else {
+ low = mid + 1;
+ }
+ }
+ if (low == RARRAY_LEN(ary)) return Qnil;
+ if (!satisfied) return Qnil;
+ return rb_ary_entry(ary, low);
+}
+
+
+static VALUE
+sort_by_i(VALUE i)
+{
+ return rb_yield(i);
+}
+
+/*
+ * call-seq:
+ * ary.sort_by! { |obj| block } -> ary
+ * ary.sort_by! -> Enumerator
+ *
+ * Sorts +self+ in place using a set of keys generated by mapping the
+ * values in +self+ through the given block.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ */
+
+static VALUE
+rb_ary_sort_by_bang(VALUE ary)
+{
+ VALUE sorted;
+
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ rb_ary_modify(ary);
+ sorted = rb_block_call(ary, rb_intern("sort_by"), 0, 0, sort_by_i, 0);
+ rb_ary_replace(ary, sorted);
+ return ary;
+}
+
+
+/*
+ * call-seq:
+ * ary.collect { |item| block } -> new_ary
+ * ary.map { |item| block } -> new_ary
+ * ary.collect -> Enumerator
+ * ary.map -> Enumerator
+ *
+ * Invokes the given block once for each element of +self+.
+ *
+ * Creates a new array containing the values returned by the block.
+ *
+ * See also Enumerable#collect.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * a = [ "a", "b", "c", "d" ]
+ * a.map { |x| x + "!" } #=> ["a!", "b!", "c!", "d!"]
+ * a #=> ["a", "b", "c", "d"]
+ */
+
+static VALUE
+rb_ary_collect(VALUE ary)
+{
+ long i;
+ VALUE collect;
+
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ collect = rb_ary_new2(RARRAY_LEN(ary));
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_ary_push(collect, rb_yield(RARRAY_AREF(ary, i)));
+ }
+ return collect;
+}
+
+
+/*
+ * call-seq:
+ * ary.collect! {|item| block } -> ary
+ * ary.map! {|item| block } -> ary
+ * ary.collect! -> Enumerator
+ * ary.map! -> Enumerator
+ *
+ * Invokes the given block once for each element of +self+, replacing the
+ * element with the value returned by the block.
+ *
+ * See also Enumerable#collect.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * a = [ "a", "b", "c", "d" ]
+ * a.map! {|x| x + "!" }
+ * a #=> [ "a!", "b!", "c!", "d!" ]
+ */
+
+static VALUE
+rb_ary_collect_bang(VALUE ary)
{
- return ary_sort_bang(ary_clone(ary));
+ long i;
+
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ rb_ary_modify(ary);
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_ary_store(ary, i, rb_yield(RARRAY_AREF(ary, i)));
+ }
+ return ary;
}
VALUE
-ary_delete(ary, item)
- struct RArray *ary;
- VALUE item;
+rb_get_values_at(VALUE obj, long olen, int argc, VALUE *argv, VALUE (*func) (VALUE, long))
{
- int i1, i2;
+ VALUE result = rb_ary_new2(argc);
+ long beg, len, i, j;
- ary_modify(ary);
- for (i1 = i2 = 0; i1 < ary->len; i1++) {
- if (rb_equal(ary->ptr[i1], item)) continue;
- if (i1 != i2) {
- ary->ptr[i2] = ary->ptr[i1];
+ for (i=0; i<argc; i++) {
+ if (FIXNUM_P(argv[i])) {
+ rb_ary_push(result, (*func)(obj, FIX2LONG(argv[i])));
+ continue;
}
- i2++;
+ /* check if idx is Range */
+ if (rb_range_beg_len(argv[i], &beg, &len, olen, 1)) {
+ long end = olen < beg+len ? olen : beg+len;
+ for (j = beg; j < end; j++) {
+ rb_ary_push(result, (*func)(obj, j));
+ }
+ if (beg + len > j)
+ rb_ary_resize(result, RARRAY_LEN(result) + (beg + len) - j);
+ continue;
+ }
+ rb_ary_push(result, (*func)(obj, NUM2LONG(argv[i])));
}
- if (ary->len == i2) {
- if (iterator_p()) rb_yield(item);
- return Qnil;
+ return result;
+}
+
+/*
+ * call-seq:
+ * ary.values_at(selector, ...) -> new_ary
+ *
+ * Returns an array containing the elements in +self+ corresponding to the
+ * given +selector+(s).
+ *
+ * The selectors may be either integer indices or ranges.
+ *
+ * See also Array#select.
+ *
+ * a = %w{ a b c d e f }
+ * a.values_at(1, 3, 5) # => ["b", "d", "f"]
+ * a.values_at(1, 3, 5, 7) # => ["b", "d", "f", nil]
+ * a.values_at(-1, -2, -2, -7) # => ["f", "e", "e", nil]
+ * a.values_at(4..6, 3...6) # => ["e", "f", nil, "d", "e", "f"]
+ */
+
+static VALUE
+rb_ary_values_at(int argc, VALUE *argv, VALUE ary)
+{
+ return rb_get_values_at(ary, RARRAY_LEN(ary), argc, argv, rb_ary_entry);
+}
+
+
+/*
+ * call-seq:
+ * ary.select { |item| block } -> new_ary
+ * ary.select -> Enumerator
+ *
+ * Returns a new array containing all elements of +ary+
+ * for which the given +block+ returns a true value.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * [1,2,3,4,5].select { |num| num.even? } #=> [2, 4]
+ *
+ * a = %w{ a b c d e f }
+ * a.select { |v| v =~ /[aeiou]/ } #=> ["a", "e"]
+ *
+ * See also Enumerable#select.
+ */
+
+static VALUE
+rb_ary_select(VALUE ary)
+{
+ VALUE result;
+ long i;
+
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ result = rb_ary_new2(RARRAY_LEN(ary));
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (RTEST(rb_yield(RARRAY_AREF(ary, i)))) {
+ rb_ary_push(result, rb_ary_elt(ary, i));
+ }
}
- else {
- ary->len = i2;
+ return result;
+}
+
+/*
+ * call-seq:
+ * ary.select! {|item| block } -> ary or nil
+ * ary.select! -> Enumerator
+ *
+ * Invokes the given block passing in successive elements from +self+,
+ * deleting elements for which the block returns a +false+ value.
+ *
+ * If changes were made, it will return +self+, otherwise it returns +nil+.
+ *
+ * See also Array#keep_if
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ */
+
+static VALUE
+rb_ary_select_bang(VALUE ary)
+{
+ long i1, i2;
+
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ rb_ary_modify(ary);
+ for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
+ VALUE v = RARRAY_AREF(ary, i1);
+ if (!RTEST(rb_yield(v))) continue;
+ if (i1 != i2) {
+ rb_ary_store(ary, i2, v);
+ }
+ i2++;
}
- return item;
+ if (i1 == i2) return Qnil;
+ if (i2 < i1)
+ ARY_SET_LEN(ary, i2);
+ return ary;
}
+/*
+ * call-seq:
+ * ary.keep_if { |item| block } -> ary
+ * ary.keep_if -> Enumerator
+ *
+ * Deletes every element of +self+ for which the given block evaluates to
+ * +false+.
+ *
+ * See also Array#select!
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * a = %w{ a b c d e f }
+ * a.keep_if { |v| v =~ /[aeiou]/ } #=> ["a", "e"]
+ */
+
+static VALUE
+rb_ary_keep_if(VALUE ary)
+{
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ rb_ary_select_bang(ary);
+ return ary;
+}
+
+static void
+ary_resize_smaller(VALUE ary, long len)
+{
+ rb_ary_modify(ary);
+ if (RARRAY_LEN(ary) > len) {
+ ARY_SET_LEN(ary, len);
+ if (len * 2 < ARY_CAPA(ary) &&
+ ARY_CAPA(ary) > ARY_DEFAULT_SIZE) {
+ ary_resize_capa(ary, len * 2);
+ }
+ }
+}
+
+/*
+ * call-seq:
+ * ary.delete(obj) -> item or nil
+ * ary.delete(obj) { block } -> item or result of block
+ *
+ * Deletes all items from +self+ that are equal to +obj+.
+ *
+ * Returns the last deleted item, or +nil+ if no matching item is found.
+ *
+ * If the optional code block is given, the result of the block is returned if
+ * the item is not found. (To remove +nil+ elements and get an informative
+ * return value, use Array#compact!)
+ *
+ * a = [ "a", "b", "b", "b", "c" ]
+ * a.delete("b") #=> "b"
+ * a #=> ["a", "c"]
+ * a.delete("z") #=> nil
+ * a.delete("z") { "not found" } #=> "not found"
+ */
+
VALUE
-ary_delete_at(ary, at)
- struct RArray *ary;
- VALUE at;
-{
- int i1, i2, pos;
- VALUE del = Qnil;
-
- ary_modify(ary);
- pos = NUM2INT(at);
- for (i1 = i2 = 0; i1 < ary->len; i1++) {
- if (i1 == pos) {
- del = ary->ptr[i1];
+rb_ary_delete(VALUE ary, VALUE item)
+{
+ VALUE v = item;
+ long i1, i2;
+
+ for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
+ VALUE e = RARRAY_AREF(ary, i1);
+
+ if (rb_equal(e, item)) {
+ v = e;
continue;
}
if (i1 != i2) {
- ary->ptr[i2] = ary->ptr[i1];
+ rb_ary_store(ary, i2, e);
}
i2++;
}
- ary->len = i2;
+ if (RARRAY_LEN(ary) == i2) {
+ if (rb_block_given_p()) {
+ return rb_yield(item);
+ }
+ return Qnil;
+ }
- return del;
+ ary_resize_smaller(ary, i2);
+
+ return v;
}
-static VALUE
-ary_delete_if(ary)
- struct RArray *ary;
+void
+rb_ary_delete_same(VALUE ary, VALUE item)
{
- int i1, i2;
+ long i1, i2;
+
+ for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
+ VALUE e = RARRAY_AREF(ary, i1);
- ary_modify(ary);
- for (i1 = i2 = 0; i1 < ary->len; i1++) {
- if (rb_yield(ary->ptr[i1])) continue;
+ if (e == item) {
+ continue;
+ }
if (i1 != i2) {
- ary->ptr[i2] = ary->ptr[i1];
+ rb_ary_store(ary, i2, e);
}
i2++;
}
- ary->len = i2;
+ if (RARRAY_LEN(ary) == i2) {
+ return;
+ }
- return (VALUE)ary;
+ ary_resize_smaller(ary, i2);
}
-#if 0
-static VALUE
-ary_replace(ary)
- struct RArray *ary;
+VALUE
+rb_ary_delete_at(VALUE ary, long pos)
{
- int i;
+ long len = RARRAY_LEN(ary);
+ VALUE del;
- for (i = 0; i < ary->len; i++) {
- ary->ptr[i] = rb_yield(ary->ptr[i]);
+ if (pos >= len) return Qnil;
+ if (pos < 0) {
+ pos += len;
+ if (pos < 0) return Qnil;
}
- return (VALUE)ary;
+ rb_ary_modify(ary);
+ del = RARRAY_AREF(ary, pos);
+ RARRAY_PTR_USE(ary, ptr, {
+ MEMMOVE(ptr+pos, ptr+pos+1, VALUE, len-pos-1);
+ });
+ ARY_INCREASE_LEN(ary, -1);
+
+ return del;
}
-#endif
+
+/*
+ * call-seq:
+ * ary.delete_at(index) -> obj or nil
+ *
+ * Deletes the element at the specified +index+, returning that element, or
+ * +nil+ if the +index+ is out of range.
+ *
+ * See also Array#slice!
+ *
+ * a = ["ant", "bat", "cat", "dog"]
+ * a.delete_at(2) #=> "cat"
+ * a #=> ["ant", "bat", "dog"]
+ * a.delete_at(99) #=> nil
+ */
static VALUE
-ary_clear(ary)
- struct RArray *ary;
+rb_ary_delete_at_m(VALUE ary, VALUE pos)
{
- ary->len = 0;
- if (ARY_DEFAULT_SIZE*3 < ary->capa) {
- ary->capa = ARY_DEFAULT_SIZE * 2;
- REALLOC_N(ary->ptr, VALUE, ary->capa);
+ return rb_ary_delete_at(ary, NUM2LONG(pos));
+}
+
+/*
+ * call-seq:
+ * ary.slice!(index) -> obj or nil
+ * ary.slice!(start, length) -> new_ary or nil
+ * ary.slice!(range) -> new_ary or nil
+ *
+ * Deletes the element(s) given by an +index+ (optionally up to +length+
+ * elements) or by a +range+.
+ *
+ * Returns the deleted object (or objects), or +nil+ if the +index+ is out of
+ * range.
+ *
+ * a = [ "a", "b", "c" ]
+ * a.slice!(1) #=> "b"
+ * a #=> ["a", "c"]
+ * a.slice!(-1) #=> "c"
+ * a #=> ["a"]
+ * a.slice!(100) #=> nil
+ * a #=> ["a"]
+ */
+
+static VALUE
+rb_ary_slice_bang(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE arg1, arg2;
+ long pos, len, orig_len;
+
+ rb_ary_modify_check(ary);
+ if (argc == 2) {
+ pos = NUM2LONG(argv[0]);
+ len = NUM2LONG(argv[1]);
+ delete_pos_len:
+ if (len < 0) return Qnil;
+ orig_len = RARRAY_LEN(ary);
+ if (pos < 0) {
+ pos += orig_len;
+ if (pos < 0) return Qnil;
+ }
+ else if (orig_len < pos) return Qnil;
+ if (orig_len < pos + len) {
+ len = orig_len - pos;
+ }
+ if (len == 0) return rb_ary_new2(0);
+ arg2 = rb_ary_new4(len, RARRAY_CONST_PTR(ary)+pos);
+ RBASIC_SET_CLASS(arg2, rb_obj_class(ary));
+ rb_ary_splice(ary, pos, len, Qundef);
+ return arg2;
}
- return (VALUE)ary;
+
+ if (argc != 1) {
+ /* error report */
+ rb_scan_args(argc, argv, "11", NULL, NULL);
+ }
+ arg1 = argv[0];
+
+ if (!FIXNUM_P(arg1)) {
+ switch (rb_range_beg_len(arg1, &pos, &len, RARRAY_LEN(ary), 0)) {
+ case Qtrue:
+ /* valid range */
+ goto delete_pos_len;
+ case Qnil:
+ /* invalid range */
+ return Qnil;
+ default:
+ /* not a range */
+ break;
+ }
+ }
+
+ return rb_ary_delete_at(ary, NUM2LONG(arg1));
}
static VALUE
-ary_fill(argc, argv, ary)
- int argc;
- VALUE *argv;
- struct RArray *ary;
+ary_reject(VALUE orig, VALUE result)
{
- VALUE item, arg1, arg2;
- int beg, len, end;
- VALUE *p, *pend;
+ long i;
- rb_scan_args(argc, argv, "12", &item, &arg1, &arg2);
- if (NIL_P(arg2) && beg_len(arg1, &beg, &len, ary->len)) {
- /* beg and len set already */
+ for (i = 0; i < RARRAY_LEN(orig); i++) {
+ VALUE v = RARRAY_AREF(orig, i);
+ if (!RTEST(rb_yield(v))) {
+ rb_ary_push_1(result, v);
+ }
}
- else {
- beg = NUM2INT(arg1);
- if (beg < 0) {
- beg = ary->len + beg;
- if (beg < 0) beg = 0;
+ return result;
+}
+
+static VALUE
+ary_reject_bang(VALUE ary)
+{
+ long i;
+ VALUE result = Qnil;
+
+ rb_ary_modify_check(ary);
+ for (i = 0; i < RARRAY_LEN(ary); ) {
+ VALUE v = RARRAY_AREF(ary, i);
+ if (RTEST(rb_yield(v))) {
+ rb_ary_delete_at(ary, i);
+ result = ary;
}
- if (arg2) {
- len = NUM2INT(arg2);
+ else {
+ i++;
+ }
+ }
+ return result;
+}
+
+/*
+ * call-seq:
+ * ary.reject! { |item| block } -> ary or nil
+ * ary.reject! -> Enumerator
+ *
+ * Equivalent to Array#delete_if, deleting elements from +self+ for which the
+ * block evaluates to +true+, but returns +nil+ if no changes were made.
+ *
+ * The array is changed instantly every time the block is called, not after
+ * the iteration is over.
+ *
+ * See also Enumerable#reject and Array#delete_if.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ */
+
+static VALUE
+rb_ary_reject_bang(VALUE ary)
+{
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ return ary_reject_bang(ary);
+}
+
+/*
+ * call-seq:
+ * ary.reject {|item| block } -> new_ary
+ * ary.reject -> Enumerator
+ *
+ * Returns a new array containing the items in +self+ for which the given
+ * block is not +true+.
+ *
+ * See also Array#delete_if
+ *
+ * If no block is given, an Enumerator is returned instead.
+ */
+
+static VALUE
+rb_ary_reject(VALUE ary)
+{
+ VALUE rejected_ary;
+
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ rejected_ary = rb_ary_new();
+ ary_reject(ary, rejected_ary);
+ return rejected_ary;
+}
+
+/*
+ * call-seq:
+ * ary.delete_if { |item| block } -> ary
+ * ary.delete_if -> Enumerator
+ *
+ * Deletes every element of +self+ for which block evaluates to +true+.
+ *
+ * The array is changed instantly every time the block is called, not after
+ * the iteration is over.
+ *
+ * See also Array#reject!
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * scores = [ 97, 42, 75 ]
+ * scores.delete_if {|score| score < 80 } #=> [97]
+ */
+
+static VALUE
+rb_ary_delete_if(VALUE ary)
+{
+ RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
+ ary_reject_bang(ary);
+ return ary;
+}
+
+static VALUE
+take_i(VALUE val, VALUE *args, int argc, VALUE *argv)
+{
+ if (args[1]-- == 0) rb_iter_break();
+ if (argc > 1) val = rb_ary_new4(argc, argv);
+ rb_ary_push(args[0], val);
+ return Qnil;
+}
+
+static VALUE
+take_items(VALUE obj, long n)
+{
+ VALUE result = rb_check_array_type(obj);
+ VALUE args[2];
+
+ if (!NIL_P(result)) return rb_ary_subseq(result, 0, n);
+ result = rb_ary_new2(n);
+ args[0] = result; args[1] = (VALUE)n;
+ if (rb_check_block_call(obj, idEach, 0, 0, take_i, (VALUE)args) == Qundef)
+ rb_raise(rb_eTypeError, "wrong argument type %"PRIsVALUE" (must respond to :each)",
+ rb_obj_class(obj));
+ return result;
+}
+
+
+/*
+ * call-seq:
+ * ary.zip(arg, ...) -> new_ary
+ * ary.zip(arg, ...) { |arr| block } -> nil
+ *
+ * Converts any arguments to arrays, then merges elements of +self+ with
+ * corresponding elements from each argument.
+ *
+ * This generates a sequence of <code>ary.size</code> _n_-element arrays,
+ * where _n_ is one more than the count of arguments.
+ *
+ * If the size of any argument is less than the size of the initial array,
+ * +nil+ values are supplied.
+ *
+ * If a block is given, it is invoked for each output +array+, otherwise an
+ * array of arrays is returned.
+ *
+ * a = [ 4, 5, 6 ]
+ * b = [ 7, 8, 9 ]
+ * [1, 2, 3].zip(a, b) #=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
+ * [1, 2].zip(a, b) #=> [[1, 4, 7], [2, 5, 8]]
+ * a.zip([1, 2], [8]) #=> [[4, 1, 8], [5, 2, nil], [6, nil, nil]]
+ */
+
+static VALUE
+rb_ary_zip(int argc, VALUE *argv, VALUE ary)
+{
+ int i, j;
+ long len = RARRAY_LEN(ary);
+ VALUE result = Qnil;
+
+ for (i=0; i<argc; i++) {
+ argv[i] = take_items(argv[i], len);
+ }
+
+ if (rb_block_given_p()) {
+ int arity = rb_block_arity();
+
+ if (arity > 1 && argc+1 < 0x100) {
+ VALUE *tmp = ALLOCA_N(VALUE, argc+1);
+
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ tmp[0] = RARRAY_AREF(ary, i);
+ for (j=0; j<argc; j++) {
+ tmp[j+1] = rb_ary_elt(argv[j], i);
+ }
+ rb_yield_values2(argc+1, tmp);
+ }
}
else {
- len = ary->len - beg;
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ VALUE tmp = rb_ary_new2(argc+1);
+
+ rb_ary_push(tmp, RARRAY_AREF(ary, i));
+ for (j=0; j<argc; j++) {
+ rb_ary_push(tmp, rb_ary_elt(argv[j], i));
+ }
+ rb_yield(tmp);
+ }
}
}
- end = beg + len;
- if (end > ary->len) {
- if (end >= ary->capa) {
- ary->capa=end;
- REALLOC_N(ary->ptr, VALUE, ary->capa);
+ else {
+ result = rb_ary_new_capa(len);
+
+ for (i=0; i<len; i++) {
+ VALUE tmp = rb_ary_new_capa(argc+1);
+
+ rb_ary_push(tmp, RARRAY_AREF(ary, i));
+ for (j=0; j<argc; j++) {
+ rb_ary_push(tmp, rb_ary_elt(argv[j], i));
+ }
+ rb_ary_push(result, tmp);
+ }
+ }
+
+ return result;
+}
+
+/*
+ * call-seq:
+ * ary.transpose -> new_ary
+ *
+ * Assumes that +self+ is an array of arrays and transposes the rows and
+ * columns.
+ *
+ * a = [[1,2], [3,4], [5,6]]
+ * a.transpose #=> [[1, 3, 5], [2, 4, 6]]
+ *
+ * If the length of the subarrays don't match, an IndexError is raised.
+ */
+
+static VALUE
+rb_ary_transpose(VALUE ary)
+{
+ long elen = -1, alen, i, j;
+ VALUE tmp, result = 0;
+
+ alen = RARRAY_LEN(ary);
+ if (alen == 0) return rb_ary_dup(ary);
+ for (i=0; i<alen; i++) {
+ tmp = to_ary(rb_ary_elt(ary, i));
+ if (elen < 0) { /* first element */
+ elen = RARRAY_LEN(tmp);
+ result = rb_ary_new2(elen);
+ for (j=0; j<elen; j++) {
+ rb_ary_store(result, j, rb_ary_new2(alen));
+ }
+ }
+ else if (elen != RARRAY_LEN(tmp)) {
+ rb_raise(rb_eIndexError, "element size differs (%ld should be %ld)",
+ RARRAY_LEN(tmp), elen);
}
- if (beg > ary->len) {
- memclear(ary->ptr+ary->len, end-ary->len);
+ for (j=0; j<elen; j++) {
+ rb_ary_store(rb_ary_elt(result, j), i, rb_ary_elt(tmp, j));
}
- ary->len = end;
}
- p = ary->ptr + beg; pend = p + len;
+ return result;
+}
+
+/*
+ * call-seq:
+ * ary.replace(other_ary) -> ary
+ * ary.initialize_copy(other_ary) -> ary
+ *
+ * Replaces the contents of +self+ with the contents of +other_ary+,
+ * truncating or expanding if necessary.
+ *
+ * a = [ "a", "b", "c", "d", "e" ]
+ * a.replace([ "x", "y", "z" ]) #=> ["x", "y", "z"]
+ * a #=> ["x", "y", "z"]
+ */
- while (p < pend) {
- *p++ = item;
+VALUE
+rb_ary_replace(VALUE copy, VALUE orig)
+{
+ rb_ary_modify_check(copy);
+ orig = to_ary(orig);
+ if (copy == orig) return copy;
+
+ if (RARRAY_LEN(orig) <= RARRAY_EMBED_LEN_MAX) {
+ VALUE shared = 0;
+
+ if (ARY_OWNS_HEAP_P(copy)) {
+ RARRAY_PTR_USE(copy, ptr, ruby_sized_xfree(ptr, ARY_HEAP_SIZE(copy)));
+ }
+ else if (ARY_SHARED_P(copy)) {
+ shared = ARY_SHARED(copy);
+ FL_UNSET_SHARED(copy);
+ }
+ FL_SET_EMBED(copy);
+ ary_memcpy(copy, 0, RARRAY_LEN(orig), RARRAY_CONST_PTR(orig));
+ if (shared) {
+ rb_ary_decrement_share(shared);
+ }
+ ARY_SET_LEN(copy, RARRAY_LEN(orig));
}
- return (VALUE)ary;
+ else {
+ VALUE shared = ary_make_shared(orig);
+ if (ARY_OWNS_HEAP_P(copy)) {
+ RARRAY_PTR_USE(copy, ptr, ruby_sized_xfree(ptr, ARY_HEAP_SIZE(copy)));
+ }
+ else {
+ rb_ary_unshare_safe(copy);
+ }
+ FL_UNSET_EMBED(copy);
+ ARY_SET_PTR(copy, RARRAY_CONST_PTR(orig));
+ ARY_SET_LEN(copy, RARRAY_LEN(orig));
+ rb_ary_set_shared(copy, shared);
+ }
+ return copy;
}
+/*
+ * call-seq:
+ * ary.clear -> ary
+ *
+ * Removes all elements from +self+.
+ *
+ * a = [ "a", "b", "c", "d", "e" ]
+ * a.clear #=> [ ]
+ */
+
VALUE
-ary_plus(x, y)
- struct RArray *x, *y;
+rb_ary_clear(VALUE ary)
{
- struct RArray *z;
+ rb_ary_modify_check(ary);
+ ARY_SET_LEN(ary, 0);
+ if (ARY_SHARED_P(ary)) {
+ if (!ARY_EMBED_P(ary)) {
+ rb_ary_unshare(ary);
+ FL_SET_EMBED(ary);
+ }
+ }
+ else if (ARY_DEFAULT_SIZE * 2 < ARY_CAPA(ary)) {
+ ary_resize_capa(ary, ARY_DEFAULT_SIZE * 2);
+ }
+ return ary;
+}
- if (TYPE(y) != T_ARRAY) {
- return ary_plus(x, rb_to_a(y));
+/*
+ * call-seq:
+ * ary.fill(obj) -> ary
+ * ary.fill(obj, start [, length]) -> ary
+ * ary.fill(obj, range ) -> ary
+ * ary.fill { |index| block } -> ary
+ * ary.fill(start [, length] ) { |index| block } -> ary
+ * ary.fill(range) { |index| block } -> ary
+ *
+ * The first three forms set the selected elements of +self+ (which
+ * may be the entire array) to +obj+.
+ *
+ * A +start+ of +nil+ is equivalent to zero.
+ *
+ * A +length+ of +nil+ is equivalent to the length of the array.
+ *
+ * The last three forms fill the array with the value of the given block,
+ * which is passed the absolute index of each element to be filled.
+ *
+ * Negative values of +start+ count from the end of the array, where +-1+ is
+ * the last element.
+ *
+ * a = [ "a", "b", "c", "d" ]
+ * a.fill("x") #=> ["x", "x", "x", "x"]
+ * a.fill("z", 2, 2) #=> ["x", "x", "z", "z"]
+ * a.fill("y", 0..1) #=> ["y", "y", "z", "z"]
+ * a.fill { |i| i*i } #=> [0, 1, 4, 9]
+ * a.fill(-2) { |i| i*i*i } #=> [0, 1, 8, 27]
+ */
+
+static VALUE
+rb_ary_fill(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE item, arg1, arg2;
+ long beg = 0, end = 0, len = 0;
+ int block_p = FALSE;
+
+ if (rb_block_given_p()) {
+ block_p = TRUE;
+ rb_scan_args(argc, argv, "02", &arg1, &arg2);
+ argc += 1; /* hackish */
+ }
+ else {
+ rb_scan_args(argc, argv, "12", &item, &arg1, &arg2);
+ }
+ switch (argc) {
+ case 1:
+ beg = 0;
+ len = RARRAY_LEN(ary);
+ break;
+ case 2:
+ if (rb_range_beg_len(arg1, &beg, &len, RARRAY_LEN(ary), 1)) {
+ break;
+ }
+ /* fall through */
+ case 3:
+ beg = NIL_P(arg1) ? 0 : NUM2LONG(arg1);
+ if (beg < 0) {
+ beg = RARRAY_LEN(ary) + beg;
+ if (beg < 0) beg = 0;
+ }
+ len = NIL_P(arg2) ? RARRAY_LEN(ary) - beg : NUM2LONG(arg2);
+ break;
+ }
+ rb_ary_modify(ary);
+ if (len < 0) {
+ return ary;
+ }
+ if (beg >= ARY_MAX_SIZE || len > ARY_MAX_SIZE - beg) {
+ rb_raise(rb_eArgError, "argument too big");
+ }
+ end = beg + len;
+ if (RARRAY_LEN(ary) < end) {
+ if (end >= ARY_CAPA(ary)) {
+ ary_resize_capa(ary, end);
+ }
+ ary_mem_clear(ary, RARRAY_LEN(ary), end - RARRAY_LEN(ary));
+ ARY_SET_LEN(ary, end);
}
- z = (struct RArray*)ary_new2(x->len + y->len);
- MEMCPY(z->ptr, x->ptr, VALUE, x->len);
- MEMCPY(z->ptr+x->len, y->ptr, VALUE, y->len);
- z->len = x->len + RARRAY(y)->len;
- return (VALUE)z;
+ if (block_p) {
+ VALUE v;
+ long i;
+
+ for (i=beg; i<end; i++) {
+ v = rb_yield(LONG2NUM(i));
+ if (i>=RARRAY_LEN(ary)) break;
+ RARRAY_ASET(ary, i, v);
+ }
+ }
+ else {
+ ary_memfill(ary, beg, len, item);
+ }
+ return ary;
}
+/*
+ * call-seq:
+ * ary + other_ary -> new_ary
+ *
+ * Concatenation --- Returns a new array built by concatenating the
+ * two arrays together to produce a third array.
+ *
+ * [ 1, 2, 3 ] + [ 4, 5 ] #=> [ 1, 2, 3, 4, 5 ]
+ * a = [ "a", "b", "c" ]
+ * c = a + [ "d", "e", "f" ]
+ * c #=> [ "a", "b", "c", "d", "e", "f" ]
+ * a #=> [ "a", "b", "c" ]
+ *
+ * See also Array#concat.
+ */
+
VALUE
-ary_concat(x, y)
- struct RArray *x, *y;
+rb_ary_plus(VALUE x, VALUE y)
{
- VALUE *p, *pend;
+ VALUE z;
+ long len, xlen, ylen;
+
+ y = to_ary(y);
+ xlen = RARRAY_LEN(x);
+ ylen = RARRAY_LEN(y);
+ len = xlen + ylen;
+ z = rb_ary_new2(len);
+
+ ary_memcpy(z, 0, xlen, RARRAY_CONST_PTR(x));
+ ary_memcpy(z, xlen, ylen, RARRAY_CONST_PTR(y));
+ ARY_SET_LEN(z, len);
+ return z;
+}
- if (TYPE(y) != T_ARRAY) {
- return ary_concat(x, rb_to_a(y));
- }
+/*
+ * call-seq:
+ * ary.concat(other_ary) -> ary
+ *
+ * Appends the elements of +other_ary+ to +self+.
+ *
+ * [ "a", "b" ].concat( ["c", "d"] ) #=> [ "a", "b", "c", "d" ]
+ * a = [ 1, 2, 3 ]
+ * a.concat( [ 4, 5 ] )
+ * a #=> [ 1, 2, 3, 4, 5 ]
+ *
+ * See also Array#+.
+ */
- p = y->ptr;
- pend = p + y->len;
- while (p < pend) {
- ary_store(x, x->len, *p);
- p++;
+VALUE
+rb_ary_concat(VALUE x, VALUE y)
+{
+ rb_ary_modify_check(x);
+ y = to_ary(y);
+ if (RARRAY_LEN(y) > 0) {
+ rb_ary_splice(x, RARRAY_LEN(x), 0, y);
}
- return (VALUE)x;
+ return x;
}
+
+/*
+ * call-seq:
+ * ary * int -> new_ary
+ * ary * str -> new_string
+ *
+ * Repetition --- With a String argument, equivalent to
+ * <code>ary.join(str)</code>.
+ *
+ * Otherwise, returns a new array built by concatenating the +int+ copies of
+ * +self+.
+ *
+ *
+ * [ 1, 2, 3 ] * 3 #=> [ 1, 2, 3, 1, 2, 3, 1, 2, 3 ]
+ * [ 1, 2, 3 ] * "," #=> "1,2,3"
+ *
+ */
+
static VALUE
-ary_times(ary, times)
- struct RArray *ary;
- VALUE times;
+rb_ary_times(VALUE ary, VALUE times)
{
- struct RArray *ary2;
- int i, len;
+ VALUE ary2, tmp;
+ const VALUE *ptr;
+ long t, len;
- if (TYPE(times) == T_STRING) {
- return ary_join(ary, times);
+ tmp = rb_check_string_type(times);
+ if (!NIL_P(tmp)) {
+ return rb_ary_join(ary, tmp);
}
- len = NUM2INT(times) * ary->len;
- ary2 = (struct RArray*)ary_new2(len);
- ary2->len = len;
-
+ len = NUM2LONG(times);
+ if (len == 0) {
+ ary2 = ary_new(rb_obj_class(ary), 0);
+ goto out;
+ }
if (len < 0) {
- ArgError("negative argument");
+ rb_raise(rb_eArgError, "negative argument");
}
-
- for (i=0; i<len; i+=ary->len) {
- MEMCPY(ary2->ptr+i, ary->ptr, VALUE, ary->len);
+ if (ARY_MAX_SIZE/len < RARRAY_LEN(ary)) {
+ rb_raise(rb_eArgError, "argument too big");
+ }
+ len *= RARRAY_LEN(ary);
+
+ ary2 = ary_new(rb_obj_class(ary), len);
+ ARY_SET_LEN(ary2, len);
+
+ ptr = RARRAY_CONST_PTR(ary);
+ t = RARRAY_LEN(ary);
+ if (0 < t) {
+ ary_memcpy(ary2, 0, t, ptr);
+ while (t <= len/2) {
+ ary_memcpy(ary2, t, t, RARRAY_CONST_PTR(ary2));
+ t *= 2;
+ }
+ if (t < len) {
+ ary_memcpy(ary2, t, len-t, RARRAY_CONST_PTR(ary2));
+ }
}
+ out:
+ OBJ_INFECT(ary2, ary);
- return (VALUE)ary2;
+ return ary2;
}
+/*
+ * call-seq:
+ * ary.assoc(obj) -> new_ary or nil
+ *
+ * Searches through an array whose elements are also arrays comparing +obj+
+ * with the first element of each contained array using <code>obj.==</code>.
+ *
+ * Returns the first contained array that matches (that is, the first
+ * associated array), or +nil+ if no match is found.
+ *
+ * See also Array#rassoc
+ *
+ * s1 = [ "colors", "red", "blue", "green" ]
+ * s2 = [ "letters", "a", "b", "c" ]
+ * s3 = "foo"
+ * a = [ s1, s2, s3 ]
+ * a.assoc("letters") #=> [ "letters", "a", "b", "c" ]
+ * a.assoc("foo") #=> nil
+ */
+
VALUE
-ary_assoc(ary, key)
- struct RArray *ary;
- VALUE key;
+rb_ary_assoc(VALUE ary, VALUE key)
{
- VALUE *p, *pend;
-
- p = ary->ptr; pend = p + ary->len;
- while (p < pend) {
- if (TYPE(*p) == T_ARRAY
- && RARRAY(*p)->len > 1
- && rb_equal(RARRAY(*p)->ptr[0], key))
- return *p;
- p++;
+ long i;
+ VALUE v;
+
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ v = rb_check_array_type(RARRAY_AREF(ary, i));
+ if (!NIL_P(v) && RARRAY_LEN(v) > 0 &&
+ rb_equal(RARRAY_AREF(v, 0), key))
+ return v;
}
return Qnil;
}
+/*
+ * call-seq:
+ * ary.rassoc(obj) -> new_ary or nil
+ *
+ * Searches through the array whose elements are also arrays.
+ *
+ * Compares +obj+ with the second element of each contained array using
+ * <code>obj.==</code>.
+ *
+ * Returns the first contained array that matches +obj+.
+ *
+ * See also Array#assoc.
+ *
+ * a = [ [ 1, "one"], [2, "two"], [3, "three"], ["ii", "two"] ]
+ * a.rassoc("two") #=> [2, "two"]
+ * a.rassoc("four") #=> nil
+ */
+
VALUE
-ary_rassoc(ary, value)
- struct RArray *ary;
- VALUE value;
+rb_ary_rassoc(VALUE ary, VALUE value)
{
- VALUE *p, *pend;
-
- p = ary->ptr; pend = p + ary->len;
- while (p < pend) {
- if (TYPE(*p) == T_ARRAY
- && RARRAY(*p)->len > 1
- && rb_equal(RARRAY(*p)->ptr[1], value))
- return *p;
- p++;
+ long i;
+ VALUE v;
+
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ v = RARRAY_AREF(ary, i);
+ if (RB_TYPE_P(v, T_ARRAY) &&
+ RARRAY_LEN(v) > 1 &&
+ rb_equal(RARRAY_AREF(v, 1), value))
+ return v;
}
return Qnil;
}
static VALUE
-ary_equal(ary1, ary2)
- struct RArray *ary1, *ary2;
+recursive_equal(VALUE ary1, VALUE ary2, int recur)
{
- int i;
+ long i, len1;
+ const VALUE *p1, *p2;
+
+ if (recur) return Qtrue; /* Subtle! */
+
+ p1 = RARRAY_CONST_PTR(ary1);
+ p2 = RARRAY_CONST_PTR(ary2);
+ len1 = RARRAY_LEN(ary1);
+
+ for (i = 0; i < len1; i++) {
+ if (*p1 != *p2) {
+ if (rb_equal(*p1, *p2)) {
+ len1 = RARRAY_LEN(ary1);
+ if (len1 != RARRAY_LEN(ary2))
+ return Qfalse;
+ if (len1 < i)
+ return Qtrue;
+ p1 = RARRAY_CONST_PTR(ary1) + i;
+ p2 = RARRAY_CONST_PTR(ary2) + i;
+ }
+ else {
+ return Qfalse;
+ }
+ }
+ p1++;
+ p2++;
+ }
+ return Qtrue;
+}
+
+/*
+ * call-seq:
+ * ary == other_ary -> bool
+ *
+ * Equality --- Two arrays are equal if they contain the same number of
+ * elements and if each element is equal to (according to Object#==) the
+ * corresponding element in +other_ary+.
+ *
+ * [ "a", "c" ] == [ "a", "c", 7 ] #=> false
+ * [ "a", "c", 7 ] == [ "a", "c", 7 ] #=> true
+ * [ "a", "c", 7 ] == [ "a", "d", "f" ] #=> false
+ *
+ */
- if (TYPE(ary2) != T_ARRAY) return FALSE;
- if (ary1->len != ary2->len) return FALSE;
- for (i=0; i<ary1->len; i++) {
- if (!rb_equal(ary1->ptr[i], ary2->ptr[i]))
- return FALSE;
+static VALUE
+rb_ary_equal(VALUE ary1, VALUE ary2)
+{
+ if (ary1 == ary2) return Qtrue;
+ if (!RB_TYPE_P(ary2, T_ARRAY)) {
+ if (!rb_respond_to(ary2, rb_intern("to_ary"))) {
+ return Qfalse;
+ }
+ return rb_equal(ary2, ary1);
}
- return TRUE;
+ if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return Qfalse;
+ if (RARRAY_CONST_PTR(ary1) == RARRAY_CONST_PTR(ary2)) return Qtrue;
+ return rb_exec_recursive_paired(recursive_equal, ary1, ary2, ary2);
}
static VALUE
-ary_eql(ary1, ary2)
- struct RArray *ary1, *ary2;
+recursive_eql(VALUE ary1, VALUE ary2, int recur)
{
- int i;
+ long i;
- if (TYPE(ary2) != T_ARRAY) return FALSE;
- if (ary1->len != ary2->len) return FALSE;
- for (i=0; i<ary1->len; i++) {
- if (!rb_eql(ary1->ptr[i], ary2->ptr[i]))
- return FALSE;
+ if (recur) return Qtrue; /* Subtle! */
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ if (!rb_eql(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
+ return Qfalse;
}
- return TRUE;
+ return Qtrue;
}
+/*
+ * call-seq:
+ * ary.eql?(other) -> true or false
+ *
+ * Returns +true+ if +self+ and +other+ are the same object,
+ * or are both arrays with the same content (according to Object#eql?).
+ */
+
static VALUE
-ary_hash(ary)
- struct RArray *ary;
+rb_ary_eql(VALUE ary1, VALUE ary2)
{
- int h, i;
+ if (ary1 == ary2) return Qtrue;
+ if (!RB_TYPE_P(ary2, T_ARRAY)) return Qfalse;
+ if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return Qfalse;
+ if (RARRAY_CONST_PTR(ary1) == RARRAY_CONST_PTR(ary2)) return Qtrue;
+ return rb_exec_recursive_paired(recursive_eql, ary1, ary2, ary2);
+}
- h = ary->len;
- for (i=0; i<ary->len; i++) {
- h ^= rb_hash(ary->ptr[i]);
+static VALUE
+recursive_hash(VALUE ary, VALUE dummy, int recur)
+{
+ long i;
+ st_index_t h;
+ VALUE n;
+
+ h = rb_hash_start(RARRAY_LEN(ary));
+ if (recur) {
+ h = rb_hash_uint(h, NUM2LONG(rb_hash(rb_cArray)));
+ }
+ else {
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ n = rb_hash(RARRAY_AREF(ary, i));
+ h = rb_hash_uint(h, NUM2LONG(n));
+ }
}
- return INT2FIX(h);
+ h = rb_hash_end(h);
+ return LONG2FIX(h);
+}
+
+/*
+ * call-seq:
+ * ary.hash -> fixnum
+ *
+ * Compute a hash-code for this array.
+ *
+ * Two arrays with the same content will have the same hash code (and will
+ * compare using #eql?).
+ */
+
+static VALUE
+rb_ary_hash(VALUE ary)
+{
+ return rb_exec_recursive_outer(recursive_hash, ary, 0);
}
+/*
+ * call-seq:
+ * ary.include?(object) -> true or false
+ *
+ * Returns +true+ if the given +object+ is present in +self+ (that is, if any
+ * element <code>==</code> +object+), otherwise returns +false+.
+ *
+ * a = [ "a", "b", "c" ]
+ * a.include?("b") #=> true
+ * a.include?("z") #=> false
+ */
+
VALUE
-ary_includes(ary, item)
- struct RArray *ary;
- VALUE item;
+rb_ary_includes(VALUE ary, VALUE item)
{
- int i;
- for (i=0; i<ary->len; i++) {
- if (rb_equal(ary->ptr[i], item)) {
- return TRUE;
+ long i;
+
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ if (rb_equal(RARRAY_AREF(ary, i), item)) {
+ return Qtrue;
}
}
- return FALSE;
+ return Qfalse;
}
+
static VALUE
-ary_diff(ary1, ary2)
- struct RArray *ary1, *ary2;
+recursive_cmp(VALUE ary1, VALUE ary2, int recur)
{
- VALUE ary3;
- int i;
+ long i, len;
- Check_Type(ary2, T_ARRAY);
- ary3 = ary_new();
- for (i=0; i<ary1->len; i++) {
- if (ary_includes(ary2, ary1->ptr[i])) continue;
- if (ary_includes(ary3, ary1->ptr[i])) continue;
- ary_push(ary3, ary1->ptr[i]);
+ if (recur) return Qundef; /* Subtle! */
+ len = RARRAY_LEN(ary1);
+ if (len > RARRAY_LEN(ary2)) {
+ len = RARRAY_LEN(ary2);
}
- return ary3;
+ for (i=0; i<len; i++) {
+ VALUE e1 = rb_ary_elt(ary1, i), e2 = rb_ary_elt(ary2, i);
+ VALUE v = rb_funcallv(e1, id_cmp, 1, &e2);
+ if (v != INT2FIX(0)) {
+ return v;
+ }
+ }
+ return Qundef;
+}
+
+/*
+ * call-seq:
+ * ary <=> other_ary -> -1, 0, +1 or nil
+ *
+ * Comparison --- Returns an integer (+-1+, +0+, or <code>+1</code>) if this
+ * array is less than, equal to, or greater than +other_ary+.
+ *
+ * +nil+ is returned if the two values are incomparable.
+ *
+ * Each object in each array is compared (using the <=> operator).
+ *
+ * Arrays are compared in an "element-wise" manner; the first two elements
+ * that are not equal will determine the return value for the whole
+ * comparison.
+ *
+ * If all the values are equal, then the return is based on a comparison of
+ * the array lengths. Thus, two arrays are "equal" according to Array#<=> if,
+ * and only if, they have the same length and the value of each element is
+ * equal to the value of the corresponding element in the other array.
+ *
+ * [ "a", "a", "c" ] <=> [ "a", "b", "c" ] #=> -1
+ * [ 1, 2, 3, 4, 5, 6 ] <=> [ 1, 2 ] #=> +1
+ *
+ */
+
+VALUE
+rb_ary_cmp(VALUE ary1, VALUE ary2)
+{
+ long len;
+ VALUE v;
+
+ ary2 = rb_check_array_type(ary2);
+ if (NIL_P(ary2)) return Qnil;
+ if (ary1 == ary2) return INT2FIX(0);
+ v = rb_exec_recursive_paired(recursive_cmp, ary1, ary2, ary2);
+ if (v != Qundef) return v;
+ len = RARRAY_LEN(ary1) - RARRAY_LEN(ary2);
+ if (len == 0) return INT2FIX(0);
+ if (len > 0) return INT2FIX(1);
+ return INT2FIX(-1);
+}
+
+static VALUE
+ary_add_hash(VALUE hash, VALUE ary)
+{
+ long i;
+
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ rb_hash_aset(hash, RARRAY_AREF(ary, i), Qtrue);
+ }
+ return hash;
+}
+
+static inline VALUE
+ary_tmp_hash_new(void)
+{
+ VALUE hash = rb_hash_new();
+
+ RBASIC_CLEAR_CLASS(hash);
+ return hash;
+}
+
+static VALUE
+ary_make_hash(VALUE ary)
+{
+ VALUE hash = ary_tmp_hash_new();
+ return ary_add_hash(hash, ary);
}
static VALUE
-ary_and(ary1, ary2)
- struct RArray *ary1, *ary2;
+ary_add_hash_by(VALUE hash, VALUE ary)
+{
+ long i;
+
+ for (i = 0; i < RARRAY_LEN(ary); ++i) {
+ VALUE v = rb_ary_elt(ary, i), k = rb_yield(v);
+ if (rb_hash_lookup2(hash, k, Qundef) == Qundef) {
+ rb_hash_aset(hash, k, v);
+ }
+ }
+ return hash;
+}
+
+static VALUE
+ary_make_hash_by(VALUE ary)
+{
+ VALUE hash = ary_tmp_hash_new();
+ return ary_add_hash_by(hash, ary);
+}
+
+static inline void
+ary_recycle_hash(VALUE hash)
+{
+ if (RHASH(hash)->ntbl) {
+ st_table *tbl = RHASH(hash)->ntbl;
+ RHASH(hash)->ntbl = 0;
+ st_free_table(tbl);
+ }
+}
+
+/*
+ * call-seq:
+ * ary - other_ary -> new_ary
+ *
+ * Array Difference
+ *
+ * Returns a new array that is a copy of the original array, removing any
+ * items that also appear in +other_ary+. The order is preserved from the
+ * original array.
+ *
+ * It compares elements using their #hash and #eql? methods for efficiency.
+ *
+ * [ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ] #=> [ 3, 3, 5 ]
+ *
+ * If you need set-like behavior, see the library class Set.
+ */
+
+static VALUE
+rb_ary_diff(VALUE ary1, VALUE ary2)
{
VALUE ary3;
- int i;
+ volatile VALUE hash;
+ long i;
+
+ hash = ary_make_hash(to_ary(ary2));
+ ary3 = rb_ary_new();
+
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ if (st_lookup(rb_hash_tbl_raw(hash), RARRAY_AREF(ary1, i), 0)) continue;
+ rb_ary_push(ary3, rb_ary_elt(ary1, i));
+ }
+ ary_recycle_hash(hash);
+ return ary3;
+}
+
+/*
+ * call-seq:
+ * ary & other_ary -> new_ary
+ *
+ * Set Intersection --- Returns a new array containing elements common to the
+ * two arrays, excluding any duplicates. The order is preserved from the
+ * original array.
+ *
+ * It compares elements using their #hash and #eql? methods for efficiency.
+ *
+ * [ 1, 1, 3, 5 ] & [ 1, 2, 3 ] #=> [ 1, 3 ]
+ * [ 'a', 'b', 'b', 'z' ] & [ 'a', 'b', 'c' ] #=> [ 'a', 'b' ]
+ *
+ * See also Array#uniq.
+ */
+
- Check_Type(ary2, T_ARRAY);
- ary3 = ary_new();
- for (i=0; i<ary1->len; i++) {
- if (ary_includes(ary2, ary1->ptr[i])
- && !ary_includes(ary3, ary1->ptr[i])) {
- ary_push(ary3, ary1->ptr[i]);
+static VALUE
+rb_ary_and(VALUE ary1, VALUE ary2)
+{
+ VALUE hash, ary3, v;
+ st_table *table;
+ st_data_t vv;
+ long i;
+
+ ary2 = to_ary(ary2);
+ ary3 = rb_ary_new();
+ if (RARRAY_LEN(ary2) == 0) return ary3;
+ hash = ary_make_hash(ary2);
+ table = rb_hash_tbl_raw(hash);
+
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ v = RARRAY_AREF(ary1, i);
+ vv = (st_data_t)v;
+ if (st_delete(table, &vv, 0)) {
+ rb_ary_push(ary3, v);
}
}
+ ary_recycle_hash(hash);
+
return ary3;
}
+/*
+ * call-seq:
+ * ary | other_ary -> new_ary
+ *
+ * Set Union --- Returns a new array by joining +ary+ with +other_ary+,
+ * excluding any duplicates and preserving the order from the original array.
+ *
+ * It compares elements using their #hash and #eql? methods for efficiency.
+ *
+ * [ "a", "b", "c" ] | [ "c", "d", "a" ] #=> [ "a", "b", "c", "d" ]
+ *
+ * See also Array#uniq.
+ */
+
static VALUE
-ary_or(ary1, ary2)
- struct RArray *ary1, *ary2;
+rb_ary_or(VALUE ary1, VALUE ary2)
{
- VALUE ary3;
- int i;
+ VALUE hash, ary3;
+
+ ary2 = to_ary(ary2);
+ hash = ary_add_hash(ary_make_hash(ary1), ary2);
+ ary3 = rb_hash_keys(hash);
+ ary_recycle_hash(hash);
+ return ary3;
+}
+
+static int
+push_key(st_data_t key, st_data_t val, st_data_t ary)
+{
+ rb_ary_push((VALUE)ary, (VALUE)key);
+ return ST_CONTINUE;
+}
+
+static int
+push_value(st_data_t key, st_data_t val, st_data_t ary)
+{
+ rb_ary_push((VALUE)ary, (VALUE)val);
+ return ST_CONTINUE;
+}
- if (TYPE(ary2) != T_ARRAY) {
- if (ary_includes(ary1, ary2)) return (VALUE)ary1;
- else return ary_plus(ary1, ary2);
+/*
+ * call-seq:
+ * ary.uniq! -> ary or nil
+ * ary.uniq! { |item| ... } -> ary or nil
+ *
+ * Removes duplicate elements from +self+.
+ *
+ * If a block is given, it will use the return value of the block for
+ * comparison.
+ *
+ * It compares values using their #hash and #eql? methods for efficiency.
+ *
+ * Returns +nil+ if no changes are made (that is, no duplicates are found).
+ *
+ * a = [ "a", "a", "b", "b", "c" ]
+ * a.uniq! # => ["a", "b", "c"]
+ *
+ * b = [ "a", "b", "c" ]
+ * b.uniq! # => nil
+ *
+ * c = [["student","sam"], ["student","george"], ["teacher","matz"]]
+ * c.uniq! { |s| s.first } # => [["student", "sam"], ["teacher", "matz"]]
+ *
+ */
+
+static VALUE
+rb_ary_uniq_bang(VALUE ary)
+{
+ VALUE hash;
+ long hash_size;
+
+ rb_ary_modify_check(ary);
+ if (RARRAY_LEN(ary) <= 1)
+ return Qnil;
+ if (rb_block_given_p()) {
+ hash = ary_make_hash_by(ary);
+ hash_size = RHASH_SIZE(hash);
+ if (RARRAY_LEN(ary) == hash_size) {
+ return Qnil;
+ }
+ rb_ary_modify_check(ary);
+ ARY_SET_LEN(ary, 0);
+ if (ARY_SHARED_P(ary) && !ARY_EMBED_P(ary)) {
+ rb_ary_unshare(ary);
+ FL_SET_EMBED(ary);
+ }
+ ary_resize_capa(ary, hash_size);
+ st_foreach(rb_hash_tbl_raw(hash), push_value, ary);
}
+ else {
+ hash = ary_make_hash(ary);
+ hash_size = RHASH_SIZE(hash);
+ if (RARRAY_LEN(ary) == hash_size) {
+ return Qnil;
+ }
+ rb_ary_modify_check(ary);
+ ARY_SET_LEN(ary, 0);
+ if (ARY_SHARED_P(ary) && !ARY_EMBED_P(ary)) {
+ rb_ary_unshare(ary);
+ FL_SET_EMBED(ary);
+ }
+ ary_resize_capa(ary, hash_size);
+ st_foreach(rb_hash_tbl_raw(hash), push_key, ary);
+ }
+ ary_recycle_hash(hash);
+
+ return ary;
+}
+
+/*
+ * call-seq:
+ * ary.uniq -> new_ary
+ * ary.uniq { |item| ... } -> new_ary
+ *
+ * Returns a new array by removing duplicate values in +self+.
+ *
+ * If a block is given, it will use the return value of the block for comparison.
+ *
+ * It compares values using their #hash and #eql? methods for efficiency.
+ *
+ * a = [ "a", "a", "b", "b", "c" ]
+ * a.uniq # => ["a", "b", "c"]
+ *
+ * b = [["student","sam"], ["student","george"], ["teacher","matz"]]
+ * b.uniq { |s| s.first } # => [["student", "sam"], ["teacher", "matz"]]
+ *
+ */
+
+static VALUE
+rb_ary_uniq(VALUE ary)
+{
+ VALUE hash, uniq;
- ary3 = ary_new();
- for (i=0; i<ary1->len; i++) {
- if (!ary_includes(ary3, ary1->ptr[i]))
- ary_push(ary3, ary1->ptr[i]);
+ if (RARRAY_LEN(ary) <= 1)
+ return rb_ary_dup(ary);
+ if (rb_block_given_p()) {
+ hash = ary_make_hash_by(ary);
+ uniq = rb_hash_values(hash);
}
- for (i=0; i<ary2->len; i++) {
- if (!ary_includes(ary3, ary2->ptr[i]))
- ary_push(ary3, ary2->ptr[i]);
+ else {
+ hash = ary_make_hash(ary);
+ uniq = rb_hash_keys(hash);
}
- return ary3;
+ RBASIC_SET_CLASS(uniq, rb_obj_class(ary));
+ ary_recycle_hash(hash);
+
+ return uniq;
}
+/*
+ * call-seq:
+ * ary.compact! -> ary or nil
+ *
+ * Removes +nil+ elements from the array.
+ *
+ * Returns +nil+ if no changes were made, otherwise returns the array.
+ *
+ * [ "a", nil, "b", nil, "c" ].compact! #=> [ "a", "b", "c" ]
+ * [ "a", "b", "c" ].compact! #=> nil
+ */
+
static VALUE
-ary_compact_bang(ary)
- struct RArray *ary;
+rb_ary_compact_bang(VALUE ary)
{
VALUE *p, *t, *end;
+ long n;
+
+ rb_ary_modify(ary);
+ p = t = (VALUE *)RARRAY_CONST_PTR(ary); /* WB: no new reference */
+ end = p + RARRAY_LEN(ary);
- ary_modify(ary);
- p = t = ary->ptr;
- end = p + ary->len;
while (t < end) {
if (NIL_P(*t)) t++;
else *p++ = *t++;
}
- ary->len = ary->capa = (p - ary->ptr);
- REALLOC_N(ary->ptr, VALUE, ary->len);
+ n = p - RARRAY_CONST_PTR(ary);
+ if (RARRAY_LEN(ary) == n) {
+ return Qnil;
+ }
+ ary_resize_smaller(ary, n);
- return (VALUE)ary;
+ return ary;
}
+/*
+ * call-seq:
+ * ary.compact -> new_ary
+ *
+ * Returns a copy of +self+ with all +nil+ elements removed.
+ *
+ * [ "a", nil, "b", nil, "c", nil ].compact
+ * #=> [ "a", "b", "c" ]
+ */
+
static VALUE
-ary_compact(ary)
- struct RArray *ary;
+rb_ary_compact(VALUE ary)
{
- return ary_compact_bang(ary_clone(ary));
+ ary = rb_ary_dup(ary);
+ rb_ary_compact_bang(ary);
+ return ary;
}
+/*
+ * call-seq:
+ * ary.count -> int
+ * ary.count(obj) -> int
+ * ary.count { |item| block } -> int
+ *
+ * Returns the number of elements.
+ *
+ * If an argument is given, counts the number of elements which equal +obj+
+ * using <code>==</code>.
+ *
+ * If a block is given, counts the number of elements for which the block
+ * returns a true value.
+ *
+ * ary = [1, 2, 4, 2]
+ * ary.count #=> 4
+ * ary.count(2) #=> 2
+ * ary.count { |x| x%2 == 0 } #=> 3
+ *
+ */
+
static VALUE
-ary_nitems(ary)
- struct RArray *ary;
+rb_ary_count(int argc, VALUE *argv, VALUE ary)
{
- int n = 0;
- VALUE *p, *pend;
+ long i, n = 0;
+
+ if (argc == 0) {
+ VALUE v;
- p = ary->ptr;
- pend = p + ary->len;
- while (p < pend) {
- if (!NIL_P(*p)) n++;
- p++;
+ if (!rb_block_given_p())
+ return LONG2NUM(RARRAY_LEN(ary));
+
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ v = RARRAY_AREF(ary, i);
+ if (RTEST(rb_yield(v))) n++;
+ }
}
- return INT2FIX(n);
+ else {
+ VALUE obj;
+
+ rb_scan_args(argc, argv, "1", &obj);
+ if (rb_block_given_p()) {
+ rb_warn("given block not used");
+ }
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (rb_equal(RARRAY_AREF(ary, i), obj)) n++;
+ }
+ }
+
+ return LONG2NUM(n);
+}
+
+static VALUE
+flatten(VALUE ary, int level, int *modified)
+{
+ long i = 0;
+ VALUE stack, result, tmp, elt;
+ st_table *memo;
+ st_data_t id;
+
+ stack = ary_new(0, ARY_DEFAULT_SIZE);
+ result = ary_new(0, RARRAY_LEN(ary));
+ memo = st_init_numtable();
+ st_insert(memo, (st_data_t)ary, (st_data_t)Qtrue);
+ *modified = 0;
+
+ while (1) {
+ while (i < RARRAY_LEN(ary)) {
+ elt = RARRAY_AREF(ary, i++);
+ tmp = rb_check_array_type(elt);
+ if (RBASIC(result)->klass) {
+ rb_raise(rb_eRuntimeError, "flatten reentered");
+ }
+ if (NIL_P(tmp) || (level >= 0 && RARRAY_LEN(stack) / 2 >= level)) {
+ rb_ary_push(result, elt);
+ }
+ else {
+ *modified = 1;
+ id = (st_data_t)tmp;
+ if (st_lookup(memo, id, 0)) {
+ st_free_table(memo);
+ rb_raise(rb_eArgError, "tried to flatten recursive array");
+ }
+ st_insert(memo, id, (st_data_t)Qtrue);
+ rb_ary_push(stack, ary);
+ rb_ary_push(stack, LONG2NUM(i));
+ ary = tmp;
+ i = 0;
+ }
+ }
+ if (RARRAY_LEN(stack) == 0) {
+ break;
+ }
+ id = (st_data_t)ary;
+ st_delete(memo, &id, 0);
+ tmp = rb_ary_pop(stack);
+ i = NUM2LONG(tmp);
+ ary = rb_ary_pop(stack);
+ }
+
+ st_free_table(memo);
+
+ RBASIC_SET_CLASS(result, rb_class_of(ary));
+ return result;
}
-extern VALUE mEnumerable;
+/*
+ * call-seq:
+ * ary.flatten! -> ary or nil
+ * ary.flatten!(level) -> ary or nil
+ *
+ * Flattens +self+ in place.
+ *
+ * Returns +nil+ if no modifications were made (i.e., the array contains no
+ * subarrays.)
+ *
+ * The optional +level+ argument determines the level of recursion to flatten.
+ *
+ * a = [ 1, 2, [3, [4, 5] ] ]
+ * a.flatten! #=> [1, 2, 3, 4, 5]
+ * a.flatten! #=> nil
+ * a #=> [1, 2, 3, 4, 5]
+ * a = [ 1, 2, [3, [4, 5] ] ]
+ * a.flatten!(1) #=> [1, 2, 3, [4, 5]]
+ */
-void
-Init_Array()
-{
- cArray = rb_define_class("Array", cObject);
- rb_include_module(cArray, mEnumerable);
-
- rb_define_singleton_method(cArray, "new", ary_s_new, -1);
- rb_define_singleton_method(cArray, "[]", ary_s_create, -1);
- rb_define_method(cArray, "to_s", ary_to_s, 0);
- rb_define_method(cArray, "inspect", ary_inspect, 0);
- rb_define_method(cArray, "to_a", ary_to_a, 0);
-
- rb_define_method(cArray, "freeze", ary_freeze, 0);
- rb_define_method(cArray, "frozen?", ary_frozen_p, 0);
-
- rb_define_method(cArray, "==", ary_equal, 1);
- rb_define_method(cArray, "eql?", ary_eql, 1);
- rb_define_method(cArray, "hash", ary_hash, 0);
-
- rb_define_method(cArray, "[]", ary_aref, -1);
- rb_define_method(cArray, "[]=", ary_aset, -1);
- rb_define_method(cArray, "concat", ary_concat, 1);
- rb_define_method(cArray, "<<", ary_push, 1);
- rb_define_method(cArray, "push", ary_push_method, -1);
- rb_define_method(cArray, "pop", ary_pop, 0);
- rb_define_method(cArray, "shift", ary_shift, 0);
- rb_define_method(cArray, "unshift", ary_unshift, 1);
- rb_define_method(cArray, "each", ary_each, 0);
- rb_define_method(cArray, "each_index", ary_each_index, 0);
- rb_define_method(cArray, "reverse_each", ary_reverse_each, 0);
- rb_define_method(cArray, "length", ary_length, 0);
- rb_define_alias(cArray, "size", "length");
- rb_define_method(cArray, "empty?", ary_empty_p, 0);
- rb_define_method(cArray, "index", ary_index, 1);
- rb_define_method(cArray, "indexes", ary_indexes, -2);
- rb_define_method(cArray, "clone", ary_clone, 0);
- rb_define_method(cArray, "join", ary_join_method, -1);
- rb_define_method(cArray, "reverse", ary_reverse_method, 0);
- rb_define_method(cArray, "reverse!", ary_reverse, 0);
- rb_define_method(cArray, "sort", ary_sort, 0);
- rb_define_method(cArray, "sort!", ary_sort_bang, 0);
- rb_define_method(cArray, "delete", ary_delete, 1);
- rb_define_method(cArray, "delete_at", ary_delete_at, 1);
- rb_define_method(cArray, "delete_if", ary_delete_if, 0);
-#if 0
- rb_define_method(cArray, "replace", ary_replace, 0);
-#endif
- rb_define_method(cArray, "clear", ary_clear, 0);
- rb_define_method(cArray, "fill", ary_fill, -1);
- rb_define_method(cArray, "include?", ary_includes, 1);
+static VALUE
+rb_ary_flatten_bang(int argc, VALUE *argv, VALUE ary)
+{
+ int mod = 0, level = -1;
+ VALUE result, lv;
+
+ rb_scan_args(argc, argv, "01", &lv);
+ rb_ary_modify_check(ary);
+ if (!NIL_P(lv)) level = NUM2INT(lv);
+ if (level == 0) return Qnil;
+
+ result = flatten(ary, level, &mod);
+ if (mod == 0) {
+ ary_discard(result);
+ return Qnil;
+ }
+ if (!(mod = ARY_EMBED_P(result))) rb_obj_freeze(result);
+ rb_ary_replace(ary, result);
+ if (mod) ARY_SET_EMBED_LEN(result, 0);
+
+ return ary;
+}
+
+/*
+ * call-seq:
+ * ary.flatten -> new_ary
+ * ary.flatten(level) -> new_ary
+ *
+ * Returns a new array that is a one-dimensional flattening of +self+
+ * (recursively).
+ *
+ * That is, for every element that is an array, extract its elements into
+ * the new array.
+ *
+ * The optional +level+ argument determines the level of recursion to
+ * flatten.
+ *
+ * s = [ 1, 2, 3 ] #=> [1, 2, 3]
+ * t = [ 4, 5, 6, [7, 8] ] #=> [4, 5, 6, [7, 8]]
+ * a = [ s, t, 9, 10 ] #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
+ * a.flatten #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+ * a = [ 1, 2, [3, [4, 5] ] ]
+ * a.flatten(1) #=> [1, 2, 3, [4, 5]]
+ */
+
+static VALUE
+rb_ary_flatten(int argc, VALUE *argv, VALUE ary)
+{
+ int mod = 0, level = -1;
+ VALUE result, lv;
+
+ rb_scan_args(argc, argv, "01", &lv);
+ if (!NIL_P(lv)) level = NUM2INT(lv);
+ if (level == 0) return ary_make_shared_copy(ary);
+
+ result = flatten(ary, level, &mod);
+ OBJ_INFECT(result, ary);
+
+ return result;
+}
+
+#define OPTHASH_GIVEN_P(opts) \
+ (argc > 0 && !NIL_P((opts) = rb_check_hash_type(argv[argc-1])) && (--argc, 1))
+static VALUE sym_random;
+
+#define RAND_UPTO(max) (long)rb_random_ulong_limited((randgen), (max)-1)
+
+/*
+ * call-seq:
+ * ary.shuffle! -> ary
+ * ary.shuffle!(random: rng) -> ary
+ *
+ * Shuffles elements in +self+ in place.
+ *
+ * The optional +rng+ argument will be used as the random number generator.
+ */
+
+static VALUE
+rb_ary_shuffle_bang(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE opts, randgen = rb_cRandom;
+ long i, len;
+
+ if (OPTHASH_GIVEN_P(opts)) {
+ randgen = rb_hash_lookup2(opts, sym_random, randgen);
+ }
+ rb_check_arity(argc, 0, 0);
+ rb_ary_modify(ary);
+ i = len = RARRAY_LEN(ary);
+ RARRAY_PTR_USE(ary, ptr, {
+ while (i) {
+ long j = RAND_UPTO(i);
+ VALUE tmp;
+ if (len != RARRAY_LEN(ary) || ptr != RARRAY_CONST_PTR(ary)) {
+ rb_raise(rb_eRuntimeError, "modified during shuffle");
+ }
+ tmp = ptr[--i];
+ ptr[i] = ptr[j];
+ ptr[j] = tmp;
+ }
+ }); /* WB: no new reference */
+ return ary;
+}
+
+
+/*
+ * call-seq:
+ * ary.shuffle -> new_ary
+ * ary.shuffle(random: rng) -> new_ary
+ *
+ * Returns a new array with elements of +self+ shuffled.
+ *
+ * a = [ 1, 2, 3 ] #=> [1, 2, 3]
+ * a.shuffle #=> [2, 3, 1]
+ *
+ * The optional +rng+ argument will be used as the random number generator.
+ *
+ * a.shuffle(random: Random.new(1)) #=> [1, 3, 2]
+ */
+
+static VALUE
+rb_ary_shuffle(int argc, VALUE *argv, VALUE ary)
+{
+ ary = rb_ary_dup(ary);
+ rb_ary_shuffle_bang(argc, argv, ary);
+ return ary;
+}
+
+
+/*
+ * call-seq:
+ * ary.sample -> obj
+ * ary.sample(random: rng) -> obj
+ * ary.sample(n) -> new_ary
+ * ary.sample(n, random: rng) -> new_ary
+ *
+ * Choose a random element or +n+ random elements from the array.
+ *
+ * The elements are chosen by using random and unique indices into the array
+ * in order to ensure that an element doesn't repeat itself unless the array
+ * already contained duplicate elements.
+ *
+ * If the array is empty the first form returns +nil+ and the second form
+ * returns an empty array.
+ *
+ * The optional +rng+ argument will be used as the random number generator.
+ *
+ * a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
+ * a.sample #=> 7
+ * a.sample(4) #=> [6, 4, 2, 5]
+ */
+
+
+static VALUE
+rb_ary_sample(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE nv, result;
+ VALUE opts, randgen = rb_cRandom;
+ long n, len, i, j, k, idx[10];
+ long rnds[numberof(idx)];
+
+ if (OPTHASH_GIVEN_P(opts)) {
+ randgen = rb_hash_lookup2(opts, sym_random, randgen);
+ }
+ len = RARRAY_LEN(ary);
+ if (argc == 0) {
+ if (len < 2)
+ i = 0;
+ else
+ i = RAND_UPTO(len);
+
+ return rb_ary_elt(ary, i);
+ }
+ rb_scan_args(argc, argv, "1", &nv);
+ n = NUM2LONG(nv);
+ if (n < 0) rb_raise(rb_eArgError, "negative sample number");
+ if (n > len) n = len;
+ if (n <= numberof(idx)) {
+ for (i = 0; i < n; ++i) {
+ rnds[i] = RAND_UPTO(len - i);
+ }
+ }
+ k = len;
+ len = RARRAY_LEN(ary);
+ if (len < k && n <= numberof(idx)) {
+ for (i = 0; i < n; ++i) {
+ if (rnds[i] >= len) return rb_ary_new_capa(0);
+ }
+ }
+ if (n > len) n = len;
+ switch (n) {
+ case 0:
+ return rb_ary_new_capa(0);
+ case 1:
+ i = rnds[0];
+ return rb_ary_new_from_values(1, &RARRAY_AREF(ary, i));
+ case 2:
+ i = rnds[0];
+ j = rnds[1];
+ if (j >= i) j++;
+ return rb_ary_new_from_args(2, RARRAY_AREF(ary, i), RARRAY_AREF(ary, j));
+ case 3:
+ i = rnds[0];
+ j = rnds[1];
+ k = rnds[2];
+ {
+ long l = j, g = i;
+ if (j >= i) l = i, g = ++j;
+ if (k >= l && (++k >= g)) ++k;
+ }
+ return rb_ary_new_from_args(3, RARRAY_AREF(ary, i), RARRAY_AREF(ary, j), RARRAY_AREF(ary, k));
+ }
+ if (n <= numberof(idx)) {
+ long sorted[numberof(idx)];
+ sorted[0] = idx[0] = rnds[0];
+ for (i=1; i<n; i++) {
+ k = rnds[i];
+ for (j = 0; j < i; ++j) {
+ if (k < sorted[j]) break;
+ ++k;
+ }
+ memmove(&sorted[j+1], &sorted[j], sizeof(sorted[0])*(i-j));
+ sorted[j] = idx[i] = k;
+ }
+ result = rb_ary_new_capa(n);
+ RARRAY_PTR_USE(result, ptr_result, {
+ for (i=0; i<n; i++) {
+ ptr_result[i] = RARRAY_AREF(ary, idx[i]);
+ }
+ });
+ }
+ else {
+ result = rb_ary_dup(ary);
+ RBASIC_CLEAR_CLASS(result);
+ RB_GC_GUARD(ary);
+ RARRAY_PTR_USE(result, ptr_result, {
+ for (i=0; i<n; i++) {
+ j = RAND_UPTO(len-i) + i;
+ nv = ptr_result[j];
+ ptr_result[j] = ptr_result[i];
+ ptr_result[i] = nv;
+ }
+ });
+ RBASIC_SET_CLASS_RAW(result, rb_cArray);
+ }
+ ARY_SET_LEN(result, n);
+
+ return result;
+}
+
+static VALUE
+rb_ary_cycle_size(VALUE self, VALUE args, VALUE eobj)
+{
+ long mul;
+ VALUE n = Qnil;
+ if (args && (RARRAY_LEN(args) > 0)) {
+ n = RARRAY_AREF(args, 0);
+ }
+ if (RARRAY_LEN(self) == 0) return INT2FIX(0);
+ if (n == Qnil) return DBL2NUM(INFINITY);
+ mul = NUM2LONG(n);
+ if (mul <= 0) return INT2FIX(0);
+ n = LONG2FIX(mul);
+ return rb_funcallv(rb_ary_length(self), '*', 1, &n);
+}
+
+/*
+ * call-seq:
+ * ary.cycle(n=nil) { |obj| block } -> nil
+ * ary.cycle(n=nil) -> Enumerator
+ *
+ * Calls the given block for each element +n+ times or forever if +nil+ is
+ * given.
+ *
+ * Does nothing if a non-positive number is given or the array is empty.
+ *
+ * Returns +nil+ if the loop has finished without getting interrupted.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * a = ["a", "b", "c"]
+ * a.cycle { |x| puts x } # print, a, b, c, a, b, c,.. forever.
+ * a.cycle(2) { |x| puts x } # print, a, b, c, a, b, c.
+ *
+ */
+
+static VALUE
+rb_ary_cycle(int argc, VALUE *argv, VALUE ary)
+{
+ long n, i;
+ VALUE nv = Qnil;
+
+ rb_scan_args(argc, argv, "01", &nv);
+
+ RETURN_SIZED_ENUMERATOR(ary, argc, argv, rb_ary_cycle_size);
+ if (NIL_P(nv)) {
+ n = -1;
+ }
+ else {
+ n = NUM2LONG(nv);
+ if (n <= 0) return Qnil;
+ }
+
+ while (RARRAY_LEN(ary) > 0 && (n < 0 || 0 < n--)) {
+ for (i=0; i<RARRAY_LEN(ary); i++) {
+ rb_yield(RARRAY_AREF(ary, i));
+ }
+ }
+ return Qnil;
+}
+
+#define tmpbuf(n, size) rb_str_tmp_new((n)*(size))
+#define tmpbuf_discard(s) (rb_str_resize((s), 0L), RBASIC_SET_CLASS_RAW(s, rb_cString))
+#define tmpary(n) rb_ary_tmp_new(n)
+#define tmpary_discard(a) (ary_discard(a), RBASIC_SET_CLASS_RAW(a, rb_cArray))
+
+/*
+ * Recursively compute permutations of +r+ elements of the set
+ * <code>[0..n-1]</code>.
+ *
+ * When we have a complete permutation of array indexes, copy the values
+ * at those indexes into a new array and yield that array.
+ *
+ * n: the size of the set
+ * r: the number of elements in each permutation
+ * p: the array (of size r) that we're filling in
+ * index: what index we're filling in now
+ * used: an array of booleans: whether a given index is already used
+ * values: the Ruby array that holds the actual values to permute
+ */
+static void
+permute0(long n, long r, long *p, long index, char *used, VALUE values)
+{
+ long i,j;
+ for (i = 0; i < n; i++) {
+ if (used[i] == 0) {
+ p[index] = i;
+ if (index < r-1) { /* if not done yet */
+ used[i] = 1; /* mark index used */
+ permute0(n, r, p, index+1, /* recurse */
+ used, values);
+ used[i] = 0; /* index unused */
+ }
+ else {
+ /* We have a complete permutation of array indexes */
+ /* Build a ruby array of the corresponding values */
+ /* And yield it to the associated block */
+ VALUE result = rb_ary_new2(r);
+ VALUE *result_array = RARRAY_PTR(result);
+ const VALUE *values_array = RARRAY_PTR(values);
+
+ for (j = 0; j < r; j++) result_array[j] = values_array[p[j]];
+ ARY_SET_LEN(result, r);
+ rb_yield(result);
+ if (RBASIC(values)->klass) {
+ rb_raise(rb_eRuntimeError, "permute reentered");
+ }
+ }
+ }
+ }
+}
+
+/*
+ * Returns the product of from, from-1, ..., from - how_many + 1.
+ * http://en.wikipedia.org/wiki/Pochhammer_symbol
+ */
+static VALUE
+descending_factorial(long from, long how_many)
+{
+ VALUE cnt = LONG2FIX(how_many >= 0);
+ while (how_many-- > 0) {
+ VALUE v = LONG2FIX(from--);
+ cnt = rb_funcallv(cnt, '*', 1, &v);
+ }
+ return cnt;
+}
+
+static VALUE
+binomial_coefficient(long comb, long size)
+{
+ VALUE r, v;
+ if (comb > size-comb) {
+ comb = size-comb;
+ }
+ if (comb < 0) {
+ return LONG2FIX(0);
+ }
+ r = descending_factorial(size, comb);
+ v = descending_factorial(comb, comb);
+ return rb_funcallv(r, id_div, 1, &v);
+}
+
+static VALUE
+rb_ary_permutation_size(VALUE ary, VALUE args, VALUE eobj)
+{
+ long n = RARRAY_LEN(ary);
+ long k = (args && (RARRAY_LEN(args) > 0)) ? NUM2LONG(RARRAY_AREF(args, 0)) : n;
- rb_define_method(cArray, "assoc", ary_assoc, 1);
- rb_define_method(cArray, "rassoc", ary_rassoc, 1);
+ return descending_factorial(n, k);
+}
- rb_define_method(cArray, "+", ary_plus, 1);
- rb_define_method(cArray, "*", ary_times, 1);
+/*
+ * call-seq:
+ * ary.permutation { |p| block } -> ary
+ * ary.permutation -> Enumerator
+ * ary.permutation(n) { |p| block } -> ary
+ * ary.permutation(n) -> Enumerator
+ *
+ * When invoked with a block, yield all permutations of length +n+ of the
+ * elements of the array, then return the array itself.
+ *
+ * If +n+ is not specified, yield all permutations of all elements.
+ *
+ * The implementation makes no guarantees about the order in which the
+ * permutations are yielded.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * Examples:
+ *
+ * a = [1, 2, 3]
+ * a.permutation.to_a #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
+ * a.permutation(1).to_a #=> [[1],[2],[3]]
+ * a.permutation(2).to_a #=> [[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]
+ * a.permutation(3).to_a #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
+ * a.permutation(0).to_a #=> [[]] # one permutation of length 0
+ * a.permutation(4).to_a #=> [] # no permutations of length 4
+ */
- rb_define_method(cArray, "-", ary_diff, 1);
- rb_define_method(cArray, "&", ary_and, 1);
- rb_define_method(cArray, "|", ary_or, 1);
+static VALUE
+rb_ary_permutation(int argc, VALUE *argv, VALUE ary)
+{
+ VALUE num;
+ long r, n, i;
+
+ n = RARRAY_LEN(ary); /* Array length */
+ RETURN_SIZED_ENUMERATOR(ary, argc, argv, rb_ary_permutation_size); /* Return enumerator if no block */
+ rb_scan_args(argc, argv, "01", &num);
+ r = NIL_P(num) ? n : NUM2LONG(num); /* Permutation size from argument */
+
+ if (r < 0 || n < r) {
+ /* no permutations: yield nothing */
+ }
+ else if (r == 0) { /* exactly one permutation: the zero-length array */
+ rb_yield(rb_ary_new2(0));
+ }
+ else if (r == 1) { /* this is a special, easy case */
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
+ }
+ else { /* this is the general case */
+ volatile VALUE t0 = tmpbuf(n,sizeof(long));
+ long *p = (long*)RSTRING_PTR(t0);
+ volatile VALUE t1 = tmpbuf(n,sizeof(char));
+ char *used = (char*)RSTRING_PTR(t1);
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ RBASIC_CLEAR_CLASS(ary0);
+
+ MEMZERO(used, char, n); /* initialize array */
+
+ permute0(n, r, p, 0, used, ary0); /* compute and yield permutations */
+ tmpbuf_discard(t0);
+ tmpbuf_discard(t1);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ }
+ return ary;
+}
- rb_define_method(cArray, "compact", ary_compact, 0);
- rb_define_method(cArray, "compact!", ary_compact_bang, 0);
- rb_define_method(cArray, "nitems", ary_nitems, 0);
+static VALUE
+rb_ary_combination_size(VALUE ary, VALUE args, VALUE eobj)
+{
+ long n = RARRAY_LEN(ary);
+ long k = NUM2LONG(RARRAY_AREF(args, 0));
+
+ return binomial_coefficient(k, n);
+}
+
+/*
+ * call-seq:
+ * ary.combination(n) { |c| block } -> ary
+ * ary.combination(n) -> Enumerator
+ *
+ * When invoked with a block, yields all combinations of length +n+ of elements
+ * from the array and then returns the array itself.
+ *
+ * The implementation makes no guarantees about the order in which the
+ * combinations are yielded.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * Examples:
+ *
+ * a = [1, 2, 3, 4]
+ * a.combination(1).to_a #=> [[1],[2],[3],[4]]
+ * a.combination(2).to_a #=> [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
+ * a.combination(3).to_a #=> [[1,2,3],[1,2,4],[1,3,4],[2,3,4]]
+ * a.combination(4).to_a #=> [[1,2,3,4]]
+ * a.combination(0).to_a #=> [[]] # one combination of length 0
+ * a.combination(5).to_a #=> [] # no combinations of length 5
+ *
+ */
+
+static VALUE
+rb_ary_combination(VALUE ary, VALUE num)
+{
+ long n, i, len;
+
+ n = NUM2LONG(num);
+ RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_combination_size);
+ len = RARRAY_LEN(ary);
+ if (n < 0 || len < n) {
+ /* yield nothing */
+ }
+ else if (n == 0) {
+ rb_yield(rb_ary_new2(0));
+ }
+ else if (n == 1) {
+ for (i = 0; i < len; i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
+ }
+ else {
+ volatile VALUE t0 = tmpbuf(n+1, sizeof(long));
+ long *stack = (long*)RSTRING_PTR(t0);
+ volatile VALUE cc = tmpary(n);
+ VALUE *chosen = RARRAY_PTR(cc);
+ long lev = 0;
+
+ MEMZERO(stack, long, n);
+ stack[0] = -1;
+ for (;;) {
+ chosen[lev] = RARRAY_AREF(ary, stack[lev+1]);
+ for (lev++; lev < n; lev++) {
+ chosen[lev] = RARRAY_AREF(ary, stack[lev+1] = stack[lev]+1);
+ }
+ rb_yield(rb_ary_new4(n, chosen));
+ if (RBASIC(t0)->klass) {
+ rb_raise(rb_eRuntimeError, "combination reentered");
+ }
+ do {
+ if (lev == 0) goto done;
+ stack[lev--]++;
+ } while (stack[lev+1]+n == len+lev+1);
+ }
+ done:
+ tmpbuf_discard(t0);
+ tmpary_discard(cc);
+ }
+ return ary;
+}
- cmp = rb_intern("<=>");
+/*
+ * Recursively compute repeated permutations of +r+ elements of the set
+ * <code>[0..n-1]</code>.
+ *
+ * When we have a complete repeated permutation of array indexes, copy the
+ * values at those indexes into a new array and yield that array.
+ *
+ * n: the size of the set
+ * r: the number of elements in each permutation
+ * p: the array (of size r) that we're filling in
+ * index: what index we're filling in now
+ * values: the Ruby array that holds the actual values to permute
+ */
+static void
+rpermute0(long n, long r, long *p, long index, VALUE values)
+{
+ long i, j;
+ for (i = 0; i < n; i++) {
+ p[index] = i;
+ if (index < r-1) { /* if not done yet */
+ rpermute0(n, r, p, index+1, values); /* recurse */
+ }
+ else {
+ /* We have a complete permutation of array indexes */
+ /* Build a ruby array of the corresponding values */
+ /* And yield it to the associated block */
+ VALUE result = rb_ary_new2(r);
+ VALUE *result_array = RARRAY_PTR(result);
+ const VALUE *values_array = RARRAY_PTR(values);
+
+ for (j = 0; j < r; j++) result_array[j] = values_array[p[j]];
+ ARY_SET_LEN(result, r);
+ rb_yield(result);
+ if (RBASIC(values)->klass) {
+ rb_raise(rb_eRuntimeError, "repeated permute reentered");
+ }
+ }
+ }
+}
+
+static VALUE
+rb_ary_repeated_permutation_size(VALUE ary, VALUE args, VALUE eobj)
+{
+ long n = RARRAY_LEN(ary);
+ long k = NUM2LONG(RARRAY_AREF(args, 0));
+ VALUE v;
+
+ if (k < 0) {
+ return LONG2FIX(0);
+ }
+
+ v = LONG2NUM(k);
+ return rb_funcallv(LONG2NUM(n), id_power, 1, &v);
+}
+
+/*
+ * call-seq:
+ * ary.repeated_permutation(n) { |p| block } -> ary
+ * ary.repeated_permutation(n) -> Enumerator
+ *
+ * When invoked with a block, yield all repeated permutations of length +n+ of
+ * the elements of the array, then return the array itself.
+ *
+ * The implementation makes no guarantees about the order in which the repeated
+ * permutations are yielded.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * Examples:
+ *
+ * a = [1, 2]
+ * a.repeated_permutation(1).to_a #=> [[1], [2]]
+ * a.repeated_permutation(2).to_a #=> [[1,1],[1,2],[2,1],[2,2]]
+ * a.repeated_permutation(3).to_a #=> [[1,1,1],[1,1,2],[1,2,1],[1,2,2],
+ * # [2,1,1],[2,1,2],[2,2,1],[2,2,2]]
+ * a.repeated_permutation(0).to_a #=> [[]] # one permutation of length 0
+ */
+
+static VALUE
+rb_ary_repeated_permutation(VALUE ary, VALUE num)
+{
+ long r, n, i;
+
+ n = RARRAY_LEN(ary); /* Array length */
+ RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_repeated_permutation_size); /* Return Enumerator if no block */
+ r = NUM2LONG(num); /* Permutation size from argument */
+
+ if (r < 0) {
+ /* no permutations: yield nothing */
+ }
+ else if (r == 0) { /* exactly one permutation: the zero-length array */
+ rb_yield(rb_ary_new2(0));
+ }
+ else if (r == 1) { /* this is a special, easy case */
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
+ }
+ else { /* this is the general case */
+ volatile VALUE t0 = tmpbuf(r, sizeof(long));
+ long *p = (long*)RSTRING_PTR(t0);
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ RBASIC_CLEAR_CLASS(ary0);
+
+ rpermute0(n, r, p, 0, ary0); /* compute and yield repeated permutations */
+ tmpbuf_discard(t0);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ }
+ return ary;
+}
+
+static void
+rcombinate0(long n, long r, long *p, long index, long rest, VALUE values)
+{
+ long j;
+ if (rest > 0) {
+ for (; index < n; ++index) {
+ p[r-rest] = index;
+ rcombinate0(n, r, p, index, rest-1, values);
+ }
+ }
+ else {
+ VALUE result = rb_ary_new2(r);
+ VALUE *result_array = RARRAY_PTR(result);
+ const VALUE *values_array = RARRAY_PTR(values);
+
+ for (j = 0; j < r; ++j) result_array[j] = values_array[p[j]];
+ ARY_SET_LEN(result, r);
+ rb_yield(result);
+ if (RBASIC(values)->klass) {
+ rb_raise(rb_eRuntimeError, "repeated combination reentered");
+ }
+ }
+}
+
+static VALUE
+rb_ary_repeated_combination_size(VALUE ary, VALUE args, VALUE eobj)
+{
+ long n = RARRAY_LEN(ary);
+ long k = NUM2LONG(RARRAY_AREF(args, 0));
+ if (k == 0) {
+ return LONG2FIX(1);
+ }
+ return binomial_coefficient(k, n + k - 1);
+}
+
+/*
+ * call-seq:
+ * ary.repeated_combination(n) { |c| block } -> ary
+ * ary.repeated_combination(n) -> Enumerator
+ *
+ * When invoked with a block, yields all repeated combinations of length +n+ of
+ * elements from the array and then returns the array itself.
+ *
+ * The implementation makes no guarantees about the order in which the repeated
+ * combinations are yielded.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * Examples:
+ *
+ * a = [1, 2, 3]
+ * a.repeated_combination(1).to_a #=> [[1], [2], [3]]
+ * a.repeated_combination(2).to_a #=> [[1,1],[1,2],[1,3],[2,2],[2,3],[3,3]]
+ * a.repeated_combination(3).to_a #=> [[1,1,1],[1,1,2],[1,1,3],[1,2,2],[1,2,3],
+ * # [1,3,3],[2,2,2],[2,2,3],[2,3,3],[3,3,3]]
+ * a.repeated_combination(4).to_a #=> [[1,1,1,1],[1,1,1,2],[1,1,1,3],[1,1,2,2],[1,1,2,3],
+ * # [1,1,3,3],[1,2,2,2],[1,2,2,3],[1,2,3,3],[1,3,3,3],
+ * # [2,2,2,2],[2,2,2,3],[2,2,3,3],[2,3,3,3],[3,3,3,3]]
+ * a.repeated_combination(0).to_a #=> [[]] # one combination of length 0
+ *
+ */
+
+static VALUE
+rb_ary_repeated_combination(VALUE ary, VALUE num)
+{
+ long n, i, len;
+
+ n = NUM2LONG(num); /* Combination size from argument */
+ RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_repeated_combination_size); /* Return enumerator if no block */
+ len = RARRAY_LEN(ary);
+ if (n < 0) {
+ /* yield nothing */
+ }
+ else if (n == 0) {
+ rb_yield(rb_ary_new2(0));
+ }
+ else if (n == 1) {
+ for (i = 0; i < len; i++) {
+ rb_yield(rb_ary_new3(1, RARRAY_AREF(ary, i)));
+ }
+ }
+ else if (len == 0) {
+ /* yield nothing */
+ }
+ else {
+ volatile VALUE t0 = tmpbuf(n, sizeof(long));
+ long *p = (long*)RSTRING_PTR(t0);
+ VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
+ RBASIC_CLEAR_CLASS(ary0);
+
+ rcombinate0(len, n, p, 0, n, ary0); /* compute and yield repeated combinations */
+ tmpbuf_discard(t0);
+ RBASIC_SET_CLASS_RAW(ary0, rb_cArray);
+ }
+ return ary;
+}
+
+/*
+ * call-seq:
+ * ary.product(other_ary, ...) -> new_ary
+ * ary.product(other_ary, ...) { |p| block } -> ary
+ *
+ * Returns an array of all combinations of elements from all arrays.
+ *
+ * The length of the returned array is the product of the length of +self+ and
+ * the argument arrays.
+ *
+ * If given a block, #product will yield all combinations and return +self+
+ * instead.
+ *
+ * [1,2,3].product([4,5]) #=> [[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]
+ * [1,2].product([1,2]) #=> [[1,1],[1,2],[2,1],[2,2]]
+ * [1,2].product([3,4],[5,6]) #=> [[1,3,5],[1,3,6],[1,4,5],[1,4,6],
+ * # [2,3,5],[2,3,6],[2,4,5],[2,4,6]]
+ * [1,2].product() #=> [[1],[2]]
+ * [1,2].product([]) #=> []
+ */
+
+static VALUE
+rb_ary_product(int argc, VALUE *argv, VALUE ary)
+{
+ int n = argc+1; /* How many arrays we're operating on */
+ volatile VALUE t0 = tmpary(n);
+ volatile VALUE t1 = tmpbuf(n, sizeof(int));
+ VALUE *arrays = RARRAY_PTR(t0); /* The arrays we're computing the product of */
+ int *counters = (int*)RSTRING_PTR(t1); /* The current position in each one */
+ VALUE result = Qnil; /* The array we'll be returning, when no block given */
+ long i,j;
+ long resultlen = 1;
+
+ RBASIC_CLEAR_CLASS(t0);
+ RBASIC_CLEAR_CLASS(t1);
+
+ /* initialize the arrays of arrays */
+ ARY_SET_LEN(t0, n);
+ arrays[0] = ary;
+ for (i = 1; i < n; i++) arrays[i] = Qnil;
+ for (i = 1; i < n; i++) arrays[i] = to_ary(argv[i-1]);
+
+ /* initialize the counters for the arrays */
+ for (i = 0; i < n; i++) counters[i] = 0;
+
+ /* Otherwise, allocate and fill in an array of results */
+ if (rb_block_given_p()) {
+ /* Make defensive copies of arrays; exit if any is empty */
+ for (i = 0; i < n; i++) {
+ if (RARRAY_LEN(arrays[i]) == 0) goto done;
+ arrays[i] = ary_make_shared_copy(arrays[i]);
+ }
+ }
+ else {
+ /* Compute the length of the result array; return [] if any is empty */
+ for (i = 0; i < n; i++) {
+ long k = RARRAY_LEN(arrays[i]);
+ if (k == 0) {
+ result = rb_ary_new2(0);
+ goto done;
+ }
+ if (MUL_OVERFLOW_LONG_P(resultlen, k))
+ rb_raise(rb_eRangeError, "too big to product");
+ resultlen *= k;
+ }
+ result = rb_ary_new2(resultlen);
+ }
+ for (;;) {
+ int m;
+ /* fill in one subarray */
+ VALUE subarray = rb_ary_new2(n);
+ for (j = 0; j < n; j++) {
+ rb_ary_push(subarray, rb_ary_entry(arrays[j], counters[j]));
+ }
+
+ /* put it on the result array */
+ if (NIL_P(result)) {
+ FL_SET(t0, FL_USER5);
+ rb_yield(subarray);
+ if (! FL_TEST(t0, FL_USER5)) {
+ rb_raise(rb_eRuntimeError, "product reentered");
+ }
+ else {
+ FL_UNSET(t0, FL_USER5);
+ }
+ }
+ else {
+ rb_ary_push(result, subarray);
+ }
+
+ /*
+ * Increment the last counter. If it overflows, reset to 0
+ * and increment the one before it.
+ */
+ m = n-1;
+ counters[m]++;
+ while (counters[m] == RARRAY_LEN(arrays[m])) {
+ counters[m] = 0;
+ /* If the first counter overflows, we are done */
+ if (--m < 0) goto done;
+ counters[m]++;
+ }
+ }
+done:
+ tmpary_discard(t0);
+ tmpbuf_discard(t1);
+
+ return NIL_P(result) ? ary : result;
+}
+
+/*
+ * call-seq:
+ * ary.take(n) -> new_ary
+ *
+ * Returns first +n+ elements from the array.
+ *
+ * If a negative number is given, raises an ArgumentError.
+ *
+ * See also Array#drop
+ *
+ * a = [1, 2, 3, 4, 5, 0]
+ * a.take(3) #=> [1, 2, 3]
+ *
+ */
+
+static VALUE
+rb_ary_take(VALUE obj, VALUE n)
+{
+ long len = NUM2LONG(n);
+ if (len < 0) {
+ rb_raise(rb_eArgError, "attempt to take negative size");
+ }
+ return rb_ary_subseq(obj, 0, len);
+}
+
+/*
+ * call-seq:
+ * ary.take_while { |arr| block } -> new_ary
+ * ary.take_while -> Enumerator
+ *
+ * Passes elements to the block until the block returns +nil+ or +false+, then
+ * stops iterating and returns an array of all prior elements.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * See also Array#drop_while
+ *
+ * a = [1, 2, 3, 4, 5, 0]
+ * a.take_while { |i| i < 3 } #=> [1, 2]
+ *
+ */
+
+static VALUE
+rb_ary_take_while(VALUE ary)
+{
+ long i;
+
+ RETURN_ENUMERATOR(ary, 0, 0);
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) break;
+ }
+ return rb_ary_take(ary, LONG2FIX(i));
+}
+
+/*
+ * call-seq:
+ * ary.drop(n) -> new_ary
+ *
+ * Drops first +n+ elements from +ary+ and returns the rest of the elements in
+ * an array.
+ *
+ * If a negative number is given, raises an ArgumentError.
+ *
+ * See also Array#take
+ *
+ * a = [1, 2, 3, 4, 5, 0]
+ * a.drop(3) #=> [4, 5, 0]
+ *
+ */
+
+static VALUE
+rb_ary_drop(VALUE ary, VALUE n)
+{
+ VALUE result;
+ long pos = NUM2LONG(n);
+ if (pos < 0) {
+ rb_raise(rb_eArgError, "attempt to drop negative size");
+ }
+
+ result = rb_ary_subseq(ary, pos, RARRAY_LEN(ary));
+ if (result == Qnil) result = rb_ary_new();
+ return result;
+}
+
+/*
+ * call-seq:
+ * ary.drop_while { |arr| block } -> new_ary
+ * ary.drop_while -> Enumerator
+ *
+ * Drops elements up to, but not including, the first element for which the
+ * block returns +nil+ or +false+ and returns an array containing the
+ * remaining elements.
+ *
+ * If no block is given, an Enumerator is returned instead.
+ *
+ * See also Array#take_while
+ *
+ * a = [1, 2, 3, 4, 5, 0]
+ * a.drop_while {|i| i < 3 } #=> [3, 4, 5, 0]
+ *
+ */
+
+static VALUE
+rb_ary_drop_while(VALUE ary)
+{
+ long i;
+
+ RETURN_ENUMERATOR(ary, 0, 0);
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (!RTEST(rb_yield(RARRAY_AREF(ary, i)))) break;
+ }
+ return rb_ary_drop(ary, LONG2FIX(i));
+}
+
+/*
+ * Arrays are ordered, integer-indexed collections of any object.
+ *
+ * Array indexing starts at 0, as in C or Java. A negative index is assumed
+ * to be relative to the end of the array---that is, an index of -1 indicates
+ * the last element of the array, -2 is the next to last element in the
+ * array, and so on.
+ *
+ * == Creating Arrays
+ *
+ * A new array can be created by using the literal constructor
+ * <code>[]</code>. Arrays can contain different types of objects. For
+ * example, the array below contains an Integer, a String and a Float:
+ *
+ * ary = [1, "two", 3.0] #=> [1, "two", 3.0]
+ *
+ * An array can also be created by explicitly calling Array.new with zero, one
+ * (the initial size of the Array) or two arguments (the initial size and a
+ * default object).
+ *
+ * ary = Array.new #=> []
+ * Array.new(3) #=> [nil, nil, nil]
+ * Array.new(3, true) #=> [true, true, true]
+ *
+ * Note that the second argument populates the array with references to the
+ * same object. Therefore, it is only recommended in cases when you need to
+ * instantiate arrays with natively immutable objects such as Symbols,
+ * numbers, true or false.
+ *
+ * To create an array with separate objects a block can be passed instead.
+ * This method is safe to use with mutable objects such as hashes, strings or
+ * other arrays:
+ *
+ * Array.new(4) { Hash.new } #=> [{}, {}, {}, {}]
+ *
+ * This is also a quick way to build up multi-dimensional arrays:
+ *
+ * empty_table = Array.new(3) { Array.new(3) }
+ * #=> [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
+ *
+ * An array can also be created by using the Array() method, provided by
+ * Kernel, which tries to call #to_ary, then #to_a on its argument.
+ *
+ * Array({:a => "a", :b => "b"}) #=> [[:a, "a"], [:b, "b"]]
+ *
+ * == Example Usage
+ *
+ * In addition to the methods it mixes in through the Enumerable module, the
+ * Array class has proprietary methods for accessing, searching and otherwise
+ * manipulating arrays.
+ *
+ * Some of the more common ones are illustrated below.
+ *
+ * == Accessing Elements
+ *
+ * Elements in an array can be retrieved using the Array#[] method. It can
+ * take a single integer argument (a numeric index), a pair of arguments
+ * (start and length) or a range. Negative indices start counting from the end,
+ * with -1 being the last element.
+ *
+ * arr = [1, 2, 3, 4, 5, 6]
+ * arr[2] #=> 3
+ * arr[100] #=> nil
+ * arr[-3] #=> 4
+ * arr[2, 3] #=> [3, 4, 5]
+ * arr[1..4] #=> [2, 3, 4, 5]
+ * arr[1..-3] #=> [2, 3, 4]
+ *
+ * Another way to access a particular array element is by using the #at method
+ *
+ * arr.at(0) #=> 1
+ *
+ * The #slice method works in an identical manner to Array#[].
+ *
+ * To raise an error for indices outside of the array bounds or else to
+ * provide a default value when that happens, you can use #fetch.
+ *
+ * arr = ['a', 'b', 'c', 'd', 'e', 'f']
+ * arr.fetch(100) #=> IndexError: index 100 outside of array bounds: -6...6
+ * arr.fetch(100, "oops") #=> "oops"
+ *
+ * The special methods #first and #last will return the first and last
+ * elements of an array, respectively.
+ *
+ * arr.first #=> 1
+ * arr.last #=> 6
+ *
+ * To return the first +n+ elements of an array, use #take
+ *
+ * arr.take(3) #=> [1, 2, 3]
+ *
+ * #drop does the opposite of #take, by returning the elements after +n+
+ * elements have been dropped:
+ *
+ * arr.drop(3) #=> [4, 5, 6]
+ *
+ * == Obtaining Information about an Array
+ *
+ * Arrays keep track of their own length at all times. To query an array
+ * about the number of elements it contains, use #length, #count or #size.
+ *
+ * browsers = ['Chrome', 'Firefox', 'Safari', 'Opera', 'IE']
+ * browsers.length #=> 5
+ * browsers.count #=> 5
+ *
+ * To check whether an array contains any elements at all
+ *
+ * browsers.empty? #=> false
+ *
+ * To check whether a particular item is included in the array
+ *
+ * browsers.include?('Konqueror') #=> false
+ *
+ * == Adding Items to Arrays
+ *
+ * Items can be added to the end of an array by using either #push or #<<
+ *
+ * arr = [1, 2, 3, 4]
+ * arr.push(5) #=> [1, 2, 3, 4, 5]
+ * arr << 6 #=> [1, 2, 3, 4, 5, 6]
+ *
+ * #unshift will add a new item to the beginning of an array.
+ *
+ * arr.unshift(0) #=> [0, 1, 2, 3, 4, 5, 6]
+ *
+ * With #insert you can add a new element to an array at any position.
+ *
+ * arr.insert(3, 'apple') #=> [0, 1, 2, 'apple', 3, 4, 5, 6]
+ *
+ * Using the #insert method, you can also insert multiple values at once:
+ *
+ * arr.insert(3, 'orange', 'pear', 'grapefruit')
+ * #=> [0, 1, 2, "orange", "pear", "grapefruit", "apple", 3, 4, 5, 6]
+ *
+ * == Removing Items from an Array
+ *
+ * The method #pop removes the last element in an array and returns it:
+ *
+ * arr = [1, 2, 3, 4, 5, 6]
+ * arr.pop #=> 6
+ * arr #=> [1, 2, 3, 4, 5]
+ *
+ * To retrieve and at the same time remove the first item, use #shift:
+ *
+ * arr.shift #=> 1
+ * arr #=> [2, 3, 4, 5]
+ *
+ * To delete an element at a particular index:
+ *
+ * arr.delete_at(2) #=> 4
+ * arr #=> [2, 3, 5]
+ *
+ * To delete a particular element anywhere in an array, use #delete:
+ *
+ * arr = [1, 2, 2, 3]
+ * arr.delete(2) #=> 2
+ * arr #=> [1,3]
+ *
+ * A useful method if you need to remove +nil+ values from an array is
+ * #compact:
+ *
+ * arr = ['foo', 0, nil, 'bar', 7, 'baz', nil]
+ * arr.compact #=> ['foo', 0, 'bar', 7, 'baz']
+ * arr #=> ['foo', 0, nil, 'bar', 7, 'baz', nil]
+ * arr.compact! #=> ['foo', 0, 'bar', 7, 'baz']
+ * arr #=> ['foo', 0, 'bar', 7, 'baz']
+ *
+ * Another common need is to remove duplicate elements from an array.
+ *
+ * It has the non-destructive #uniq, and destructive method #uniq!
+ *
+ * arr = [2, 5, 6, 556, 6, 6, 8, 9, 0, 123, 556]
+ * arr.uniq #=> [2, 5, 6, 556, 8, 9, 0, 123]
+ *
+ * == Iterating over Arrays
+ *
+ * Like all classes that include the Enumerable module, Array has an each
+ * method, which defines what elements should be iterated over and how. In
+ * case of Array's #each, all elements in the Array instance are yielded to
+ * the supplied block in sequence.
+ *
+ * Note that this operation leaves the array unchanged.
+ *
+ * arr = [1, 2, 3, 4, 5]
+ * arr.each { |a| print a -= 10, " " }
+ * # prints: -9 -8 -7 -6 -5
+ * #=> [1, 2, 3, 4, 5]
+ *
+ * Another sometimes useful iterator is #reverse_each which will iterate over
+ * the elements in the array in reverse order.
+ *
+ * words = %w[first second third fourth fifth sixth]
+ * str = ""
+ * words.reverse_each { |word| str += "#{word} " }
+ * p str #=> "sixth fifth fourth third second first "
+ *
+ * The #map method can be used to create a new array based on the original
+ * array, but with the values modified by the supplied block:
+ *
+ * arr.map { |a| 2*a } #=> [2, 4, 6, 8, 10]
+ * arr #=> [1, 2, 3, 4, 5]
+ * arr.map! { |a| a**2 } #=> [1, 4, 9, 16, 25]
+ * arr #=> [1, 4, 9, 16, 25]
+ *
+ * == Selecting Items from an Array
+ *
+ * Elements can be selected from an array according to criteria defined in a
+ * block. The selection can happen in a destructive or a non-destructive
+ * manner. While the destructive operations will modify the array they were
+ * called on, the non-destructive methods usually return a new array with the
+ * selected elements, but leave the original array unchanged.
+ *
+ * === Non-destructive Selection
+ *
+ * arr = [1, 2, 3, 4, 5, 6]
+ * arr.select { |a| a > 3 } #=> [4, 5, 6]
+ * arr.reject { |a| a < 3 } #=> [3, 4, 5, 6]
+ * arr.drop_while { |a| a < 4 } #=> [4, 5, 6]
+ * arr #=> [1, 2, 3, 4, 5, 6]
+ *
+ * === Destructive Selection
+ *
+ * #select! and #reject! are the corresponding destructive methods to #select
+ * and #reject
+ *
+ * Similar to #select vs. #reject, #delete_if and #keep_if have the exact
+ * opposite result when supplied with the same block:
+ *
+ * arr.delete_if { |a| a < 4 } #=> [4, 5, 6]
+ * arr #=> [4, 5, 6]
+ *
+ * arr = [1, 2, 3, 4, 5, 6]
+ * arr.keep_if { |a| a < 4 } #=> [1, 2, 3]
+ * arr #=> [1, 2, 3]
+ *
+ */
+
+void
+Init_Array(void)
+{
+#undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
+
+ rb_cArray = rb_define_class("Array", rb_cObject);
+ rb_include_module(rb_cArray, rb_mEnumerable);
+
+ rb_define_alloc_func(rb_cArray, empty_ary_alloc);
+ rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1);
+ rb_define_singleton_method(rb_cArray, "try_convert", rb_ary_s_try_convert, 1);
+ rb_define_method(rb_cArray, "initialize", rb_ary_initialize, -1);
+ rb_define_method(rb_cArray, "initialize_copy", rb_ary_replace, 1);
+
+ rb_define_method(rb_cArray, "inspect", rb_ary_inspect, 0);
+ rb_define_alias(rb_cArray, "to_s", "inspect");
+ rb_define_method(rb_cArray, "to_a", rb_ary_to_a, 0);
+ rb_define_method(rb_cArray, "to_h", rb_ary_to_h, 0);
+ rb_define_method(rb_cArray, "to_ary", rb_ary_to_ary_m, 0);
+ rb_define_method(rb_cArray, "frozen?", rb_ary_frozen_p, 0);
+
+ rb_define_method(rb_cArray, "==", rb_ary_equal, 1);
+ rb_define_method(rb_cArray, "eql?", rb_ary_eql, 1);
+ rb_define_method(rb_cArray, "hash", rb_ary_hash, 0);
+
+ rb_define_method(rb_cArray, "[]", rb_ary_aref, -1);
+ rb_define_method(rb_cArray, "[]=", rb_ary_aset, -1);
+ rb_define_method(rb_cArray, "at", rb_ary_at, 1);
+ rb_define_method(rb_cArray, "fetch", rb_ary_fetch, -1);
+ rb_define_method(rb_cArray, "first", rb_ary_first, -1);
+ rb_define_method(rb_cArray, "last", rb_ary_last, -1);
+ rb_define_method(rb_cArray, "concat", rb_ary_concat, 1);
+ rb_define_method(rb_cArray, "<<", rb_ary_push, 1);
+ rb_define_method(rb_cArray, "push", rb_ary_push_m, -1);
+ rb_define_method(rb_cArray, "pop", rb_ary_pop_m, -1);
+ rb_define_method(rb_cArray, "shift", rb_ary_shift_m, -1);
+ rb_define_method(rb_cArray, "unshift", rb_ary_unshift_m, -1);
+ rb_define_method(rb_cArray, "insert", rb_ary_insert, -1);
+ rb_define_method(rb_cArray, "each", rb_ary_each, 0);
+ rb_define_method(rb_cArray, "each_index", rb_ary_each_index, 0);
+ rb_define_method(rb_cArray, "reverse_each", rb_ary_reverse_each, 0);
+ rb_define_method(rb_cArray, "length", rb_ary_length, 0);
+ rb_define_alias(rb_cArray, "size", "length");
+ rb_define_method(rb_cArray, "empty?", rb_ary_empty_p, 0);
+ rb_define_method(rb_cArray, "find_index", rb_ary_index, -1);
+ rb_define_method(rb_cArray, "index", rb_ary_index, -1);
+ rb_define_method(rb_cArray, "rindex", rb_ary_rindex, -1);
+ rb_define_method(rb_cArray, "join", rb_ary_join_m, -1);
+ rb_define_method(rb_cArray, "reverse", rb_ary_reverse_m, 0);
+ rb_define_method(rb_cArray, "reverse!", rb_ary_reverse_bang, 0);
+ rb_define_method(rb_cArray, "rotate", rb_ary_rotate_m, -1);
+ rb_define_method(rb_cArray, "rotate!", rb_ary_rotate_bang, -1);
+ rb_define_method(rb_cArray, "sort", rb_ary_sort, 0);
+ rb_define_method(rb_cArray, "sort!", rb_ary_sort_bang, 0);
+ rb_define_method(rb_cArray, "sort_by!", rb_ary_sort_by_bang, 0);
+ rb_define_method(rb_cArray, "collect", rb_ary_collect, 0);
+ rb_define_method(rb_cArray, "collect!", rb_ary_collect_bang, 0);
+ rb_define_method(rb_cArray, "map", rb_ary_collect, 0);
+ rb_define_method(rb_cArray, "map!", rb_ary_collect_bang, 0);
+ rb_define_method(rb_cArray, "select", rb_ary_select, 0);
+ rb_define_method(rb_cArray, "select!", rb_ary_select_bang, 0);
+ rb_define_method(rb_cArray, "keep_if", rb_ary_keep_if, 0);
+ rb_define_method(rb_cArray, "values_at", rb_ary_values_at, -1);
+ rb_define_method(rb_cArray, "delete", rb_ary_delete, 1);
+ rb_define_method(rb_cArray, "delete_at", rb_ary_delete_at_m, 1);
+ rb_define_method(rb_cArray, "delete_if", rb_ary_delete_if, 0);
+ rb_define_method(rb_cArray, "reject", rb_ary_reject, 0);
+ rb_define_method(rb_cArray, "reject!", rb_ary_reject_bang, 0);
+ rb_define_method(rb_cArray, "zip", rb_ary_zip, -1);
+ rb_define_method(rb_cArray, "transpose", rb_ary_transpose, 0);
+ rb_define_method(rb_cArray, "replace", rb_ary_replace, 1);
+ rb_define_method(rb_cArray, "clear", rb_ary_clear, 0);
+ rb_define_method(rb_cArray, "fill", rb_ary_fill, -1);
+ rb_define_method(rb_cArray, "include?", rb_ary_includes, 1);
+ rb_define_method(rb_cArray, "<=>", rb_ary_cmp, 1);
+
+ rb_define_method(rb_cArray, "slice", rb_ary_aref, -1);
+ rb_define_method(rb_cArray, "slice!", rb_ary_slice_bang, -1);
+
+ rb_define_method(rb_cArray, "assoc", rb_ary_assoc, 1);
+ rb_define_method(rb_cArray, "rassoc", rb_ary_rassoc, 1);
+
+ rb_define_method(rb_cArray, "+", rb_ary_plus, 1);
+ rb_define_method(rb_cArray, "*", rb_ary_times, 1);
+
+ rb_define_method(rb_cArray, "-", rb_ary_diff, 1);
+ rb_define_method(rb_cArray, "&", rb_ary_and, 1);
+ rb_define_method(rb_cArray, "|", rb_ary_or, 1);
+
+ rb_define_method(rb_cArray, "uniq", rb_ary_uniq, 0);
+ rb_define_method(rb_cArray, "uniq!", rb_ary_uniq_bang, 0);
+ rb_define_method(rb_cArray, "compact", rb_ary_compact, 0);
+ rb_define_method(rb_cArray, "compact!", rb_ary_compact_bang, 0);
+ rb_define_method(rb_cArray, "flatten", rb_ary_flatten, -1);
+ rb_define_method(rb_cArray, "flatten!", rb_ary_flatten_bang, -1);
+ rb_define_method(rb_cArray, "count", rb_ary_count, -1);
+ rb_define_method(rb_cArray, "shuffle!", rb_ary_shuffle_bang, -1);
+ rb_define_method(rb_cArray, "shuffle", rb_ary_shuffle, -1);
+ rb_define_method(rb_cArray, "sample", rb_ary_sample, -1);
+ rb_define_method(rb_cArray, "cycle", rb_ary_cycle, -1);
+ rb_define_method(rb_cArray, "permutation", rb_ary_permutation, -1);
+ rb_define_method(rb_cArray, "combination", rb_ary_combination, 1);
+ rb_define_method(rb_cArray, "repeated_permutation", rb_ary_repeated_permutation, 1);
+ rb_define_method(rb_cArray, "repeated_combination", rb_ary_repeated_combination, 1);
+ rb_define_method(rb_cArray, "product", rb_ary_product, -1);
+
+ rb_define_method(rb_cArray, "take", rb_ary_take, 1);
+ rb_define_method(rb_cArray, "take_while", rb_ary_take_while, 0);
+ rb_define_method(rb_cArray, "drop", rb_ary_drop, 1);
+ rb_define_method(rb_cArray, "drop_while", rb_ary_drop_while, 0);
+ rb_define_method(rb_cArray, "bsearch", rb_ary_bsearch, 0);
+
+ id_cmp = rb_intern("<=>");
+ sym_random = ID2SYM(rb_intern("random"));
+ id_div = rb_intern("div");
+ id_power = rb_intern("**");
}
diff --git a/benchmark/bm_app_answer.rb b/benchmark/bm_app_answer.rb
new file mode 100644
index 0000000000..3cd8a8fd37
--- /dev/null
+++ b/benchmark/bm_app_answer.rb
@@ -0,0 +1,15 @@
+def ack(m, n)
+ if m == 0 then
+ n + 1
+ elsif n == 0 then
+ ack(m - 1, 1)
+ else
+ ack(m - 1, ack(m, n - 1))
+ end
+end
+
+def the_answer_to_life_the_universe_and_everything
+ (ack(3,7).to_s.split(//).inject(0){|s,x| s+x.to_i}.to_s + "2" ).to_i
+end
+
+answer = the_answer_to_life_the_universe_and_everything
diff --git a/benchmark/bm_app_aobench.rb b/benchmark/bm_app_aobench.rb
new file mode 100644
index 0000000000..807349089f
--- /dev/null
+++ b/benchmark/bm_app_aobench.rb
@@ -0,0 +1,292 @@
+# AO rebder benchmark
+# Original program (C) Syoyo Fujita in Javascript (and other languages)
+# http://lucille.atso-net.jp/blog/?p=642
+# http://lucille.atso-net.jp/blog/?p=711
+# Ruby(yarv2llvm) version by Hideki Miura
+#
+
+IMAGE_WIDTH = 256
+IMAGE_HEIGHT = 256
+NSUBSAMPLES = 2
+NAO_SAMPLES = 8
+
+class Vec
+ def initialize(x, y, z)
+ @x = x
+ @y = y
+ @z = z
+ end
+
+ attr_accessor :x, :y, :z
+
+ def vadd(b)
+ Vec.new(@x + b.x, @y + b.y, @z + b.z)
+ end
+
+ def vsub(b)
+ Vec.new(@x - b.x, @y - b.y, @z - b.z)
+ end
+
+ def vcross(b)
+ Vec.new(@y * b.z - @z * b.y,
+ @z * b.x - @x * b.z,
+ @x * b.y - @y * b.x)
+ end
+
+ def vdot(b)
+ @x * b.x + @y * b.y + @z * b.z
+ end
+
+ def vlength
+ Math.sqrt(@x * @x + @y * @y + @z * @z)
+ end
+
+ def vnormalize
+ len = vlength
+ v = Vec.new(@x, @y, @z)
+ if len > 1.0e-17 then
+ v.x = v.x / len
+ v.y = v.y / len
+ v.z = v.z / len
+ end
+ v
+ end
+end
+
+
+class Sphere
+ def initialize(center, radius)
+ @center = center
+ @radius = radius
+ end
+
+ attr_reader :center, :radius
+
+ def intersect(ray, isect)
+ rs = ray.org.vsub(@center)
+ b = rs.vdot(ray.dir)
+ c = rs.vdot(rs) - (@radius * @radius)
+ d = b * b - c
+ if d > 0.0 then
+ t = - b - Math.sqrt(d)
+
+ if t > 0.0 and t < isect.t then
+ isect.t = t
+ isect.hit = true
+ isect.pl = Vec.new(ray.org.x + ray.dir.x * t,
+ ray.org.y + ray.dir.y * t,
+ ray.org.z + ray.dir.z * t)
+ n = isect.pl.vsub(@center)
+ isect.n = n.vnormalize
+ else
+ 0.0
+ end
+ end
+ nil
+ end
+end
+
+class Plane
+ def initialize(p, n)
+ @p = p
+ @n = n
+ end
+
+ def intersect(ray, isect)
+ d = -@p.vdot(@n)
+ v = ray.dir.vdot(@n)
+ v0 = v
+ if v < 0.0 then
+ v0 = -v
+ end
+ if v0 < 1.0e-17 then
+ return
+ end
+
+ t = -(ray.org.vdot(@n) + d) / v
+
+ if t > 0.0 and t < isect.t then
+ isect.hit = true
+ isect.t = t
+ isect.n = @n
+ isect.pl = Vec.new(ray.org.x + t * ray.dir.x,
+ ray.org.y + t * ray.dir.y,
+ ray.org.z + t * ray.dir.z)
+ end
+ nil
+ end
+end
+
+class Ray
+ def initialize(org, dir)
+ @org = org
+ @dir = dir
+ end
+
+ attr_accessor :org, :dir
+end
+
+class Isect
+ def initialize
+ @t = 10000000.0
+ @hit = false
+ @pl = Vec.new(0.0, 0.0, 0.0)
+ @n = Vec.new(0.0, 0.0, 0.0)
+ end
+
+ attr_accessor :t, :hit, :pl, :n
+end
+
+def clamp(f)
+ i = f * 255.5
+ if i > 255.0 then
+ i = 255.0
+ end
+ if i < 0.0 then
+ i = 0.0
+ end
+ i.to_i
+end
+
+def otherBasis(basis, n)
+ basis[2] = Vec.new(n.x, n.y, n.z)
+ basis[1] = Vec.new(0.0, 0.0, 0.0)
+
+ if n.x < 0.6 and n.x > -0.6 then
+ basis[1].x = 1.0
+ elsif n.y < 0.6 and n.y > -0.6 then
+ basis[1].y = 1.0
+ elsif n.z < 0.6 and n.z > -0.6 then
+ basis[1].z = 1.0
+ else
+ basis[1].x = 1.0
+ end
+
+ basis[0] = basis[1].vcross(basis[2])
+ basis[0] = basis[0].vnormalize
+
+ basis[1] = basis[2].vcross(basis[0])
+ basis[1] = basis[1].vnormalize
+end
+
+class Scene
+ def initialize
+ @spheres = Array.new
+ @spheres[0] = Sphere.new(Vec.new(-2.0, 0.0, -3.5), 0.5)
+ @spheres[1] = Sphere.new(Vec.new(-0.5, 0.0, -3.0), 0.5)
+ @spheres[2] = Sphere.new(Vec.new(1.0, 0.0, -2.2), 0.5)
+ @plane = Plane.new(Vec.new(0.0, -0.5, 0.0), Vec.new(0.0, 1.0, 0.0))
+ end
+
+ def ambient_occlusion(isect)
+ basis = Array.new
+ otherBasis(basis, isect.n)
+
+ ntheta = NAO_SAMPLES
+ nphi = NAO_SAMPLES
+ eps = 0.0001
+ occlusion = 0.0
+
+ p0 = Vec.new(isect.pl.x + eps * isect.n.x,
+ isect.pl.y + eps * isect.n.y,
+ isect.pl.z + eps * isect.n.z)
+ nphi.times do |j|
+ ntheta.times do |i|
+ r = rand
+ phi = 2.0 * 3.14159265 * rand
+ x = Math.cos(phi) * Math.sqrt(1.0 - r)
+ y = Math.sin(phi) * Math.sqrt(1.0 - r)
+ z = Math.sqrt(r)
+
+ rx = x * basis[0].x + y * basis[1].x + z * basis[2].x
+ ry = x * basis[0].y + y * basis[1].y + z * basis[2].y
+ rz = x * basis[0].z + y * basis[1].z + z * basis[2].z
+
+ raydir = Vec.new(rx, ry, rz)
+ ray = Ray.new(p0, raydir)
+
+ occisect = Isect.new
+ @spheres[0].intersect(ray, occisect)
+ @spheres[1].intersect(ray, occisect)
+ @spheres[2].intersect(ray, occisect)
+ @plane.intersect(ray, occisect)
+ if occisect.hit then
+ occlusion = occlusion + 1.0
+ else
+ 0.0
+ end
+ end
+ end
+
+ occlusion = (ntheta.to_f * nphi.to_f - occlusion) / (ntheta.to_f * nphi.to_f)
+
+ Vec.new(occlusion, occlusion, occlusion)
+ end
+
+ def render(w, h, nsubsamples)
+ cnt = 0
+ nsf = nsubsamples.to_f
+ h.times do |y|
+ w.times do |x|
+ rad = Vec.new(0.0, 0.0, 0.0)
+
+ # Subsmpling
+ nsubsamples.times do |v|
+ nsubsamples.times do |u|
+
+ cnt = cnt + 1
+ wf = w.to_f
+ hf = h.to_f
+ xf = x.to_f
+ yf = y.to_f
+ uf = u.to_f
+ vf = v.to_f
+
+ px = (xf + (uf / nsf) - (wf / 2.0)) / (wf / 2.0)
+ py = -(yf + (vf / nsf) - (hf / 2.0)) / (hf / 2.0)
+
+ eye = Vec.new(px, py, -1.0).vnormalize
+
+ ray = Ray.new(Vec.new(0.0, 0.0, 0.0), eye)
+
+ isect = Isect.new
+ @spheres[0].intersect(ray, isect)
+ @spheres[1].intersect(ray, isect)
+ @spheres[2].intersect(ray, isect)
+ @plane.intersect(ray, isect)
+ if isect.hit then
+ col = ambient_occlusion(isect)
+ rad.x = rad.x + col.x
+ rad.y = rad.y + col.y
+ rad.z = rad.z + col.z
+ end
+ end
+ end
+
+ r = rad.x / (nsf * nsf)
+ g = rad.y / (nsf * nsf)
+ b = rad.z / (nsf * nsf)
+ printf("%c", clamp(r))
+ printf("%c", clamp(g))
+ printf("%c", clamp(b))
+ end
+ nil
+ end
+
+ nil
+ end
+end
+
+alias printf_orig printf
+def printf *args
+end
+
+# File.open("ao.ppm", "w") do |fp|
+ printf("P6\n")
+ printf("%d %d\n", IMAGE_WIDTH, IMAGE_HEIGHT)
+ printf("255\n", IMAGE_WIDTH, IMAGE_HEIGHT)
+ Scene.new.render(IMAGE_WIDTH, IMAGE_HEIGHT, NSUBSAMPLES)
+# end
+
+undef printf
+alias printf printf_orig
diff --git a/benchmark/bm_app_erb.rb b/benchmark/bm_app_erb.rb
new file mode 100644
index 0000000000..77c66a7949
--- /dev/null
+++ b/benchmark/bm_app_erb.rb
@@ -0,0 +1,26 @@
+#
+# Create many HTML strings with ERB.
+#
+
+require 'erb'
+
+data = DATA.read
+max = 15_000
+title = "hello world!"
+content = "hello world!\n" * 10
+
+max.times{
+ ERB.new(data).result(binding)
+}
+
+__END__
+
+<html>
+ <head> <%= title %> </head>
+ <body>
+ <h1> <%= title %> </h1>
+ <p>
+ <%= content %>
+ </p>
+ </body>
+</html>
diff --git a/benchmark/bm_app_factorial.rb b/benchmark/bm_app_factorial.rb
new file mode 100644
index 0000000000..45f471dfdb
--- /dev/null
+++ b/benchmark/bm_app_factorial.rb
@@ -0,0 +1,11 @@
+def fact(n)
+ if(n > 1)
+ n * fact(n-1)
+ else
+ 1
+ end
+end
+
+100.times {
+ fact(5000)
+}
diff --git a/benchmark/bm_app_fib.rb b/benchmark/bm_app_fib.rb
new file mode 100644
index 0000000000..34a7b2e725
--- /dev/null
+++ b/benchmark/bm_app_fib.rb
@@ -0,0 +1,10 @@
+def fib n
+ if n < 3
+ 1
+ else
+ fib(n-1) + fib(n-2)
+ end
+end
+
+fib(34)
+
diff --git a/benchmark/bm_app_mandelbrot.rb b/benchmark/bm_app_mandelbrot.rb
new file mode 100644
index 0000000000..801b75e8e2
--- /dev/null
+++ b/benchmark/bm_app_mandelbrot.rb
@@ -0,0 +1,23 @@
+require 'complex'
+
+def mandelbrot? z
+ i = 0
+ while i<100
+ i += 1
+ z = z * z
+ return false if z.abs > 2
+ end
+ true
+end
+
+ary = []
+
+(0..1000).each{|dx|
+ (0..1000).each{|dy|
+ x = dx / 50.0
+ y = dy / 50.0
+ c = Complex(x, y)
+ ary << c if mandelbrot?(c)
+ }
+}
+
diff --git a/benchmark/bm_app_pentomino.rb b/benchmark/bm_app_pentomino.rb
new file mode 100644
index 0000000000..59c63f358e
--- /dev/null
+++ b/benchmark/bm_app_pentomino.rb
@@ -0,0 +1,259 @@
+#!/usr/local/bin/ruby
+# This program is contributed by Shin Nishiyama
+
+
+# modified by K.Sasada
+
+NP = 5
+ROW = 8 + NP
+COL = 8
+
+$p = []
+$b = []
+$no = 0
+
+def piece(n, a, nb)
+ nb.each{|x|
+ a[n] = x
+ if n == NP-1
+ $p << [a.sort]
+ else
+ nbc=nb.dup
+ [-ROW, -1, 1, ROW].each{|d|
+ if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
+ nbc << x+d
+ end
+ }
+ nbc.delete x
+ piece(n+1,a[0..n],nbc)
+ end
+ }
+end
+
+def kikaku(a)
+ a.collect {|x| x - a[0]}
+end
+def ud(a)
+ kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
+end
+def rl(a)
+ kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
+end
+def xy(a)
+ kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
+end
+
+def mkpieces
+ piece(0,[],[0])
+ $p.each do |a|
+ a0 = a[0]
+ a[1] = ud(a0)
+ a[2] = rl(a0)
+ a[3] = ud(rl(a0))
+ a[4] = xy(a0)
+ a[5] = ud(xy(a0))
+ a[6] = rl(xy(a0))
+ a[7] = ud(rl(xy(a0)))
+ a.sort!
+ a.uniq!
+ end
+ $p.uniq!.sort! {|x,y| x[0] <=> y[0] }
+end
+
+def mkboard
+ (0...ROW*COL).each{|i|
+ if i % ROW >= ROW-NP
+ $b[i] = -2
+ else
+ $b[i] = -1
+ end
+ $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
+ }
+end
+
+def pboard
+ return # skip print
+ print "No. #$no\n"
+ (0...COL).each{|i|
+ print "|"
+ (0...ROW-NP).each{|j|
+ x = $b[i*ROW+j]
+ if x < 0
+ print "..|"
+ else
+ printf "%2d|",x+1
+ end
+ }
+ print "\n"
+ }
+ print "\n"
+end
+
+$pnum=[]
+def setpiece(a,pos)
+ if a.length == $p.length then
+ $no += 1
+ pboard
+ return
+ end
+ while $b[pos] != -1
+ pos += 1
+ end
+ ($pnum - a).each do |i|
+ $p[i].each do |x|
+ f = 0
+ x.each{|s|
+ if $b[pos+s] != -1
+ f=1
+ break
+ end
+ }
+ if f == 0 then
+ x.each{|s|
+ $b[pos+s] = i
+ }
+ a << i
+ setpiece(a.dup, pos)
+ a.pop
+ x.each{|s|
+ $b[pos+s] = -1
+ }
+ end
+ end
+ end
+end
+
+mkpieces
+mkboard
+$p[4] = [$p[4][0]]
+$pnum = (0...$p.length).to_a
+setpiece([],0)
+
+
+__END__
+
+# original
+
+NP = 5
+ROW = 8 + NP
+COL = 8
+
+$p = []
+$b = []
+$no = 0
+
+def piece(n,a,nb)
+ for x in nb
+ a[n] = x
+ if n == NP-1
+ $p << [a.sort]
+ else
+ nbc=nb.dup
+ for d in [-ROW, -1, 1, ROW]
+ if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
+ nbc << x+d
+ end
+ end
+ nbc.delete x
+ piece(n+1,a[0..n],nbc)
+ end
+ end
+end
+
+def kikaku(a)
+ a.collect {|x| x - a[0]}
+end
+def ud(a)
+ kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
+end
+def rl(a)
+ kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
+end
+def xy(a)
+ kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
+end
+
+def mkpieces
+ piece(0,[],[0])
+ $p.each do |a|
+ a0 = a[0]
+ a[1] = ud(a0)
+ a[2] = rl(a0)
+ a[3] = ud(rl(a0))
+ a[4] = xy(a0)
+ a[5] = ud(xy(a0))
+ a[6] = rl(xy(a0))
+ a[7] = ud(rl(xy(a0)))
+ a.sort!
+ a.uniq!
+ end
+ $p.uniq!.sort! {|x,y| x[0] <=> y[0] }
+end
+
+def mkboard
+ for i in 0...ROW*COL
+ if i % ROW >= ROW-NP
+ $b[i] = -2
+ else
+ $b[i] = -1
+ end
+ $b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
+ end
+end
+
+def pboard
+ print "No. #$no\n"
+ for i in 0...COL
+ print "|"
+ for j in 0...ROW-NP
+ x = $b[i*ROW+j]
+ if x < 0
+ print "..|"
+ else
+ printf "%2d|",x+1
+ end
+ end
+ print "\n"
+ end
+ print "\n"
+end
+
+$pnum=[]
+def setpiece(a,pos)
+ if a.length == $p.length then
+ $no += 1
+ pboard
+ return
+ end
+ while $b[pos] != -1
+ pos += 1
+ end
+ ($pnum - a).each do |i|
+ $p[i].each do |x|
+ f = 0
+ for s in x do
+ if $b[pos+s] != -1
+ f=1
+ break
+ end
+ end
+ if f == 0 then
+ for s in x do
+ $b[pos+s] = i
+ end
+ a << i
+ setpiece(a.dup, pos)
+ a.pop
+ for s in x do
+ $b[pos+s] = -1
+ end
+ end
+ end
+ end
+end
+
+mkpieces
+mkboard
+$p[4] = [$p[4][0]]
+$pnum = (0...$p.length).to_a
+setpiece([],0)
diff --git a/benchmark/bm_app_raise.rb b/benchmark/bm_app_raise.rb
new file mode 100644
index 0000000000..5db8f95d50
--- /dev/null
+++ b/benchmark/bm_app_raise.rb
@@ -0,0 +1,8 @@
+i = 0
+while i<300000
+ i += 1
+ begin
+ raise
+ rescue
+ end
+end
diff --git a/benchmark/bm_app_strconcat.rb b/benchmark/bm_app_strconcat.rb
new file mode 100644
index 0000000000..7eed7c1aed
--- /dev/null
+++ b/benchmark/bm_app_strconcat.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<2_000_000
+ "#{1+1} #{1+1} #{1+1}"
+ i += 1
+end
diff --git a/benchmark/bm_app_tak.rb b/benchmark/bm_app_tak.rb
new file mode 100644
index 0000000000..efe5380f4e
--- /dev/null
+++ b/benchmark/bm_app_tak.rb
@@ -0,0 +1,13 @@
+
+def tak x, y, z
+ unless y < x
+ z
+ else
+ tak( tak(x-1, y, z),
+ tak(y-1, z, x),
+ tak(z-1, x, y))
+ end
+end
+
+tak(18, 9, 0)
+
diff --git a/benchmark/bm_app_tarai.rb b/benchmark/bm_app_tarai.rb
new file mode 100644
index 0000000000..4c146f5ccf
--- /dev/null
+++ b/benchmark/bm_app_tarai.rb
@@ -0,0 +1,10 @@
+def tarai( x, y, z )
+ if x <= y
+ then y
+ else tarai(tarai(x-1, y, z),
+ tarai(y-1, z, x),
+ tarai(z-1, x, y))
+ end
+end
+
+tarai(12, 6, 0)
diff --git a/benchmark/bm_app_uri.rb b/benchmark/bm_app_uri.rb
new file mode 100644
index 0000000000..586edfd5dc
--- /dev/null
+++ b/benchmark/bm_app_uri.rb
@@ -0,0 +1,8 @@
+require 'uri'
+
+100_000.times{
+ uri = URI.parse('http://www.ruby-lang.org')
+ uri.scheme
+ uri.host
+ uri.port
+}
diff --git a/benchmark/bm_hash_shift.rb b/benchmark/bm_hash_shift.rb
new file mode 100644
index 0000000000..a645671a5b
--- /dev/null
+++ b/benchmark/bm_hash_shift.rb
@@ -0,0 +1,10 @@
+h = {}
+
+10000.times do |i|
+ h[i] = nil
+end
+
+50000.times do
+ k, v = h.shift
+ h[k] = v
+end
diff --git a/benchmark/bm_io_file_create.rb b/benchmark/bm_io_file_create.rb
new file mode 100644
index 0000000000..2f205c1333
--- /dev/null
+++ b/benchmark/bm_io_file_create.rb
@@ -0,0 +1,13 @@
+#
+# Create files
+#
+
+max = 200_000
+file = './tmpfile_of_bm_io_file_create'
+
+max.times{
+ f = open(file, 'w')
+ f.close#(true)
+}
+File.unlink(file)
+
diff --git a/benchmark/bm_io_file_read.rb b/benchmark/bm_io_file_read.rb
new file mode 100644
index 0000000000..b9e796ed30
--- /dev/null
+++ b/benchmark/bm_io_file_read.rb
@@ -0,0 +1,15 @@
+#
+# Seek and Read file.
+#
+
+require 'tempfile'
+
+max = 200_000
+str = "Hello world! " * 1000
+f = Tempfile.new('yarv-benchmark')
+f.write str
+
+max.times{
+ f.seek 0
+ f.read
+}
diff --git a/benchmark/bm_io_file_write.rb b/benchmark/bm_io_file_write.rb
new file mode 100644
index 0000000000..aa1be0e5fe
--- /dev/null
+++ b/benchmark/bm_io_file_write.rb
@@ -0,0 +1,14 @@
+#
+# Seek and Write file.
+#
+
+require 'tempfile'
+
+max = 200_000
+str = "Hello world! " * 1000
+f = Tempfile.new('yarv-benchmark')
+
+max.times{
+ f.seek 0
+ f.write str
+}
diff --git a/benchmark/bm_io_select.rb b/benchmark/bm_io_select.rb
new file mode 100644
index 0000000000..19248daeb1
--- /dev/null
+++ b/benchmark/bm_io_select.rb
@@ -0,0 +1,9 @@
+# IO.select performance
+
+w = [ IO.pipe[1] ];
+
+nr = 1000000
+nr.times {
+ IO.select nil, w
+}
+
diff --git a/benchmark/bm_io_select2.rb b/benchmark/bm_io_select2.rb
new file mode 100644
index 0000000000..10e37d71b2
--- /dev/null
+++ b/benchmark/bm_io_select2.rb
@@ -0,0 +1,22 @@
+# IO.select performance. worst case of single fd.
+
+ios = []
+nr = 1000000
+if defined?(Process::RLIMIT_NOFILE)
+ max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
+else
+ max = 64
+end
+puts "max fd: #{max} (results not apparent with <= 1024 max fd)"
+
+((max / 2) - 10).times do
+ ios.concat IO.pipe
+end
+
+last = [ ios[-1] ]
+puts "last IO: #{last[0].inspect}"
+
+nr.times do
+ IO.select nil, last
+end
+
diff --git a/benchmark/bm_io_select3.rb b/benchmark/bm_io_select3.rb
new file mode 100644
index 0000000000..7d0ba1f092
--- /dev/null
+++ b/benchmark/bm_io_select3.rb
@@ -0,0 +1,21 @@
+# IO.select performance. a lot of fd
+
+ios = []
+nr = 100
+if defined?(Process::RLIMIT_NOFILE)
+ max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
+else
+ max = 64
+end
+puts "max fd: #{max} (results not apparent with <= 1024 max fd)"
+
+(max - 10).times do
+ r, w = IO.pipe
+ r.close
+ ios.push w
+end
+
+nr.times do
+ IO.select nil, ios
+end
+
diff --git a/benchmark/bm_loop_for.rb b/benchmark/bm_loop_for.rb
new file mode 100644
index 0000000000..0fc4cc1511
--- /dev/null
+++ b/benchmark/bm_loop_for.rb
@@ -0,0 +1,3 @@
+for i in 1..30_000_000
+ #
+end
diff --git a/benchmark/bm_loop_generator.rb b/benchmark/bm_loop_generator.rb
new file mode 100644
index 0000000000..d3375c744c
--- /dev/null
+++ b/benchmark/bm_loop_generator.rb
@@ -0,0 +1,14 @@
+max = 600000
+
+if defined? Fiber
+ gen = (1..max).each
+ loop do
+ gen.next
+ end
+else
+ require 'generator'
+ gen = Generator.new((0..max))
+ while gen.next?
+ gen.next
+ end
+end
diff --git a/benchmark/bm_loop_times.rb b/benchmark/bm_loop_times.rb
new file mode 100644
index 0000000000..521f72ad1a
--- /dev/null
+++ b/benchmark/bm_loop_times.rb
@@ -0,0 +1 @@
+30_000_000.times{|e|}
diff --git a/benchmark/bm_loop_whileloop.rb b/benchmark/bm_loop_whileloop.rb
new file mode 100644
index 0000000000..0072822c06
--- /dev/null
+++ b/benchmark/bm_loop_whileloop.rb
@@ -0,0 +1,4 @@
+i = 0
+while i<30_000_000 # benchmark loop 1
+ i += 1
+end
diff --git a/benchmark/bm_loop_whileloop2.rb b/benchmark/bm_loop_whileloop2.rb
new file mode 100644
index 0000000000..47d02dffc4
--- /dev/null
+++ b/benchmark/bm_loop_whileloop2.rb
@@ -0,0 +1,4 @@
+i = 0
+while i< 6_000_000 # benchmark loop 2
+ i += 1
+end
diff --git a/benchmark/bm_so_ackermann.rb b/benchmark/bm_so_ackermann.rb
new file mode 100644
index 0000000000..7db5be9050
--- /dev/null
+++ b/benchmark/bm_so_ackermann.rb
@@ -0,0 +1,19 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: ackermann-ruby.code,v 1.4 2004/11/13 07:40:41 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+
+def ack(m, n)
+ if m == 0 then
+ n + 1
+ elsif n == 0 then
+ ack(m - 1, 1)
+ else
+ ack(m - 1, ack(m, n - 1))
+ end
+end
+
+NUM = 9
+ack(3, NUM)
+
+
diff --git a/benchmark/bm_so_array.rb b/benchmark/bm_so_array.rb
new file mode 100644
index 0000000000..2b8fce8f99
--- /dev/null
+++ b/benchmark/bm_so_array.rb
@@ -0,0 +1,23 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: ary-ruby.code,v 1.4 2004/11/13 07:41:27 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# with help from Paul Brannan and Mark Hubbart
+
+n = 9000 # Integer(ARGV.shift || 1)
+
+x = Array.new(n)
+y = Array.new(n, 0)
+
+n.times{|bi|
+ x[bi] = bi + 1
+}
+
+(0 .. 999).each do |e|
+ (n-1).step(0,-1) do |bi|
+ y[bi] += x.at(bi)
+ end
+end
+# puts "#{y.first} #{y.last}"
+
+
diff --git a/benchmark/bm_so_binary_trees.rb b/benchmark/bm_so_binary_trees.rb
new file mode 100644
index 0000000000..b1693e4109
--- /dev/null
+++ b/benchmark/bm_so_binary_trees.rb
@@ -0,0 +1,62 @@
+# The Computer Language Shootout Benchmarks
+# http://shootout.alioth.debian.org
+#
+# contributed by Jesse Millikan
+
+# disable output
+alias puts_orig puts
+def puts str
+ # disable puts
+end
+
+def item_check(tree)
+ if tree[0] == nil
+ tree[1]
+ else
+ tree[1] + item_check(tree[0]) - item_check(tree[2])
+ end
+end
+
+def bottom_up_tree(item, depth)
+ if depth > 0
+ item_item = 2 * item
+ depth -= 1
+ [bottom_up_tree(item_item - 1, depth), item, bottom_up_tree(item_item, depth)]
+ else
+ [nil, item, nil]
+ end
+end
+
+max_depth = 16 # ARGV[0].to_i
+min_depth = 4
+
+max_depth = min_depth + 2 if min_depth + 2 > max_depth
+
+stretch_depth = max_depth + 1
+stretch_tree = bottom_up_tree(0, stretch_depth)
+
+puts "stretch tree of depth #{stretch_depth}\t check: #{item_check(stretch_tree)}"
+stretch_tree = nil
+
+long_lived_tree = bottom_up_tree(0, max_depth)
+
+min_depth.step(max_depth + 1, 2) do |depth|
+ iterations = 2**(max_depth - depth + min_depth)
+
+ check = 0
+
+ for i in 1..iterations
+ temp_tree = bottom_up_tree(i, depth)
+ check += item_check(temp_tree)
+
+ temp_tree = bottom_up_tree(-i, depth)
+ check += item_check(temp_tree)
+ end
+
+ puts "#{iterations * 2}\t trees of depth #{depth}\t check: #{check}"
+end
+
+puts "long lived tree of depth #{max_depth}\t check: #{item_check(long_lived_tree)}"
+
+undef puts
+alias puts puts_orig
diff --git a/benchmark/bm_so_concatenate.rb b/benchmark/bm_so_concatenate.rb
new file mode 100644
index 0000000000..873214de7c
--- /dev/null
+++ b/benchmark/bm_so_concatenate.rb
@@ -0,0 +1,18 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: strcat-ruby.code,v 1.4 2004/11/13 07:43:28 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# based on code from Aristarkh A Zagorodnikov and Dat Nguyen
+
+STUFF = "hello\n"
+i = 0
+while i<10
+ i += 1
+ hello = ''
+ 4_000_000.times do |e|
+ hello << STUFF
+ end
+end
+# puts hello.length
+
+
diff --git a/benchmark/bm_so_count_words.rb b/benchmark/bm_so_count_words.rb
new file mode 100644
index 0000000000..65f6337a4a
--- /dev/null
+++ b/benchmark/bm_so_count_words.rb
@@ -0,0 +1,19 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: wc-ruby.code,v 1.4 2004/11/13 07:43:32 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# with help from Paul Brannan
+
+input = open(File.join(File.dirname($0), 'wc.input'), 'rb')
+
+nl = nw = nc = 0
+while true
+ tmp = input.read(4096) or break
+ data = tmp << (input.gets || "")
+ nc += data.length
+ nl += data.count("\n")
+ ((data.strip! || data).tr!("\n", " ") || data).squeeze!
+ nw += data.count(" ") + 1
+end
+# STDERR.puts "#{nl} #{nw} #{nc}"
+
diff --git a/benchmark/bm_so_exception.rb b/benchmark/bm_so_exception.rb
new file mode 100644
index 0000000000..deb003a594
--- /dev/null
+++ b/benchmark/bm_so_exception.rb
@@ -0,0 +1,61 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: except-ruby.code,v 1.4 2004/11/13 07:41:33 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+
+$HI = 0
+$LO = 0
+NUM = 250000 # Integer(ARGV[0] || 1)
+
+
+class Lo_Exception < Exception
+ def initialize(num)
+ @value = num
+ end
+end
+
+class Hi_Exception < Exception
+ def initialize(num)
+ @value = num
+ end
+end
+
+def some_function(num)
+ begin
+ hi_function(num)
+ rescue
+ print "We shouldn't get here, exception is: #{$!.type}\n"
+ end
+end
+
+def hi_function(num)
+ begin
+ lo_function(num)
+ rescue Hi_Exception
+ $HI = $HI + 1
+ end
+end
+
+def lo_function(num)
+ begin
+ blowup(num)
+ rescue Lo_Exception
+ $LO = $LO + 1
+ end
+end
+
+def blowup(num)
+ if num % 2 == 0
+ raise Lo_Exception.new(num)
+ else
+ raise Hi_Exception.new(num)
+ end
+end
+
+
+i = 1
+max = NUM+1
+while i < max
+ i += 1
+ some_function(i+1)
+end
diff --git a/benchmark/bm_so_fannkuch.rb b/benchmark/bm_so_fannkuch.rb
new file mode 100644
index 0000000000..bac5ecd44c
--- /dev/null
+++ b/benchmark/bm_so_fannkuch.rb
@@ -0,0 +1,45 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org/
+# Contributed by Sokolov Yura
+# Modified by Ryan Williams
+
+def fannkuch(n)
+ maxFlips, m, r, check = 0, n-1, n, 0
+ count = (1..n).to_a
+ perm = (1..n).to_a
+
+ while true
+ if check < 30
+ puts "#{perm}"
+ check += 1
+ end
+
+ while r != 1
+ count[r-1] = r
+ r -= 1
+ end
+
+ if perm[0] != 1 and perm[m] != n
+ perml = perm.clone #.dup
+ flips = 0
+ while (k = perml.first ) != 1
+ perml = perml.slice!(0, k).reverse + perml
+ flips += 1
+ end
+ maxFlips = flips if flips > maxFlips
+ end
+ while true
+ if r==n then return maxFlips end
+ perm.insert r,perm.shift
+ break if (count[r] -= 1) > 0
+ r += 1
+ end
+ end
+end
+
+def puts *args
+end
+
+N = 9 # (ARGV[0] || 1).to_i
+puts "Pfannkuchen(#{N}) = #{fannkuch(N)}"
+
diff --git a/benchmark/bm_so_fasta.rb b/benchmark/bm_so_fasta.rb
new file mode 100644
index 0000000000..3f759ba7ae
--- /dev/null
+++ b/benchmark/bm_so_fasta.rb
@@ -0,0 +1,81 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org/
+# Contributed by Sokolov Yura
+
+$last = 42.0
+def gen_random (max,im=139968,ia=3877,ic=29573)
+ (max * ($last = ($last * ia + ic) % im)) / im
+end
+
+alu =
+ "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"+
+ "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"+
+ "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"+
+ "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"+
+ "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"+
+ "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"+
+ "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"
+
+iub = [
+ ["a", 0.27],
+ ["c", 0.12],
+ ["g", 0.12],
+ ["t", 0.27],
+
+ ["B", 0.02],
+ ["D", 0.02],
+ ["H", 0.02],
+ ["K", 0.02],
+ ["M", 0.02],
+ ["N", 0.02],
+ ["R", 0.02],
+ ["S", 0.02],
+ ["V", 0.02],
+ ["W", 0.02],
+ ["Y", 0.02],
+]
+homosapiens = [
+ ["a", 0.3029549426680],
+ ["c", 0.1979883004921],
+ ["g", 0.1975473066391],
+ ["t", 0.3015094502008],
+]
+
+def make_repeat_fasta(id, desc, src, n)
+ puts ">#{id} #{desc}"
+ v = nil
+ width = 60
+ l = src.length
+ s = src * ((n / l) + 1)
+ s.slice!(n, l)
+ puts(s.scan(/.{1,#{width}}/).join("\n"))
+end
+
+def make_random_fasta(id, desc, table, n)
+ puts ">#{id} #{desc}"
+ rand, v = nil,nil
+ width = 60
+ chunk = 1 * width
+ prob = 0.0
+ table.each{|v| v[1]= (prob += v[1])}
+ for i in 1..(n/width)
+ puts((1..width).collect{
+ rand = gen_random(1.0)
+ table.find{|v| v[1]>rand}[0]
+ }.join)
+ end
+ if n%width != 0
+ puts((1..(n%width)).collect{
+ rand = gen_random(1.0)
+ table.find{|v| v[1]>rand}[0]
+ }.join)
+ end
+end
+
+
+n = (ARGV[0] or 250_000).to_i
+
+make_repeat_fasta('ONE', 'Homo sapiens alu', alu, n*2)
+make_random_fasta('TWO', 'IUB ambiguity codes', iub, n*3)
+make_random_fasta('THREE', 'Homo sapiens frequency', homosapiens, n*5)
+
diff --git a/benchmark/bm_so_k_nucleotide.rb b/benchmark/bm_so_k_nucleotide.rb
new file mode 100644
index 0000000000..dadab3e79c
--- /dev/null
+++ b/benchmark/bm_so_k_nucleotide.rb
@@ -0,0 +1,48 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org
+#
+# contributed by jose fco. gonzalez
+# modified by Sokolov Yura
+
+seq = String.new
+
+def frecuency( seq,length )
+ n, table = seq.length - length + 1, Hash.new(0)
+ f, i = nil, nil
+ (0 ... length).each do |f|
+ (f ... n).step(length) do |i|
+ table[seq[i,length]] += 1
+ end
+ end
+ [n,table]
+
+end
+
+def sort_by_freq( seq,length )
+ n,table = frecuency( seq,length )
+ a, b, v = nil, nil, nil
+ table.sort{|a,b| b[1] <=> a[1]}.each do |v|
+ puts "%s %.3f" % [v[0].upcase,((v[1]*100).to_f/n)]
+ end
+ puts
+end
+
+def find_seq( seq,s )
+ n,table = frecuency( seq,s.length )
+ puts "#{table[s].to_s}\t#{s.upcase}"
+end
+
+input = open(File.join(File.dirname($0), 'fasta.output.100000'), 'rb')
+
+line = input.gets while line !~ /^>THREE/
+line = input.gets
+
+while (line !~ /^>/) & line do
+ seq << line.chomp
+ line = input.gets
+end
+
+[1,2].each {|i| sort_by_freq( seq,i ) }
+
+%w(ggt ggta ggtatt ggtattttaatt ggtattttaatttatagt).each{|s| find_seq( seq,s) }
+
diff --git a/benchmark/bm_so_lists.rb b/benchmark/bm_so_lists.rb
new file mode 100644
index 0000000000..e8f4a2a5f7
--- /dev/null
+++ b/benchmark/bm_so_lists.rb
@@ -0,0 +1,47 @@
+#from http://www.bagley.org/~doug/shootout/bench/lists/lists.ruby
+
+NUM = 300
+SIZE = 10000
+
+def test_lists()
+ # create a list of integers (Li1) from 1 to SIZE
+ li1 = (1..SIZE).to_a
+ # copy the list to li2 (not by individual items)
+ li2 = li1.dup
+ # remove each individual item from left side of li2 and
+ # append to right side of li3 (preserving order)
+ li3 = Array.new
+ while (not li2.empty?)
+ li3.push(li2.shift)
+ end
+ # li2 must now be empty
+ # remove each individual item from right side of li3 and
+ # append to right side of li2 (reversing list)
+ while (not li3.empty?)
+ li2.push(li3.pop)
+ end
+ # li3 must now be empty
+ # reverse li1 in place
+ li1.reverse!
+ # check that first item is now SIZE
+ if li1[0] != SIZE then
+ p "not SIZE"
+ 0
+ else
+ # compare li1 and li2 for equality
+ if li1 != li2 then
+ return(0)
+ else
+ # return the length of the list
+ li1.length
+ end
+ end
+end
+
+i = 0
+while i<NUM
+ i += 1
+ result = test_lists()
+end
+
+result
diff --git a/benchmark/bm_so_mandelbrot.rb b/benchmark/bm_so_mandelbrot.rb
new file mode 100644
index 0000000000..76331c64b8
--- /dev/null
+++ b/benchmark/bm_so_mandelbrot.rb
@@ -0,0 +1,57 @@
+# The Computer Language Benchmarks Game
+# http://shootout.alioth.debian.org/
+#
+# contributed by Karl von Laudermann
+# modified by Jeremy Echols
+
+size = 600 # ARGV[0].to_i
+
+puts "P4\n#{size} #{size}"
+
+ITER = 49 # Iterations - 1 for easy for..in looping
+LIMIT_SQUARED = 4.0 # Presquared limit
+
+byte_acc = 0
+bit_num = 0
+
+count_size = size - 1 # Precomputed size for easy for..in looping
+
+# For..in loops are faster than .upto, .downto, .times, etc.
+for y in 0..count_size
+ for x in 0..count_size
+ zr = 0.0
+ zi = 0.0
+ cr = (2.0*x/size)-1.5
+ ci = (2.0*y/size)-1.0
+ escape = false
+
+ # To make use of the for..in code, we use a dummy variable,
+ # like one would in C
+ for dummy in 0..ITER
+ tr = zr*zr - zi*zi + cr
+ ti = 2*zr*zi + ci
+ zr, zi = tr, ti
+
+ if (zr*zr+zi*zi) > LIMIT_SQUARED
+ escape = true
+ break
+ end
+ end
+
+ byte_acc = (byte_acc << 1) | (escape ? 0b0 : 0b1)
+ bit_num += 1
+
+ # Code is very similar for these cases, but using separate blocks
+ # ensures we skip the shifting when it's unnecessary, which is most cases.
+ if (bit_num == 8)
+ print byte_acc.chr
+ byte_acc = 0
+ bit_num = 0
+ elsif (x == count_size)
+ byte_acc <<= (8 - bit_num)
+ print byte_acc.chr
+ byte_acc = 0
+ bit_num = 0
+ end
+ end
+end
diff --git a/benchmark/bm_so_matrix.rb b/benchmark/bm_so_matrix.rb
new file mode 100644
index 0000000000..e2c5c8e559
--- /dev/null
+++ b/benchmark/bm_so_matrix.rb
@@ -0,0 +1,48 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: matrix-ruby.code,v 1.4 2004/11/13 07:42:14 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+
+n = 60 #Integer(ARGV.shift || 1)
+
+size = 40
+
+def mkmatrix(rows, cols)
+ count = 1
+ mx = Array.new(rows)
+ (0 .. (rows - 1)).each do |bi|
+ row = Array.new(cols, 0)
+ (0 .. (cols - 1)).each do |j|
+ row[j] = count
+ count += 1
+ end
+ mx[bi] = row
+ end
+ mx
+end
+
+def mmult(rows, cols, m1, m2)
+ m3 = Array.new(rows)
+ (0 .. (rows - 1)).each do |bi|
+ row = Array.new(cols, 0)
+ (0 .. (cols - 1)).each do |j|
+ val = 0
+ (0 .. (cols - 1)).each do |k|
+ val += m1.at(bi).at(k) * m2.at(k).at(j)
+ end
+ row[j] = val
+ end
+ m3[bi] = row
+ end
+ m3
+end
+
+m1 = mkmatrix(size, size)
+m2 = mkmatrix(size, size)
+mm = Array.new
+n.times do
+ mm = mmult(size, size, m1, m2)
+end
+# puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}"
+
+
diff --git a/benchmark/bm_so_meteor_contest.rb b/benchmark/bm_so_meteor_contest.rb
new file mode 100644
index 0000000000..99cf6a91cc
--- /dev/null
+++ b/benchmark/bm_so_meteor_contest.rb
@@ -0,0 +1,564 @@
+#!/usr/bin/env ruby
+#
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org
+# contributed by Kevin Barnes (Ruby novice)
+
+# PROGRAM: the main body is at the bottom.
+# 1) read about the problem here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/
+# 2) see how I represent a board as a bitmask by reading the blank_board comments
+# 3) read as your mental paths take you
+
+def print *args
+end
+
+# class to represent all information about a particular rotation of a particular piece
+class Rotation
+ # an array (by location) containing a bit mask for how the piece maps at the given location.
+ # if the rotation is invalid at that location the mask will contain false
+ attr_reader :start_masks
+
+ # maps a direction to a relative location. these differ depending on whether it is an even or
+ # odd row being mapped from
+ @@rotation_even_adder = { :west => -1, :east => 1, :nw => -7, :ne => -6, :sw => 5, :se => 6 }
+ @@rotation_odd_adder = { :west => -1, :east => 1, :nw => -6, :ne => -5, :sw => 6, :se => 7 }
+
+ def initialize( directions )
+ @even_offsets, @odd_offsets = normalize_offsets( get_values( directions ))
+
+ @even_mask = mask_for_offsets( @even_offsets)
+ @odd_mask = mask_for_offsets( @odd_offsets)
+
+ @start_masks = Array.new(60)
+
+ # create the rotational masks by placing the base mask at the location and seeing if
+ # 1) it overlaps the boundries and 2) it produces a prunable board. if either of these
+ # is true the piece cannot be placed
+ 0.upto(59) do | offset |
+ mask = is_even(offset) ? (@even_mask << offset) : (@odd_mask << offset)
+ if (blank_board & mask == 0 && !prunable(blank_board | mask, 0, true)) then
+ imask = compute_required( mask, offset)
+ @start_masks[offset] = [ mask, imask, imask | mask ]
+ else
+ @start_masks[offset] = false
+ end
+ end
+ end
+
+ def compute_required( mask, offset )
+ board = blank_board
+ 0.upto(offset) { | i | board |= 1 << i }
+ board |= mask
+ return 0 if (!prunable(board | mask, offset))
+ board = flood_fill(board,58)
+ count = 0
+ imask = 0
+ 0.upto(59) do | i |
+ if (board[i] == 0) then
+ imask |= (1 << i)
+ count += 1
+ end
+ end
+ (count > 0 && count < 5) ? imask : 0
+ end
+
+ def flood_fill( board, location)
+ return board if (board[location] == 1)
+ board |= 1 << location
+ row, col = location.divmod(6)
+ board = flood_fill( board, location - 1) if (col > 0)
+ board = flood_fill( board, location + 1) if (col < 4)
+ if (row % 2 == 0) then
+ board = flood_fill( board, location - 7) if (col > 0 && row > 0)
+ board = flood_fill( board, location - 6) if (row > 0)
+ board = flood_fill( board, location + 6) if (row < 9)
+ board = flood_fill( board, location + 5) if (col > 0 && row < 9)
+ else
+ board = flood_fill( board, location - 5) if (col < 4 && row > 0)
+ board = flood_fill( board, location - 6) if (row > 0)
+ board = flood_fill( board, location + 6) if (row < 9)
+ board = flood_fill( board, location + 7) if (col < 4 && row < 9)
+ end
+ board
+ end
+
+ # given a location, produces a list of relative locations covered by the piece at this rotation
+ def offsets( location)
+ if is_even( location) then
+ @even_offsets.collect { | value | value + location }
+ else
+ @odd_offsets.collect { | value | value + location }
+ end
+ end
+
+ # returns a set of offsets relative to the top-left most piece of the rotation (by even or odd rows)
+ # this is hard to explain. imagine we have this partial board:
+ # 0 0 0 0 0 x [positions 0-5]
+ # 0 0 1 1 0 x [positions 6-11]
+ # 0 0 1 0 0 x [positions 12-17]
+ # 0 1 0 0 0 x [positions 18-23]
+ # 0 1 0 0 0 x [positions 24-29]
+ # 0 0 0 0 0 x [positions 30-35]
+ # ...
+ # The top-left of the piece is at position 8, the
+ # board would be passed as a set of positions (values array) containing [8,9,14,19,25] not necessarily in that
+ # sorted order. Since that array starts on an odd row, the offsets for an odd row are: [0,1,6,11,17] obtained
+ # by subtracting 8 from everything. Now imagine the piece shifted up and to the right so it's on an even row:
+ # 0 0 0 1 1 x [positions 0-5]
+ # 0 0 1 0 0 x [positions 6-11]
+ # 0 0 1 0 0 x [positions 12-17]
+ # 0 1 0 0 0 x [positions 18-23]
+ # 0 0 0 0 0 x [positions 24-29]
+ # 0 0 0 0 0 x [positions 30-35]
+ # ...
+ # Now the positions are [3,4,8,14,19] which after subtracting the lowest value (3) gives [0,1,5,11,16] thus, the
+ # offsets for this particular piece are (in even, odd order) [0,1,5,11,16],[0,1,6,11,17] which is what
+ # this function would return
+ def normalize_offsets( values)
+ min = values.min
+ even_min = is_even(min)
+ other_min = even_min ? min + 6 : min + 7
+ other_values = values.collect do | value |
+ if is_even(value) then
+ value + 6 - other_min
+ else
+ value + 7 - other_min
+ end
+ end
+ values.collect! { | value | value - min }
+
+ if even_min then
+ [values, other_values]
+ else
+ [other_values, values]
+ end
+ end
+
+ # produce a bitmask representation of an array of offset locations
+ def mask_for_offsets( offsets )
+ mask = 0
+ offsets.each { | value | mask = mask + ( 1 << value ) }
+ mask
+ end
+
+ # finds a "safe" position that a position as described by a list of directions can be placed
+ # without falling off any edge of the board. the values returned a location to place the first piece
+ # at so it will fit after making the described moves
+ def start_adjust( directions )
+ south = east = 0;
+ directions.each do | direction |
+ east += 1 if ( direction == :sw || direction == :nw || direction == :west )
+ south += 1 if ( direction == :nw || direction == :ne )
+ end
+ south * 6 + east
+ end
+
+ # given a set of directions places the piece (as defined by a set of directions) on the board at
+ # a location that will not take it off the edge
+ def get_values ( directions )
+ start = start_adjust(directions)
+ values = [ start ]
+ directions.each do | direction |
+ if (start % 12 >= 6) then
+ start += @@rotation_odd_adder[direction]
+ else
+ start += @@rotation_even_adder[direction]
+ end
+ values += [ start ]
+ end
+
+ # some moves take you back to an existing location, we'll strip duplicates
+ values.uniq
+ end
+end
+
+# describes a piece and caches information about its rotations to as to be efficient for iteration
+# ATTRIBUTES:
+# rotations -- all the rotations of the piece
+# type -- a numeic "name" of the piece
+# masks -- an array by location of all legal rotational masks (a n inner array) for that location
+# placed -- the mask that this piece was last placed at (not a location, but the actual mask used)
+class Piece
+ attr_reader :rotations, :type, :masks
+ attr_accessor :placed
+
+ # transform hashes that change one direction into another when you either flip or rotate a set of directions
+ @@flip_converter = { :west => :west, :east => :east, :nw => :sw, :ne => :se, :sw => :nw, :se => :ne }
+ @@rotate_converter = { :west => :nw, :east => :se, :nw => :ne, :ne => :east, :sw => :west, :se => :sw }
+
+ def initialize( directions, type )
+ @type = type
+ @rotations = Array.new();
+ @map = {}
+
+ generate_rotations( directions )
+ directions.collect! { | value | @@flip_converter[value] }
+ generate_rotations( directions )
+
+ # creates the masks AND a map that returns [location, rotation] for any given mask
+ # this is used when a board is found and we want to draw it, otherwise the map is unused
+ @masks = Array.new();
+ 0.upto(59) do | i |
+ even = true
+ @masks[i] = @rotations.collect do | rotation |
+ mask = rotation.start_masks[i]
+ @map[mask[0]] = [ i, rotation ] if (mask)
+ mask || nil
+ end
+ @masks[i].compact!
+ end
+ end
+
+ # rotates a set of directions through all six angles and adds a Rotation to the list for each one
+ def generate_rotations( directions )
+ 6.times do
+ rotations.push( Rotation.new(directions))
+ directions.collect! { | value | @@rotate_converter[value] }
+ end
+ end
+
+ # given a board string, adds this piece to the board at whatever location/rotation
+ # important: the outbound board string is 5 wide, the normal location notation is six wide (padded)
+ def fill_string( board_string)
+ location, rotation = @map[@placed]
+ rotation.offsets(location).each do | offset |
+ row, col = offset.divmod(6)
+ board_string[ row*5 + col, 1 ] = @type.to_s
+ end
+ end
+end
+
+# a blank bit board having this form:
+#
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 0 0 0 0 0 1
+# 1 1 1 1 1 1
+#
+# where left lest significant bit is the top left and the most significant is the lower right
+# the actual board only consists of the 0 places, the 1 places are blockers to keep things from running
+# off the edges or bottom
+def blank_board
+ 0b111111100000100000100000100000100000100000100000100000100000100000
+end
+
+def full_board
+ 0b111111111111111111111111111111111111111111111111111111111111111111
+end
+
+# determines if a location (bit position) is in an even row
+def is_even( location)
+ (location % 12) < 6
+end
+
+# support function that create three utility maps:
+# $converter -- for each row an array that maps a five bit row (via array mapping)
+# to the a a five bit representation of the bits below it
+# $bit_count -- maps a five bit row (via array mapping) to the number of 1s in the row
+# @@new_regions -- maps a five bit row (via array mapping) to an array of "region" arrays
+# a region array has three values the first is a mask of bits in the region,
+# the second is the count of those bits and the third is identical to the first
+# examples:
+# 0b10010 => [ 0b01100, 2, 0b01100 ], [ 0b00001, 1, 0b00001]
+# 0b01010 => [ 0b10000, 1, 0b10000 ], [ 0b00100, 1, 0b00100 ], [ 0b00001, 1, 0b00001]
+# 0b10001 => [ 0b01110, 3, 0b01110 ]
+def create_collector_support
+ odd_map = [0b11, 0b110, 0b1100, 0b11000, 0b10000]
+ even_map = [0b1, 0b11, 0b110, 0b1100, 0b11000]
+
+ all_odds = Array.new(0b100000)
+ all_evens = Array.new(0b100000)
+ bit_counts = Array.new(0b100000)
+ new_regions = Array.new(0b100000)
+ 0.upto(0b11111) do | i |
+ bit_count = odd = even = 0
+ 0.upto(4) do | bit |
+ if (i[bit] == 1) then
+ bit_count += 1
+ odd |= odd_map[bit]
+ even |= even_map[bit]
+ end
+ end
+ all_odds[i] = odd
+ all_evens[i] = even
+ bit_counts[i] = bit_count
+ new_regions[i] = create_regions( i)
+ end
+
+ $converter = []
+ 10.times { | row | $converter.push((row % 2 == 0) ? all_evens : all_odds) }
+ $bit_counts = bit_counts
+ $regions = new_regions.collect { | set | set.collect { | value | [ value, bit_counts[value], value] } }
+end
+
+# determines if a board is punable, meaning that there is no possibility that it
+# can be filled up with pieces. A board is prunable if there is a grouping of unfilled spaces
+# that are not a multiple of five. The following board is an example of a prunable board:
+# 0 0 1 0 0
+# 0 1 0 0 0
+# 1 1 0 0 0
+# 0 1 0 0 0
+# 0 0 0 0 0
+# ...
+#
+# This board is prunable because the top left corner is only 3 bits in area, no piece will ever fit it
+# parameters:
+# board -- an initial bit board (6 bit padded rows, see blank_board for format)
+# location -- starting location, everything above and to the left is already full
+# slotting -- set to true only when testing initial pieces, when filling normally
+# additional assumptions are possible
+#
+# Algorithm:
+# The algorithm starts at the top row (as determined by location) and iterates a row at a time
+# maintainng counts of active open areas (kept in the collector array) each collector contains
+# three values at the start of an iteration:
+# 0: mask of bits that would be adjacent to the collector in this row
+# 1: the number of bits collected so far
+# 2: a scratch space starting as zero, but used during the computation to represent
+# the empty bits in the new row that are adjacent (position 0)
+# The exact procedure is described in-code
+def prunable( board, location, slotting = false)
+ collectors = []
+ # loop accross the rows
+ (location / 6).to_i.upto(9) do | row_on |
+ # obtain a set of regions representing the bits of the curent row.
+ regions = $regions[(board >> (row_on * 6)) & 0b11111]
+ converter = $converter[row_on]
+
+ # track the number of collectors at the start of the cycle so that
+ # we don't compute against newly created collectors, only existing collectors
+ initial_collector_count = collectors.length
+
+ # loop against the regions. For each region of the row
+ # we will see if it connects to one or more existing collectors.
+ # if it connects to 1 collector, the bits from the region are added to the
+ # bits of the collector and the mask is placed in collector[2]
+ # If the region overlaps more than one collector then all the collectors
+ # it overlaps with are merged into the first one (the others are set to nil in the array)
+ # if NO collectors are found then the region is copied as a new collector
+ regions.each do | region |
+ collector_found = nil
+ region_mask = region[2]
+ initial_collector_count.times do | collector_num |
+ collector = collectors[collector_num]
+ if (collector) then
+ collector_mask = collector[0]
+ if (collector_mask & region_mask != 0) then
+ if (collector_found) then
+ collector_found[0] |= collector_mask
+ collector_found[1] += collector[1]
+ collector_found[2] |= collector[2]
+ collectors[collector_num] = nil
+ else
+ collector_found = collector
+ collector[1] += region[1]
+ collector[2] |= region_mask
+ end
+ end
+ end
+ end
+ if (collector_found == nil) then
+ collectors.push(Array.new(region))
+ end
+ end
+
+ # check the existing collectors, if any collector overlapped no bits in the region its [2] value will
+ # be zero. The size of any such reaason is tested if it is not a muliple of five true is returned since
+ # the board is prunable. if it is a multiple of five it is removed.
+ # Collector that are still active have a new adjacent value [0] set based n the matched bits
+ # and have [2] cleared out for the next cycle.
+ collectors.length.times do | collector_num |
+ collector = collectors[collector_num]
+ if (collector) then
+ if (collector[2] == 0) then
+ return true if (collector[1] % 5 != 0)
+ collectors[collector_num] = nil
+ else
+ # if a collector matches all bits in the row then we can return unprunable early for the
+ # follwing reasons:
+ # 1) there can be no more unavailable bits bince we fill from the top left downward
+ # 2) all previous regions have been closed or joined so only this region can fail
+ # 3) this region must be good since there can never be only 1 region that is nuot
+ # a multiple of five
+ # this rule only applies when filling normally, so we ignore the rule if we are "slotting"
+ # in pieces to see what configurations work for them (the only other time this algorithm is used).
+ return false if (collector[2] == 0b11111 && !slotting)
+ collector[0] = converter[collector[2]]
+ collector[2] = 0
+ end
+ end
+ end
+
+ # get rid of all the empty converters for the next round
+ collectors.compact!
+ end
+ return false if (collectors.length <= 1) # 1 collector or less and the region is fine
+ collectors.any? { | collector | (collector[1] % 5) != 0 } # more than 1 and we test them all for bad size
+end
+
+# creates a region given a row mask. see prunable for what a "region" is
+def create_regions( value )
+ regions = []
+ cur_region = 0
+ 5.times do | bit |
+ if (value[bit] == 0) then
+ cur_region |= 1 << bit
+ else
+ if (cur_region != 0 ) then
+ regions.push( cur_region)
+ cur_region = 0;
+ end
+ end
+ end
+ regions.push(cur_region) if (cur_region != 0)
+ regions
+end
+
+# find up to the counted number of solutions (or all solutions) and prints the final result
+def find_all
+ find_top( 1)
+ find_top( 0)
+ print_results
+end
+
+# show the board
+def print_results
+ print "#{@boards_found} solutions found\n\n"
+ print_full_board( @min_board)
+ print "\n"
+ print_full_board( @max_board)
+ print "\n"
+end
+
+# finds solutions. This special version of the main function is only used for the top level
+# the reason for it is basically to force a particular ordering on how the rotations are tested for
+# the first piece. It is called twice, first looking for placements of the odd rotations and then
+# looking for placements of the even locations.
+#
+# WHY?
+# Since any found solution has an inverse we want to maximize finding solutions that are not already found
+# as an inverse. The inverse will ALWAYS be 3 one of the piece configurations that is exactly 3 rotations away
+# (an odd number). Checking even vs odd then produces a higher probability of finding more pieces earlier
+# in the cycle. We still need to keep checking all the permutations, but our probability of finding one will
+# diminsh over time. Since we are TOLD how many to search for this lets us exit before checking all pieces
+# this bennifit is very great when seeking small numbers of solutions and is 0 when looking for more than the
+# maximum number
+def find_top( rotation_skip)
+ board = blank_board
+ (@pieces.length-1).times do
+ piece = @pieces.shift
+ piece.masks[0].each do | mask, imask, cmask |
+ if ((rotation_skip += 1) % 2 == 0) then
+ piece.placed = mask
+ find( 1, 1, board | mask)
+ end
+ end
+ @pieces.push(piece)
+ end
+ piece = @pieces.shift
+ @pieces.push(piece)
+end
+
+# the normail find routine, iterates through the available pieces, checks all rotations at the current location
+# and adds any boards found. depth is acheived via recursion. the overall approach is described
+# here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/
+# parameters:
+# start_location -- where to start looking for place for the next piece at
+# placed -- number of pieces placed
+# board -- current state of the board
+#
+# see in-code comments
+def find( start_location, placed, board)
+ # find the next location to place a piece by looking for an empty bit
+ while board[start_location] == 1
+ start_location += 1
+ end
+
+ @pieces.length.times do
+ piece = @pieces.shift
+ piece.masks[start_location].each do | mask, imask, cmask |
+ if ( board & cmask == imask) then
+ piece.placed = mask
+ if (placed == 9) then
+ add_board
+ else
+ find( start_location + 1, placed + 1, board | mask)
+ end
+ end
+ end
+ @pieces.push(piece)
+ end
+end
+
+# print the board
+def print_full_board( board_string)
+ 10.times do | row |
+ print " " if (row % 2 == 1)
+ 5.times do | col |
+ print "#{board_string[row*5 + col,1]} "
+ end
+ print "\n"
+ end
+end
+
+# when a board is found we "draw it" into a string and then flip that string, adding both to
+# the list (hash) of solutions if they are unique.
+def add_board
+ board_string = "99999999999999999999999999999999999999999999999999"
+ @all_pieces.each { | piece | piece.fill_string( board_string ) }
+ save( board_string)
+ save( board_string.reverse)
+end
+
+# adds a board string to the list (if new) and updates the current best/worst board
+def save( board_string)
+ if (@all_boards[board_string] == nil) then
+ @min_board = board_string if (board_string < @min_board)
+ @max_board = board_string if (board_string > @max_board)
+ @all_boards.store(board_string,true)
+ @boards_found += 1
+
+ # the exit motif is a time saver. Ideally the function should return, but those tests
+ # take noticable time (performance).
+ if (@boards_found == @stop_count) then
+ print_results
+ exit(0)
+ end
+ end
+end
+
+
+##
+## MAIN BODY :)
+##
+create_collector_support
+@pieces = [
+ Piece.new( [ :nw, :ne, :east, :east ], 2),
+ Piece.new( [ :ne, :se, :east, :ne ], 7),
+ Piece.new( [ :ne, :east, :ne, :nw ], 1),
+ Piece.new( [ :east, :sw, :sw, :se ], 6),
+ Piece.new( [ :east, :ne, :se, :ne ], 5),
+ Piece.new( [ :east, :east, :east, :se ], 0),
+ Piece.new( [ :ne, :nw, :se, :east, :se ], 4),
+ Piece.new( [ :se, :se, :se, :west ], 9),
+ Piece.new( [ :se, :se, :east, :se ], 8),
+ Piece.new( [ :east, :east, :sw, :se ], 3)
+ ];
+
+@all_pieces = Array.new( @pieces)
+
+@min_board = "99999999999999999999999999999999999999999999999999"
+@max_board = "00000000000000000000000000000000000000000000000000"
+@stop_count = ARGV[0].to_i || 2089
+@all_boards = {}
+@boards_found = 0
+
+find_all ######## DO IT!!!
+
diff --git a/benchmark/bm_so_nbody.rb b/benchmark/bm_so_nbody.rb
new file mode 100644
index 0000000000..d6c5bb9e61
--- /dev/null
+++ b/benchmark/bm_so_nbody.rb
@@ -0,0 +1,148 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org
+#
+# Optimized for Ruby by Jesse Millikan
+# From version ported by Michael Neumann from the C gcc version,
+# which was written by Christoph Bauer.
+
+SOLAR_MASS = 4 * Math::PI**2
+DAYS_PER_YEAR = 365.24
+
+def _puts *args
+end
+
+class Planet
+ attr_accessor :x, :y, :z, :vx, :vy, :vz, :mass
+
+ def initialize(x, y, z, vx, vy, vz, mass)
+ @x, @y, @z = x, y, z
+ @vx, @vy, @vz = vx * DAYS_PER_YEAR, vy * DAYS_PER_YEAR, vz * DAYS_PER_YEAR
+ @mass = mass * SOLAR_MASS
+ end
+
+ def move_from_i(bodies, nbodies, dt, i)
+ while i < nbodies
+ b2 = bodies[i]
+ dx = @x - b2.x
+ dy = @y - b2.y
+ dz = @z - b2.z
+
+ distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
+ mag = dt / (distance * distance * distance)
+ b_mass_mag, b2_mass_mag = @mass * mag, b2.mass * mag
+
+ @vx -= dx * b2_mass_mag
+ @vy -= dy * b2_mass_mag
+ @vz -= dz * b2_mass_mag
+ b2.vx += dx * b_mass_mag
+ b2.vy += dy * b_mass_mag
+ b2.vz += dz * b_mass_mag
+ i += 1
+ end
+
+ @x += dt * @vx
+ @y += dt * @vy
+ @z += dt * @vz
+ end
+end
+
+def energy(bodies)
+ e = 0.0
+ nbodies = bodies.size
+
+ for i in 0 ... nbodies
+ b = bodies[i]
+ e += 0.5 * b.mass * (b.vx * b.vx + b.vy * b.vy + b.vz * b.vz)
+ for j in (i + 1) ... nbodies
+ b2 = bodies[j]
+ dx = b.x - b2.x
+ dy = b.y - b2.y
+ dz = b.z - b2.z
+ distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
+ e -= (b.mass * b2.mass) / distance
+ end
+ end
+ e
+end
+
+def offset_momentum(bodies)
+ px, py, pz = 0.0, 0.0, 0.0
+
+ for b in bodies
+ m = b.mass
+ px += b.vx * m
+ py += b.vy * m
+ pz += b.vz * m
+ end
+
+ b = bodies[0]
+ b.vx = - px / SOLAR_MASS
+ b.vy = - py / SOLAR_MASS
+ b.vz = - pz / SOLAR_MASS
+end
+
+BODIES = [
+ # sun
+ Planet.new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0),
+
+ # jupiter
+ Planet.new(
+ 4.84143144246472090e+00,
+ -1.16032004402742839e+00,
+ -1.03622044471123109e-01,
+ 1.66007664274403694e-03,
+ 7.69901118419740425e-03,
+ -6.90460016972063023e-05,
+ 9.54791938424326609e-04),
+
+ # saturn
+ Planet.new(
+ 8.34336671824457987e+00,
+ 4.12479856412430479e+00,
+ -4.03523417114321381e-01,
+ -2.76742510726862411e-03,
+ 4.99852801234917238e-03,
+ 2.30417297573763929e-05,
+ 2.85885980666130812e-04),
+
+ # uranus
+ Planet.new(
+ 1.28943695621391310e+01,
+ -1.51111514016986312e+01,
+ -2.23307578892655734e-01,
+ 2.96460137564761618e-03,
+ 2.37847173959480950e-03,
+ -2.96589568540237556e-05,
+ 4.36624404335156298e-05),
+
+ # neptune
+ Planet.new(
+ 1.53796971148509165e+01,
+ -2.59193146099879641e+01,
+ 1.79258772950371181e-01,
+ 2.68067772490389322e-03,
+ 1.62824170038242295e-03,
+ -9.51592254519715870e-05,
+ 5.15138902046611451e-05)
+]
+
+init = 200_000 # ARGV[0]
+n = Integer(init)
+
+offset_momentum(BODIES)
+
+puts "%.9f" % energy(BODIES)
+
+nbodies = BODIES.size
+dt = 0.01
+
+n.times do
+ i = 0
+ while i < nbodies
+ b = BODIES[i]
+ b.move_from_i(BODIES, nbodies, dt, i + 1)
+ i += 1
+ end
+end
+
+puts "%.9f" % energy(BODIES)
diff --git a/benchmark/bm_so_nested_loop.rb b/benchmark/bm_so_nested_loop.rb
new file mode 100644
index 0000000000..a0513f8c47
--- /dev/null
+++ b/benchmark/bm_so_nested_loop.rb
@@ -0,0 +1,24 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: nestedloop-ruby.code,v 1.4 2004/11/13 07:42:22 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# from Avi Bryant
+
+n = 16 # Integer(ARGV.shift || 1)
+x = 0
+n.times do
+ n.times do
+ n.times do
+ n.times do
+ n.times do
+ n.times do
+ x += 1
+ end
+ end
+ end
+ end
+ end
+end
+# puts x
+
+
diff --git a/benchmark/bm_so_nsieve.rb b/benchmark/bm_so_nsieve.rb
new file mode 100644
index 0000000000..a65cc78233
--- /dev/null
+++ b/benchmark/bm_so_nsieve.rb
@@ -0,0 +1,35 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org/
+#
+# contributed by Glenn Parker, March 2005
+# modified by Evan Phoenix, Sept 2006
+
+def sieve(m)
+ flags = Flags.dup[0,m]
+ count = 0
+ pmax = m - 1
+ p = 2
+ while p <= pmax
+ unless flags[p].zero?
+ count += 1
+ mult = p
+ while mult <= pmax
+ flags[mult] = 0
+ mult += p
+ end
+ end
+ p += 1
+ end
+ count
+end
+
+n = 9 # (ARGV[0] || 2).to_i
+Flags = ("\x1" * ( 2 ** n * 10_000)).unpack("c*")
+
+n.downto(n-2) do |exponent|
+ break if exponent < 0
+ m = (1 << exponent) * 10_000
+ # m = (2 ** exponent) * 10_000
+ count = sieve(m)
+ printf "Primes up to %8d %8d\n", m, count
+end
diff --git a/benchmark/bm_so_nsieve_bits.rb b/benchmark/bm_so_nsieve_bits.rb
new file mode 100644
index 0000000000..6f958ee44e
--- /dev/null
+++ b/benchmark/bm_so_nsieve_bits.rb
@@ -0,0 +1,43 @@
+#!/usr/bin/ruby
+#coding: us-ascii
+#
+# The Great Computer Language Shootout
+# http://shootout.alioth.debian.org/
+#
+# nsieve-bits in Ruby
+# Contributed by Glenn Parker, March 2005
+
+CharExponent = 3
+BitsPerChar = 1 << CharExponent
+LowMask = BitsPerChar - 1
+
+def sieve(m)
+ items = "\xFF" * ((m / BitsPerChar) + 1)
+ masks = ""
+ BitsPerChar.times do |b|
+ masks << (1 << b).chr
+ end
+
+ count = 0
+ pmax = m - 1
+ 2.step(pmax, 1) do |p|
+ if items[p >> CharExponent][p & LowMask] == 1
+ count += 1
+ p.step(pmax, p) do |mult|
+ a = mult >> CharExponent
+ b = mult & LowMask
+ items[a] -= masks[b] if items[a][b] != 0
+ end
+ end
+ end
+ count
+end
+
+n = 9 # (ARGV[0] || 2).to_i
+n.step(n - 2, -1) do |exponent|
+ break if exponent < 0
+ m = 2 ** exponent * 10_000
+ count = sieve(m)
+ printf "Primes up to %8d %8d\n", m, count
+end
+
diff --git a/benchmark/bm_so_object.rb b/benchmark/bm_so_object.rb
new file mode 100644
index 0000000000..e8607c7199
--- /dev/null
+++ b/benchmark/bm_so_object.rb
@@ -0,0 +1,56 @@
+#!/usr/bin/ruby
+# -*- mode: ruby -*-
+# $Id: objinst-ruby.code,v 1.4 2004/11/13 07:42:25 bfulgham Exp $
+# http://www.bagley.org/~doug/shootout/
+# with help from Aristarkh Zagorodnikov
+
+class Toggle
+ def initialize(start_state)
+ @bool = start_state
+ end
+
+ def value
+ @bool
+ end
+
+ def activate
+ @bool = !@bool
+ self
+ end
+end
+
+class NthToggle < Toggle
+ def initialize(start_state, max_counter)
+ super start_state
+ @count_max = max_counter
+ @counter = 0
+ end
+
+ def activate
+ @counter += 1
+ if @counter >= @count_max
+ @bool = !@bool
+ @counter = 0
+ end
+ self
+ end
+end
+
+n = 1500000 # (ARGV.shift || 1).to_i
+
+toggle = Toggle.new 1
+5.times do
+ toggle.activate.value ? 'true' : 'false'
+end
+n.times do
+ toggle = Toggle.new 1
+end
+
+ntoggle = NthToggle.new 1, 3
+8.times do
+ ntoggle.activate.value ? 'true' : 'false'
+end
+n.times do
+ ntoggle = NthToggle.new 1, 3
+end
+
diff --git a/benchmark/bm_so_partial_sums.rb b/benchmark/bm_so_partial_sums.rb
new file mode 100644
index 0000000000..630b45cb8d
--- /dev/null
+++ b/benchmark/bm_so_partial_sums.rb
@@ -0,0 +1,31 @@
+n = 2_500_000 # (ARGV.shift || 1).to_i
+
+alt = 1.0 ; s0 = s1 = s2 = s3 = s4 = s5 = s6 = s7 = s8 = 0.0
+
+1.upto(n) do |d|
+ d = d.to_f ; d2 = d * d ; d3 = d2 * d ; ds = Math.sin(d) ; dc = Math.cos(d)
+
+ s0 += (2.0 / 3.0) ** (d - 1.0)
+ s1 += 1.0 / Math.sqrt(d)
+ s2 += 1.0 / (d * (d + 1.0))
+ s3 += 1.0 / (d3 * ds * ds)
+ s4 += 1.0 / (d3 * dc * dc)
+ s5 += 1.0 / d
+ s6 += 1.0 / d2
+ s7 += alt / d
+ s8 += alt / (2.0 * d - 1.0)
+
+ alt = -alt
+end
+
+if false
+ printf("%.9f\t(2/3)^k\n", s0)
+ printf("%.9f\tk^-0.5\n", s1)
+ printf("%.9f\t1/k(k+1)\n", s2)
+ printf("%.9f\tFlint Hills\n", s3)
+ printf("%.9f\tCookson Hills\n", s4)
+ printf("%.9f\tHarmonic\n", s5)
+ printf("%.9f\tRiemann Zeta\n", s6)
+ printf("%.9f\tAlternating Harmonic\n", s7)
+ printf("%.9f\tGregory\n", s8)
+end
diff --git a/benchmark/bm_so_pidigits.rb b/benchmark/bm_so_pidigits.rb
new file mode 100644
index 0000000000..c7d6fbfb4d
--- /dev/null
+++ b/benchmark/bm_so_pidigits.rb
@@ -0,0 +1,92 @@
+# The Great Computer Language Shootout
+# http://shootout.alioth.debian.org/
+#
+# contributed by Gabriele Renzi
+
+class PiDigitSpigot
+
+ def initialize()
+ @z = Transformation.new 1,0,0,1
+ @x = Transformation.new 0,0,0,0
+ @inverse = Transformation.new 0,0,0,0
+ end
+
+ def next!
+ @y = @z.extract(3)
+ if safe? @y
+ @z = produce(@y)
+ @y
+ else
+ @z = consume @x.next!()
+ next!()
+ end
+ end
+
+ def safe?(digit)
+ digit == @z.extract(4)
+ end
+
+ def produce(i)
+ @inverse.qrst(10,-10*i,0,1).compose(@z)
+ end
+
+ def consume(a)
+ @z.compose(a)
+ end
+end
+
+
+class Transformation
+ attr_reader :q, :r, :s, :t
+ def initialize (q, r, s, t)
+ @q,@r,@s,@t,@k = q,r,s,t,0
+ end
+
+ def next!()
+ @q = @k = @k + 1
+ @r = 4 * @k + 2
+ @s = 0
+ @t = 2 * @k + 1
+ self
+ end
+
+ def extract(j)
+ (@q * j + @r) / (@s * j + @t)
+ end
+
+ def compose(a)
+ self.class.new( @q * a.q,
+ @q * a.r + r * a.t,
+ @s * a.q + t * a.s,
+ @s * a.r + t * a.t
+ )
+ end
+
+ def qrst *args
+ initialize *args
+ self
+ end
+
+
+end
+
+
+WIDTH = 10
+n = 2_500 # Integer(ARGV[0])
+j = 0
+
+digits = PiDigitSpigot.new
+
+while n > 0
+ if n >= WIDTH
+ WIDTH.times {print digits.next!}
+ j += WIDTH
+ else
+ n.times {print digits.next!}
+ (WIDTH-n).times {print " "}
+ j += n
+ end
+ puts "\t:"+j.to_s
+ n -= WIDTH
+end
+
diff --git a/benchmark/bm_so_random.rb b/benchmark/bm_so_random.rb
new file mode 100644
index 0000000000..a66b9e8e63
--- /dev/null
+++ b/benchmark/bm_so_random.rb
@@ -0,0 +1,20 @@
+# from http://www.bagley.org/~doug/shootout/bench/random/random.ruby
+
+IM = 139968.0
+IA = 3877.0
+IC = 29573.0
+
+$last = 42.0
+
+def gen_random(max)
+ (max * ($last = ($last * IA + IC) % IM)) / IM
+end
+
+N = 3_000_000
+
+i = 0
+while i<N
+ i +=1
+ gen_random(100.0)
+end
+# "%.9f" % gen_random(100.0)
diff --git a/benchmark/bm_so_reverse_complement.rb b/benchmark/bm_so_reverse_complement.rb
new file mode 100644
index 0000000000..82ea666994
--- /dev/null
+++ b/benchmark/bm_so_reverse_complement.rb
@@ -0,0 +1,30 @@
+#!/usr/bin/ruby
+# The Great Computer Language Shootout
+# http://shootout.alioth.debian.org/
+#
+# Contributed by Peter Bjarke Olsen
+# Modified by Doug King
+
+seq=Array.new
+
+def revcomp(seq)
+ seq.reverse!.tr!('wsatugcyrkmbdhvnATUGCYRKMBDHVN','WSTAACGRYMKVHDBNTAACGRYMKVHDBN')
+ stringlen=seq.length
+ 0.step(stringlen-1,60) {|x| print seq.slice(x,60) , "\n"}
+end
+
+input = open(File.join(File.dirname($0), 'fasta.output.2500000'), 'rb')
+
+while input.gets
+ if $_ =~ />/
+ if seq.length != 0
+ revcomp(seq.join)
+ seq=Array.new
+ end
+ puts $_
+ else
+ $_.sub(/\n/,'')
+ seq.push $_
+ end
+end
+revcomp(seq.join)
diff --git a/benchmark/bm_so_sieve.rb b/benchmark/bm_so_sieve.rb
new file mode 100644
index 0000000000..43dc302648
--- /dev/null
+++ b/benchmark/bm_so_sieve.rb
@@ -0,0 +1,24 @@
+# from http://www.bagley.org/~doug/shootout/bench/sieve/sieve.ruby
+num = 500
+count = i = j = 0
+flags0 = Array.new(8192,1)
+k = 0
+while k < num
+ k += 1
+ count = 0
+ flags = flags0.dup
+ i = 2
+ while i<8192
+ i += 1
+ if flags[i]
+ # remove all multiples of prime: i
+ j = i*i
+ while j < 8192
+ j += i
+ flags[j] = nil
+ end
+ count += 1
+ end
+ end
+end
+count
diff --git a/benchmark/bm_so_spectralnorm.rb b/benchmark/bm_so_spectralnorm.rb
new file mode 100644
index 0000000000..6b97206689
--- /dev/null
+++ b/benchmark/bm_so_spectralnorm.rb
@@ -0,0 +1,50 @@
+# The Computer Language Shootout
+# http://shootout.alioth.debian.org/
+# Contributed by Sokolov Yura
+
+def eval_A(i,j)
+ return 1.0/((i+j)*(i+j+1)/2+i+1)
+end
+
+def eval_A_times_u(u)
+ v, i = nil, nil
+ (0..u.length-1).collect { |i|
+ v = 0
+ for j in 0..u.length-1
+ v += eval_A(i,j)*u[j]
+ end
+ v
+ }
+end
+
+def eval_At_times_u(u)
+ v, i = nil, nil
+ (0..u.length-1).collect{|i|
+ v = 0
+ for j in 0..u.length-1
+ v += eval_A(j,i)*u[j]
+ end
+ v
+ }
+end
+
+def eval_AtA_times_u(u)
+ return eval_At_times_u(eval_A_times_u(u))
+end
+
+n = 500 # ARGV[0].to_i
+
+u=[1]*n
+for i in 1..10
+ v=eval_AtA_times_u(u)
+ u=eval_AtA_times_u(v)
+end
+vBv=0
+vv=0
+for i in 0..n-1
+ vBv += u[i]*v[i]
+ vv += v[i]*v[i]
+end
+
+str = "%0.9f" % (Math.sqrt(vBv/vv)), "\n"
+# print str
diff --git a/benchmark/bm_vm1_attr_ivar.rb b/benchmark/bm_vm1_attr_ivar.rb
new file mode 100644
index 0000000000..16906f3605
--- /dev/null
+++ b/benchmark/bm_vm1_attr_ivar.rb
@@ -0,0 +1,14 @@
+class C
+ attr_reader :a, :b
+ def initialize
+ @a = nil
+ @b = nil
+ end
+end
+obj = C.new
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ j = obj.a
+ k = obj.b
+end
diff --git a/benchmark/bm_vm1_attr_ivar_set.rb b/benchmark/bm_vm1_attr_ivar_set.rb
new file mode 100644
index 0000000000..7e7a6b48c0
--- /dev/null
+++ b/benchmark/bm_vm1_attr_ivar_set.rb
@@ -0,0 +1,14 @@
+class C
+ attr_accessor :a, :b
+ def initialize
+ @a = nil
+ @b = nil
+ end
+end
+obj = C.new
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ obj.a = 1
+ obj.b = 2
+end
diff --git a/benchmark/bm_vm1_block.rb b/benchmark/bm_vm1_block.rb
new file mode 100644
index 0000000000..a9f56b15ea
--- /dev/null
+++ b/benchmark/bm_vm1_block.rb
@@ -0,0 +1,10 @@
+def m
+ yield
+end
+
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ m{
+ }
+end
diff --git a/benchmark/bm_vm1_const.rb b/benchmark/bm_vm1_const.rb
new file mode 100644
index 0000000000..ac59ebccf1
--- /dev/null
+++ b/benchmark/bm_vm1_const.rb
@@ -0,0 +1,8 @@
+Const = 1
+
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ j = Const
+ k = Const
+end
diff --git a/benchmark/bm_vm1_ensure.rb b/benchmark/bm_vm1_ensure.rb
new file mode 100644
index 0000000000..a1596145f2
--- /dev/null
+++ b/benchmark/bm_vm1_ensure.rb
@@ -0,0 +1,11 @@
+i = 0
+while i<30_000_000 # benchmark loop 1
+ i += 1
+ begin
+ begin
+ ensure
+ end
+ ensure
+ end
+end
+
diff --git a/benchmark/bm_vm1_float_simple.rb b/benchmark/bm_vm1_float_simple.rb
new file mode 100644
index 0000000000..d4581439ff
--- /dev/null
+++ b/benchmark/bm_vm1_float_simple.rb
@@ -0,0 +1,7 @@
+i = 0.0; f = 0.0
+while i<30_000_000
+ i += 1
+ f += 0.1; f -= 0.1
+ f += 0.1; f -= 0.1
+ f += 0.1; f -= 0.1
+end
diff --git a/benchmark/bm_vm1_gc_short_lived.rb b/benchmark/bm_vm1_gc_short_lived.rb
new file mode 100644
index 0000000000..e78bca5668
--- /dev/null
+++ b/benchmark/bm_vm1_gc_short_lived.rb
@@ -0,0 +1,10 @@
+i = 0
+while i<30_000_000 # while loop 1
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+ i+=1
+end
diff --git a/benchmark/bm_vm1_gc_short_with_complex_long.rb b/benchmark/bm_vm1_gc_short_with_complex_long.rb
new file mode 100644
index 0000000000..b66052dee0
--- /dev/null
+++ b/benchmark/bm_vm1_gc_short_with_complex_long.rb
@@ -0,0 +1,27 @@
+def nested_hash h, n
+ if n == 0
+ ''
+ else
+ 10.times{
+ h[Object.new] = nested_hash(h, n-1)
+ }
+ end
+end
+
+long_lived = Hash.new
+nested_hash long_lived, 6
+
+GC.start
+GC.start
+
+i = 0
+while i<30_000_000 # while loop 1
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+ i+=1
+end
+
diff --git a/benchmark/bm_vm1_gc_short_with_long.rb b/benchmark/bm_vm1_gc_short_with_long.rb
new file mode 100644
index 0000000000..298dbc845b
--- /dev/null
+++ b/benchmark/bm_vm1_gc_short_with_long.rb
@@ -0,0 +1,13 @@
+long_lived = Array.new(1_000_000){|i| "#{i}"}
+GC.start
+GC.start
+i = 0
+while i<30_000_000 # while loop 1
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+ i+=1
+end
diff --git a/benchmark/bm_vm1_gc_short_with_symbol.rb b/benchmark/bm_vm1_gc_short_with_symbol.rb
new file mode 100644
index 0000000000..6b15c1b7bf
--- /dev/null
+++ b/benchmark/bm_vm1_gc_short_with_symbol.rb
@@ -0,0 +1,15 @@
+# make many symbols
+50_000.times{|i| sym = "sym#{i}".to_sym}
+GC.start
+GC.start
+
+i = 0
+while i<30_000_000 # while loop 1
+ a = '' # short-lived String
+ b = ''
+ c = ''
+ d = ''
+ e = ''
+ f = ''
+ i+=1
+end
diff --git a/benchmark/bm_vm1_gc_wb_ary.rb b/benchmark/bm_vm1_gc_wb_ary.rb
new file mode 100644
index 0000000000..ecfab51dbf
--- /dev/null
+++ b/benchmark/bm_vm1_gc_wb_ary.rb
@@ -0,0 +1,10 @@
+long_lived = []
+GC.start
+GC.start
+
+i = 0
+short_lived = ''
+while i<30_000_000 # while loop 1
+ long_lived[0] = short_lived # write barrier
+ i+=1
+end
diff --git a/benchmark/bm_vm1_gc_wb_obj.rb b/benchmark/bm_vm1_gc_wb_obj.rb
new file mode 100644
index 0000000000..017eff4f94
--- /dev/null
+++ b/benchmark/bm_vm1_gc_wb_obj.rb
@@ -0,0 +1,13 @@
+class C
+ attr_accessor :foo
+end
+long_lived = C.new
+GC.start
+GC.start
+
+i = 0
+short_lived = ''
+while i<30_000_000 # while loop 1
+ long_lived.foo = short_lived # write barrier
+ i+=1
+end
diff --git a/benchmark/bm_vm1_ivar.rb b/benchmark/bm_vm1_ivar.rb
new file mode 100644
index 0000000000..68a73cf92f
--- /dev/null
+++ b/benchmark/bm_vm1_ivar.rb
@@ -0,0 +1,8 @@
+@a = 1
+
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ j = @a
+ k = @a
+end
diff --git a/benchmark/bm_vm1_ivar_set.rb b/benchmark/bm_vm1_ivar_set.rb
new file mode 100644
index 0000000000..bd81b06c34
--- /dev/null
+++ b/benchmark/bm_vm1_ivar_set.rb
@@ -0,0 +1,6 @@
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ @a = 1
+ @b = 2
+end
diff --git a/benchmark/bm_vm1_length.rb b/benchmark/bm_vm1_length.rb
new file mode 100644
index 0000000000..353de3ab0e
--- /dev/null
+++ b/benchmark/bm_vm1_length.rb
@@ -0,0 +1,9 @@
+a = 'abc'
+b = [1, 2, 3]
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ a.length
+ b.length
+end
+
diff --git a/benchmark/bm_vm1_lvar_init.rb b/benchmark/bm_vm1_lvar_init.rb
new file mode 100644
index 0000000000..36f2068811
--- /dev/null
+++ b/benchmark/bm_vm1_lvar_init.rb
@@ -0,0 +1,18 @@
+def m v
+ unless v
+ # unreachable code
+ v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = v9 = v10 =
+ v11 = v12 = v13 = v14 = v15 = v16 = v17 = v18 = v19 = v20 =
+ v21 = v22 = v23 = v24 = v25 = v26 = v27 = v28 = v29 = v30 =
+ v31 = v32 = v33 = v34 = v35 = v36 = v37 = v38 = v39 = v40 =
+ v41 = v42 = v43 = v44 = v45 = v46 = v47 = v48 = v49 = v50 = 1
+ end
+end
+
+i = 0
+
+while i<30_000_000 # while loop 1
+ i += 1
+ m i
+end
+
diff --git a/benchmark/bm_vm1_lvar_set.rb b/benchmark/bm_vm1_lvar_set.rb
new file mode 100644
index 0000000000..222e864134
--- /dev/null
+++ b/benchmark/bm_vm1_lvar_set.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ a = b = c = d = e = f = g = h = j = k = l = m = n = o = p = q = r = 1
+end
diff --git a/benchmark/bm_vm1_neq.rb b/benchmark/bm_vm1_neq.rb
new file mode 100644
index 0000000000..bbb4ae07a4
--- /dev/null
+++ b/benchmark/bm_vm1_neq.rb
@@ -0,0 +1,8 @@
+i = 0
+obj1 = Object.new
+obj2 = Object.new
+
+while i<30_000_000 # while loop 1
+ i += 1
+ obj1 != obj2
+end
diff --git a/benchmark/bm_vm1_not.rb b/benchmark/bm_vm1_not.rb
new file mode 100644
index 0000000000..b09ecdcc21
--- /dev/null
+++ b/benchmark/bm_vm1_not.rb
@@ -0,0 +1,7 @@
+i = 0
+obj = Object.new
+
+while i<30_000_000 # while loop 1
+ i += 1
+ !obj
+end
diff --git a/benchmark/bm_vm1_rescue.rb b/benchmark/bm_vm1_rescue.rb
new file mode 100644
index 0000000000..b0d3e2bdfa
--- /dev/null
+++ b/benchmark/bm_vm1_rescue.rb
@@ -0,0 +1,7 @@
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ begin
+ rescue
+ end
+end
diff --git a/benchmark/bm_vm1_simplereturn.rb b/benchmark/bm_vm1_simplereturn.rb
new file mode 100644
index 0000000000..63f9f21675
--- /dev/null
+++ b/benchmark/bm_vm1_simplereturn.rb
@@ -0,0 +1,9 @@
+def m
+ return 1
+end
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ m
+end
+
diff --git a/benchmark/bm_vm1_swap.rb b/benchmark/bm_vm1_swap.rb
new file mode 100644
index 0000000000..918f8b2112
--- /dev/null
+++ b/benchmark/bm_vm1_swap.rb
@@ -0,0 +1,8 @@
+a = 1
+b = 2
+i = 0
+while i<30_000_000 # while loop 1
+ i += 1
+ a, b = b, a
+end
+
diff --git a/benchmark/bm_vm1_yield.rb b/benchmark/bm_vm1_yield.rb
new file mode 100644
index 0000000000..775597cea6
--- /dev/null
+++ b/benchmark/bm_vm1_yield.rb
@@ -0,0 +1,10 @@
+def m
+ i = 0
+ while i<30_000_000 # while loop 1
+ i += 1
+ yield
+ end
+end
+
+m{}
+
diff --git a/benchmark/bm_vm2_array.rb b/benchmark/bm_vm2_array.rb
new file mode 100644
index 0000000000..df9037c83c
--- /dev/null
+++ b/benchmark/bm_vm2_array.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ a = [1,2,3,4,5,6,7,8,9,10]
+end
diff --git a/benchmark/bm_vm2_bigarray.rb b/benchmark/bm_vm2_bigarray.rb
new file mode 100644
index 0000000000..b02509d6a2
--- /dev/null
+++ b/benchmark/bm_vm2_bigarray.rb
@@ -0,0 +1,106 @@
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ a = [
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ 1,2,3,4,5,6,7,8,9,10,
+ ]
+end
diff --git a/benchmark/bm_vm2_bighash.rb b/benchmark/bm_vm2_bighash.rb
new file mode 100644
index 0000000000..5e3f437bb8
--- /dev/null
+++ b/benchmark/bm_vm2_bighash.rb
@@ -0,0 +1,5 @@
+i = 0
+while i<60_000 # benchmark loop 2
+ i += 1
+ a = {0=>0, 1=>1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9, 10=>10, 11=>11, 12=>12, 13=>13, 14=>14, 15=>15, 16=>16, 17=>17, 18=>18, 19=>19, 20=>20, 21=>21, 22=>22, 23=>23, 24=>24, 25=>25, 26=>26, 27=>27, 28=>28, 29=>29, 30=>30, 31=>31, 32=>32, 33=>33, 34=>34, 35=>35, 36=>36, 37=>37, 38=>38, 39=>39, 40=>40, 41=>41, 42=>42, 43=>43, 44=>44, 45=>45, 46=>46, 47=>47, 48=>48, 49=>49, 50=>50, 51=>51, 52=>52, 53=>53, 54=>54, 55=>55, 56=>56, 57=>57, 58=>58, 59=>59, 60=>60, 61=>61, 62=>62, 63=>63, 64=>64, 65=>65, 66=>66, 67=>67, 68=>68, 69=>69, 70=>70, 71=>71, 72=>72, 73=>73, 74=>74, 75=>75, 76=>76, 77=>77, 78=>78, 79=>79, 80=>80, 81=>81, 82=>82, 83=>83, 84=>84, 85=>85, 86=>86, 87=>87, 88=>88, 89=>89, 90=>90, 91=>91, 92=>92, 93=>93, 94=>94, 95=>95, 96=>96, 97=>97, 98=>98, 99=>99, 100=>100, 101=>101, 102=>102, 103=>103, 104=>104, 105=>105, 106=>106, 107=>107, 108=>108, 109=>109, 110=>110, 111=>111, 112=>112, 113=>113, 114=>114, 115=>115, 116=>116, 117=>117, 118=>118, 119=>119, 120=>120, 121=>121, 122=>122, 123=>123, 124=>124, 125=>125, 126=>126, 127=>127, 128=>128, 129=>129, 130=>130, 131=>131, 132=>132, 133=>133, 134=>134, 135=>135, 136=>136, 137=>137, 138=>138, 139=>139, 140=>140, 141=>141, 142=>142, 143=>143, 144=>144, 145=>145, 146=>146, 147=>147, 148=>148, 149=>149, 150=>150, 151=>151, 152=>152, 153=>153, 154=>154, 155=>155, 156=>156, 157=>157, 158=>158, 159=>159, 160=>160, 161=>161, 162=>162, 163=>163, 164=>164, 165=>165, 166=>166, 167=>167, 168=>168, 169=>169, 170=>170, 171=>171, 172=>172, 173=>173, 174=>174, 175=>175, 176=>176, 177=>177, 178=>178, 179=>179, 180=>180, 181=>181, 182=>182, 183=>183, 184=>184, 185=>185, 186=>186, 187=>187, 188=>188, 189=>189, 190=>190, 191=>191, 192=>192, 193=>193, 194=>194, 195=>195, 196=>196, 197=>197, 198=>198, 199=>199, 200=>200, 201=>201, 202=>202, 203=>203, 204=>204, 205=>205, 206=>206, 207=>207, 208=>208, 209=>209, 210=>210, 211=>211, 212=>212, 213=>213, 214=>214, 215=>215, 216=>216, 217=>217, 218=>218, 219=>219, 220=>220, 221=>221, 222=>222, 223=>223, 224=>224, 225=>225, 226=>226, 227=>227, 228=>228, 229=>229, 230=>230, 231=>231, 232=>232, 233=>233, 234=>234, 235=>235, 236=>236, 237=>237, 238=>238, 239=>239, 240=>240, 241=>241, 242=>242, 243=>243, 244=>244, 245=>245, 246=>246, 247=>247, 248=>248, 249=>249, 250=>250, 251=>251, 252=>252, 253=>253, 254=>254, 255=>255, 256=>256, 257=>257, 258=>258, 259=>259, 260=>260, 261=>261, 262=>262, 263=>263, 264=>264, 265=>265, 266=>266, 267=>267, 268=>268, 269=>269, 270=>270, 271=>271, 272=>272, 273=>273, 274=>274, 275=>275, 276=>276, 277=>277, 278=>278, 279=>279, 280=>280, 281=>281, 282=>282, 283=>283, 284=>284, 285=>285, 286=>286, 287=>287, 288=>288, 289=>289, 290=>290, 291=>291, 292=>292, 293=>293, 294=>294, 295=>295, 296=>296, 297=>297, 298=>298, 299=>299, 300=>300, 301=>301, 302=>302, 303=>303, 304=>304, 305=>305, 306=>306, 307=>307, 308=>308, 309=>309, 310=>310, 311=>311, 312=>312, 313=>313, 314=>314, 315=>315, 316=>316, 317=>317, 318=>318, 319=>319, 320=>320, 321=>321, 322=>322, 323=>323, 324=>324, 325=>325, 326=>326, 327=>327, 328=>328, 329=>329, 330=>330, 331=>331, 332=>332, 333=>333, 334=>334, 335=>335, 336=>336, 337=>337, 338=>338, 339=>339, 340=>340, 341=>341, 342=>342, 343=>343, 344=>344, 345=>345, 346=>346, 347=>347, 348=>348, 349=>349, 350=>350, 351=>351, 352=>352, 353=>353, 354=>354, 355=>355, 356=>356, 357=>357, 358=>358, 359=>359, 360=>360, 361=>361, 362=>362, 363=>363, 364=>364, 365=>365, 366=>366, 367=>367, 368=>368, 369=>369, 370=>370, 371=>371, 372=>372, 373=>373, 374=>374, 375=>375, 376=>376, 377=>377, 378=>378, 379=>379, 380=>380, 381=>381, 382=>382, 383=>383, 384=>384, 385=>385, 386=>386, 387=>387, 388=>388, 389=>389, 390=>390, 391=>391, 392=>392, 393=>393, 394=>394, 395=>395, 396=>396, 397=>397, 398=>398, 399=>399, 400=>400, 401=>401, 402=>402, 403=>403, 404=>404, 405=>405, 406=>406, 407=>407, 408=>408, 409=>409, 410=>410, 411=>411, 412=>412, 413=>413, 414=>414, 415=>415, 416=>416, 417=>417, 418=>418, 419=>419, 420=>420, 421=>421, 422=>422, 423=>423, 424=>424, 425=>425, 426=>426, 427=>427, 428=>428, 429=>429, 430=>430, 431=>431, 432=>432, 433=>433, 434=>434, 435=>435, 436=>436, 437=>437, 438=>438, 439=>439, 440=>440, 441=>441, 442=>442, 443=>443, 444=>444, 445=>445, 446=>446, 447=>447, 448=>448, 449=>449, 450=>450, 451=>451, 452=>452, 453=>453, 454=>454, 455=>455, 456=>456, 457=>457, 458=>458, 459=>459, 460=>460, 461=>461, 462=>462, 463=>463, 464=>464, 465=>465, 466=>466, 467=>467, 468=>468, 469=>469, 470=>470, 471=>471, 472=>472, 473=>473, 474=>474, 475=>475, 476=>476, 477=>477, 478=>478, 479=>479, 480=>480, 481=>481, 482=>482, 483=>483, 484=>484, 485=>485, 486=>486, 487=>487, 488=>488, 489=>489, 490=>490, 491=>491, 492=>492, 493=>493, 494=>494, 495=>495, 496=>496, 497=>497, 498=>498, 499=>499, 500=>500,}
+end
diff --git a/benchmark/bm_vm2_case.rb b/benchmark/bm_vm2_case.rb
new file mode 100644
index 0000000000..adc6e4df0a
--- /dev/null
+++ b/benchmark/bm_vm2_case.rb
@@ -0,0 +1,14 @@
+i = 0
+while i<6_000_000 # while loop 2
+ case :foo
+ when :bar
+ raise
+ when :baz
+ raise
+ when :boo
+ raise
+ when :foo
+ i += 1
+ end
+end
+
diff --git a/benchmark/bm_vm2_defined_method.rb b/benchmark/bm_vm2_defined_method.rb
new file mode 100644
index 0000000000..053ed6c912
--- /dev/null
+++ b/benchmark/bm_vm2_defined_method.rb
@@ -0,0 +1,9 @@
+class Object
+ define_method(:m){}
+end
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ m; m; m; m; m; m; m; m;
+end
diff --git a/benchmark/bm_vm2_dstr.rb b/benchmark/bm_vm2_dstr.rb
new file mode 100644
index 0000000000..58c0f7bbc3
--- /dev/null
+++ b/benchmark/bm_vm2_dstr.rb
@@ -0,0 +1,6 @@
+i = 0
+x = y = 'z'
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ str = "foo#{x}bar#{y}baz"
+end
diff --git a/benchmark/bm_vm2_eval.rb b/benchmark/bm_vm2_eval.rb
new file mode 100644
index 0000000000..307cfc28ef
--- /dev/null
+++ b/benchmark/bm_vm2_eval.rb
@@ -0,0 +1,6 @@
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ eval("1")
+end
+
diff --git a/benchmark/bm_vm2_method.rb b/benchmark/bm_vm2_method.rb
new file mode 100644
index 0000000000..a8ccff7138
--- /dev/null
+++ b/benchmark/bm_vm2_method.rb
@@ -0,0 +1,9 @@
+def m
+ nil
+end
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ m; m; m; m; m; m; m; m;
+end
diff --git a/benchmark/bm_vm2_method_missing.rb b/benchmark/bm_vm2_method_missing.rb
new file mode 100644
index 0000000000..2badc73101
--- /dev/null
+++ b/benchmark/bm_vm2_method_missing.rb
@@ -0,0 +1,12 @@
+class C
+ def method_missing mid
+ end
+end
+
+obj = C.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m;
+end
diff --git a/benchmark/bm_vm2_method_with_block.rb b/benchmark/bm_vm2_method_with_block.rb
new file mode 100644
index 0000000000..b4efb4f520
--- /dev/null
+++ b/benchmark/bm_vm2_method_with_block.rb
@@ -0,0 +1,9 @@
+def m
+ nil
+end
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ m{}; m{}; m{}; m{}; m{}; m{}; m{}; m{};
+end
diff --git a/benchmark/bm_vm2_mutex.rb b/benchmark/bm_vm2_mutex.rb
new file mode 100644
index 0000000000..7362f738c5
--- /dev/null
+++ b/benchmark/bm_vm2_mutex.rb
@@ -0,0 +1,9 @@
+require 'thread'
+
+m = Mutex.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ m.synchronize{}
+end
diff --git a/benchmark/bm_vm2_poly_method.rb b/benchmark/bm_vm2_poly_method.rb
new file mode 100644
index 0000000000..c82c0e4bce
--- /dev/null
+++ b/benchmark/bm_vm2_poly_method.rb
@@ -0,0 +1,20 @@
+class C1
+ def m
+ 1
+ end
+end
+class C2
+ def m
+ 2
+ end
+end
+
+o1 = C1.new
+o2 = C2.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ o = (i % 2 == 0) ? o1 : o2
+ o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
+ i += 1
+end
diff --git a/benchmark/bm_vm2_poly_method_ov.rb b/benchmark/bm_vm2_poly_method_ov.rb
new file mode 100644
index 0000000000..aa5fd1dd38
--- /dev/null
+++ b/benchmark/bm_vm2_poly_method_ov.rb
@@ -0,0 +1,20 @@
+class C1
+ def m
+ 1
+ end
+end
+class C2
+ def m
+ 2
+ end
+end
+
+o1 = C1.new
+o2 = C2.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ o = (i % 2 == 0) ? o1 : o2
+# o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
+ i += 1
+end
diff --git a/benchmark/bm_vm2_proc.rb b/benchmark/bm_vm2_proc.rb
new file mode 100644
index 0000000000..65e5217371
--- /dev/null
+++ b/benchmark/bm_vm2_proc.rb
@@ -0,0 +1,14 @@
+def m &b
+ b
+end
+
+pr = m{
+ a = 1
+}
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ pr.call
+end
+
diff --git a/benchmark/bm_vm2_raise1.rb b/benchmark/bm_vm2_raise1.rb
new file mode 100644
index 0000000000..aa5387987f
--- /dev/null
+++ b/benchmark/bm_vm2_raise1.rb
@@ -0,0 +1,18 @@
+def rec n
+ if n > 0
+ rec n-1
+ else
+ raise
+ end
+end
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+
+ begin
+ rec 1
+ rescue
+ # ignore
+ end
+end
diff --git a/benchmark/bm_vm2_raise2.rb b/benchmark/bm_vm2_raise2.rb
new file mode 100644
index 0000000000..1f61c63157
--- /dev/null
+++ b/benchmark/bm_vm2_raise2.rb
@@ -0,0 +1,18 @@
+def rec n
+ if n > 0
+ rec n-1
+ else
+ raise
+ end
+end
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+
+ begin
+ rec 10
+ rescue
+ # ignore
+ end
+end
diff --git a/benchmark/bm_vm2_regexp.rb b/benchmark/bm_vm2_regexp.rb
new file mode 100644
index 0000000000..55f9e957a3
--- /dev/null
+++ b/benchmark/bm_vm2_regexp.rb
@@ -0,0 +1,6 @@
+i = 0
+str = 'xxxhogexxx'
+while i<6_000_000 # benchmark loop 2
+ /hoge/ =~ str
+ i += 1
+end
diff --git a/benchmark/bm_vm2_send.rb b/benchmark/bm_vm2_send.rb
new file mode 100644
index 0000000000..6a3ab6fdab
--- /dev/null
+++ b/benchmark/bm_vm2_send.rb
@@ -0,0 +1,12 @@
+class C
+ def m
+ end
+end
+
+o = C.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ o.__send__ :m
+end
diff --git a/benchmark/bm_vm2_super.rb b/benchmark/bm_vm2_super.rb
new file mode 100644
index 0000000000..afd8579e7b
--- /dev/null
+++ b/benchmark/bm_vm2_super.rb
@@ -0,0 +1,20 @@
+
+class C
+ def m
+ 1
+ end
+end
+
+class CC < C
+ def m
+ super()
+ end
+end
+
+obj = CC.new
+
+i = 0
+while i<6_000_000 # benchmark loop 2
+ obj.m
+ i += 1
+end
diff --git a/benchmark/bm_vm2_unif1.rb b/benchmark/bm_vm2_unif1.rb
new file mode 100644
index 0000000000..1774625942
--- /dev/null
+++ b/benchmark/bm_vm2_unif1.rb
@@ -0,0 +1,8 @@
+i = 0
+def m a, b
+end
+
+while i<6_000_000 # benchmark loop 2
+ i += 1
+ m 100, 200
+end
diff --git a/benchmark/bm_vm2_zsuper.rb b/benchmark/bm_vm2_zsuper.rb
new file mode 100644
index 0000000000..2a43e62217
--- /dev/null
+++ b/benchmark/bm_vm2_zsuper.rb
@@ -0,0 +1,20 @@
+i = 0
+
+class C
+ def m a
+ 1
+ end
+end
+
+class CC < C
+ def m a
+ super
+ end
+end
+
+obj = CC.new
+
+while i<6_000_000 # benchmark loop 2
+ obj.m 10
+ i += 1
+end
diff --git a/benchmark/bm_vm3_backtrace.rb b/benchmark/bm_vm3_backtrace.rb
new file mode 100644
index 0000000000..0fbf73e1ca
--- /dev/null
+++ b/benchmark/bm_vm3_backtrace.rb
@@ -0,0 +1,22 @@
+# get last backtrace
+
+begin
+ caller(0, 0)
+rescue ArgumentError
+ alias caller_orig caller
+ def caller lev, n
+ caller_orig(lev)[0..n]
+ end
+end
+
+def rec n
+ if n < 0
+ 100_000.times{
+ caller(0, 1)
+ }
+ else
+ rec(n-1)
+ end
+end
+
+rec 50
diff --git a/benchmark/bm_vm3_clearmethodcache.rb b/benchmark/bm_vm3_clearmethodcache.rb
new file mode 100644
index 0000000000..9661323cd2
--- /dev/null
+++ b/benchmark/bm_vm3_clearmethodcache.rb
@@ -0,0 +1,8 @@
+i = 0
+while i<200_000
+ i += 1
+
+ Class.new{
+ def m; end
+ }
+end
diff --git a/benchmark/bm_vm3_gc.rb b/benchmark/bm_vm3_gc.rb
new file mode 100755
index 0000000000..7db9829d44
--- /dev/null
+++ b/benchmark/bm_vm3_gc.rb
@@ -0,0 +1,7 @@
+#! /usr/bin/ruby
+5000.times do
+ 100.times do
+ {"xxxx"=>"yyyy"}
+ end
+ GC.start
+end
diff --git a/benchmark/bm_vm_thread_alive_check1.rb b/benchmark/bm_vm_thread_alive_check1.rb
new file mode 100644
index 0000000000..c993accdda
--- /dev/null
+++ b/benchmark/bm_vm_thread_alive_check1.rb
@@ -0,0 +1,6 @@
+5_000.times{
+ t = Thread.new{}
+ while t.alive?
+ Thread.pass
+ end
+}
diff --git a/benchmark/bm_vm_thread_create_join.rb b/benchmark/bm_vm_thread_create_join.rb
new file mode 100644
index 0000000000..393cd45df9
--- /dev/null
+++ b/benchmark/bm_vm_thread_create_join.rb
@@ -0,0 +1,6 @@
+i = 0
+while i<100_000 # benchmark loop 3
+ i += 1
+ Thread.new{
+ }.join
+end
diff --git a/benchmark/bm_vm_thread_mutex1.rb b/benchmark/bm_vm_thread_mutex1.rb
new file mode 100644
index 0000000000..5c9f85dfb7
--- /dev/null
+++ b/benchmark/bm_vm_thread_mutex1.rb
@@ -0,0 +1,21 @@
+# one thread, one mutex (no contention)
+
+require 'thread'
+m = Mutex.new
+r = 0
+max = 2000
+lmax = max * max
+(1..1).map{
+ Thread.new{
+ i = 0
+ while i<lmax
+ i += 1
+ m.synchronize{
+ r += 1
+ }
+ end
+ }
+}.each{|e|
+ e.join
+}
+raise r.to_s if r != max * max
diff --git a/benchmark/bm_vm_thread_mutex2.rb b/benchmark/bm_vm_thread_mutex2.rb
new file mode 100644
index 0000000000..10de59054f
--- /dev/null
+++ b/benchmark/bm_vm_thread_mutex2.rb
@@ -0,0 +1,21 @@
+# two threads, one mutex
+
+require 'thread'
+m = Mutex.new
+r = 0
+max = 2000
+lmax = (max * max)/2
+(1..2).map{
+ Thread.new{
+ i = 0
+ while i<lmax
+ i += 1
+ m.synchronize{
+ r += 1
+ }
+ end
+ }
+}.each{|e|
+ e.join
+}
+raise r.to_s if r != max * max
diff --git a/benchmark/bm_vm_thread_mutex3.rb b/benchmark/bm_vm_thread_mutex3.rb
new file mode 100644
index 0000000000..7f9a44b39d
--- /dev/null
+++ b/benchmark/bm_vm_thread_mutex3.rb
@@ -0,0 +1,20 @@
+# 1000 threads, one mutex
+
+require 'thread'
+m = Mutex.new
+r = 0
+max = 2000
+(1..max).map{
+ Thread.new{
+ i = 0
+ while i<max
+ i += 1
+ m.synchronize{
+ r += 1
+ }
+ end
+ }
+}.each{|e|
+ e.join
+}
+raise r.to_s if r != max * max
diff --git a/benchmark/bm_vm_thread_pass.rb b/benchmark/bm_vm_thread_pass.rb
new file mode 100644
index 0000000000..b5b3c0bc85
--- /dev/null
+++ b/benchmark/bm_vm_thread_pass.rb
@@ -0,0 +1,15 @@
+# Plenty Thtread.pass
+# A performance may depend on GVL implementation.
+
+tmax = (ARGV.shift || 2).to_i
+lmax = 200_000 / tmax
+
+(1..tmax).map{
+ Thread.new{
+ lmax.times{
+ Thread.pass
+ }
+ }
+}.each{|t| t.join}
+
+
diff --git a/benchmark/bm_vm_thread_pass_flood.rb b/benchmark/bm_vm_thread_pass_flood.rb
new file mode 100644
index 0000000000..27157d1a6f
--- /dev/null
+++ b/benchmark/bm_vm_thread_pass_flood.rb
@@ -0,0 +1,8 @@
+1000.times{
+ Thread.new{loop{Thread.pass}}
+}
+
+i = 0
+while i<10000
+ i += 1
+end
diff --git a/benchmark/bm_vm_thread_pipe.rb b/benchmark/bm_vm_thread_pipe.rb
new file mode 100644
index 0000000000..272d231eba
--- /dev/null
+++ b/benchmark/bm_vm_thread_pipe.rb
@@ -0,0 +1,17 @@
+# Mesure small and plenty pipe read/write.
+# A performance may depend on GVL implementation.
+
+lmax = 100_000
+r, w = IO.pipe
+[Thread.new{
+ lmax.times{
+ w.write('a')
+ }
+ p "w:exit"
+}, Thread.new{
+ lmax.times{
+ r.read(1)
+ }
+ p "r:exit"
+}].each{|t| t.join}
+
diff --git a/benchmark/bm_vm_thread_queue.rb b/benchmark/bm_vm_thread_queue.rb
new file mode 100644
index 0000000000..37381ae62b
--- /dev/null
+++ b/benchmark/bm_vm_thread_queue.rb
@@ -0,0 +1,18 @@
+require 'thread'
+
+n = 1_000_000
+q = Queue.new
+consumer = Thread.new{
+ while q.pop
+ # consuming
+ end
+}
+
+producer = Thread.new{
+ n.times{
+ q.push true
+ }
+ q.push nil
+}
+
+consumer.join
diff --git a/benchmark/driver.rb b/benchmark/driver.rb
new file mode 100644
index 0000000000..695dc41aff
--- /dev/null
+++ b/benchmark/driver.rb
@@ -0,0 +1,301 @@
+#
+# Ruby Benchmark driver
+#
+
+first = true
+
+begin
+ require 'optparse'
+rescue LoadError
+ if first
+ first = false
+ $:.unshift File.join(File.dirname(__FILE__), '../lib')
+ retry
+ else
+ raise
+ end
+end
+
+require 'benchmark'
+require 'pp'
+
+class BenchmarkDriver
+ def self.benchmark(opt)
+ driver = self.new(opt[:execs], opt[:dir], opt)
+ begin
+ driver.run
+ ensure
+ driver.show_results
+ end
+ end
+
+ def output *args
+ puts(*args)
+ @output and @output.puts(*args)
+ end
+
+ def message *args
+ output(*args) if @verbose
+ end
+
+ def message_print *args
+ if @verbose
+ print(*args)
+ STDOUT.flush
+ @output and @output.print(*args)
+ end
+ end
+
+ def progress_message *args
+ unless STDOUT.tty?
+ STDERR.print(*args)
+ STDERR.flush
+ end
+ end
+
+ def initialize execs, dir, opt = {}
+ @execs = execs.map{|e|
+ e.strip!
+ next if e.empty?
+
+ if /(.+)::(.+)/ =~ e
+ # ex) ruby-a::/path/to/ruby-a
+ label = $1.strip
+ path = $2
+ version = `#{path} -v`.chomp
+ else
+ path = e
+ version = label = `#{path} -v`.chomp
+ end
+ [path, label, version]
+ }.compact
+
+ @dir = dir
+ @repeat = opt[:repeat] || 1
+ @repeat = 1 if @repeat < 1
+ @pattern = opt[:pattern] || nil
+ @exclude = opt[:exclude] || nil
+ @verbose = opt[:quiet] ? false : (opt[:verbose] || false)
+ @output = opt[:output] ? open(opt[:output], 'w') : nil
+ @loop_wl1 = @loop_wl2 = nil
+ @ruby_arg = opt[:ruby_arg] || nil
+ @opt = opt
+
+ # [[name, [[r-1-1, r-1-2, ...], [r-2-1, r-2-2, ...]]], ...]
+ @results = []
+
+ if @verbose
+ @start_time = Time.now
+ message @start_time
+ @execs.each_with_index{|(path, label, version), i|
+ message "target #{i}: " + (label == version ? "#{label}" : "#{label} (#{version})") + " at \"#{path}\""
+ }
+ end
+ end
+
+ def adjusted_results name, results
+ s = nil
+ results.each_with_index{|e, i|
+ r = e.min
+ case name
+ when /^vm1_/
+ if @loop_wl1
+ r -= @loop_wl1[i]
+ r = 0 if r < 0
+ s = '*'
+ end
+ when /^vm2_/
+ if @loop_wl2
+ r -= @loop_wl2[i]
+ r = 0 if r < 0
+ s = '*'
+ end
+ end
+ yield r
+ }
+ s
+ end
+
+ def show_results
+ output
+
+ if @verbose
+ message '-----------------------------------------------------------'
+ message 'raw data:'
+ message
+ message PP.pp(@results, "", 79)
+ message
+ message "Elapsed time: #{Time.now - @start_time} (sec)"
+ end
+
+ output '-----------------------------------------------------------'
+ output 'benchmark results:'
+
+ if @verbose and @repeat > 1
+ output "minimum results in each #{@repeat} measurements."
+ end
+
+ output "Execution time (sec)"
+ output "name\t#{@execs.map{|(_, v)| v}.join("\t")}"
+ @results.each{|v, result|
+ rets = []
+ s = adjusted_results(v, result){|r|
+ rets << sprintf("%.3f", r)
+ }
+ output "#{v}#{s}\t#{rets.join("\t")}"
+ }
+
+ if @execs.size > 1
+ output
+ output "Speedup ratio: compare with the result of `#{@execs[0][1]}' (greater is better)"
+ output "name\t#{@execs[1..-1].map{|(_, v)| v}.join("\t")}"
+ @results.each{|v, result|
+ rets = []
+ first_value = nil
+ s = adjusted_results(v, result){|r|
+ if first_value
+ if r == 0
+ rets << "Error"
+ else
+ rets << sprintf("%.3f", first_value/r)
+ end
+ else
+ first_value = r
+ end
+ }
+ output "#{v}#{s}\t#{rets.join("\t")}"
+ }
+ end
+
+ if @opt[:output]
+ output
+ output "Log file: #{@opt[:output]}"
+ end
+ end
+
+ def files
+ flag = {}
+ @files = Dir.glob(File.join(@dir, 'bm*.rb')).map{|file|
+ next if @pattern && /#{@pattern}/ !~ File.basename(file)
+ next if @exclude && /#{@exclude}/ =~ File.basename(file)
+ case file
+ when /bm_(vm[12])_/, /bm_loop_(whileloop2?).rb/
+ flag[$1] = true
+ end
+ file
+ }.compact
+
+ if flag['vm1'] && !flag['whileloop']
+ @files << File.join(@dir, 'bm_loop_whileloop.rb')
+ elsif flag['vm2'] && !flag['whileloop2']
+ @files << File.join(@dir, 'bm_loop_whileloop2.rb')
+ end
+
+ @files.sort!
+ progress_message "total: #{@files.size * @repeat} trial(s) (#{@repeat} trial(s) for #{@files.size} benchmark(s))\n"
+ @files
+ end
+
+ def run
+ files.each_with_index{|file, i|
+ @i = i
+ r = measure_file(file)
+
+ if /bm_loop_whileloop.rb/ =~ file
+ @loop_wl1 = r[1].map{|e| e.min}
+ elsif /bm_loop_whileloop2.rb/ =~ file
+ @loop_wl2 = r[1].map{|e| e.min}
+ end
+ }
+ end
+
+ def measure_file file
+ name = File.basename(file, '.rb').sub(/^bm_/, '')
+ prepare_file = File.join(File.dirname(file), "prepare_#{name}.rb")
+ load prepare_file if FileTest.exist?(prepare_file)
+
+ if @verbose
+ output
+ output '-----------------------------------------------------------'
+ output name
+ output
+ output File.read(file)
+ output
+ end
+
+ result = [name]
+ result << @execs.map{|(e, v)|
+ (0...@repeat).map{
+ message_print "#{v}\t"
+ progress_message '.'
+
+ m = measure(e, file)
+ message "#{m}"
+ m
+ }
+ }
+ @results << result
+ result
+ end
+
+ def measure executable, file
+ cmd = "#{executable} #{@ruby_arg} #{file}"
+
+ m = Benchmark.measure{
+ `#{cmd}`
+ }
+
+ if $? != 0
+ output "\`#{cmd}\' exited with abnormal status (#{$?})"
+ 0
+ else
+ m.real
+ end
+ end
+end
+
+if __FILE__ == $0
+ opt = {
+ :execs => [],
+ :dir => File.dirname(__FILE__),
+ :repeat => 1,
+ :output => "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}",
+ }
+
+ parser = OptionParser.new{|o|
+ o.on('-e', '--executables [EXECS]',
+ "Specify benchmark one or more targets (e1::path1; e2::path2; e3::path3;...)"){|e|
+ e.split(/;/).each{|path|
+ opt[:execs] << path
+ }
+ }
+ o.on('-d', '--directory [DIRECTORY]', "Benchmark suites directory"){|d|
+ opt[:dir] = d
+ }
+ o.on('-p', '--pattern [PATTERN]', "Benchmark name pattern"){|p|
+ opt[:pattern] = p
+ }
+ o.on('-x', '--exclude [PATTERN]', "Benchmark exclude pattern"){|e|
+ opt[:exclude] = e
+ }
+ o.on('-r', '--repeat-count [NUM]', "Repeat count"){|n|
+ opt[:repeat] = n.to_i
+ }
+ o.on('-o', '--output-file [FILE]', "Output file"){|f|
+ opt[:output] = f
+ }
+ o.on('--ruby-arg [ARG]', "Optional argument for ruby"){|a|
+ opt[:ruby_arg] = a
+ }
+ o.on('-q', '--quiet', "Run without notify information except result table."){|q|
+ opt[:quiet] = q
+ }
+ o.on('-v', '--verbose'){|v|
+ opt[:verbose] = v
+ }
+ }
+
+ parser.parse!(ARGV)
+ BenchmarkDriver.benchmark(opt)
+end
+
diff --git a/benchmark/gc/aobench.rb b/benchmark/gc/aobench.rb
new file mode 100644
index 0000000000..2eed7abc83
--- /dev/null
+++ b/benchmark/gc/aobench.rb
@@ -0,0 +1 @@
+require_relative '../bm_app_aobench.rb'
diff --git a/benchmark/gc/binary_trees.rb b/benchmark/gc/binary_trees.rb
new file mode 100644
index 0000000000..af8ea722aa
--- /dev/null
+++ b/benchmark/gc/binary_trees.rb
@@ -0,0 +1 @@
+require_relative '../bm_so_binary_trees.rb'
diff --git a/benchmark/gc/gcbench.rb b/benchmark/gc/gcbench.rb
new file mode 100644
index 0000000000..b038b71b54
--- /dev/null
+++ b/benchmark/gc/gcbench.rb
@@ -0,0 +1,56 @@
+require 'benchmark'
+require 'pp'
+require 'optparse'
+
+$list = true
+$gcprof = true
+
+opt = OptionParser.new
+opt.on('-q'){$list = false}
+opt.on('-d'){$gcprof = false}
+opt.parse!(ARGV)
+
+script = File.join(File.dirname(__FILE__), ARGV.shift)
+script += '.rb' unless FileTest.exist?(script)
+raise "#{script} not found" unless FileTest.exist?(script)
+
+puts "Script: #{script}"
+
+if $gcprof
+ GC::Profiler.enable
+end
+
+tms = Benchmark.measure{|x|
+ load script
+}
+
+gc_time = 0
+
+if $gcprof
+ gc_time = GC::Profiler.total_time
+ GC::Profiler.report if $list and RUBY_VERSION >= '2.0.0' # before 1.9.3, report() may run infinite loop
+ GC::Profiler.disable
+end
+
+pp GC.stat
+
+puts "#{RUBY_DESCRIPTION} #{GC::OPTS.inspect}"
+
+desc = "#{RUBY_VERSION}#{RUBY_PATCHLEVEL >= 0 ? "p#{RUBY_PATCHLEVEL}" : "dev"}"
+name = File.basename(script, '.rb')
+
+puts
+puts script
+puts Benchmark::CAPTION
+puts tms
+puts "GC total time (sec): #{gc_time}"
+
+# show High-Water Mark on Linux
+if File.exist?('/proc/self/status') && /VmHWM:\s*(\d+.+)/ =~ File.read('/proc/self/status')
+ puts
+ puts "VmHWM: #{$1.chomp}"
+end
+
+puts
+puts "Summary of #{name} on #{desc}\t#{tms.real}\t#{gc_time}\t#{GC.count}"
+puts " (real time in sec, GC time in sec, GC count)"
diff --git a/benchmark/gc/hash1.rb b/benchmark/gc/hash1.rb
new file mode 100644
index 0000000000..cb030d458d
--- /dev/null
+++ b/benchmark/gc/hash1.rb
@@ -0,0 +1,11 @@
+value = 0.01
+h = {}
+n = 50_000
+
+1.upto(n){|i|
+ h["%020d" % i] = "v-#{i}"
+}
+
+(n * 1_000).times{
+ ''
+}
diff --git a/benchmark/gc/hash2.rb b/benchmark/gc/hash2.rb
new file mode 100644
index 0000000000..e8c943fb21
--- /dev/null
+++ b/benchmark/gc/hash2.rb
@@ -0,0 +1,7 @@
+value = 0.01
+h = {}
+n = 4*(10**6)
+
+1.upto(n){|i|
+ h["%020d" % i] = value * i
+}
diff --git a/benchmark/gc/null.rb b/benchmark/gc/null.rb
new file mode 100644
index 0000000000..c05a79f561
--- /dev/null
+++ b/benchmark/gc/null.rb
@@ -0,0 +1 @@
+# null
diff --git a/benchmark/gc/pentomino.rb b/benchmark/gc/pentomino.rb
new file mode 100644
index 0000000000..94ba74be89
--- /dev/null
+++ b/benchmark/gc/pentomino.rb
@@ -0,0 +1 @@
+require_relative '../bm_app_pentomino.rb'
diff --git a/benchmark/gc/rdoc.rb b/benchmark/gc/rdoc.rb
new file mode 100644
index 0000000000..14c89f5611
--- /dev/null
+++ b/benchmark/gc/rdoc.rb
@@ -0,0 +1,13 @@
+require 'rdoc/rdoc'
+require 'tmpdir'
+
+srcdir = File.expand_path('../..', __dir__)
+
+Dir.mktmpdir('rdocbench-'){|d|
+ dir = File.join(d, 'rdocbench')
+ args = %W(--root #{srcdir} --page-dir #{srcdir}/doc --encoding=UTF-8 --no-force-update --all --ri --debug --quiet #{srcdir})
+ args << '--op' << dir
+
+ r = RDoc::RDoc.new
+ r.document args
+}
diff --git a/benchmark/gc/redblack.rb b/benchmark/gc/redblack.rb
new file mode 100644
index 0000000000..c66290140a
--- /dev/null
+++ b/benchmark/gc/redblack.rb
@@ -0,0 +1,366 @@
+# This benchmark is imported from https://github.com/jruby/rubybench/blob/master/time/bench_red_black.rb
+# License is License is Apache-2
+
+require 'benchmark'
+
+# Algorithm based on "Introduction to Algorithms" by Cormen and others
+class RedBlackTree
+ class Node
+ attr_accessor :color
+ attr_accessor :key
+ attr_accessor :left
+ attr_accessor :right
+ attr_accessor :parent
+
+ RED = :red
+ BLACK = :black
+ COLORS = [RED, BLACK].freeze
+
+ def initialize(key, color = RED)
+ raise ArgumentError, "Bad value for color parameter" unless COLORS.include?(color)
+ @color = color
+ @key = key
+ @left = @right = @parent = NilNode.instance
+ end
+
+ def black?
+ return color == BLACK
+ end
+
+ def red?
+ return color == RED
+ end
+ end
+
+ class NilNode < Node
+ class << self
+ private :new
+
+ # it's not thread safe
+ def instance
+ @instance ||= begin
+ def instance
+ return @instance
+ end
+
+ new
+ end
+ end
+ end
+
+ def initialize
+ self.color = BLACK
+ self.key = 0
+ self.left = nil
+ self.right = nil
+ self.parent = nil
+ end
+
+ def nil?
+ return true
+ end
+ end
+
+ include Enumerable
+
+ attr_accessor :root
+ attr_accessor :size
+
+ def initialize
+ self.root = NilNode.instance
+ self.size = 0
+ end
+
+ def add(key)
+ insert(Node.new(key))
+ end
+
+ def insert(x)
+ insert_helper(x)
+
+ x.color = Node::RED
+ while x != root && x.parent.color == Node::RED
+ if x.parent == x.parent.parent.left
+ y = x.parent.parent.right
+ if !y.nil? && y.color == Node::RED
+ x.parent.color = Node::BLACK
+ y.color = Node::BLACK
+ x.parent.parent.color = Node::RED
+ x = x.parent.parent
+ else
+ if x == x.parent.right
+ x = x.parent
+ left_rotate(x)
+ end
+ x.parent.color = Node::BLACK
+ x.parent.parent.color = Node::RED
+ right_rotate(x.parent.parent)
+ end
+ else
+ y = x.parent.parent.left
+ if !y.nil? && y.color == Node::RED
+ x.parent.color = Node::BLACK
+ y.color = Node::BLACK
+ x.parent.parent.color = Node::RED
+ x = x.parent.parent
+ else
+ if x == x.parent.left
+ x = x.parent
+ right_rotate(x)
+ end
+ x.parent.color = Node::BLACK
+ x.parent.parent.color = Node::RED
+ left_rotate(x.parent.parent)
+ end
+ end
+ end
+ root.color = Node::BLACK
+ end
+
+ alias << insert
+
+ def delete(z)
+ y = (z.left.nil? || z.right.nil?) ? z : successor(z)
+ x = y.left.nil? ? y.right : y.left
+ x.parent = y.parent
+
+ if y.parent.nil?
+ self.root = x
+ else
+ if y == y.parent.left
+ y.parent.left = x
+ else
+ y.parent.right = x
+ end
+ end
+
+ z.key = y.key if y != z
+
+ if y.color == Node::BLACK
+ delete_fixup(x)
+ end
+
+ self.size -= 1
+ return y
+ end
+
+ def minimum(x = root)
+ while !x.left.nil?
+ x = x.left
+ end
+ return x
+ end
+
+ def maximum(x = root)
+ while !x.right.nil?
+ x = x.right
+ end
+ return x
+ end
+
+ def successor(x)
+ if !x.right.nil?
+ return minimum(x.right)
+ end
+ y = x.parent
+ while !y.nil? && x == y.right
+ x = y
+ y = y.parent
+ end
+ return y
+ end
+
+ def predecessor(x)
+ if !x.left.nil?
+ return maximum(x.left)
+ end
+ y = x.parent
+ while !y.nil? && x == y.left
+ x = y
+ y = y.parent
+ end
+ return y
+ end
+
+ def inorder_walk(x = root)
+ x = self.minimum
+ while !x.nil?
+ yield x.key
+ x = successor(x)
+ end
+ end
+
+ alias each inorder_walk
+
+ def reverse_inorder_walk(x = root)
+ x = self.maximum
+ while !x.nil?
+ yield x.key
+ x = predecessor(x)
+ end
+ end
+
+ alias reverse_each reverse_inorder_walk
+
+ def search(key, x = root)
+ while !x.nil? && x.key != key
+ key < x.key ? x = x.left : x = x.right
+ end
+ return x
+ end
+
+ def empty?
+ return self.root.nil?
+ end
+
+ def black_height(x = root)
+ height = 0
+ while !x.nil?
+ x = x.left
+ height +=1 if x.nil? || x.black?
+ end
+ return height
+ end
+
+private
+
+ def left_rotate(x)
+ raise "x.right is nil!" if x.right.nil?
+ y = x.right
+ x.right = y.left
+ y.left.parent = x if !y.left.nil?
+ y.parent = x.parent
+ if x.parent.nil?
+ self.root = y
+ else
+ if x == x.parent.left
+ x.parent.left = y
+ else
+ x.parent.right = y
+ end
+ end
+ y.left = x
+ x.parent = y
+ end
+
+ def right_rotate(x)
+ raise "x.left is nil!" if x.left.nil?
+ y = x.left
+ x.left = y.right
+ y.right.parent = x if !y.right.nil?
+ y.parent = x.parent
+ if x.parent.nil?
+ self.root = y
+ else
+ if x == x.parent.left
+ x.parent.left = y
+ else
+ x.parent.right = y
+ end
+ end
+ y.right = x
+ x.parent = y
+ end
+
+ def insert_helper(z)
+ y = NilNode.instance
+ x = root
+ while !x.nil?
+ y = x
+ z.key < x.key ? x = x.left : x = x.right
+ end
+ z.parent = y
+ if y.nil?
+ self.root = z
+ else
+ z.key < y.key ? y.left = z : y.right = z
+ end
+ self.size += 1
+ end
+
+ def delete_fixup(x)
+ while x != root && x.color == Node::BLACK
+ if x == x.parent.left
+ w = x.parent.right
+ if w.color == Node::RED
+ w.color = Node::BLACK
+ x.parent.color = Node::RED
+ left_rotate(x.parent)
+ w = x.parent.right
+ end
+ if w.left.color == Node::BLACK && w.right.color == Node::BLACK
+ w.color = Node::RED
+ x = x.parent
+ else
+ if w.right.color == Node::BLACK
+ w.left.color = Node::BLACK
+ w.color = Node::RED
+ right_rotate(w)
+ w = x.parent.right
+ end
+ w.color = x.parent.color
+ x.parent.color = Node::BLACK
+ w.right.color = Node::BLACK
+ left_rotate(x.parent)
+ x = root
+ end
+ else
+ w = x.parent.left
+ if w.color == Node::RED
+ w.color = Node::BLACK
+ x.parent.color = Node::RED
+ right_rotate(x.parent)
+ w = x.parent.left
+ end
+ if w.right.color == Node::BLACK && w.left.color == Node::BLACK
+ w.color = Node::RED
+ x = x.parent
+ else
+ if w.left.color == Node::BLACK
+ w.right.color = Node::BLACK
+ w.color = Node::RED
+ left_rotate(w)
+ w = x.parent.left
+ end
+ w.color = x.parent.color
+ x.parent.color = Node::BLACK
+ w.left.color = Node::BLACK
+ right_rotate(x.parent)
+ x = root
+ end
+ end
+ end
+ x.color = Node::BLACK
+ end
+end
+
+def rbt_bm
+ n = 100_000
+ a1 = []; n.times { a1 << rand(999_999) }
+ a2 = []; n.times { a2 << rand(999_999) }
+
+ start = Time.now
+
+ tree = RedBlackTree.new
+
+ n.times {|i| tree.add(i) }
+ n.times { tree.delete(tree.root) }
+
+ tree = RedBlackTree.new
+ a1.each {|e| tree.add(e) }
+ a2.each {|e| tree.search(e) }
+ tree.inorder_walk {|key| key + 1 }
+ tree.reverse_inorder_walk {|key| key + 1 }
+ n.times { tree.minimum }
+ n.times { tree.maximum }
+
+ return Time.now - start
+end
+
+N = (ARGV[0] || 10).to_i
+
+N.times do
+ # puts rbt_bm.to_f
+ rbt_bm.to_f
+ # puts "GC.count = #{GC.count}" if GC.respond_to?(:count)
+end
diff --git a/benchmark/gc/ring.rb b/benchmark/gc/ring.rb
new file mode 100644
index 0000000000..be2c7b7250
--- /dev/null
+++ b/benchmark/gc/ring.rb
@@ -0,0 +1,29 @@
+# create many old objects
+
+max = 30_000_000
+
+class Ring
+ attr_reader :next_ring
+ def initialize n = nil
+ @next_ring = n
+ end
+
+
+ def size
+ s = 1
+ ring = self
+ while ring.next_ring
+ s += 1
+ ring = ring.next_ring
+ end
+ s
+ end
+end
+
+ring = Ring.new
+
+max.times{
+ ring = Ring.new(ring)
+}
+
+# p ring.size
diff --git a/benchmark/make_fasta_output.rb b/benchmark/make_fasta_output.rb
new file mode 100644
index 0000000000..b6d787ae27
--- /dev/null
+++ b/benchmark/make_fasta_output.rb
@@ -0,0 +1,19 @@
+# prepare 'fasta.output'
+
+def prepare_fasta_output n
+ filebase = File.join(File.dirname($0), 'fasta.output')
+ script = File.join(File.dirname($0), 'bm_so_fasta.rb')
+ file = "#{filebase}.#{n}"
+
+ unless FileTest.exist?(file)
+ STDERR.puts "preparing #{file}"
+
+ open(file, 'w'){|f|
+ ARGV[0] = n
+ $stdout = f
+ load script
+ $stdout = STDOUT
+ }
+ end
+end
+
diff --git a/benchmark/other-lang/ack.pl b/benchmark/other-lang/ack.pl
new file mode 100644
index 0000000000..201e22ddfa
--- /dev/null
+++ b/benchmark/other-lang/ack.pl
@@ -0,0 +1,11 @@
+use integer;
+
+sub Ack {
+ return $_[0] ? ($_[1] ? Ack($_[0]-1, Ack($_[0], $_[1]-1))
+ : Ack($_[0]-1, 1))
+ : $_[1]+1;
+}
+
+my $NUM = 9;
+$NUM = 1 if ($NUM < 1);
+my $ack = Ack(3, $NUM);
diff --git a/benchmark/other-lang/ack.py b/benchmark/other-lang/ack.py
new file mode 100644
index 0000000000..9968e7cfcf
--- /dev/null
+++ b/benchmark/other-lang/ack.py
@@ -0,0 +1,16 @@
+import sys
+sys.setrecursionlimit(5000000)
+
+def Ack(M, N):
+ if (not M):
+ return( N + 1 )
+ if (not N):
+ return( Ack(M-1, 1) )
+ return( Ack(M-1, Ack(M, N-1)) )
+
+def main():
+ NUM = 9
+ sys.setrecursionlimit(10000)
+ Ack(3, NUM)
+
+main()
diff --git a/benchmark/other-lang/ack.rb b/benchmark/other-lang/ack.rb
new file mode 100644
index 0000000000..7451bed6c4
--- /dev/null
+++ b/benchmark/other-lang/ack.rb
@@ -0,0 +1,12 @@
+def ack(m, n)
+ if m == 0 then
+ n + 1
+ elsif n == 0 then
+ ack(m - 1, 1)
+ else
+ ack(m - 1, ack(m, n - 1))
+ end
+end
+
+NUM = 9
+ack(3, NUM)
diff --git a/benchmark/other-lang/ack.scm b/benchmark/other-lang/ack.scm
new file mode 100644
index 0000000000..a80b73ba55
--- /dev/null
+++ b/benchmark/other-lang/ack.scm
@@ -0,0 +1,7 @@
+(define (ack m n)
+ (cond ((zero? m) (+ n 1))
+ ((zero? n) (ack (- m 1) 1))
+ (else (ack (- m 1) (ack m (- n 1))))))
+
+(ack 3 9)
+
diff --git a/benchmark/other-lang/eval.rb b/benchmark/other-lang/eval.rb
new file mode 100644
index 0000000000..48a2cea019
--- /dev/null
+++ b/benchmark/other-lang/eval.rb
@@ -0,0 +1,66 @@
+
+Bench = %w(
+ loop
+ ack
+ fib
+ tak
+ fact
+)
+
+Lang = <<EOP.map{|l| l.strip}
+ ruby-cyg
+ ../../../test6/miniruby
+ perl
+ python
+ gosh
+EOP
+
+Bench.replace ['loop2']
+Lang.replace ['ruby-cyg']
+
+Ext = %w(
+ .rb
+ .rb
+ .pl
+ .py
+ .scm
+)
+
+p Bench
+p Lang
+
+require 'benchmark'
+
+def bench cmd
+ m = Benchmark.measure{
+ #p cmd
+ system(cmd)
+ }
+ [m.utime, m.real]
+end
+
+Result = []
+Bench.each{|b|
+ r = []
+ Lang.each_with_index{|l, idx|
+ cmd = "#{l} #{b}#{Ext[idx]}"
+ r << bench(cmd)
+ }
+ Result << r
+}
+
+require 'pp'
+# utime
+puts Lang.join("\t")
+Bench.each_with_index{|b, bi|
+ print b, "\t"
+ puts Result[bi].map{|e| e[0]}.join("\t")
+}
+
+# rtime
+puts Lang.join("\t")
+Bench.each_with_index{|b, bi|
+ print b, "\t"
+ puts Result[bi].map{|e| e[1]}.join("\t")
+}
+
diff --git a/benchmark/other-lang/fact.pl b/benchmark/other-lang/fact.pl
new file mode 100644
index 0000000000..a9b0b69cdf
--- /dev/null
+++ b/benchmark/other-lang/fact.pl
@@ -0,0 +1,13 @@
+sub fact{
+ my $n = @_[0];
+ if($n < 2){
+ return 1;
+ }
+ else{
+ return $n * fact($n-1);
+ }
+}
+
+for($i=0; $i<10000; $i++){
+ &fact(100);
+}
diff --git a/benchmark/other-lang/fact.py b/benchmark/other-lang/fact.py
new file mode 100644
index 0000000000..01593965d9
--- /dev/null
+++ b/benchmark/other-lang/fact.py
@@ -0,0 +1,18 @@
+#import sys
+#sys.setrecursionlimit(1000)
+
+def factL(n):
+ r = 1
+ for x in range(2, n):
+ r *= x
+ return r
+
+def factR(n):
+ if n < 2:
+ return 1
+ else:
+ return n * factR(n-1)
+
+for i in range(10000):
+ factR(100)
+
diff --git a/benchmark/other-lang/fact.rb b/benchmark/other-lang/fact.rb
new file mode 100644
index 0000000000..6cedc752cd
--- /dev/null
+++ b/benchmark/other-lang/fact.rb
@@ -0,0 +1,13 @@
+def fact(n)
+ if n < 2
+ 1
+ else
+ n * fact(n-1)
+ end
+end
+
+i = 0
+while i<10000
+ i += 1
+ fact(100)
+end
diff --git a/benchmark/other-lang/fact.scm b/benchmark/other-lang/fact.scm
new file mode 100644
index 0000000000..c98a7fedd3
--- /dev/null
+++ b/benchmark/other-lang/fact.scm
@@ -0,0 +1,8 @@
+(define (fact n)
+ (if (< n 2)
+ 1
+ (* n (fact (- n 1)))))
+
+(dotimes (i 10000)
+ (fact 100))
+
diff --git a/benchmark/other-lang/fib.pl b/benchmark/other-lang/fib.pl
new file mode 100644
index 0000000000..a46f666d1e
--- /dev/null
+++ b/benchmark/other-lang/fib.pl
@@ -0,0 +1,11 @@
+sub fib{
+ my $n = $_[0];
+ if($n < 3){
+ return 1;
+ }
+ else{
+ return fib($n-1) + fib($n-2);
+ }
+};
+
+&fib(34);
diff --git a/benchmark/other-lang/fib.py b/benchmark/other-lang/fib.py
new file mode 100644
index 0000000000..45f2bceb8d
--- /dev/null
+++ b/benchmark/other-lang/fib.py
@@ -0,0 +1,7 @@
+def fib(n):
+ if n < 3:
+ return 1
+ else:
+ return fib(n-1) + fib(n-2)
+
+fib(34)
diff --git a/benchmark/other-lang/fib.rb b/benchmark/other-lang/fib.rb
new file mode 100644
index 0000000000..ec587eabe0
--- /dev/null
+++ b/benchmark/other-lang/fib.rb
@@ -0,0 +1,9 @@
+def fib n
+ if n < 3
+ 1
+ else
+ fib(n-1) + fib(n-2)
+ end
+end
+
+fib(34)
diff --git a/benchmark/other-lang/fib.scm b/benchmark/other-lang/fib.scm
new file mode 100644
index 0000000000..2fc4e225bd
--- /dev/null
+++ b/benchmark/other-lang/fib.scm
@@ -0,0 +1,7 @@
+(define (fib n)
+ (if (< n 3)
+ 1
+ (+ (fib (- n 1)) (fib (- n 2)))))
+
+(fib 34)
+
diff --git a/benchmark/other-lang/loop.pl b/benchmark/other-lang/loop.pl
new file mode 100644
index 0000000000..2777490aaa
--- /dev/null
+++ b/benchmark/other-lang/loop.pl
@@ -0,0 +1,3 @@
+for($i=0; $i<30000000; $i++){
+}
+
diff --git a/benchmark/other-lang/loop.py b/benchmark/other-lang/loop.py
new file mode 100644
index 0000000000..003749bf3a
--- /dev/null
+++ b/benchmark/other-lang/loop.py
@@ -0,0 +1,2 @@
+for i in xrange(30000000):
+ pass
diff --git a/benchmark/other-lang/loop.rb b/benchmark/other-lang/loop.rb
new file mode 100644
index 0000000000..b367b9dbf3
--- /dev/null
+++ b/benchmark/other-lang/loop.rb
@@ -0,0 +1,4 @@
+i = 0
+while i<30000000
+ i += 1
+end
diff --git a/benchmark/other-lang/loop.scm b/benchmark/other-lang/loop.scm
new file mode 100644
index 0000000000..3364f7e679
--- /dev/null
+++ b/benchmark/other-lang/loop.scm
@@ -0,0 +1 @@
+(dotimes (x 30000000))
diff --git a/benchmark/other-lang/loop2.rb b/benchmark/other-lang/loop2.rb
new file mode 100644
index 0000000000..df8fffc1ff
--- /dev/null
+++ b/benchmark/other-lang/loop2.rb
@@ -0,0 +1 @@
+30000000.times{}
diff --git a/benchmark/other-lang/tak.pl b/benchmark/other-lang/tak.pl
new file mode 100644
index 0000000000..7e748a67c6
--- /dev/null
+++ b/benchmark/other-lang/tak.pl
@@ -0,0 +1,11 @@
+sub tak {
+ local($x, $y, $z) = @_;
+ if (!($y < $x)) {
+ return $z;
+ } else {
+ return &tak(&tak($x - 1, $y, $z),
+ &tak($y - 1, $z, $x),
+ &tak($z - 1, $x, $y));
+ }
+}
+&tak(18, 9, 0);
diff --git a/benchmark/other-lang/tak.py b/benchmark/other-lang/tak.py
new file mode 100644
index 0000000000..04f3f6829c
--- /dev/null
+++ b/benchmark/other-lang/tak.py
@@ -0,0 +1,8 @@
+def tak(x, y, z):
+ if not(y<x):
+ return z
+ else:
+ return tak(tak(x-1, y, z),
+ tak(y-1, z, x),
+ tak(z-1, x, y))
+tak(18, 9, 0)
diff --git a/benchmark/other-lang/tak.rb b/benchmark/other-lang/tak.rb
new file mode 100644
index 0000000000..efe5380f4e
--- /dev/null
+++ b/benchmark/other-lang/tak.rb
@@ -0,0 +1,13 @@
+
+def tak x, y, z
+ unless y < x
+ z
+ else
+ tak( tak(x-1, y, z),
+ tak(y-1, z, x),
+ tak(z-1, x, y))
+ end
+end
+
+tak(18, 9, 0)
+
diff --git a/benchmark/other-lang/tak.scm b/benchmark/other-lang/tak.scm
new file mode 100644
index 0000000000..52a7629ee5
--- /dev/null
+++ b/benchmark/other-lang/tak.scm
@@ -0,0 +1,10 @@
+(define (tak x y z)
+ (if (not (< y x))
+ z
+ (tak (tak (- x 1) y z)
+ (tak (- y 1) z x)
+ (tak (- z 1) x y))))
+
+(tak 18 9 0)
+
+
diff --git a/benchmark/prepare_so_count_words.rb b/benchmark/prepare_so_count_words.rb
new file mode 100644
index 0000000000..ee2138cdb2
--- /dev/null
+++ b/benchmark/prepare_so_count_words.rb
@@ -0,0 +1,15 @@
+# prepare 'wc.input'
+
+def prepare_wc_input
+ wcinput = File.join(File.dirname($0), 'wc.input')
+ wcbase = File.join(File.dirname($0), 'wc.input.base')
+ unless FileTest.exist?(wcinput)
+ data = File.read(wcbase)
+ 13.times{
+ data << data
+ }
+ open(wcinput, 'w'){|f| f.write data}
+ end
+end
+
+prepare_wc_input
diff --git a/benchmark/prepare_so_k_nucleotide.rb b/benchmark/prepare_so_k_nucleotide.rb
new file mode 100644
index 0000000000..f28f4460a1
--- /dev/null
+++ b/benchmark/prepare_so_k_nucleotide.rb
@@ -0,0 +1,2 @@
+require File.join(File.dirname(__FILE__), 'make_fasta_output')
+prepare_fasta_output(100_000)
diff --git a/benchmark/prepare_so_reverse_complement.rb b/benchmark/prepare_so_reverse_complement.rb
new file mode 100644
index 0000000000..7f089109de
--- /dev/null
+++ b/benchmark/prepare_so_reverse_complement.rb
@@ -0,0 +1,2 @@
+require File.join(File.dirname(__FILE__), 'make_fasta_output')
+prepare_fasta_output(2_500_000)
diff --git a/benchmark/report.rb b/benchmark/report.rb
new file mode 100644
index 0000000000..d2dc56b1e1
--- /dev/null
+++ b/benchmark/report.rb
@@ -0,0 +1,79 @@
+#
+# YARV benchmark driver
+#
+
+require 'yarvutil'
+require 'benchmark'
+require 'rbconfig'
+
+def exec_command type, file, w
+ <<-EOP
+ $DRIVER_PATH = '#{File.dirname($0)}'
+ $LOAD_PATH.replace $LOAD_PATH | #{$LOAD_PATH.inspect}
+ require 'benchmark'
+ require 'yarvutil'
+# print '#{type}'
+ begin
+ puts Benchmark.measure{
+ #{w}('#{file}')
+ }.utime
+ rescue Exception => exec_command_error_variable
+ puts "\t" + exec_command_error_variable.message
+ end
+ EOP
+end
+
+def benchmark cmd
+ rubybin = ENV['RUBY'] || RbConfig.ruby
+
+ IO.popen(rubybin, 'r+'){|io|
+ io.write cmd
+ io.close_write
+ return io.gets
+ }
+end
+
+def ruby_exec file
+ prog = exec_command 'ruby', file, 'load'
+ benchmark prog
+end
+
+def yarv_exec file
+ prog = exec_command 'yarv', file, 'YARVUtil.load_bm'
+ benchmark prog
+end
+
+$wr = $wy = nil
+
+def measure bench
+ file = File.dirname($0) + "/bm_#{bench}.rb"
+ r = ruby_exec(file).to_f
+ y = yarv_exec(file).to_f
+ puts "#{bench}\t#{r}\t#{y}"
+end
+
+def measure2
+ r = ruby_exec.to_f
+ y = yarv_exec.to_f
+ puts r/y
+end
+
+if $0 == __FILE__
+ %w{
+ whileloop
+ whileloop2
+ times
+ const
+ method
+ poly_method
+ block
+ rescue
+ rescue2
+ }.each{|bench|
+ measure bench
+ }
+end
+
+
+
+
diff --git a/benchmark/run.rb b/benchmark/run.rb
new file mode 100644
index 0000000000..0cd2363849
--- /dev/null
+++ b/benchmark/run.rb
@@ -0,0 +1,127 @@
+#
+# Ruby benchmark driver
+#
+
+require 'benchmark'
+require 'rbconfig'
+
+$matzrubyonly = false
+$rubyonly = false
+
+$results = []
+
+# prepare 'wc.input'
+def prepare_wc_input
+ wcinput = File.join(File.dirname($0), 'wc.input')
+ wcbase = File.join(File.dirname($0), 'wc.input.base')
+ unless FileTest.exist?(wcinput)
+ data = File.read(wcbase)
+ 13.times{
+ data << data
+ }
+ open(wcinput, 'w'){|f| f.write data}
+ end
+end
+
+prepare_wc_input
+
+def bm file
+ prog = File.readlines(file).map{|e| e.rstrip}.join("\n")
+ return if prog.empty?
+
+ /[a-z]+_(.+)\.rb/ =~ file
+ bm_name = $1
+ puts '-----------------------------------------------------------' unless $rubyonly || $matzrubyonly
+ puts "#{bm_name}: "
+
+
+puts <<EOS unless $matzrubyonly || $rubyonly
+#{prog}
+--
+EOS
+ begin
+ result = [bm_name]
+ result << matzruby_exec(file) unless $rubyonly
+ result << ruby_exec(file) unless $matzrubyonly
+ $results << result
+
+ rescue Exception => e
+ puts
+ puts "** benchmark failure: #{e}"
+ puts e.backtrace
+ end
+end
+
+def benchmark file, bin
+ m = Benchmark.measure{
+ `#{bin} #{$opts} #{file}`
+ }
+ sec = '%.3f' % m.real
+ puts " #{sec}"
+ sec
+end
+
+def ruby_exec file
+ print 'ruby'
+ benchmark file, $ruby_program
+end
+
+def matzruby_exec file
+ print 'matz'
+ rubylib = ENV['RUBYLIB']
+ ENV['RUBYLIB'] = ''
+ r = benchmark file, $matzruby_program
+ ENV['RUBYLIB'] = rubylib
+ r
+end
+
+if $0 == __FILE__
+ ARGV.each{|arg|
+ case arg
+ when /\A--ruby=(.+)/
+ $ruby_program = $1
+ when /\A--matzruby=(.+)/
+ $matzruby_program = $1
+ when /\A--opts=(.+)/
+ $opts = $1
+ when /\A(-r|--only-ruby)\z/
+ $rubyonly = true
+ when /\A(-m|--only-matzruby)\z/
+ $matzrubyonly = true
+ end
+ }
+ ARGV.delete_if{|arg|
+ /\A-/ =~ arg
+ }
+
+ puts "MatzRuby:"
+ system("#{$matzruby_program} -v")
+ puts "Ruby:"
+ system("#{$ruby_program} -v")
+ puts
+
+ if ARGV.empty?
+ Dir.glob(File.dirname(__FILE__) + '/bm_*.rb').sort.each{|file|
+ bm file
+ }
+ else
+ ARGV.each{|file|
+ Dir.glob(File.join(File.dirname(__FILE__), file + '*')){|ef|
+ # file = "#{File.dirname(__FILE__)}/#{file}.rb"
+ bm ef
+ }
+ }
+ end
+
+ puts
+ puts "-- benchmark summary ---------------------------"
+ $results.each{|res|
+ print res.shift, "\t"
+ (res||[]).each{|result|
+ /([\d\.]+)/ =~ result
+ print $1 + "\t" if $1
+ }
+ puts
+ }
+end
+
diff --git a/benchmark/runc.rb b/benchmark/runc.rb
new file mode 100644
index 0000000000..97c5cef045
--- /dev/null
+++ b/benchmark/runc.rb
@@ -0,0 +1,27 @@
+#
+#
+#
+
+require 'benchmark'
+require 'rbconfig'
+
+$rubybin = ENV['RUBY'] || RbConfig.ruby
+
+def runfile file
+ puts file
+ file = File.join(File.dirname($0), 'contrib', file)
+ Benchmark.bm{|x|
+ x.report('ruby'){
+ system("#{$rubybin} #{file}")
+ }
+ x.report('yarv'){
+ system("#{$rubybin} -rite -I.. #{file}")
+ }
+ }
+end
+
+ARGV.each{|file|
+ runfile file
+}
+
+
diff --git a/benchmark/wc.input.base b/benchmark/wc.input.base
new file mode 100644
index 0000000000..41143fbac0
--- /dev/null
+++ b/benchmark/wc.input.base
@@ -0,0 +1,25 @@
+Subject: Re: Who was Izchak Miller?
+From: "Jane D. Anonymous" <nobody@yale.edu>
+Date: 1996/04/28
+Message-Id: <4lv7bc$oh@news.ycc.yale.edu>
+References: <317C405E.5DFA@panix.com> <4lk6vl$gde@ns.oar.net>
+To: 75176.2330@compuserve.com
+Content-Type: text/plain; charset=us-ascii
+Organization: Yale University
+X-Url: news:4lk6vl$gde@ns.oar.net
+Mime-Version: 1.0
+Newsgroups: rec.games.roguelike.nethack
+X-Mailer: Mozilla 1.1N (Macintosh; I; 68K)
+
+Hello there, Izchak Miller was my father. When I was younger I spent
+many a night, hunched over the keyboard with a cup of tea, playing
+nethack with him and my brother. my dad was a philosopher with a strong
+weakness for fantasy/sci fi. I remember when he started to get involved
+with the Nethack team- my brother's Dungeons and Dragons monster book
+found a regular place beside my dad's desk. it's nice to see him living
+on in the game he loved so much :-).
+ Tamar Miller
+
+The following is a really long word of 5000 characters:
+
+wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
diff --git a/bignum.c b/bignum.c
index 4bdcb6b63a..bced660134 100644
--- a/bignum.c
+++ b/bignum.c
@@ -1,381 +1,5202 @@
-/************************************************
+/**********************************************************************
bignum.c -
- $Author: matz $
- $Date: 1996/12/25 10:42:19 $
+ $Author$
created at: Fri Jun 10 00:48:55 JST 1994
-************************************************/
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
-#include "ruby.h"
-#include <ctype.h>
+**********************************************************************/
+
+#include "ruby/ruby.h"
+#include "ruby/thread.h"
+#include "ruby/util.h"
+#include "internal.h"
+
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
#include <math.h>
+#include <float.h>
+#include <ctype.h>
+#ifdef HAVE_IEEEFP_H
+#include <ieeefp.h>
+#endif
+#include <assert.h>
+
+#if defined(HAVE_LIBGMP) && defined(HAVE_GMP_H)
+#define USE_GMP
+#include <gmp.h>
+#endif
-extern VALUE cInteger;
-VALUE cBignum;
+#define RB_BIGNUM_TYPE_P(x) RB_TYPE_P((x), T_BIGNUM)
-#define BDIGITS(x) RBIGNUM(x)->digits
-#define BITSPERDIG (sizeof(USHORT)*CHAR_BIT)
-#define BIGRAD (1L << BITSPERDIG)
-#define DIGSPERLONG ((UINT)(sizeof(long)/sizeof(USHORT)))
-#define BIGUP(x) ((unsigned long)(x) << BITSPERDIG)
-#define BIGDN(x) ((x) >> BITSPERDIG)
-#define BIGLO(x) ((x) & (BIGRAD-1))
+VALUE rb_cBignum;
+const char ruby_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz";
-static VALUE
-bignew_1(class, len, sign)
- VALUE class;
- UINT len;
- char sign;
+#ifndef SIZEOF_BDIGIT_DBL
+# if defined(HAVE_INT64_T) && defined(HAVE_INT128_T)
+# define SIZEOF_BDIGIT_DBL SIZEOF_INT128_T
+# elif SIZEOF_INT*2 <= SIZEOF_LONG_LONG
+# define SIZEOF_BDIGIT_DBL SIZEOF_LONG_LONG
+# else
+# define SIZEOF_BDIGIT_DBL SIZEOF_LONG
+# endif
+#endif
+
+STATIC_ASSERT(sizeof_bdigit_dbl, sizeof(BDIGIT_DBL) == SIZEOF_BDIGIT_DBL);
+STATIC_ASSERT(sizeof_bdigit_dbl_signed, sizeof(BDIGIT_DBL_SIGNED) == SIZEOF_BDIGIT_DBL);
+STATIC_ASSERT(sizeof_bdigit, SIZEOF_BDIGITS <= sizeof(BDIGIT));
+STATIC_ASSERT(sizeof_bdigit_and_dbl, SIZEOF_BDIGITS*2 <= SIZEOF_BDIGIT_DBL);
+STATIC_ASSERT(bdigit_signedness, 0 < (BDIGIT)-1);
+STATIC_ASSERT(bdigit_dbl_signedness, 0 < (BDIGIT_DBL)-1);
+STATIC_ASSERT(bdigit_dbl_signed_signedness, 0 > (BDIGIT_DBL_SIGNED)-1);
+STATIC_ASSERT(rbignum_embed_len_max, RBIGNUM_EMBED_LEN_MAX <= (RBIGNUM_EMBED_LEN_MASK >> RBIGNUM_EMBED_LEN_SHIFT));
+
+#if SIZEOF_BDIGITS < SIZEOF_LONG
+STATIC_ASSERT(sizeof_long_and_sizeof_bdigit, SIZEOF_LONG % SIZEOF_BDIGITS == 0);
+#else
+STATIC_ASSERT(sizeof_long_and_sizeof_bdigit, SIZEOF_BDIGITS % SIZEOF_LONG == 0);
+#endif
+
+#ifdef WORDS_BIGENDIAN
+# define HOST_BIGENDIAN_P 1
+#else
+# define HOST_BIGENDIAN_P 0
+#endif
+#define ALIGNOF(type) ((int)offsetof(struct { char f1; type f2; }, f2))
+/* (!LSHIFTABLE(d, n) ? 0 : (n)) is same as n but suppress a warning, C4293, by Visual Studio. */
+#define LSHIFTABLE(d, n) ((n) < sizeof(d) * CHAR_BIT)
+#define LSHIFTX(d, n) (!LSHIFTABLE(d, n) ? 0 : ((d) << (!LSHIFTABLE(d, n) ? 0 : (n))))
+#define CLEAR_LOWBITS(d, numbits) ((d) & LSHIFTX(~((d)*0), (numbits)))
+#define FILL_LOWBITS(d, numbits) ((d) | (LSHIFTX(((d)*0+1), (numbits))-1))
+#define POW2_P(x) (((x)&((x)-1))==0)
+
+#define BDIGITS(x) (RBIGNUM_DIGITS(x))
+#define BITSPERDIG (SIZEOF_BDIGITS*CHAR_BIT)
+#define BIGRAD ((BDIGIT_DBL)1 << BITSPERDIG)
+#define BIGRAD_HALF ((BDIGIT)(BIGRAD >> 1))
+#define BDIGIT_MSB(d) (((d) & BIGRAD_HALF) != 0)
+#define BIGUP(x) LSHIFTX(((x) + (BDIGIT_DBL)0), BITSPERDIG)
+#define BIGDN(x) RSHIFT((x),BITSPERDIG)
+#define BIGLO(x) ((BDIGIT)((x) & BDIGMAX))
+#define BDIGMAX ((BDIGIT)(BIGRAD-1))
+#define BDIGIT_DBL_MAX (~(BDIGIT_DBL)0)
+
+#if SIZEOF_BDIGITS == 2
+# define swap_bdigit(x) swap16(x)
+#elif SIZEOF_BDIGITS == 4
+# define swap_bdigit(x) swap32(x)
+#elif SIZEOF_BDIGITS == 8
+# define swap_bdigit(x) swap64(x)
+#endif
+
+#define BIGZEROP(x) (RBIGNUM_LEN(x) == 0 || \
+ (BDIGITS(x)[0] == 0 && \
+ (RBIGNUM_LEN(x) == 1 || bigzero_p(x))))
+#define BIGSIZE(x) (RBIGNUM_LEN(x) == 0 ? (size_t)0 : \
+ BDIGITS(x)[RBIGNUM_LEN(x)-1] ? \
+ (size_t)(RBIGNUM_LEN(x)*SIZEOF_BDIGITS - nlz(BDIGITS(x)[RBIGNUM_LEN(x)-1])/CHAR_BIT) : \
+ rb_absint_size(x, NULL))
+
+#define BIGDIVREM_EXTRA_WORDS 1
+#define roomof(n, m) ((long)(((n)+(m)-1) / (m)))
+#define bdigit_roomof(n) roomof(n, SIZEOF_BDIGITS)
+#define BARY_ARGS(ary) ary, numberof(ary)
+
+#define BARY_ADD(z, x, y) bary_add(BARY_ARGS(z), BARY_ARGS(x), BARY_ARGS(y))
+#define BARY_SUB(z, x, y) bary_sub(BARY_ARGS(z), BARY_ARGS(x), BARY_ARGS(y))
+#define BARY_SHORT_MUL(z, x, y) bary_short_mul(BARY_ARGS(z), BARY_ARGS(x), BARY_ARGS(y))
+#define BARY_DIVMOD(q, r, x, y) bary_divmod(BARY_ARGS(q), BARY_ARGS(r), BARY_ARGS(x), BARY_ARGS(y))
+#define BARY_ZERO_P(x) bary_zero_p(BARY_ARGS(x))
+
+#define RBIGNUM_SET_NEGATIVE_SIGN(b) RBIGNUM_SET_SIGN(b, 0)
+#define RBIGNUM_SET_POSITIVE_SIGN(b) RBIGNUM_SET_SIGN(b, 1)
+
+#define bignew(len,sign) bignew_1(rb_cBignum,(len),(sign))
+
+#define BDIGITS_ZERO(ptr, n) do { \
+ BDIGIT *bdigitz_zero_ptr = (ptr); \
+ size_t bdigitz_zero_n = (n); \
+ while (bdigitz_zero_n) { \
+ *bdigitz_zero_ptr++ = 0; \
+ bdigitz_zero_n--; \
+ } \
+} while (0)
+
+#define BARY_TRUNC(ds, n) do { \
+ while (0 < (n) && (ds)[(n)-1] == 0) \
+ (n)--; \
+ } while (0)
+
+#define KARATSUBA_BALANCED(xn, yn) ((yn)/2 < (xn))
+#define TOOM3_BALANCED(xn, yn) (((yn)+2)/3 * 2 < (xn))
+
+#define GMP_MUL_DIGITS 20
+#define KARATSUBA_MUL_DIGITS 70
+#define TOOM3_MUL_DIGITS 150
+
+#define GMP_DIV_DIGITS 20
+#define GMP_BIG2STR_DIGITS 20
+#define GMP_STR2BIG_DIGITS 20
+
+typedef void (mulfunc_t)(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn);
+
+static mulfunc_t bary_mul_toom3_start;
+static mulfunc_t bary_mul_karatsuba_start;
+static BDIGIT bigdivrem_single(BDIGIT *qds, const BDIGIT *xds, size_t xn, BDIGIT y);
+static void bary_divmod(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn);
+
+static VALUE bigmul0(VALUE x, VALUE y);
+static void bary_mul_toom3(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn);
+static VALUE bignew_1(VALUE klass, long len, int sign);
+static inline VALUE bigtrunc(VALUE x);
+
+static VALUE bigsq(VALUE x);
+static void bigdivmod(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp);
+static inline VALUE power_cache_get_power(int base, int power_level, size_t *numdigits_ret);
+
+#if SIZEOF_BDIGITS <= SIZEOF_INT
+static int nlz(BDIGIT x) { return nlz_int((unsigned int)x) - (SIZEOF_INT-SIZEOF_BDIGITS) * CHAR_BIT; }
+#elif SIZEOF_BDIGITS <= SIZEOF_LONG
+static int nlz(BDIGIT x) { return nlz_long((unsigned long)x) - (SIZEOF_LONG-SIZEOF_BDIGITS) * CHAR_BIT; }
+#elif SIZEOF_BDIGITS <= SIZEOF_LONG_LONG
+static int nlz(BDIGIT x) { return nlz_long_long((unsigned LONG_LONG)x) - (SIZEOF_LONG_LONG-SIZEOF_BDIGITS) * CHAR_BIT; }
+#elif SIZEOF_BDIGITS <= SIZEOF_INT128_T
+static int nlz(BDIGIT x) { return nlz_int128((uint128_t)x) - (SIZEOF_INT128_T-SIZEOF_BDIGITS) * CHAR_BIT; }
+#endif
+
+#define U16(a) ((uint16_t)(a))
+#define U32(a) ((uint32_t)(a))
+#ifdef HAVE_UINT64_T
+#define U64(a,b) (((uint64_t)(a) << 32) | (b))
+#endif
+#ifdef HAVE_UINT128_T
+#define U128(a,b,c,d) (((uint128_t)U64(a,b) << 64) | U64(c,d))
+#endif
+
+/* The following scirpt, maxpow.rb, generates the tables follows.
+
+def big(n, bits)
+ ns = []
+ ((bits+31)/32).times {
+ ns << sprintf("0x%08x", n & 0xffff_ffff)
+ n >>= 32
+ }
+ "U#{bits}(" + ns.reverse.join(",") + ")"
+end
+def values(ary, width, indent)
+ lines = [""]
+ ary.each {|e|
+ lines << "" if !ary.last.empty? && width < (lines.last + e + ", ").length
+ lines.last << e + ", "
+ }
+ lines.map {|line| " " * indent + line.chomp(" ") + "\n" }.join
+end
+[16,32,64,128].each {|bits|
+ max = 2**bits-1
+ exps = []
+ nums = []
+ 2.upto(36) {|base|
+ exp = 0
+ n = 1
+ while n * base <= max
+ exp += 1
+ n *= base
+ end
+ exps << exp.to_s
+ nums << big(n, bits)
+ }
+ puts "#ifdef HAVE_UINT#{bits}_T"
+ puts "static const int maxpow#{bits}_exp[35] = {"
+ print values(exps, 70, 4)
+ puts "};"
+ puts "static const uint#{bits}_t maxpow#{bits}_num[35] = {"
+ print values(nums, 70, 4)
+ puts "};"
+ puts "#endif"
+}
+
+ */
+
+#ifdef HAVE_UINT16_T
+static const int maxpow16_exp[35] = {
+ 15, 10, 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+};
+static const uint16_t maxpow16_num[35] = {
+ U16(0x00008000), U16(0x0000e6a9), U16(0x00004000), U16(0x00003d09),
+ U16(0x0000b640), U16(0x000041a7), U16(0x00008000), U16(0x0000e6a9),
+ U16(0x00002710), U16(0x00003931), U16(0x00005100), U16(0x00006f91),
+ U16(0x00009610), U16(0x0000c5c1), U16(0x00001000), U16(0x00001331),
+ U16(0x000016c8), U16(0x00001acb), U16(0x00001f40), U16(0x0000242d),
+ U16(0x00002998), U16(0x00002f87), U16(0x00003600), U16(0x00003d09),
+ U16(0x000044a8), U16(0x00004ce3), U16(0x000055c0), U16(0x00005f45),
+ U16(0x00006978), U16(0x0000745f), U16(0x00008000), U16(0x00008c61),
+ U16(0x00009988), U16(0x0000a77b), U16(0x0000b640),
+};
+#endif
+#ifdef HAVE_UINT32_T
+static const int maxpow32_exp[35] = {
+ 31, 20, 15, 13, 12, 11, 10, 10, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7,
+ 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+};
+static const uint32_t maxpow32_num[35] = {
+ U32(0x80000000), U32(0xcfd41b91), U32(0x40000000), U32(0x48c27395),
+ U32(0x81bf1000), U32(0x75db9c97), U32(0x40000000), U32(0xcfd41b91),
+ U32(0x3b9aca00), U32(0x8c8b6d2b), U32(0x19a10000), U32(0x309f1021),
+ U32(0x57f6c100), U32(0x98c29b81), U32(0x10000000), U32(0x18754571),
+ U32(0x247dbc80), U32(0x3547667b), U32(0x4c4b4000), U32(0x6b5a6e1d),
+ U32(0x94ace180), U32(0xcaf18367), U32(0x0b640000), U32(0x0e8d4a51),
+ U32(0x1269ae40), U32(0x17179149), U32(0x1cb91000), U32(0x23744899),
+ U32(0x2b73a840), U32(0x34e63b41), U32(0x40000000), U32(0x4cfa3cc1),
+ U32(0x5c13d840), U32(0x6d91b519), U32(0x81bf1000),
+};
+#endif
+#ifdef HAVE_UINT64_T
+static const int maxpow64_exp[35] = {
+ 63, 40, 31, 27, 24, 22, 21, 20, 19, 18, 17, 17, 16, 16, 15, 15, 15,
+ 15, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12,
+ 12,
+};
+static const uint64_t maxpow64_num[35] = {
+ U64(0x80000000,0x00000000), U64(0xa8b8b452,0x291fe821),
+ U64(0x40000000,0x00000000), U64(0x6765c793,0xfa10079d),
+ U64(0x41c21cb8,0xe1000000), U64(0x36427987,0x50226111),
+ U64(0x80000000,0x00000000), U64(0xa8b8b452,0x291fe821),
+ U64(0x8ac72304,0x89e80000), U64(0x4d28cb56,0xc33fa539),
+ U64(0x1eca170c,0x00000000), U64(0x780c7372,0x621bd74d),
+ U64(0x1e39a505,0x7d810000), U64(0x5b27ac99,0x3df97701),
+ U64(0x10000000,0x00000000), U64(0x27b95e99,0x7e21d9f1),
+ U64(0x5da0e1e5,0x3c5c8000), U64(0xd2ae3299,0xc1c4aedb),
+ U64(0x16bcc41e,0x90000000), U64(0x2d04b7fd,0xd9c0ef49),
+ U64(0x5658597b,0xcaa24000), U64(0xa0e20737,0x37609371),
+ U64(0x0c29e980,0x00000000), U64(0x14adf4b7,0x320334b9),
+ U64(0x226ed364,0x78bfa000), U64(0x383d9170,0xb85ff80b),
+ U64(0x5a3c23e3,0x9c000000), U64(0x8e651373,0x88122bcd),
+ U64(0xdd41bb36,0xd259e000), U64(0x0aee5720,0xee830681),
+ U64(0x10000000,0x00000000), U64(0x172588ad,0x4f5f0981),
+ U64(0x211e44f7,0xd02c1000), U64(0x2ee56725,0xf06e5c71),
+ U64(0x41c21cb8,0xe1000000),
+};
+#endif
+#ifdef HAVE_UINT128_T
+static const int maxpow128_exp[35] = {
+ 127, 80, 63, 55, 49, 45, 42, 40, 38, 37, 35, 34, 33, 32, 31, 31, 30,
+ 30, 29, 29, 28, 28, 27, 27, 27, 26, 26, 26, 26, 25, 25, 25, 25, 24,
+ 24,
+};
+static const uint128_t maxpow128_num[35] = {
+ U128(0x80000000,0x00000000,0x00000000,0x00000000),
+ U128(0x6f32f1ef,0x8b18a2bc,0x3cea5978,0x9c79d441),
+ U128(0x40000000,0x00000000,0x00000000,0x00000000),
+ U128(0xd0cf4b50,0xcfe20765,0xfff4b4e3,0xf741cf6d),
+ U128(0x6558e2a0,0x921fe069,0x42860000,0x00000000),
+ U128(0x5080c7b7,0xd0e31ba7,0x5911a67d,0xdd3d35e7),
+ U128(0x40000000,0x00000000,0x00000000,0x00000000),
+ U128(0x6f32f1ef,0x8b18a2bc,0x3cea5978,0x9c79d441),
+ U128(0x4b3b4ca8,0x5a86c47a,0x098a2240,0x00000000),
+ U128(0xffd1390a,0x0adc2fb8,0xdabbb817,0x4d95c99b),
+ U128(0x2c6fdb36,0x4c25e6c0,0x00000000,0x00000000),
+ U128(0x384bacd6,0x42c343b4,0xe90c4272,0x13506d29),
+ U128(0x31f5db32,0xa34aced6,0x0bf13a0e,0x00000000),
+ U128(0x20753ada,0xfd1e839f,0x53686d01,0x3143ee01),
+ U128(0x10000000,0x00000000,0x00000000,0x00000000),
+ U128(0x68ca11d6,0xb4f6d1d1,0xfaa82667,0x8073c2f1),
+ U128(0x223e493b,0xb3bb69ff,0xa4b87d6c,0x40000000),
+ U128(0xad62418d,0x14ea8247,0x01c4b488,0x6cc66f59),
+ U128(0x2863c1f5,0xcdae42f9,0x54000000,0x00000000),
+ U128(0xa63fd833,0xb9386b07,0x36039e82,0xbe651b25),
+ U128(0x1d1f7a9c,0xd087a14d,0x28cdf3d5,0x10000000),
+ U128(0x651b5095,0xc2ea8fc1,0xb30e2c57,0x77aaf7e1),
+ U128(0x0ddef20e,0xff760000,0x00000000,0x00000000),
+ U128(0x29c30f10,0x29939b14,0x6664242d,0x97d9f649),
+ U128(0x786a435a,0xe9558b0e,0x6aaf6d63,0xa8000000),
+ U128(0x0c5afe6f,0xf302bcbf,0x94fd9829,0xd87f5079),
+ U128(0x1fce575c,0xe1692706,0x07100000,0x00000000),
+ U128(0x4f34497c,0x8597e144,0x36e91802,0x00528229),
+ U128(0xbf3a8e1d,0x41ef2170,0x7802130d,0x84000000),
+ U128(0x0e7819e1,0x7f1eb0fb,0x6ee4fb89,0x01d9531f),
+ U128(0x20000000,0x00000000,0x00000000,0x00000000),
+ U128(0x4510460d,0xd9e879c0,0x14a82375,0x2f22b321),
+ U128(0x91abce3c,0x4b4117ad,0xe76d35db,0x22000000),
+ U128(0x08973ea3,0x55d75bc2,0x2e42c391,0x727d69e1),
+ U128(0x10e425c5,0x6daffabc,0x35c10000,0x00000000),
+};
+#endif
+
+static BDIGIT_DBL
+maxpow_in_bdigit_dbl(int base, int *exp_ret)
{
- NEWOBJ(big, struct RBignum);
- OBJSETUP(big, cBignum, T_BIGNUM);
- big->sign = sign;
- big->len = len;
- BDIGITS(big) = ALLOC_N(USHORT, len);
+ BDIGIT_DBL maxpow;
+ int exponent;
+
+ assert(2 <= base && base <= 36);
+
+ {
+#if SIZEOF_BDIGIT_DBL == 2
+ maxpow = maxpow16_num[base-2];
+ exponent = maxpow16_exp[base-2];
+#elif SIZEOF_BDIGIT_DBL == 4
+ maxpow = maxpow32_num[base-2];
+ exponent = maxpow32_exp[base-2];
+#elif SIZEOF_BDIGIT_DBL == 8 && defined HAVE_UINT64_T
+ maxpow = maxpow64_num[base-2];
+ exponent = maxpow64_exp[base-2];
+#elif SIZEOF_BDIGIT_DBL == 16 && defined HAVE_UINT128_T
+ maxpow = maxpow128_num[base-2];
+ exponent = maxpow128_exp[base-2];
+#else
+ maxpow = base;
+ exponent = 1;
+ while (maxpow <= BDIGIT_DBL_MAX / base) {
+ maxpow *= base;
+ exponent++;
+ }
+#endif
+ }
- return (VALUE)big;
+ *exp_ret = exponent;
+ return maxpow;
}
-#define bignew(len,sign) bignew_1(cBignum,len,sign)
+static inline BDIGIT_DBL
+bary2bdigitdbl(const BDIGIT *ds, size_t n)
+{
+ assert(n <= 2);
-VALUE
-big_clone(x)
- struct RBignum *x;
+ if (n == 2)
+ return ds[0] | BIGUP(ds[1]);
+ if (n == 1)
+ return ds[0];
+ return 0;
+}
+
+static inline void
+bdigitdbl2bary(BDIGIT *ds, size_t n, BDIGIT_DBL num)
{
- VALUE z = bignew_1(CLASS_OF(x), x->len, x->sign);
+ assert(n == 2);
- MEMCPY(BDIGITS(z), BDIGITS(x), USHORT, x->len);
- return (VALUE)z;
+ ds[0] = BIGLO(num);
+ ds[1] = (BDIGIT)BIGDN(num);
}
-void
-big_2comp(x) /* get 2's complement */
- struct RBignum *x;
+static int
+bary_cmp(const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
{
- UINT i = x->len;
- USHORT *ds = BDIGITS(x);
- long num;
+ BARY_TRUNC(xds, xn);
+ BARY_TRUNC(yds, yn);
+
+ if (xn < yn)
+ return -1;
+ if (xn > yn)
+ return 1;
+
+ while (xn-- && xds[xn] == yds[xn])
+ ;
+ if (xn == (size_t)-1)
+ return 0;
+ return xds[xn] < yds[xn] ? -1 : 1;
+}
+
+static BDIGIT
+bary_small_lshift(BDIGIT *zds, const BDIGIT *xds, size_t n, int shift)
+{
+ size_t i;
+ BDIGIT_DBL num = 0;
+ assert(0 <= shift && shift < BITSPERDIG);
+
+ for (i=0; i<n; i++) {
+ num = num | (BDIGIT_DBL)*xds++ << shift;
+ *zds++ = BIGLO(num);
+ num = BIGDN(num);
+ }
+ return BIGLO(num);
+}
+
+static void
+bary_small_rshift(BDIGIT *zds, const BDIGIT *xds, size_t n, int shift, BDIGIT higher_bdigit)
+{
+ BDIGIT_DBL num = 0;
+ BDIGIT x;
+
+ assert(0 <= shift && shift < BITSPERDIG);
+
+ num = BIGUP(higher_bdigit);
+ while (n--) {
+ num = (num | xds[n]) >> shift;
+ x = xds[n];
+ zds[n] = BIGLO(num);
+ num = BIGUP(x);
+ }
+}
- while (i--) ds[i] = ~ds[i];
- i = 0; num = 1;
+static int
+bary_zero_p(BDIGIT *xds, size_t xn)
+{
+ if (xn == 0)
+ return 1;
do {
- num += (long)ds[i];
- ds[i++] = BIGLO(num);
+ if (xds[--xn]) return 0;
+ } while (xn);
+ return 1;
+}
+
+static void
+bary_neg(BDIGIT *ds, size_t n)
+{
+ while (n--)
+ ds[n] = BIGLO(~ds[n]);
+}
+
+static int
+bary_2comp(BDIGIT *ds, size_t n)
+{
+ size_t i;
+ i = 0;
+ for (i = 0; i < n; i++) {
+ if (ds[i] != 0) {
+ goto non_zero;
+ }
+ }
+ return 1;
+
+ non_zero:
+ ds[i] = BIGLO(~ds[i] + 1);
+ i++;
+ for (; i < n; i++) {
+ ds[i] = BIGLO(~ds[i]);
+ }
+ return 0;
+}
+
+static void
+bary_swap(BDIGIT *ds, size_t num_bdigits)
+{
+ BDIGIT *p1 = ds;
+ BDIGIT *p2 = ds + num_bdigits - 1;
+ for (; p1 < p2; p1++, p2--) {
+ BDIGIT tmp = *p1;
+ *p1 = *p2;
+ *p2 = tmp;
+ }
+}
+
+#define INTEGER_PACK_WORDORDER_MASK \
+ (INTEGER_PACK_MSWORD_FIRST | \
+ INTEGER_PACK_LSWORD_FIRST)
+#define INTEGER_PACK_BYTEORDER_MASK \
+ (INTEGER_PACK_MSBYTE_FIRST | \
+ INTEGER_PACK_LSBYTE_FIRST | \
+ INTEGER_PACK_NATIVE_BYTE_ORDER)
+
+static void
+validate_integer_pack_format(size_t numwords, size_t wordsize, size_t nails, int flags, int supported_flags)
+{
+ int wordorder_bits = flags & INTEGER_PACK_WORDORDER_MASK;
+ int byteorder_bits = flags & INTEGER_PACK_BYTEORDER_MASK;
+
+ if (flags & ~supported_flags) {
+ rb_raise(rb_eArgError, "unsupported flags specified");
+ }
+ if (wordorder_bits == 0) {
+ if (1 < numwords)
+ rb_raise(rb_eArgError, "word order not specified");
+ }
+ else if (wordorder_bits != INTEGER_PACK_MSWORD_FIRST &&
+ wordorder_bits != INTEGER_PACK_LSWORD_FIRST)
+ rb_raise(rb_eArgError, "unexpected word order");
+ if (byteorder_bits == 0) {
+ rb_raise(rb_eArgError, "byte order not specified");
+ }
+ else if (byteorder_bits != INTEGER_PACK_MSBYTE_FIRST &&
+ byteorder_bits != INTEGER_PACK_LSBYTE_FIRST &&
+ byteorder_bits != INTEGER_PACK_NATIVE_BYTE_ORDER)
+ rb_raise(rb_eArgError, "unexpected byte order");
+ if (wordsize == 0)
+ rb_raise(rb_eArgError, "invalid wordsize: %"PRI_SIZE_PREFIX"u", wordsize);
+ if (SSIZE_MAX < wordsize)
+ rb_raise(rb_eArgError, "too big wordsize: %"PRI_SIZE_PREFIX"u", wordsize);
+ if (wordsize <= nails / CHAR_BIT)
+ rb_raise(rb_eArgError, "too big nails: %"PRI_SIZE_PREFIX"u", nails);
+ if (SIZE_MAX / wordsize < numwords)
+ rb_raise(rb_eArgError, "too big numwords * wordsize: %"PRI_SIZE_PREFIX"u * %"PRI_SIZE_PREFIX"u", numwords, wordsize);
+}
+
+static void
+integer_pack_loop_setup(
+ size_t numwords, size_t wordsize, size_t nails, int flags,
+ size_t *word_num_fullbytes_ret,
+ int *word_num_partialbits_ret,
+ size_t *word_start_ret,
+ ssize_t *word_step_ret,
+ size_t *word_last_ret,
+ size_t *byte_start_ret,
+ int *byte_step_ret)
+{
+ int wordorder_bits = flags & INTEGER_PACK_WORDORDER_MASK;
+ int byteorder_bits = flags & INTEGER_PACK_BYTEORDER_MASK;
+ size_t word_num_fullbytes;
+ int word_num_partialbits;
+ size_t word_start;
+ ssize_t word_step;
+ size_t word_last;
+ size_t byte_start;
+ int byte_step;
+
+ word_num_partialbits = CHAR_BIT - (int)(nails % CHAR_BIT);
+ if (word_num_partialbits == CHAR_BIT)
+ word_num_partialbits = 0;
+ word_num_fullbytes = wordsize - (nails / CHAR_BIT);
+ if (word_num_partialbits != 0) {
+ word_num_fullbytes--;
+ }
+
+ if (wordorder_bits == INTEGER_PACK_MSWORD_FIRST) {
+ word_start = wordsize*(numwords-1);
+ word_step = -(ssize_t)wordsize;
+ word_last = 0;
+ }
+ else {
+ word_start = 0;
+ word_step = wordsize;
+ word_last = wordsize*(numwords-1);
+ }
+
+ if (byteorder_bits == INTEGER_PACK_NATIVE_BYTE_ORDER) {
+#ifdef WORDS_BIGENDIAN
+ byteorder_bits = INTEGER_PACK_MSBYTE_FIRST;
+#else
+ byteorder_bits = INTEGER_PACK_LSBYTE_FIRST;
+#endif
+ }
+ if (byteorder_bits == INTEGER_PACK_MSBYTE_FIRST) {
+ byte_start = wordsize-1;
+ byte_step = -1;
+ }
+ else {
+ byte_start = 0;
+ byte_step = 1;
+ }
+
+ *word_num_partialbits_ret = word_num_partialbits;
+ *word_num_fullbytes_ret = word_num_fullbytes;
+ *word_start_ret = word_start;
+ *word_step_ret = word_step;
+ *word_last_ret = word_last;
+ *byte_start_ret = byte_start;
+ *byte_step_ret = byte_step;
+}
+
+static inline void
+integer_pack_fill_dd(BDIGIT **dpp, BDIGIT **dep, BDIGIT_DBL *ddp, int *numbits_in_dd_p)
+{
+ if (*dpp < *dep && BITSPERDIG <= (int)sizeof(*ddp) * CHAR_BIT - *numbits_in_dd_p) {
+ *ddp |= (BDIGIT_DBL)(*(*dpp)++) << *numbits_in_dd_p;
+ *numbits_in_dd_p += BITSPERDIG;
+ }
+ else if (*dpp == *dep) {
+ /* higher bits are infinity zeros */
+ *numbits_in_dd_p = (int)sizeof(*ddp) * CHAR_BIT;
+ }
+}
+
+static inline BDIGIT_DBL
+integer_pack_take_lowbits(int n, BDIGIT_DBL *ddp, int *numbits_in_dd_p)
+{
+ BDIGIT_DBL ret;
+ ret = (*ddp) & (((BDIGIT_DBL)1 << n) - 1);
+ *ddp >>= n;
+ *numbits_in_dd_p -= n;
+ return ret;
+}
+
+#if !defined(WORDS_BIGENDIAN)
+static int
+bytes_2comp(unsigned char *buf, size_t len)
+{
+ size_t i;
+ for (i = 0; i < len; i++)
+ buf[i] = ~buf[i];
+ for (i = 0; i < len; i++) {
+ buf[i]++;
+ if (buf[i] != 0)
+ return 0;
+ }
+ return 1;
+}
+#endif
+
+static int
+bary_pack(int sign, BDIGIT *ds, size_t num_bdigits, void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
+{
+ BDIGIT *dp, *de;
+ unsigned char *buf, *bufend;
+
+ dp = ds;
+ de = ds + num_bdigits;
+
+ validate_integer_pack_format(numwords, wordsize, nails, flags,
+ INTEGER_PACK_MSWORD_FIRST|
+ INTEGER_PACK_LSWORD_FIRST|
+ INTEGER_PACK_MSBYTE_FIRST|
+ INTEGER_PACK_LSBYTE_FIRST|
+ INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP|
+ INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION);
+
+ while (dp < de && de[-1] == 0)
+ de--;
+ if (dp == de) {
+ sign = 0;
+ }
+
+ if (!(flags & INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION)) {
+ if (sign == 0) {
+ MEMZERO(words, unsigned char, numwords * wordsize);
+ return 0;
+ }
+ if (nails == 0 && numwords == 1) {
+ int need_swap = wordsize != 1 &&
+ (flags & INTEGER_PACK_BYTEORDER_MASK) != INTEGER_PACK_NATIVE_BYTE_ORDER &&
+ ((flags & INTEGER_PACK_MSBYTE_FIRST) ? !HOST_BIGENDIAN_P : HOST_BIGENDIAN_P);
+ if (0 < sign || !(flags & INTEGER_PACK_2COMP)) {
+ BDIGIT d;
+ if (wordsize == 1) {
+ *((unsigned char *)words) = (unsigned char)(d = dp[0]);
+ return ((1 < de - dp || CLEAR_LOWBITS(d, 8) != 0) ? 2 : 1) * sign;
+ }
+#if defined(HAVE_UINT16_T) && 2 <= SIZEOF_BDIGITS
+ if (wordsize == 2 && (uintptr_t)words % ALIGNOF(uint16_t) == 0) {
+ uint16_t u = (uint16_t)(d = dp[0]);
+ if (need_swap) u = swap16(u);
+ *((uint16_t *)words) = u;
+ return ((1 < de - dp || CLEAR_LOWBITS(d, 16) != 0) ? 2 : 1) * sign;
+ }
+#endif
+#if defined(HAVE_UINT32_T) && 4 <= SIZEOF_BDIGITS
+ if (wordsize == 4 && (uintptr_t)words % ALIGNOF(uint32_t) == 0) {
+ uint32_t u = (uint32_t)(d = dp[0]);
+ if (need_swap) u = swap32(u);
+ *((uint32_t *)words) = u;
+ return ((1 < de - dp || CLEAR_LOWBITS(d, 32) != 0) ? 2 : 1) * sign;
+ }
+#endif
+#if defined(HAVE_UINT64_T) && 8 <= SIZEOF_BDIGITS
+ if (wordsize == 8 && (uintptr_t)words % ALIGNOF(uint64_t) == 0) {
+ uint64_t u = (uint64_t)(d = dp[0]);
+ if (need_swap) u = swap64(u);
+ *((uint64_t *)words) = u;
+ return ((1 < de - dp || CLEAR_LOWBITS(d, 64) != 0) ? 2 : 1) * sign;
+ }
+#endif
+ }
+ else { /* sign < 0 && (flags & INTEGER_PACK_2COMP) */
+ BDIGIT_DBL_SIGNED d;
+ if (wordsize == 1) {
+ *((unsigned char *)words) = (unsigned char)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
+ return (1 < de - dp || FILL_LOWBITS(d, 8) != -1) ? -2 : -1;
+ }
+#if defined(HAVE_UINT16_T) && 2 <= SIZEOF_BDIGITS
+ if (wordsize == 2 && (uintptr_t)words % ALIGNOF(uint16_t) == 0) {
+ uint16_t u = (uint16_t)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
+ if (need_swap) u = swap16(u);
+ *((uint16_t *)words) = u;
+ return (wordsize == SIZEOF_BDIGITS && de - dp == 2 && dp[1] == 1 && dp[0] == 0) ? -1 :
+ (1 < de - dp || FILL_LOWBITS(d, 16) != -1) ? -2 : -1;
+ }
+#endif
+#if defined(HAVE_UINT32_T) && 4 <= SIZEOF_BDIGITS
+ if (wordsize == 4 && (uintptr_t)words % ALIGNOF(uint32_t) == 0) {
+ uint32_t u = (uint32_t)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
+ if (need_swap) u = swap32(u);
+ *((uint32_t *)words) = u;
+ return (wordsize == SIZEOF_BDIGITS && de - dp == 2 && dp[1] == 1 && dp[0] == 0) ? -1 :
+ (1 < de - dp || FILL_LOWBITS(d, 32) != -1) ? -2 : -1;
+ }
+#endif
+#if defined(HAVE_UINT64_T) && 8 <= SIZEOF_BDIGITS
+ if (wordsize == 8 && (uintptr_t)words % ALIGNOF(uint64_t) == 0) {
+ uint64_t u = (uint64_t)(d = -(BDIGIT_DBL_SIGNED)dp[0]);
+ if (need_swap) u = swap64(u);
+ *((uint64_t *)words) = u;
+ return (wordsize == SIZEOF_BDIGITS && de - dp == 2 && dp[1] == 1 && dp[0] == 0) ? -1 :
+ (1 < de - dp || FILL_LOWBITS(d, 64) != -1) ? -2 : -1;
+ }
+#endif
+ }
+ }
+#if !defined(WORDS_BIGENDIAN)
+ if (nails == 0 && SIZEOF_BDIGITS == sizeof(BDIGIT) &&
+ (flags & INTEGER_PACK_WORDORDER_MASK) == INTEGER_PACK_LSWORD_FIRST &&
+ (flags & INTEGER_PACK_BYTEORDER_MASK) != INTEGER_PACK_MSBYTE_FIRST) {
+ size_t src_size = (de - dp) * SIZEOF_BDIGITS;
+ size_t dst_size = numwords * wordsize;
+ int overflow = 0;
+ while (0 < src_size && ((unsigned char *)ds)[src_size-1] == 0)
+ src_size--;
+ if (src_size <= dst_size) {
+ MEMCPY(words, dp, char, src_size);
+ MEMZERO((char*)words + src_size, char, dst_size - src_size);
+ }
+ else {
+ MEMCPY(words, dp, char, dst_size);
+ overflow = 1;
+ }
+ if (sign < 0 && (flags & INTEGER_PACK_2COMP)) {
+ int zero_p = bytes_2comp(words, dst_size);
+ if (zero_p && overflow) {
+ unsigned char *p = (unsigned char *)dp;
+ if (dst_size == src_size-1 &&
+ p[dst_size] == 1) {
+ overflow = 0;
+ }
+ }
+ }
+ if (overflow)
+ sign *= 2;
+ return sign;
+ }
+#endif
+ if (nails == 0 && SIZEOF_BDIGITS == sizeof(BDIGIT) &&
+ wordsize % SIZEOF_BDIGITS == 0 && (uintptr_t)words % ALIGNOF(BDIGIT) == 0) {
+ size_t bdigits_per_word = wordsize / SIZEOF_BDIGITS;
+ size_t src_num_bdigits = de - dp;
+ size_t dst_num_bdigits = numwords * bdigits_per_word;
+ int overflow = 0;
+ int mswordfirst_p = (flags & INTEGER_PACK_MSWORD_FIRST) != 0;
+ int msbytefirst_p = (flags & INTEGER_PACK_NATIVE_BYTE_ORDER) ? HOST_BIGENDIAN_P :
+ (flags & INTEGER_PACK_MSBYTE_FIRST) != 0;
+ if (src_num_bdigits <= dst_num_bdigits) {
+ MEMCPY(words, dp, BDIGIT, src_num_bdigits);
+ BDIGITS_ZERO((BDIGIT*)words + src_num_bdigits, dst_num_bdigits - src_num_bdigits);
+ }
+ else {
+ MEMCPY(words, dp, BDIGIT, dst_num_bdigits);
+ overflow = 1;
+ }
+ if (sign < 0 && (flags & INTEGER_PACK_2COMP)) {
+ int zero_p = bary_2comp(words, dst_num_bdigits);
+ if (zero_p && overflow &&
+ dst_num_bdigits == src_num_bdigits-1 &&
+ dp[dst_num_bdigits] == 1)
+ overflow = 0;
+ }
+ if (msbytefirst_p != HOST_BIGENDIAN_P) {
+ size_t i;
+ for (i = 0; i < dst_num_bdigits; i++) {
+ BDIGIT d = ((BDIGIT*)words)[i];
+ ((BDIGIT*)words)[i] = swap_bdigit(d);
+ }
+ }
+ if (mswordfirst_p ? !msbytefirst_p : msbytefirst_p) {
+ size_t i;
+ BDIGIT *p = words;
+ for (i = 0; i < numwords; i++) {
+ bary_swap(p, bdigits_per_word);
+ p += bdigits_per_word;
+ }
+ }
+ if (mswordfirst_p) {
+ bary_swap(words, dst_num_bdigits);
+ }
+ if (overflow)
+ sign *= 2;
+ return sign;
+ }
+ }
+
+ buf = words;
+ bufend = buf + numwords * wordsize;
+
+ if (buf == bufend) {
+ /* overflow if non-zero*/
+ if (!(flags & INTEGER_PACK_2COMP) || 0 <= sign)
+ sign *= 2;
+ else {
+ if (de - dp == 1 && dp[0] == 1)
+ sign = -1; /* val == -1 == -2**(numwords*(wordsize*CHAR_BIT-nails)) */
+ else
+ sign = -2; /* val < -1 == -2**(numwords*(wordsize*CHAR_BIT-nails)) */
+ }
+ }
+ else if (dp == de) {
+ memset(buf, '\0', bufend - buf);
+ }
+ else if (dp < de && buf < bufend) {
+ int word_num_partialbits;
+ size_t word_num_fullbytes;
+
+ ssize_t word_step;
+ size_t byte_start;
+ int byte_step;
+
+ size_t word_start, word_last;
+ unsigned char *wordp, *last_wordp;
+ BDIGIT_DBL dd;
+ int numbits_in_dd;
+
+ integer_pack_loop_setup(numwords, wordsize, nails, flags,
+ &word_num_fullbytes, &word_num_partialbits,
+ &word_start, &word_step, &word_last, &byte_start, &byte_step);
+
+ wordp = buf + word_start;
+ last_wordp = buf + word_last;
+
+ dd = 0;
+ numbits_in_dd = 0;
+
+#define FILL_DD \
+ integer_pack_fill_dd(&dp, &de, &dd, &numbits_in_dd)
+#define TAKE_LOWBITS(n) \
+ integer_pack_take_lowbits(n, &dd, &numbits_in_dd)
+
+ while (1) {
+ size_t index_in_word = 0;
+ unsigned char *bytep = wordp + byte_start;
+ while (index_in_word < word_num_fullbytes) {
+ FILL_DD;
+ *bytep = TAKE_LOWBITS(CHAR_BIT);
+ bytep += byte_step;
+ index_in_word++;
+ }
+ if (word_num_partialbits) {
+ FILL_DD;
+ *bytep = TAKE_LOWBITS(word_num_partialbits);
+ bytep += byte_step;
+ index_in_word++;
+ }
+ while (index_in_word < wordsize) {
+ *bytep = 0;
+ bytep += byte_step;
+ index_in_word++;
+ }
+
+ if (wordp == last_wordp)
+ break;
+
+ wordp += word_step;
+ }
+ FILL_DD;
+ /* overflow tests */
+ if (dp != de || 1 < dd) {
+ /* 2**(numwords*(wordsize*CHAR_BIT-nails)+1) <= abs(val) */
+ sign *= 2;
+ }
+ else if (dd == 1) {
+ /* 2**(numwords*(wordsize*CHAR_BIT-nails)) <= abs(val) < 2**(numwords*(wordsize*CHAR_BIT-nails)+1) */
+ if (!(flags & INTEGER_PACK_2COMP) || 0 <= sign)
+ sign *= 2;
+ else { /* overflow_2comp && sign == -1 */
+ /* test lower bits are all zero. */
+ dp = ds;
+ while (dp < de && *dp == 0)
+ dp++;
+ if (de - dp == 1 && /* only one non-zero word. */
+ POW2_P(*dp)) /* *dp contains only one bit set. */
+ sign = -1; /* val == -2**(numwords*(wordsize*CHAR_BIT-nails)) */
+ else
+ sign = -2; /* val < -2**(numwords*(wordsize*CHAR_BIT-nails)) */
+ }
+ }
+ }
+
+ if ((flags & INTEGER_PACK_2COMP) && (sign < 0 && numwords != 0)) {
+ unsigned char *buf;
+
+ int word_num_partialbits;
+ size_t word_num_fullbytes;
+
+ ssize_t word_step;
+ size_t byte_start;
+ int byte_step;
+
+ size_t word_start, word_last;
+ unsigned char *wordp, *last_wordp;
+
+ unsigned int partialbits_mask;
+ int carry;
+
+ integer_pack_loop_setup(numwords, wordsize, nails, flags,
+ &word_num_fullbytes, &word_num_partialbits,
+ &word_start, &word_step, &word_last, &byte_start, &byte_step);
+
+ partialbits_mask = (1 << word_num_partialbits) - 1;
+
+ buf = words;
+ wordp = buf + word_start;
+ last_wordp = buf + word_last;
+
+ carry = 1;
+ while (1) {
+ size_t index_in_word = 0;
+ unsigned char *bytep = wordp + byte_start;
+ while (index_in_word < word_num_fullbytes) {
+ carry += (unsigned char)~*bytep;
+ *bytep = (unsigned char)carry;
+ carry >>= CHAR_BIT;
+ bytep += byte_step;
+ index_in_word++;
+ }
+ if (word_num_partialbits) {
+ carry += (*bytep & partialbits_mask) ^ partialbits_mask;
+ *bytep = carry & partialbits_mask;
+ carry >>= word_num_partialbits;
+ bytep += byte_step;
+ index_in_word++;
+ }
+
+ if (wordp == last_wordp)
+ break;
+
+ wordp += word_step;
+ }
+ }
+
+ return sign;
+#undef FILL_DD
+#undef TAKE_LOWBITS
+}
+
+static size_t
+integer_unpack_num_bdigits_small(size_t numwords, size_t wordsize, size_t nails, int *nlp_bits_ret)
+{
+ /* nlp_bits stands for number of leading padding bits */
+ size_t num_bits = (wordsize * CHAR_BIT - nails) * numwords;
+ size_t num_bdigits = (num_bits + BITSPERDIG - 1) / BITSPERDIG;
+ *nlp_bits_ret = (int)(num_bdigits * BITSPERDIG - num_bits);
+ return num_bdigits;
+}
+
+static size_t
+integer_unpack_num_bdigits_generic(size_t numwords, size_t wordsize, size_t nails, int *nlp_bits_ret)
+{
+ /* BITSPERDIG = SIZEOF_BDIGITS * CHAR_BIT */
+ /* num_bits = (wordsize * CHAR_BIT - nails) * numwords */
+ /* num_bdigits = (num_bits + BITSPERDIG - 1) / BITSPERDIG */
+
+ /* num_bits = CHAR_BIT * (wordsize * numwords) - nails * numwords = CHAR_BIT * num_bytes1 - nails * numwords */
+ size_t num_bytes1 = wordsize * numwords;
+
+ /* q1 * CHAR_BIT + r1 = numwords */
+ size_t q1 = numwords / CHAR_BIT;
+ size_t r1 = numwords % CHAR_BIT;
+
+ /* num_bits = CHAR_BIT * num_bytes1 - nails * (q1 * CHAR_BIT + r1) = CHAR_BIT * num_bytes2 - nails * r1 */
+ size_t num_bytes2 = num_bytes1 - nails * q1;
+
+ /* q2 * CHAR_BIT + r2 = nails */
+ size_t q2 = nails / CHAR_BIT;
+ size_t r2 = nails % CHAR_BIT;
+
+ /* num_bits = CHAR_BIT * num_bytes2 - (q2 * CHAR_BIT + r2) * r1 = CHAR_BIT * num_bytes3 - r1 * r2 */
+ size_t num_bytes3 = num_bytes2 - q2 * r1;
+
+ /* q3 * BITSPERDIG + r3 = num_bytes3 */
+ size_t q3 = num_bytes3 / BITSPERDIG;
+ size_t r3 = num_bytes3 % BITSPERDIG;
+
+ /* num_bits = CHAR_BIT * (q3 * BITSPERDIG + r3) - r1 * r2 = BITSPERDIG * num_digits1 + CHAR_BIT * r3 - r1 * r2 */
+ size_t num_digits1 = CHAR_BIT * q3;
+
+ /*
+ * if CHAR_BIT * r3 >= r1 * r2
+ * CHAR_BIT * r3 - r1 * r2 = CHAR_BIT * BITSPERDIG - (CHAR_BIT * BITSPERDIG - (CHAR_BIT * r3 - r1 * r2))
+ * q4 * BITSPERDIG + r4 = CHAR_BIT * BITSPERDIG - (CHAR_BIT * r3 - r1 * r2)
+ * num_bits = BITSPERDIG * num_digits1 + CHAR_BIT * BITSPERDIG - (q4 * BITSPERDIG + r4) = BITSPERDIG * num_digits2 - r4
+ * else
+ * q4 * BITSPERDIG + r4 = -(CHAR_BIT * r3 - r1 * r2)
+ * num_bits = BITSPERDIG * num_digits1 - (q4 * BITSPERDIG + r4) = BITSPERDIG * num_digits2 - r4
+ * end
+ */
+
+ if (CHAR_BIT * r3 >= r1 * r2) {
+ size_t tmp1 = CHAR_BIT * BITSPERDIG - (CHAR_BIT * r3 - r1 * r2);
+ size_t q4 = tmp1 / BITSPERDIG;
+ int r4 = (int)(tmp1 % BITSPERDIG);
+ size_t num_digits2 = num_digits1 + CHAR_BIT - q4;
+ *nlp_bits_ret = r4;
+ return num_digits2;
+ }
+ else {
+ size_t tmp1 = r1 * r2 - CHAR_BIT * r3;
+ size_t q4 = tmp1 / BITSPERDIG;
+ int r4 = (int)(tmp1 % BITSPERDIG);
+ size_t num_digits2 = num_digits1 - q4;
+ *nlp_bits_ret = r4;
+ return num_digits2;
+ }
+}
+
+static size_t
+integer_unpack_num_bdigits(size_t numwords, size_t wordsize, size_t nails, int *nlp_bits_ret)
+{
+ size_t num_bdigits;
+
+ if (numwords <= (SIZE_MAX - (BITSPERDIG-1)) / CHAR_BIT / wordsize) {
+ num_bdigits = integer_unpack_num_bdigits_small(numwords, wordsize, nails, nlp_bits_ret);
+#ifdef DEBUG_INTEGER_PACK
+ {
+ int nlp_bits1;
+ size_t num_bdigits1 = integer_unpack_num_bdigits_generic(numwords, wordsize, nails, &nlp_bits1);
+ assert(num_bdigits == num_bdigits1);
+ assert(*nlp_bits_ret == nlp_bits1);
+ }
+#endif
+ }
+ else {
+ num_bdigits = integer_unpack_num_bdigits_generic(numwords, wordsize, nails, nlp_bits_ret);
+ }
+ return num_bdigits;
+}
+
+static inline void
+integer_unpack_push_bits(int data, int numbits, BDIGIT_DBL *ddp, int *numbits_in_dd_p, BDIGIT **dpp)
+{
+ (*ddp) |= ((BDIGIT_DBL)data) << (*numbits_in_dd_p);
+ *numbits_in_dd_p += numbits;
+ while (BITSPERDIG <= *numbits_in_dd_p) {
+ *(*dpp)++ = BIGLO(*ddp);
+ *ddp = BIGDN(*ddp);
+ *numbits_in_dd_p -= BITSPERDIG;
+ }
+}
+
+static int
+integer_unpack_single_bdigit(BDIGIT u, size_t size, int flags, BDIGIT *dp)
+{
+ int sign;
+ if (flags & INTEGER_PACK_2COMP) {
+ sign = (flags & INTEGER_PACK_NEGATIVE) ?
+ ((size == SIZEOF_BDIGITS && u == 0) ? -2 : -1) :
+ ((u >> (size * CHAR_BIT - 1)) ? -1 : 1);
+ if (sign < 0) {
+ u |= LSHIFTX(BDIGMAX, size * CHAR_BIT);
+ u = BIGLO(1 + ~u);
+ }
+ }
+ else
+ sign = (flags & INTEGER_PACK_NEGATIVE) ? -1 : 1;
+ *dp = u;
+ return sign;
+}
+
+static int
+bary_unpack_internal(BDIGIT *bdigits, size_t num_bdigits, const void *words, size_t numwords, size_t wordsize, size_t nails, int flags, int nlp_bits)
+{
+ int sign;
+ const unsigned char *buf = words;
+ BDIGIT *dp;
+ BDIGIT *de;
+
+ dp = bdigits;
+ de = dp + num_bdigits;
+
+ if (!(flags & INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION)) {
+ if (nails == 0 && numwords == 1) {
+ int need_swap = wordsize != 1 &&
+ (flags & INTEGER_PACK_BYTEORDER_MASK) != INTEGER_PACK_NATIVE_BYTE_ORDER &&
+ ((flags & INTEGER_PACK_MSBYTE_FIRST) ? !HOST_BIGENDIAN_P : HOST_BIGENDIAN_P);
+ if (wordsize == 1) {
+ return integer_unpack_single_bdigit(*(uint8_t *)buf, sizeof(uint8_t), flags, dp);
+ }
+#if defined(HAVE_UINT16_T) && 2 <= SIZEOF_BDIGITS
+ if (wordsize == 2 && (uintptr_t)words % ALIGNOF(uint16_t) == 0) {
+ uint16_t u = *(uint16_t *)buf;
+ return integer_unpack_single_bdigit(need_swap ? swap16(u) : u, sizeof(uint16_t), flags, dp);
+ }
+#endif
+#if defined(HAVE_UINT32_T) && 4 <= SIZEOF_BDIGITS
+ if (wordsize == 4 && (uintptr_t)words % ALIGNOF(uint32_t) == 0) {
+ uint32_t u = *(uint32_t *)buf;
+ return integer_unpack_single_bdigit(need_swap ? swap32(u) : u, sizeof(uint32_t), flags, dp);
+ }
+#endif
+#if defined(HAVE_UINT64_T) && 8 <= SIZEOF_BDIGITS
+ if (wordsize == 8 && (uintptr_t)words % ALIGNOF(uint64_t) == 0) {
+ uint64_t u = *(uint64_t *)buf;
+ return integer_unpack_single_bdigit(need_swap ? swap64(u) : u, sizeof(uint64_t), flags, dp);
+ }
+#endif
+ }
+#if !defined(WORDS_BIGENDIAN)
+ if (nails == 0 && SIZEOF_BDIGITS == sizeof(BDIGIT) &&
+ (flags & INTEGER_PACK_WORDORDER_MASK) == INTEGER_PACK_LSWORD_FIRST &&
+ (flags & INTEGER_PACK_BYTEORDER_MASK) != INTEGER_PACK_MSBYTE_FIRST) {
+ size_t src_size = numwords * wordsize;
+ size_t dst_size = num_bdigits * SIZEOF_BDIGITS;
+ MEMCPY(dp, words, char, src_size);
+ if (flags & INTEGER_PACK_2COMP) {
+ if (flags & INTEGER_PACK_NEGATIVE) {
+ int zero_p;
+ memset((char*)dp + src_size, 0xff, dst_size - src_size);
+ zero_p = bary_2comp(dp, num_bdigits);
+ sign = zero_p ? -2 : -1;
+ }
+ else if (buf[src_size-1] >> (CHAR_BIT-1)) {
+ memset((char*)dp + src_size, 0xff, dst_size - src_size);
+ bary_2comp(dp, num_bdigits);
+ sign = -1;
+ }
+ else {
+ MEMZERO((char*)dp + src_size, char, dst_size - src_size);
+ sign = 1;
+ }
+ }
+ else {
+ MEMZERO((char*)dp + src_size, char, dst_size - src_size);
+ sign = (flags & INTEGER_PACK_NEGATIVE) ? -1 : 1;
+ }
+ return sign;
+ }
+#endif
+ if (nails == 0 && SIZEOF_BDIGITS == sizeof(BDIGIT) &&
+ wordsize % SIZEOF_BDIGITS == 0) {
+ size_t bdigits_per_word = wordsize / SIZEOF_BDIGITS;
+ int mswordfirst_p = (flags & INTEGER_PACK_MSWORD_FIRST) != 0;
+ int msbytefirst_p = (flags & INTEGER_PACK_NATIVE_BYTE_ORDER) ? HOST_BIGENDIAN_P :
+ (flags & INTEGER_PACK_MSBYTE_FIRST) != 0;
+ MEMCPY(dp, words, BDIGIT, numwords*bdigits_per_word);
+ if (mswordfirst_p) {
+ bary_swap(dp, num_bdigits);
+ }
+ if (mswordfirst_p ? !msbytefirst_p : msbytefirst_p) {
+ size_t i;
+ BDIGIT *p = dp;
+ for (i = 0; i < numwords; i++) {
+ bary_swap(p, bdigits_per_word);
+ p += bdigits_per_word;
+ }
+ }
+ if (msbytefirst_p != HOST_BIGENDIAN_P) {
+ BDIGIT *p;
+ for (p = dp; p < de; p++) {
+ BDIGIT d = *p;
+ *p = swap_bdigit(d);
+ }
+ }
+ if (flags & INTEGER_PACK_2COMP) {
+ if (flags & INTEGER_PACK_NEGATIVE) {
+ int zero_p = bary_2comp(dp, num_bdigits);
+ sign = zero_p ? -2 : -1;
+ }
+ else if (BDIGIT_MSB(de[-1])) {
+ bary_2comp(dp, num_bdigits);
+ sign = -1;
+ }
+ else {
+ sign = 1;
+ }
+ }
+ else {
+ sign = (flags & INTEGER_PACK_NEGATIVE) ? -1 : 1;
+ }
+ return sign;
+ }
+ }
+
+ if (num_bdigits != 0) {
+ int word_num_partialbits;
+ size_t word_num_fullbytes;
+
+ ssize_t word_step;
+ size_t byte_start;
+ int byte_step;
+
+ size_t word_start, word_last;
+ const unsigned char *wordp, *last_wordp;
+ BDIGIT_DBL dd;
+ int numbits_in_dd;
+
+ integer_pack_loop_setup(numwords, wordsize, nails, flags,
+ &word_num_fullbytes, &word_num_partialbits,
+ &word_start, &word_step, &word_last, &byte_start, &byte_step);
+
+ wordp = buf + word_start;
+ last_wordp = buf + word_last;
+
+ dd = 0;
+ numbits_in_dd = 0;
+
+#define PUSH_BITS(data, numbits) \
+ integer_unpack_push_bits(data, numbits, &dd, &numbits_in_dd, &dp)
+
+ while (1) {
+ size_t index_in_word = 0;
+ const unsigned char *bytep = wordp + byte_start;
+ while (index_in_word < word_num_fullbytes) {
+ PUSH_BITS(*bytep, CHAR_BIT);
+ bytep += byte_step;
+ index_in_word++;
+ }
+ if (word_num_partialbits) {
+ PUSH_BITS(*bytep & ((1 << word_num_partialbits) - 1), word_num_partialbits);
+ bytep += byte_step;
+ index_in_word++;
+ }
+
+ if (wordp == last_wordp)
+ break;
+
+ wordp += word_step;
+ }
+ if (dd)
+ *dp++ = (BDIGIT)dd;
+ assert(dp <= de);
+ while (dp < de)
+ *dp++ = 0;
+#undef PUSH_BITS
+ }
+
+ if (!(flags & INTEGER_PACK_2COMP)) {
+ sign = (flags & INTEGER_PACK_NEGATIVE) ? -1 : 1;
+ }
+ else {
+ if (nlp_bits) {
+ if ((flags & INTEGER_PACK_NEGATIVE) ||
+ (bdigits[num_bdigits-1] >> (BITSPERDIG - nlp_bits - 1))) {
+ bdigits[num_bdigits-1] |= BIGLO(BDIGMAX << (BITSPERDIG - nlp_bits));
+ sign = -1;
+ }
+ else {
+ sign = 1;
+ }
+ }
+ else {
+ if (flags & INTEGER_PACK_NEGATIVE) {
+ sign = bary_zero_p(bdigits, num_bdigits) ? -2 : -1;
+ }
+ else {
+ if (num_bdigits != 0 && BDIGIT_MSB(bdigits[num_bdigits-1]))
+ sign = -1;
+ else
+ sign = 1;
+ }
+ }
+ if (sign == -1 && num_bdigits != 0) {
+ bary_2comp(bdigits, num_bdigits);
+ }
+ }
+
+ return sign;
+}
+
+static void
+bary_unpack(BDIGIT *bdigits, size_t num_bdigits, const void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
+{
+ size_t num_bdigits0;
+ int nlp_bits;
+ int sign;
+
+ validate_integer_pack_format(numwords, wordsize, nails, flags,
+ INTEGER_PACK_MSWORD_FIRST|
+ INTEGER_PACK_LSWORD_FIRST|
+ INTEGER_PACK_MSBYTE_FIRST|
+ INTEGER_PACK_LSBYTE_FIRST|
+ INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP|
+ INTEGER_PACK_FORCE_BIGNUM|
+ INTEGER_PACK_NEGATIVE|
+ INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION);
+
+ num_bdigits0 = integer_unpack_num_bdigits(numwords, wordsize, nails, &nlp_bits);
+
+ assert(num_bdigits0 <= num_bdigits);
+
+ sign = bary_unpack_internal(bdigits, num_bdigits0, words, numwords, wordsize, nails, flags, nlp_bits);
+
+ if (num_bdigits0 < num_bdigits) {
+ BDIGITS_ZERO(bdigits + num_bdigits0, num_bdigits - num_bdigits0);
+ if (sign == -2) {
+ bdigits[num_bdigits0] = 1;
+ }
+ }
+}
+
+static int
+bary_subb(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, int borrow)
+{
+ BDIGIT_DBL_SIGNED num;
+ size_t i;
+ size_t sn;
+
+ assert(xn <= zn);
+ assert(yn <= zn);
+
+ sn = xn < yn ? xn : yn;
+
+ num = borrow ? -1 : 0;
+ for (i = 0; i < sn; i++) {
+ num += (BDIGIT_DBL_SIGNED)xds[i] - yds[i];
+ zds[i] = BIGLO(num);
num = BIGDN(num);
- } while (i < x->len);
- if (ds[0] == 1 || ds[0] == 0) {
- for (i=1;i<x->len;i++) {
- if (ds[i] != 0) return;
+ }
+ if (yn <= xn) {
+ for (; i < xn; i++) {
+ if (num == 0) goto num_is_zero;
+ num += xds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ }
+ else {
+ for (; i < yn; i++) {
+ num -= yds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ }
+ if (num == 0) goto num_is_zero;
+ for (; i < zn; i++) {
+ zds[i] = BDIGMAX;
+ }
+ return 1;
+
+ num_is_zero:
+ if (xds == zds && xn == zn)
+ return 0;
+ for (; i < xn; i++) {
+ zds[i] = xds[i];
+ }
+ for (; i < zn; i++) {
+ zds[i] = 0;
+ }
+ return 0;
+}
+
+static int
+bary_sub(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ return bary_subb(zds, zn, xds, xn, yds, yn, 0);
+}
+
+static int
+bary_sub_one(BDIGIT *zds, size_t zn)
+{
+ return bary_subb(zds, zn, zds, zn, NULL, 0, 1);
+}
+
+static int
+bary_addc(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, int carry)
+{
+ BDIGIT_DBL num;
+ size_t i;
+
+ assert(xn <= zn);
+ assert(yn <= zn);
+
+ if (xn > yn) {
+ const BDIGIT *tds;
+ tds = xds; xds = yds; yds = tds;
+ i = xn; xn = yn; yn = i;
+ }
+
+ num = carry ? 1 : 0;
+ for (i = 0; i < xn; i++) {
+ num += (BDIGIT_DBL)xds[i] + yds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ for (; i < yn; i++) {
+ if (num == 0) goto num_is_zero;
+ num += yds[i];
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ for (; i < zn; i++) {
+ if (num == 0) goto num_is_zero;
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ return num != 0;
+
+ num_is_zero:
+ if (yds == zds && yn == zn)
+ return 0;
+ for (; i < yn; i++) {
+ zds[i] = yds[i];
+ }
+ for (; i < zn; i++) {
+ zds[i] = 0;
+ }
+ return 0;
+}
+
+static int
+bary_add(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ return bary_addc(zds, zn, xds, xn, yds, yn, 0);
+}
+
+static int
+bary_add_one(BDIGIT *ds, size_t n)
+{
+ size_t i;
+ for (i = 0; i < n; i++) {
+ ds[i] = BIGLO(ds[i]+1);
+ if (ds[i] != 0)
+ return 0;
+ }
+ return 1;
+}
+
+static void
+bary_mul_single(BDIGIT *zds, size_t zn, BDIGIT x, BDIGIT y)
+{
+ BDIGIT_DBL n;
+
+ assert(2 <= zn);
+
+ n = (BDIGIT_DBL)x * y;
+ bdigitdbl2bary(zds, 2, n);
+ BDIGITS_ZERO(zds + 2, zn - 2);
+}
+
+static int
+bary_muladd_1xN(BDIGIT *zds, size_t zn, BDIGIT x, const BDIGIT *yds, size_t yn)
+{
+ BDIGIT_DBL n;
+ BDIGIT_DBL dd;
+ size_t j;
+
+ assert(zn > yn);
+
+ if (x == 0)
+ return 0;
+ dd = x;
+ n = 0;
+ for (j = 0; j < yn; j++) {
+ BDIGIT_DBL ee = n + dd * yds[j];
+ if (ee) {
+ n = zds[j] + ee;
+ zds[j] = BIGLO(n);
+ n = BIGDN(n);
+ }
+ else {
+ n = 0;
+ }
+
+ }
+ for (; j < zn; j++) {
+ if (n == 0)
+ break;
+ n += zds[j];
+ zds[j] = BIGLO(n);
+ n = BIGDN(n);
+ }
+ return n != 0;
+}
+
+static BDIGIT_DBL_SIGNED
+bigdivrem_mulsub(BDIGIT *zds, size_t zn, BDIGIT x, const BDIGIT *yds, size_t yn)
+{
+ size_t i;
+ BDIGIT_DBL t2;
+ BDIGIT_DBL_SIGNED num;
+
+ assert(zn == yn + 1);
+
+ num = 0;
+ t2 = 0;
+ i = 0;
+
+ do {
+ BDIGIT_DBL ee;
+ t2 += (BDIGIT_DBL)yds[i] * x;
+ ee = num - BIGLO(t2);
+ num = (BDIGIT_DBL)zds[i] + ee;
+ if (ee) zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ t2 = BIGDN(t2);
+ } while (++i < yn);
+ num += zds[i] - t2; /* borrow from high digit; don't update */
+ return num;
+}
+
+static int
+bary_mulsub_1xN(BDIGIT *zds, size_t zn, BDIGIT x, const BDIGIT *yds, size_t yn)
+{
+ BDIGIT_DBL_SIGNED num;
+
+ assert(zn == yn + 1);
+
+ num = bigdivrem_mulsub(zds, zn, x, yds, yn);
+ zds[yn] = BIGLO(num);
+ if (BIGDN(num))
+ return 1;
+ return 0;
+}
+
+static void
+bary_mul_normal(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ size_t i;
+
+ assert(xn + yn <= zn);
+
+ BDIGITS_ZERO(zds, zn);
+ for (i = 0; i < xn; i++) {
+ bary_muladd_1xN(zds+i, zn-i, xds[i], yds, yn);
+ }
+}
+
+VALUE
+rb_big_mul_normal(VALUE x, VALUE y)
+{
+ size_t xn = RBIGNUM_LEN(x), yn = RBIGNUM_LEN(y), zn = xn + yn;
+ VALUE z = bignew(zn, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
+ bary_mul_normal(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+
+/* efficient squaring (2 times faster than normal multiplication)
+ * ref: Handbook of Applied Cryptography, Algorithm 14.16
+ * http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf
+ */
+static void
+bary_sq_fast(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn)
+{
+ size_t i, j;
+ BDIGIT_DBL c, v, w;
+ BDIGIT vl;
+ int vh;
+
+ assert(xn * 2 <= zn);
+
+ BDIGITS_ZERO(zds, zn);
+
+ if (xn == 0)
+ return;
+
+ for (i = 0; i < xn-1; i++) {
+ v = (BDIGIT_DBL)xds[i];
+ if (!v)
+ continue;
+ c = (BDIGIT_DBL)zds[i + i] + v * v;
+ zds[i + i] = BIGLO(c);
+ c = BIGDN(c);
+ v *= 2;
+ vl = BIGLO(v);
+ vh = (int)BIGDN(v);
+ for (j = i + 1; j < xn; j++) {
+ w = (BDIGIT_DBL)xds[j];
+ c += (BDIGIT_DBL)zds[i + j] + vl * w;
+ zds[i + j] = BIGLO(c);
+ c = BIGDN(c);
+ if (vh)
+ c += w;
+ }
+ if (c) {
+ c += (BDIGIT_DBL)zds[i + xn];
+ zds[i + xn] = BIGLO(c);
+ c = BIGDN(c);
+ if (c)
+ zds[i + xn + 1] += (BDIGIT)c;
+ }
+ }
+
+ /* i == xn-1 */
+ v = (BDIGIT_DBL)xds[i];
+ if (!v)
+ return;
+ c = (BDIGIT_DBL)zds[i + i] + v * v;
+ zds[i + i] = BIGLO(c);
+ c = BIGDN(c);
+ if (c) {
+ zds[i + xn] += BIGLO(c);
+ }
+}
+
+VALUE
+rb_big_sq_fast(VALUE x)
+{
+ size_t xn = RBIGNUM_LEN(x), zn = 2 * xn;
+ VALUE z = bignew(zn, 1);
+ bary_sq_fast(BDIGITS(z), zn, BDIGITS(x), xn);
+ RB_GC_GUARD(x);
+ return z;
+}
+
+/* balancing multiplication by slicing larger argument */
+static void
+bary_mul_balance_with_mulfunc(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn, mulfunc_t *mulfunc)
+{
+ VALUE work = 0;
+ size_t yn0 = yn;
+ size_t r, n;
+
+ assert(xn + yn <= zn);
+ assert(xn <= yn);
+ assert(!KARATSUBA_BALANCED(xn, yn) || !TOOM3_BALANCED(xn, yn));
+
+ BDIGITS_ZERO(zds, xn);
+
+ n = 0;
+ while (yn > 0) {
+ BDIGIT *tds;
+ size_t tn;
+ r = xn > yn ? yn : xn;
+ tn = xn + r;
+ if (2 * (xn + r) <= zn - n) {
+ tds = zds + n + xn + r;
+ mulfunc(tds, tn, xds, xn, yds + n, r, wds, wn);
+ BDIGITS_ZERO(zds + n + xn, r);
+ bary_add(zds + n, tn,
+ zds + n, tn,
+ tds, tn);
+ }
+ else {
+ if (wn < xn) {
+ wn = xn;
+ wds = ALLOCV_N(BDIGIT, work, wn);
+ }
+ tds = zds + n;
+ MEMCPY(wds, zds + n, BDIGIT, xn);
+ mulfunc(tds, tn, xds, xn, yds + n, r, wds-xn, wn-xn);
+ bary_add(zds + n, tn,
+ zds + n, tn,
+ wds, xn);
+ }
+ yn -= r;
+ n += r;
+ }
+ BDIGITS_ZERO(zds+xn+yn0, zn - (xn+yn0));
+
+ if (work)
+ ALLOCV_END(work);
+}
+
+VALUE
+rb_big_mul_balance(VALUE x, VALUE y)
+{
+ size_t xn = RBIGNUM_LEN(x), yn = RBIGNUM_LEN(y), zn = xn + yn;
+ VALUE z = bignew(zn, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
+ bary_mul_balance_with_mulfunc(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn, NULL, 0, bary_mul_toom3_start);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+
+/* multiplication by karatsuba method */
+static void
+bary_mul_karatsuba(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ VALUE work = 0;
+
+ size_t n;
+ int sub_p, borrow, carry1, carry2, carry3;
+
+ int odd_y = 0;
+ int odd_xy = 0;
+ int sq;
+
+ const BDIGIT *xds0, *xds1, *yds0, *yds1;
+ BDIGIT *zds0, *zds1, *zds2, *zds3;
+
+ assert(xn + yn <= zn);
+ assert(xn <= yn);
+ assert(yn < 2 * xn);
+
+ sq = xds == yds && xn == yn;
+
+ if (yn & 1) {
+ odd_y = 1;
+ yn--;
+ if (yn < xn) {
+ odd_xy = 1;
+ xn--;
+ }
+ }
+
+ n = yn / 2;
+
+ assert(n < xn);
+
+ if (wn < n) {
+ /* This function itself needs only n BDIGITs for work area.
+ * However this function calls bary_mul_karatsuba and
+ * bary_mul_balance recursively.
+ * 2n BDIGITs are enough to avoid allocations in
+ * the recursively called functions.
+ */
+ wn = 2*n;
+ wds = ALLOCV_N(BDIGIT, work, wn);
+ }
+
+ /* Karatsuba algorithm:
+ *
+ * x = x0 + r*x1
+ * y = y0 + r*y1
+ * z = x*y
+ * = (x0 + r*x1) * (y0 + r*y1)
+ * = x0*y0 + r*(x1*y0 + x0*y1) + r*r*x1*y1
+ * = x0*y0 + r*(x0*y0 + x1*y1 - (x1-x0)*(y1-y0)) + r*r*x1*y1
+ * = x0*y0 + r*(x0*y0 + x1*y1 - (x0-x1)*(y0-y1)) + r*r*x1*y1
+ */
+
+ xds0 = xds;
+ xds1 = xds + n;
+ yds0 = yds;
+ yds1 = yds + n;
+ zds0 = zds;
+ zds1 = zds + n;
+ zds2 = zds + 2*n;
+ zds3 = zds + 3*n;
+
+ sub_p = 1;
+
+ /* zds0:? zds1:? zds2:? zds3:? wds:? */
+
+ if (bary_sub(zds0, n, xds, n, xds+n, xn-n)) {
+ bary_2comp(zds0, n);
+ sub_p = !sub_p;
+ }
+
+ /* zds0:|x1-x0| zds1:? zds2:? zds3:? wds:? */
+
+ if (sq) {
+ sub_p = 1;
+ bary_mul_karatsuba_start(zds1, 2*n, zds0, n, zds0, n, wds, wn);
+ }
+ else {
+ if (bary_sub(wds, n, yds, n, yds+n, n)) {
+ bary_2comp(wds, n);
+ sub_p = !sub_p;
+ }
+
+ /* zds0:|x1-x0| zds1:? zds2:? zds3:? wds:|y1-y0| */
+
+ bary_mul_karatsuba_start(zds1, 2*n, zds0, n, wds, n, wds+n, wn-n);
+ }
+
+ /* zds0:|x1-x0| zds1,zds2:|x1-x0|*|y1-y0| zds3:? wds:|y1-y0| */
+
+ borrow = 0;
+ if (sub_p) {
+ borrow = !bary_2comp(zds1, 2*n);
+ }
+ /* zds0:|x1-x0| zds1,zds2:-?|x1-x0|*|y1-y0| zds3:? wds:|y1-y0| */
+
+ MEMCPY(wds, zds1, BDIGIT, n);
+
+ /* zds0:|x1-x0| zds1,zds2:-?|x1-x0|*|y1-y0| zds3:? wds:lo(-?|x1-x0|*|y1-y0|) */
+
+ bary_mul_karatsuba_start(zds0, 2*n, xds0, n, yds0, n, wds+n, wn-n);
+
+ /* zds0,zds1:x0*y0 zds2:hi(-?|x1-x0|*|y1-y0|) zds3:? wds:lo(-?|x1-x0|*|y1-y0|) */
+
+ carry1 = bary_add(wds, n, wds, n, zds0, n);
+ carry1 = bary_addc(zds2, n, zds2, n, zds1, n, carry1);
+
+ /* zds0,zds1:x0*y0 zds2:hi(x0*y0-?|x1-x0|*|y1-y0|) zds3:? wds:lo(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ carry2 = bary_add(zds1, n, zds1, n, wds, n);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|) zds2:hi(x0*y0-?|x1-x0|*|y1-y0|) zds3:? wds:lo(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ MEMCPY(wds, zds2, BDIGIT, n);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|) zds2:_ zds3:? wds:hi(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ bary_mul_karatsuba_start(zds2, zn-2*n, xds1, xn-n, yds1, n, wds+n, wn-n);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|) zds2,zds3:x1*y1 wds:hi(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ carry3 = bary_add(zds1, n, zds1, n, zds2, n);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|)+lo(x1*y1) zds2,zds3:x1*y1 wds:hi(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ carry3 = bary_addc(zds2, n, zds2, n, zds3, (4*n < zn ? n : zn-3*n), carry3);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|)+lo(x1*y1) zds2,zds3:x1*y1+hi(x1*y1) wds:hi(x0*y0-?|x1-x0|*|y1-y0|) */
+
+ bary_add(zds2, zn-2*n, zds2, zn-2*n, wds, n);
+
+ /* zds0:lo(x0*y0) zds1:hi(x0*y0)+lo(x0*y0-?|x1-x0|*|y1-y0|)+lo(x1*y1) zds2,zds3:x1*y1+hi(x1*y1)+hi(x0*y0-?|x1-x0|*|y1-y0|) wds:_ */
+
+ if (carry2)
+ bary_add_one(zds2, zn-2*n);
+
+ if (carry1 + carry3 - borrow < 0)
+ bary_sub_one(zds3, zn-3*n);
+ else if (carry1 + carry3 - borrow > 0) {
+ BDIGIT c = carry1 + carry3 - borrow;
+ bary_add(zds3, zn-3*n, zds3, zn-3*n, &c, 1);
+ }
+
+ /*
+ if (SIZEOF_BDIGITS * zn <= 16) {
+ uint128_t z, x, y;
+ ssize_t i;
+ for (x = 0, i = xn-1; 0 <= i; i--) { x <<= SIZEOF_BDIGITS*CHAR_BIT; x |= xds[i]; }
+ for (y = 0, i = yn-1; 0 <= i; i--) { y <<= SIZEOF_BDIGITS*CHAR_BIT; y |= yds[i]; }
+ for (z = 0, i = zn-1; 0 <= i; i--) { z <<= SIZEOF_BDIGITS*CHAR_BIT; z |= zds[i]; }
+ assert(z == x * y);
+ }
+ */
+
+ if (odd_xy) {
+ bary_muladd_1xN(zds+yn, zn-yn, yds[yn], xds, xn);
+ bary_muladd_1xN(zds+xn, zn-xn, xds[xn], yds, yn+1);
+ }
+ else if (odd_y) {
+ bary_muladd_1xN(zds+yn, zn-yn, yds[yn], xds, xn);
+ }
+
+ if (work)
+ ALLOCV_END(work);
+}
+
+VALUE
+rb_big_mul_karatsuba(VALUE x, VALUE y)
+{
+ size_t xn = RBIGNUM_LEN(x), yn = RBIGNUM_LEN(y), zn = xn + yn;
+ VALUE z = bignew(zn, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
+ if (!((xn <= yn && yn < 2) || KARATSUBA_BALANCED(xn, yn)))
+ rb_raise(rb_eArgError, "unexpected bignum length for karatsuba");
+ bary_mul_karatsuba(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn, NULL, 0);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+
+static void
+bary_mul_toom3(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ size_t n;
+ size_t wnc;
+ VALUE work = 0;
+
+ /* "p" stands for "positive". Actually it means "non-negative", though. */
+ size_t x0n; const BDIGIT *x0ds;
+ size_t x1n; const BDIGIT *x1ds;
+ size_t x2n; const BDIGIT *x2ds;
+ size_t y0n; const BDIGIT *y0ds;
+ size_t y1n; const BDIGIT *y1ds;
+ size_t y2n; const BDIGIT *y2ds;
+
+ size_t u1n; BDIGIT *u1ds; int u1p;
+ size_t u2n; BDIGIT *u2ds; int u2p;
+ size_t u3n; BDIGIT *u3ds; int u3p;
+
+ size_t v1n; BDIGIT *v1ds; int v1p;
+ size_t v2n; BDIGIT *v2ds; int v2p;
+ size_t v3n; BDIGIT *v3ds; int v3p;
+
+ size_t t0n; BDIGIT *t0ds; int t0p;
+ size_t t1n; BDIGIT *t1ds; int t1p;
+ size_t t2n; BDIGIT *t2ds; int t2p;
+ size_t t3n; BDIGIT *t3ds; int t3p;
+ size_t t4n; BDIGIT *t4ds; int t4p;
+
+ size_t z0n; BDIGIT *z0ds;
+ size_t z1n; BDIGIT *z1ds; int z1p;
+ size_t z2n; BDIGIT *z2ds; int z2p;
+ size_t z3n; BDIGIT *z3ds; int z3p;
+ size_t z4n; BDIGIT *z4ds;
+
+ size_t zzn; BDIGIT *zzds;
+
+ int sq = xds == yds && xn == yn;
+
+ assert(xn <= yn); /* assume y >= x */
+ assert(xn + yn <= zn);
+
+ n = (yn + 2) / 3;
+ assert(2*n < xn);
+
+ wnc = 0;
+
+ wnc += (u1n = n+1); /* BITSPERDIG*n+2 bits */
+ wnc += (u2n = n+1); /* BITSPERDIG*n+1 bits */
+ wnc += (u3n = n+1); /* BITSPERDIG*n+3 bits */
+ wnc += (v1n = n+1); /* BITSPERDIG*n+2 bits */
+ wnc += (v2n = n+1); /* BITSPERDIG*n+1 bits */
+ wnc += (v3n = n+1); /* BITSPERDIG*n+3 bits */
+
+ wnc += (t0n = 2*n); /* BITSPERDIG*2*n bits */
+ wnc += (t1n = 2*n+2); /* BITSPERDIG*2*n+4 bits but bary_mul needs u1n+v1n */
+ wnc += (t2n = 2*n+2); /* BITSPERDIG*2*n+2 bits but bary_mul needs u2n+v2n */
+ wnc += (t3n = 2*n+2); /* BITSPERDIG*2*n+6 bits but bary_mul needs u3n+v3n */
+ wnc += (t4n = 2*n); /* BITSPERDIG*2*n bits */
+
+ wnc += (z1n = 2*n+1); /* BITSPERDIG*2*n+5 bits */
+ wnc += (z2n = 2*n+1); /* BITSPERDIG*2*n+6 bits */
+ wnc += (z3n = 2*n+1); /* BITSPERDIG*2*n+8 bits */
+
+ if (wn < wnc) {
+ wn = wnc * 3 / 2; /* Allocate working memory for whole recursion at once. */
+ wds = ALLOCV_N(BDIGIT, work, wn);
+ }
+
+ u1ds = wds; wds += u1n;
+ u2ds = wds; wds += u2n;
+ u3ds = wds; wds += u3n;
+
+ v1ds = wds; wds += v1n;
+ v2ds = wds; wds += v2n;
+ v3ds = wds; wds += v3n;
+
+ t0ds = wds; wds += t0n;
+ t1ds = wds; wds += t1n;
+ t2ds = wds; wds += t2n;
+ t3ds = wds; wds += t3n;
+ t4ds = wds; wds += t4n;
+
+ z1ds = wds; wds += z1n;
+ z2ds = wds; wds += z2n;
+ z3ds = wds; wds += z3n;
+
+ wn -= wnc;
+
+ zzds = u1ds;
+ zzn = 6*n+1;
+
+ x0n = n;
+ x1n = n;
+ x2n = xn - 2*n;
+ x0ds = xds;
+ x1ds = xds + n;
+ x2ds = xds + 2*n;
+
+ if (sq) {
+ y0n = x0n;
+ y1n = x1n;
+ y2n = x2n;
+ y0ds = x0ds;
+ y1ds = x1ds;
+ y2ds = x2ds;
+ }
+ else {
+ y0n = n;
+ y1n = n;
+ y2n = yn - 2*n;
+ y0ds = yds;
+ y1ds = yds + n;
+ y2ds = yds + 2*n;
+ }
+
+ /*
+ * ref. http://en.wikipedia.org/wiki/Toom%E2%80%93Cook_multiplication
+ *
+ * x(b) = x0 * b^0 + x1 * b^1 + x2 * b^2
+ * y(b) = y0 * b^0 + y1 * b^1 + y2 * b^2
+ *
+ * z(b) = x(b) * y(b)
+ * z(b) = z0 * b^0 + z1 * b^1 + z2 * b^2 + z3 * b^3 + z4 * b^4
+ * where:
+ * z0 = x0 * y0
+ * z1 = x0 * y1 + x1 * y0
+ * z2 = x0 * y2 + x1 * y1 + x2 * y0
+ * z3 = x1 * y2 + x2 * y1
+ * z4 = x2 * y2
+ *
+ * Toom3 method (a.k.a. Toom-Cook method):
+ * (Step1) calculating 5 points z(b0), z(b1), z(b2), z(b3), z(b4),
+ * where:
+ * b0 = 0, b1 = 1, b2 = -1, b3 = -2, b4 = inf,
+ * z(0) = x(0) * y(0) = x0 * y0
+ * z(1) = x(1) * y(1) = (x0 + x1 + x2) * (y0 + y1 + y2)
+ * z(-1) = x(-1) * y(-1) = (x0 - x1 + x2) * (y0 - y1 + y2)
+ * z(-2) = x(-2) * y(-2) = (x0 - 2 * (x1 - 2 * x2)) * (y0 - 2 * (y1 - 2 * y2))
+ * z(inf) = x(inf) * y(inf) = x2 * y2
+ *
+ * (Step2) interpolating z0, z1, z2, z3 and z4.
+ *
+ * (Step3) Substituting base value into b of the polynomial z(b),
+ */
+
+ /*
+ * [Step1] calculating 5 points z(b0), z(b1), z(b2), z(b3), z(b4)
+ */
+
+ /* u1 <- x0 + x2 */
+ bary_add(u1ds, u1n, x0ds, x0n, x2ds, x2n);
+ u1p = 1;
+
+ /* x(-1) : u2 <- u1 - x1 = x0 - x1 + x2 */
+ if (bary_sub(u2ds, u2n, u1ds, u1n, x1ds, x1n)) {
+ bary_2comp(u2ds, u2n);
+ u2p = 0;
+ }
+ else {
+ u2p = 1;
+ }
+
+ /* x(1) : u1 <- u1 + x1 = x0 + x1 + x2 */
+ bary_add(u1ds, u1n, u1ds, u1n, x1ds, x1n);
+
+ /* x(-2) : u3 <- 2 * (u2 + x2) - x0 = x0 - 2 * (x1 - 2 * x2) */
+ u3p = 1;
+ if (u2p) {
+ bary_add(u3ds, u3n, u2ds, u2n, x2ds, x2n);
+ }
+ else if (bary_sub(u3ds, u3n, x2ds, x2n, u2ds, u2n)) {
+ bary_2comp(u3ds, u3n);
+ u3p = 0;
+ }
+ bary_small_lshift(u3ds, u3ds, u3n, 1);
+ if (!u3p) {
+ bary_add(u3ds, u3n, u3ds, u3n, x0ds, x0n);
+ }
+ else if (bary_sub(u3ds, u3n, u3ds, u3n, x0ds, x0n)) {
+ bary_2comp(u3ds, u3n);
+ u3p = 0;
+ }
+
+ if (sq) {
+ v1n = u1n; v1ds = u1ds; v1p = u1p;
+ v2n = u2n; v2ds = u2ds; v2p = u2p;
+ v3n = u3n; v3ds = u3ds; v3p = u3p;
+ }
+ else {
+ /* v1 <- y0 + y2 */
+ bary_add(v1ds, v1n, y0ds, y0n, y2ds, y2n);
+ v1p = 1;
+
+ /* y(-1) : v2 <- v1 - y1 = y0 - y1 + y2 */
+ v2p = 1;
+ if (bary_sub(v2ds, v2n, v1ds, v1n, y1ds, y1n)) {
+ bary_2comp(v2ds, v2n);
+ v2p = 0;
+ }
+
+ /* y(1) : v1 <- v1 + y1 = y0 + y1 + y2 */
+ bary_add(v1ds, v1n, v1ds, v1n, y1ds, y1n);
+
+ /* y(-2) : v3 <- 2 * (v2 + y2) - y0 = y0 - 2 * (y1 - 2 * y2) */
+ v3p = 1;
+ if (v2p) {
+ bary_add(v3ds, v3n, v2ds, v2n, y2ds, y2n);
+ }
+ else if (bary_sub(v3ds, v3n, y2ds, y2n, v2ds, v2n)) {
+ bary_2comp(v3ds, v3n);
+ v3p = 0;
+ }
+ bary_small_lshift(v3ds, v3ds, v3n, 1);
+ if (!v3p) {
+ bary_add(v3ds, v3n, v3ds, v3n, y0ds, y0n);
+ }
+ else if (bary_sub(v3ds, v3n, v3ds, v3n, y0ds, y0n)) {
+ bary_2comp(v3ds, v3n);
+ v3p = 0;
+ }
+ }
+
+ /* z(0) : t0 <- x0 * y0 */
+ bary_mul_toom3_start(t0ds, t0n, x0ds, x0n, y0ds, y0n, wds, wn);
+ t0p = 1;
+
+ /* z(1) : t1 <- u1 * v1 */
+ bary_mul_toom3_start(t1ds, t1n, u1ds, u1n, v1ds, v1n, wds, wn);
+ t1p = u1p == v1p;
+ assert(t1ds[t1n-1] == 0);
+ t1n--;
+
+ /* z(-1) : t2 <- u2 * v2 */
+ bary_mul_toom3_start(t2ds, t2n, u2ds, u2n, v2ds, v2n, wds, wn);
+ t2p = u2p == v2p;
+ assert(t2ds[t2n-1] == 0);
+ t2n--;
+
+ /* z(-2) : t3 <- u3 * v3 */
+ bary_mul_toom3_start(t3ds, t3n, u3ds, u3n, v3ds, v3n, wds, wn);
+ t3p = u3p == v3p;
+ assert(t3ds[t3n-1] == 0);
+ t3n--;
+
+ /* z(inf) : t4 <- x2 * y2 */
+ bary_mul_toom3_start(t4ds, t4n, x2ds, x2n, y2ds, y2n, wds, wn);
+ t4p = 1;
+
+ /*
+ * [Step2] interpolating z0, z1, z2, z3 and z4.
+ */
+
+ /* z0 <- z(0) == t0 */
+ z0n = t0n; z0ds = t0ds;
+
+ /* z4 <- z(inf) == t4 */
+ z4n = t4n; z4ds = t4ds;
+
+ /* z3 <- (z(-2) - z(1)) / 3 == (t3 - t1) / 3 */
+ if (t3p == t1p) {
+ z3p = t3p;
+ if (bary_sub(z3ds, z3n, t3ds, t3n, t1ds, t1n)) {
+ bary_2comp(z3ds, z3n);
+ z3p = !z3p;
+ }
+ }
+ else {
+ z3p = t3p;
+ bary_add(z3ds, z3n, t3ds, t3n, t1ds, t1n);
+ }
+ bigdivrem_single(z3ds, z3ds, z3n, 3);
+
+ /* z1 <- (z(1) - z(-1)) / 2 == (t1 - t2) / 2 */
+ if (t1p == t2p) {
+ z1p = t1p;
+ if (bary_sub(z1ds, z1n, t1ds, t1n, t2ds, t2n)) {
+ bary_2comp(z1ds, z1n);
+ z1p = !z1p;
+ }
+ }
+ else {
+ z1p = t1p;
+ bary_add(z1ds, z1n, t1ds, t1n, t2ds, t2n);
+ }
+ bary_small_rshift(z1ds, z1ds, z1n, 1, 0);
+
+ /* z2 <- z(-1) - z(0) == t2 - t0 */
+ if (t2p == t0p) {
+ z2p = t2p;
+ if (bary_sub(z2ds, z2n, t2ds, t2n, t0ds, t0n)) {
+ bary_2comp(z2ds, z2n);
+ z2p = !z2p;
+ }
+ }
+ else {
+ z2p = t2p;
+ bary_add(z2ds, z2n, t2ds, t2n, t0ds, t0n);
+ }
+
+ /* z3 <- (z2 - z3) / 2 + 2 * z(inf) == (z2 - z3) / 2 + 2 * t4 */
+ if (z2p == z3p) {
+ z3p = z2p;
+ if (bary_sub(z3ds, z3n, z2ds, z2n, z3ds, z3n)) {
+ bary_2comp(z3ds, z3n);
+ z3p = !z3p;
+ }
+ }
+ else {
+ z3p = z2p;
+ bary_add(z3ds, z3n, z2ds, z2n, z3ds, z3n);
+ }
+ bary_small_rshift(z3ds, z3ds, z3n, 1, 0);
+ if (z3p == t4p) {
+ bary_muladd_1xN(z3ds, z3n, 2, t4ds, t4n);
+ }
+ else {
+ if (bary_mulsub_1xN(z3ds, z3n, 2, t4ds, t4n)) {
+ bary_2comp(z3ds, z3n);
+ z3p = !z3p;
+ }
+ }
+
+ /* z2 <- z2 + z1 - z(inf) == z2 + z1 - t4 */
+ if (z2p == z1p) {
+ bary_add(z2ds, z2n, z2ds, z2n, z1ds, z1n);
+ }
+ else {
+ if (bary_sub(z2ds, z2n, z2ds, z2n, z1ds, z1n)) {
+ bary_2comp(z2ds, z2n);
+ z2p = !z2p;
+ }
+ }
+
+ if (z2p == t4p) {
+ if (bary_sub(z2ds, z2n, z2ds, z2n, t4ds, t4n)) {
+ bary_2comp(z2ds, z2n);
+ z2p = !z2p;
+ }
+ }
+ else {
+ bary_add(z2ds, z2n, z2ds, z2n, t4ds, t4n);
+ }
+
+ /* z1 <- z1 - z3 */
+ if (z1p == z3p) {
+ if (bary_sub(z1ds, z1n, z1ds, z1n, z3ds, z3n)) {
+ bary_2comp(z1ds, z1n);
+ z1p = !z1p;
+ }
+ }
+ else {
+ bary_add(z1ds, z1n, z1ds, z1n, z3ds, z3n);
+ }
+
+ /*
+ * [Step3] Substituting base value into b of the polynomial z(b),
+ */
+
+ MEMCPY(zzds, z0ds, BDIGIT, z0n);
+ BDIGITS_ZERO(zzds + z0n, 4*n - z0n);
+ MEMCPY(zzds + 4*n, z4ds, BDIGIT, z4n);
+ BDIGITS_ZERO(zzds + 4*n + z4n, zzn - (4*n + z4n));
+ if (z1p)
+ bary_add(zzds + n, zzn - n, zzds + n, zzn - n, z1ds, z1n);
+ else
+ bary_sub(zzds + n, zzn - n, zzds + n, zzn - n, z1ds, z1n);
+ if (z2p)
+ bary_add(zzds + 2*n, zzn - 2*n, zzds + 2*n, zzn - 2*n, z2ds, z2n);
+ else
+ bary_sub(zzds + 2*n, zzn - 2*n, zzds + 2*n, zzn - 2*n, z2ds, z2n);
+ if (z3p)
+ bary_add(zzds + 3*n, zzn - 3*n, zzds + 3*n, zzn - 3*n, z3ds, z3n);
+ else
+ bary_sub(zzds + 3*n, zzn - 3*n, zzds + 3*n, zzn - 3*n, z3ds, z3n);
+
+ BARY_TRUNC(zzds, zzn);
+ MEMCPY(zds, zzds, BDIGIT, zzn);
+ BDIGITS_ZERO(zds + zzn, zn - zzn);
+
+ if (work)
+ ALLOCV_END(work);
+}
+
+VALUE
+rb_big_mul_toom3(VALUE x, VALUE y)
+{
+ size_t xn = RBIGNUM_LEN(x), yn = RBIGNUM_LEN(y), zn = xn + yn;
+ VALUE z = bignew(zn, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
+ if (xn > yn || yn < 3 || !TOOM3_BALANCED(xn,yn))
+ rb_raise(rb_eArgError, "unexpected bignum length for toom3");
+ bary_mul_toom3(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn, NULL, 0);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+
+#ifdef USE_GMP
+static void
+bary_mul_gmp(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGITS)*CHAR_BIT;
+ mpz_t x, y, z;
+ size_t count;
+
+ assert(xn + yn <= zn);
+
+ mpz_init(x);
+ mpz_init(y);
+ mpz_init(z);
+ mpz_import(x, xn, -1, sizeof(BDIGIT), 0, nails, xds);
+ if (xds == yds && xn == yn) {
+ mpz_mul(z, x, x);
+ }
+ else {
+ mpz_import(y, yn, -1, sizeof(BDIGIT), 0, nails, yds);
+ mpz_mul(z, x, y);
+ }
+ mpz_export(zds, &count, -1, sizeof(BDIGIT), 0, nails, z);
+ BDIGITS_ZERO(zds+count, zn-count);
+ mpz_clear(x);
+ mpz_clear(y);
+ mpz_clear(z);
+}
+
+VALUE
+rb_big_mul_gmp(VALUE x, VALUE y)
+{
+ size_t xn = RBIGNUM_LEN(x), yn = RBIGNUM_LEN(y), zn = xn + yn;
+ VALUE z = bignew(zn, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
+ bary_mul_gmp(BDIGITS(z), zn, BDIGITS(x), xn, BDIGITS(y), yn);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+#endif
+
+static void
+bary_short_mul(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ assert(xn + yn <= zn);
+
+ if (xn == 1 && yn == 1) {
+ bary_mul_single(zds, zn, xds[0], yds[0]);
+ }
+ else {
+ bary_mul_normal(zds, zn, xds, xn, yds, yn);
+ rb_thread_check_ints();
+ }
+}
+
+/* determine whether a bignum is sparse or not by random sampling */
+static inline int
+bary_sparse_p(const BDIGIT *ds, size_t n)
+{
+ long c = 0;
+
+ if ( ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
+ if (c <= 1 && ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
+ if (c <= 1 && ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
+
+ return (c <= 1) ? 1 : 0;
+}
+
+static int
+bary_mul_precheck(BDIGIT **zdsp, size_t *znp, const BDIGIT **xdsp, size_t *xnp, const BDIGIT **ydsp, size_t *ynp)
+{
+ size_t nlsz; /* number of least significant zero BDIGITs */
+
+ BDIGIT *zds = *zdsp;
+ size_t zn = *znp;
+ const BDIGIT *xds = *xdsp;
+ size_t xn = *xnp;
+ const BDIGIT *yds = *ydsp;
+ size_t yn = *ynp;
+
+ assert(xn + yn <= zn);
+
+ nlsz = 0;
+
+ while (0 < xn) {
+ if (xds[xn-1] == 0) {
+ xn--;
+ }
+ else {
+ do {
+ if (xds[0] != 0)
+ break;
+ xds++;
+ xn--;
+ nlsz++;
+ } while (0 < xn);
+ break;
+ }
+ }
+
+ while (0 < yn) {
+ if (yds[yn-1] == 0) {
+ yn--;
+ }
+ else {
+ do {
+ if (xds[0] != 0)
+ break;
+ yds++;
+ yn--;
+ nlsz++;
+ } while (0 < yn);
+ break;
+ }
+ }
+
+ if (nlsz) {
+ BDIGITS_ZERO(zds, nlsz);
+ zds += nlsz;
+ zn -= nlsz;
+ }
+
+ /* make sure that y is longer than x */
+ if (xn > yn) {
+ const BDIGIT *tds;
+ size_t tn;
+ tds = xds; xds = yds; yds = tds;
+ tn = xn; xn = yn; yn = tn;
+ }
+ assert(xn <= yn);
+
+ if (xn <= 1) {
+ if (xn == 0) {
+ BDIGITS_ZERO(zds, zn);
+ return 1;
+ }
+
+ if (xds[0] == 1) {
+ MEMCPY(zds, yds, BDIGIT, yn);
+ BDIGITS_ZERO(zds+yn, zn-yn);
+ return 1;
+ }
+ if (POW2_P(xds[0])) {
+ zds[yn] = bary_small_lshift(zds, yds, yn, bit_length(xds[0])-1);
+ BDIGITS_ZERO(zds+yn+1, zn-yn-1);
+ return 1;
+ }
+ if (yn == 1 && yds[0] == 1) {
+ zds[0] = xds[0];
+ BDIGITS_ZERO(zds+1, zn-1);
+ return 1;
+ }
+ bary_mul_normal(zds, zn, xds, xn, yds, yn);
+ return 1;
+ }
+
+ *zdsp = zds;
+ *znp = zn;
+ *xdsp = xds;
+ *xnp = xn;
+ *ydsp = yds;
+ *ynp = yn;
+
+ return 0;
+}
+
+static void
+bary_mul_karatsuba_branch(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ /* normal multiplication when x is small */
+ if (xn < KARATSUBA_MUL_DIGITS) {
+ normal:
+ if (xds == yds && xn == yn)
+ bary_sq_fast(zds, zn, xds, xn);
+ else
+ bary_short_mul(zds, zn, xds, xn, yds, yn);
+ return;
+ }
+
+ /* normal multiplication when x or y is a sparse bignum */
+ if (bary_sparse_p(xds, xn)) goto normal;
+ if (bary_sparse_p(yds, yn)) {
+ bary_short_mul(zds, zn, yds, yn, xds, xn);
+ return;
+ }
+
+ /* balance multiplication by slicing y when x is much smaller than y */
+ if (!KARATSUBA_BALANCED(xn, yn)) {
+ bary_mul_balance_with_mulfunc(zds, zn, xds, xn, yds, yn, wds, wn, bary_mul_karatsuba_start);
+ return;
+ }
+
+ /* multiplication by karatsuba method */
+ bary_mul_karatsuba(zds, zn, xds, xn, yds, yn, wds, wn);
+}
+
+static void
+bary_mul_karatsuba_start(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ if (bary_mul_precheck(&zds, &zn, &xds, &xn, &yds, &yn))
+ return;
+
+ bary_mul_karatsuba_branch(zds, zn, xds, xn, yds, yn, wds, wn);
+}
+
+static void
+bary_mul_toom3_branch(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ if (xn < TOOM3_MUL_DIGITS) {
+ bary_mul_karatsuba_branch(zds, zn, xds, xn, yds, yn, wds, wn);
+ return;
+ }
+
+ if (!TOOM3_BALANCED(xn, yn)) {
+ bary_mul_balance_with_mulfunc(zds, zn, xds, xn, yds, yn, wds, wn, bary_mul_toom3_start);
+ return;
+ }
+
+ bary_mul_toom3(zds, zn, xds, xn, yds, yn, wds, wn);
+}
+
+static void
+bary_mul_toom3_start(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn, BDIGIT *wds, size_t wn)
+{
+ if (bary_mul_precheck(&zds, &zn, &xds, &xn, &yds, &yn))
+ return;
+
+ bary_mul_toom3_branch(zds, zn, xds, xn, yds, yn, wds, wn);
+}
+
+static void
+bary_mul(BDIGIT *zds, size_t zn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+#ifdef USE_GMP
+ const size_t naive_threshold = GMP_MUL_DIGITS;
+#else
+ const size_t naive_threshold = KARATSUBA_MUL_DIGITS;
+#endif
+ if (xn <= yn) {
+ if (xn < naive_threshold) {
+ if (xds == yds && xn == yn)
+ bary_sq_fast(zds, zn, xds, xn);
+ else
+ bary_short_mul(zds, zn, xds, xn, yds, yn);
+ return;
+ }
+ }
+ else {
+ if (yn < naive_threshold) {
+ bary_short_mul(zds, zn, yds, yn, xds, xn);
+ return;
+ }
+ }
+
+#ifdef USE_GMP
+ bary_mul_gmp(zds, zn, xds, xn, yds, yn);
+#else
+ bary_mul_toom3_start(zds, zn, xds, xn, yds, yn, NULL, 0);
+#endif
+}
+
+struct big_div_struct {
+ size_t yn, zn;
+ BDIGIT *yds, *zds;
+ volatile VALUE stop;
+};
+
+static void *
+bigdivrem1(void *ptr)
+{
+ struct big_div_struct *bds = (struct big_div_struct*)ptr;
+ size_t yn = bds->yn;
+ size_t zn = bds->zn;
+ BDIGIT *yds = bds->yds, *zds = bds->zds;
+ BDIGIT_DBL_SIGNED num;
+ BDIGIT q;
+
+ do {
+ if (bds->stop) {
+ bds->zn = zn;
+ return 0;
+ }
+ if (zds[zn-1] == yds[yn-1]) q = BDIGMAX;
+ else q = (BDIGIT)((BIGUP(zds[zn-1]) + zds[zn-2])/yds[yn-1]);
+ if (q) {
+ num = bigdivrem_mulsub(zds+zn-(yn+1), yn+1,
+ q,
+ yds, yn);
+ while (num) { /* "add back" required */
+ q--;
+ num = bary_add(zds+zn-(yn+1), yn,
+ zds+zn-(yn+1), yn,
+ yds, yn);
+ num--;
+ }
+ }
+ zn--;
+ zds[zn] = q;
+ } while (zn > yn);
+ return 0;
+}
+
+static void
+rb_big_stop(void *ptr)
+{
+ struct big_div_struct *bds = ptr;
+ bds->stop = Qtrue;
+}
+
+static BDIGIT
+bigdivrem_single1(BDIGIT *qds, const BDIGIT *xds, size_t xn, BDIGIT x_higher_bdigit, BDIGIT y)
+{
+ assert(0 < xn);
+ assert(x_higher_bdigit < y);
+ if (POW2_P(y)) {
+ BDIGIT r;
+ r = xds[0] & (y-1);
+ bary_small_rshift(qds, xds, xn, bit_length(y)-1, x_higher_bdigit);
+ return r;
+ }
+ else {
+ size_t i;
+ BDIGIT_DBL t2;
+ t2 = x_higher_bdigit;
+ i = xn;
+ while (i--) {
+ t2 = BIGUP(t2) + xds[i];
+ qds[i] = (BDIGIT)(t2 / y);
+ t2 %= y;
+ }
+ return (BDIGIT)t2;
+ }
+}
+
+static BDIGIT
+bigdivrem_single(BDIGIT *qds, const BDIGIT *xds, size_t xn, BDIGIT y)
+{
+ return bigdivrem_single1(qds, xds, xn, 0, y);
+}
+
+static void
+bigdivrem_restoring(BDIGIT *zds, size_t zn, BDIGIT *yds, size_t yn)
+{
+ struct big_div_struct bds;
+ size_t ynzero;
+
+ assert(yn < zn);
+ assert(BDIGIT_MSB(yds[yn-1]));
+ assert(zds[zn-1] < yds[yn-1]);
+
+ for (ynzero = 0; !yds[ynzero]; ynzero++);
+
+ if (ynzero+1 == yn) {
+ BDIGIT r;
+ r = bigdivrem_single1(zds+yn, zds+ynzero, zn-yn, zds[zn-1], yds[ynzero]);
+ zds[ynzero] = r;
+ return;
+ }
+
+ bds.yn = yn - ynzero;
+ bds.zds = zds + ynzero;
+ bds.yds = yds + ynzero;
+ bds.stop = Qfalse;
+ bds.zn = zn - ynzero;
+ if (bds.zn > 10000 || bds.yn > 10000) {
+ retry:
+ bds.stop = Qfalse;
+ rb_thread_call_without_gvl(bigdivrem1, &bds, rb_big_stop, &bds);
+
+ if (bds.stop == Qtrue) {
+ /* execute trap handler, but exception was not raised. */
+ goto retry;
}
- REALLOC_N(BDIGITS(x), USHORT, x->len++);
- ds = BDIGITS(x);
- ds[x->len-1] = 1;
+ }
+ else {
+ bigdivrem1(&bds);
}
}
+static void
+bary_divmod_normal(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ int shift;
+ BDIGIT *zds, *yyds;
+ size_t zn;
+ VALUE tmpyz = 0;
+
+ assert(yn < xn || (xn == yn && yds[yn - 1] <= xds[xn - 1]));
+ assert(qds ? (xn - yn + 1) <= qn : 1);
+ assert(rds ? yn <= rn : 1);
+
+ zn = xn + BIGDIVREM_EXTRA_WORDS;
+
+ shift = nlz(yds[yn-1]);
+ if (shift) {
+ int alloc_y = !rds;
+ int alloc_z = !qds || qn < zn;
+ if (alloc_y && alloc_z) {
+ yyds = ALLOCV_N(BDIGIT, tmpyz, yn+zn);
+ zds = yyds + yn;
+ }
+ else {
+ yyds = alloc_y ? ALLOCV_N(BDIGIT, tmpyz, yn) : rds;
+ zds = alloc_z ? ALLOCV_N(BDIGIT, tmpyz, zn) : qds;
+ }
+ zds[xn] = bary_small_lshift(zds, xds, xn, shift);
+ bary_small_lshift(yyds, yds, yn, shift);
+ }
+ else {
+ if (qds && zn <= qn)
+ zds = qds;
+ else
+ zds = ALLOCV_N(BDIGIT, tmpyz, zn);
+ MEMCPY(zds, xds, BDIGIT, xn);
+ zds[xn] = 0;
+ /* bigdivrem_restoring will not modify y.
+ * So use yds directly. */
+ yyds = (BDIGIT *)yds;
+ }
+
+ bigdivrem_restoring(zds, zn, yyds, yn);
+
+ if (rds) {
+ if (shift)
+ bary_small_rshift(rds, zds, yn, shift, 0);
+ else
+ MEMCPY(rds, zds, BDIGIT, yn);
+ BDIGITS_ZERO(rds+yn, rn-yn);
+ }
+
+ if (qds) {
+ size_t j = zn - yn;
+ MEMMOVE(qds, zds+yn, BDIGIT, j);
+ BDIGITS_ZERO(qds+j, qn-j);
+ }
+
+ if (tmpyz)
+ ALLOCV_END(tmpyz);
+}
+
+VALUE
+rb_big_divrem_normal(VALUE x, VALUE y)
+{
+ size_t xn = RBIGNUM_LEN(x), yn = RBIGNUM_LEN(y), qn, rn;
+ BDIGIT *xds = BDIGITS(x), *yds = BDIGITS(y), *qds, *rds;
+ VALUE q, r;
+
+ BARY_TRUNC(yds, yn);
+ if (yn == 0)
+ rb_num_zerodiv();
+ BARY_TRUNC(xds, xn);
+
+ if (xn < yn || (xn == yn && xds[xn - 1] < yds[yn - 1]))
+ return rb_assoc_new(LONG2FIX(0), x);
+
+ qn = xn + BIGDIVREM_EXTRA_WORDS;
+ q = bignew(qn, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
+ qds = BDIGITS(q);
+
+ rn = yn;
+ r = bignew(rn, RBIGNUM_SIGN(x));
+ rds = BDIGITS(r);
+
+ bary_divmod_normal(qds, qn, rds, rn, xds, xn, yds, yn);
+
+ bigtrunc(q);
+ bigtrunc(r);
+
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+
+ return rb_assoc_new(q, r);
+}
+
+#ifdef USE_GMP
+static void
+bary_divmod_gmp(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGITS)*CHAR_BIT;
+ mpz_t x, y, q, r;
+ size_t count;
+
+ assert(yn < xn || (xn == yn && yds[yn - 1] <= xds[xn - 1]));
+ assert(qds ? (xn - yn + 1) <= qn : 1);
+ assert(rds ? yn <= rn : 1);
+ assert(qds || rds);
+
+ mpz_init(x);
+ mpz_init(y);
+ if (qds) mpz_init(q);
+ if (rds) mpz_init(r);
+
+ mpz_import(x, xn, -1, sizeof(BDIGIT), 0, nails, xds);
+ mpz_import(y, yn, -1, sizeof(BDIGIT), 0, nails, yds);
+
+ if (!rds) {
+ mpz_fdiv_q(q, x, y);
+ }
+ else if (!qds) {
+ mpz_fdiv_r(r, x, y);
+ }
+ else {
+ mpz_fdiv_qr(q, r, x, y);
+ }
+
+ mpz_clear(x);
+ mpz_clear(y);
+
+ if (qds) {
+ mpz_export(qds, &count, -1, sizeof(BDIGIT), 0, nails, q);
+ BDIGITS_ZERO(qds+count, qn-count);
+ mpz_clear(q);
+ }
+
+ if (rds) {
+ mpz_export(rds, &count, -1, sizeof(BDIGIT), 0, nails, r);
+ BDIGITS_ZERO(rds+count, rn-count);
+ mpz_clear(r);
+ }
+}
+
+VALUE
+rb_big_divrem_gmp(VALUE x, VALUE y)
+{
+ size_t xn = RBIGNUM_LEN(x), yn = RBIGNUM_LEN(y), qn, rn;
+ BDIGIT *xds = BDIGITS(x), *yds = BDIGITS(y), *qds, *rds;
+ VALUE q, r;
+
+ BARY_TRUNC(yds, yn);
+ if (yn == 0)
+ rb_num_zerodiv();
+ BARY_TRUNC(xds, xn);
+
+ if (xn < yn || (xn == yn && xds[xn - 1] < yds[yn - 1]))
+ return rb_assoc_new(LONG2FIX(0), x);
+
+ qn = xn - yn + 1;
+ q = bignew(qn, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
+ qds = BDIGITS(q);
+
+ rn = yn;
+ r = bignew(rn, RBIGNUM_SIGN(x));
+ rds = BDIGITS(r);
+
+ bary_divmod_gmp(qds, qn, rds, rn, xds, xn, yds, yn);
+
+ bigtrunc(q);
+ bigtrunc(r);
+
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+
+ return rb_assoc_new(q, r);
+}
+#endif
+
+static void
+bary_divmod_branch(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+#ifdef USE_GMP
+ if (GMP_DIV_DIGITS < xn) {
+ bary_divmod_gmp(qds, qn, rds, rn, xds, xn, yds, yn);
+ return;
+ }
+#endif
+ bary_divmod_normal(qds, qn, rds, rn, xds, xn, yds, yn);
+}
+
+static void
+bary_divmod(BDIGIT *qds, size_t qn, BDIGIT *rds, size_t rn, const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
+{
+ assert(xn <= qn);
+ assert(yn <= rn);
+
+ BARY_TRUNC(yds, yn);
+ if (yn == 0)
+ rb_num_zerodiv();
+
+ BARY_TRUNC(xds, xn);
+ if (xn == 0) {
+ BDIGITS_ZERO(qds, qn);
+ BDIGITS_ZERO(rds, rn);
+ return;
+ }
+
+ if (xn < yn || (xn == yn && xds[xn - 1] < yds[yn - 1])) {
+ MEMCPY(rds, xds, BDIGIT, xn);
+ BDIGITS_ZERO(rds+xn, rn-xn);
+ BDIGITS_ZERO(qds, qn);
+ }
+ else if (yn == 1) {
+ MEMCPY(qds, xds, BDIGIT, xn);
+ BDIGITS_ZERO(qds+xn, qn-xn);
+ rds[0] = bigdivrem_single(qds, xds, xn, yds[0]);
+ BDIGITS_ZERO(rds+1, rn-1);
+ }
+ else if (xn == 2 && yn == 2) {
+ BDIGIT_DBL x = bary2bdigitdbl(xds, 2);
+ BDIGIT_DBL y = bary2bdigitdbl(yds, 2);
+ BDIGIT_DBL q = x / y;
+ BDIGIT_DBL r = x % y;
+ qds[0] = BIGLO(q);
+ qds[1] = BIGLO(BIGDN(q));
+ BDIGITS_ZERO(qds+2, qn-2);
+ rds[0] = BIGLO(r);
+ rds[1] = BIGLO(BIGDN(r));
+ BDIGITS_ZERO(rds+2, rn-2);
+ }
+ else {
+ bary_divmod_branch(qds, qn, rds, rn, xds, xn, yds, yn);
+ }
+}
+
+
+#define BIGNUM_DEBUG 0
+#if BIGNUM_DEBUG
+#define ON_DEBUG(x) do { x; } while (0)
+static void
+dump_bignum(VALUE x)
+{
+ long i;
+ printf("%c0x0", RBIGNUM_SIGN(x) ? '+' : '-');
+ for (i = RBIGNUM_LEN(x); i--; ) {
+ printf("_%0*"PRIxBDIGIT, SIZEOF_BDIGITS*2, BDIGITS(x)[i]);
+ }
+ printf(", len=%lu", RBIGNUM_LEN(x));
+ puts("");
+}
+
static VALUE
-bignorm(x)
- struct RBignum *x;
+rb_big_dump(VALUE x)
{
- UINT len = x->len;
- USHORT *ds = BDIGITS(x);
+ dump_bignum(x);
+ return x;
+}
+#else
+#define ON_DEBUG(x)
+#endif
+
+static int
+bigzero_p(VALUE x)
+{
+ return bary_zero_p(BDIGITS(x), RBIGNUM_LEN(x));
+}
- while (len-- && !ds[len]) ;
- x->len = ++len;
+int
+rb_bigzero_p(VALUE x)
+{
+ return BIGZEROP(x);
+}
- if (len*sizeof(USHORT) < sizeof(VALUE) ||
- (len*sizeof(USHORT) == sizeof(VALUE) &&
- ds[sizeof(VALUE)/sizeof(USHORT)-1] <= 0x3fff)) {
- long num = 0;
- while (len--) {
- num = BIGUP(num) + ds[len];
+int
+rb_cmpint(VALUE val, VALUE a, VALUE b)
+{
+ if (NIL_P(val)) {
+ rb_cmperr(a, b);
+ }
+ if (FIXNUM_P(val)) {
+ long l = FIX2LONG(val);
+ if (l > 0) return 1;
+ if (l < 0) return -1;
+ return 0;
+ }
+ if (RB_BIGNUM_TYPE_P(val)) {
+ if (BIGZEROP(val)) return 0;
+ if (RBIGNUM_SIGN(val)) return 1;
+ return -1;
+ }
+ if (RTEST(rb_funcall(val, '>', 1, INT2FIX(0)))) return 1;
+ if (RTEST(rb_funcall(val, '<', 1, INT2FIX(0)))) return -1;
+ return 0;
+}
+
+#define RBIGNUM_SET_LEN(b,l) \
+ ((RBASIC(b)->flags & RBIGNUM_EMBED_FLAG) ? \
+ (void)(RBASIC(b)->flags = \
+ (RBASIC(b)->flags & ~RBIGNUM_EMBED_LEN_MASK) | \
+ ((l) << RBIGNUM_EMBED_LEN_SHIFT)) : \
+ (void)(RBIGNUM(b)->as.heap.len = (l)))
+
+static void
+rb_big_realloc(VALUE big, long len)
+{
+ BDIGIT *ds;
+ if (RBASIC(big)->flags & RBIGNUM_EMBED_FLAG) {
+ if (RBIGNUM_EMBED_LEN_MAX < len) {
+ ds = ALLOC_N(BDIGIT, len);
+ MEMCPY(ds, RBIGNUM(big)->as.ary, BDIGIT, RBIGNUM_EMBED_LEN_MAX);
+ RBIGNUM(big)->as.heap.len = RBIGNUM_LEN(big);
+ RBIGNUM(big)->as.heap.digits = ds;
+ RBASIC(big)->flags &= ~RBIGNUM_EMBED_FLAG;
}
- if (x->sign) {
- if (POSFIXABLE(num)) return INT2FIX(num);
+ }
+ else {
+ if (len <= RBIGNUM_EMBED_LEN_MAX) {
+ ds = RBIGNUM(big)->as.heap.digits;
+ RBASIC(big)->flags |= RBIGNUM_EMBED_FLAG;
+ RBIGNUM_SET_LEN(big, len);
+ (void)VALGRIND_MAKE_MEM_UNDEFINED((void*)RBIGNUM(big)->as.ary, sizeof(RBIGNUM(big)->as.ary));
+ if (ds) {
+ MEMCPY(RBIGNUM(big)->as.ary, ds, BDIGIT, len);
+ xfree(ds);
+ }
+ }
+ else {
+ if (RBIGNUM_LEN(big) == 0) {
+ RBIGNUM(big)->as.heap.digits = ALLOC_N(BDIGIT, len);
+ }
+ else {
+ REALLOC_N(RBIGNUM(big)->as.heap.digits, BDIGIT, len);
+ }
}
- else if (NEGFIXABLE(-num)) return INT2FIX(-num);
}
- return (VALUE)x;
+}
+
+void
+rb_big_resize(VALUE big, long len)
+{
+ rb_big_realloc(big, len);
+ RBIGNUM_SET_LEN(big, len);
+}
+
+static VALUE
+bignew_1(VALUE klass, long len, int sign)
+{
+ NEWOBJ_OF(big, struct RBignum, klass, T_BIGNUM | (RGENGC_WB_PROTECTED_BIGNUM ? FL_WB_PROTECTED : 0));
+ RBIGNUM_SET_SIGN(big, sign?1:0);
+ if (len <= RBIGNUM_EMBED_LEN_MAX) {
+ RBASIC(big)->flags |= RBIGNUM_EMBED_FLAG;
+ RBIGNUM_SET_LEN(big, len);
+ (void)VALGRIND_MAKE_MEM_UNDEFINED((void*)RBIGNUM(big)->as.ary, sizeof(RBIGNUM(big)->as.ary));
+ }
+ else {
+ RBIGNUM(big)->as.heap.digits = ALLOC_N(BDIGIT, len);
+ RBIGNUM(big)->as.heap.len = len;
+ }
+ OBJ_FREEZE(big);
+ return (VALUE)big;
}
VALUE
-big_norm(x)
- VALUE x;
+rb_big_new(long len, int sign)
+{
+ return bignew(len, sign != 0);
+}
+
+VALUE
+rb_big_clone(VALUE x)
+{
+ long len = RBIGNUM_LEN(x);
+ VALUE z = bignew_1(CLASS_OF(x), len, RBIGNUM_SIGN(x));
+
+ MEMCPY(BDIGITS(z), BDIGITS(x), BDIGIT, len);
+ return z;
+}
+
+static void
+big_extend_carry(VALUE x)
+{
+ rb_big_resize(x, RBIGNUM_LEN(x)+1);
+ BDIGITS(x)[RBIGNUM_LEN(x)-1] = 1;
+}
+
+/* modify a bignum by 2's complement */
+static void
+get2comp(VALUE x)
+{
+ long i = RBIGNUM_LEN(x);
+ BDIGIT *ds = BDIGITS(x);
+
+ if (bary_2comp(ds, i)) {
+ big_extend_carry(x);
+ }
+}
+
+void
+rb_big_2comp(VALUE x) /* get 2's complement */
+{
+ get2comp(x);
+}
+
+static BDIGIT
+abs2twocomp(VALUE *xp, long *n_ret)
+{
+ VALUE x = *xp;
+ long n = RBIGNUM_LEN(x);
+ BDIGIT *ds = BDIGITS(x);
+ BDIGIT hibits = 0;
+
+ BARY_TRUNC(ds, n);
+
+ if (n != 0 && RBIGNUM_NEGATIVE_P(x)) {
+ VALUE z = bignew_1(CLASS_OF(x), n, 0);
+ MEMCPY(BDIGITS(z), ds, BDIGIT, n);
+ bary_2comp(BDIGITS(z), n);
+ hibits = BDIGMAX;
+ *xp = z;
+ }
+ *n_ret = n;
+ return hibits;
+}
+
+static void
+twocomp2abs_bang(VALUE x, int hibits)
+{
+ RBIGNUM_SET_SIGN(x, !hibits);
+ if (hibits) {
+ get2comp(x);
+ }
+}
+
+static inline VALUE
+bigtrunc(VALUE x)
+{
+ long len = RBIGNUM_LEN(x);
+ BDIGIT *ds = BDIGITS(x);
+
+ if (len == 0) return x;
+ while (--len && !ds[len]);
+ if (RBIGNUM_LEN(x) > len+1) {
+ rb_big_resize(x, len+1);
+ }
+ return x;
+}
+
+static inline VALUE
+bigfixize(VALUE x)
+{
+ size_t n = RBIGNUM_LEN(x);
+ BDIGIT *ds = BDIGITS(x);
+#if SIZEOF_BDIGITS < SIZEOF_LONG
+ unsigned long u;
+#else
+ BDIGIT u;
+#endif
+
+ BARY_TRUNC(ds, n);
+
+ if (n == 0) return INT2FIX(0);
+
+#if SIZEOF_BDIGITS < SIZEOF_LONG
+ if (sizeof(long)/SIZEOF_BDIGITS < n)
+ goto return_big;
+ else {
+ int i = (int)n;
+ u = 0;
+ while (i--) {
+ u = (unsigned long)(BIGUP(u) + ds[i]);
+ }
+ }
+#else /* SIZEOF_BDIGITS >= SIZEOF_LONG */
+ if (1 < n)
+ goto return_big;
+ else
+ u = ds[0];
+#endif
+
+ if (RBIGNUM_POSITIVE_P(x)) {
+ if (POSFIXABLE(u)) return LONG2FIX((long)u);
+ }
+ else {
+ if (u <= -FIXNUM_MIN) return LONG2FIX(-(long)u);
+ }
+
+ return_big:
+ rb_big_resize(x, n);
+ return x;
+}
+
+static VALUE
+bignorm(VALUE x)
+{
+ if (RB_BIGNUM_TYPE_P(x)) {
+ x = bigfixize(x);
+ }
+ return x;
+}
+
+VALUE
+rb_big_norm(VALUE x)
{
return bignorm(x);
}
VALUE
-uint2big(n)
- UINT n;
+rb_uint2big(VALUE n)
{
- UINT i = 0;
- USHORT *digits;
- struct RBignum *big;
+ long i;
+ VALUE big = bignew(bdigit_roomof(SIZEOF_VALUE), 1);
+ BDIGIT *digits = BDIGITS(big);
- i = 0;
- big = (struct RBignum*)bignew(DIGSPERLONG, 1);
- digits = BDIGITS(big);
- while (i < DIGSPERLONG) {
- digits[i++] = BIGLO(n);
+#if SIZEOF_BDIGITS >= SIZEOF_VALUE
+ digits[0] = n;
+#else
+ for (i = 0; i < bdigit_roomof(SIZEOF_VALUE); i++) {
+ digits[i] = BIGLO(n);
n = BIGDN(n);
}
+#endif
- i = DIGSPERLONG;
- while (i-- && !digits[i]) ;
- big->len = i+1;
- return (VALUE)big;
+ i = bdigit_roomof(SIZEOF_VALUE);
+ while (--i && !digits[i]) ;
+ RBIGNUM_SET_LEN(big, i+1);
+ return big;
}
VALUE
-int2big(n)
- int n;
+rb_int2big(SIGNED_VALUE n)
{
- int neg = 0;
- struct RBignum *big;
+ long neg = 0;
+ VALUE u;
+ VALUE big;
if (n < 0) {
- n = -n;
+ u = 1 + (VALUE)(-(n + 1)); /* u = -n avoiding overflow */
neg = 1;
}
- big = (struct RBignum*)uint2big(n);
+ else {
+ u = n;
+ }
+ big = rb_uint2big(u);
if (neg) {
- big->sign = 0;
+ RBIGNUM_SET_SIGN(big, 0);
}
- return (VALUE)big;
+ return big;
}
VALUE
-uint2inum(n)
- UINT n;
+rb_uint2inum(VALUE n)
{
- if (POSFIXABLE(n)) return INT2FIX(n);
- return uint2big(n);
+ if (POSFIXABLE(n)) return LONG2FIX(n);
+ return rb_uint2big(n);
}
VALUE
-int2inum(n)
- int n;
+rb_int2inum(SIGNED_VALUE n)
{
- if (FIXABLE(n)) return INT2FIX(n);
- return int2big(n);
+ if (FIXABLE(n)) return LONG2FIX(n);
+ return rb_int2big(n);
+}
+
+void
+rb_big_pack(VALUE val, unsigned long *buf, long num_longs)
+{
+ rb_integer_pack(val, buf, num_longs, sizeof(long), 0,
+ INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP);
}
VALUE
-str2inum(str, base)
- UCHAR *str;
- int base;
+rb_big_unpack(unsigned long *buf, long num_longs)
{
- char sign = 1, c;
- unsigned long num;
- UINT len, blen = 1, i;
+ return rb_integer_unpack(buf, num_longs, sizeof(long), 0,
+ INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP);
+}
+
+/*
+ * Calculate the number of bytes to be required to represent
+ * the absolute value of the integer given as _val_.
+ *
+ * [val] an integer.
+ * [nlz_bits_ret] number of leading zero bits in the most significant byte is returned if not NULL.
+ *
+ * This function returns ((val_numbits * CHAR_BIT + CHAR_BIT - 1) / CHAR_BIT)
+ * where val_numbits is the number of bits of abs(val).
+ * This function should not overflow.
+ *
+ * If nlz_bits_ret is not NULL,
+ * (return_value * CHAR_BIT - val_numbits) is stored in *nlz_bits_ret.
+ * In this case, 0 <= *nlz_bits_ret < CHAR_BIT.
+ *
+ */
+size_t
+rb_absint_size(VALUE val, int *nlz_bits_ret)
+{
+ BDIGIT *dp;
+ BDIGIT *de;
+ BDIGIT fixbuf[bdigit_roomof(sizeof(long))];
+
+ int num_leading_zeros;
+
+ val = rb_to_int(val);
+
+ if (FIXNUM_P(val)) {
+ long v = FIX2LONG(val);
+ if (v < 0) {
+ v = -v;
+ }
+#if SIZEOF_BDIGITS >= SIZEOF_LONG
+ fixbuf[0] = v;
+#else
+ {
+ int i;
+ for (i = 0; i < numberof(fixbuf); i++) {
+ fixbuf[i] = BIGLO(v);
+ v = BIGDN(v);
+ }
+ }
+#endif
+ dp = fixbuf;
+ de = fixbuf + numberof(fixbuf);
+ }
+ else {
+ dp = BDIGITS(val);
+ de = dp + RBIGNUM_LEN(val);
+ }
+ while (dp < de && de[-1] == 0)
+ de--;
+ if (dp == de) {
+ if (nlz_bits_ret)
+ *nlz_bits_ret = 0;
+ return 0;
+ }
+ num_leading_zeros = nlz(de[-1]);
+ if (nlz_bits_ret)
+ *nlz_bits_ret = num_leading_zeros % CHAR_BIT;
+ return (de - dp) * SIZEOF_BDIGITS - num_leading_zeros / CHAR_BIT;
+}
+
+static size_t
+absint_numwords_small(size_t numbytes, int nlz_bits_in_msbyte, size_t word_numbits, size_t *nlz_bits_ret)
+{
+ size_t val_numbits = numbytes * CHAR_BIT - nlz_bits_in_msbyte;
+ size_t div = val_numbits / word_numbits;
+ size_t mod = val_numbits % word_numbits;
+ size_t numwords;
+ size_t nlz_bits;
+ numwords = mod == 0 ? div : div + 1;
+ nlz_bits = mod == 0 ? 0 : word_numbits - mod;
+ *nlz_bits_ret = nlz_bits;
+ return numwords;
+}
+
+static size_t
+absint_numwords_generic(size_t numbytes, int nlz_bits_in_msbyte, size_t word_numbits, size_t *nlz_bits_ret)
+{
+ static const BDIGIT char_bit[1] = { CHAR_BIT };
+ BDIGIT numbytes_bary[bdigit_roomof(sizeof(numbytes))];
+ BDIGIT val_numbits_bary[bdigit_roomof(sizeof(numbytes) + 1)];
+ BDIGIT nlz_bits_in_msbyte_bary[1] = { nlz_bits_in_msbyte };
+ BDIGIT word_numbits_bary[bdigit_roomof(sizeof(word_numbits))];
+ BDIGIT div_bary[numberof(val_numbits_bary) + BIGDIVREM_EXTRA_WORDS];
+ BDIGIT mod_bary[numberof(word_numbits_bary)];
+ BDIGIT one[1] = { 1 };
+ size_t nlz_bits;
+ size_t mod;
+ int sign;
+ size_t numwords;
+
+ /*
+ * val_numbits = numbytes * CHAR_BIT - nlz_bits_in_msbyte
+ * div, mod = val_numbits.divmod(word_numbits)
+ * numwords = mod == 0 ? div : div + 1
+ * nlz_bits = mod == 0 ? 0 : word_numbits - mod
+ */
+
+ bary_unpack(BARY_ARGS(numbytes_bary), &numbytes, 1, sizeof(numbytes), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER);
+ BARY_SHORT_MUL(val_numbits_bary, numbytes_bary, char_bit);
+ if (nlz_bits_in_msbyte)
+ BARY_SUB(val_numbits_bary, val_numbits_bary, nlz_bits_in_msbyte_bary);
+ bary_unpack(BARY_ARGS(word_numbits_bary), &word_numbits, 1, sizeof(word_numbits), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER);
+ BARY_DIVMOD(div_bary, mod_bary, val_numbits_bary, word_numbits_bary);
+ if (BARY_ZERO_P(mod_bary)) {
+ nlz_bits = 0;
+ }
+ else {
+ BARY_ADD(div_bary, div_bary, one);
+ bary_pack(+1, BARY_ARGS(mod_bary), &mod, 1, sizeof(mod), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER);
+ nlz_bits = word_numbits - mod;
+ }
+ sign = bary_pack(+1, BARY_ARGS(div_bary), &numwords, 1, sizeof(numwords), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER);
+
+ if (sign == 2) {
+#if defined __GNUC__ && (__GNUC__ == 4 && __GNUC_MINOR__ == 4)
+ *nlz_bits_ret = 0;
+#endif
+ return (size_t)-1;
+ }
+ *nlz_bits_ret = nlz_bits;
+ return numwords;
+}
+
+/*
+ * Calculate the number of words to be required to represent
+ * the absolute value of the integer given as _val_.
+ *
+ * [val] an integer.
+ * [word_numbits] number of bits in a word.
+ * [nlz_bits_ret] number of leading zero bits in the most significant word is returned if not NULL.
+ *
+ * This function returns ((val_numbits * CHAR_BIT + word_numbits - 1) / word_numbits)
+ * where val_numbits is the number of bits of abs(val).
+ *
+ * This function can overflow.
+ * When overflow occur, (size_t)-1 is returned.
+ *
+ * If nlz_bits_ret is not NULL and overflow is not occur,
+ * (return_value * word_numbits - val_numbits) is stored in *nlz_bits_ret.
+ * In this case, 0 <= *nlz_bits_ret < word_numbits.
+ *
+ */
+size_t
+rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret)
+{
+ size_t numbytes;
+ int nlz_bits_in_msbyte;
+ size_t numwords;
+ size_t nlz_bits;
+
+ if (word_numbits == 0)
+ return (size_t)-1;
+
+ numbytes = rb_absint_size(val, &nlz_bits_in_msbyte);
+
+ if (numbytes <= SIZE_MAX / CHAR_BIT) {
+ numwords = absint_numwords_small(numbytes, nlz_bits_in_msbyte, word_numbits, &nlz_bits);
+#ifdef DEBUG_INTEGER_PACK
+ {
+ size_t numwords0, nlz_bits0;
+ numwords0 = absint_numwords_generic(numbytes, nlz_bits_in_msbyte, word_numbits, &nlz_bits0);
+ assert(numwords0 == numwords);
+ assert(nlz_bits0 == nlz_bits);
+ }
+#endif
+ }
+ else {
+ numwords = absint_numwords_generic(numbytes, nlz_bits_in_msbyte, word_numbits, &nlz_bits);
+ }
+ if (numwords == (size_t)-1)
+ return numwords;
+
+ if (nlz_bits_ret)
+ *nlz_bits_ret = nlz_bits;
+
+ return numwords;
+}
+
+/* Test abs(val) consists only a bit or not.
+ *
+ * Returns 1 if abs(val) == 1 << n for some n >= 0.
+ * Returns 0 otherwise.
+ *
+ * rb_absint_singlebit_p can be used to determine required buffer size
+ * for rb_integer_pack used with INTEGER_PACK_2COMP (two's complement).
+ *
+ * Following example calculates number of bits required to
+ * represent val in two's complement number, without sign bit.
+ *
+ * size_t size;
+ * int neg = FIXNUM_P(val) ? FIX2LONG(val) < 0 : RBIGNUM_NEGATIVE_P(val);
+ * size = rb_absint_numwords(val, 1, NULL)
+ * if (size == (size_t)-1) ...overflow...
+ * if (neg && rb_absint_singlebit_p(val))
+ * size--;
+ *
+ * Following example calculates number of bytes required to
+ * represent val in two's complement number, with sign bit.
+ *
+ * size_t size;
+ * int neg = FIXNUM_P(val) ? FIX2LONG(val) < 0 : RBIGNUM_NEGATIVE_P(val);
+ * int nlz_bits;
+ * size = rb_absint_size(val, &nlz_bits);
+ * if (nlz_bits == 0 && !(neg && rb_absint_singlebit_p(val)))
+ * size++;
+ */
+int
+rb_absint_singlebit_p(VALUE val)
+{
+ BDIGIT *dp;
+ BDIGIT *de;
+ BDIGIT fixbuf[bdigit_roomof(sizeof(long))];
+ BDIGIT d;
+
+ val = rb_to_int(val);
+
+ if (FIXNUM_P(val)) {
+ long v = FIX2LONG(val);
+ if (v < 0) {
+ v = -v;
+ }
+#if SIZEOF_BDIGITS >= SIZEOF_LONG
+ fixbuf[0] = v;
+#else
+ {
+ int i;
+ for (i = 0; i < numberof(fixbuf); i++) {
+ fixbuf[i] = BIGLO(v);
+ v = BIGDN(v);
+ }
+ }
+#endif
+ dp = fixbuf;
+ de = fixbuf + numberof(fixbuf);
+ }
+ else {
+ dp = BDIGITS(val);
+ de = dp + RBIGNUM_LEN(val);
+ }
+ while (dp < de && de[-1] == 0)
+ de--;
+ while (dp < de && dp[0] == 0)
+ dp++;
+ if (dp == de) /* no bit set. */
+ return 0;
+ if (dp != de-1) /* two non-zero words. two bits set, at least. */
+ return 0;
+ d = *dp;
+ return POW2_P(d);
+}
+
+
+/*
+ * Export an integer into a buffer.
+ *
+ * This function fills the buffer specified by _words_ and _numwords_ as
+ * val in the format specified by _wordsize_, _nails_ and _flags_.
+ *
+ * [val] Fixnum, Bignum or another integer like object which has to_int method.
+ * [words] buffer to export abs(val).
+ * [numwords] the size of given buffer as number of words.
+ * [wordsize] the size of word as number of bytes.
+ * [nails] number of padding bits in a word.
+ * Most significant nails bits of each word are filled by zero.
+ * [flags] bitwise or of constants which name starts "INTEGER_PACK_".
+ *
+ * flags:
+ * [INTEGER_PACK_MSWORD_FIRST] Store the most significant word as the first word.
+ * [INTEGER_PACK_LSWORD_FIRST] Store the least significant word as the first word.
+ * [INTEGER_PACK_MSBYTE_FIRST] Store the most significant byte in a word as the first byte in the word.
+ * [INTEGER_PACK_LSBYTE_FIRST] Store the least significant byte in a word as the first byte in the word.
+ * [INTEGER_PACK_NATIVE_BYTE_ORDER] INTEGER_PACK_MSBYTE_FIRST or INTEGER_PACK_LSBYTE_FIRST corresponding to the host's endian.
+ * [INTEGER_PACK_2COMP] Use 2's complement representation.
+ * [INTEGER_PACK_LITTLE_ENDIAN] Same as INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_LSBYTE_FIRST
+ * [INTEGER_PACK_BIG_ENDIAN] Same as INTEGER_PACK_MSWORD_FIRST|INTEGER_PACK_MSBYTE_FIRST
+ * [INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION] Use generic implementation (for test and debug).
+ *
+ * This function fills the buffer specified by _words_
+ * as abs(val) if INTEGER_PACK_2COMP is not specified in _flags_.
+ * If INTEGER_PACK_2COMP is specified, 2's complement representation of val is
+ * filled in the buffer.
+ *
+ * This function returns the signedness and overflow condition.
+ * The overflow condition depends on INTEGER_PACK_2COMP.
+ *
+ * INTEGER_PACK_2COMP is not specified:
+ * -2 : negative overflow. val <= -2**(numwords*(wordsize*CHAR_BIT-nails))
+ * -1 : negative without overflow. -2**(numwords*(wordsize*CHAR_BIT-nails)) < val < 0
+ * 0 : zero. val == 0
+ * 1 : positive without overflow. 0 < val < 2**(numwords*(wordsize*CHAR_BIT-nails))
+ * 2 : positive overflow. 2**(numwords*(wordsize*CHAR_BIT-nails)) <= val
+ *
+ * INTEGER_PACK_2COMP is specified:
+ * -2 : negative overflow. val < -2**(numwords*(wordsize*CHAR_BIT-nails))
+ * -1 : negative without overflow. -2**(numwords*(wordsize*CHAR_BIT-nails)) <= val < 0
+ * 0 : zero. val == 0
+ * 1 : positive without overflow. 0 < val < 2**(numwords*(wordsize*CHAR_BIT-nails))
+ * 2 : positive overflow. 2**(numwords*(wordsize*CHAR_BIT-nails)) <= val
+ *
+ * The value, -2**(numwords*(wordsize*CHAR_BIT-nails)), is representable
+ * in 2's complement representation but not representable in absolute value.
+ * So -1 is returned for the value if INTEGER_PACK_2COMP is specified
+ * but returns -2 if INTEGER_PACK_2COMP is not specified.
+ *
+ * The least significant words are filled in the buffer when overflow occur.
+ */
+
+int
+rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
+{
+ int sign;
+ BDIGIT *ds;
+ size_t num_bdigits;
+ BDIGIT fixbuf[bdigit_roomof(sizeof(long))];
+
+ RB_GC_GUARD(val) = rb_to_int(val);
+
+ if (FIXNUM_P(val)) {
+ long v = FIX2LONG(val);
+ if (v < 0) {
+ sign = -1;
+ v = -v;
+ }
+ else {
+ sign = 1;
+ }
+#if SIZEOF_BDIGITS >= SIZEOF_LONG
+ fixbuf[0] = v;
+#else
+ {
+ int i;
+ for (i = 0; i < numberof(fixbuf); i++) {
+ fixbuf[i] = BIGLO(v);
+ v = BIGDN(v);
+ }
+ }
+#endif
+ ds = fixbuf;
+ num_bdigits = numberof(fixbuf);
+ }
+ else {
+ sign = RBIGNUM_POSITIVE_P(val) ? 1 : -1;
+ ds = BDIGITS(val);
+ num_bdigits = RBIGNUM_LEN(val);
+ }
+
+ return bary_pack(sign, ds, num_bdigits, words, numwords, wordsize, nails, flags);
+}
+
+/*
+ * Import an integer into a buffer.
+ *
+ * [words] buffer to import.
+ * [numwords] the size of given buffer as number of words.
+ * [wordsize] the size of word as number of bytes.
+ * [nails] number of padding bits in a word.
+ * Most significant nails bits of each word are ignored.
+ * [flags] bitwise or of constants which name starts "INTEGER_PACK_".
+ *
+ * flags:
+ * [INTEGER_PACK_MSWORD_FIRST] Interpret the first word as the most significant word.
+ * [INTEGER_PACK_LSWORD_FIRST] Interpret the first word as the least significant word.
+ * [INTEGER_PACK_MSBYTE_FIRST] Interpret the first byte in a word as the most significant byte in the word.
+ * [INTEGER_PACK_LSBYTE_FIRST] Interpret the first byte in a word as the least significant byte in the word.
+ * [INTEGER_PACK_NATIVE_BYTE_ORDER] INTEGER_PACK_MSBYTE_FIRST or INTEGER_PACK_LSBYTE_FIRST corresponding to the host's endian.
+ * [INTEGER_PACK_2COMP] Use 2's complement representation.
+ * [INTEGER_PACK_LITTLE_ENDIAN] Same as INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_LSBYTE_FIRST
+ * [INTEGER_PACK_BIG_ENDIAN] Same as INTEGER_PACK_MSWORD_FIRST|INTEGER_PACK_MSBYTE_FIRST
+ * [INTEGER_PACK_FORCE_BIGNUM] the result will be a Bignum
+ * even if it is representable as a Fixnum.
+ * [INTEGER_PACK_NEGATIVE] Returns non-positive value.
+ * (Returns non-negative value if not specified.)
+ * [INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION] Use generic implementation (for test and debug).
+ *
+ * This function returns the imported integer as Fixnum or Bignum.
+ *
+ * The range of the result value depends on INTEGER_PACK_2COMP and INTEGER_PACK_NEGATIVE.
+ *
+ * INTEGER_PACK_2COMP is not set:
+ * 0 <= val < 2**(numwords*(wordsize*CHAR_BIT-nails)) if !INTEGER_PACK_NEGATIVE
+ * -2**(numwords*(wordsize*CHAR_BIT-nails)) < val <= 0 if INTEGER_PACK_NEGATIVE
+ *
+ * INTEGER_PACK_2COMP is set:
+ * -2**(numwords*(wordsize*CHAR_BIT-nails)-1) <= val <= 2**(numwords*(wordsize*CHAR_BIT-nails)-1)-1 if !INTEGER_PACK_NEGATIVE
+ * -2**(numwords*(wordsize*CHAR_BIT-nails)) <= val <= -1 if INTEGER_PACK_NEGATIVE
+ *
+ * INTEGER_PACK_2COMP without INTEGER_PACK_NEGATIVE means sign extension.
+ * INTEGER_PACK_2COMP with INTEGER_PACK_NEGATIVE mean assuming the higher bits are 1.
+ *
+ * Note that this function returns 0 when numwords is zero and
+ * INTEGER_PACK_2COMP is set but INTEGER_PACK_NEGATIVE is not set.
+ */
+
+VALUE
+rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
+{
+ VALUE val;
+ size_t num_bdigits;
+ int sign;
+ int nlp_bits;
+ BDIGIT *ds;
+ BDIGIT fixbuf[2] = { 0, 0 };
+
+ validate_integer_pack_format(numwords, wordsize, nails, flags,
+ INTEGER_PACK_MSWORD_FIRST|
+ INTEGER_PACK_LSWORD_FIRST|
+ INTEGER_PACK_MSBYTE_FIRST|
+ INTEGER_PACK_LSBYTE_FIRST|
+ INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP|
+ INTEGER_PACK_FORCE_BIGNUM|
+ INTEGER_PACK_NEGATIVE|
+ INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION);
+
+ num_bdigits = integer_unpack_num_bdigits(numwords, wordsize, nails, &nlp_bits);
+
+ if (LONG_MAX-1 < num_bdigits)
+ rb_raise(rb_eArgError, "too big to unpack as an integer");
+ if (num_bdigits <= numberof(fixbuf) && !(flags & INTEGER_PACK_FORCE_BIGNUM)) {
+ val = Qfalse;
+ ds = fixbuf;
+ }
+ else {
+ val = bignew((long)num_bdigits, 0);
+ ds = BDIGITS(val);
+ }
+ sign = bary_unpack_internal(ds, num_bdigits, words, numwords, wordsize, nails, flags, nlp_bits);
+
+ if (sign == -2) {
+ if (val) {
+ big_extend_carry(val);
+ }
+ else if (num_bdigits == numberof(fixbuf)) {
+ val = bignew((long)num_bdigits+1, 0);
+ MEMCPY(BDIGITS(val), fixbuf, BDIGIT, num_bdigits);
+ BDIGITS(val)[num_bdigits++] = 1;
+ }
+ else {
+ ds[num_bdigits++] = 1;
+ }
+ }
+
+ if (!val) {
+ BDIGIT_DBL u = fixbuf[0] + BIGUP(fixbuf[1]);
+ if (u == 0)
+ return LONG2FIX(0);
+ if (0 < sign && POSFIXABLE(u))
+ return LONG2FIX(u);
+ if (sign < 0 && BDIGIT_MSB(fixbuf[1]) == 0 &&
+ NEGFIXABLE(-(BDIGIT_DBL_SIGNED)u))
+ return LONG2FIX(-(BDIGIT_DBL_SIGNED)u);
+ val = bignew((long)num_bdigits, 0 <= sign);
+ MEMCPY(BDIGITS(val), fixbuf, BDIGIT, num_bdigits);
+ }
+
+ if ((flags & INTEGER_PACK_FORCE_BIGNUM) && sign != 0 &&
+ bary_zero_p(BDIGITS(val), RBIGNUM_LEN(val)))
+ sign = 0;
+ RBIGNUM_SET_SIGN(val, 0 <= sign);
+
+ if (flags & INTEGER_PACK_FORCE_BIGNUM)
+ return bigtrunc(val);
+ return bignorm(val);
+}
+
+#define QUAD_SIZE 8
+
+void
+rb_quad_pack(char *buf, VALUE val)
+{
+ rb_integer_pack(val, buf, 1, QUAD_SIZE, 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER|
+ INTEGER_PACK_2COMP);
+}
+
+VALUE
+rb_quad_unpack(const char *buf, int signed_p)
+{
+ return rb_integer_unpack(buf, 1, QUAD_SIZE, 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER|
+ (signed_p ? INTEGER_PACK_2COMP : 0));
+}
+
+#define conv_digit(c) (ruby_digit36_to_number_table[(unsigned char)(c)])
+
+static void
+str2big_scan_digits(const char *s, const char *str, int base, int badcheck, size_t *num_digits_p, size_t *len_p)
+{
+ char nondigit = 0;
+ size_t num_digits = 0;
+ const char *digits_start = str;
+ const char *digits_end = str;
+
+ int c;
+
+ if (badcheck && *str == '_') goto bad;
+
+ while ((c = *str++) != 0) {
+ if (c == '_') {
+ if (nondigit) {
+ if (badcheck) goto bad;
+ break;
+ }
+ nondigit = (char) c;
+ continue;
+ }
+ else if ((c = conv_digit(c)) < 0) {
+ break;
+ }
+ if (c >= base) break;
+ nondigit = 0;
+ num_digits++;
+ digits_end = str;
+ }
+ if (badcheck) {
+ str--;
+ if (s+1 < str && str[-1] == '_') goto bad;
+ while (*str && ISSPACE(*str)) str++;
+ if (*str) {
+ bad:
+ rb_invalid_str(s, "Integer()");
+ }
+ }
+ *num_digits_p = num_digits;
+ *len_p = digits_end - digits_start;
+}
+
+static VALUE
+str2big_poweroftwo(
+ int sign,
+ const char *digits_start,
+ const char *digits_end,
+ size_t num_digits,
+ int bits_per_digit)
+{
+ BDIGIT *dp;
+ BDIGIT_DBL dd;
+ int numbits;
+
+ size_t num_bdigits;
+ const char *p;
+ int c;
VALUE z;
- USHORT *zds;
- while (isspace(*str)) str++;
- if (*str == '-') {
+ num_bdigits = (num_digits / BITSPERDIG) * bits_per_digit + roomof((num_digits % BITSPERDIG) * bits_per_digit, BITSPERDIG);
+ z = bignew(num_bdigits, sign);
+ dp = BDIGITS(z);
+ dd = 0;
+ numbits = 0;
+ for (p = digits_end; digits_start < p; p--) {
+ if ((c = conv_digit(p[-1])) < 0)
+ continue;
+ dd |= (BDIGIT_DBL)c << numbits;
+ numbits += bits_per_digit;
+ if (BITSPERDIG <= numbits) {
+ *dp++ = BIGLO(dd);
+ dd = BIGDN(dd);
+ numbits -= BITSPERDIG;
+ }
+ }
+ if (numbits) {
+ *dp++ = BIGLO(dd);
+ }
+ assert((size_t)(dp - BDIGITS(z)) == num_bdigits);
+
+ return z;
+}
+
+static VALUE
+str2big_normal(
+ int sign,
+ const char *digits_start,
+ const char *digits_end,
+ size_t num_bdigits,
+ int base)
+{
+ size_t blen = 1;
+ BDIGIT *zds;
+ BDIGIT_DBL num;
+
+ size_t i;
+ const char *p;
+ int c;
+ VALUE z;
+
+ z = bignew(num_bdigits, sign);
+ zds = BDIGITS(z);
+ BDIGITS_ZERO(zds, num_bdigits);
+
+ for (p = digits_start; p < digits_end; p++) {
+ if ((c = conv_digit(*p)) < 0)
+ continue;
+ num = c;
+ i = 0;
+ for (;;) {
+ while (i<blen) {
+ num += (BDIGIT_DBL)zds[i]*base;
+ zds[i++] = BIGLO(num);
+ num = BIGDN(num);
+ }
+ if (num) {
+ blen++;
+ continue;
+ }
+ break;
+ }
+ assert(blen <= num_bdigits);
+ }
+
+ return z;
+}
+
+static VALUE
+str2big_karatsuba(
+ int sign,
+ const char *digits_start,
+ const char *digits_end,
+ size_t num_digits,
+ size_t num_bdigits,
+ int digits_per_bdigits_dbl,
+ int base)
+{
+ VALUE powerv;
+ size_t unit;
+ VALUE tmpuv = 0;
+ BDIGIT *uds, *vds, *tds;
+ BDIGIT_DBL dd;
+ BDIGIT_DBL current_base;
+ int m;
+ int power_level = 0;
+
+ size_t i;
+ const char *p;
+ int c;
+ VALUE z;
+
+ uds = ALLOCV_N(BDIGIT, tmpuv, 2*num_bdigits);
+ vds = uds + num_bdigits;
+
+ powerv = power_cache_get_power(base, power_level, NULL);
+
+ i = 0;
+ dd = 0;
+ current_base = 1;
+ m = digits_per_bdigits_dbl;
+ if (num_digits < (size_t)m)
+ m = (int)num_digits;
+ for (p = digits_end; digits_start < p; p--) {
+ if ((c = conv_digit(p[-1])) < 0)
+ continue;
+ dd = dd + c * current_base;
+ current_base *= base;
+ num_digits--;
+ m--;
+ if (m == 0) {
+ uds[i++] = BIGLO(dd);
+ uds[i++] = (BDIGIT)BIGDN(dd);
+ dd = 0;
+ m = digits_per_bdigits_dbl;
+ if (num_digits < (size_t)m)
+ m = (int)num_digits;
+ current_base = 1;
+ }
+ }
+ assert(i == num_bdigits);
+ for (unit = 2; unit < num_bdigits; unit *= 2) {
+ for (i = 0; i < num_bdigits; i += unit*2) {
+ if (2*unit <= num_bdigits - i) {
+ bary_mul(vds+i, unit*2, BDIGITS(powerv), RBIGNUM_LEN(powerv), uds+i+unit, unit);
+ bary_add(vds+i, unit*2, vds+i, unit*2, uds+i, unit);
+ }
+ else if (unit <= num_bdigits - i) {
+ bary_mul(vds+i, num_bdigits-i, BDIGITS(powerv), RBIGNUM_LEN(powerv), uds+i+unit, num_bdigits-(i+unit));
+ bary_add(vds+i, num_bdigits-i, vds+i, num_bdigits-i, uds+i, unit);
+ }
+ else {
+ MEMCPY(vds+i, uds+i, BDIGIT, num_bdigits-i);
+ }
+ }
+ power_level++;
+ powerv = power_cache_get_power(base, power_level, NULL);
+ tds = vds;
+ vds = uds;
+ uds = tds;
+ }
+ BARY_TRUNC(uds, num_bdigits);
+ z = bignew(num_bdigits, sign);
+ MEMCPY(BDIGITS(z), uds, BDIGIT, num_bdigits);
+
+ if (tmpuv)
+ ALLOCV_END(tmpuv);
+
+ return z;
+}
+
+#ifdef USE_GMP
+static VALUE
+str2big_gmp(
+ int sign,
+ const char *digits_start,
+ const char *digits_end,
+ size_t num_digits,
+ size_t num_bdigits,
+ int base)
+{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGITS)*CHAR_BIT;
+ char *buf, *p;
+ const char *q;
+ VALUE tmps;
+ mpz_t mz;
+ VALUE z;
+ BDIGIT *zds;
+ size_t zn, count;
+
+ buf = ALLOCV_N(char, tmps, num_digits+1);
+ p = buf;
+ for (q = digits_start; q < digits_end; q++) {
+ if (conv_digit(*q) < 0)
+ continue;
+ *p++ = *q;
+ }
+ *p = '\0';
+
+ mpz_init(mz);
+ mpz_set_str(mz, buf, base);
+ zn = num_bdigits;
+ z = bignew(zn, sign);
+ zds = BDIGITS(z);
+ mpz_export(BDIGITS(z), &count, -1, sizeof(BDIGIT), 0, nails, mz);
+ BDIGITS_ZERO(zds+count, zn-count);
+ mpz_clear(mz);
+
+ if (tmps)
+ ALLOCV_END(tmps);
+
+ return z;
+}
+#endif
+
+VALUE
+rb_cstr_to_inum(const char *str, int base, int badcheck)
+{
+ const char *s = str;
+ char sign = 1;
+ int c;
+ VALUE z;
+
+ int bits_per_digit;
+
+ const char *digits_start, *digits_end;
+ size_t num_digits;
+ size_t num_bdigits;
+ size_t len;
+
+ if (!str) {
+ if (badcheck) {
+ bad:
+ rb_invalid_str(s, "Integer()");
+ }
+ return INT2FIX(0);
+ }
+ while (ISSPACE(*str)) str++;
+
+ if (str[0] == '+') {
+ str++;
+ }
+ else if (str[0] == '-') {
str++;
sign = 0;
}
- if (base == 0) {
- if (*str == '0') {
- str++;
- if (*str == 'x' || *str == 'X') {
- str++;
+ if (str[0] == '+' || str[0] == '-') {
+ if (badcheck) goto bad;
+ return INT2FIX(0);
+ }
+ if (base <= 0) {
+ if (str[0] == '0') {
+ switch (str[1]) {
+ case 'x': case 'X':
base = 16;
- }
- else {
+ str += 2;
+ break;
+ case 'b': case 'B':
+ base = 2;
+ str += 2;
+ break;
+ case 'o': case 'O':
+ base = 8;
+ str += 2;
+ break;
+ case 'd': case 'D':
+ base = 10;
+ str += 2;
+ break;
+ default:
base = 8;
}
- if (*str == '\0') return INT2FIX(0);
+ }
+ else if (base < -1) {
+ base = -base;
}
else {
base = 10;
}
}
- len = strlen(str);
- if (base == 8) {
- len = 3*len*sizeof(char);
+ else if (base == 2) {
+ if (str[0] == '0' && (str[1] == 'b'||str[1] == 'B')) {
+ str += 2;
+ }
}
- else { /* base == 10 or 16 */
- len = 4*len*sizeof(char);
+ else if (base == 8) {
+ if (str[0] == '0' && (str[1] == 'o'||str[1] == 'O')) {
+ str += 2;
+ }
}
+ else if (base == 10) {
+ if (str[0] == '0' && (str[1] == 'd'||str[1] == 'D')) {
+ str += 2;
+ }
+ }
+ else if (base == 16) {
+ if (str[0] == '0' && (str[1] == 'x'||str[1] == 'X')) {
+ str += 2;
+ }
+ }
+ if (base < 2 || 36 < base) {
+ rb_raise(rb_eArgError, "invalid radix %d", base);
+ }
+ if (*str == '0') { /* squeeze preceding 0s */
+ int us = 0;
+ while ((c = *++str) == '0' || c == '_') {
+ if (c == '_') {
+ if (++us >= 2)
+ break;
+ } else
+ us = 0;
+ }
+ if (!(c = *str) || ISSPACE(c)) --str;
+ }
+ c = *str;
+ c = conv_digit(c);
+ if (c < 0 || c >= base) {
+ if (badcheck) goto bad;
+ return INT2FIX(0);
+ }
+
+ bits_per_digit = bit_length(base-1);
+ if (bits_per_digit * strlen(str) <= sizeof(long) * CHAR_BIT) {
+ char *end;
+ unsigned long val = STRTOUL(str, &end, base);
- if (len <= (sizeof(VALUE)*CHAR_BIT)) {
- UINT val = strtoul((char*)str, 0, base);
+ if (str < end && *end == '_') goto bigparse;
+ if (badcheck) {
+ if (end == str) goto bad; /* no number */
+ while (*end && ISSPACE(*end)) end++;
+ if (*end) goto bad; /* trailing garbage */
+ }
if (POSFIXABLE(val)) {
- if (sign) return INT2FIX(val);
+ if (sign) return LONG2FIX(val);
else {
- int result = -(int)val;
- return INT2FIX(result);
+ long result = -(long)val;
+ return LONG2FIX(result);
}
}
else {
- VALUE big = uint2big(val);
- RBIGNUM(big)->sign = sign;
- return big;
+ VALUE big = rb_uint2big(val);
+ RBIGNUM_SET_SIGN(big, sign);
+ return bignorm(big);
}
}
- len = (len/(sizeof(USHORT)*CHAR_BIT))+1;
- z = bignew(len, sign);
- zds = BDIGITS(z);
- for (i=len;i--;) zds[i]=0;
- while (c = *str++) {
- switch (c) {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- c = c - '0';
- break;
- case 'a': case 'b': case 'c':
- case 'd': case 'e': case 'f':
- c = c - 'a' + 10;
- break;
- case 'A': case 'B': case 'C':
- case 'D': case 'E': case 'F':
- c = c - 'A' + 10;
- break;
- default:
- c = base;
- break;
- }
- if (c >= base) break;
- i = 0;
- num = c;
- for (;;) {
- while (i<blen) {
- num += zds[i]*base;
- zds[i++] = BIGLO(num);
- num = BIGDN(num);
- }
- if (num) {
- blen++;
- continue;
- }
- break;
+ bigparse:
+ digits_start = str;
+ str2big_scan_digits(s, str, base, badcheck, &num_digits, &len);
+ digits_end = digits_start + len;
+
+ if (POW2_P(base)) {
+ z = str2big_poweroftwo(sign, digits_start, digits_end, num_digits,
+ bits_per_digit);
+ }
+ else {
+ int digits_per_bdigits_dbl;
+ maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
+ num_bdigits = roomof(num_digits, digits_per_bdigits_dbl)*2;
+
+#ifdef USE_GMP
+ if (GMP_STR2BIG_DIGITS < num_bdigits) {
+ z = str2big_gmp(sign, digits_start, digits_end, num_digits,
+ num_bdigits, base);
+ }
+ else
+#endif
+ if (num_bdigits < KARATSUBA_MUL_DIGITS) {
+ z = str2big_normal(sign, digits_start, digits_end,
+ num_bdigits, base);
+ }
+ else {
+ z = str2big_karatsuba(sign, digits_start, digits_end, num_digits,
+ num_bdigits, digits_per_bdigits_dbl, base);
+ }
+ }
+
+ return bignorm(z);
+}
+
+VALUE
+rb_str_to_inum(VALUE str, int base, int badcheck)
+{
+ char *s;
+ long len;
+ VALUE v = 0;
+ VALUE ret;
+
+ StringValue(str);
+ rb_must_asciicompat(str);
+ if (badcheck) {
+ s = StringValueCStr(str);
+ }
+ else {
+ s = RSTRING_PTR(str);
+ }
+ if (s) {
+ len = RSTRING_LEN(str);
+ if (s[len]) { /* no sentinel somehow */
+ char *p = ALLOCV(v, len+1);
+
+ MEMCPY(p, s, char, len);
+ p[len] = '\0';
+ s = p;
}
}
+ ret = rb_cstr_to_inum(s, base, badcheck);
+ if (v)
+ ALLOCV_END(v);
+ return ret;
+}
+
+VALUE
+rb_str2big_poweroftwo(VALUE arg, int base, int badcheck)
+{
+ int positive_p = 1;
+ const char *s, *str;
+ const char *digits_start, *digits_end;
+ size_t num_digits;
+ size_t len;
+ VALUE z;
+
+ if (base < 2 || 36 < base || !POW2_P(base)) {
+ rb_raise(rb_eArgError, "invalid radix %d", base);
+ }
+
+ rb_must_asciicompat(arg);
+ s = str = StringValueCStr(arg);
+ if (*str == '-') {
+ str++;
+ positive_p = 0;
+ }
+
+ digits_start = str;
+ str2big_scan_digits(s, str, base, badcheck, &num_digits, &len);
+ digits_end = digits_start + len;
+
+ z = str2big_poweroftwo(positive_p, digits_start, digits_end, num_digits,
+ bit_length(base-1));
+
+ RB_GC_GUARD(arg);
+
return bignorm(z);
}
-static char hexmap[] = "0123456789abcdef";
VALUE
-big2str(x, base)
- struct RBignum *x;
- int base;
+rb_str2big_normal(VALUE arg, int base, int badcheck)
{
- VALUE t;
- USHORT *ds;
- UINT i, j, hbase;
- VALUE ss;
- UCHAR *s, c;
+ int positive_p = 1;
+ const char *s, *str;
+ const char *digits_start, *digits_end;
+ size_t num_digits;
+ size_t len;
+ VALUE z;
- if (FIXNUM_P(x)) {
- return fix2str(x, base);
+ int digits_per_bdigits_dbl;
+ size_t num_bdigits;
+
+ if (base < 2 || 36 < base) {
+ rb_raise(rb_eArgError, "invalid radix %d", base);
}
- i = x->len;
- if (i == 0) return str_new2("0");
- if (base == 10) {
- j = (sizeof(USHORT)/sizeof(char)*CHAR_BIT*i*241L)/800+2;
- hbase = 10000;
+
+ rb_must_asciicompat(arg);
+ s = str = StringValueCStr(arg);
+ if (*str == '-') {
+ str++;
+ positive_p = 0;
}
- else if (base == 16) {
- j = (sizeof(USHORT)/sizeof(char)*CHAR_BIT*i)/4+2;
- hbase = 0x10000;
+
+ digits_start = str;
+ str2big_scan_digits(s, str, base, badcheck, &num_digits, &len);
+ digits_end = digits_start + len;
+
+ maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
+ num_bdigits = roomof(num_digits, digits_per_bdigits_dbl)*2;
+
+ z = str2big_normal(positive_p, digits_start, digits_end,
+ num_bdigits, base);
+
+ RB_GC_GUARD(arg);
+
+ return bignorm(z);
+}
+
+VALUE
+rb_str2big_karatsuba(VALUE arg, int base, int badcheck)
+{
+ int positive_p = 1;
+ const char *s, *str;
+ const char *digits_start, *digits_end;
+ size_t num_digits;
+ size_t len;
+ VALUE z;
+
+ int digits_per_bdigits_dbl;
+ size_t num_bdigits;
+
+ if (base < 2 || 36 < base) {
+ rb_raise(rb_eArgError, "invalid radix %d", base);
}
- else if (base == 8) {
- j = (sizeof(USHORT)/sizeof(char)*CHAR_BIT*i)+2;
- hbase = 010000;
+
+ rb_must_asciicompat(arg);
+ s = str = StringValueCStr(arg);
+ if (*str == '-') {
+ str++;
+ positive_p = 0;
}
- else if (base == 2) {
- j = (sizeof(USHORT)*CHAR_BIT*i)+2;
- hbase = 020;
+
+ digits_start = str;
+ str2big_scan_digits(s, str, base, badcheck, &num_digits, &len);
+ digits_end = digits_start + len;
+
+ maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
+ num_bdigits = roomof(num_digits, digits_per_bdigits_dbl)*2;
+
+ z = str2big_karatsuba(positive_p, digits_start, digits_end, num_digits,
+ num_bdigits, digits_per_bdigits_dbl, base);
+
+ RB_GC_GUARD(arg);
+
+ return bignorm(z);
+}
+
+#ifdef USE_GMP
+VALUE
+rb_str2big_gmp(VALUE arg, int base, int badcheck)
+{
+ int positive_p = 1;
+ const char *s, *str;
+ const char *digits_start, *digits_end;
+ size_t num_digits;
+ size_t len;
+ VALUE z;
+
+ int digits_per_bdigits_dbl;
+ size_t num_bdigits;
+
+ if (base < 2 || 36 < base) {
+ rb_raise(rb_eArgError, "invalid radix %d", base);
+ }
+
+ rb_must_asciicompat(arg);
+ s = str = StringValueCStr(arg);
+ if (*str == '-') {
+ str++;
+ positive_p = 0;
+ }
+
+ digits_start = str;
+ str2big_scan_digits(s, str, base, badcheck, &num_digits, &len);
+ digits_end = digits_start + len;
+
+ maxpow_in_bdigit_dbl(base, &digits_per_bdigits_dbl);
+ num_bdigits = roomof(num_digits, digits_per_bdigits_dbl)*2;
+
+ z = str2big_gmp(positive_p, digits_start, digits_end, num_digits, num_bdigits, base);
+
+ RB_GC_GUARD(arg);
+
+ return bignorm(z);
+}
+#endif
+
+#if HAVE_LONG_LONG
+
+static VALUE
+rb_ull2big(unsigned LONG_LONG n)
+{
+ long i;
+ VALUE big = bignew(bdigit_roomof(SIZEOF_LONG_LONG), 1);
+ BDIGIT *digits = BDIGITS(big);
+
+#if SIZEOF_BDIGITS >= SIZEOF_LONG_LONG
+ digits[0] = n;
+#else
+ for (i = 0; i < bdigit_roomof(SIZEOF_LONG_LONG); i++) {
+ digits[i] = BIGLO(n);
+ n = BIGDN(n);
+ }
+#endif
+
+ i = bdigit_roomof(SIZEOF_LONG_LONG);
+ while (i-- && !digits[i]) ;
+ RBIGNUM_SET_LEN(big, i+1);
+ return big;
+}
+
+static VALUE
+rb_ll2big(LONG_LONG n)
+{
+ long neg = 0;
+ unsigned LONG_LONG u;
+ VALUE big;
+
+ if (n < 0) {
+ u = 1 + (unsigned LONG_LONG)(-(n + 1)); /* u = -n avoiding overflow */
+ neg = 1;
}
else {
- j = 0;
- hbase = 0;
- Fail("bignum cannot treat base %d", base);
+ u = n;
+ }
+ big = rb_ull2big(u);
+ if (neg) {
+ RBIGNUM_SET_SIGN(big, 0);
}
+ return big;
+}
+
+VALUE
+rb_ull2inum(unsigned LONG_LONG n)
+{
+ if (POSFIXABLE(n)) return LONG2FIX(n);
+ return rb_ull2big(n);
+}
+
+VALUE
+rb_ll2inum(LONG_LONG n)
+{
+ if (FIXABLE(n)) return LONG2FIX(n);
+ return rb_ll2big(n);
+}
+
+#endif /* HAVE_LONG_LONG */
- t = big_clone(x);
- ds = BDIGITS(t);
- ss = str_new(0, j);
- s = RSTRING(ss)->ptr;
+VALUE
+rb_cstr2inum(const char *str, int base)
+{
+ return rb_cstr_to_inum(str, base, base==0);
+}
+
+VALUE
+rb_str2inum(VALUE str, int base)
+{
+ return rb_str_to_inum(str, base, base==0);
+}
- s[0] = x->sign ? '+' : '-';
- while (i && j) {
- int k = i;
- unsigned long num = 0;
- while (k--) {
- num = BIGUP(num) + ds[k];
- ds[k] = num / hbase;
- num %= hbase;
+static VALUE
+big_shift3(VALUE x, int lshift_p, size_t shift_numdigits, int shift_numbits)
+{
+ BDIGIT *xds, *zds;
+ long s1;
+ int s2;
+ VALUE z;
+ long xn;
+
+ if (lshift_p) {
+ if (LONG_MAX < shift_numdigits) {
+ rb_raise(rb_eArgError, "too big number");
+ }
+ s1 = shift_numdigits;
+ s2 = shift_numbits;
+ xn = RBIGNUM_LEN(x);
+ z = bignew(xn+s1+1, RBIGNUM_SIGN(x));
+ zds = BDIGITS(z);
+ BDIGITS_ZERO(zds, s1);
+ xds = BDIGITS(x);
+ zds[xn+s1] = bary_small_lshift(zds+s1, xds, xn, s2);
+ }
+ else {
+ long zn;
+ BDIGIT hibitsx;
+ if (LONG_MAX < shift_numdigits || (size_t)RBIGNUM_LEN(x) <= shift_numdigits) {
+ if (RBIGNUM_POSITIVE_P(x) ||
+ bary_zero_p(BDIGITS(x), RBIGNUM_LEN(x)))
+ return INT2FIX(0);
+ else
+ return INT2FIX(-1);
+ }
+ s1 = shift_numdigits;
+ s2 = shift_numbits;
+ hibitsx = abs2twocomp(&x, &xn);
+ xds = BDIGITS(x);
+ if (xn <= s1) {
+ return hibitsx ? INT2FIX(-1) : INT2FIX(0);
+ }
+ zn = xn - s1;
+ z = bignew(zn, 0);
+ zds = BDIGITS(z);
+ bary_small_rshift(zds, xds+s1, zn, s2, hibitsx != 0 ? BDIGMAX : 0);
+ twocomp2abs_bang(z, hibitsx != 0);
+ }
+ RB_GC_GUARD(x);
+ return z;
+}
+
+static VALUE
+big_shift2(VALUE x, int lshift_p, VALUE y)
+{
+ int sign;
+ size_t lens[2];
+ size_t shift_numdigits;
+ int shift_numbits;
+
+ assert(POW2_P(CHAR_BIT));
+ assert(POW2_P(BITSPERDIG));
+
+ if (BIGZEROP(x))
+ return INT2FIX(0);
+ sign = rb_integer_pack(y, lens, numberof(lens), sizeof(size_t), 0,
+ INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER);
+ if (sign < 0) {
+ lshift_p = !lshift_p;
+ sign = -sign;
+ }
+ if (lshift_p) {
+ if (1 < sign || CHAR_BIT <= lens[1])
+ rb_raise(rb_eRangeError, "shift width too big");
+ }
+ else {
+ if (1 < sign || CHAR_BIT <= lens[1])
+ return RBIGNUM_POSITIVE_P(x) ? INT2FIX(0) : INT2FIX(-1);
+ }
+ shift_numbits = (int)(lens[0] & (BITSPERDIG-1));
+ shift_numdigits = (lens[0] >> bit_length(BITSPERDIG-1)) |
+ (lens[1] << (CHAR_BIT*SIZEOF_SIZE_T - bit_length(BITSPERDIG-1)));
+ return big_shift3(x, lshift_p, shift_numdigits, shift_numbits);
+}
+
+static VALUE
+big_lshift(VALUE x, unsigned long shift)
+{
+ long s1 = shift/BITSPERDIG;
+ int s2 = (int)(shift%BITSPERDIG);
+ return big_shift3(x, 1, s1, s2);
+}
+
+static VALUE
+big_rshift(VALUE x, unsigned long shift)
+{
+ long s1 = shift/BITSPERDIG;
+ int s2 = (int)(shift%BITSPERDIG);
+ return big_shift3(x, 0, s1, s2);
+}
+
+#define MAX_BASE36_POWER_TABLE_ENTRIES (SIZEOF_SIZE_T * CHAR_BIT + 1)
+
+static VALUE base36_power_cache[35][MAX_BASE36_POWER_TABLE_ENTRIES];
+static size_t base36_numdigits_cache[35][MAX_BASE36_POWER_TABLE_ENTRIES];
+
+static void
+power_cache_init(void)
+{
+ int i, j;
+ for (i = 0; i < 35; ++i) {
+ for (j = 0; j < MAX_BASE36_POWER_TABLE_ENTRIES; ++j) {
+ base36_power_cache[i][j] = Qnil;
}
- if (ds[i-1] == 0) i--;
- k = 4;
- while (k--) {
- c = num % base;
- s[--j] = hexmap[(int)c];
- num /= base;
- if (i == 0 && num == 0) break;
+ }
+}
+
+static inline VALUE
+power_cache_get_power(int base, int power_level, size_t *numdigits_ret)
+{
+ /*
+ * MAX_BASE36_POWER_TABLE_ENTRIES is big enough to that
+ * base36_power_cache[base][MAX_BASE36_POWER_TABLE_ENTRIES-1] fills whole memory.
+ * So MAX_BASE36_POWER_TABLE_ENTRIES <= power_level is not possible to calculate.
+ *
+ * number-of-bytes =
+ * log256(base36_power_cache[base][MAX_BASE36_POWER_TABLE_ENTRIES-1]) =
+ * log256(maxpow_in_bdigit_dbl(base)**(2**(MAX_BASE36_POWER_TABLE_ENTRIES-1))) =
+ * log256(maxpow_in_bdigit_dbl(base)**(2**(SIZEOF_SIZE_T*CHAR_BIT))) =
+ * (2**(SIZEOF_SIZE_T*CHAR_BIT))*log256(maxpow_in_bdigit_dbl(base)) =
+ * (256**SIZEOF_SIZE_T)*log256(maxpow_in_bdigit_dbl(base)) >
+ * (256**SIZEOF_SIZE_T)*(sizeof(BDIGIT_DBL)-1) >
+ * 256**SIZEOF_SIZE_T
+ */
+ if (MAX_BASE36_POWER_TABLE_ENTRIES <= power_level)
+ rb_bug("too big power number requested: maxpow_in_bdigit_dbl(%d)**(2**%d)", base, power_level);
+
+ if (NIL_P(base36_power_cache[base - 2][power_level])) {
+ VALUE power;
+ size_t numdigits;
+ if (power_level == 0) {
+ int numdigits0;
+ BDIGIT_DBL dd = maxpow_in_bdigit_dbl(base, &numdigits0);
+ power = bignew(2, 1);
+ bdigitdbl2bary(BDIGITS(power), 2, dd);
+ numdigits = numdigits0;
+ }
+ else {
+ power = bigtrunc(bigsq(power_cache_get_power(base, power_level - 1, &numdigits)));
+ numdigits *= 2;
+ }
+ rb_obj_hide(power);
+ base36_power_cache[base - 2][power_level] = power;
+ base36_numdigits_cache[base - 2][power_level] = numdigits;
+ rb_gc_register_mark_object(power);
+ }
+ if (numdigits_ret)
+ *numdigits_ret = base36_numdigits_cache[base - 2][power_level];
+ return base36_power_cache[base - 2][power_level];
+}
+
+/*
+ * deprecated. (used only from deprecated rb_big2str0)
+ *
+ * big2str_muraken_find_n1
+ *
+ * Let a natural number x is given by:
+ * x = 2^0 * x_0 + 2^1 * x_1 + ... + 2^(B*n_0 - 1) * x_{B*n_0 - 1},
+ * where B is BITSPERDIG (i.e. BDIGITS*CHAR_BIT) and n_0 is
+ * RBIGNUM_LEN(x).
+ *
+ * Now, we assume n_1 = min_n \{ n | 2^(B*n_0/2) <= b_1^(n_1) \}, so
+ * it is realized that 2^(B*n_0) <= {b_1}^{2*n_1}, where b_1 is a
+ * given radix number. And then, we have n_1 <= (B*n_0) /
+ * (2*log_2(b_1)), therefore n_1 is given by ceil((B*n_0) /
+ * (2*log_2(b_1))).
+ */
+static long
+big2str_find_n1(VALUE x, int base)
+{
+ static const double log_2[] = {
+ 1.0, 1.58496250072116, 2.0,
+ 2.32192809488736, 2.58496250072116, 2.8073549220576,
+ 3.0, 3.16992500144231, 3.32192809488736,
+ 3.4594316186373, 3.58496250072116, 3.70043971814109,
+ 3.8073549220576, 3.90689059560852, 4.0,
+ 4.08746284125034, 4.16992500144231, 4.24792751344359,
+ 4.32192809488736, 4.39231742277876, 4.4594316186373,
+ 4.52356195605701, 4.58496250072116, 4.64385618977472,
+ 4.70043971814109, 4.75488750216347, 4.8073549220576,
+ 4.85798099512757, 4.90689059560852, 4.95419631038688,
+ 5.0, 5.04439411935845, 5.08746284125034,
+ 5.12928301694497, 5.16992500144231
+ };
+ long bits;
+
+ if (base < 2 || 36 < base)
+ rb_bug("invalid radix %d", base);
+
+ if (FIXNUM_P(x)) {
+ bits = (SIZEOF_LONG*CHAR_BIT - 1)/2 + 1;
+ }
+ else if (BIGZEROP(x)) {
+ return 0;
+ }
+ else if (RBIGNUM_LEN(x) >= LONG_MAX/BITSPERDIG) {
+ rb_raise(rb_eRangeError, "bignum too big to convert into `string'");
+ }
+ else {
+ bits = BITSPERDIG*RBIGNUM_LEN(x);
+ }
+
+ /* @shyouhei note: vvvvvvvvvvvvv this cast is suspicious. But I believe it is OK, because if that cast loses data, this x value is too big, and should have raised RangeError. */
+ return (long)ceil(((double)bits)/log_2[base - 2]);
+}
+
+struct big2str_struct {
+ int negative;
+ int base;
+ BDIGIT_DBL hbase2;
+ int hbase2_numdigits;
+ VALUE result;
+ char *ptr;
+};
+
+static void
+big2str_alloc(struct big2str_struct *b2s, size_t len)
+{
+ if (LONG_MAX-1 < len)
+ rb_raise(rb_eArgError, "too big number");
+ b2s->result = rb_usascii_str_new(0, (long)(len + 1)); /* plus one for sign */
+ b2s->ptr = RSTRING_PTR(b2s->result);
+ if (b2s->negative)
+ *b2s->ptr++ = '-';
+}
+
+static void
+big2str_2bdigits(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t taillen)
+{
+ size_t j;
+ BDIGIT_DBL num;
+ char buf[SIZEOF_BDIGIT_DBL*CHAR_BIT], *p;
+ int beginning = !b2s->ptr;
+ size_t len = 0;
+
+ assert(xn <= 2);
+ num = bary2bdigitdbl(xds, xn);
+
+ if (beginning) {
+ if (num == 0)
+ return;
+ p = buf;
+ j = sizeof(buf);
+ do {
+ p[--j] = ruby_digitmap[num % b2s->base];
+ num /= b2s->base;
+ } while (num);
+ len = sizeof(buf) - j;
+ big2str_alloc(b2s, len + taillen);
+ MEMCPY(b2s->ptr, buf + j, char, len);
+ }
+ else {
+ p = b2s->ptr;
+ j = b2s->hbase2_numdigits;
+ do {
+ p[--j] = ruby_digitmap[num % b2s->base];
+ num /= b2s->base;
+ } while (j);
+ len = b2s->hbase2_numdigits;
+ }
+ b2s->ptr += len;
+}
+
+static void
+big2str_karatsuba(struct big2str_struct *b2s, BDIGIT *xds, size_t xn, size_t wn,
+ int power_level, size_t taillen)
+{
+ VALUE b;
+ size_t half_numdigits, lower_numdigits;
+ int lower_power_level;
+ size_t bn;
+ const BDIGIT *bds;
+ size_t len;
+
+ /*
+ * Precondition:
+ * abs(x) < maxpow**(2**power_level)
+ * where
+ * maxpow = maxpow_in_bdigit_dbl(base, &numdigits)
+ *
+ * This function generates sequence of zeros, and then stringized abs(x) into b2s->ptr.
+ *
+ * b2s->ptr can be NULL.
+ * It is allocated when the first character is generated via big2str_alloc.
+ *
+ * The prefix zeros should be generated if and only if b2s->ptr is not NULL.
+ * When the zeros are generated, the zeros and abs(x) consists
+ * numdigits*(2**power_level) characters at total.
+ *
+ * Note:
+ * power_cache_get_power(base, power_level, &len) may not be cached yet. It should not be called.
+ * power_cache_get_power(base, power_level-1, &len) should be cached already if 0 <= power_level-1.
+ */
+
+ if (xn == 0 || bary_zero_p(xds, xn)) {
+ if (b2s->ptr) {
+ /* When x is zero, power_cache_get_power(base, power_level) should be cached already. */
+ power_cache_get_power(b2s->base, power_level, &len);
+ memset(b2s->ptr, '0', len);
+ b2s->ptr += len;
}
+ return;
+ }
+
+ if (power_level == 0) {
+ big2str_2bdigits(b2s, xds, xn, taillen);
+ return;
}
- while (s[j] == '0') j++;
- RSTRING(ss)->len -= x->sign?j:j-1;
- memmove(x->sign?s:s+1, s+j, RSTRING(ss)->len);
- s[RSTRING(ss)->len] = '\0';
- return ss;
+ lower_power_level = power_level-1;
+ b = power_cache_get_power(b2s->base, lower_power_level, &lower_numdigits);
+ bn = RBIGNUM_LEN(b);
+ bds = BDIGITS(b);
+
+ half_numdigits = lower_numdigits;
+
+ while (0 < lower_power_level &&
+ (xn < bn ||
+ (xn == bn && bary_cmp(xds, xn, bds, bn) < 0))) {
+ lower_power_level--;
+ b = power_cache_get_power(b2s->base, lower_power_level, &lower_numdigits);
+ bn = RBIGNUM_LEN(b);
+ bds = BDIGITS(b);
+ }
+
+ if (lower_power_level == 0 &&
+ (xn < bn ||
+ (xn == bn && bary_cmp(xds, xn, bds, bn) < 0))) {
+ if (b2s->ptr) {
+ len = half_numdigits * 2 - lower_numdigits;
+ memset(b2s->ptr, '0', len);
+ b2s->ptr += len;
+ }
+ big2str_2bdigits(b2s, xds, xn, taillen);
+ }
+ else {
+ BDIGIT *qds, *rds;
+ size_t qn, rn;
+ BDIGIT *tds;
+ int shift;
+
+ if (lower_power_level != power_level-1 && b2s->ptr) {
+ len = (half_numdigits - lower_numdigits) * 2;
+ memset(b2s->ptr, '0', len);
+ b2s->ptr += len;
+ }
+
+ shift = nlz(bds[bn-1]);
+
+ qn = xn + BIGDIVREM_EXTRA_WORDS;
+
+ if (shift == 0) {
+ /* bigdivrem_restoring will not modify y.
+ * So use bds directly. */
+ tds = (BDIGIT *)bds;
+ xds[xn] = 0;
+ }
+ else {
+ /* bigdivrem_restoring will modify y.
+ * So use temporary buffer. */
+ tds = xds + qn;
+ assert(qn + bn <= xn + wn);
+ bary_small_lshift(tds, bds, bn, shift);
+ xds[xn] = bary_small_lshift(xds, xds, xn, shift);
+ }
+
+ bigdivrem_restoring(xds, qn, tds, bn);
+
+ rds = xds;
+ rn = bn;
+
+ qds = xds + bn;
+ qn = qn - bn;
+
+ if (shift) {
+ bary_small_rshift(rds, rds, rn, shift, 0);
+ }
+
+ BARY_TRUNC(qds, qn);
+ assert(qn <= bn);
+ big2str_karatsuba(b2s, qds, qn, xn+wn - (rn+qn), lower_power_level, lower_numdigits+taillen);
+ BARY_TRUNC(rds, rn);
+ big2str_karatsuba(b2s, rds, rn, xn+wn - rn, lower_power_level, taillen);
+ }
}
static VALUE
-big_to_s(x)
- struct RBignum *x;
+big2str_base_poweroftwo(VALUE x, int base)
+{
+ int word_numbits = ffs(base) - 1;
+ size_t numwords;
+ VALUE result;
+ char *ptr;
+ numwords = rb_absint_numwords(x, word_numbits, NULL);
+ if (RBIGNUM_NEGATIVE_P(x)) {
+ if (LONG_MAX-1 < numwords)
+ rb_raise(rb_eArgError, "too big number");
+ result = rb_usascii_str_new(0, 1+numwords);
+ ptr = RSTRING_PTR(result);
+ *ptr++ = RBIGNUM_POSITIVE_P(x) ? '+' : '-';
+ }
+ else {
+ if (LONG_MAX < numwords)
+ rb_raise(rb_eArgError, "too big number");
+ result = rb_usascii_str_new(0, numwords);
+ ptr = RSTRING_PTR(result);
+ }
+ rb_integer_pack(x, ptr, numwords, 1, CHAR_BIT-word_numbits,
+ INTEGER_PACK_BIG_ENDIAN);
+ while (0 < numwords) {
+ *ptr = ruby_digitmap[*(unsigned char *)ptr];
+ ptr++;
+ numwords--;
+ }
+ return result;
+}
+
+VALUE
+rb_big2str_poweroftwo(VALUE x, int base)
{
- return big2str(x, 10);
+ return big2str_base_poweroftwo(x, base);
}
-int
-big2int(x)
- struct RBignum *x;
+static VALUE
+big2str_generic(VALUE x, int base)
+{
+ BDIGIT *xds;
+ size_t xn;
+ struct big2str_struct b2s_data;
+ int power_level;
+ VALUE power;
+
+ xds = BDIGITS(x);
+ xn = RBIGNUM_LEN(x);
+ BARY_TRUNC(xds, xn);
+
+ if (xn == 0) {
+ return rb_usascii_str_new2("0");
+ }
+
+ if (base < 2 || 36 < base)
+ rb_raise(rb_eArgError, "invalid radix %d", base);
+
+ if (xn >= LONG_MAX/BITSPERDIG) {
+ rb_raise(rb_eRangeError, "bignum too big to convert into `string'");
+ }
+
+ power_level = 0;
+ power = power_cache_get_power(base, power_level, NULL);
+ while (power_level < MAX_BASE36_POWER_TABLE_ENTRIES &&
+ (size_t)RBIGNUM_LEN(power) <= (xn+1)/2) {
+ power_level++;
+ power = power_cache_get_power(base, power_level, NULL);
+ }
+ assert(power_level != MAX_BASE36_POWER_TABLE_ENTRIES);
+
+ if ((size_t)RBIGNUM_LEN(power) <= xn) {
+ /*
+ * This increment guarantees x < power_cache_get_power(base, power_level)
+ * without invoking it actually.
+ * (power_cache_get_power(base, power_level) can be slow and not used
+ * in big2str_karatsuba.)
+ *
+ * Although it is possible that x < power_cache_get_power(base, power_level-1),
+ * it is no problem because big2str_karatsuba checks it and
+ * doesn't affect the result when b2s_data.ptr is NULL.
+ */
+ power_level++;
+ }
+
+ b2s_data.negative = RBIGNUM_NEGATIVE_P(x);
+ b2s_data.base = base;
+ b2s_data.hbase2 = maxpow_in_bdigit_dbl(base, &b2s_data.hbase2_numdigits);
+
+ b2s_data.result = Qnil;
+ b2s_data.ptr = NULL;
+
+ if (power_level == 0) {
+ big2str_2bdigits(&b2s_data, xds, xn, 0);
+ }
+ else {
+ VALUE tmpw = 0;
+ BDIGIT *wds;
+ size_t wn;
+ wn = power_level * BIGDIVREM_EXTRA_WORDS + RBIGNUM_LEN(power);
+ wds = ALLOCV_N(BDIGIT, tmpw, xn + wn);
+ MEMCPY(wds, xds, BDIGIT, xn);
+ big2str_karatsuba(&b2s_data, wds, xn, wn, power_level, 0);
+ if (tmpw)
+ ALLOCV_END(tmpw);
+ }
+ RB_GC_GUARD(x);
+
+ *b2s_data.ptr = '\0';
+ rb_str_resize(b2s_data.result, (long)(b2s_data.ptr - RSTRING_PTR(b2s_data.result)));
+
+ RB_GC_GUARD(x);
+ return b2s_data.result;
+}
+
+VALUE
+rb_big2str_generic(VALUE x, int base)
+{
+ return big2str_generic(x, base);
+}
+
+#ifdef USE_GMP
+VALUE
+big2str_gmp(VALUE x, int base)
+{
+ const size_t nails = (sizeof(BDIGIT)-SIZEOF_BDIGITS)*CHAR_BIT;
+ mpz_t mx;
+ size_t size;
+ VALUE str;
+ BDIGIT *xds = BDIGITS(x);
+ size_t xn = RBIGNUM_LEN(x);
+
+ mpz_init(mx);
+ mpz_import(mx, xn, -1, sizeof(BDIGIT), 0, nails, xds);
+
+ size = mpz_sizeinbase(mx, base);
+
+ if (RBIGNUM_NEGATIVE_P(x)) {
+ mpz_neg(mx, mx);
+ str = rb_usascii_str_new(0, size+1);
+ }
+ else {
+ str = rb_usascii_str_new(0, size);
+ }
+ mpz_get_str(RSTRING_PTR(str), base, mx);
+ mpz_clear(mx);
+
+ if (RSTRING_PTR(str)[RSTRING_LEN(str)-1] == '\0') {
+ rb_str_set_len(str, RSTRING_LEN(str)-1);
+ }
+
+ RB_GC_GUARD(x);
+ return str;
+}
+
+VALUE
+rb_big2str_gmp(VALUE x, int base)
{
+ return big2str_gmp(x, base);
+}
+#endif
+
+static VALUE
+rb_big2str1(VALUE x, int base)
+{
+ BDIGIT *xds;
+ size_t xn;
+
+ if (FIXNUM_P(x)) {
+ return rb_fix2str(x, base);
+ }
+
+ bigtrunc(x);
+ xds = BDIGITS(x);
+ xn = RBIGNUM_LEN(x);
+ BARY_TRUNC(xds, xn);
+
+ if (xn == 0) {
+ return rb_usascii_str_new2("0");
+ }
+
+ if (base < 2 || 36 < base)
+ rb_raise(rb_eArgError, "invalid radix %d", base);
+
+ if (xn >= LONG_MAX/BITSPERDIG) {
+ rb_raise(rb_eRangeError, "bignum too big to convert into `string'");
+ }
+
+ if (POW2_P(base)) {
+ /* base == 2 || base == 4 || base == 8 || base == 16 || base == 32 */
+ return big2str_base_poweroftwo(x, base);
+ }
+
+#ifdef USE_GMP
+ if (GMP_BIG2STR_DIGITS < xn) {
+ return big2str_gmp(x, base);
+ }
+#endif
+
+ return big2str_generic(x, base);
+}
+
+/* deprecated */
+VALUE
+rb_big2str0(VALUE x, int base, int trim)
+{
+ VALUE str;
+ long oldlen;
+ long n2;
+
+ str = rb_big2str1(x, base);
+
+ if (trim || FIXNUM_P(x) || BIGZEROP(x))
+ return str;
+
+ oldlen = RSTRING_LEN(str);
+ if (oldlen && RSTRING_PTR(str)[0] != '-') {
+ rb_str_resize(str, oldlen+1);
+ MEMMOVE(RSTRING_PTR(str)+1, RSTRING_PTR(str), char, oldlen);
+ RSTRING_PTR(str)[0] = '+';
+ }
+
+ n2 = big2str_find_n1(x, base);
+
+ oldlen = RSTRING_LEN(str);
+ if (oldlen-1 < n2) {
+ long off = n2 - (oldlen-1);
+ rb_str_resize(str, n2+1);
+ MEMMOVE(RSTRING_PTR(str)+1+off, RSTRING_PTR(str)+1, char, oldlen-1);
+ memset(RSTRING_PTR(str)+1, '0', off);
+ }
+
+ RSTRING_PTR(str)[RSTRING_LEN(str)] = '\0';
+
+ return str;
+}
+
+VALUE
+rb_big2str(VALUE x, int base)
+{
+ return rb_big2str1(x, base);
+}
+
+/*
+ * call-seq:
+ * big.to_s(base=10) -> string
+ *
+ * Returns a string containing the representation of <i>big</i> radix
+ * <i>base</i> (2 through 36).
+ *
+ * 12345654321.to_s #=> "12345654321"
+ * 12345654321.to_s(2) #=> "1011011111110110111011110000110001"
+ * 12345654321.to_s(8) #=> "133766736061"
+ * 12345654321.to_s(16) #=> "2dfdbbc31"
+ * 78546939656932.to_s(36) #=> "rubyrules"
+ */
+
+static VALUE
+rb_big_to_s(int argc, VALUE *argv, VALUE x)
+{
+ int base;
+
+ if (argc == 0) base = 10;
+ else {
+ VALUE b;
+
+ rb_scan_args(argc, argv, "01", &b);
+ base = NUM2INT(b);
+ }
+ return rb_big2str(x, base);
+}
+
+static unsigned long
+big2ulong(VALUE x, const char *type)
+{
+ long len = RBIGNUM_LEN(x);
unsigned long num;
- UINT len = x->len;
- USHORT *ds;
+ BDIGIT *ds;
- if (len > sizeof(long)/sizeof(USHORT))
- ArgError("Bignum too big to convert into fixnum");
+ if (len == 0)
+ return 0;
+ if (BIGSIZE(x) > sizeof(long)) {
+ rb_raise(rb_eRangeError, "bignum too big to convert into `%s'", type);
+ }
ds = BDIGITS(x);
+#if SIZEOF_LONG <= SIZEOF_BDIGITS
+ num = (unsigned long)ds[0];
+#else
num = 0;
while (len--) {
- num = BIGUP(num);
- num += ds[len];
+ num <<= BITSPERDIG;
+ num += (unsigned long)ds[len]; /* overflow is already checked */
}
- if (!x->sign) return -num;
+#endif
return num;
}
+/* deprecated */
VALUE
-big_to_i(x)
- VALUE x;
+rb_big2ulong_pack(VALUE x)
{
- return bignorm(x);
+ unsigned long num;
+ rb_integer_pack(x, &num, 1, sizeof(num), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER|INTEGER_PACK_2COMP);
+ return num;
}
VALUE
-dbl2big(d)
- double d;
+rb_big2ulong(VALUE x)
+{
+ unsigned long num = big2ulong(x, "unsigned long");
+
+ if (RBIGNUM_POSITIVE_P(x)) {
+ return num;
+ }
+ else {
+ if (num <= LONG_MAX)
+ return -(long)num;
+ if (num == 1+(unsigned long)(-(LONG_MIN+1)))
+ return LONG_MIN;
+ }
+ rb_raise(rb_eRangeError, "bignum out of range of unsigned long");
+}
+
+SIGNED_VALUE
+rb_big2long(VALUE x)
+{
+ unsigned long num = big2ulong(x, "long");
+
+ if (RBIGNUM_POSITIVE_P(x)) {
+ if (num <= LONG_MAX)
+ return num;
+ }
+ else {
+ if (num <= LONG_MAX)
+ return -(long)num;
+ if (num == 1+(unsigned long)(-(LONG_MIN+1)))
+ return LONG_MIN;
+ }
+ rb_raise(rb_eRangeError, "bignum too big to convert into `long'");
+}
+
+#if HAVE_LONG_LONG
+
+static unsigned LONG_LONG
+big2ull(VALUE x, const char *type)
+{
+ long len = RBIGNUM_LEN(x);
+ unsigned LONG_LONG num;
+ BDIGIT *ds = BDIGITS(x);
+
+ if (len == 0)
+ return 0;
+ if (BIGSIZE(x) > SIZEOF_LONG_LONG)
+ rb_raise(rb_eRangeError, "bignum too big to convert into `%s'", type);
+#if SIZEOF_LONG_LONG <= SIZEOF_BDIGITS
+ num = (unsigned LONG_LONG)ds[0];
+#else
+ num = 0;
+ while (len--) {
+ num = BIGUP(num);
+ num += ds[len];
+ }
+#endif
+ return num;
+}
+
+unsigned LONG_LONG
+rb_big2ull(VALUE x)
+{
+ unsigned LONG_LONG num = big2ull(x, "unsigned long long");
+
+ if (RBIGNUM_POSITIVE_P(x)) {
+ return num;
+ }
+ else {
+ if (num <= LLONG_MAX)
+ return -(LONG_LONG)num;
+ if (num == 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))
+ return LLONG_MIN;
+ }
+ rb_raise(rb_eRangeError, "bignum out of range of unsigned long long");
+}
+
+LONG_LONG
+rb_big2ll(VALUE x)
{
- UINT i = 0;
- long c;
- USHORT *digits;
+ unsigned LONG_LONG num = big2ull(x, "long long");
+
+ if (RBIGNUM_POSITIVE_P(x)) {
+ if (num <= LLONG_MAX)
+ return num;
+ }
+ else {
+ if (num <= LLONG_MAX)
+ return -(LONG_LONG)num;
+ if (num == 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))
+ return LLONG_MIN;
+ }
+ rb_raise(rb_eRangeError, "bignum too big to convert into `long long'");
+}
+
+#endif /* HAVE_LONG_LONG */
+
+static VALUE
+dbl2big(double d)
+{
+ long i = 0;
+ BDIGIT c;
+ BDIGIT *digits;
VALUE z;
double u = (d < 0)?-d:d;
- while (0 != (long)u) {
+ if (isinf(d)) {
+ rb_raise(rb_eFloatDomainError, d < 0 ? "-Infinity" : "Infinity");
+ }
+ if (isnan(d)) {
+ rb_raise(rb_eFloatDomainError, "NaN");
+ }
+
+ while (1.0 <= u) {
u /= (double)(BIGRAD);
i++;
}
@@ -383,867 +5204,1939 @@ dbl2big(d)
digits = BDIGITS(z);
while (i--) {
u *= BIGRAD;
- c = (long)u;
+ c = (BDIGIT)u;
u -= c;
digits[i] = c;
}
- return bignorm(z);
+ return z;
}
-double
-big2dbl(x)
- struct RBignum *x;
+VALUE
+rb_dbl2big(double d)
+{
+ return bignorm(dbl2big(d));
+}
+
+static double
+big2dbl(VALUE x)
{
double d = 0.0;
- UINT i = x->len;
- USHORT *ds = BDIGITS(x);
+ long i = (bigtrunc(x), RBIGNUM_LEN(x)), lo = 0, bits;
+ BDIGIT *ds = BDIGITS(x), dl;
- while (i--) {
- d = ds[i] + BIGRAD*d;
+ if (i) {
+ bits = i * BITSPERDIG - nlz(ds[i-1]);
+ if (bits > DBL_MANT_DIG+DBL_MAX_EXP) {
+ d = HUGE_VAL;
+ }
+ else {
+ if (bits > DBL_MANT_DIG+1)
+ lo = (bits -= DBL_MANT_DIG+1) / BITSPERDIG;
+ else
+ bits = 0;
+ while (--i > lo) {
+ d = ds[i] + BIGRAD*d;
+ }
+ dl = ds[i];
+ if (bits && (dl & ((BDIGIT)1 << (bits %= BITSPERDIG)))) {
+ int carry = (dl & ~(BDIGMAX << bits)) != 0;
+ if (!carry) {
+ while (i-- > 0) {
+ carry = ds[i] != 0;
+ if (carry) break;
+ }
+ }
+ if (carry) {
+ dl &= BDIGMAX << bits;
+ dl = BIGLO(dl + ((BDIGIT)1 << bits));
+ if (!dl) d += 1;
+ }
+ }
+ d = dl + BIGRAD*d;
+ if (lo) {
+ if (lo > INT_MAX / BITSPERDIG)
+ d = HUGE_VAL;
+ else if (lo < INT_MIN / BITSPERDIG)
+ d = 0.0;
+ else
+ d = ldexp(d, (int)(lo * BITSPERDIG));
+ }
+ }
}
- if (!x->sign) d = -d;
+ if (!RBIGNUM_SIGN(x)) d = -d;
return d;
}
+double
+rb_big2dbl(VALUE x)
+{
+ double d = big2dbl(x);
+
+ if (isinf(d)) {
+ rb_warning("Bignum out of Float range");
+ if (d < 0.0)
+ d = -HUGE_VAL;
+ else
+ d = HUGE_VAL;
+ }
+ return d;
+}
+
+/*
+ * call-seq:
+ * big.to_f -> float
+ *
+ * Converts <i>big</i> to a <code>Float</code>. If <i>big</i> doesn't
+ * fit in a <code>Float</code>, the result is infinity.
+ *
+ */
+
+static VALUE
+rb_big_to_f(VALUE x)
+{
+ return DBL2NUM(rb_big2dbl(x));
+}
+
VALUE
-big_to_f(x)
- VALUE x;
+rb_integer_float_cmp(VALUE x, VALUE y)
{
- return float_new(big2dbl(x));
+ double yd = RFLOAT_VALUE(y);
+ double yi, yf;
+ VALUE rel;
+
+ if (isnan(yd))
+ return Qnil;
+ if (isinf(yd)) {
+ if (yd > 0.0) return INT2FIX(-1);
+ else return INT2FIX(1);
+ }
+ yf = modf(yd, &yi);
+ if (FIXNUM_P(x)) {
+#if SIZEOF_LONG * CHAR_BIT < DBL_MANT_DIG /* assume FLT_RADIX == 2 */
+ double xd = (double)FIX2LONG(x);
+ if (xd < yd)
+ return INT2FIX(-1);
+ if (xd > yd)
+ return INT2FIX(1);
+ return INT2FIX(0);
+#else
+ long xn, yn;
+ if (yi < FIXNUM_MIN)
+ return INT2FIX(1);
+ if (FIXNUM_MAX+1 <= yi)
+ return INT2FIX(-1);
+ xn = FIX2LONG(x);
+ yn = (long)yi;
+ if (xn < yn)
+ return INT2FIX(-1);
+ if (xn > yn)
+ return INT2FIX(1);
+ if (yf < 0.0)
+ return INT2FIX(1);
+ if (0.0 < yf)
+ return INT2FIX(-1);
+ return INT2FIX(0);
+#endif
+ }
+ y = rb_dbl2big(yi);
+ rel = rb_big_cmp(x, y);
+ if (yf == 0.0 || rel != INT2FIX(0))
+ return rel;
+ if (yf < 0.0)
+ return INT2FIX(1);
+ return INT2FIX(-1);
+}
+
+VALUE
+rb_integer_float_eq(VALUE x, VALUE y)
+{
+ double yd = RFLOAT_VALUE(y);
+ double yi, yf;
+
+ if (isnan(yd) || isinf(yd))
+ return Qfalse;
+ yf = modf(yd, &yi);
+ if (yf != 0)
+ return Qfalse;
+ if (FIXNUM_P(x)) {
+#if SIZEOF_LONG * CHAR_BIT < DBL_MANT_DIG /* assume FLT_RADIX == 2 */
+ double xd = (double)FIX2LONG(x);
+ if (xd != yd)
+ return Qfalse;
+ return Qtrue;
+#else
+ long xn, yn;
+ if (yi < LONG_MIN || LONG_MAX < yi)
+ return Qfalse;
+ xn = FIX2LONG(x);
+ yn = (long)yi;
+ if (xn != yn)
+ return Qfalse;
+ return Qtrue;
+#endif
+ }
+ y = rb_dbl2big(yi);
+ return rb_big_eq(x, y);
+}
+
+/*
+ * call-seq:
+ * big <=> numeric -> -1, 0, +1 or nil
+ *
+ * Comparison---Returns -1, 0, or +1 depending on whether +big+ is
+ * less than, equal to, or greater than +numeric+. This is the
+ * basis for the tests in Comparable.
+ *
+ * +nil+ is returned if the two values are incomparable.
+ *
+ */
+
+VALUE
+rb_big_cmp(VALUE x, VALUE y)
+{
+ int cmp;
+
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ return rb_integer_float_cmp(x, y);
+ }
+ else {
+ return rb_num_coerce_cmp(x, y, rb_intern("<=>"));
+ }
+
+ if (RBIGNUM_SIGN(x) > RBIGNUM_SIGN(y)) return INT2FIX(1);
+ if (RBIGNUM_SIGN(x) < RBIGNUM_SIGN(y)) return INT2FIX(-1);
+
+ cmp = bary_cmp(BDIGITS(x), RBIGNUM_LEN(x), BDIGITS(y), RBIGNUM_LEN(y));
+ if (RBIGNUM_SIGN(x))
+ return INT2FIX(cmp);
+ else
+ return INT2FIX(-cmp);
}
+enum big_op_t {
+ big_op_gt,
+ big_op_ge,
+ big_op_lt,
+ big_op_le
+};
+
static VALUE
-big_cmp(x, y)
- struct RBignum *x, *y;
+big_op(VALUE x, VALUE y, enum big_op_t op)
{
- int xlen = x->len;
+ VALUE rel;
+ int n;
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = (struct RBignum*)int2big(FIX2INT(y));
- break;
+ if (FIXNUM_P(y) || RB_BIGNUM_TYPE_P(y)) {
+ rel = rb_big_cmp(x, y);
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ rel = rb_integer_float_cmp(x, y);
+ }
+ else {
+ ID id = 0;
+ switch (op) {
+ case big_op_gt: id = '>'; break;
+ case big_op_ge: id = rb_intern(">="); break;
+ case big_op_lt: id = '<'; break;
+ case big_op_le: id = rb_intern("<="); break;
+ }
+ return rb_num_coerce_relop(x, y, id);
+ }
- case T_BIGNUM:
- break;
+ if (NIL_P(rel)) return Qfalse;
+ n = FIX2INT(rel);
- default:
- return num_coerce_bin(x, y);
+ switch (op) {
+ case big_op_gt: return n > 0 ? Qtrue : Qfalse;
+ case big_op_ge: return n >= 0 ? Qtrue : Qfalse;
+ case big_op_lt: return n < 0 ? Qtrue : Qfalse;
+ case big_op_le: return n <= 0 ? Qtrue : Qfalse;
}
+ return Qundef;
+}
- if (x->sign > y->sign) return INT2FIX(1);
- if (x->sign < y->sign) return INT2FIX(-1);
- if (xlen < y->len)
- return (x->sign) ? INT2FIX(-1) : INT2FIX(1);
- if (xlen > y->len)
- return (x->sign) ? INT2FIX(1) : INT2FIX(-1);
+/*
+ * call-seq:
+ * big > real -> true or false
+ *
+ * Returns <code>true</code> if the value of <code>big</code> is
+ * greater than that of <code>real</code>.
+ */
- while(xlen-- && (BDIGITS(x)[xlen]==BDIGITS(y)[xlen]));
- if (-1 == xlen) return INT2FIX(0);
- return (BDIGITS(x)[xlen] > BDIGITS(y)[xlen]) ?
- (x->sign ? INT2FIX(1) : INT2FIX(-1)) :
- (x->sign ? INT2FIX(-1) : INT2FIX(1));
+static VALUE
+big_gt(VALUE x, VALUE y)
+{
+ return big_op(x, y, big_op_gt);
}
+/*
+ * call-seq:
+ * big >= real -> true or false
+ *
+ * Returns <code>true</code> if the value of <code>big</code> is
+ * greater than or equal to that of <code>real</code>.
+ */
+
static VALUE
-big_eq(x, y)
- VALUE x, y;
+big_ge(VALUE x, VALUE y)
{
- if (big_cmp(x, y) == INT2FIX(0)) return TRUE;
- return FALSE;
+ return big_op(x, y, big_op_ge);
}
+/*
+ * call-seq:
+ * big < real -> true or false
+ *
+ * Returns <code>true</code> if the value of <code>big</code> is
+ * less than that of <code>real</code>.
+ */
+
static VALUE
-big_uminus(x)
- struct RBignum *x;
+big_lt(VALUE x, VALUE y)
+{
+ return big_op(x, y, big_op_lt);
+}
+
+/*
+ * call-seq:
+ * big <= real -> true or false
+ *
+ * Returns <code>true</code> if the value of <code>big</code> is
+ * less than or equal to that of <code>real</code>.
+ */
+
+static VALUE
+big_le(VALUE x, VALUE y)
+{
+ return big_op(x, y, big_op_le);
+}
+
+/*
+ * call-seq:
+ * big == obj -> true or false
+ *
+ * Returns <code>true</code> only if <i>obj</i> has the same value
+ * as <i>big</i>. Contrast this with <code>Bignum#eql?</code>, which
+ * requires <i>obj</i> to be a <code>Bignum</code>.
+ *
+ * 68719476736 == 68719476736.0 #=> true
+ */
+
+VALUE
+rb_big_eq(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(y)) {
+ if (bignorm(x) == y) return Qtrue;
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ return rb_integer_float_eq(x, y);
+ }
+ else {
+ return rb_equal(y, x);
+ }
+ if (RBIGNUM_SIGN(x) != RBIGNUM_SIGN(y)) return Qfalse;
+ if (RBIGNUM_LEN(x) != RBIGNUM_LEN(y)) return Qfalse;
+ if (MEMCMP(BDIGITS(x),BDIGITS(y),BDIGIT,RBIGNUM_LEN(y)) != 0) return Qfalse;
+ return Qtrue;
+}
+
+/*
+ * call-seq:
+ * big.eql?(obj) -> true or false
+ *
+ * Returns <code>true</code> only if <i>obj</i> is a
+ * <code>Bignum</code> with the same value as <i>big</i>. Contrast this
+ * with <code>Bignum#==</code>, which performs type conversions.
+ *
+ * 68719476736.eql?(68719476736.0) #=> false
+ */
+
+VALUE
+rb_big_eql(VALUE x, VALUE y)
+{
+ if (!RB_BIGNUM_TYPE_P(y)) return Qfalse;
+ if (RBIGNUM_SIGN(x) != RBIGNUM_SIGN(y)) return Qfalse;
+ if (RBIGNUM_LEN(x) != RBIGNUM_LEN(y)) return Qfalse;
+ if (MEMCMP(BDIGITS(x),BDIGITS(y),BDIGIT,RBIGNUM_LEN(y)) != 0) return Qfalse;
+ return Qtrue;
+}
+
+/*
+ * call-seq:
+ * -big -> integer
+ *
+ * Unary minus (returns an integer whose value is 0-big)
+ */
+
+VALUE
+rb_big_uminus(VALUE x)
{
- VALUE z = big_clone(x);
+ VALUE z = rb_big_clone(x);
- RBIGNUM(z)->sign = !x->sign;
+ RBIGNUM_SET_SIGN(z, !RBIGNUM_SIGN(x));
return bignorm(z);
}
+/*
+ * call-seq:
+ * ~big -> integer
+ *
+ * Inverts the bits in big. As Bignums are conceptually infinite
+ * length, the result acts as if it had an infinite number of one
+ * bits to the left. In hex representations, this is displayed
+ * as two periods to the left of the digits.
+ *
+ * sprintf("%X", ~0x1122334455) #=> "..FEEDDCCBBAA"
+ */
+
static VALUE
-big_neg(x)
- struct RBignum *x;
+rb_big_neg(VALUE x)
{
- VALUE z = big_clone(x);
- UINT i = x->len;
- USHORT *ds = BDIGITS(z);
+ VALUE z = rb_big_clone(x);
+ BDIGIT *ds = BDIGITS(z);
+ long n = RBIGNUM_LEN(z);
- if (!x->sign) big_2comp(z);
- while (i--) ds[i] = ~ds[i];
- if (x->sign) big_2comp(z);
- RBIGNUM(z)->sign = !RBIGNUM(z)->sign;
+ if (!n) return INT2FIX(-1);
+
+ if (RBIGNUM_POSITIVE_P(z)) {
+ if (bary_add_one(ds, n)) {
+ big_extend_carry(z);
+ }
+ RBIGNUM_SET_NEGATIVE_SIGN(z);
+ }
+ else {
+ bary_neg(ds, n);
+ if (bary_add_one(ds, n))
+ return INT2FIX(-1);
+ bary_neg(ds, n);
+ RBIGNUM_SET_POSITIVE_SIGN(z);
+ }
return bignorm(z);
}
static VALUE
-bigsub(x, y)
- struct RBignum *x, *y;
-{
- struct RBignum *z = 0;
- USHORT *zds;
- long num;
- UINT i;
-
- i = x->len;
- /* if x is larger than y, swap */
- if (x->len < y->len) {
- z = x; x = y; y = z; /* swap x y */
- }
- else if (x->len == y->len) {
- while (i > 0) {
- i--;
- if (BDIGITS(x)[i] > BDIGITS(y)[i]) {
- break;
- }
- if (BDIGITS(x)[i] < BDIGITS(y)[i]) {
- z = x; x = y; y = z; /* swap x y */
- break;
- }
- }
+bigsub(VALUE x, VALUE y)
+{
+ VALUE z;
+ BDIGIT *xds, *yds, *zds;
+ long xn, yn, zn;
+
+ xn = RBIGNUM_LEN(x);
+ yn = RBIGNUM_LEN(y);
+ zn = xn < yn ? yn : xn;
+
+ z = bignew(zn, 1);
+
+ xds = BDIGITS(x);
+ yds = BDIGITS(y);
+ zds = BDIGITS(z);
+
+ if (bary_sub(zds, zn, xds, xn, yds, yn)) {
+ bary_2comp(zds, zn);
+ RBIGNUM_SET_NEGATIVE_SIGN(z);
}
- z = (struct RBignum*)bignew(x->len, (z == 0)?1:0);
+ return z;
+}
+
+static VALUE bigadd_int(VALUE x, long y);
+
+static VALUE
+bigsub_int(VALUE x, long y0)
+{
+ VALUE z;
+ BDIGIT *xds, *zds;
+ long xn, zn;
+ BDIGIT_DBL_SIGNED num;
+ long i, y;
+
+ y = y0;
+ xds = BDIGITS(x);
+ xn = RBIGNUM_LEN(x);
+
+ if (xn == 0)
+ return LONG2NUM(-y0);
+
+ zn = xn;
+#if SIZEOF_BDIGITS < SIZEOF_LONG
+ if (zn < bdigit_roomof(SIZEOF_LONG))
+ zn = bdigit_roomof(SIZEOF_LONG);
+#endif
+ z = bignew(zn, RBIGNUM_SIGN(x));
zds = BDIGITS(z);
- for (i = 0, num = 0; i < y->len; i++) {
- num += (long)BDIGITS(x)[i] - BDIGITS(y)[i];
+#if SIZEOF_BDIGITS >= SIZEOF_LONG
+ assert(xn == zn);
+ num = (BDIGIT_DBL_SIGNED)xds[0] - y;
+ if (xn == 1 && num < 0) {
+ RBIGNUM_SET_SIGN(z, !RBIGNUM_SIGN(x));
+ zds[0] = (BDIGIT)-num;
+ RB_GC_GUARD(x);
+ return bignorm(z);
+ }
+ zds[0] = BIGLO(num);
+ num = BIGDN(num);
+ i = 1;
+ if (i < xn)
+ goto y_is_zero_x;
+ goto finish;
+#else
+ num = 0;
+ for (i=0; i < xn; i++) {
+ if (y == 0) goto y_is_zero_x;
+ num += (BDIGIT_DBL_SIGNED)xds[i] - BIGLO(y);
zds[i] = BIGLO(num);
num = BIGDN(num);
- }
- while (num && i < x->len) {
- num += BDIGITS(x)[i];
- zds[i++] = BIGLO(num);
+ y = BIGDN(y);
+ }
+ for (; i < zn; i++) {
+ if (y == 0) goto y_is_zero_z;
+ num -= BIGLO(y);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ y = BIGDN(y);
+ }
+ goto finish;
+#endif
+
+ for (; i < xn; i++) {
+ y_is_zero_x:
+ if (num == 0) goto num_is_zero_x;
+ num += xds[i];
+ zds[i] = BIGLO(num);
num = BIGDN(num);
}
- while (i < x->len) {
- zds[i] = BDIGITS(x)[i];
- i++;
+#if SIZEOF_BDIGITS < SIZEOF_LONG
+ for (; i < zn; i++) {
+ y_is_zero_z:
+ if (num == 0) goto num_is_zero_z;
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ }
+#endif
+ goto finish;
+
+ for (; i < xn; i++) {
+ num_is_zero_x:
+ zds[i] = xds[i];
+ }
+#if SIZEOF_BDIGITS < SIZEOF_LONG
+ for (; i < zn; i++) {
+ num_is_zero_z:
+ zds[i] = 0;
}
-
+#endif
+ goto finish;
+
+ finish:
+ assert(num == 0 || num == -1);
+ if (num < 0) {
+ get2comp(z);
+ RBIGNUM_SET_SIGN(z, !RBIGNUM_SIGN(x));
+ }
+ RB_GC_GUARD(x);
return bignorm(z);
}
static VALUE
-bigadd(x, y, sign)
- struct RBignum *x, *y;
- char sign;
-{
- struct RBignum *z;
- long num;
- UINT i, len;
- if (x->sign == (y->sign ^ sign)) {
- if (y->sign == sign) return bigsub(y, x);
- return bigsub(x, y);
- }
+bigadd_int(VALUE x, long y)
+{
+ VALUE z;
+ BDIGIT *xds, *zds;
+ long xn, zn;
+ BDIGIT_DBL num;
+ long i;
+
+ xds = BDIGITS(x);
+ xn = RBIGNUM_LEN(x);
+
+ if (xn == 0)
+ return LONG2NUM(y);
+
+ zn = xn;
+#if SIZEOF_BDIGITS < SIZEOF_LONG
+ if (zn < bdigit_roomof(SIZEOF_LONG))
+ zn = bdigit_roomof(SIZEOF_LONG);
+#endif
+ zn++;
+
+ z = bignew(zn, RBIGNUM_SIGN(x));
+ zds = BDIGITS(z);
- if (x->len > y->len) {
- len = x->len + 1;
+#if SIZEOF_BDIGITS >= SIZEOF_LONG
+ num = (BDIGIT_DBL)xds[0] + y;
+ zds[0] = BIGLO(num);
+ num = BIGDN(num);
+ i = 1;
+ if (i < xn)
+ goto y_is_zero_x;
+ goto y_is_zero_z;
+#else
+ num = 0;
+ for (i=0; i < xn; i++) {
+ if (y == 0) goto y_is_zero_x;
+ num += (BDIGIT_DBL)xds[i] + BIGLO(y);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ y = BIGDN(y);
}
- else {
- len = y->len + 1;
+ for (; i < zn; i++) {
+ if (y == 0) goto y_is_zero_z;
+ num += BIGLO(y);
+ zds[i] = BIGLO(num);
+ num = BIGDN(num);
+ y = BIGDN(y);
}
- z = (struct RBignum*)bignew(len, sign==y->sign);
+ goto finish;
- if (x->len > y->len) {
- struct RBignum* t = x; x = y; y = t;
- }
- for (i = 0, num = 0; i < x->len; i++) {
- num += (long)(BDIGITS(x)[i]) + BDIGITS(y)[i];
- BDIGITS(z)[i] = BIGLO(num);
+#endif
+
+ for (;i < xn; i++) {
+ y_is_zero_x:
+ if (num == 0) goto num_is_zero_x;
+ num += (BDIGIT_DBL)xds[i];
+ zds[i] = BIGLO(num);
num = BIGDN(num);
}
- while (num && i < y->len) {
- num += BDIGITS(y)[i];
- BDIGITS(z)[i++] = BIGLO(num);
+ for (; i < zn; i++) {
+ y_is_zero_z:
+ if (num == 0) goto num_is_zero_z;
+ zds[i] = BIGLO(num);
num = BIGDN(num);
}
- while (i < y->len) {
- BDIGITS(z)[i] = BDIGITS(y)[i];
- i++;
+ goto finish;
+
+ for (;i < xn; i++) {
+ num_is_zero_x:
+ zds[i] = xds[i];
}
- BDIGITS(z)[i] = num;
+ for (; i < zn; i++) {
+ num_is_zero_z:
+ zds[i] = 0;
+ }
+ goto finish;
+ finish:
+ RB_GC_GUARD(x);
return bignorm(z);
}
-VALUE
-big_plus(x, y)
- VALUE x, y;
+static VALUE
+bigadd(VALUE x, VALUE y, int sign)
{
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = int2big(FIX2INT(y));
- /* fall through */
- case T_BIGNUM:
- return bigadd(x, y, 1);
+ VALUE z;
+ long len;
- case T_FLOAT:
- return float_new(big2dbl(x) + RFLOAT(y)->value);
+ sign = (sign == RBIGNUM_SIGN(y));
+ if (RBIGNUM_SIGN(x) != sign) {
+ if (sign) return bigsub(y, x);
+ return bigsub(x, y);
+ }
- default:
- return num_coerce_bin(x, y);
+ if (RBIGNUM_LEN(x) > RBIGNUM_LEN(y)) {
+ len = RBIGNUM_LEN(x) + 1;
+ }
+ else {
+ len = RBIGNUM_LEN(y) + 1;
}
+ z = bignew(len, sign);
+
+ bary_add(BDIGITS(z), RBIGNUM_LEN(z),
+ BDIGITS(x), RBIGNUM_LEN(x),
+ BDIGITS(y), RBIGNUM_LEN(y));
+
+ return z;
}
+/*
+ * call-seq:
+ * big + other -> Numeric
+ *
+ * Adds big and other, returning the result.
+ */
+
VALUE
-big_minus(x, y)
- VALUE x, y;
+rb_big_plus(VALUE x, VALUE y)
{
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = int2big(FIX2INT(y));
- /* fall through */
- case T_BIGNUM:
- return bigadd(x, y, 0);
-
- case T_FLOAT:
- return float_new(big2dbl(x) - RFLOAT(y)->value);
+ long n;
- default:
- return num_coerce_bin(x, y);
+ if (FIXNUM_P(y)) {
+ n = FIX2LONG(y);
+ if ((n > 0) != RBIGNUM_SIGN(x)) {
+ if (n < 0) {
+ n = -n;
+ }
+ return bigsub_int(x, n);
+ }
+ if (n < 0) {
+ n = -n;
+ }
+ return bigadd_int(x, n);
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ return bignorm(bigadd(x, y, 1));
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ return DBL2NUM(rb_big2dbl(x) + RFLOAT_VALUE(y));
+ }
+ else {
+ return rb_num_coerce_bin(x, y, '+');
}
}
+/*
+ * call-seq:
+ * big - other -> Numeric
+ *
+ * Subtracts other from big, returning the result.
+ */
+
VALUE
-big_mul(x, y)
- struct RBignum *x, *y;
+rb_big_minus(VALUE x, VALUE y)
+{
+ long n;
+
+ if (FIXNUM_P(y)) {
+ n = FIX2LONG(y);
+ if ((n > 0) != RBIGNUM_SIGN(x)) {
+ if (n < 0) {
+ n = -n;
+ }
+ return bigadd_int(x, n);
+ }
+ if (n < 0) {
+ n = -n;
+ }
+ return bigsub_int(x, n);
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ return bignorm(bigadd(x, y, 0));
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ return DBL2NUM(rb_big2dbl(x) - RFLOAT_VALUE(y));
+ }
+ else {
+ return rb_num_coerce_bin(x, y, '-');
+ }
+}
+
+static VALUE
+bigsq(VALUE x)
{
- UINT i = 0, j;
- unsigned long n = 0;
+ long xn, zn;
VALUE z;
- USHORT *zds;
+ BDIGIT *xds, *zds;
- if (FIXNUM_P(x)) x = (struct RBignum*)int2big(FIX2INT(x));
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = (struct RBignum*)int2big(FIX2INT(y));
- break;
+ xn = RBIGNUM_LEN(x);
+ zn = 2 * xn;
- case T_BIGNUM:
- break;
+ z = bignew(zn, 1);
- case T_FLOAT:
- return float_new(big2dbl(x) * RFLOAT(y)->value);
+ xds = BDIGITS(x);
+ zds = BDIGITS(z);
- default:
- return num_coerce_bin(x, y);
- }
+#ifdef USE_GMP
+ if (xn < GMP_MUL_DIGITS)
+ bary_sq_fast(zds, zn, xds, xn);
+ else
+ bary_mul(zds, zn, xds, xn, xds, xn);
+#else
+ if (xn < KARATSUBA_MUL_DIGITS)
+ bary_sq_fast(zds, zn, xds, xn);
+ else
+ bary_mul(zds, zn, xds, xn, xds, xn);
+#endif
+
+ RB_GC_GUARD(x);
+ return z;
+}
+
+static VALUE
+bigmul0(VALUE x, VALUE y)
+{
+ long xn, yn, zn;
+ VALUE z;
+ BDIGIT *xds, *yds, *zds;
+
+ if (x == y)
+ return bigsq(x);
+
+ xn = RBIGNUM_LEN(x);
+ yn = RBIGNUM_LEN(y);
+ zn = xn + yn;
+
+ z = bignew(zn, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
- j = x->len + y->len + 1;
- z = bignew(j, x->sign==y->sign);
+ xds = BDIGITS(x);
+ yds = BDIGITS(y);
zds = BDIGITS(z);
- while (j--) zds[j] = 0;
- for (i = 0; i < x->len; i++) {
- unsigned long dd = BDIGITS(x)[i];
- if (dd == 0) continue;
- n = 0;
- for (j = 0; j < y->len; j++) {
- int ee = n + dd * BDIGITS(y)[j];
- n = zds[i + j] + ee;
- if (ee) zds[i + j] = BIGLO(n);
- n = BIGDN(n);
- }
- if (n) {
- zds[i + j] = n;
- }
+
+ bary_mul(zds, zn, xds, xn, yds, yn);
+
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return z;
+}
+
+/*
+ * call-seq:
+ * big * other -> Numeric
+ *
+ * Multiplies big and other, returning the result.
+ */
+
+VALUE
+rb_big_mul(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ return DBL2NUM(rb_big2dbl(x) * RFLOAT_VALUE(y));
+ }
+ else {
+ return rb_num_coerce_bin(x, y, '*');
}
- return bignorm(z);
+ return bignorm(bigmul0(x, y));
}
-static void
-bigdivmod(x, y, div, mod)
- struct RBignum *x, *y;
- VALUE *div, *mod;
+static VALUE
+bigdivrem(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp)
{
- UINT nx = x->len, ny = y->len, i, j;
+ long xn = RBIGNUM_LEN(x), yn = RBIGNUM_LEN(y);
VALUE z;
- USHORT *xds, *yds, *zds, *tds;
- unsigned long t2;
- long num;
- USHORT dd, q;
+ BDIGIT *xds, *yds, *zds;
+ BDIGIT dd;
+
+ VALUE q = Qnil, r = Qnil;
+ BDIGIT *qds, *rds;
+ long qn, rn;
yds = BDIGITS(y);
- if (ny == 0 && yds[0] == 0) num_zerodiv();
- if (nx < ny || nx == ny && BDIGITS(x)[nx - 1] < BDIGITS(y)[ny - 1]) {
- if (div) *div = INT2FIX(0);
- if (mod) *mod = bignorm(x);
- return;
- }
+ BARY_TRUNC(yds, yn);
+ if (yn == 0)
+ rb_num_zerodiv();
+
xds = BDIGITS(x);
- if (ny == 1) {
+ BARY_TRUNC(xds, xn);
+
+ if (xn < yn || (xn == yn && xds[xn - 1] < yds[yn - 1])) {
+ if (divp) *divp = rb_int2big(0);
+ if (modp) *modp = x;
+ return Qnil;
+ }
+ if (yn == 1) {
dd = yds[0];
- z = big_clone(x);
+ z = bignew(xn, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
zds = BDIGITS(z);
- t2 = 0; i = nx;
- while (i--) {
- t2 = BIGUP(t2) + zds[i];
- zds[i] = t2 / dd;
- t2 %= dd;
- }
- if (div) *div = bignorm(z);
- if (mod) {
- if (!y->sign) t2 = -t2;
- *mod = INT2FIX(t2);
+ dd = bigdivrem_single(zds, xds, xn, dd);
+ if (modp) {
+ *modp = rb_uint2big((VALUE)dd);
+ RBIGNUM_SET_SIGN(*modp, RBIGNUM_SIGN(x));
}
- return;
+ if (divp) *divp = z;
+ return Qnil;
}
- z = bignew(nx==ny?nx+2:nx+1, x->sign==y->sign);
- zds = BDIGITS(z);
- if (nx==ny) zds[nx+1] = 0;
- while (!yds[ny-1]) ny--;
- if ((dd = BIGRAD/(int)(yds[ny-1]+1)) != 1) {
- y = (struct RBignum*)big_clone(y);
- tds = BDIGITS(y);
- j = 0;
- num = 0;
- while (j<ny) {
- num += (unsigned long)yds[j]*dd;
- tds[j++] = BIGLO(num);
- num = BIGDN(num);
- }
- yds = tds;
- j = 0;
- num = 0;
- while (j<nx) {
- num += (unsigned long)xds[j]*dd;
- zds[j++] = BIGLO(num);
- num = BIGDN(num);
- }
- zds[j] = num;
+ if (xn == 2 && yn == 2) {
+ BDIGIT_DBL x0 = bary2bdigitdbl(xds, 2);
+ BDIGIT_DBL y0 = bary2bdigitdbl(yds, 2);
+ BDIGIT_DBL q0 = x0 / y0;
+ BDIGIT_DBL r0 = x0 % y0;
+ if (divp) {
+ z = bignew(bdigit_roomof(sizeof(BDIGIT_DBL)), RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
+ zds = BDIGITS(z);
+ zds[0] = BIGLO(q0);
+ zds[1] = BIGLO(BIGDN(q0));
+ *divp = z;
+ }
+ if (modp) {
+ z = bignew(bdigit_roomof(sizeof(BDIGIT_DBL)), RBIGNUM_SIGN(x));
+ zds = BDIGITS(z);
+ zds[0] = BIGLO(r0);
+ zds[1] = BIGLO(BIGDN(r0));
+ *modp = z;
+ }
+ return Qnil;
+ }
+
+ if (divp) {
+ qn = xn + BIGDIVREM_EXTRA_WORDS;
+ q = bignew(qn, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y));
+ qds = BDIGITS(q);
}
else {
- zds[nx] = 0;
- j = nx;
- while (j--) zds[j] = xds[j];
+ qn = 0;
+ qds = NULL;
}
- j = nx==ny?nx+1:nx;
- do {
- if (zds[j] == yds[ny-1]) q = BIGRAD-1;
- else q = (BIGUP(zds[j]) + zds[j-1])/yds[ny-1];
- if (q) {
- i = 0; num = 0; t2 = 0;
- do { /* multiply and subtract */
- int ee;
- t2 += (unsigned long)yds[i] * q;
- ee = num - BIGLO(t2);
- num = zds[j - ny + i] + ee;
- if (ee) zds[j - ny + i] = BIGLO(num);
- num = BIGDN(num);
- t2 = BIGDN(t2);
- } while (++i < ny);
- num += zds[j - ny + i] - t2; /* borrow from high digit; don't update */
- while (num) { /* "add back" required */
- i = 0; num = 0; q--;
- do {
- int ee = num + yds[i];
- num = (long) zds[j - ny + i] + ee;
- if (ee) zds[j - ny + i] = BIGLO(num);
- num = BIGDN(num);
- } while (++i < ny);
- num--;
- }
- }
- zds[j] = q;
- } while (--j >= ny);
- if (div) { /* move quotient down in z */
- *div = big_clone(z);
- zds = BDIGITS(*div);
- j = (nx==ny ? nx+2 : nx+1) - ny;
- for (i = 0;i < j;i++) zds[i] = zds[i+ny];
- RBIGNUM(*div)->len = i;
- *div = bignorm(*div);
- }
- if (mod) { /* just normalize remainder */
- *mod = big_clone(z);
- if (dd) {
- zds = BDIGITS(*mod);
- t2 = 0; i = ny;
- while(i--) {
- t2 = BIGUP(t2) + zds[i];
- zds[i] = t2 / dd;
- t2 %= dd;
- }
- }
- RBIGNUM(*mod)->len = ny;
- RBIGNUM(*mod)->sign = y->sign;
- *mod = bignorm(*mod);
+
+ if (modp) {
+ rn = yn;
+ r = bignew(rn, RBIGNUM_SIGN(x));
+ rds = BDIGITS(r);
+ }
+ else {
+ rn = 0;
+ rds = NULL;
}
+
+ bary_divmod_branch(qds, qn, rds, rn, xds, xn, yds, yn);
+
+ if (divp) {
+ bigtrunc(q);
+ *divp = q;
+ }
+ if (modp) {
+ bigtrunc(r);
+ *modp = r;
+ }
+
+ return Qnil;
}
-static VALUE
-big_div(x, y)
- VALUE x, y;
+static void
+bigdivmod(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp)
{
- VALUE z;
+ VALUE mod;
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = int2big(FIX2INT(y));
- break;
+ bigdivrem(x, y, divp, &mod);
+ if (RBIGNUM_SIGN(x) != RBIGNUM_SIGN(y) && !BIGZEROP(mod)) {
+ if (divp) *divp = bigadd(*divp, rb_int2big(1), 0);
+ if (modp) *modp = bigadd(mod, y, 1);
+ }
+ else if (modp) {
+ *modp = mod;
+ }
+}
- case T_BIGNUM:
- break;
- case T_FLOAT:
- return float_new(big2dbl(x) / RFLOAT(y)->value);
+static VALUE
+rb_big_divide(VALUE x, VALUE y, ID op)
+{
+ VALUE z;
- default:
- return num_coerce_bin(x, y);
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ if (op == '/') {
+ return DBL2NUM(rb_big2dbl(x) / RFLOAT_VALUE(y));
+ }
+ else {
+ double dy = RFLOAT_VALUE(y);
+ if (dy == 0.0) rb_num_zerodiv();
+ return rb_dbl2big(rb_big2dbl(x) / dy);
+ }
+ }
+ else {
+ return rb_num_coerce_bin(x, y, op);
}
bigdivmod(x, y, &z, 0);
- return z;
+ return bignorm(z);
}
-static VALUE
-big_mod(x, y)
- VALUE x, y;
+/*
+ * call-seq:
+ * big / other -> Numeric
+ *
+ * Performs division: the class of the resulting object depends on
+ * the class of <code>numeric</code> and on the magnitude of the
+ * result.
+ */
+
+VALUE
+rb_big_div(VALUE x, VALUE y)
{
- VALUE z;
+ return rb_big_divide(x, y, '/');
+}
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = int2big(FIX2INT(y));
- break;
+/*
+ * call-seq:
+ * big.div(other) -> integer
+ *
+ * Performs integer division: returns integer value.
+ */
- case T_BIGNUM:
- break;
+VALUE
+rb_big_idiv(VALUE x, VALUE y)
+{
+ return rb_big_divide(x, y, rb_intern("div"));
+}
- case T_FLOAT:
- y = dbl2big(RFLOAT(y)->value);
- break;
+/*
+ * call-seq:
+ * big % other -> Numeric
+ * big.modulo(other) -> Numeric
+ *
+ * Returns big modulo other. See Numeric.divmod for more
+ * information.
+ */
- default:
- return num_coerce_bin(x, y);
+VALUE
+rb_big_modulo(VALUE x, VALUE y)
+{
+ VALUE z;
+
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (!RB_BIGNUM_TYPE_P(y)) {
+ return rb_num_coerce_bin(x, y, '%');
}
bigdivmod(x, y, 0, &z);
- return z;
+ return bignorm(z);
}
+/*
+ * call-seq:
+ * big.remainder(numeric) -> number
+ *
+ * Returns the remainder after dividing <i>big</i> by <i>numeric</i>.
+ *
+ * -1234567890987654321.remainder(13731) #=> -6966
+ * -1234567890987654321.remainder(13731.24) #=> -9906.22531493148
+ */
static VALUE
-big_divmod(x, y)
- VALUE x, y;
+rb_big_remainder(VALUE x, VALUE y)
{
- VALUE div, mod;
+ VALUE z;
- switch (TYPE(y)) {
- case T_FIXNUM:
- y = int2big(FIX2INT(y));
- break;
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (!RB_BIGNUM_TYPE_P(y)) {
+ return rb_num_coerce_bin(x, y, rb_intern("remainder"));
+ }
+ bigdivrem(x, y, 0, &z);
- case T_FLOAT:
- y = dbl2big(RFLOAT(y)->value);
- break;
+ return bignorm(z);
+}
- case T_BIGNUM:
- break;
+/*
+ * call-seq:
+ * big.divmod(numeric) -> array
+ *
+ * See <code>Numeric#divmod</code>.
+ *
+ */
+VALUE
+rb_big_divmod(VALUE x, VALUE y)
+{
+ VALUE div, mod;
- default:
- return num_coerce_bin(x, y);
+ if (FIXNUM_P(y)) {
+ y = rb_int2big(FIX2LONG(y));
+ }
+ else if (!RB_BIGNUM_TYPE_P(y)) {
+ return rb_num_coerce_bin(x, y, rb_intern("divmod"));
}
bigdivmod(x, y, &div, &mod);
- return assoc_new(div, mod);;
+ return rb_assoc_new(bignorm(div), bignorm(mod));
}
-VALUE
-big_pow(x, y)
- VALUE x, y;
+static VALUE
+big_shift(VALUE x, long n)
{
- double d;
+ if (n < 0)
+ return big_lshift(x, 1+(unsigned long)(-(n+1)));
+ else if (n > 0)
+ return big_rshift(x, (unsigned long)n);
+ return x;
+}
+
+static VALUE
+big_fdiv(VALUE x, VALUE y, long ey)
+{
+#define DBL_BIGDIG ((DBL_MANT_DIG + BITSPERDIG) / BITSPERDIG)
VALUE z;
-
- if (y == INT2FIX(0)) return INT2FIX(1);
- switch (TYPE(y)) {
- case T_FLOAT:
- d = RFLOAT(y)->value;
- break;
+ long l, ex;
+
+ bigtrunc(x);
+ l = RBIGNUM_LEN(x);
+ ex = l * BITSPERDIG - nlz(BDIGITS(x)[l-1]);
+ ex -= 2 * DBL_BIGDIG * BITSPERDIG;
+ if (ex) x = big_shift(x, ex);
+
+ bigdivrem(x, y, &z, 0);
+ l = ex - ey;
+#if SIZEOF_LONG > SIZEOF_INT
+ {
+ /* Visual C++ can't be here */
+ if (l > INT_MAX) return DBL2NUM(INFINITY);
+ if (l < INT_MIN) return DBL2NUM(0.0);
+ }
+#endif
+ return DBL2NUM(ldexp(big2dbl(z), (int)l));
+}
- case T_BIGNUM:
- if (RBIGNUM(y)->sign) goto pos_big;
- d = big2dbl(y);
- break;
+static VALUE
+big_fdiv_int(VALUE x, VALUE y)
+{
+ long l, ey;
+ bigtrunc(y);
+ l = RBIGNUM_LEN(y);
+ ey = l * BITSPERDIG - nlz(BDIGITS(y)[l-1]);
+ ey -= DBL_BIGDIG * BITSPERDIG;
+ if (ey) y = big_shift(y, ey);
+ return big_fdiv(x, y, ey);
+}
- case T_FIXNUM:
- if (FIX2INT(y) > 0) goto pos_big;
- d = (double)FIX2INT(y);
- break;
+static VALUE
+big_fdiv_float(VALUE x, VALUE y)
+{
+ int i;
+ y = dbl2big(ldexp(frexp(RFLOAT_VALUE(y), &i), DBL_MANT_DIG));
+ return big_fdiv(x, y, i - DBL_MANT_DIG);
+}
- default:
- return num_coerce_bin(x, y);
- }
- return float_new(pow(big2dbl(x), d));
+/*
+ * call-seq:
+ * big.fdiv(numeric) -> float
+ *
+ * Returns the floating point result of dividing <i>big</i> by
+ * <i>numeric</i>.
+ *
+ * -1234567890987654321.fdiv(13731) #=> -89910996357705.5
+ * -1234567890987654321.fdiv(13731.24) #=> -89909424858035.7
+ *
+ */
- pos_big:
- z = x;
- for (;;) {
- y = rb_funcall(y, '-', 1, INT2FIX(1));
- if (y == INT2FIX(0)) break;
- while (rb_funcall(y, '%', 1, INT2FIX(2)) == INT2FIX(0)) {
- y = rb_funcall(y, '/', 1, INT2FIX(2));
- x = big_mul(x, x);
- }
- z = big_mul(z, x);
- }
- return z;
-}
VALUE
-big_and(x, y)
- struct RBignum *x, *y;
+rb_big_fdiv(VALUE x, VALUE y)
{
- VALUE z;
- USHORT *ds1, *ds2, *zds;
- UINT i, l1, l2;
- char sign;
+ double dx, dy;
+ dx = big2dbl(x);
if (FIXNUM_P(y)) {
- y = (struct RBignum*)int2big(FIX2INT(y));
+ dy = (double)FIX2LONG(y);
+ if (isinf(dx))
+ return big_fdiv_int(x, rb_int2big(FIX2LONG(y)));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ dy = rb_big2dbl(y);
+ if (isinf(dx) || isinf(dy))
+ return big_fdiv_int(x, y);
+ }
+ else if (RB_FLOAT_TYPE_P(y)) {
+ dy = RFLOAT_VALUE(y);
+ if (isnan(dy))
+ return y;
+ if (isinf(dx))
+ return big_fdiv_float(x, y);
}
else {
- Check_Type(y, T_BIGNUM);
+ return rb_num_coerce_bin(x, y, rb_intern("fdiv"));
}
+ return DBL2NUM(dx / dy);
+}
+
+/*
+ * call-seq:
+ * big ** exponent -> numeric
+ *
+ * Raises _big_ to the _exponent_ power (which may be an integer, float,
+ * or anything that will coerce to a number). The result may be
+ * a Fixnum, Bignum, or Float
+ *
+ * 123456789 ** 2 #=> 15241578750190521
+ * 123456789 ** 1.2 #=> 5126464716.09932
+ * 123456789 ** -2 #=> 6.5610001194102e-17
+ */
- if (!y->sign) {
- y = (struct RBignum*)big_clone(y);
- big_2comp(y);
+VALUE
+rb_big_pow(VALUE x, VALUE y)
+{
+ double d;
+ SIGNED_VALUE yy;
+
+ again:
+ if (y == INT2FIX(0)) return INT2FIX(1);
+ if (RB_FLOAT_TYPE_P(y)) {
+ d = RFLOAT_VALUE(y);
+ if ((!RBIGNUM_SIGN(x) && !BIGZEROP(x)) && d != round(d))
+ return rb_funcall(rb_complex_raw1(x), rb_intern("**"), 1, y);
}
- if (!x->sign) {
- x = (struct RBignum*)big_clone(x);
- big_2comp(x);
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ y = bignorm(y);
+ if (FIXNUM_P(y))
+ goto again;
+ rb_warn("in a**b, b may be too big");
+ d = rb_big2dbl(y);
}
- if (x->len > y->len) {
- l1 = y->len;
- l2 = x->len;
- ds1 = BDIGITS(y);
- ds2 = BDIGITS(x);
- sign = y->sign;
+ else if (FIXNUM_P(y)) {
+ yy = FIX2LONG(y);
+
+ if (yy < 0)
+ return rb_funcall(rb_rational_raw1(x), rb_intern("**"), 1, y);
+ else {
+ VALUE z = 0;
+ SIGNED_VALUE mask;
+ const size_t xbits = rb_absint_numwords(x, 1, NULL);
+ const size_t BIGLEN_LIMIT = 32*1024*1024;
+
+ if (xbits == (size_t)-1 ||
+ (xbits > BIGLEN_LIMIT) ||
+ (xbits * yy > BIGLEN_LIMIT)) {
+ rb_warn("in a**b, b may be too big");
+ d = (double)yy;
+ }
+ else {
+ for (mask = FIXNUM_MAX + 1; mask; mask >>= 1) {
+ if (z) z = bigsq(z);
+ if (yy & mask) {
+ z = z ? bigtrunc(bigmul0(z, x)) : x;
+ }
+ }
+ return bignorm(z);
+ }
+ }
}
else {
- l1 = x->len;
- l2 = y->len;
- ds1 = BDIGITS(x);
- ds2 = BDIGITS(y);
- sign = x->sign;
+ return rb_num_coerce_bin(x, y, rb_intern("**"));
}
- z = bignew(l2, x->sign && y->sign);
+ return DBL2NUM(pow(rb_big2dbl(x), d));
+}
+
+static VALUE
+bigand_int(VALUE x, long xn, BDIGIT hibitsx, long y)
+{
+ VALUE z;
+ BDIGIT *xds, *zds;
+ long zn;
+ long i;
+ BDIGIT hibitsy;
+
+ if (y == 0) return INT2FIX(0);
+ if (xn == 0) return hibitsx ? LONG2NUM(y) : 0;
+ hibitsy = 0 <= y ? 0 : BDIGMAX;
+ xds = BDIGITS(x);
+#if SIZEOF_BDIGITS >= SIZEOF_LONG
+ if (!hibitsy) {
+ y &= xds[0];
+ return LONG2NUM(y);
+ }
+#endif
+
+ zn = xn;
+#if SIZEOF_BDIGITS < SIZEOF_LONG
+ if (hibitsx && zn < bdigit_roomof(SIZEOF_LONG))
+ zn = bdigit_roomof(SIZEOF_LONG);
+#endif
+
+ z = bignew(zn, 0);
zds = BDIGITS(z);
- for (i=0; i<l1; i++) {
- zds[i] = ds1[i] & ds2[i];
+#if SIZEOF_BDIGITS >= SIZEOF_LONG
+ i = 1;
+ zds[0] = xds[0] & y;
+#else
+ for (i=0; i < xn; i++) {
+ if (y == 0 || y == -1) break;
+ zds[i] = xds[i] & BIGLO(y);
+ y = BIGDN(y);
+ }
+ for (; i < zn; i++) {
+ if (y == 0 || y == -1) break;
+ zds[i] = hibitsx & BIGLO(y);
+ y = BIGDN(y);
+ }
+#endif
+ for (;i < xn; i++) {
+ zds[i] = xds[i] & hibitsy;
}
- for (; i<l2; i++) {
- zds[i] = sign?0:ds2[i];
+ for (;i < zn; i++) {
+ zds[i] = hibitsx & hibitsy;
}
- if (!RBIGNUM(z)->sign) big_2comp(z);
+ twocomp2abs_bang(z, hibitsx && hibitsy);
+ RB_GC_GUARD(x);
return bignorm(z);
}
+/*
+ * call-seq:
+ * big & numeric -> integer
+ *
+ * Performs bitwise +and+ between _big_ and _numeric_.
+ */
+
VALUE
-big_or(x, y)
- struct RBignum *x, *y;
+rb_big_and(VALUE x, VALUE y)
{
VALUE z;
- USHORT *ds1, *ds2, *zds;
- UINT i, l1, l2;
- char sign;
+ BDIGIT *ds1, *ds2, *zds;
+ long i, xn, yn, n1, n2;
+ BDIGIT hibitsx, hibitsy;
+ BDIGIT hibits1, hibits2;
+ VALUE tmpv;
+ BDIGIT tmph;
+ long tmpn;
+
+ if (!FIXNUM_P(y) && !RB_BIGNUM_TYPE_P(y)) {
+ return rb_num_coerce_bit(x, y, '&');
+ }
+ hibitsx = abs2twocomp(&x, &xn);
if (FIXNUM_P(y)) {
- y = (struct RBignum*)int2big(FIX2INT(y));
+ return bigand_int(x, xn, hibitsx, FIX2LONG(y));
}
- else {
- Check_Type(y, T_BIGNUM);
+ hibitsy = abs2twocomp(&y, &yn);
+ if (xn > yn) {
+ tmpv = x; x = y; y = tmpv;
+ tmpn = xn; xn = yn; yn = tmpn;
+ tmph = hibitsx; hibitsx = hibitsy; hibitsy = tmph;
}
+ n1 = xn;
+ n2 = yn;
+ ds1 = BDIGITS(x);
+ ds2 = BDIGITS(y);
+ hibits1 = hibitsx;
+ hibits2 = hibitsy;
+
+ if (!hibits1)
+ n2 = n1;
- if (!y->sign) {
- y = (struct RBignum*)big_clone(y);
- big_2comp(y);
+ z = bignew(n2, 0);
+ zds = BDIGITS(z);
+
+ for (i=0; i<n1; i++) {
+ zds[i] = ds1[i] & ds2[i];
}
- if (!x->sign) {
- x = (struct RBignum*)big_clone(x);
- big_2comp(x);
+ for (; i<n2; i++) {
+ zds[i] = hibits1 & ds2[i];
}
- if (x->len > y->len) {
- l1 = y->len;
- l2 = x->len;
- ds1 = BDIGITS(y);
- ds2 = BDIGITS(x);
- sign = y->sign;
+ twocomp2abs_bang(z, hibits1 && hibits2);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
+ return bignorm(z);
+}
+
+static VALUE
+bigor_int(VALUE x, long xn, BDIGIT hibitsx, long y)
+{
+ VALUE z;
+ BDIGIT *xds, *zds;
+ long zn;
+ long i;
+ BDIGIT hibitsy;
+
+ if (y == -1) return INT2FIX(-1);
+ if (xn == 0) return hibitsx ? INT2FIX(-1) : LONG2FIX(y);
+ hibitsy = 0 <= y ? 0 : BDIGMAX;
+ xds = BDIGITS(x);
+
+ zn = RBIGNUM_LEN(x);
+#if SIZEOF_BDIGITS < SIZEOF_LONG
+ if (zn < bdigit_roomof(SIZEOF_LONG))
+ zn = bdigit_roomof(SIZEOF_LONG);
+#endif
+ z = bignew(zn, 0);
+ zds = BDIGITS(z);
+
+#if SIZEOF_BDIGITS >= SIZEOF_LONG
+ i = 1;
+ zds[0] = xds[0] | y;
+ if (i < zn)
+ goto y_is_fixed_point;
+ goto finish;
+#else
+ for (i=0; i < xn; i++) {
+ if (y == 0 || y == -1) goto y_is_fixed_point;
+ zds[i] = xds[i] | BIGLO(y);
+ y = BIGDN(y);
}
- else {
- l1 = x->len;
- l2 = y->len;
- ds1 = BDIGITS(x);
- ds2 = BDIGITS(y);
- sign = x->sign;
+ if (hibitsx)
+ goto fill_hibits;
+ for (; i < zn; i++) {
+ if (y == 0 || y == -1) goto y_is_fixed_point;
+ zds[i] = BIGLO(y);
+ y = BIGDN(y);
}
- z = bignew(l2, x->sign || y->sign);
- zds = BDIGITS(z);
+ goto finish;
+#endif
- for (i=0; i<l1; i++) {
- zds[i] = ds1[i] | ds2[i];
+ y_is_fixed_point:
+ if (hibitsy)
+ goto fill_hibits;
+ for (; i < xn; i++) {
+ zds[i] = xds[i];
}
- for (; i<l2; i++) {
- zds[i] = sign?ds2[i]:(BIGRAD-1);
+ if (hibitsx)
+ goto fill_hibits;
+ for (; i < zn; i++) {
+ zds[i] = 0;
}
- if (!RBIGNUM(z)->sign) big_2comp(z);
+ goto finish;
+ fill_hibits:
+ for (; i < zn; i++) {
+ zds[i] = BDIGMAX;
+ }
+
+ finish:
+ twocomp2abs_bang(z, hibitsx || hibitsy);
+ RB_GC_GUARD(x);
return bignorm(z);
}
+/*
+ * call-seq:
+ * big | numeric -> integer
+ *
+ * Performs bitwise +or+ between _big_ and _numeric_.
+ */
+
VALUE
-big_xor(x, y)
- struct RBignum *x, *y;
+rb_big_or(VALUE x, VALUE y)
{
VALUE z;
- USHORT *ds1, *ds2, *zds;
- UINT i, l1, l2;
- char sign;
+ BDIGIT *ds1, *ds2, *zds;
+ long i, xn, yn, n1, n2;
+ BDIGIT hibitsx, hibitsy;
+ BDIGIT hibits1, hibits2;
+ VALUE tmpv;
+ BDIGIT tmph;
+ long tmpn;
+
+ if (!FIXNUM_P(y) && !RB_BIGNUM_TYPE_P(y)) {
+ return rb_num_coerce_bit(x, y, '|');
+ }
+ hibitsx = abs2twocomp(&x, &xn);
if (FIXNUM_P(y)) {
- y = (struct RBignum*)int2big(FIX2INT(y));
+ return bigor_int(x, xn, hibitsx, FIX2LONG(y));
}
- else {
- Check_Type(y, T_BIGNUM);
+ hibitsy = abs2twocomp(&y, &yn);
+ if (xn > yn) {
+ tmpv = x; x = y; y = tmpv;
+ tmpn = xn; xn = yn; yn = tmpn;
+ tmph = hibitsx; hibitsx = hibitsy; hibitsy = tmph;
}
+ n1 = xn;
+ n2 = yn;
+ ds1 = BDIGITS(x);
+ ds2 = BDIGITS(y);
+ hibits1 = hibitsx;
+ hibits2 = hibitsy;
- if (!y->sign) {
- y = (struct RBignum*)big_clone(y);
- big_2comp(y);
- }
- if (!x->sign) {
- x = (struct RBignum*)big_clone(x);
- big_2comp(x);
- }
- if (x->len > y->len) {
- l1 = y->len;
- l2 = x->len;
- ds1 = BDIGITS(y);
- ds2 = BDIGITS(x);
- sign = y->sign;
- }
- else {
- l1 = x->len;
- l2 = y->len;
- ds1 = BDIGITS(x);
- ds2 = BDIGITS(y);
- sign = x->sign;
- }
- x->sign = x->sign?1:0;
- y->sign = y->sign?1:0;
- z = bignew(l2, !(x->sign ^ y->sign));
+ if (hibits1)
+ n2 = n1;
+
+ z = bignew(n2, 0);
zds = BDIGITS(z);
- for (i=0; i<l1; i++) {
- zds[i] = ds1[i] ^ ds2[i];
+ for (i=0; i<n1; i++) {
+ zds[i] = ds1[i] | ds2[i];
}
- for (; i<l2; i++) {
- zds[i] = sign?ds2[i]:~ds2[i];
+ for (; i<n2; i++) {
+ zds[i] = hibits1 | ds2[i];
}
- if (!RBIGNUM(z)->sign) big_2comp(z);
-
+ twocomp2abs_bang(z, hibits1 || hibits2);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
return bignorm(z);
}
-static VALUE big_rshift();
-
-VALUE
-big_lshift(x, y)
- struct RBignum *x;
- VALUE y;
-{
- USHORT *xds, *zds;
- int shift = NUM2INT(y);
- UINT s1 = shift/(sizeof(USHORT)*CHAR_BIT);
- UINT s2 = shift%(sizeof(USHORT)*CHAR_BIT);
+static VALUE
+bigxor_int(VALUE x, long xn, BDIGIT hibitsx, long y)
+{
VALUE z;
- unsigned long num = 0;
- UINT len, i;
+ BDIGIT *xds, *zds;
+ long zn;
+ long i;
+ BDIGIT hibitsy;
- if (shift < 0) return big_rshift(x, INT2FIX(-shift));
+ hibitsy = 0 <= y ? 0 : BDIGMAX;
xds = BDIGITS(x);
- len = x->len;
- z = bignew(len+s1+1, x->sign);
+ zn = RBIGNUM_LEN(x);
+#if SIZEOF_BDIGITS < SIZEOF_LONG
+ if (zn < bdigit_roomof(SIZEOF_LONG))
+ zn = bdigit_roomof(SIZEOF_LONG);
+#endif
+ z = bignew(zn, 0);
zds = BDIGITS(z);
- for (i=0; i<s1; i++) {
- *zds++ = 0;
+
+#if SIZEOF_BDIGITS >= SIZEOF_LONG
+ i = 1;
+ zds[0] = xds[0] ^ y;
+#else
+ for (i = 0; i < xn; i++) {
+ zds[i] = xds[i] ^ BIGLO(y);
+ y = BIGDN(y);
}
- for (i=0; i<len; i++) {
- num = num | *xds++<<s2;
- *zds++ = BIGLO(num);
- num = BIGDN(num);
+ for (; i < zn; i++) {
+ zds[i] = hibitsx ^ BIGLO(y);
+ y = BIGDN(y);
+ }
+#endif
+ for (; i < xn; i++) {
+ zds[i] = xds[i] ^ hibitsy;
+ }
+ for (; i < zn; i++) {
+ zds[i] = hibitsx ^ hibitsy;
}
- *zds = BIGLO(num);
+ twocomp2abs_bang(z, (hibitsx ^ hibitsy) != 0);
+ RB_GC_GUARD(x);
return bignorm(z);
}
+/*
+ * call-seq:
+ * big ^ numeric -> integer
+ *
+ * Performs bitwise +exclusive or+ between _big_ and _numeric_.
+ */
-static VALUE
-big_rshift(x, y)
- struct RBignum *x;
- VALUE y;
-{
- USHORT *xds, *zds;
- int shift = NUM2INT(y);
- UINT s1 = shift/(sizeof(USHORT)*CHAR_BIT);
- UINT s2 = shift%(sizeof(USHORT)*CHAR_BIT);
+VALUE
+rb_big_xor(VALUE x, VALUE y)
+{
VALUE z;
- unsigned long num = 0;
- UINT i = x->len, j;
+ BDIGIT *ds1, *ds2, *zds;
+ long i, xn, yn, n1, n2;
+ BDIGIT hibitsx, hibitsy;
+ BDIGIT hibits1, hibits2;
+ VALUE tmpv;
+ BDIGIT tmph;
+ long tmpn;
+
+ if (!FIXNUM_P(y) && !RB_BIGNUM_TYPE_P(y)) {
+ return rb_num_coerce_bit(x, y, '^');
+ }
- if (shift < 0) return big_lshift(x, INT2FIX(-shift));
- if (s1 > x->len) {
- if (x->sign)
- return INT2FIX(0);
- else
- return INT2FIX(-1);
+ hibitsx = abs2twocomp(&x, &xn);
+ if (FIXNUM_P(y)) {
+ return bigxor_int(x, xn, hibitsx, FIX2LONG(y));
}
- xds = BDIGITS(x);
- i = x->len; j = i - s1;
- z = bignew(j, x->sign);
+ hibitsy = abs2twocomp(&y, &yn);
+ if (xn > yn) {
+ tmpv = x; x = y; y = tmpv;
+ tmpn = xn; xn = yn; yn = tmpn;
+ tmph = hibitsx; hibitsx = hibitsy; hibitsy = tmph;
+ }
+ n1 = xn;
+ n2 = yn;
+ ds1 = BDIGITS(x);
+ ds2 = BDIGITS(y);
+ hibits1 = hibitsx;
+ hibits2 = hibitsy;
+
+ z = bignew(n2, 0);
zds = BDIGITS(z);
- while (i--, j--) {
- num = (num | xds[i]) >> s2;
- zds[j] = BIGLO(num);
- num = BIGUP(xds[i]);
+
+ for (i=0; i<n1; i++) {
+ zds[i] = ds1[i] ^ ds2[i];
+ }
+ for (; i<n2; i++) {
+ zds[i] = hibitsx ^ ds2[i];
}
+ twocomp2abs_bang(z, (hibits1 ^ hibits2) != 0);
+ RB_GC_GUARD(x);
+ RB_GC_GUARD(y);
return bignorm(z);
}
-static VALUE
-big_aref(x, y)
- struct RBignum *x;
- VALUE y;
+/*
+ * call-seq:
+ * big << numeric -> integer
+ *
+ * Shifts big left _numeric_ positions (right if _numeric_ is negative).
+ */
+
+VALUE
+rb_big_lshift(VALUE x, VALUE y)
{
- USHORT *xds;
- int shift = NUM2INT(y);
- UINT s1, s2;
+ int lshift_p;
+ size_t shift_numdigits;
+ int shift_numbits;
- if (shift < 0) return INT2FIX(0);
- s1 = shift/(sizeof(USHORT)*CHAR_BIT);
- s2 = shift%(sizeof(USHORT)*CHAR_BIT);
+ for (;;) {
+ if (FIXNUM_P(y)) {
+ long l = FIX2LONG(y);
+ unsigned long shift;
+ if (0 <= l) {
+ lshift_p = 1;
+ shift = l;
+ }
+ else {
+ lshift_p = 0;
+ shift = 1+(unsigned long)(-(l+1));
+ }
+ shift_numbits = (int)(shift & (BITSPERDIG-1));
+ shift_numdigits = shift >> bit_length(BITSPERDIG-1);
+ return bignorm(big_shift3(x, lshift_p, shift_numdigits, shift_numbits));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ return bignorm(big_shift2(x, 1, y));
+ }
+ y = rb_to_int(y);
+ }
+}
+
+
+/*
+ * call-seq:
+ * big >> numeric -> integer
+ *
+ * Shifts big right _numeric_ positions (left if _numeric_ is negative).
+ */
+
+VALUE
+rb_big_rshift(VALUE x, VALUE y)
+{
+ int lshift_p;
+ size_t shift_numdigits;
+ int shift_numbits;
- if (!x->sign) {
- if (s1 >= x->len) return INT2FIX(1);
- x = (struct RBignum*)big_clone(x);
- big_2comp(x);
+ for (;;) {
+ if (FIXNUM_P(y)) {
+ long l = FIX2LONG(y);
+ unsigned long shift;
+ if (0 <= l) {
+ lshift_p = 0;
+ shift = l;
+ }
+ else {
+ lshift_p = 1;
+ shift = 1+(unsigned long)(-(l+1));
+ }
+ shift_numbits = (int)(shift & (BITSPERDIG-1));
+ shift_numdigits = shift >> bit_length(BITSPERDIG-1);
+ return bignorm(big_shift3(x, lshift_p, shift_numdigits, shift_numbits));
+ }
+ else if (RB_BIGNUM_TYPE_P(y)) {
+ return bignorm(big_shift2(x, 0, y));
+ }
+ y = rb_to_int(y);
+ }
+}
+
+/*
+ * call-seq:
+ * big[n] -> 0, 1
+ *
+ * Bit Reference---Returns the <em>n</em>th bit in the (assumed) binary
+ * representation of <i>big</i>, where <i>big</i>[0] is the least
+ * significant bit.
+ *
+ * a = 9**15
+ * 50.downto(0) do |n|
+ * print a[n]
+ * end
+ *
+ * <em>produces:</em>
+ *
+ * 000101110110100000111000011110010100111100010111001
+ *
+ */
+
+static VALUE
+rb_big_aref(VALUE x, VALUE y)
+{
+ BDIGIT *xds;
+ unsigned long shift;
+ long i, s1, s2;
+ BDIGIT bit;
+
+ if (RB_BIGNUM_TYPE_P(y)) {
+ if (!RBIGNUM_SIGN(y))
+ return INT2FIX(0);
+ bigtrunc(y);
+ if (BIGSIZE(y) > sizeof(long)) {
+ out_of_range:
+ return RBIGNUM_SIGN(x) ? INT2FIX(0) : INT2FIX(1);
+ }
+ shift = big2ulong(y, "long");
}
else {
- if (s1 >= x->len) return INT2FIX(0);
+ i = NUM2LONG(y);
+ if (i < 0) return INT2FIX(0);
+ shift = i;
}
+ s1 = shift/BITSPERDIG;
+ s2 = shift%BITSPERDIG;
+ bit = (BDIGIT)1 << s2;
+
+ if (s1 >= RBIGNUM_LEN(x)) goto out_of_range;
+
xds = BDIGITS(x);
- if (xds[s1] & (1<<s2))
- return INT2FIX(1);
- return INT2FIX(0);
+ if (RBIGNUM_POSITIVE_P(x))
+ return (xds[s1] & bit) ? INT2FIX(1) : INT2FIX(0);
+ if (xds[s1] & (bit-1))
+ return (xds[s1] & bit) ? INT2FIX(0) : INT2FIX(1);
+ for (i = 0; i < s1; i++)
+ if (xds[i])
+ return (xds[s1] & bit) ? INT2FIX(0) : INT2FIX(1);
+ return (xds[s1] & bit) ? INT2FIX(1) : INT2FIX(0);
}
+/*
+ * call-seq:
+ * big.hash -> fixnum
+ *
+ * Compute a hash based on the value of _big_.
+ */
+
static VALUE
-big_hash(x)
- struct RBignum *x;
+rb_big_hash(VALUE x)
{
- int i, len, key;
- USHORT *digits;
+ st_index_t hash;
- key = 0; digits = BDIGITS(x);
- for (i=0,len=x->len; i<x->len; i++) {
- key ^= *digits++;
- }
- return INT2FIX(key);
+ hash = rb_memhash(BDIGITS(x), sizeof(BDIGIT)*RBIGNUM_LEN(x)) ^ RBIGNUM_SIGN(x);
+ return INT2FIX(hash);
}
+/*
+ * call-seq:
+ * big.coerce(numeric) -> array
+ *
+ * Returns an array with both a +numeric+ and a +big+ represented as Bignum
+ * objects.
+ *
+ * This is achieved by converting +numeric+ to a Bignum.
+ *
+ * A TypeError is raised if the +numeric+ is not a Fixnum or Bignum type.
+ *
+ * (0x3FFFFFFFFFFFFFFF+1).coerce(42) #=> [42, 4611686018427387904]
+ */
+
static VALUE
-big_coerce(x, y)
- struct RBignum *x;
- VALUE y;
+rb_big_coerce(VALUE x, VALUE y)
{
if (FIXNUM_P(y)) {
- return assoc_new(int2big(FIX2INT(y)), x);
+ y = rb_int2big(FIX2LONG(y));
}
- else {
- TypeError("can't coerce %s to Bignum", rb_class2name(CLASS_OF(y)));
+ else if (!RB_BIGNUM_TYPE_P(y)) {
+ rb_raise(rb_eTypeError, "can't coerce %s to Bignum",
+ rb_obj_classname(y));
}
- /* not reached */
+ return rb_assoc_new(y, x);
}
+/*
+ * call-seq:
+ * big.abs -> aBignum
+ * big.magnitude -> aBignum
+ *
+ * Returns the absolute value of <i>big</i>.
+ *
+ * -1234567890987654321.abs #=> 1234567890987654321
+ */
+
static VALUE
-big_abs(x)
- struct RBignum *x;
+rb_big_abs(VALUE x)
{
- if (!x->sign) {
- x = (struct RBignum*)big_clone(x);
- x->sign = 1;
+ if (!RBIGNUM_SIGN(x)) {
+ x = rb_big_clone(x);
+ RBIGNUM_SET_SIGN(x, 1);
}
- return (VALUE)x;
+ return x;
}
-/* !!!warnig!!!!
- this is not really a random number!!
-*/
+/*
+ * call-seq:
+ * big.size -> integer
+ *
+ * Returns the number of bytes in the machine representation of
+ * <i>big</i>.
+ *
+ * (256**10 - 1).size #=> 12
+ * (256**20 - 1).size #=> 20
+ * (256**40 - 1).size #=> 40
+ */
-VALUE
-big_rand(max)
- struct RBignum *max;
+static VALUE
+rb_big_size(VALUE big)
{
- struct RBignum *v;
- int len;
+ return SIZET2NUM(BIGSIZE(big));
+}
- len = max->len;
- v = RBIGNUM(bignew(len,1));
- while (len--) {
-#ifdef HAVE_RANDOM
- BDIGITS(v)[len] = random();
-#else
- BDIGITS(v)[len] = rand();
-#endif
+/*
+ * call-seq:
+ * int.bit_length -> integer
+ *
+ * Returns the number of bits of the value of <i>int</i>.
+ *
+ * "the number of bits" means that
+ * the bit position of the highest bit which is different to the sign bit.
+ * (The bit position of the bit 2**n is n+1.)
+ * If there is no such bit (zero or minus one), zero is returned.
+ *
+ * I.e. This method returns ceil(log2(int < 0 ? -int : int+1)).
+ *
+ * (-2**10000-1).bit_length #=> 10001
+ * (-2**10000).bit_length #=> 10000
+ * (-2**10000+1).bit_length #=> 10000
+ *
+ * (-2**1000-1).bit_length #=> 1001
+ * (-2**1000).bit_length #=> 1000
+ * (-2**1000+1).bit_length #=> 1000
+ *
+ * (2**1000-1).bit_length #=> 1000
+ * (2**1000).bit_length #=> 1001
+ * (2**1000+1).bit_length #=> 1001
+ *
+ * (2**10000-1).bit_length #=> 10000
+ * (2**10000).bit_length #=> 10001
+ * (2**10000+1).bit_length #=> 10001
+ *
+ */
+
+static VALUE
+rb_big_bit_length(VALUE big)
+{
+ int nlz_bits;
+ size_t numbytes;
+
+ static const BDIGIT char_bit[1] = { CHAR_BIT };
+ BDIGIT numbytes_bary[bdigit_roomof(sizeof(size_t))];
+ BDIGIT nlz_bary[1];
+ BDIGIT result_bary[bdigit_roomof(sizeof(size_t)+1)];
+
+ numbytes = rb_absint_size(big, &nlz_bits);
+
+ if (numbytes == 0)
+ return LONG2FIX(0);
+
+ if (RBIGNUM_NEGATIVE_P(big) && rb_absint_singlebit_p(big)) {
+ if (nlz_bits != CHAR_BIT-1) {
+ nlz_bits++;
+ }
+ else {
+ nlz_bits = 0;
+ numbytes--;
+ }
}
- return big_mod(v, max);
+ if (numbytes <= SIZE_MAX / CHAR_BIT) {
+ return SIZET2NUM(numbytes * CHAR_BIT - nlz_bits);
+ }
+
+ nlz_bary[0] = nlz_bits;
+
+ bary_unpack(BARY_ARGS(numbytes_bary), &numbytes, 1, sizeof(numbytes), 0,
+ INTEGER_PACK_NATIVE_BYTE_ORDER);
+ BARY_SHORT_MUL(result_bary, numbytes_bary, char_bit);
+ BARY_SUB(result_bary, result_bary, nlz_bary);
+
+ return rb_integer_unpack(result_bary, numberof(result_bary), sizeof(BDIGIT), 0,
+ INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER);
}
+/*
+ * call-seq:
+ * big.odd? -> true or false
+ *
+ * Returns <code>true</code> if <i>big</i> is an odd number.
+ */
+
static VALUE
-big_size(big)
- struct RBignum *big;
+rb_big_odd_p(VALUE num)
{
- return INT2FIX(big->len*2);
+ if (RBIGNUM_LEN(num) != 0 && BDIGITS(num)[0] & 1) {
+ return Qtrue;
+ }
+ return Qfalse;
}
+/*
+ * call-seq:
+ * big.even? -> true or false
+ *
+ * Returns <code>true</code> if <i>big</i> is an even number.
+ */
+
+static VALUE
+rb_big_even_p(VALUE num)
+{
+ if (RBIGNUM_LEN(num) != 0 && BDIGITS(num)[0] & 1) {
+ return Qfalse;
+ }
+ return Qtrue;
+}
+
+/*
+ * Bignum objects hold integers outside the range of
+ * Fixnum. Bignum objects are created
+ * automatically when integer calculations would otherwise overflow a
+ * Fixnum. When a calculation involving
+ * Bignum objects returns a result that will fit in a
+ * Fixnum, the result is automatically converted.
+ *
+ * For the purposes of the bitwise operations and <code>[]</code>, a
+ * Bignum is treated as if it were an infinite-length
+ * bitstring with 2's complement representation.
+ *
+ * While Fixnum values are immediate, Bignum
+ * objects are not---assignment and parameter passing work with
+ * references to objects, not the objects themselves.
+ *
+ */
+
void
-Init_Bignum()
-{
- cBignum = rb_define_class("Bignum", cInteger);
-
- rb_undef_method(CLASS_OF(cBignum), "new");
-
- rb_define_method(cBignum, "to_s", big_to_s, 0);
- rb_define_method(cBignum, "coerce", big_coerce, 1);
- rb_define_method(cBignum, "-@", big_uminus, 0);
- rb_define_method(cBignum, "+", big_plus, 1);
- rb_define_method(cBignum, "-", big_minus, 1);
- rb_define_method(cBignum, "*", big_mul, 1);
- rb_define_method(cBignum, "/", big_div, 1);
- rb_define_method(cBignum, "%", big_mod, 1);
- rb_define_method(cBignum, "divmod", big_divmod, 1);
- rb_define_method(cBignum, "**", big_pow, 1);
- rb_define_method(cBignum, "&", big_and, 1);
- rb_define_method(cBignum, "|", big_or, 1);
- rb_define_method(cBignum, "^", big_xor, 1);
- rb_define_method(cBignum, "~", big_neg, 0);
- rb_define_method(cBignum, "<<", big_lshift, 1);
- rb_define_method(cBignum, ">>", big_rshift, 1);
- rb_define_method(cBignum, "[]", big_aref, 1);
-
- rb_define_method(cBignum, "<=>", big_cmp, 1);
- rb_define_method(cBignum, "==", big_eq, 1);
- rb_define_method(cBignum, "eql?", big_eq, 1);
- rb_define_method(cBignum, "hash", big_hash, 0);
- rb_define_method(cBignum, "to_i", big_to_i, 0);
- rb_define_method(cBignum, "to_f", big_to_f, 0);
- rb_define_method(cBignum, "abs", big_abs, 0);
- rb_define_method(cBignum, "size", big_size, 0);
+Init_Bignum(void)
+{
+ rb_cBignum = rb_define_class("Bignum", rb_cInteger);
+
+ rb_define_method(rb_cBignum, "to_s", rb_big_to_s, -1);
+ rb_define_alias(rb_cBignum, "inspect", "to_s");
+ rb_define_method(rb_cBignum, "coerce", rb_big_coerce, 1);
+ rb_define_method(rb_cBignum, "-@", rb_big_uminus, 0);
+ rb_define_method(rb_cBignum, "+", rb_big_plus, 1);
+ rb_define_method(rb_cBignum, "-", rb_big_minus, 1);
+ rb_define_method(rb_cBignum, "*", rb_big_mul, 1);
+ rb_define_method(rb_cBignum, "/", rb_big_div, 1);
+ rb_define_method(rb_cBignum, "%", rb_big_modulo, 1);
+ rb_define_method(rb_cBignum, "div", rb_big_idiv, 1);
+ rb_define_method(rb_cBignum, "divmod", rb_big_divmod, 1);
+ rb_define_method(rb_cBignum, "modulo", rb_big_modulo, 1);
+ rb_define_method(rb_cBignum, "remainder", rb_big_remainder, 1);
+ rb_define_method(rb_cBignum, "fdiv", rb_big_fdiv, 1);
+ rb_define_method(rb_cBignum, "**", rb_big_pow, 1);
+ rb_define_method(rb_cBignum, "&", rb_big_and, 1);
+ rb_define_method(rb_cBignum, "|", rb_big_or, 1);
+ rb_define_method(rb_cBignum, "^", rb_big_xor, 1);
+ rb_define_method(rb_cBignum, "~", rb_big_neg, 0);
+ rb_define_method(rb_cBignum, "<<", rb_big_lshift, 1);
+ rb_define_method(rb_cBignum, ">>", rb_big_rshift, 1);
+ rb_define_method(rb_cBignum, "[]", rb_big_aref, 1);
+
+ rb_define_method(rb_cBignum, "<=>", rb_big_cmp, 1);
+ rb_define_method(rb_cBignum, "==", rb_big_eq, 1);
+ rb_define_method(rb_cBignum, ">", big_gt, 1);
+ rb_define_method(rb_cBignum, ">=", big_ge, 1);
+ rb_define_method(rb_cBignum, "<", big_lt, 1);
+ rb_define_method(rb_cBignum, "<=", big_le, 1);
+ rb_define_method(rb_cBignum, "===", rb_big_eq, 1);
+ rb_define_method(rb_cBignum, "eql?", rb_big_eql, 1);
+ rb_define_method(rb_cBignum, "hash", rb_big_hash, 0);
+ rb_define_method(rb_cBignum, "to_f", rb_big_to_f, 0);
+ rb_define_method(rb_cBignum, "abs", rb_big_abs, 0);
+ rb_define_method(rb_cBignum, "magnitude", rb_big_abs, 0);
+ rb_define_method(rb_cBignum, "size", rb_big_size, 0);
+ rb_define_method(rb_cBignum, "bit_length", rb_big_bit_length, 0);
+ rb_define_method(rb_cBignum, "odd?", rb_big_odd_p, 0);
+ rb_define_method(rb_cBignum, "even?", rb_big_even_p, 0);
+
+#ifdef USE_GMP
+ rb_define_const(rb_cBignum, "GMP_VERSION", rb_sprintf("GMP %s", gmp_version));
+#endif
+
+ power_cache_init();
}
diff --git a/bin/erb b/bin/erb
new file mode 100755
index 0000000000..6a7ea7d593
--- /dev/null
+++ b/bin/erb
@@ -0,0 +1,155 @@
+#!/usr/bin/env ruby
+# Tiny eRuby --- ERB2
+# Copyright (c) 1999-2000,2002 Masatoshi SEKI
+# You can redistribute it and/or modify it under the same terms as Ruby.
+
+require 'erb'
+
+class ERB
+ module Main
+ def ARGV.switch
+ return nil if self.empty?
+ arg = self.shift
+ return nil if arg == '--'
+ if arg =~ /^-(.)(.*)/
+ if $1 == '-'
+ arg, @maybe_arg = arg.split(/=/, 2)
+ return arg
+ end
+ raise 'unknown switch "-"' if $2[0] == ?- and $1 != 'T'
+ if $2.size > 0
+ self.unshift "-#{$2}"
+ @maybe_arg = $2
+ else
+ @maybe_arg = nil
+ end
+ "-#{$1}"
+ else
+ self.unshift arg
+ nil
+ end
+ end
+
+ def ARGV.req_arg
+ (@maybe_arg || self.shift || raise('missing argument')).tap {
+ @maybe_arg = nil
+ }
+ end
+
+ def trim_mode_opt(trim_mode, disable_percent)
+ return trim_mode if disable_percent
+ case trim_mode
+ when 0
+ return '%'
+ when 1
+ return '%>'
+ when 2
+ return '%<>'
+ when '-'
+ return '%-'
+ end
+ end
+ module_function :trim_mode_opt
+
+ def run(factory=ERB)
+ trim_mode = 0
+ disable_percent = false
+ begin
+ while switch = ARGV.switch
+ case switch
+ when '-x' # ruby source
+ output = true
+ when '-n' # line number
+ number = true
+ when '-v' # verbose
+ $VERBOSE = true
+ when '--version' # version
+ STDERR.puts factory.version
+ exit
+ when '-d', '--debug' # debug
+ $DEBUG = true
+ when '-r' # require
+ require ARGV.req_arg
+ when '-S' # security level
+ arg = ARGV.req_arg
+ raise "invalid safe_level #{arg.dump}" unless arg =~ /^[0-3]$/
+ safe_level = arg.to_i
+ when '-T' # trim mode
+ arg = ARGV.req_arg
+ if arg == '-'
+ trim_mode = arg
+ next
+ end
+ raise "invalid trim mode #{arg.dump}" unless arg =~ /^[0-2]$/
+ trim_mode = arg.to_i
+ when '-E', '--encoding'
+ arg = ARGV.req_arg
+ set_encoding(*arg.split(/:/, 2))
+ when '-U'
+ set_encoding(Encoding::UTF_8, Encoding::UTF_8)
+ when '-P'
+ disable_percent = true
+ when '--help'
+ raise "print this help"
+ else
+ raise "unknown switch #{switch.dump}"
+ end
+ end
+ rescue # usage
+ STDERR.puts $!.to_s
+ STDERR.puts File.basename($0) +
+ " [switches] [inputfile]"
+ STDERR.puts <<EOU
+ -x print ruby script
+ -n print ruby script with line number
+ -v enable verbose mode
+ -d set $DEBUG to true
+ -r library load a library
+ -S safe_level set $SAFE (0..3)
+ -E ex[:in] set default external/internal encodings
+ -U set default encoding to UTF-8.
+ -T trim_mode specify trim_mode (0..2, -)
+ -P ignore lines which start with "%"
+EOU
+ exit 1
+ end
+
+ $<.set_encoding(Encoding::ASCII_8BIT, nil)
+ src = $<.read
+ filename = $FILENAME
+ exit 2 unless src
+ trim = trim_mode_opt(trim_mode, disable_percent)
+ erb = factory.new(src.untaint, safe_level, trim)
+ erb.filename = filename
+ if output
+ if number
+ erb.src.each_line.with_index do |line, l|
+ puts "%3d %s"%[l+1, line]
+ end
+ else
+ puts erb.src
+ end
+ else
+ erb.run(TOPLEVEL_BINDING.taint)
+ end
+ end
+ module_function :run
+
+ def set_encoding(extern, intern = nil)
+ verbose, $VERBOSE = $VERBOSE, nil
+ Encoding.default_external = extern unless extern.nil? || extern.empty?
+ Encoding.default_internal = intern unless intern.nil? || intern.empty?
+ [$stdin, $stdout, $stderr].each do |io|
+ io.set_encoding(extern, intern)
+ end
+ ensure
+ $VERBOSE = verbose
+ end
+ module_function :set_encoding
+ class << self; private :set_encoding; end
+ end
+end
+
+if __FILE__ == $0
+ ERB::Main.run
+end
diff --git a/bin/gem b/bin/gem
new file mode 100755
index 0000000000..a4ec754abb
--- /dev/null
+++ b/bin/gem
@@ -0,0 +1,25 @@
+#!/usr/bin/env ruby
+#--
+# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
+# All rights reserved.
+# See LICENSE.txt for permissions.
+#++
+
+require 'rubygems'
+require 'rubygems/gem_runner'
+require 'rubygems/exceptions'
+
+required_version = Gem::Requirement.new ">= 1.8.7"
+
+unless required_version.satisfied_by? Gem.ruby_version then
+ abort "Expected Ruby Version #{required_version}, is #{Gem.ruby_version}"
+end
+
+args = ARGV.clone
+
+begin
+ Gem::GemRunner.new.run args
+rescue Gem::SystemExitException => e
+ exit e.exit_code
+end
+
diff --git a/bin/irb b/bin/irb
new file mode 100755
index 0000000000..c64ee85fbd
--- /dev/null
+++ b/bin/irb
@@ -0,0 +1,11 @@
+#!/usr/bin/env ruby
+#
+# irb.rb - interactive ruby
+# $Release Version: 0.9.6 $
+# $Revision$
+# by Keiju ISHITSUKA(keiju@ruby-lang.org)
+#
+
+require "irb"
+
+IRB.start(__FILE__)
diff --git a/bin/rake b/bin/rake
new file mode 100755
index 0000000000..4e0bbb7b7a
--- /dev/null
+++ b/bin/rake
@@ -0,0 +1,33 @@
+#!/usr/bin/env ruby
+
+#--
+# Copyright (c) 2003, 2004, 2005, 2006, 2007 Jim Weirich
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+#++
+
+begin
+ require 'rubygems'
+ gem 'rake'
+rescue LoadError
+end
+
+require 'rake'
+
+Rake.application.run
diff --git a/bin/rdoc b/bin/rdoc
new file mode 100755
index 0000000000..aaa23292df
--- /dev/null
+++ b/bin/rdoc
@@ -0,0 +1,44 @@
+#!/usr/bin/env ruby
+#
+# RDoc: Documentation tool for source code
+# (see lib/rdoc/rdoc.rb for more information)
+#
+# Copyright (c) 2003 Dave Thomas
+# Released under the same terms as Ruby
+
+begin
+ gem 'rdoc'
+rescue NameError => e # --disable-gems
+ raise unless e.name == :gem
+rescue Gem::LoadError
+end
+
+require 'rdoc/rdoc'
+
+begin
+ r = RDoc::RDoc.new
+ r.document ARGV
+rescue Errno::ENOSPC
+ $stderr.puts 'Ran out of space creating documentation'
+ $stderr.puts
+ $stderr.puts 'Please free up some space and try again'
+rescue SystemExit
+ raise
+rescue Exception => e
+ if $DEBUG_RDOC then
+ $stderr.puts e.message
+ $stderr.puts "#{e.backtrace.join "\n\t"}"
+ $stderr.puts
+ elsif Interrupt === e then
+ $stderr.puts
+ $stderr.puts 'Interrupted'
+ else
+ $stderr.puts "uh-oh! RDoc had a problem:"
+ $stderr.puts e.message
+ $stderr.puts
+ $stderr.puts "run with --debug for full backtrace"
+ end
+
+ exit 1
+end
+
diff --git a/bin/ri b/bin/ri
new file mode 100755
index 0000000000..7fbed0c099
--- /dev/null
+++ b/bin/ri
@@ -0,0 +1,12 @@
+#!/usr/bin/env ruby
+
+begin
+ gem 'rdoc'
+rescue NameError => e # --disable-gems
+ raise unless e.name == :gem
+rescue Gem::LoadError
+end
+
+require 'rdoc/ri/driver'
+
+RDoc::RI::Driver.run ARGV
diff --git a/bin/testrb b/bin/testrb
new file mode 100755
index 0000000000..23a00b439f
--- /dev/null
+++ b/bin/testrb
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require 'test/unit'
+exit Test::Unit::AutoRunner.run(true)
diff --git a/bootstraptest/pending.rb b/bootstraptest/pending.rb
new file mode 100644
index 0000000000..744c0adac1
--- /dev/null
+++ b/bootstraptest/pending.rb
@@ -0,0 +1,39 @@
+assert_equal 'A', %q{
+ class A
+ @@a = 'A'
+ def a=(x)
+ @@a = x
+ end
+ def a
+ @@a
+ end
+ end
+
+ B = A.dup
+ B.new.a = 'B'
+ A.new.a
+}, '[ruby-core:17019]'
+
+assert_equal 'ok', %q{
+ def m
+ lambda{
+ proc{
+ return :ng1
+ }
+ }.call.call
+ :ng2
+ end
+
+ begin
+ m()
+ rescue LocalJumpError
+ :ok
+ end
+}
+
+assert_normal_exit %q{
+ r = Range.allocate
+ def r.<=>(o) true end
+ r.instance_eval { initialize r, r }
+ r.inspect
+}
diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb
new file mode 100755
index 0000000000..5fdfc42a63
--- /dev/null
+++ b/bootstraptest/runner.rb
@@ -0,0 +1,485 @@
+"exec" "${RUBY-ruby}" "-x" "$0" "$@" || true # -*- mode: ruby; coding: utf-8 -*-
+#!./ruby
+# $Id$
+
+# NOTE:
+# Never use optparse in this file.
+# Never use test/unit in this file.
+# Never use Ruby extensions in this file.
+
+begin
+ require 'fileutils'
+ require 'tmpdir'
+rescue LoadError
+ $:.unshift File.join(File.dirname(__FILE__), '../lib')
+ retry
+end
+
+if !Dir.respond_to?(:mktmpdir)
+ # copied from lib/tmpdir.rb
+ def Dir.mktmpdir(prefix_suffix=nil, tmpdir=nil)
+ case prefix_suffix
+ when nil
+ prefix = "d"
+ suffix = ""
+ when String
+ prefix = prefix_suffix
+ suffix = ""
+ when Array
+ prefix = prefix_suffix[0]
+ suffix = prefix_suffix[1]
+ else
+ raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
+ end
+ tmpdir ||= Dir.tmpdir
+ t = Time.now.strftime("%Y%m%d")
+ n = nil
+ begin
+ path = "#{tmpdir}/#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
+ path << "-#{n}" if n
+ path << suffix
+ Dir.mkdir(path, 0700)
+ rescue Errno::EEXIST
+ n ||= 0
+ n += 1
+ retry
+ end
+
+ if block_given?
+ begin
+ yield path
+ ensure
+ FileUtils.remove_entry_secure path
+ end
+ else
+ path
+ end
+ end
+end
+
+def main
+ @ruby = File.expand_path('miniruby')
+ @verbose = false
+ $stress = false
+ @color = nil
+ @tty = nil
+ @quiet = false
+ dir = nil
+ quiet = false
+ tests = nil
+ ARGV.delete_if {|arg|
+ case arg
+ when /\A--ruby=(.*)/
+ @ruby = $1
+ @ruby.gsub!(/^([^ ]*)/){File.expand_path($1)}
+ @ruby.gsub!(/(\s+-I\s*)((?!(?:\.\/)*-(?:\s|\z))\S+)/){$1+File.expand_path($2)}
+ @ruby.gsub!(/(\s+-r\s*)(\.\.?\/\S+)/){$1+File.expand_path($2)}
+ true
+ when /\A--sets=(.*)/
+ tests = Dir.glob("#{File.dirname($0)}/test_{#{$1}}*.rb").sort
+ puts tests.map {|path| File.basename(path) }.inspect
+ true
+ when /\A--dir=(.*)/
+ dir = $1
+ true
+ when /\A(--stress|-s)/
+ $stress = true
+ when /\A--color(?:=(?:always|(auto)|(never)|(.*)))?\z/
+ warn "unknown --color argument: #$3" if $3
+ @color = $1 ? nil : !$2
+ true
+ when /\A--tty(=(?:yes|(no)|(.*)))?\z/
+ warn "unknown --tty argument: #$3" if $3
+ @tty = !$1 || !$2
+ true
+ when /\A(-q|--q(uiet))\z/
+ quiet = true
+ @quiet = true
+ true
+ when /\A(-v|--v(erbose))\z/
+ @verbose = true
+ when /\A(-h|--h(elp)?)\z/
+ puts(<<-End)
+Usage: #{File.basename($0, '.*')} --ruby=PATH [--sets=NAME,NAME,...]
+ --sets=NAME,NAME,... Name of test sets.
+ --dir=DIRECTORY Working directory.
+ default: /tmp/bootstraptestXXXXX.tmpwd
+ --color[=WHEN] Colorize the output. WHEN defaults to 'always'
+ or can be 'never' or 'auto'.
+ -s, --stress stress test.
+ -v, --verbose Output test name before exec.
+ -q, --quiet Don\'t print header message.
+ -h, --help Print this message and quit.
+End
+ exit true
+ when /\A-j/
+ true
+ else
+ false
+ end
+ }
+ if tests and not ARGV.empty?
+ $stderr.puts "--tests and arguments are exclusive"
+ exit false
+ end
+ tests ||= ARGV
+ tests = Dir.glob("#{File.dirname($0)}/test_*.rb").sort if tests.empty?
+ pathes = tests.map {|path| File.expand_path(path) }
+
+ @progress = %w[- \\ | /]
+ @progress_bs = "\b" * @progress[0].size
+ @tty = $stderr.tty? if @tty.nil?
+ case @color
+ when nil
+ @color = @tty && /dumb/ !~ ENV["TERM"]
+ end
+ @tty &&= !@verbose
+ if @color
+ # dircolors-like style
+ colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:]*)/)] : {}
+ @passed = "\e[#{colors["pass"] || "32"}m"
+ @failed = "\e[#{colors["fail"] || "31"}m"
+ @reset = "\e[m"
+ @erase = "\r\e[2K\r"
+ else
+ @passed = @failed = @reset = @erase = ""
+ end
+ unless quiet
+ puts Time.now
+ if defined?(RUBY_DESCRIPTION)
+ puts "Driver is #{RUBY_DESCRIPTION}"
+ elsif defined?(RUBY_PATCHLEVEL)
+ puts "Driver is ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}#{RUBY_PLATFORM}) [#{RUBY_PLATFORM}]"
+ else
+ puts "Driver is ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
+ end
+ puts "Target is #{`#{@ruby} -v`.chomp}"
+ puts
+ $stdout.flush
+ end
+
+ in_temporary_working_directory(dir) {
+ exec_test pathes
+ }
+end
+
+def exec_test(pathes)
+ @count = 0
+ @error = 0
+ @errbuf = []
+ @location = nil
+ pathes.each do |path|
+ @basename = File.basename(path)
+ $stderr.print @basename, " "
+ $stderr.puts if @verbose
+ count = @count
+ error = @error
+ load File.expand_path(path)
+ if @tty
+ if @error == error
+ $stderr.print "#{@progress_bs}#{@passed}PASS #{@count-count}#{@reset}"
+ $stderr.print @erase if @quiet
+ else
+ $stderr.print "#{@progress_bs}#{@failed}FAIL #{@error-error}/#{@count-count}#{@reset}"
+ end
+ end
+ $stderr.puts unless @quiet and @tty
+ end
+ if @error == 0
+ if @count == 0
+ $stderr.puts "No tests, no problem"
+ else
+ $stderr.puts "#{@passed}PASS#{@reset} all #{@count} tests"
+ end
+ exit true
+ else
+ @errbuf.each do |msg|
+ $stderr.puts msg
+ end
+ $stderr.puts "#{@failed}FAIL#{@reset} #{@error}/#{@count} tests failed"
+ exit false
+ end
+end
+
+def show_progress(message = '')
+ if @verbose
+ $stderr.print "\##{@count} #{@location} "
+ elsif @tty
+ $stderr.print "#{@progress_bs}#{@progress[@count % @progress.size]}"
+ end
+ faildesc, errout = with_stderr {yield}
+ if !faildesc
+ if @tty
+ $stderr.print "#{@progress_bs}#{@progress[@count % @progress.size]}"
+ else
+ $stderr.print '.'
+ end
+ $stderr.puts if @verbose
+ else
+ $stderr.print "#{@failed}F#{@reset}"
+ $stderr.puts if @verbose
+ error faildesc, message
+ unless errout.empty?
+ $stderr.print "#{@failed}stderr output is not empty#{@reset}\n", adjust_indent(errout)
+ end
+ if @tty and !@verbose
+ $stderr.print @basename, " ", @progress[@count % @progress.size]
+ end
+ end
+rescue Interrupt
+ raise Interrupt
+rescue Exception => err
+ $stderr.print 'E'
+ $stderr.puts if @verbose
+ error err.message, message
+end
+
+# NativeClient is special. The binary is cross-compiled. But runs on the build environment.
+# So RUBY_PLATFORM in this process is not useful to detect it.
+def nacl?
+ @ruby and File.basename(@ruby.split(/\s/).first)['sel_ldr']
+end
+
+def assert_check(testsrc, message = '', opt = '')
+ show_progress(message) {
+ result = get_result_string(testsrc, opt)
+ check_coredump
+ yield(result)
+ }
+end
+
+def assert_equal(expected, testsrc, message = '')
+ newtest
+ assert_check(testsrc, message) {|result|
+ if expected == result
+ nil
+ else
+ desc = "#{result.inspect} (expected #{expected.inspect})"
+ pretty(testsrc, desc, result)
+ end
+ }
+end
+
+def assert_match(expected_pattern, testsrc, message = '')
+ newtest
+ assert_check(testsrc, message) {|result|
+ if expected_pattern =~ result
+ nil
+ else
+ desc = "#{expected_pattern.inspect} expected to be =~\n#{result.inspect}"
+ pretty(testsrc, desc, result)
+ end
+ }
+end
+
+def assert_not_match(unexpected_pattern, testsrc, message = '')
+ newtest
+ assert_check(testsrc, message) {|result|
+ if unexpected_pattern !~ result
+ nil
+ else
+ desc = "#{unexpected_pattern.inspect} expected to be !~\n#{result.inspect}"
+ pretty(testsrc, desc, result)
+ end
+ }
+end
+
+def assert_valid_syntax(testsrc, message = '')
+ newtest
+ assert_check(testsrc, message, '-c') {|result|
+ result if /Syntax OK/ !~ result
+ }
+end
+
+def assert_normal_exit(testsrc, *rest)
+ newtest
+ opt = {}
+ opt = rest.pop if Hash === rest.last
+ message, ignore_signals = rest
+ message ||= ''
+ timeout = opt[:timeout]
+ show_progress(message) {
+ faildesc = nil
+ filename = make_srcfile(testsrc)
+ old_stderr = $stderr.dup
+ timeout_signaled = false
+ begin
+ $stderr.reopen("assert_normal_exit.log", "w")
+ io = IO.popen("#{@ruby} -W0 #{filename}")
+ pid = io.pid
+ th = Thread.new {
+ io.read
+ io.close
+ $?
+ }
+ if !th.join(timeout)
+ Process.kill :KILL, pid
+ timeout_signaled = true
+ end
+ status = th.value
+ ensure
+ $stderr.reopen(old_stderr)
+ old_stderr.close
+ end
+ if status && status.signaled?
+ signo = status.termsig
+ signame = Signal.list.invert[signo]
+ unless ignore_signals and ignore_signals.include?(signame)
+ sigdesc = "signal #{signo}"
+ if signame
+ sigdesc = "SIG#{signame} (#{sigdesc})"
+ end
+ if timeout_signaled
+ sigdesc << " (timeout)"
+ end
+ faildesc = pretty(testsrc, "killed by #{sigdesc}", nil)
+ stderr_log = File.read("assert_normal_exit.log")
+ if !stderr_log.empty?
+ faildesc << "\n" if /\n\z/ !~ faildesc
+ stderr_log << "\n" if /\n\z/ !~ stderr_log
+ stderr_log.gsub!(/^.*\n/) { '| ' + $& }
+ faildesc << stderr_log
+ end
+ end
+ end
+ faildesc
+ }
+end
+
+def assert_finish(timeout_seconds, testsrc, message = '')
+ newtest
+ show_progress(message) {
+ faildesc = nil
+ filename = make_srcfile(testsrc)
+ io = IO.popen("#{@ruby} -W0 #{filename}")
+ pid = io.pid
+ waited = false
+ tlimit = Time.now + timeout_seconds
+ while Time.now < tlimit
+ if Process.waitpid pid, Process::WNOHANG
+ waited = true
+ break
+ end
+ sleep 0.1
+ end
+ if !waited
+ Process.kill(:KILL, pid)
+ Process.waitpid pid
+ faildesc = pretty(testsrc, "not finished in #{timeout_seconds} seconds", nil)
+ end
+ io.close
+ faildesc
+ }
+end
+
+def flunk(message = '')
+ newtest
+ show_progress('') { message }
+end
+
+def pretty(src, desc, result)
+ src = src.sub(/\A.*\n/, '')
+ (/\n/ =~ src ? "\n#{adjust_indent(src)}" : src) + " #=> #{desc}"
+end
+
+INDENT = 27
+
+def adjust_indent(src)
+ untabify(src).gsub(/^ {#{INDENT}}/o, '').gsub(/^/, ' ')
+end
+
+def untabify(str)
+ str.gsub(/^\t+/) {' ' * (8 * $&.size) }
+end
+
+def make_srcfile(src)
+ filename = 'bootstraptest.tmp.rb'
+ File.open(filename, 'w') {|f|
+ f.puts "GC.stress = true" if $stress
+ f.puts "print(begin; #{src}; end)"
+ }
+ filename
+end
+
+def get_result_string(src, opt = '')
+ if @ruby
+ filename = make_srcfile(src)
+ begin
+ `#{@ruby} -W0 #{opt} #{filename}`
+ ensure
+ raise Interrupt if $? and $?.signaled? && $?.termsig == Signal.list["INT"]
+ raise CoreDumpError, "core dumped" if $? and $?.coredump?
+ end
+ else
+ eval(src).to_s
+ end
+end
+
+def with_stderr
+ out = err = nil
+ begin
+ r, w = IO.pipe
+ stderr = $stderr.dup
+ $stderr.reopen(w)
+ w.close
+ reader = Thread.start {r.read}
+ begin
+ out = yield
+ ensure
+ $stderr.reopen(stderr)
+ err = reader.value
+ end
+ ensure
+ w.close rescue nil
+ r.close rescue nil
+ end
+ return out, err
+end
+
+def newtest
+ @location = File.basename(caller(2).first)
+ @count += 1
+ cleanup_coredump
+end
+
+def error(msg, additional_message)
+ msg = "#{@failed}\##{@count} #{@location}#{@reset}: #{msg} #{additional_message}"
+ if @tty
+ $stderr.puts "#{@erase}#{msg}"
+ else
+ @errbuf.push msg
+ end
+ @error += 1
+end
+
+def in_temporary_working_directory(dir)
+ if dir
+ Dir.mkdir dir
+ Dir.chdir(dir) {
+ yield
+ }
+ else
+ Dir.mktmpdir(["bootstraptest", ".tmpwd"]) {|d|
+ Dir.chdir(d) {
+ yield
+ }
+ }
+ end
+end
+
+def cleanup_coredump
+ FileUtils.rm_f 'core'
+ FileUtils.rm_f Dir.glob('core.*')
+ FileUtils.rm_f @ruby+'.stackdump' if @ruby
+end
+
+class CoreDumpError < StandardError; end
+
+def check_coredump
+ if File.file?('core') or not Dir.glob('core.*').empty? or
+ (@ruby and File.exist?(@ruby+'.stackdump'))
+ raise CoreDumpError, "core dumped"
+ end
+end
+
+main
diff --git a/bootstraptest/test_attr.rb b/bootstraptest/test_attr.rb
new file mode 100644
index 0000000000..721a847145
--- /dev/null
+++ b/bootstraptest/test_attr.rb
@@ -0,0 +1,36 @@
+assert_equal 'ok', %q{
+ module M
+ class A
+ class << self
+ attr_accessor :at
+ def workflow_rule
+ yield self
+ end
+
+ def eval_str(str)
+ eval(str)
+ end
+ end
+ end
+ end
+ begin
+ M::A.eval_str(<<-END)
+ workflow_rule do |r|
+ r.at 1
+ end
+ END
+ rescue ArgumentError => e
+ print "ok"
+ end
+}, '[ruby-core:14641]'
+
+assert_equal %{ok}, %{
+ class A
+ attr :m
+ end
+ begin
+ A.new.m(3)
+ rescue ArgumentError => e
+ print "ok"
+ end
+}, '[ruby-core:15120]'
diff --git a/bootstraptest/test_autoload.rb b/bootstraptest/test_autoload.rb
new file mode 100644
index 0000000000..a9f8e6dacd
--- /dev/null
+++ b/bootstraptest/test_autoload.rb
@@ -0,0 +1,70 @@
+assert_equal 'ok', %q{
+ File.unlink('zzz.rb') if File.file?('zzz.rb')
+ instance_eval do
+ autoload :ZZZ, './zzz.rb'
+ begin
+ ZZZ
+ rescue LoadError
+ :ok
+ end
+ end
+}, '[ruby-dev:43816]'
+
+assert_equal 'ok', %q{
+ open('zzz.rb', 'w') {|f| f.puts '' }
+ instance_eval do
+ autoload :ZZZ, './zzz.rb'
+ begin
+ ZZZ
+ rescue NameError
+ :ok
+ end
+ end
+}, '[ruby-dev:43816]'
+
+assert_equal 'ok', %q{
+ open('zzz.rb', 'w') {|f| f.puts 'class ZZZ; def self.ok;:ok;end;end'}
+ instance_eval do
+ autoload :ZZZ, './zzz.rb'
+ ZZZ.ok
+ end
+}, '[ruby-dev:43816]'
+
+assert_equal 'ok', %q{
+ open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
+ autoload :ZZZ, "./zzz.rb"
+ ZZZ.ok
+}
+
+assert_equal 'ok', %q{
+ open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
+ autoload :ZZZ, "./zzz.rb"
+ require "./zzz.rb"
+ ZZZ.ok
+}
+
+assert_equal 'okok', %q{
+ open("zzz.rb", "w") {|f| f.puts "class ZZZ; def self.ok;:ok;end;end"}
+ autoload :ZZZ, "./zzz.rb"
+ t1 = Thread.new {ZZZ.ok}
+ t2 = Thread.new {ZZZ.ok}
+ [t1.value, t2.value].join
+}
+
+assert_finish 5, %q{
+ autoload :ZZZ, File.expand_path(__FILE__)
+ begin
+ ZZZ
+ rescue NameError
+ end
+}, '[ruby-core:21696]'
+
+assert_equal 'A::C', %q{
+ open("zzz.rb", "w") {}
+ class A
+ autoload :C, "./zzz"
+ class C
+ end
+ C
+ end
+}
diff --git a/bootstraptest/test_block.rb b/bootstraptest/test_block.rb
new file mode 100644
index 0000000000..6a2ccfc6da
--- /dev/null
+++ b/bootstraptest/test_block.rb
@@ -0,0 +1,599 @@
+assert_equal %q{1}, %q{
+ 1.times{
+ begin
+ a = 1
+ ensure
+ foo = nil
+ end
+ }
+}
+assert_equal %q{2}, %q{
+ [1,2,3].find{|x| x == 2}
+}
+assert_equal %q{2}, %q{
+ class E
+ include Enumerable
+ def each(&block)
+ [1, 2, 3].each(&block)
+ end
+ end
+ E.new.find {|x| x == 2 }
+}
+assert_equal %q{6}, %q{
+ sum = 0
+ for x in [1, 2, 3]
+ sum += x
+ end
+ sum
+}
+assert_equal %q{15}, %q{
+ sum = 0
+ for x in (1..5)
+ sum += x
+ end
+ sum
+}
+assert_equal %q{0}, %q{
+ sum = 0
+ for x in []
+ sum += x
+ end
+ sum
+}
+assert_equal %q{1}, %q{
+ ans = []
+ 1.times{
+ for n in 1..3
+ a = n
+ ans << a
+ end
+ }
+}
+assert_equal %q{1..3}, %q{
+ ans = []
+ for m in 1..3
+ for n in 1..3
+ a = [m, n]
+ ans << a
+ end
+ end
+}
+assert_equal %q{[1, 2, 3]}, %q{
+ (1..3).to_a
+}
+assert_equal %q{[4, 8, 12]}, %q{
+ (1..3).map{|e|
+ e * 4
+ }
+}
+assert_equal %q{[1, 2, 3]}, %q{
+ class C
+ include Enumerable
+ def each
+ [1,2,3].each{|e|
+ yield e
+ }
+ end
+ end
+
+ C.new.to_a
+}
+assert_equal %q{[4, 5, 6]}, %q{
+ class C
+ include Enumerable
+ def each
+ [1,2,3].each{|e|
+ yield e
+ }
+ end
+ end
+
+ C.new.map{|e|
+ e + 3
+ }
+}
+assert_equal %q{100}, %q{
+ def m
+ yield
+ end
+ def n
+ yield
+ end
+
+ m{
+ n{
+ 100
+ }
+ }
+}
+assert_equal %q{20}, %q{
+ def m
+ yield 1
+ end
+
+ m{|ib|
+ m{|jb|
+ i = 20
+ }
+ }
+}
+assert_equal %q{2}, %q{
+ def m
+ yield 1
+ end
+
+ m{|ib|
+ m{|jb|
+ ib = 20
+ kb = 2
+ }
+ }
+}
+assert_equal %q{3}, %q{
+ def iter1
+ iter2{
+ yield
+ }
+ end
+
+ def iter2
+ yield
+ end
+
+ iter1{
+ jb = 2
+ iter1{
+ jb = 3
+ }
+ jb
+ }
+}
+assert_equal %q{2}, %q{
+ def iter1
+ iter2{
+ yield
+ }
+ end
+
+ def iter2
+ yield
+ end
+
+ iter1{
+ jb = 2
+ iter1{
+ jb
+ }
+ jb
+ }
+}
+assert_equal %q{2}, %q{
+ def m
+ yield 1
+ end
+ m{|ib|
+ ib*2
+ }
+}
+assert_equal %q{92580}, %q{
+ def m
+ yield 12345, 67890
+ end
+ m{|ib,jb|
+ ib*2+jb
+ }
+}
+assert_equal %q{[10, nil]}, %q{
+ def iter
+ yield 10
+ end
+
+ a = nil
+ [iter{|a|
+ a
+ }, a]
+}
+assert_equal %q{21}, %q{
+ def iter
+ yield 10
+ end
+
+ iter{|a|
+ iter{|a|
+ a + 1
+ } + a
+ }
+}
+assert_equal %q{[10, 20, 30, 40, nil, nil, nil, nil]}, %q{
+ def iter
+ yield 10, 20, 30, 40
+ end
+
+ a = b = c = d = nil
+ iter{|a, b, c, d|
+ [a, b, c, d]
+ } + [a, b, c, d]
+}
+assert_equal %q{[10, 20, 30, 40, nil, nil]}, %q{
+ def iter
+ yield 10, 20, 30, 40
+ end
+
+ a = b = nil
+ iter{|a, b, c, d|
+ [a, b, c, d]
+ } + [a, b]
+}
+assert_equal %q{[1]}, %q{
+ $a = []
+
+ def iter
+ yield 1
+ end
+
+ def m
+ x = iter{|x|
+ $a << x
+ y = 0
+ }
+ end
+ m
+ $a
+}
+assert_equal %q{[1, [2]]}, %q{
+ def iter
+ yield 1, 2
+ end
+
+ iter{|a, *b|
+ [a, b]
+ }
+}
+assert_equal %q{[[1, 2]]}, %q{
+ def iter
+ yield 1, 2
+ end
+
+ iter{|*a|
+ [a]
+ }
+}
+assert_equal %q{[1, 2, []]}, %q{
+ def iter
+ yield 1, 2
+ end
+
+ iter{|a, b, *c|
+ [a, b, c]
+ }
+}
+assert_equal %q{[1, 2, nil, []]}, %q{
+ def iter
+ yield 1, 2
+ end
+
+ iter{|a, b, c, *d|
+ [a, b, c, d]
+ }
+}
+assert_equal %q{1}, %q{
+ def m
+ yield
+ end
+ m{
+ 1
+ }
+}
+assert_equal %q{15129}, %q{
+ def m
+ yield 123
+ end
+ m{|ib|
+ m{|jb|
+ ib*jb
+ }
+ }
+}
+assert_equal %q{2}, %q{
+ def m a
+ yield a
+ end
+ m(1){|ib|
+ m(2){|jb|
+ ib*jb
+ }
+ }
+}
+assert_equal %q{9}, %q{
+ sum = 0
+ 3.times{|ib|
+ 2.times{|jb|
+ sum += ib + jb
+ }}
+ sum
+}
+assert_equal %q{10}, %q{
+ 3.times{|bl|
+ break 10
+ }
+}
+assert_equal %q{[1, 2]}, %q{
+ def iter
+ yield 1,2,3
+ end
+
+ iter{|i, j|
+ [i, j]
+ }
+}
+assert_equal %q{[1, nil]}, %q{
+ def iter
+ yield 1
+ end
+
+ iter{|i, j|
+ [i, j]
+ }
+}
+
+assert_equal '0', %q{
+def m()
+end
+m {|(v0,*,(*)),|}
+m {|(*v0,(*)),|}
+m {|(v0,*v1,(*)),|}
+m {|((v0,*v1,v2)),|}
+m {|(v0,*v1,v2),|}
+m {|(v0,*v1,(v2)),|}
+m {|((*),*v0,v1),|}
+m {|((v0),*v1,v2),|}
+m {|(v0,v1,*v2,v3),|}
+m {|v0,(v1,*v2,v3),|}
+m {|(v0,*v1,v2),v3,|}
+m {|(v0,*v1,v2)|}
+m {|(v0,*v1,v2),&v3|}
+m {|(v0,*v1,v2),*|}
+m {|(v0,*v1,v2),*,&v3|}
+m {|*,(v0,*v1,v2)|}
+m {|*,(v0,*v1,v2),&v3|}
+m {|v0,*,(v1,*v2,v3)|}
+m {|v0,*,(v1,*v2,v3),&v4|}
+m {|(v0,*v1,v2),*,v3|}
+m {|(v0,*v1,v2),*,v3,&v4|}
+m {|(v0, *v1, v2)|}
+m {|(*,v)|}
+0
+}, "block parameter (shouldn't SEGV: [ruby-dev:31143])"
+
+assert_equal 'nil', %q{
+ def m
+ yield
+ end
+ m{|&b| b}.inspect
+}, '[ruby-dev:31147]'
+
+assert_equal 'nil', %q{
+ def m()
+ yield
+ end
+ m {|(v,(*))|}.inspect
+}, '[ruby-dev:31160]'
+
+assert_equal 'nil', %q{
+ def m()
+ yield
+ end
+ m {|(*,a,b)|}.inspect
+}, '[ruby-dev:31153]'
+
+assert_equal 'nil', %q{
+ def m()
+ yield
+ end
+ m {|((*))|}.inspect
+}
+
+assert_equal %q{[1, 1, [1, nil], [1, nil], [1, nil], [1, nil], [1, 1], 1, [1, nil], [1, nil], [1, nil], [1, nil], [[1, 1], [1, 1]], [1, 1], [1, 1], [1, 1], [1, nil], [1, nil], [[[1, 1], [1, 1]], [[1, 1], [1, 1]]], [[1, 1], [1, 1]], [[1, 1], [1, 1]], [[1, 1], [1, 1]], [1, 1], [1, 1], [[[[1, 1], [1, 1]], [[1, 1], [1, 1]]], [[[1, 1], [1, 1]], [[1, 1], [1, 1]]]], [[[1, 1], [1, 1]], [[1, 1], [1, 1]]], [[[1, 1], [1, 1]], [[1, 1], [1, 1]]], [[[1, 1], [1, 1]], [[1, 1], [1, 1]]], [[1, 1], [1, 1]], [[1, 1], [1, 1]]]}, %q{
+def m(ary = [])
+ yield(ary)
+end
+
+$ans = []
+o = 1
+5.times{
+ v,(*) = o; $ans << o
+ m(o){|(v,(*))| $ans << v}
+ ((x, y)) = o; $ans << [x, y]
+ m(o){|((x, y))| $ans << [x, y]}
+ (((x, y))) = o; $ans << [x, y]
+ m(o){|(((x, y)))| $ans << [x, y]}
+ o = [o, o]
+}; $ans
+}
+
+assert_equal '0', %q{
+ def m()
+ yield [0]
+ end
+ m {|*,v| v}.inspect
+}, '[ruby-dev:31437]'
+assert_equal '[0]', %q{
+ def m
+ yield [0]
+ end
+ m{|v, &b| v}.inspect
+}, '[ruby-dev:31440]'
+assert_equal 'ok', %q{
+ begin
+ lambda{|a|}.call(1, 2)
+ rescue ArgumentError
+ :ok
+ else
+ :ng
+ end
+}, '[ruby-dev:31464]'
+assert_equal 'ok', %q{
+ begin
+ lambda{|&b|}.call(3)
+ rescue ArgumentError
+ :ok
+ else
+ :ng
+ end
+}, '[ruby-dev:31472]'
+assert_equal 'ok', %q{
+ class C
+ def each
+ yield [1,2]
+ yield 1,2
+ end
+ end
+ vs1 = []
+ C.new.each {|*v| vs1 << v }
+ vs2 = []
+ C.new.to_enum.each {|*v| vs2 << v }
+ vs1 == vs2 ? :ok : :ng
+}, '[ruby-dev:32329]'
+
+assert_normal_exit %q{
+ e = [1,2,3].each
+ 10000.times {
+ e = [e].each
+ }
+ Thread.new { GC.start }.join
+}, '[ruby-dev:32604]'
+
+
+assert_equal '[nil, []]', %q{
+ def m() yield nil,[] end
+ l = lambda {|*v| v}
+ GC.stress=true
+ r = m(&l)
+ GC.stress=false
+ r.inspect
+}, '[ruby-dev:32567]'
+
+assert_equal NilClass.to_s, %q{
+ r = false; 1.times{|&b| r = b}; r.class
+}
+
+assert_equal 'ok', %q{
+ class C
+ define_method(:foo) do |arg, &block|
+ if block then block.call else arg end
+ end
+ end
+ C.new.foo("ng") {"ok"}
+}, '[ruby-talk:266422]'
+
+assert_equal 'ok', %q{
+ class C
+ define_method(:xyz) do |o, k, &block|
+ block.call(o, k)
+ end
+ end
+ C.new.xyz("o","k") {|o, k| o+k}
+}, '[ruby-core:20544]'
+
+assert_equal 'ok', %q{
+ class C
+ define_method(:xyz) do |*args, &block|
+ block.call(*args)
+ end
+ end
+ C.new.xyz("o","k") {|*args| args.join("")}
+}, '[ruby-core:20544]'
+
+assert_equal 'ok', %q{
+ STDERR.reopen(STDOUT)
+ class C
+ define_method(:foo) do |&block|
+ block.call if block
+ end
+ result = "ng"
+ new.foo() {result = "ok"}
+ result
+ end
+}
+
+assert_equal "ok", %q{
+ class Bar
+ def bar; :ok; end
+ end
+ def foo
+ yield(Bar.new) if block_given?
+ end
+ foo(&:bar)
+}, '[ruby-core:14279]'
+
+assert_normal_exit %q{
+ class Controller
+ def respond_to(&block)
+ responder = Responder.new
+ block.call(responder)
+ responder.respond
+ end
+ def test_for_bug
+ respond_to{|format|
+ format.js{
+ puts "in test"
+ render{|obj|
+ puts obj
+ }
+ }
+ }
+ end
+ def render(&block)
+ puts "in render"
+ end
+ end
+
+ class Responder
+ def method_missing(symbol, &block)
+ puts "enter method_missing"
+ @response = Proc.new{
+ puts 'in method missing'
+ block.call
+ }
+ puts "leave method_missing"
+ end
+ def respond
+ @response.call
+ end
+ end
+ t = Controller.new
+ t.test_for_bug
+}, '[ruby-core:14395]'
+
+assert_equal 'true', %q{
+ class C0
+ def foo
+ block_given?
+ end
+ end
+
+ class C1 < C0
+ def foo
+ super
+ end
+ end
+
+ C1.new.foo{}
+}
+
+assert_equal 'true', %q{
+ class C0
+ def foo
+ block_given?
+ end
+ end
+
+ class C1 < C0
+ def foo
+ super()
+ end
+ end
+
+ C1.new.foo{}
+}
+
diff --git a/bootstraptest/test_class.rb b/bootstraptest/test_class.rb
new file mode 100644
index 0000000000..b7fe0a1acd
--- /dev/null
+++ b/bootstraptest/test_class.rb
@@ -0,0 +1,169 @@
+# class
+assert_equal 'true', %q( class C; end
+ Object.const_defined?(:C) )
+assert_equal 'Class', %q( class C; end
+ C.class )
+assert_equal 'C', %q( class C; end
+ C.name )
+assert_equal 'C', %q( class C; end
+ C.new.class )
+assert_equal 'C', %q( class C; end
+ C.new.class.name )
+assert_equal 'Class', %q( class C; end
+ C.new.class.class )
+assert_equal 'true', %q( Object.__send__(:remove_const, :TrueClass)
+ GC.start
+ true.inspect)
+assert_equal 'false', %q( Object.__send__(:remove_const, :FalseClass)
+ GC.start
+ false.inspect)
+assert_equal 'nil', %q( Object.__send__(:remove_const, :NilClass)
+ GC.start
+ nil.inspect)
+
+
+# inherited class
+assert_equal 'true', %q( class A; end
+ class C < A; end
+ Object.const_defined?(:C) )
+assert_equal 'Class', %q( class A; end
+ class C < A; end
+ C.class )
+assert_equal 'C', %q( class A; end
+ class C < A; end
+ C.name )
+assert_equal 'C', %q( class A; end
+ class C < A; end
+ C.new.class )
+assert_equal 'C', %q( class A; end
+ class C < A; end
+ C.new.class.name )
+assert_equal 'Class', %q( class A; end
+ class C < A; end
+ C.new.class.class )
+
+# module
+assert_equal 'true', %q( module M; end
+ Object.const_defined?(:M) )
+assert_equal 'Module', %q( module M; end
+ M.class )
+assert_equal 'M', %q( module M; end
+ M.name )
+assert_equal 'C', %q( module M; end
+ class C; include M; end
+ C.new.class )
+
+# nested class
+assert_equal 'A::B', %q( class A; end
+ class A::B; end
+ A::B )
+assert_equal 'A::B', %q( class A; end
+ class A::B; end
+ A::B.name )
+assert_equal 'A::B', %q( class A; end
+ class A::B; end
+ A::B.new.class )
+assert_equal 'Class', %q( class A; end
+ class A::B; end
+ A::B.new.class.class )
+assert_equal 'A::B::C', %q( class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C )
+assert_equal 'A::B::C', %q( class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C.name )
+assert_equal 'Class', %q( class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C.class )
+assert_equal 'A::B::C', %q( class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C.new.class )
+assert_equal 'Class', %q( class A; end
+ class A::B; end
+ class A::B::C; end
+ A::B::C.new.class.class )
+assert_equal 'A::B2', %q( class A; end
+ class A::B; end
+ class A::B2 < A::B; end
+ A::B2 )
+assert_equal 'Class', %q( class A; end
+ class A::B; end
+ class A::B2 < A::B; end
+ A::B2.class )
+
+# reopen
+assert_equal 'true', %q( class C; end; c1 = ::C
+ class C; end; c2 = ::C
+ c1.equal?(c2) )
+assert_equal '1', %q( class C; end
+ class A; end
+ begin class C < A; end; rescue TypeError; 1 end )
+assert_equal '1', %q( class C; end
+ begin module C; end; rescue TypeError; 1 end )
+assert_equal '1', %q( C = 1 # [yarv-dev:782]
+ begin class C; end; rescue TypeError; 1 end )
+assert_equal '1', %q( C = 1 # [yarv-dev:800]
+ begin module C; end; rescue TypeError; 1 end )
+
+# colon2, colon3
+assert_equal '1', %q( class A; end; A::C = 1; A::C )
+assert_equal '1', %q( A = 7; begin A::C = 7; rescue TypeError; 1 end )
+assert_equal '1', %q( begin 7::C = 7; rescue TypeError; 1 end )
+assert_equal 'C', %q( class A; class ::C; end end; C )
+assert_equal 'Class', %q( class A; class ::C; end end; C.class )
+assert_equal 'OK', %q( class A; ::C = "OK"; end; C )
+assert_equal 'String', %q( class A; ::C = "OK"; end; C.class )
+
+# class/module dup
+assert_equal 'Class', %q( class C; end; C.dup.class )
+assert_equal 'Module', %q( module M; end; M.dup.class )
+
+
+assert_equal "ok", %q{
+ module Foo
+ end
+
+ begin
+ def foo(&b)
+ Foo.module_eval &b
+ end
+ foo{
+ def bar
+ end
+ }
+ bar()
+ rescue NameError
+ :ok
+ end
+}, '[ruby-core:14378]'
+
+assert_equal '3', %q{
+ $i = 0
+ class C
+ def self.const_missing *args
+ $i+=1
+ end
+ end
+
+ 3.times{
+ C::FOO
+ }
+ $i
+}
+
+assert_match /::C\z/, %q{
+ c = nil
+ Module.new{|m| c = class m::C; name; end}
+ c
+}, '[ruby-dev:38456]'
+
+assert_normal_exit %q{
+ s = Symbol.dup
+ class << s
+ end
+ s.allocate.to_s
+}, '[ruby-core:30843]'
diff --git a/bootstraptest/test_eval.rb b/bootstraptest/test_eval.rb
new file mode 100644
index 0000000000..bf7478006d
--- /dev/null
+++ b/bootstraptest/test_eval.rb
@@ -0,0 +1,324 @@
+assert_equal %q{ok}, %q{
+ def m
+ a = :ok
+ $b = binding
+ end
+ m
+ eval('a', $b)
+}
+assert_equal %q{[:ok, :ok2]}, %q{
+ def m
+ a = :ok
+ $b = binding
+ end
+ m
+ eval('b = :ok2', $b)
+ eval('[a, b]', $b)
+}
+assert_equal %q{[nil, 1]}, %q{
+ $ans = []
+ def m
+ $b = binding
+ end
+ m
+ $ans << eval(%q{
+ $ans << eval(%q{
+ a
+ }, $b)
+ a = 1
+ }, $b)
+ $ans
+}
+assert_equal %q{C}, %q{
+ Const = :top
+ class C
+ Const = :C
+ def m
+ binding
+ end
+ end
+ eval('Const', C.new.m)
+}
+assert_equal %q{top}, %q{
+ Const = :top
+ a = 1
+ class C
+ Const = :C
+ def m
+ eval('Const', TOPLEVEL_BINDING)
+ end
+ end
+ C.new.m
+}
+assert_equal %q{:ok
+ok}, %q{
+ class C
+ $b = binding
+ end
+ eval %q{
+ def m
+ :ok
+ end
+ }, $b
+ p C.new.m
+}
+assert_equal %q{ok}, %q{
+ b = proc{
+ a = :ok
+ binding
+ }.call
+ a = :ng
+ eval("a", b)
+}
+assert_equal %q{C}, %q{
+ class C
+ def foo
+ binding
+ end
+ end
+ C.new.foo.eval("self.class.to_s")
+}
+assert_equal %q{1}, %q{
+ eval('1')
+}
+assert_equal %q{1}, %q{
+ eval('a=1; a')
+}
+assert_equal %q{1}, %q{
+ a = 1
+ eval('a')
+}
+assert_equal %q{ok}, %q{
+ __send__ :eval, %{
+ :ok
+ }
+}
+assert_equal %q{ok}, %q{
+ 1.__send__ :instance_eval, %{
+ :ok
+ }
+}
+assert_equal %q{1}, %q{
+ 1.instance_eval{
+ self
+ }
+}
+assert_equal %q{foo}, %q{
+ 'foo'.instance_eval{
+ self
+ }
+}
+assert_equal %q{1}, %q{
+ class Fixnum
+ Const = 1
+ end
+ 1.instance_eval %{
+ Const
+ }
+}
+assert_equal %q{top}, %q{
+ Const = :top
+ class C
+ Const = :C
+ end
+ C.module_eval{
+ Const
+ }
+}
+assert_equal %q{C}, %q{
+ Const = :top
+ class C
+ Const = :C
+ end
+ C.class_eval %{
+ def m
+ Const
+ end
+ }
+ C.new.m
+}
+assert_equal %q{top}, %q{
+ Const = :top
+ class C
+ Const = :C
+ end
+ C.class_eval{
+ def m
+ Const
+ end
+ }
+ C.new.m
+}
+assert_equal %q{[:top, :C, :top, :C]}, %q{
+ Const = :top
+ class C
+ Const = :C
+ end
+ $nest = false
+ $ans = []
+ def m
+ $ans << Const
+ C.module_eval %{
+ $ans << Const
+ Boo = false unless defined? Boo
+ unless $nest
+ $nest = true
+ m
+ end
+ }
+ end
+ m
+ $ans
+}
+assert_equal %q{[10, main]}, %q{
+ $nested = false
+ $ans = []
+ $pr = proc{
+ $ans << self
+ unless $nested
+ $nested = true
+ $pr.call
+ end
+ }
+ class C
+ def initialize &b
+ 10.instance_eval(&b)
+ end
+ end
+ C.new(&$pr)
+ $ans
+}
+
+%w[break next redo].each do |keyword|
+ assert_match %r"Can't escape from eval with #{keyword}\z", %{
+ begin
+ eval "0 rescue #{keyword}"
+ rescue SyntaxError => e
+ e.message
+ end
+ }, '[ruby-dev:31372]'
+end
+
+assert_normal_exit %q{
+ STDERR.reopen(STDOUT)
+ class Foo
+ def self.add_method
+ class_eval("def some-bad-name; puts 'hello' unless @some_variable.some_function(''); end")
+ end
+ end
+ Foo.add_method
+}, '[ruby-core:14556] reported by Frederick Cheung'
+
+assert_equal 'ok', %q{
+ class Module
+ def my_module_eval(&block)
+ module_eval(&block)
+ end
+ end
+ class String
+ Integer.my_module_eval do
+ def hoge; end
+ end
+ end
+ if Integer.instance_methods(false).map{|m|m.to_sym}.include?(:hoge) &&
+ !String.instance_methods(false).map{|m|m.to_sym}.include?(:hoge)
+ :ok
+ else
+ :ng
+ end
+}, "[ruby-dev:34236]"
+
+assert_equal 'ok', %q{
+ begin
+ eval("class nil::Foo; end")
+ :ng
+ rescue Exception
+ :ok
+ end
+}
+
+assert_equal 'ok', %q{
+ begin
+ 0.instance_eval { def m() :m end }
+ 1.m
+ :ng
+ rescue Exception
+ :ok
+ end
+}, '[ruby-dev:34579]'
+
+assert_equal 'ok', %q{
+ begin
+ 12.instance_eval { @@a }
+ rescue NameError
+ :ok
+ end
+}, '[ruby-core:16794]'
+
+assert_equal 'ok', %q{
+ begin
+ 12.instance_exec { @@a }
+ rescue NameError
+ :ok
+ end
+}, '[ruby-core:16794]'
+
+assert_equal 'ok', %q{
+ nil.instance_eval {
+ def defd_using_instance_eval() :ok end
+ }
+ nil.defd_using_instance_eval
+}, '[ruby-core:28324]'
+
+assert_equal 'ok', %q{
+ nil.instance_exec {
+ def defd_using_instance_exec() :ok end
+ }
+ nil.defd_using_instance_exec
+}, '[ruby-core:28324]'
+
+assert_normal_exit %q{
+ eval("", method(:proc).call {}.binding)
+}
+
+assert_equal "", %q{
+ b = binding
+ 10.times{
+ eval('', b)
+ }
+ begin
+ eval('1.times{raise}', b)
+ rescue => e
+ e.message
+ end
+}, '[ruby-dev:35392]'
+
+assert_equal "[:x]", %q{
+ def kaboom!
+ yield.eval("local_variables")
+ end
+
+ for x in enum_for(:kaboom!)
+ binding
+ end
+}, '[ruby-core:25125]'
+
+assert_normal_exit %q{
+ hash = {}
+ ("aaaa".."matz").each_with_index do |s, i|
+ hash[s] = i
+ end
+ begin
+ eval "class C; @@h = #{hash.inspect}; end"
+ end
+}, '[ruby-core:25714]'
+
+assert_normal_exit %q{
+ begin
+ eval("# encoding:utf-16le\nfoo")
+ rescue Exception => e
+ p e
+ RubyVM::InstructionSequence.compile("p:hello")
+ end
+}, 'check escaping the internal value th->base_block'
+
diff --git a/bootstraptest/test_exception.rb b/bootstraptest/test_exception.rb
new file mode 100644
index 0000000000..35c8d25e37
--- /dev/null
+++ b/bootstraptest/test_exception.rb
@@ -0,0 +1,432 @@
+assert_equal %q{2}, %q{
+ begin
+ 1+1
+ ensure
+ 2+2
+ end
+}
+assert_equal %q{4}, %q{
+ begin
+ 1+1
+ begin
+ 2+2
+ ensure
+ 3+3
+ end
+ ensure
+ 4+4
+ end
+}
+assert_equal %q{4}, %q{
+ begin
+ 1+1
+ begin
+ 2+2
+ ensure
+ 3+3
+ end
+ ensure
+ 4+4
+ begin
+ 5+5
+ ensure
+ 6+6
+ end
+ end
+}
+assert_equal %q{NilClass}, %q{
+ a = nil
+ 1.times{|e|
+ begin
+ rescue => err
+ end
+ a = err.class
+ }
+ a
+}
+assert_equal %q{RuntimeError}, %q{
+ a = nil
+ 1.times{|e|
+ begin
+ raise
+ rescue => err
+ end
+ a = err.class
+ }
+ a
+}
+assert_equal %q{}, %q{
+ $!
+}
+assert_equal %q{FOO}, %q{
+ begin
+ raise "FOO"
+ rescue
+ $!
+ end
+}
+assert_equal %q{FOO}, %q{
+ def m
+ $!
+ end
+ begin
+ raise "FOO"
+ rescue
+ m()
+ end
+}
+assert_equal %q{[#<RuntimeError: BAR>, #<RuntimeError: FOO>]}, %q{
+ $ans = []
+ def m
+ $!
+ end
+ begin
+ raise "FOO"
+ rescue
+ begin
+ raise "BAR"
+ rescue
+ $ans << m()
+ end
+ $ans << m()
+ end
+ $ans
+}
+assert_equal %q{[#<RuntimeError: FOO>, #<RuntimeError: FOO>]}, %q{
+ $ans = []
+ def m
+ $!
+ end
+
+ begin
+ begin
+ raise "FOO"
+ ensure
+ $ans << m()
+ end
+ rescue
+ $ans << m()
+ end
+}
+assert_equal %q{[nil]}, %q{
+ $ans = []
+ def m
+ $!
+ end
+ def m2
+ 1.times{
+ begin
+ return
+ ensure
+ $ans << m
+ end
+ }
+ end
+ m2
+ $ans
+}
+assert_equal %q{ok}, %q{
+ begin
+ raise
+ rescue
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ begin
+ raise
+ rescue
+ :ok
+ ensure
+ :ng
+ end
+}
+assert_equal %q{RuntimeError}, %q{
+ begin
+ raise
+ rescue => e
+ e.class
+ end
+}
+assert_equal %q{ng}, %q{
+ begin
+ raise
+ rescue StandardError
+ :ng
+ rescue Exception
+ :ok
+ end
+}
+assert_equal %q{c}, %q{
+ begin
+ begin
+ raise "a"
+ rescue
+ raise "b"
+ ensure
+ raise "c"
+ end
+ rescue => e
+ e.message
+ end
+}
+assert_equal %q{33}, %q{
+ def m a, b
+ a + b
+ end
+ m(1, begin
+ raise
+ rescue
+ 2
+ end) +
+ m(10, begin
+ raise
+ rescue
+ 20
+ ensure
+ 30
+ end)
+}
+assert_equal %q{3}, %q{
+ def m a, b
+ a + b
+ end
+ m(begin
+ raise
+ rescue
+ 1
+ end,
+ begin
+ raise
+ rescue
+ 2
+ end)
+}
+assert_equal %q{ok3}, %q{
+ class E1 < Exception
+ end
+
+ def m
+ yield
+ end
+
+ begin
+ begin
+ begin
+ m{
+ raise
+ }
+ rescue E1
+ :ok2
+ ensure
+ end
+ rescue
+ :ok3
+ ensure
+ end
+ rescue E1
+ :ok
+ ensure
+ end
+}
+assert_equal %q{7}, %q{
+ $i = 0
+ def m
+ iter{
+ begin
+ $i += 1
+ begin
+ $i += 2
+ break
+ ensure
+
+ end
+ ensure
+ $i += 4
+ end
+ $i = 0
+ }
+ end
+
+ def iter
+ yield
+ end
+ m
+ $i
+}
+assert_equal %q{10}, %q{
+ $i = 0
+ def m
+ begin
+ $i += 1
+ begin
+ $i += 2
+ return
+ ensure
+ $i += 3
+ end
+ ensure
+ $i += 4
+ end
+ p :end
+ end
+ m
+ $i
+}
+assert_equal %q{1}, %q{
+ begin
+ 1
+ rescue
+ 2
+ end
+}
+assert_equal %q{4}, %q{
+ begin
+ 1
+ begin
+ 2
+ rescue
+ 3
+ end
+ 4
+ rescue
+ 5
+ end
+}
+assert_equal %q{3}, %q{
+ begin
+ 1
+ rescue
+ 2
+ else
+ 3
+ end
+}
+assert_equal %q{2}, %q{
+ begin
+ 1+1
+ rescue
+ 2+2
+ ensure
+ 3+3
+ end
+ }
+assert_equal %q{2}, %q{
+ begin
+ 1+1
+ rescue
+ 2+2
+ ensure
+ 3+3
+ end
+ }
+assert_equal %q{6}, %q{
+ begin
+ 1+1
+ rescue
+ 2+2
+ else
+ 3+3
+ ensure
+ 4+4
+ end
+ }
+assert_equal %q{12}, %q{
+ begin
+ 1+1
+ begin
+ 2+2
+ rescue
+ 3+3
+ else
+ 4+4
+ end
+ rescue
+ 5+5
+ else
+ 6+6
+ ensure
+ 7+7
+ end
+ }
+assert_equal %q{ok}, %q{ #
+ proc{
+ begin
+ raise
+ break
+ rescue
+ :ok
+ end
+ }.call
+}
+assert_equal %q{}, %q{
+ proc do
+ begin
+ raise StandardError
+ redo
+ rescue StandardError
+ end
+ end.call
+}
+
+##
+assert_match /undefined method `foo\'/, %q{#`
+ STDERR.reopen(STDOUT)
+ class C
+ def inspect
+ bar {}
+ end
+
+ def bar
+ raise
+ ensure
+ end
+ end
+ C.new.foo
+}, "[ruby-dev:31407]"
+
+assert_equal 'nil', %q{
+ doit = false
+ exc = nil
+ t = Thread.new {
+ begin
+ doit = true
+ sleep 10
+ ensure
+ exc = $!
+ end
+ }
+ Thread.pass until doit
+ t.kill
+ t.join
+ exc.inspect
+}, '[ruby-dev:32608]'
+
+assert_equal 'exception class/object expected', %q{
+ class ZeroDivisionError
+ def self.new(message)
+ 42
+ end
+ end
+ begin
+ 1/0
+ rescue Exception => e
+ e.message
+ end
+}, '[ruby-core:24767]'
+
+assert_equal 'ok', %q{
+ class C
+ def ===(o)
+ true
+ end
+ end
+ begin
+ begin
+ raise
+ rescue C.new
+ end
+ rescue TypeError
+ :ok
+ end
+}
diff --git a/bootstraptest/test_finalizer.rb b/bootstraptest/test_finalizer.rb
new file mode 100644
index 0000000000..22a16b1220
--- /dev/null
+++ b/bootstraptest/test_finalizer.rb
@@ -0,0 +1,8 @@
+assert_normal_exit %q{
+a1,a2,b1,b2=Array.new(4){""}
+ObjectSpace.define_finalizer(b2,proc{})
+ObjectSpace.define_finalizer(b1,proc{b1.inspect})
+
+ObjectSpace.define_finalizer(a2,proc{a1.inspect})
+ObjectSpace.define_finalizer(a1,proc{})
+}, '[ruby-dev:35778]'
diff --git a/bootstraptest/test_flip.rb b/bootstraptest/test_flip.rb
new file mode 100644
index 0000000000..ff194868b2
--- /dev/null
+++ b/bootstraptest/test_flip.rb
@@ -0,0 +1 @@
+assert_equal %q{E}, %q{$_ = "E"; eval("nil if true..~/^E/",nil,"-e"); $_}
diff --git a/bootstraptest/test_flow.rb b/bootstraptest/test_flow.rb
new file mode 100644
index 0000000000..0390062a24
--- /dev/null
+++ b/bootstraptest/test_flow.rb
@@ -0,0 +1,591 @@
+assert_equal %q{[1, 2, 4, 5, 6, 7, 8]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each{; $a << 2
+ break; $a << 3
+ }; $a << 4
+ begin; $a << 5
+ ensure; $a << 6
+ end; $a << 7
+; $a << 8
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 6, 7, 8]}, %q{$a = []; begin; ; $a << 1
+ begin; $a << 2
+ [1,2].each do; $a << 3
+ break; $a << 4
+ end; $a << 5
+ ensure; $a << 6
+ end; $a << 7
+; $a << 8
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{ok}, %q{
+ ["a"].inject("ng"){|x,y|
+ break :ok
+ }
+}
+assert_equal %q{ok}, %q{
+ unless ''.respond_to? :lines
+ class String
+ def lines
+ self
+ end
+ end
+ end
+
+ ('a').lines.map{|e|
+ break :ok
+ }
+}
+assert_equal %q{[1, 2, 4, 5]}, %q{$a = []; begin; ; $a << 1
+ ["a"].inject("ng"){|x,y|; $a << 2
+ break :ok; $a << 3
+ }; $a << 4
+; $a << 5
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 4, 5]}, %q{$a = []; begin; ; $a << 1
+ ('a'..'b').map{|e|; $a << 2
+ break :ok; $a << 3
+ }; $a << 4
+; $a << 5
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 7, 8]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ break; $a << 4
+ ensure; $a << 5
+ end; $a << 6
+ end; $a << 7
+; $a << 8
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 6, 9, 10]}, %q{$a = []; begin; ; $a << 1
+ i=0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ begin; $a << 5
+ ensure; $a << 6
+ break; $a << 7
+ end; $a << 8
+ end; $a << 9
+; $a << 10
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 7, 10, 11]}, %q{$a = []; begin; ; $a << 1
+ i=0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ begin; $a << 5
+ raise; $a << 6
+ ensure; $a << 7
+ break; $a << 8
+ end; $a << 9
+ end; $a << 10
+; $a << 11
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 7, 10, 11]}, %q{$a = []; begin; ; $a << 1
+ i=0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ begin; $a << 5
+ raise; $a << 6
+ rescue; $a << 7
+ break; $a << 8
+ end; $a << 9
+ end; $a << 10
+; $a << 11
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ raise StandardError; $a << 4
+ ensure; $a << 5
+ break; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ raise StandardError; $a << 4
+ rescue; $a << 5
+ break; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 6, 8, 10, 11]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ begin; $a << 4
+ break; $a << 5
+ ensure; $a << 6
+ end; $a << 7
+ ensure; $a << 8
+ end; $a << 9
+ end; $a << 10
+; $a << 11
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 14, 15]}, %q{$a = []; begin; ; $a << 1
+ i = 0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ j = 0; $a << 5
+ while j<3; $a << 6
+ j+=1; $a << 7
+ begin; $a << 8
+ raise; $a << 9
+ rescue; $a << 10
+ break; $a << 11
+ end; $a << 12
+ end; $a << 13
+ end; $a << 14
+; $a << 15
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 16, 17]}, %q{$a = []; begin; ; $a << 1
+ i = 0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ j = 0; $a << 5
+ while j<3; $a << 6
+ j+=1; $a << 7
+ 1.times{; $a << 8
+ begin; $a << 9
+ raise; $a << 10
+ rescue; $a << 11
+ break; $a << 12
+ end; $a << 13
+ }; $a << 14
+ end; $a << 15
+ end; $a << 16
+; $a << 17
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 14, 15]}, %q{$a = []; begin; ; $a << 1
+ i = 0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ j = 0; $a << 5
+ while j<3; $a << 6
+ j+=1; $a << 7
+ begin; $a << 8
+ raise; $a << 9
+ ensure; $a << 10
+ break; $a << 11
+ end; $a << 12
+ end; $a << 13
+ end; $a << 14
+; $a << 15
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 16, 17]}, %q{$a = []; begin; ; $a << 1
+ i = 0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ j = 0; $a << 5
+ while j<3; $a << 6
+ j+=1; $a << 7
+ 1.times{; $a << 8
+ begin; $a << 9
+ raise; $a << 10
+ ensure; $a << 11
+ break; $a << 12
+ end; $a << 13
+ }; $a << 14
+ end; $a << 15
+ end; $a << 16
+; $a << 17
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ while true; $a << 2
+ begin; $a << 3
+ break; $a << 4
+ ensure; $a << 5
+ break; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 99]}, %q{
+$a = [];
+begin; ; $a << 1
+ while true; $a << 2
+ begin; $a << 3
+ break; $a << 4
+ ensure; $a << 5
+ raise; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 6, 8, 9, 10, 11]}, %q{$a = []; begin; ; $a << 1
+ begin; $a << 2
+ [1,2].each do; $a << 3
+ begin; $a << 4
+ break; $a << 5
+ ensure; $a << 6
+ end; $a << 7
+ end; $a << 8
+ ensure; $a << 9
+ end; $a << 10
+; $a << 11
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 4, 99]}, %q{$a = []; begin; ; $a << 1
+ begin; $a << 2
+ raise StandardError; $a << 3
+ ensure; $a << 4
+ end; $a << 5
+; $a << 6
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4]}, %q{$a = []; begin; ; $a << 1
+ begin; $a << 2
+ ensure; $a << 3
+ end ; $a << 4
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 5, 99]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ break; $a << 4
+ ensure; $a << 5
+ raise StandardError; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{3}, %q{
+ def m a, b
+ a + b
+ end
+ m(1,
+ while true
+ break 2
+ end
+ )
+}
+assert_equal %q{4}, %q{
+ def m a, b
+ a + b
+ end
+ m(1,
+ (i=0; while i<2
+ i+=1
+ class C
+ next 2
+ end
+ end; 3)
+ )
+}
+assert_equal %q{34}, %q{
+ def m a, b
+ a+b
+ end
+ m(1, 1.times{break 3}) +
+ m(10, (1.times{next 3}; 20))
+}
+assert_equal %q{[1, 2, 3, 6, 7]}, %q{$a = []; begin; ; $a << 1
+ 3.times{; $a << 2
+ class C; $a << 3
+ break; $a << 4
+ end; $a << 5
+ }; $a << 6
+; $a << 7
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ 3.times{; $a << 2
+ class A; $a << 3
+ class B; $a << 4
+ break; $a << 5
+ end; $a << 6
+ end; $a << 7
+ }; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 2, 3, 2, 3, 6, 7]}, %q{$a = []; begin; ; $a << 1
+ 3.times{; $a << 2
+ class C; $a << 3
+ next; $a << 4
+ end; $a << 5
+ }; $a << 6
+; $a << 7
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 2, 3, 4, 2, 3, 4, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ 3.times{; $a << 2
+ class C; $a << 3
+ class D; $a << 4
+ next; $a << 5
+ end; $a << 6
+ end; $a << 7
+ }; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 6, 7]}, %q{$a = []; begin; ; $a << 1
+ while true; $a << 2
+ class C; $a << 3
+ break; $a << 4
+ end; $a << 5
+ end; $a << 6
+; $a << 7
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ while true; $a << 2
+ class C; $a << 3
+ class D; $a << 4
+ break; $a << 5
+ end; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 3, 4, 5, 3, 4, 5, 3, 4, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ i=0; $a << 2
+ while i<3; $a << 3
+ i+=1; $a << 4
+ class C; $a << 5
+ next 10; $a << 6
+ end; $a << 7
+ end; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{1}, %q{
+ 1.times{
+ while true
+ class C
+ begin
+ break
+ ensure
+ break
+ end
+ end
+ end
+ }
+}
+assert_equal %q{[1, 2, 3, 5, 2, 3, 5, 7, 8]}, %q{$a = []; begin; ; $a << 1
+ [1,2].each do; $a << 2
+ begin; $a << 3
+ next; $a << 4
+ ensure; $a << 5
+ end; $a << 6
+ end; $a << 7
+; $a << 8
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 2, 6, 3, 5, 7, 8]}, %q{$a = []; begin; ; $a << 1
+ o = "test"; $a << 2
+ def o.test(a); $a << 3
+ return a; $a << 4
+ ensure; $a << 5
+ end; $a << 6
+ o.test(123); $a << 7
+; $a << 8
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 4, 7, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
+ def m1 *args; $a << 2
+ ; $a << 3
+ end; $a << 4
+ def m2; $a << 5
+ m1(:a, :b, (return 1; :c)); $a << 6
+ end; $a << 7
+ m2; $a << 8
+; $a << 9
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 8, 2, 3, 4, 5, 9, 10]}, %q{$a = []; begin; ; $a << 1
+ def m(); $a << 2
+ begin; $a << 3
+ 2; $a << 4
+ ensure; $a << 5
+ return 3; $a << 6
+ end; $a << 7
+ end; $a << 8
+ m; $a << 9
+; $a << 10
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 3, 11, 4, 5, 6, 7, 12, 13]}, %q{$a = []; begin; ; $a << 1
+ def m2; $a << 2
+ end; $a << 3
+ def m(); $a << 4
+ m2(begin; $a << 5
+ 2; $a << 6
+ ensure; $a << 7
+ return 3; $a << 8
+ end); $a << 9
+ 4; $a << 10
+ end; $a << 11
+ m(); $a << 12
+; $a << 13
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[1, 16, 2, 3, 4, 5, 6, 7, 10, 11, 17, 18]}, %q{$a = []; begin; ; $a << 1
+ def m; $a << 2
+ 1; $a << 3
+ 1.times{; $a << 4
+ 2; $a << 5
+ begin; $a << 6
+ 3; $a << 7
+ return; $a << 8
+ 4; $a << 9
+ ensure; $a << 10
+ 5; $a << 11
+ end; $a << 12
+ 6; $a << 13
+ }; $a << 14
+ 7; $a << 15
+ end; $a << 16
+ m(); $a << 17
+; $a << 18
+; rescue Exception; $a << 99; end; $a}
+assert_equal %q{[:ok, :ok2, :last]}, %q{
+ a = []
+ i = 0
+ begin
+ while i < 1
+ i+=1
+ begin
+ begin
+ next
+ ensure
+ a << :ok
+ end
+ ensure
+ a << :ok2
+ end
+ end
+ ensure
+ a << :last
+ end
+ a
+}
+assert_equal %q{[:ok, :ok2, :last]}, %q{
+ a = []
+ i = 0
+ begin
+ while i < 1
+ i+=1
+ begin
+ begin
+ break
+ ensure
+ a << :ok
+ end
+ ensure
+ a << :ok2
+ end
+ end
+ ensure
+ a << :last
+ end
+ a
+}
+assert_equal %q{[:ok, :ok2, :last]}, %q{
+ a = []
+ i = 0
+ begin
+ while i < 1
+ if i>0
+ break
+ end
+ i+=1
+ begin
+ begin
+ redo
+ ensure
+ a << :ok
+ end
+ ensure
+ a << :ok2
+ end
+ end
+ ensure
+ a << :last
+ end
+ a
+}
+assert_equal %Q{ENSURE\n}, %q{
+ def test
+ while true
+ return
+ end
+ ensure
+ puts("ENSURE")
+ end
+ test
+}, '[ruby-dev:37967]'
+
+[['[ruby-core:28129]', %q{
+ class Bug2728
+ include Enumerable
+ define_method(:dynamic_method) do
+ "dynamically defined method"
+ end
+ def each
+ begin
+ yield :foo
+ ensure
+ dynamic_method
+ end
+ end
+ end
+ e = Bug2728.new
+}],
+ ['[ruby-core:28132]', %q{
+ class Bug2729
+ include Enumerable
+ def each
+ begin
+ yield :foo
+ ensure
+ proc {}.call
+ end
+ end
+ end
+ e = Bug2729.new
+}],
+ ['[ruby-core:39125]', %q{
+ class Bug5234
+ include Enumerable
+ def each
+ begin
+ yield :foo
+ ensure
+ proc
+ end
+ end
+ end
+ e = Bug5234.new
+}],
+ ['[ruby-dev:45656]', %q{
+ class Bug6460
+ include Enumerable
+ def each
+ begin
+ yield :foo
+ ensure
+ 1.times { Proc.new }
+ end
+ end
+ end
+ e = Bug6460.new
+}]].each do |bug, src|
+ assert_equal "foo", src + %q{e.detect {true}}, bug
+ assert_equal "true", src + %q{e.any? {true}}, bug
+ assert_equal "false", src + %q{e.all? {false}}, bug
+ assert_equal "true", src + %q{e.include?(:foo)}, bug
+end
+
+assert_equal "foo", %q{
+ class Bug6460
+ def m1
+ m2 {|e|
+ return e
+ }
+ end
+
+ def m2
+ begin
+ yield :foo
+ ensure
+ begin
+ begin
+ yield :foo
+ ensure
+ Proc.new
+ raise ''
+ end
+ rescue
+ end
+ end
+ end
+ end
+ Bug6460.new.m1
+}, '[ruby-dev:46372]'
diff --git a/bootstraptest/test_fork.rb b/bootstraptest/test_fork.rb
new file mode 100644
index 0000000000..384294727f
--- /dev/null
+++ b/bootstraptest/test_fork.rb
@@ -0,0 +1,69 @@
+assert_equal '0', %q{
+ begin
+ GC.stress = true
+ pid = fork {}
+ Process.wait pid
+ $?.to_i
+ rescue NotImplementedError
+ 0
+ end
+}, '[ruby-dev:32404]'
+
+assert_finish 10, %q{
+ begin
+ children = (1..10).map{
+ Thread.start{fork{}}.value
+ }
+ while !children.empty? and pid = Process.wait
+ children.delete(pid)
+ end
+ rescue NotImplementedError
+ end
+}, '[ruby-core:22158]'
+
+assert_normal_exit(<<'End', '[ruby-dev:37934]')
+ Thread.new { sleep 1; Thread.kill Thread.main }
+ Process.setrlimit(:NPROC, 1)
+ fork {}
+End
+
+assert_equal 'ok', %q{
+ begin
+ if pid1 = fork
+ sleep 1
+ Process.kill("USR1", pid1)
+ _, s = Process.wait2(pid1)
+ s.success? ? :ok : :ng
+ else
+ if pid2 = fork
+ trap("USR1") { Time.now.to_s }
+ Process.wait2(pid2)
+ else
+ sleep 2
+ end
+ exit 0
+ end
+ rescue NotImplementedError
+ :ok
+ end
+}, '[ruby-core:28924]'
+
+assert_equal '[1, 2]', %q{
+ a = []
+ trap(:INT) { a.push(1) }
+ trap(:TERM) { a.push(2) }
+ pid = $$
+ begin
+ fork do
+ sleep 0.5
+ Process.kill(:INT, pid)
+ Process.kill(:TERM, pid)
+ end
+
+ sleep 1
+ a.sort
+ rescue NotImplementedError
+ [1, 2]
+ end
+}, '[ruby-dev:44005] [Ruby 1.9 - Bug #4950]'
+
diff --git a/bootstraptest/test_gc.rb b/bootstraptest/test_gc.rb
new file mode 100644
index 0000000000..eb68c9845e
--- /dev/null
+++ b/bootstraptest/test_gc.rb
@@ -0,0 +1,34 @@
+assert_normal_exit %q{
+a = []
+ms = "a".."k"
+("A".."Z").each do |mod|
+ mod = eval("module #{mod}; self; end")
+ ms.each do |meth|
+ iseq = RubyVM::InstructionSequence.compile("module #{mod}; def #{meth}; end; end")
+ GC.stress = true
+ iseq.eval
+ GC.stress = false
+ end
+ o = Object.new.extend(mod)
+ ms.each do |meth|
+ o.send(meth)
+ end
+end
+}, '[ruby-dev:39453]'
+
+assert_normal_exit %q{
+a = []
+ms = "a".."k"
+("A".."Z").each do |mod|
+ mod = eval("module #{mod}; self; end")
+ ms.each do |meth|
+ GC.stress = true
+ mod.module_eval {define_method(meth) {}}
+ GC.stress = false
+ end
+ o = Object.new.extend(mod)
+ ms.each do |meth|
+ o.send(meth)
+ end
+end
+}, '[ruby-dev:39453]'
diff --git a/bootstraptest/test_io.rb b/bootstraptest/test_io.rb
new file mode 100644
index 0000000000..f7360f34b3
--- /dev/null
+++ b/bootstraptest/test_io.rb
@@ -0,0 +1,112 @@
+assert_finish 5, %q{
+ r, w = IO.pipe
+ t1 = Thread.new { r.sysread(1) }
+ t2 = Thread.new { r.sysread(1) }
+ sleep 0.1
+ w.write "a"
+ sleep 0.1
+ w.write "a"
+}, '[ruby-dev:31866]'
+
+assert_finish 10, %q{
+ begin
+ require "io/nonblock"
+ require "timeout"
+ timeout(3) do
+ r, w = IO.pipe
+ w.nonblock?
+ w.nonblock = true
+ w.write_nonblock("a" * 100000)
+ w.nonblock = false
+ t1 = Thread.new { w.write("b" * 4096) }
+ t2 = Thread.new { w.write("c" * 4096) }
+ sleep 0.5
+ r.sysread(4096).length
+ sleep 0.5
+ r.sysread(4096).length
+ t1.join
+ t2.join
+ end
+ rescue LoadError, TimeoutError, NotImplementedError
+ end
+}, '[ruby-dev:32566]'
+
+assert_finish 1, %q{
+ r, w = IO.pipe
+ Thread.new {
+ w << "ab"
+ sleep 0.1
+ w << "ab"
+ }
+ r.gets("abab")
+}
+
+assert_equal 'ok', %q{
+ require 'tmpdir'
+ begin
+ tmpname = "#{Dir.tmpdir}/ruby-btest-#{$$}-#{rand(0x100000000).to_s(36)}"
+ rw = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL)
+ rescue Errno::EEXIST
+ retry
+ end
+ save = STDIN.dup
+ STDIN.reopen(rw)
+ STDIN.reopen(save)
+ rw.close
+ File.unlink(tmpname) unless RUBY_PLATFORM['nacl']
+ :ok
+}
+
+assert_equal 'ok', %q{
+ require 'tmpdir'
+ begin
+ tmpname = "#{Dir.tmpdir}/ruby-btest-#{$$}-#{rand(0x100000000).to_s(36)}"
+ rw = File.open(tmpname, File::RDWR|File::CREAT|File::EXCL)
+ rescue Errno::EEXIST
+ retry
+ end
+ save = STDIN.dup
+ STDIN.reopen(rw)
+ STDIN.print "a"
+ STDIN.reopen(save)
+ rw.close
+ File.unlink(tmpname) unless RUBY_PLATFORM['nacl']
+ :ok
+}
+
+assert_equal 'ok', %q{
+ dup = STDIN.dup
+ dupfd = dup.fileno
+ dupfd == STDIN.dup.fileno ? :ng : :ok
+}, '[ruby-dev:46834]'
+
+assert_normal_exit %q{
+ ARGF.set_encoding "foo"
+}
+
+10.times do
+ assert_normal_exit %q{
+ at_exit { p :foo }
+
+ megacontent = "abc" * 12345678
+ #File.open("megasrc", "w") {|f| f << megacontent }
+
+ Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
+
+ r1, w1 = IO.pipe
+ r2, w2 = IO.pipe
+ t1 = Thread.new { w1 << megacontent; w1.close }
+ t2 = Thread.new { r2.read; r2.close }
+ IO.copy_stream(r1, w2) rescue nil
+ w2.close
+ r1.close
+ t1.join
+ t2.join
+ }, 'megacontent-copy_stream', ["INT"], :timeout => 10 or break
+end
+
+assert_normal_exit %q{
+ r, w = IO.pipe
+ STDOUT.reopen(w)
+ STDOUT.reopen(__FILE__, "r")
+}, '[ruby-dev:38131]'
diff --git a/bootstraptest/test_jump.rb b/bootstraptest/test_jump.rb
new file mode 100644
index 0000000000..595aaa7c4b
--- /dev/null
+++ b/bootstraptest/test_jump.rb
@@ -0,0 +1,308 @@
+assert_equal %q{ok}, %q{
+ def m
+ :ng1
+ mm{
+ yield
+ }
+ :ng2
+ end
+
+ def mm
+ :ng3
+ yield
+ :ng4
+ end
+
+ m{
+ break :ok
+ }
+}
+assert_equal %q{ok}, %q{
+ 3.times{
+ break :ok
+ }
+}
+assert_equal %q{}, %q{
+ catch(:foo){
+ throw :foo
+ }
+}
+assert_equal %q{false}, %q{
+ catch(:foo){
+ throw :foo, false
+ }
+}
+assert_equal %q{}, %q{
+ catch(:foo){
+ throw :foo, nil
+ }
+}
+assert_equal %q{ok}, %q{
+ catch(:foo){
+ throw :foo, :ok
+ }
+}
+assert_equal %q{}, %q{
+ catch(:foo){
+ 1.times{
+ throw :foo
+ }
+ }
+}
+assert_equal %q{ok}, %q{
+ catch(:foo){
+ 1.times{
+ throw :foo, :ok
+ }
+ }
+}
+assert_equal %q{ok}, %q{
+ catch(:foo){
+ catch(:bar){
+ throw :foo, :ok
+ }
+ :ng
+ }
+}
+assert_equal %q{ok}, %q{
+ catch(:foo){
+ catch(:bar){
+ 1.times{
+ throw :foo, :ok
+ }
+ }
+ :ng
+ }
+}
+assert_equal %q{2}, %q{
+ module Enumerable
+ def all_?
+ self.each{|e|
+ unless yield(e)
+ return false
+ end
+ }
+ true
+ end
+ end
+
+ xxx = 0
+ [1,2].each{|bi|
+ [3,4].each{|bj|
+ [true, nil, true].all_?{|be| be}
+ break
+ }
+ xxx += 1
+ }
+ xxx
+}
+assert_equal %q{ok}, %q{
+ def m
+ yield
+ end
+
+ m{
+ begin
+ ensure
+ break :ok
+ end
+ }
+}
+assert_equal %q{ok}, %q{
+ def m
+ yield
+ :ok
+ end
+ i=0
+ m{
+ if i>10
+ i*i
+ else
+ i+=1
+ next
+ end
+ }
+}
+assert_equal %q{ok}, %q{
+ def m
+ yield
+ end
+
+ m{
+ next :ok
+ }
+}
+assert_equal %q{131}, %q{
+ def m
+ yield + 10
+ end
+ i=0
+ m{
+ if i>10
+ i*i
+ else
+ i+=1
+ redo
+ end
+ }
+}
+assert_equal %q{ok}, %q{
+begin
+ eval %q{
+ 1.times{
+ retry
+ }
+ }
+rescue SyntaxError
+ :ok
+end
+}
+assert_equal %q{3}, %q{
+ def m
+ return 3
+ end
+ m
+}
+assert_equal %q{ok}, %q{
+ def m
+ :ng1
+ mm{
+ return :ok
+ }
+ :ng2
+ end
+
+ def mm
+ :ng3
+ yield
+ :ng4
+ end
+ m
+}
+assert_equal %q{100}, %q{
+ $i = 0
+ def m
+ begin
+ iter{
+ return
+ }
+ ensure
+ $i = 100
+ end
+ end
+
+ def iter
+ yield
+ end
+ m
+ $i
+}
+assert_equal %q{ok}, %q{
+ def m
+ begin
+ raise
+ rescue
+ return :ok
+ end
+ :ng
+ end
+ m
+}
+assert_equal %q{1}, %q{
+ def m
+ begin
+ raise
+ rescue
+ return 1
+ end
+ end
+
+ m
+}
+assert_equal %q{1}, %q{
+ def m
+ begin
+ #
+ ensure
+ return 1
+ end
+ end
+
+ m
+}
+assert_equal 'ok', %q{
+ begin
+ catch {|t| throw t, :ok }
+ rescue ArgumentError
+ :ng
+ end
+}, '[ruby-dev:31609]'
+
+assert_equal "1", %q{
+ catch do |t|
+ begin
+ throw t, 1
+ 2
+ ensure
+ 3
+ end
+ end
+}, "[ruby-dev:31698]"
+
+assert_normal_exit %q{
+ f = 0
+ 1.times do
+ begin
+ f += 1
+ ensure
+ redo unless f > 2
+ end
+ end
+}
+
+assert_normal_exit %q{
+ -> do
+ 1.times do
+ begin
+ raise
+ rescue
+ return
+ end
+ end
+ end.call
+}
+
+assert_normal_exit %q{
+ while true
+ begin
+ raise
+ next
+ rescue
+ end
+ break
+ end
+}, '[ruby-core:28172]'
+
+assert_equal "true", %q{
+ class Object
+ def return_eigenclass
+ class << self
+ return self
+ end
+ end
+ end
+ s = "foo"
+ s.return_eigenclass == class << s; self; end
+}, '[ruby-core:21379]'
+
+assert_equal "true", %q{
+ class Object
+ def yield_eigenclass
+ class << self
+ yield self
+ end
+ end
+ end
+ s = "foo"
+ s.yield_eigenclass {|c| c == class << s; self; end }
+}, '[ruby-dev:40975]'
diff --git a/bootstraptest/test_literal.rb b/bootstraptest/test_literal.rb
new file mode 100644
index 0000000000..b95a2f2d0a
--- /dev/null
+++ b/bootstraptest/test_literal.rb
@@ -0,0 +1,231 @@
+# empty program
+assert_equal '', ''
+assert_equal '', ' '
+assert_equal '', "\n"
+
+# special const
+assert_equal 'true', 'true'
+assert_equal 'TrueClass', 'true.class'
+assert_equal 'false', 'false'
+assert_equal 'FalseClass', 'false.class'
+assert_equal '', 'nil'
+assert_equal 'nil', 'nil.inspect'
+assert_equal 'NilClass', 'nil.class'
+assert_equal 'sym', ':sym'
+assert_equal ':sym', ':sym.inspect'
+assert_equal 'Symbol', ':sym.class'
+assert_equal '1234', '1234'
+assert_equal 'Fixnum', '1234.class'
+assert_equal '1234', '1_2_3_4'
+assert_equal 'Fixnum', '1_2_3_4.class'
+assert_equal '18', '0x12'
+assert_equal 'Fixnum', '0x12.class'
+assert_equal '15', '0o17'
+assert_equal 'Fixnum', '0o17.class'
+assert_equal '5', '0b101'
+assert_equal 'Fixnum', '0b101.class'
+assert_equal '123456789012345678901234567890', '123456789012345678901234567890'
+assert_equal 'Bignum', '123456789012345678901234567890.class'
+assert_equal '2.0', '2.0'
+assert_equal 'Float', '1.3.class'
+
+# self
+assert_equal 'main', 'self'
+assert_equal 'Object', 'self.class'
+
+# string literal
+assert_equal 'a', '?a'
+assert_equal 'String', '?a.class'
+assert_equal 'A', '?A'
+assert_equal 'String', '?A.class'
+assert_equal "\n", '?\n'
+assert_equal 'String', '?\n.class'
+assert_equal ' ', '?\ '
+assert_equal 'String', '?\ .class'
+assert_equal 'string', "'string'"
+assert_equal 'string', '"string"'
+assert_equal 'string', '%(string)'
+assert_equal 'string', '%q(string)'
+assert_equal 'string', '%Q(string)'
+assert_equal 'string string', '"string string"'
+assert_equal ' ', '" "'
+assert_equal "\0", '"\0"'
+assert_equal "\1", '"\1"'
+assert_equal "3", '"\x33"'
+assert_equal "\n", '"\n"'
+
+# dynamic string literal
+assert_equal '2', '"#{1 + 1}"'
+assert_equal '16', '"#{2 ** 4}"'
+assert_equal 'string', 's = "string"; "#{s}"'
+
+# dynamic symbol literal
+assert_equal 'a3c', ':"a#{1+2}c"'
+assert_equal ':a3c', ':"a#{1+2}c".inspect'
+assert_equal 'Symbol', ':"a#{1+2}c".class'
+
+# xstring
+unless nacl?
+ assert_equal "foo\n", %q(`echo foo`)
+ assert_equal "foo\n", %q(s = "foo"; `echo #{s}`)
+end
+
+# regexp
+assert_equal '', '//.source'
+assert_equal 'Regexp', '//.class'
+assert_equal '0', '// =~ "a"'
+assert_equal '0', '// =~ ""'
+assert_equal 'a', '/a/.source'
+assert_equal 'Regexp', '/a/.class'
+assert_equal '0', '/a/ =~ "a"'
+assert_equal '0', '/test/ =~ "test"'
+assert_equal '', '/test/ =~ "tes"'
+assert_equal '0', 're = /test/; re =~ "test"'
+assert_equal '0', 'str = "test"; /test/ =~ str'
+assert_equal '0', 're = /test/; str = "test"; re =~ str'
+
+# dynacmi regexp
+assert_equal 'regexp', %q(/re#{'ge'}xp/.source)
+assert_equal 'Regexp', %q(/re#{'ge'}xp/.class)
+
+# array
+assert_equal 'Array', '[].class'
+assert_equal '0', '[].size'
+assert_equal '0', '[].length'
+assert_equal '[]', '[].inspect'
+assert_equal 'Array', '[0].class'
+assert_equal '1', '[3].size'
+assert_equal '[3]', '[3].inspect'
+assert_equal '3', 'a = [3]; a[0]'
+assert_equal 'Array', '[1,2].class'
+assert_equal '2', '[1,2].size'
+assert_equal '[1, 2]', '[1,2].inspect'
+assert_equal 'Array', '[1,2,3,4,5].class'
+assert_equal '5', '[1,2,3,4,5].size'
+assert_equal '[1, 2, 3, 4, 5]', '[1,2,3,4,5].inspect'
+assert_equal '1', 'a = [1,2]; a[0]'
+assert_equal '2', 'a = [1,2]; a[1]'
+assert_equal 'Array', 'a = [1 + 2, 3 + 4, 5 + 6]; a.class'
+assert_equal '[3, 7, 11]', 'a = [1 + 2, 3 + 4, 5 + 6]; a.inspect'
+assert_equal '7', 'a = [1 + 2, 3 + 4, 5 + 6]; a[1]'
+assert_equal '1', '([0][0] += 1)'
+assert_equal '1', '([2][0] -= 1)'
+assert_equal 'Array', 'a = [obj = Object.new]; a.class'
+assert_equal '1', 'a = [obj = Object.new]; a.size'
+assert_equal 'true', 'a = [obj = Object.new]; a[0] == obj'
+assert_equal '5', 'a = [1,2,3]; a[1] = 5; a[1]'
+assert_equal 'bar', '[*:foo];:bar'
+assert_equal '[1, 2]', 'def nil.to_a; [2]; end; [1, *nil]'
+assert_equal '[1, 2]', 'def nil.to_a; [1, 2]; end; [*nil]'
+assert_equal '[0, 1, {2=>3}]', '[0, *[1], 2=>3]', "[ruby-dev:31592]"
+
+
+# hash
+assert_equal 'Hash', '{}.class'
+assert_equal '{}', '{}.inspect'
+assert_equal 'Hash', '{1=>2}.class'
+assert_equal '{1=>2}', '{1=>2}.inspect'
+assert_equal '2', 'h = {1 => 2}; h[1]'
+assert_equal '0', 'h = {1 => 2}; h.delete(1); h.size'
+assert_equal '', 'h = {1 => 2}; h.delete(1); h[1]'
+assert_equal '2', 'h = {"string" => "literal", "goto" => "hell"}; h.size'
+assert_equal 'literal', 'h = {"string"=>"literal", "goto"=>"hell"}; h["string"]'
+assert_equal 'hell', 'h = {"string"=>"literal", "goto"=>"hell"}; h["goto"]'
+
+# range
+assert_equal 'Range', '(1..2).class'
+assert_equal '1..2', '(1..2).inspect'
+assert_equal '1', '(1..2).begin'
+assert_equal '2', '(1..2).end'
+assert_equal 'false', '(1..2).exclude_end?'
+assert_equal 'Range', 'r = 1..2; r.class'
+assert_equal '1..2', 'r = 1..2; r.inspect'
+assert_equal '1', 'r = 1..2; r.begin'
+assert_equal '2', 'r = 1..2; r.end'
+assert_equal 'false', 'r = 1..2; r.exclude_end?'
+assert_equal 'Range', '(1...3).class'
+assert_equal '1...3', '(1...3).inspect'
+assert_equal '1', '(1...3).begin'
+assert_equal '3', '(1...3).end'
+assert_equal 'true', '(1...3).exclude_end?'
+assert_equal 'Range', 'r = (1...3); r.class'
+assert_equal '1...3', 'r = (1...3); r.inspect'
+assert_equal '1', 'r = (1...3); r.begin'
+assert_equal '3', 'r = (1...3); r.end'
+assert_equal 'true', 'r = (1...3); r.exclude_end?'
+assert_equal 'Range', 'r = (1+2 .. 3+4); r.class'
+assert_equal '3..7', 'r = (1+2 .. 3+4); r.inspect'
+assert_equal '3', 'r = (1+2 .. 3+4); r.begin'
+assert_equal '7', 'r = (1+2 .. 3+4); r.end'
+assert_equal 'false', 'r = (1+2 .. 3+4); r.exclude_end?'
+assert_equal 'Range', 'r = (1+2 ... 3+4); r.class'
+assert_equal '3...7', 'r = (1+2 ... 3+4); r.inspect'
+assert_equal '3', 'r = (1+2 ... 3+4); r.begin'
+assert_equal '7', 'r = (1+2 ... 3+4); r.end'
+assert_equal 'true', 'r = (1+2 ... 3+4); r.exclude_end?'
+assert_equal 'Range', 'r = ("a".."c"); r.class'
+assert_equal '"a".."c"', 'r = ("a".."c"); r.inspect'
+assert_equal 'a', 'r = ("a".."c"); r.begin'
+assert_equal 'c', 'r = ("a".."c"); r.end'
+
+assert_equal 'String', '__FILE__.class'
+assert_equal 'Fixnum', '__LINE__.class'
+
+###
+
+assert_equal 'ok', %q{
+ # this cause "called on terminated object".
+ ObjectSpace.each_object(Module) {|m| m.name.inspect }
+ :ok
+}
+
+assert_normal_exit %q{
+ begin
+ r = 0**-1
+ r + r
+ rescue
+ end
+}, '[ruby-dev:34524]'
+
+assert_normal_exit %q{
+ begin
+ r = Marshal.load("\x04\bU:\rRational[\ai\x06i\x05")
+ r + r
+ rescue
+ end
+}, '[ruby-dev:34536]'
+
+assert_equal 'ok', %q{
+ "#{}""#{}ok"
+}, '[ruby-dev:38968]'
+
+assert_equal 'ok', %q{
+ "#{}o""#{}k""#{}"
+}, '[ruby-core:25284]'
+
+assert_equal 'ok', %q{ # long array literal
+ x = nil
+ eval "a = [#{(1..10_000).map{'x'}.join(", ")}]"
+ :ok
+}
+
+assert_equal 'ok', %q{ # long array literal (optimized)
+ eval "a = [#{(1..10_000).to_a.join(", ")}]"
+ :ok
+}
+
+assert_equal 'ok', %q{ # long hash literal
+ x = nil
+ eval "a = {#{(1..10_000).map{|n| "#{n} => x"}.join(', ')}}"
+ :ok
+}
+
+assert_equal 'ok', %q{ # long hash literal (optimized)
+ eval "a = {#{(1..10_000).map{|n| "#{n} => #{n}"}.join(', ')}}"
+ :ok
+}
+
+assert_equal 'ok', %q{
+ [print(:ok), exit] # void literal with side-effect
+ :dummy
+}
diff --git a/bootstraptest/test_literal_suffix.rb b/bootstraptest/test_literal_suffix.rb
new file mode 100644
index 0000000000..4316c9e040
--- /dev/null
+++ b/bootstraptest/test_literal_suffix.rb
@@ -0,0 +1,54 @@
+# numbers with suffix
+assert_equal '0/1', '0r'
+assert_equal 'Rational', '0r.class'
+assert_equal '1/1', '1r'
+assert_equal 'Rational', '1r.class'
+assert_equal '-1/1', '-1r'
+assert_equal 'Rational', '(-1r).class'
+assert_equal '1/1', '0x1r'
+assert_equal 'Rational', '0x1r.class'
+assert_equal '1/1', '0b1r'
+assert_equal 'Rational', '0b1r.class'
+assert_equal '1/1', '0d1r'
+assert_equal 'Rational', '0d1r.class'
+assert_equal '1/1', '0o1r'
+assert_equal 'Rational', '0o1r.class'
+assert_equal '1/1', '01r'
+assert_equal 'Rational', '01r.class'
+assert_equal '6/5', '1.2r'
+assert_equal 'Rational', '1.2r.class'
+assert_equal '-6/5', '-1.2r'
+assert_equal 'Rational', '(-1.2r).class'
+assert_equal '0+0i', '0i'
+assert_equal 'Complex', '0i.class'
+assert_equal '0+1i', '1i'
+assert_equal 'Complex', '1i.class'
+assert_equal '0+1i', '0x1i'
+assert_equal 'Complex', '0x1i.class'
+assert_equal '0+1i', '0b1i'
+assert_equal 'Complex', '0b1i.class'
+assert_equal '0+1i', '0d1i'
+assert_equal 'Complex', '0d1i.class'
+assert_equal '0+1i', '0o1i'
+assert_equal 'Complex', '0o1i.class'
+assert_equal '0+1i', '01i'
+assert_equal 'Complex', '01i.class'
+assert_equal '0+1.2i', '1.2i'
+assert_equal 'Complex', '1.2i.class'
+assert_equal '0+1/1i', '1ri'
+assert_equal 'Complex', '1ri.class'
+assert_equal '0+6/5i', '1.2ri'
+assert_equal 'Complex', '1.2ri.class'
+assert_equal '0+10.0i', '1e1i'
+assert_equal 'Complex', '1e1i.class'
+assert_equal '1', '1if true'
+assert_equal '1', '1rescue nil'
+assert_equal '10000000000000000001/10000000000000000000',
+ '1.0000000000000000001r'
+
+assert_equal 'syntax error, unexpected tIDENTIFIER, expecting end-of-input',
+ %q{begin eval('1ir', nil, '', 0); rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end}
+assert_equal 'syntax error, unexpected tIDENTIFIER, expecting end-of-input',
+ %q{begin eval('1.2ir', nil, '', 0); rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end}
+assert_equal 'syntax error, unexpected tIDENTIFIER, expecting end-of-input',
+ %q{begin eval('1e1r', nil, '', 0); rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end}
diff --git a/bootstraptest/test_load.rb b/bootstraptest/test_load.rb
new file mode 100644
index 0000000000..e63c93a8f4
--- /dev/null
+++ b/bootstraptest/test_load.rb
@@ -0,0 +1,27 @@
+assert_equal 'ok', %q{
+ open("require-lock-test.rb", "w") {|f|
+ f.puts "sleep 0.1"
+ f.puts "module M"
+ f.puts "end"
+ }
+ $:.unshift Dir.pwd
+ vs = (1..2).map {|i|
+ Thread.start {
+ require "require-lock-test"
+ M
+ }
+ }.map {|t| t.value }
+ vs[0] == M && vs[1] == M ? :ok : :ng
+}, '[ruby-dev:32048]'
+
+assert_equal 'ok', %q{
+ %w[a a/foo b].each {|d| Dir.mkdir(d)}
+ open("b/foo", "w") {|f| f.puts "$ok = :ok"}
+ $:.replace(%w[a b])
+ begin
+ load "foo"
+ $ok
+ rescue => e
+ e.message
+ end
+}, '[ruby-dev:38097]'
diff --git a/bootstraptest/test_marshal.rb b/bootstraptest/test_marshal.rb
new file mode 100644
index 0000000000..7e34176169
--- /dev/null
+++ b/bootstraptest/test_marshal.rb
@@ -0,0 +1,5 @@
+
+assert_normal_exit %q{
+ Marshal.load(Marshal.dump({"k"=>"v"}), lambda {|v| v})
+}
+
diff --git a/bootstraptest/test_massign.rb b/bootstraptest/test_massign.rb
new file mode 100644
index 0000000000..0f63dd424a
--- /dev/null
+++ b/bootstraptest/test_massign.rb
@@ -0,0 +1,183 @@
+assert_equal '[[1], 2, 3]', '*v1, (a, b) = [1,[2, 3]]; [v1, a, b]'
+assert_equal '[[1], 2, 3]', '*v1,(*), (a, b) = [1,:x,[2, 3]]; [v1, a, b]'
+
+assert_equal '[]', '*a = *nil; a'
+assert_equal '[nil]', '*a = nil; a'
+assert_equal '2', 'a, a = 1, 2; a', "[ruby-dev:31522]"
+assert_equal '[1, 2]', 'a, b = 1, 2'
+assert_equal '[1, 2]', %q{
+ ans = []
+ trace_var(:$a){|v| ans << v}
+ trace_var(:$b){|v| ans << v}
+ $a, $b = 1, 2
+ ans
+}
+
+assert_equal 'ok', %q{
+ r = :ok
+ :ng.tap {|(r)|}
+ r
+}, '[ruby-dev:31507]'
+
+=begin
+# generated by this script:
+
+3.times{|i|
+ 8.times{|e|
+ ary = (0...e).to_a
+ a,b,c,d,e,f = nil
+ vals = %w(a b c d e f)
+ vals[i] = '*' + vals[i]
+ program = "#{vals.join(", ")} = *ary"
+ eval(program)
+ ans = [a,b,c,d,e,f]
+ puts %Q{
+ assert_equal "#{ans.inspect}", %q{
+ ary = #{ary.inspect}
+ #{program}; [a, b, c, d, e, f]
+ }}
+ }
+}
+=end
+
+ assert_equal "[[], nil, nil, nil, nil, nil]", %q{
+ ary = []
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[], 0, nil, nil, nil, nil]", %q{
+ ary = [0]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[], 0, 1, nil, nil, nil]", %q{
+ ary = [0, 1]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[], 0, 1, 2, nil, nil]", %q{
+ ary = [0, 1, 2]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[], 0, 1, 2, 3, nil]", %q{
+ ary = [0, 1, 2, 3]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[], 0, 1, 2, 3, 4]", %q{
+ ary = [0, 1, 2, 3, 4]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[0], 1, 2, 3, 4, 5]", %q{
+ ary = [0, 1, 2, 3, 4, 5]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[[0, 1], 2, 3, 4, 5, 6]", %q{
+ ary = [0, 1, 2, 3, 4, 5, 6]
+ *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[nil, [], nil, nil, nil, nil]", %q{
+ ary = []
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [], nil, nil, nil, nil]", %q{
+ ary = [0]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [], 1, nil, nil, nil]", %q{
+ ary = [0, 1]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [], 1, 2, nil, nil]", %q{
+ ary = [0, 1, 2]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [], 1, 2, 3, nil]", %q{
+ ary = [0, 1, 2, 3]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [], 1, 2, 3, 4]", %q{
+ ary = [0, 1, 2, 3, 4]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [1], 2, 3, 4, 5]", %q{
+ ary = [0, 1, 2, 3, 4, 5]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, [1, 2], 3, 4, 5, 6]", %q{
+ ary = [0, 1, 2, 3, 4, 5, 6]
+ a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[nil, nil, [], nil, nil, nil]", %q{
+ ary = []
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, nil, [], nil, nil, nil]", %q{
+ ary = [0]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [], nil, nil, nil]", %q{
+ ary = [0, 1]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [], 2, nil, nil]", %q{
+ ary = [0, 1, 2]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [], 2, 3, nil]", %q{
+ ary = [0, 1, 2, 3]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [], 2, 3, 4]", %q{
+ ary = [0, 1, 2, 3, 4]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [2], 3, 4, 5]", %q{
+ ary = [0, 1, 2, 3, 4, 5]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+ assert_equal "[0, 1, [2, 3], 4, 5, 6]", %q{
+ ary = [0, 1, 2, 3, 4, 5, 6]
+ a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
+ }
+
+
+#
+assert_equal 'ok', %q{
+ a,s=[],"aaa"
+ 300.times { a<<s; s=s.succ }
+ eval <<-END__
+ GC.stress=true
+ Fiber.new do
+ #{ a.join(",") },*zzz=1
+ end.resume
+ END__
+ :ok
+}, '[ruby-dev:32581]'
+
+assert_equal 'ok', %q{
+ while true
+ *, z = 1
+ break
+ end
+ :ok
+}, '[ruby-dev:32892]'
diff --git a/bootstraptest/test_method.rb b/bootstraptest/test_method.rb
new file mode 100644
index 0000000000..4282bc6273
--- /dev/null
+++ b/bootstraptest/test_method.rb
@@ -0,0 +1,1220 @@
+# regular argument
+assert_equal '1', 'def m() 1 end; m()'
+assert_equal '1', 'def m(a) a end; m(1)'
+assert_equal '[1, 2]', 'def m(a,b) [a, b] end; m(1,2)'
+assert_equal '[1, 2, 3]', 'def m(a,b,c) [a, b, c] end; m(1,2,3)'
+assert_equal 'wrong number of arguments (1 for 0)', %q{
+ def m; end
+ begin
+ m(1)
+ rescue => e
+ e.message
+ end
+}
+
+assert_equal 'wrong number of arguments (0 for 1)', %q{
+ def m a; end
+ begin
+ m
+ rescue => e
+ e.message
+ end
+}
+
+# default argument
+assert_equal '1', 'def m(x=1) x end; m()'
+assert_equal '1', 'def m(x=7) x end; m(1)'
+assert_equal '1', 'def m(a,x=1) x end; m(7)'
+assert_equal '1', 'def m(a,x=7) x end; m(7,1)'
+assert_equal '1', 'def m(a,b,x=1) x end; m(7,7)'
+assert_equal '1', 'def m(a,b,x=7) x end; m(7,7,1)'
+assert_equal '1', 'def m(a,x=1,y=1) x end; m(7)'
+assert_equal '1', 'def m(a,x=1,y=1) y end; m(7)'
+assert_equal '1', 'def m(a,x=7,y=1) x end; m(7,1)'
+assert_equal '1', 'def m(a,x=7,y=1) y end; m(7,1)'
+assert_equal '1', 'def m(a,x=7,y=7) x end; m(7,1,1)'
+assert_equal '1', 'def m(a,x=7,y=7) y end; m(7,1,1)'
+
+# rest argument
+assert_equal '[]', 'def m(*a) a end; m().inspect'
+assert_equal '[1]', 'def m(*a) a end; m(1).inspect'
+assert_equal '[1, 2]', 'def m(*a) a end; m(1,2).inspect'
+assert_equal '[]', 'def m(x,*a) a end; m(7).inspect'
+assert_equal '[1]', 'def m(x,*a) a end; m(7,1).inspect'
+assert_equal '[1, 2]', 'def m(x,*a) a end; m(7,1,2).inspect'
+assert_equal '[]', 'def m(x,y,*a) a end; m(7,7).inspect'
+assert_equal '[1]', 'def m(x,y,*a) a end; m(7,7,1).inspect'
+assert_equal '[1, 2]', 'def m(x,y,*a) a end; m(7,7,1,2).inspect'
+assert_equal '[]', 'def m(x,y=7,*a) a end; m(7).inspect'
+assert_equal '[]', 'def m(x,y,z=7,*a) a end; m(7,7).inspect'
+assert_equal '[]', 'def m(x,y,z=7,*a) a end; m(7,7,7).inspect'
+assert_equal '[]', 'def m(x,y,z=7,zz=7,*a) a end; m(7,7,7).inspect'
+assert_equal '[]', 'def m(x,y,z=7,zz=7,*a) a end; m(7,7,7,7).inspect'
+assert_equal '1', 'def m(x,y,z=7,zz=1,*a) zz end; m(7,7,7).inspect'
+assert_equal '1', 'def m(x,y,z=7,zz=1,*a) zz end; m(7,7,7).inspect'
+assert_equal '1', 'def m(x,y,z=7,zz=7,*a) zz end; m(7,7,7,1).inspect'
+
+# block argument
+assert_equal 'Proc', 'def m(&block) block end; m{}.class'
+assert_equal 'nil', 'def m(&block) block end; m().inspect'
+assert_equal 'Proc', 'def m(a,&block) block end; m(7){}.class'
+assert_equal 'nil', 'def m(a,&block) block end; m(7).inspect'
+assert_equal '1', 'def m(a,&block) a end; m(1){}'
+assert_equal 'Proc', 'def m(a,b=nil,&block) block end; m(7){}.class'
+assert_equal 'nil', 'def m(a,b=nil,&block) block end; m(7).inspect'
+assert_equal 'Proc', 'def m(a,b=nil,&block) block end; m(7,7){}.class'
+assert_equal '1', 'def m(a,b=nil,&block) b end; m(7,1){}'
+assert_equal 'Proc', 'def m(a,b=nil,*c,&block) block end; m(7){}.class'
+assert_equal 'nil', 'def m(a,b=nil,*c,&block) block end; m(7).inspect'
+assert_equal '1', 'def m(a,b=nil,*c,&block) a end; m(1).inspect'
+assert_equal '1', 'def m(a,b=1,*c,&block) b end; m(7).inspect'
+assert_equal '1', 'def m(a,b=7,*c,&block) b end; m(7,1).inspect'
+assert_equal '[1]', 'def m(a,b=7,*c,&block) c end; m(7,7,1).inspect'
+
+# splat
+assert_equal '1', 'def m(a) a end; m(*[1])'
+assert_equal '1', 'def m(x,a) a end; m(7,*[1])'
+assert_equal '1', 'def m(x,y,a) a end; m(7,7,*[1])'
+assert_equal '1', 'def m(a,b) a end; m(*[1,7])'
+assert_equal '1', 'def m(a,b) b end; m(*[7,1])'
+assert_equal '1', 'def m(x,a,b) b end; m(7,*[7,1])'
+assert_equal '1', 'def m(x,y,a,b) b end; m(7,7,*[7,1])'
+assert_equal '1', 'def m(a,b,c) a end; m(*[1,7,7])'
+assert_equal '1', 'def m(a,b,c) b end; m(*[7,1,7])'
+assert_equal '1', 'def m(a,b,c) c end; m(*[7,7,1])'
+assert_equal '1', 'def m(x,a,b,c) a end; m(7,*[1,7,7])'
+assert_equal '1', 'def m(x,y,a,b,c) a end; m(7,7,*[1,7,7])'
+
+# hash argument
+assert_equal '1', 'def m(h) h end; m(7=>1)[7]'
+assert_equal '1', 'def m(h) h end; m(7=>1).size'
+assert_equal '1', 'def m(h) h end; m(7=>1, 8=>7)[7]'
+assert_equal '2', 'def m(h) h end; m(7=>1, 8=>7).size'
+assert_equal '1', 'def m(h) h end; m(7=>1, 8=>7, 9=>7)[7]'
+assert_equal '3', 'def m(h) h end; m(7=>1, 8=>7, 9=>7).size'
+assert_equal '1', 'def m(x,h) h end; m(7, 7=>1)[7]'
+assert_equal '1', 'def m(x,h) h end; m(7, 7=>1, 8=>7)[7]'
+assert_equal '1', 'def m(x,h) h end; m(7, 7=>1, 8=>7, 9=>7)[7]'
+assert_equal '1', 'def m(x,y,h) h end; m(7,7, 7=>1)[7]'
+assert_equal '1', 'def m(x,y,h) h end; m(7,7, 7=>1, 8=>7)[7]'
+assert_equal '1', 'def m(x,y,h) h end; m(7,7, 7=>1, 8=>7, 9=>7)[7]'
+
+# block argument
+assert_equal '1', %q(def m(&block) mm(&block) end
+ def mm() yield 1 end
+ m {|a| a })
+assert_equal '1', %q(def m(x,&block) mm(x,&block) end
+ def mm(x) yield 1 end
+ m(7) {|a| a })
+assert_equal '1', %q(def m(x,y,&block) mm(x,y,&block) end
+ def mm(x,y) yield 1 end
+ m(7,7) {|a| a })
+
+# recursive call
+assert_equal '1', %q(def m(n) n == 0 ? 1 : m(n-1) end; m(5))
+
+# instance method
+assert_equal '1', %q(class C; def m() 1 end end; C.new.m)
+assert_equal '1', %q(class C; def m(a) a end end; C.new.m(1))
+assert_equal '1', %q(class C; def m(a = 1) a end end; C.new.m)
+assert_equal '[1]', %q(class C; def m(*a) a end end; C.new.m(1).inspect)
+assert_equal '1', %q( class C
+ def m() mm() end
+ def mm() 1 end
+ end
+ C.new.m )
+
+# singleton method (const)
+assert_equal '1', %q(class C; def C.m() 1 end end; C.m)
+assert_equal '1', %q(class C; def C.m(a) a end end; C.m(1))
+assert_equal '1', %q(class C; def C.m(a = 1) a end end; C.m)
+assert_equal '[1]', %q(class C; def C.m(*a) a end end; C.m(1).inspect)
+assert_equal '1', %q(class C; end; def C.m() 1 end; C.m)
+assert_equal '1', %q(class C; end; def C.m(a) a end; C.m(1))
+assert_equal '1', %q(class C; end; def C.m(a = 1) a end; C.m)
+assert_equal '[1]', %q(class C; end; def C.m(*a) a end; C.m(1).inspect)
+assert_equal '1', %q(class C; def m() 7 end end; def C.m() 1 end; C.m)
+assert_equal '1', %q( class C
+ def C.m() mm() end
+ def C.mm() 1 end
+ end
+ C.m )
+
+# singleton method (lvar)
+assert_equal '1', %q(obj = Object.new; def obj.m() 1 end; obj.m)
+assert_equal '1', %q(obj = Object.new; def obj.m(a) a end; obj.m(1))
+assert_equal '1', %q(obj = Object.new; def obj.m(a=1) a end; obj.m)
+assert_equal '[1]', %q(obj = Object.new; def obj.m(*a) a end; obj.m(1))
+assert_equal '1', %q(class C; def m() 7 end; end
+ obj = C.new
+ def obj.m() 1 end
+ obj.m)
+
+# inheritance
+assert_equal '1', %q(class A; def m(a) a end end
+ class B < A; end
+ B.new.m(1))
+assert_equal '1', %q(class A; end
+ class B < A; def m(a) a end end
+ B.new.m(1))
+assert_equal '1', %q(class A; def m(a) a end end
+ class B < A; end
+ class C < B; end
+ C.new.m(1))
+
+# include
+assert_equal '1', %q(class A; def m(a) a end end
+ module M; end
+ class B < A; include M; end
+ B.new.m(1))
+assert_equal '1', %q(class A; end
+ module M; def m(a) a end end
+ class B < A; include M; end
+ B.new.m(1))
+
+# alias
+assert_equal '1', %q( def a() 1 end
+ alias m a
+ m() )
+assert_equal '1', %q( class C
+ def a() 1 end
+ alias m a
+ end
+ C.new.m )
+assert_equal '1', %q( class C
+ def a() 1 end
+ alias :m a
+ end
+ C.new.m )
+assert_equal '1', %q( class C
+ def a() 1 end
+ alias m :a
+ end
+ C.new.m )
+assert_equal '1', %q( class C
+ def a() 1 end
+ alias :m :a
+ end
+ C.new.m )
+assert_equal '1', %q( class C
+ def a() 1 end
+ alias m a
+ undef a
+ end
+ C.new.m )
+
+# undef
+assert_equal '1', %q( class C
+ def m() end
+ undef m
+ end
+ begin C.new.m; rescue NoMethodError; 1 end )
+assert_equal '1', %q( class A
+ def m() end
+ end
+ class C < A
+ def m() end
+ undef m
+ end
+ begin C.new.m; rescue NoMethodError; 1 end )
+assert_equal '1', %q( class A; def a() end end # [yarv-dev:999]
+ class B < A
+ def b() end
+ undef a, b
+ end
+ begin B.new.a; rescue NoMethodError; 1 end )
+assert_equal '1', %q( class A; def a() end end # [yarv-dev:999]
+ class B < A
+ def b() end
+ undef a, b
+ end
+ begin B.new.b; rescue NoMethodError; 1 end )
+
+assert_equal '3', %q{
+ def m1
+ 1
+ end
+ alias m2 m1
+ alias :"#{'m3'}" m1
+ m1 + m2 + m3
+}, '[ruby-dev:32308]'
+assert_equal '1', %q{
+ def foobar
+ end
+ undef :"foo#{:bar}"
+ 1
+}, '[ruby-dev:32308]'
+assert_equal '1', %q{
+ def foobar
+ 1
+ end
+ alias :"bar#{:baz}" :"foo#{:bar}"
+ barbaz
+}, '[ruby-dev:32308]'
+
+# private
+assert_equal '1', %q( class C
+ def m() mm() end
+ def mm() 1 end
+ private :mm
+ end
+ C.new.m )
+assert_equal '1', %q( class C
+ def m() 7 end
+ private :m
+ end
+ begin C.m; rescue NoMethodError; 1 end )
+assert_equal '1', %q( class C
+ def C.m() mm() end
+ def C.mm() 1 end
+ private_class_method :mm
+ end
+ C.m )
+assert_equal '1', %q( class C
+ def C.m() 7 end
+ private_class_method :m
+ end
+ begin C.m; rescue NoMethodError; 1 end )
+assert_equal '1', %q( class C; def m() 1 end end
+ C.new.m # cache
+ class C
+ alias mm m; private :mm
+ end
+ C.new.m
+ begin C.new.mm; 7; rescue NoMethodError; 1 end )
+
+# nested method
+assert_equal '1', %q( class C
+ def m
+ def mm() 1 end
+ end
+ end
+ C.new.m
+ C.new.mm )
+assert_equal '1', %q( class C
+ def m
+ def mm() 1 end
+ end
+ end
+ instance_eval "C.new.m; C.new.mm" )
+
+# method_missing
+assert_equal ':m', %q( class C
+ def method_missing(mid, *args) mid end
+ end
+ C.new.m.inspect )
+assert_equal ':mm', %q( class C
+ def method_missing(mid, *args) mid end
+ end
+ C.new.mm.inspect )
+assert_equal '[1, 2]', %q( class C
+ def method_missing(mid, *args) args end
+ end
+ C.new.m(1,2).inspect )
+assert_equal '1', %q( class C
+ def method_missing(mid, *args) yield 1 end
+ end
+ C.new.m {|a| a })
+assert_equal 'nil', %q( class C
+ def method_missing(mid, *args, &block) block end
+ end
+ C.new.m.inspect )
+
+# send
+assert_equal '1', %q( class C; def m() 1 end end;
+ C.new.__send__(:m) )
+assert_equal '1', %q( class C; def m() 1 end end;
+ C.new.send(:m) )
+assert_equal '1', %q( class C; def m(a) a end end;
+ C.new.send(:m,1) )
+assert_equal '1', %q( class C; def m(a,b) a end end;
+ C.new.send(:m,1,7) )
+assert_equal '1', %q( class C; def m(x,a=1) a end end;
+ C.new.send(:m,7) )
+assert_equal '1', %q( class C; def m(x,a=7) a end end;
+ C.new.send(:m,7,1) )
+assert_equal '[1, 2]', %q( class C; def m(*a) a end end;
+ C.new.send(:m,1,2).inspect )
+assert_equal '1', %q( class C; def m() 7 end; private :m end
+ begin C.new.public_send(:m); rescue NoMethodError; 1 end )
+assert_equal '1', %q( class C; def m() 1 end; private :m end
+ C.new.send(:m) )
+
+# with block
+assert_equal '[[:ok1, :foo], [:ok2, :foo, :bar]]',
+%q{
+ class C
+ def [](a)
+ $ary << [yield, a]
+ end
+ def []=(a, b)
+ $ary << [yield, a, b]
+ end
+ end
+
+ $ary = []
+ C.new[:foo, &lambda{:ok1}]
+ C.new[:foo, &lambda{:ok2}] = :bar
+ $ary
+}
+
+# with
+assert_equal '[:ok1, [:ok2, 11]]', %q{
+ class C
+ def []
+ $ary << :ok1
+ 10
+ end
+ def []=(a)
+ $ary << [:ok2, a]
+ end
+ end
+ $ary = []
+ C.new[]+=1
+ $ary
+}
+
+# splat and block arguments
+assert_equal %q{[[[:x, :y, :z], NilClass], [[1, :x, :y, :z], NilClass], [[1, 2, :x, :y, :z], NilClass], [[:obj], NilClass], [[1, :obj], NilClass], [[1, 2, :obj], NilClass], [[], Proc], [[1], Proc], [[1, 2], Proc], [[], Proc], [[1], Proc], [[1, 2], Proc], [[:x, :y, :z], Proc], [[1, :x, :y, :z], Proc], [[1, 2, :x, :y, :z], Proc]]}, %q{
+def m(*args, &b)
+ $result << [args, b.class]
+end
+$result = []
+ary = [:x, :y, :z]
+obj = :obj
+b = Proc.new{}
+
+m(*ary)
+m(1,*ary)
+m(1,2,*ary)
+m(*obj)
+m(1,*obj)
+m(1,2,*obj)
+m(){}
+m(1){}
+m(1,2){}
+m(&b)
+m(1,&b)
+m(1,2,&b)
+m(*ary,&b)
+m(1,*ary,&b)
+m(1,2,*ary,&b)
+$result
+}
+
+# aset and splat
+assert_equal '4', %q{class Foo;def []=(a,b,c,d);end;end;Foo.new[1,*a=[2,3]]=4}
+assert_equal '4', %q{class Foo;def []=(a,b,c,d);end;end;def m(&blk)Foo.new[1,*a=[2,3],&blk]=4;end;m{}}
+
+# post test
+assert_equal %q{[1, 2, :o1, :o2, [], 3, 4, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4)}
+
+assert_equal %q{[1, 2, 3, :o2, [], 4, 5, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5)}
+
+assert_equal %q{[1, 2, 3, 4, [], 5, 6, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6)}
+
+assert_equal %q{[1, 2, 3, 4, [5], 6, 7, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7)}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6], 7, 8, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8)}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7], 8, 9, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9)}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7, 8], 9, 10, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7, 8, 9], 10, 11, NilClass, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)}
+
+assert_equal %q{[1, 2, :o1, :o2, [], 3, 4, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4){}}
+
+assert_equal %q{[1, 2, 3, :o2, [], 4, 5, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5){}}
+
+assert_equal %q{[1, 2, 3, 4, [], 5, 6, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6){}}
+
+assert_equal %q{[1, 2, 3, 4, [5], 6, 7, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7){}}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6], 7, 8, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8){}}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7], 8, 9, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9){}}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7, 8], 9, 10, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9, 10){}}
+
+assert_equal %q{[1, 2, 3, 4, [5, 6, 7, 8, 9], 10, 11, Proc, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2, &b)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, b.class, x, y]
+end
+; m(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11){}}
+
+assert_equal %q{[1, 2, :o1, :o2, [], 3, 4, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, x, y]
+end
+; m(1, 2, 3, 4)}
+
+assert_equal %q{[1, 2, 3, :o2, [], 4, 5, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, x, y]
+end
+; m(1, 2, 3, 4, 5)}
+
+assert_equal %q{[1, 2, 3, 4, [], 5, 6, nil, nil]}, %q{
+def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2)
+ x, y = :x, :y if $foo
+ [m1, m2, o1, o2, r, p1, p2, x, y]
+end
+; m(1, 2, 3, 4, 5, 6)}
+
+
+#
+# super
+#
+=begin
+# below programs are generated by this program:
+
+BASE = <<EOS__
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; <TEST>; super; end; end
+EOS__
+
+tests = {
+%q{
+ def m
+} => %q{
+ C1.new.m
+},
+#
+%q{
+ def m a
+} => %q{
+ C1.new.m 1
+},
+%q{
+ def m a
+ a = :a
+} => %q{
+ C1.new.m 1
+},
+#
+%q{
+ def m a, o=:o
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+},
+%q{
+ def m a, o=:o
+ a = :a
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+},
+%q{
+ def m a, o=:o
+ o = :x
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+},
+#
+%q{
+ def m a, *r
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+ C1.new.m 1, 2, 3
+},
+%q{
+ def m a, *r
+ r = [:x, :y]
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+ C1.new.m 1, 2, 3
+},
+#
+%q{
+ def m a, o=:o, *r
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+ C1.new.m 1, 2, 3
+ C1.new.m 1, 2, 3, 4
+},
+#
+%q{
+ def m a, o=:o, *r, &b
+} => %q{
+ C1.new.m 1
+ C1.new.m 1, 2
+ C1.new.m 1, 2, 3
+ C1.new.m 1, 2, 3, 4
+ C1.new.m(1){}
+ C1.new.m(1, 2){}
+ C1.new.m(1, 2, 3){}
+ C1.new.m(1, 2, 3, 4){}
+},
+#
+"def m(m1, m2, o1=:o1, o2=:o2, p1, p2)" =>
+%q{
+C1.new.m(1,2,3,4)
+C1.new.m(1,2,3,4,5)
+C1.new.m(1,2,3,4,5,6)
+},
+#
+"def m(m1, m2, *r, p1, p2)" =>
+%q{
+C1.new.m(1,2,3,4)
+C1.new.m(1,2,3,4,5)
+C1.new.m(1,2,3,4,5,6)
+C1.new.m(1,2,3,4,5,6,7)
+C1.new.m(1,2,3,4,5,6,7,8)
+},
+#
+"def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2)" =>
+%q{
+C1.new.m(1,2,3,4)
+C1.new.m(1,2,3,4,5)
+C1.new.m(1,2,3,4,5,6)
+C1.new.m(1,2,3,4,5,6,7)
+C1.new.m(1,2,3,4,5,6,7,8)
+C1.new.m(1,2,3,4,5,6,7,8,9)
+},
+
+###
+}
+
+
+tests.each{|setup, methods| setup = setup.dup; setup.strip!
+ setup = BASE.gsub(/<TEST>/){setup}
+ methods.split(/\n/).each{|m| m = m.dup; m.strip!
+ next if m.empty?
+ expr = "#{setup}; #{m}"
+ result = eval(expr)
+ puts "assert_equal %q{#{result.inspect}}, %q{\n#{expr}}"
+ puts
+ }
+}
+
+=end
+
+assert_equal %q{[:C0_m, [1, 2, :o1, :o2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, p1, p2); super; end; end
+; C1.new.m(1,2,3,4)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, :o2, 4, 5]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6)}
+
+assert_equal %q{[:C0_m, [1, :o]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [1, 2, 3]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r; super; end; end
+; C1.new.m 1, 2, 3}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r; super; end; end
+; C1.new.m 1, 2, 3, 4}
+
+assert_equal %q{[:C0_m, [:a]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a
+ a = :a; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6, 7]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6,7)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6, 7, 8]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6,7,8)}
+
+assert_equal %q{[:C0_m, [1, :o]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [1, 2, 3]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m 1, 2, 3}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m 1, 2, 3, 4}
+
+assert_equal %q{[:C0_m, [1, :o]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m(1){}}
+
+assert_equal %q{[:C0_m, [1, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m(1, 2){}}
+
+assert_equal %q{[:C0_m, [1, 2, 3]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m(1, 2, 3){}}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o, *r, &b; super; end; end
+; C1.new.m(1, 2, 3, 4){}}
+
+assert_equal %q{[:C0_m, [1, :x]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o
+ o = :x; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, :x]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o
+ o = :x; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [:a, :o]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o
+ a = :a; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [:a, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o
+ a = :a; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [1]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, :x, :y]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r
+ r = [:x, :y]; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, :x, :y]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r
+ r = [:x, :y]; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [1, :x, :y]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r
+ r = [:x, :y]; super; end; end
+; C1.new.m 1, 2, 3}
+
+assert_equal %q{[:C0_m, [1, 2, :o1, :o2, 3, 4]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, :o2, 4, 5]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6, 7]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6,7)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6, 7, 8]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6,7,8)}
+
+assert_equal %q{[:C0_m, [1, 2, 3, 4, 5, 6, 7, 8, 9]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m(m1, m2, o1=:o1, o2=:o2, *r, p1, p2); super; end; end
+; C1.new.m(1,2,3,4,5,6,7,8,9)}
+
+assert_equal %q{[:C0_m, [1]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal %q{[:C0_m, [1, 2, 3]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, *r; super; end; end
+; C1.new.m 1, 2, 3}
+
+assert_equal %q{[:C0_m, []]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m; super; end; end
+; C1.new.m}
+
+assert_equal %q{[:C0_m, [1, :o]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o; super; end; end
+; C1.new.m 1}
+
+assert_equal %q{[:C0_m, [1, 2]]}, %q{
+class C0; def m *args; [:C0_m, args]; end; end
+class C1 < C0; def m a, o=:o; super; end; end
+; C1.new.m 1, 2}
+
+assert_equal 'ok', %q{
+ class C
+ def x=(n)
+ end
+ def m
+ self.x = :ok
+ end
+ end
+ C.new.m
+}
+
+assert_equal 'ok', %q{
+ proc{
+ $SAFE = 1
+ class C
+ def m
+ :ok
+ end
+ end
+ }.call
+ C.new.m
+}, '[ruby-core:11998]'
+
+assert_equal 'ok', %q{
+ proc{
+ $SAFE = 2
+ class C
+ def m
+ :ok
+ end
+ end
+ }.call
+ C.new.m
+}, '[ruby-core:11998]'
+
+assert_equal 'ok', %q{
+ proc{
+ $SAFE = 3
+ class C
+ def m
+ :ng
+ end
+ end
+ }.call
+ begin
+ C.new.m
+ rescue SecurityError
+ :ok
+ end
+}, '[ruby-core:11998]'
+
+assert_equal 'ok', %q{
+ class B
+ def m() :fail end
+ end
+ class C < B
+ undef m
+ begin
+ remove_method :m
+ rescue NameError
+ end
+ end
+ begin
+ C.new.m
+ rescue NameError
+ :ok
+ end
+}, '[ruby-dev:31816], [ruby-dev:31817]'
+
+assert_normal_exit %q{
+ begin
+ Process.setrlimit(Process::RLIMIT_STACK, 4_202_496)
+ # FreeBSD fails this less than 4M + 8K bytes.
+ rescue Exception
+ exit
+ end
+ class C
+ attr "a" * (10*1024*1024)
+ end
+}, '[ruby-dev:31818]'
+
+assert_equal 'ok', %q{
+ class Module
+ def define_method2(name, &block)
+ define_method(name, &block)
+ end
+ end
+ class C
+ define_method2(:m) {|x, y| :fail }
+ end
+ begin
+ C.new.m([1,2])
+ rescue ArgumentError
+ :ok
+ end
+}
+
+assert_not_match /method_missing/, %q{
+ STDERR.reopen(STDOUT)
+ variable_or_mehtod_not_exist
+}
+
+assert_equal '[false, false, false, false, true, true]', %q{
+ class C
+ define_method(:foo) {
+ block_given?
+ }
+ end
+
+ C.new.foo {}
+
+ class D
+ def foo
+ D.module_eval{
+ define_method(:m1){
+ block_given?
+ }
+ }
+ end
+ def bar
+ D.module_eval{
+ define_method(:m2){
+ block_given?
+ }
+ }
+ end
+ end
+
+ D.new.foo
+ D.new.bar{}
+ [C.new.foo, C.new.foo{}, D.new.m1, D.new.m1{}, D.new.m2, D.new.m2{}]
+}, '[ruby-core:14813]'
+
+assert_equal 'ok', %q{
+ class Foo
+ define_method(:foo) do |&b|
+ b.call
+ end
+ end
+ Foo.new.foo do
+ break :ok
+ end
+}, '[ruby-dev:36028]'
+
+assert_equal '[1, 2, [3, 4]]', %q{
+ def regular(a, b, *c)
+ [a, b, c]
+ end
+ regular(*[], 1, *[], *[2, 3], *[], 4)
+}, '[ruby-core:19413]'
+
+assert_equal '[1, [:foo, 3, 4, :foo]]', %q{
+ def regular(a, *b)
+ [a, b]
+ end
+ a = b = [:foo]
+ regular(1, *a, *[3, 4], *b)
+}
+
+assert_equal '["B", "A"]', %q{
+ class A
+ def m
+ 'A'
+ end
+ end
+
+ class B < A
+ define_method(:m) do
+ ['B', super()]
+ end
+ end
+
+ class C < B
+ end
+
+ C.new.m
+}
+
+assert_equal 'ok', %q{
+ module Foo
+ def foo
+ begin
+ super
+ rescue NoMethodError
+ :ok
+ end
+ end
+ module_function :foo
+ end
+ Foo.foo
+}, '[ruby-dev:37587]'
+
+assert_equal 'Object#foo', %q{
+ class Object
+ def self.foo
+ "Object.foo"
+ end
+ def foo
+ "Object#foo"
+ end
+ end
+
+ module Foo
+ def foo
+ begin
+ super
+ rescue NoMethodError
+ :ok
+ end
+ end
+ module_function :foo
+ end
+ Foo.foo
+}, '[ruby-dev:37587]'
+
+assert_normal_exit %q{
+ class BasicObject
+ remove_method :method_missing
+ end
+ begin
+ "a".lalala!
+ rescue NoMethodError => e
+ e.message == "undefined method `lalala!' for \"a\":String" ? :ok : :ng
+ end
+}, '[ruby-core:22298]'
+
+assert_equal 'ok', %q{
+ "hello"[0] ||= "H"
+ "ok"
+}
+
+assert_equal 'ok', %q{
+ "hello"[0, 1] ||= "H"
+ "ok"
+}
+
+assert_equal 'ok', %q{
+ class C
+ define_method(:foo) do
+ C.class_eval { remove_method(:foo) }
+ super()
+ end
+ end
+ begin
+ C.new.foo
+ rescue NoMethodError
+ 'ok'
+ end
+}
+assert_equal 'ok', %q{
+ [0][0, &proc{}] += 21
+ 'ok'
+}, '[ruby-core:30534]'
+
+# should not cache when splat
+assert_equal 'ok', %q{
+ class C
+ attr_reader :a
+ def initialize
+ @a = 1
+ end
+ end
+
+ def m *args
+ C.new.a(*args)
+ end
+
+ m()
+ begin
+ m(1)
+ rescue ArgumentError
+ 'ok'
+ end
+}
+
+assert_equal 'DC', %q{
+ $result = []
+
+ class C
+ def foo *args
+ $result << 'C'
+ end
+ end
+ class D
+ def foo *args
+ $result << 'D'
+ end
+ end
+
+ o1 = $o1 = C.new
+ o2 = $o2 = D.new
+
+ args = Object.new
+ def args.to_a
+ test1 $o2, nil
+ []
+ end
+ def test1 o, args
+ o.foo(*args)
+ end
+ test1 o1, args
+ $result.join
+}
+
+assert_equal 'DC', %q{
+ $result = []
+
+ class C
+ def foo *args
+ $result << 'C'
+ end
+ end
+ class D
+ def foo *args
+ $result << 'D'
+ end
+ end
+
+ o1 = $o1 = C.new
+ o2 = $o2 = D.new
+
+ block = Object.new
+ def block.to_proc
+ test2 $o2, %w(a, b, c), nil
+ Proc.new{}
+ end
+ def test2 o, args, block
+ o.foo(*args, &block)
+ end
+ test2 o1, [], block
+ $result.join
+}
diff --git a/bootstraptest/test_objectspace.rb b/bootstraptest/test_objectspace.rb
new file mode 100644
index 0000000000..862a94e376
--- /dev/null
+++ b/bootstraptest/test_objectspace.rb
@@ -0,0 +1,46 @@
+assert_normal_exit %q{
+ eval("", TOPLEVEL_BINDING)
+ minobj = ObjectSpace.to_enum(:each_object).min_by {|a| a.object_id }
+ maxobj = ObjectSpace.to_enum(:each_object).max_by {|a| a.object_id }
+ (((minobj.object_id-100)..(minobj.object_id+100))+
+ ((maxobj.object_id-100)..(maxobj.object_id+100))).each {|id|
+ begin
+ o = ObjectSpace._id2ref(id)
+ rescue RangeError
+ next
+ end
+ o.inspect if defined?(o.inspect)
+ }
+}, '[ruby-dev:31911]'
+
+assert_normal_exit %q{
+ ary = (1..10).to_a
+ ary.permutation(2) {|x|
+ if x == [1,2]
+ ObjectSpace.each_object(String) {|s|
+ s.clear if !s.frozen? && (s.length == 40 || s.length == 80)
+ }
+ end
+ }
+}, '[ruby-dev:31982]'
+
+assert_normal_exit %q{
+ ary = (1..100).to_a
+ ary.permutation(2) {|x|
+ if x == [1,2]
+ ObjectSpace.each_object(Array) {|o| o.clear if o == ary && o.object_id != ary.object_id }
+ end
+ }
+}, '[ruby-dev:31985]'
+
+assert_normal_exit %q{
+ ObjectSpace.define_finalizer("") do
+ Mutex.new.lock
+ end
+}, '[ruby-dev:44049]'
+
+assert_normal_exit %q{
+ ObjectSpace.define_finalizer("") do
+ Thread.new {}
+ end
+}, '[ruby-core:37858]'
diff --git a/bootstraptest/test_proc.rb b/bootstraptest/test_proc.rb
new file mode 100644
index 0000000000..c23394e8d2
--- /dev/null
+++ b/bootstraptest/test_proc.rb
@@ -0,0 +1,483 @@
+assert_equal %q{[1, 2, 3]}, %q{
+ def getproc &b
+ b
+ end
+
+ def m
+ yield
+ end
+
+ m{
+ i = 1
+ m{
+ j = 2
+ m{
+ k = 3
+ getproc{
+ [i, j, k]
+ }
+ }
+ }
+ }.call
+}
+assert_equal %q{7}, %q{
+ def make_proc(&b)
+ b
+ end
+
+ def make_closure
+ a = 0
+ make_proc{
+ a+=1
+ }
+ end
+
+ cl = make_closure
+ cl.call + cl.call * cl.call
+}
+assert_equal %q{ok}, %q{
+ class C
+ def foo
+ :ok
+ end
+ end
+
+ def block
+ C.method(:new).to_proc
+ end
+ b = block()
+ b.call.foo
+}
+assert_equal %q{[0, 1, :last, 0, 2, :last]}, %q{
+ def proc &b
+ b
+ end
+
+ pr = []
+ proc{|i_b|
+ p3 = proc{|j_b|
+ pr << proc{|k_b|
+ [i_b, j_b, k_b]
+ }
+ }
+ p3.call(1)
+ p3.call(2)
+ }.call(0)
+
+ pr[0].call(:last).concat pr[1].call(:last)
+}
+assert_equal %q{12}, %q{
+ def iter
+ yield
+ end
+
+ def getproc &b
+ b
+ end
+
+ iter{
+ bvar = 3
+ getproc{
+ bvar2 = 4
+ bvar * bvar2
+ }
+ }.call
+}
+assert_equal %q{200}, %q{
+ def iter
+ yield
+ end
+
+ def getproc &b
+ b
+ end
+
+ loc1 = 0
+ pr1 = iter{
+ bl1 = 1
+ getproc{
+ loc1 += 1
+ bl1 += 1
+ loc1 + bl1
+ }
+ }
+
+ pr2 = iter{
+ bl1 = 1
+ getproc{
+ loc1 += 1
+ bl1 += 1
+ loc1 + bl1
+ }
+ }
+
+ pr1.call; pr2.call
+ pr1.call; pr2.call
+ pr1.call; pr2.call
+ (pr1.call + pr2.call) * loc1
+}
+assert_equal %q{[1, 2]}, %q{
+ def proc(&pr)
+ pr
+ end
+
+ def m
+ a = 1
+ m2{
+ a
+ }
+ end
+
+ def m2
+ b = 2
+ proc{
+ [yield, b]
+ }
+ end
+
+ pr = m
+ x = ['a', 1,2,3,4,5,6,7,8,9,0,
+ 1,2,3,4,5,6,7,8,9,0,
+ 1,2,3,4,5,6,7,8,9,0,
+ 1,2,3,4,5,6,7,8,9,0,
+ 1,2,3,4,5,6,7,8,9,0,]
+ pr.call
+}
+assert_equal %q{1}, %q{
+ def proc(&pr)
+ pr
+ end
+
+ def m
+ a = 1
+ m2{
+ a
+ }
+ end
+
+ def m2
+ b = 2
+ proc{
+ [yield, b]
+ }
+ 100000.times{|x|
+ "#{x}"
+ }
+ yield
+ end
+ m
+}
+assert_equal %q{[:C, :C]}, %q{
+ Const = :top
+ class C
+ Const = :C
+ $pr = proc{
+ (1..2).map{
+ Const
+ }
+ }
+ end
+ $pr.call
+}
+assert_equal %q{top}, %q{
+ Const = :top
+ class C
+ Const = :C
+ end
+ pr = proc{
+ Const
+ }
+ C.class_eval %q{
+ pr.call
+ }
+}
+assert_equal %q{1}, %q{
+ def m(&b)
+ b
+ end
+
+ m{|e_proctest| e_proctest}.call(1)
+}
+assert_equal %q{12}, %q{
+ def m(&b)
+ b
+ end
+
+ m{|e_proctest1, e_proctest2|
+ a = e_proctest1 * e_proctest2 * 2
+ a * 3
+ }.call(1, 2)
+}
+assert_equal %q{[[], [1], [1, 2], [1, 2, 3]]}, %q{
+ [
+ Proc.new{|*args| args}.call(),
+ Proc.new{|*args| args}.call(1),
+ Proc.new{|*args| args}.call(1, 2),
+ Proc.new{|*args| args}.call(1, 2, 3),
+ ]
+}
+assert_equal %q{[[nil, []], [1, []], [1, [2]], [1, [2, 3]]]}, %q{
+ [
+ Proc.new{|a, *b| [a, b]}.call(),
+ Proc.new{|a, *b| [a, b]}.call(1),
+ Proc.new{|a, *b| [a, b]}.call(1, 2),
+ Proc.new{|a, *b| [a, b]}.call(1, 2, 3),
+ ]
+}
+assert_equal %q{0}, %q{
+ pr = proc{
+ $SAFE
+ }
+ $SAFE = 1
+ pr.call
+}
+assert_equal %q{[1, 0]}, %q{
+ pr = proc{
+ $SAFE += 1
+ }
+ [pr.call, $SAFE]
+}
+assert_equal %q{1}, %q{
+ def m(&b)
+ b
+ end
+ m{1}.call
+}
+assert_equal %q{3}, %q{
+ def m(&b)
+ b
+ end
+
+ m{
+ a = 1
+ a + 2
+ }.call
+}
+assert_equal %Q{ok\n}, %q{
+ class A; def get_block; proc {puts "ok"} end end
+ block = A.new.get_block
+ GC.start
+ block.call
+}, '[ruby-core:14885]'
+
+assert_equal 'ok', %q{
+ a = lambda {|x, y, &b| b }
+ b = a.curry[1]
+ if b.call(2){} == nil
+ :ng
+ else
+ :ok
+ end
+}, '[ruby-core:15551]'
+
+assert_equal 'ok', %q{
+ lambda {
+ break :ok
+ :ng
+ }.call
+}, '[ruby-dev:34646]'
+
+assert_equal %q{[:bar, :foo]}, %q{
+ def foo
+ klass = Class.new do
+ define_method(:bar) do
+ return :bar
+ end
+ end
+ [klass.new.bar, :foo]
+ end
+ foo
+}, "[ ruby-Bugs-19304 ]"
+
+assert_equal 'ok', %q{
+ $x = :ok
+ def def7(x, y)
+ x[y]
+ $x = :ng
+ end
+ def test_def7
+ def7(lambda {|x| x.call}, Proc.new {return})
+ $x = :ng
+ end
+ test_def7
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ lambda { a = lambda { return }; $x = :ng; a[]; $x = :ok }.call
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ lambda { a = lambda { break }; $x = :ng; a[]; $x = :ok }.call
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ def def8
+ $x = :ng
+ lambda { a = Proc.new { return }; a[]}.call
+ $x = :ok
+ end
+ def8
+ $x
+}, '[ruby-core:17164]'
+
+
+assert_equal 'ok', %q{
+ def def9
+ lambda {|a| $x = :ok; a[]; $x = :ng }.call(Proc.new { return })
+ $x = :ng
+ end
+ def9
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ def def10
+ $x = :ng
+ lambda { 1.times { return } }.call
+ $x = :ok
+ end
+ $x = :ok
+ def10
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ def def11
+ yield
+ end
+ begin
+ lambda { def11 { return } }.call
+ rescue LocalJumpError
+ :ng
+ else
+ :ok
+ end
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ def def12
+ b = Proc.new { $x = :ng; lambda { return }.call; $x = :ok }.call
+ end
+ def12
+ $x
+}, '[ruby-core:17164]'
+
+assert_equal 'ok', %q{
+ def m
+ pr = proc{
+ proc{
+ return :ok
+ }
+ }.call
+ pr.call
+ :ng
+ end
+ m()
+}
+
+assert_equal 'ok', %q{
+ class Foo
+ def call_it
+ p = Proc.new
+ p.call
+ end
+ end
+
+ def give_it
+ proc { :ok }
+ end
+
+ f = Foo.new
+ a_proc = give_it
+ f.call_it(&give_it())
+}, '[ruby-core:15711]'
+
+assert_equal 'foo!', %q{
+ class FooProc < Proc
+ def initialize
+ @foo = "foo!"
+ end
+
+ def bar
+ @foo
+ end
+ end
+
+ def bar
+ FooProc.new &lambda{
+ p 1
+ }
+ end
+
+ fp = bar(&lambda{
+ p 2
+ })
+
+ fp.bar
+}, 'Subclass of Proc'
+
+assert_equal 'ok', %q{
+ o = Object.new
+ def o.write(s); end
+ $stderr = o
+ at_exit{
+ print $!.message
+ }
+ raise "ok"
+}
+
+assert_equal 'ok', %q{
+ lambda do
+ class A
+ class B
+ proc{return :ng}.call
+ end
+ end
+ end.call
+ :ok
+}
+
+assert_equal 'ok', %q{
+ $proc = proc{return}
+ begin
+ lambda do
+ class A
+ class B
+ $proc.call
+ end
+ end
+ end.call
+ :ng
+ rescue LocalJumpError
+ :ok
+ end
+}
+
+assert_equal 'ok', %q{
+ def x
+ binding
+ end
+ b = x{|a| a }
+ b.eval('yield("ok")')
+}, '[Bug #5634]'
+
+assert_equal 'ok', %q{
+ def x
+ binding
+ end
+ eval("x { 'ok' }").eval "yield"
+}, '[Bug #5634]'
+
+assert_equal 'ok', %q{
+ def x
+ binding
+ end
+ def m
+ x{ 'ok' }
+ end
+ eval('yield', m)
+}, '[Bug #5634]'
+
diff --git a/bootstraptest/test_struct.rb b/bootstraptest/test_struct.rb
new file mode 100644
index 0000000000..a65964d5f9
--- /dev/null
+++ b/bootstraptest/test_struct.rb
@@ -0,0 +1,5 @@
+assert_equal 'Struct::Foo', %q{
+ Struct.instance_eval { const_set(:Foo, nil) }
+ Struct.new("Foo")
+ Struct::Foo
+}
diff --git a/bootstraptest/test_syntax.rb b/bootstraptest/test_syntax.rb
new file mode 100644
index 0000000000..80eaa6416d
--- /dev/null
+++ b/bootstraptest/test_syntax.rb
@@ -0,0 +1,902 @@
+assert_equal %q{4}, %q{1 && 2 && 3 && 4}
+assert_equal %q{}, %q{1 && nil && 3 && 4}
+assert_equal %q{}, %q{1 && 2 && 3 && nil}
+assert_equal %q{false}, %q{1 && 2 && 3 && false}
+assert_equal %q{4}, %q{1 and 2 and 3 and 4}
+assert_equal %q{}, %q{1 and nil and 3 and 4}
+assert_equal %q{}, %q{1 and 2 and 3 and nil}
+assert_equal %q{false}, %q{1 and 2 and 3 and false}
+assert_equal %q{}, %q{nil && true}
+assert_equal %q{false}, %q{false && true}
+assert_equal %q{}, %q{
+ case 1
+ when 2
+ :ng
+ end}
+assert_equal %q{ok}, %q{
+ case 1
+ when 10,20,30
+ :ng1
+ when 1,2,3
+ :ok
+ when 100,200,300
+ :ng2
+ else
+ :elseng
+ end}
+assert_equal %q{elseok}, %q{
+ case 123
+ when 10,20,30
+ :ng1
+ when 1,2,3
+ :ng2
+ when 100,200,300
+ :ng3
+ else
+ :elseok
+ end
+}
+assert_equal %q{ok}, %q{
+ case 'test'
+ when /testx/
+ :ng1
+ when /test/
+ :ok
+ when /tetxx/
+ :ng2
+ else
+ :ng_else
+ end
+}
+assert_equal %q{ok}, %q{
+ case Object.new
+ when Object
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ case Object
+ when Object.new
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ case 'test'
+ when 'tes'
+ :ng
+ when 'te'
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ case 'test'
+ when 'tes'
+ :ng
+ when 'te'
+ :ng
+ when 'test'
+ :ok
+ end
+}
+assert_equal %q{ng}, %q{
+ case 'test'
+ when 'tes'
+ :ng
+ when /te/
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ case 'test'
+ when 'tes'
+ :ng
+ when /test/
+ :ok
+ else
+ :ng
+ end
+}
+assert_equal %q{100}, %q{
+ def test(arg)
+ case 1
+ when 2
+ 3
+ end
+ return arg
+ end
+
+ test(100)
+}
+assert_equal %q{ok}, %q{
+ ary = [1, 2]
+ case 1
+ when *ary
+ :ok
+ else
+ :ng
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [1, 2]
+ case 3
+ when *ary
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [1, 2]
+ case 1
+ when :x, *ary
+ :ok
+ when :z
+ :ng1
+ else
+ :ng2
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [1, 2]
+ case 3
+ when :x, *ary
+ :ng1
+ when :z
+ :ng2
+ else
+ :ok
+ end
+}
+assert_equal %q{[:false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep]}, %q{
+
+ def make_perm ary, num
+ if num == 1
+ ary.map{|e| [e]}
+ else
+ base = make_perm(ary, num-1)
+ res = []
+ base.each{|b|
+ ary.each{|e|
+ res << [e] + b
+ }
+ }
+ res
+ end
+ end
+
+ def each_test
+ conds = make_perm(['fv', 'tv'], 3)
+ bangs = make_perm(['', '!'], 3)
+ exprs = make_perm(['and', 'or'], 3)
+ ['if', 'unless'].each{|syn|
+ conds.each{|cs|
+ bangs.each{|bs|
+ exprs.each{|es|
+ yield(syn, cs, bs, es)
+ }
+ }
+ }
+ }
+ end
+
+ fv = false
+ tv = true
+
+ $ans = []
+ each_test{|syn, conds, bangs, exprs|
+ c1, c2, c3 = conds
+ bang1, bang2, bang3 = bangs
+ e1, e2 = exprs
+ eval %Q{
+ #{syn} #{bang1}#{c1} #{e1} #{bang2}#{c2} #{e2} #{bang3}#{c3}
+ $ans << :then
+ else
+ $ans << :false
+ end
+ }
+ }
+
+ each_test{|syn, conds, bangs, exprs|
+ c1, c2, c3 = conds
+ bang1, bang2, bang3 = bangs
+ e1, e2 = exprs
+ eval %Q{
+ #{syn} #{bang1}#{c1} #{e1} #{bang2}#{c2} #{e2} #{bang3}#{c3}
+ $ans << :then
+ end
+ $ans << :sep
+ }
+ }
+ $ans
+}
+assert_equal %q{}, %q{
+ defined?(m)
+}
+assert_equal %q{method}, %q{
+ def m
+ end
+ defined?(m)
+}
+assert_equal %q{}, %q{
+ defined?(a.class)
+}
+assert_equal %q{method}, %q{
+ a = 1
+ defined?(a.class)
+}
+assert_equal %q{["method", "method", "method", "method", nil, nil, "method", "method", "method", nil]}, %q{
+ class C
+ def test
+ [defined?(m1()), defined?(self.m1), defined?(C.new.m1),
+ defined?(m2()), defined?(self.m2), defined?(C.new.m2),
+ defined?(m3()), defined?(self.m3), defined?(C.new.m3)]
+ end
+ def m1
+ end
+ private
+ def m2
+ end
+ protected
+ def m3
+ end
+ end
+ C.new.test + [defined?(C.new.m3)]
+}
+assert_equal %q{[nil, nil, nil, nil, "global-variable", "global-variable", nil, nil]}, %q{
+ $ans = [defined?($1), defined?($2), defined?($3), defined?($4)]
+ /(a)(b)/ =~ 'ab'
+ $ans + [defined?($1), defined?($2), defined?($3), defined?($4)]
+}
+assert_equal %q{nilselftruefalse}, %q{
+ defined?(nil) + defined?(self) +
+ defined?(true) + defined?(false)
+}
+assert_equal %q{}, %q{
+ defined?(@a)
+}
+assert_equal %q{instance-variable}, %q{
+ @a = 1
+ defined?(@a)
+}
+assert_equal %q{}, %q{
+ defined?(@@a)
+}
+assert_equal %q{class variable}, %q{
+ @@a = 1
+ defined?(@@a)
+}
+assert_equal %q{}, %q{
+ defined?($a)
+}
+assert_equal %q{global-variable}, %q{
+ $a = 1
+ defined?($a)
+}
+assert_equal %q{}, %q{
+ defined?(C_definedtest)
+}
+assert_equal %q{constant}, %q{
+ C_definedtest = 1
+ defined?(C_definedtest)
+}
+assert_equal %q{}, %q{
+ defined?(::C_definedtest)
+}
+assert_equal %q{constant}, %q{
+ C_definedtest = 1
+ defined?(::C_definedtest)
+}
+assert_equal %q{}, %q{
+ defined?(C_definedtestA::C_definedtestB::C_definedtestC)
+}
+assert_equal %q{constant}, %q{
+ class C_definedtestA
+ class C_definedtestB
+ C_definedtestC = 1
+ end
+ end
+ defined?(C_definedtestA::C_definedtestB::C_definedtestC)
+}
+assert_equal %q{30}, %q{
+ sum = 0
+ 30.times{|ib|
+ if ib % 10 == 0 .. true
+ sum += ib
+ end
+ }
+ sum
+}
+assert_equal %q{63}, %q{
+ sum = 0
+ 30.times{|ib|
+ if ib % 10 == 0 ... true
+ sum += ib
+ end
+ }
+ sum
+}
+assert_equal %q{[["NUM", "Type: NUM\n"], ["NUM", "123\n"], ["NUM", "456\n"], ["NUM", "Type: ARP\n"], ["NUM", "aaa\n"], ["NUM", "bbb\n"], ["NUM", "\f\n"], ["ARP", "Type: ARP\n"], ["ARP", "aaa\n"], ["ARP", "bbb\n"]]}, %q{
+ t = nil
+ unless ''.respond_to? :lines
+ class String
+ def lines
+ self
+ end
+ end
+ end
+ ary = []
+"this must not print
+Type: NUM
+123
+456
+Type: ARP
+aaa
+bbb
+\f
+this must not print
+hoge
+Type: ARP
+aaa
+bbb
+".lines.each{|l|
+ if (t = l[/^Type: (.*)/, 1])..(/^\f/ =~ l)
+ ary << [t, l]
+ end
+ }
+ ary
+}
+assert_equal %q{1}, %q{if true then 1 ; end}
+assert_equal %q{}, %q{if false then 1 ; end}
+assert_equal %q{1}, %q{if true then 1 ; else; 2; end}
+assert_equal %q{2}, %q{if false then 1 ; else; 2; end}
+assert_equal %q{}, %q{if true then ; elsif true then ; 1 ; end}
+assert_equal %q{1}, %q{if false then ; elsif true then ; 1 ; end}
+assert_equal %q{}, %q{unless true then 1 ; end}
+assert_equal %q{1}, %q{unless false then 1 ; end}
+assert_equal %q{2}, %q{unless true then 1 ; else; 2; end}
+assert_equal %q{1}, %q{unless false then 1 ; else; 2; end}
+assert_equal %q{1}, %q{1 if true}
+assert_equal %q{}, %q{1 if false}
+assert_equal %q{}, %q{1 if nil}
+assert_equal %q{}, %q{1 unless true}
+assert_equal %q{1}, %q{1 unless false}
+assert_equal %q{1}, %q{1 unless nil}
+assert_equal %q{1}, %q{1 || 2 || 3 || 4}
+assert_equal %q{1}, %q{1 || false || 3 || 4}
+assert_equal %q{2}, %q{nil || 2 || 3 || 4}
+assert_equal %q{2}, %q{false || 2 || 3 || 4}
+assert_equal %q{false}, %q{nil || false || nil || false}
+assert_equal %q{1}, %q{1 or 2 or 3 or 4}
+assert_equal %q{1}, %q{1 or false or 3 or 4}
+assert_equal %q{2}, %q{nil or 2 or 3 or 4}
+assert_equal %q{2}, %q{false or 2 or 3 or 4}
+assert_equal %q{false}, %q{nil or false or nil or false}
+assert_equal %q{elseng}, %q{
+ case
+ when 1==2, 2==3
+ :ng1
+ when false, 4==5
+ :ok
+ when false
+ :ng2
+ else
+ :elseng
+ end
+}
+assert_equal %q{ok}, %q{
+ case
+ when nil, nil
+ :ng1
+ when 1,2,3
+ :ok
+ when false, false
+ :ng2
+ else
+ :elseng
+ end
+}
+assert_equal %q{elseok}, %q{
+ case
+ when nil
+ :ng1
+ when false
+ :ng2
+ else
+ :elseok
+ end}
+assert_equal %q{}, %q{
+ case
+ when 1
+ end
+}
+assert_equal %q{ok}, %q{
+ r = nil
+ ary = []
+ case
+ when false
+ r = :ng1
+ when false, false
+ r = :ng2
+ when *ary
+ r = :ng3
+ when false, *ary
+ r = :ng4
+ when true, *ary
+ r = :ok
+ end
+ r
+}
+assert_equal %q{ok}, %q{
+ ary = []
+ case
+ when false, *ary
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [false, nil]
+ case
+ when *ary
+ :ng
+ else
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [false, nil]
+ case
+ when *ary
+ :ng
+ when true
+ :ok
+ else
+ :ng2
+ end
+}
+assert_equal %q{ng}, %q{
+ ary = [false, nil]
+ case
+ when *ary
+ :ok
+ else
+ :ng
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [false, true]
+ case
+ when *ary
+ :ok
+ else
+ :ng
+ end
+}
+assert_equal %q{ok}, %q{
+ ary = [false, true]
+ case
+ when false, false
+ when false, *ary
+ :ok
+ else
+ :ng
+ end
+}
+assert_equal %q{}, %q{
+ i = 0
+ while i < 10
+ i+=1
+ end}
+assert_equal %q{10}, %q{
+ i = 0
+ while i < 10
+ i+=1
+ end; i}
+assert_equal %q{}, %q{
+ i = 0
+ until i > 10
+ i+=1
+ end}
+assert_equal %q{11}, %q{
+ i = 0
+ until i > 10
+ i+=1
+ end; i}
+assert_equal %q{1}, %q{
+ i = 0
+ begin
+ i+=1
+ end while false
+ i
+}
+assert_equal %q{1}, %q{
+ i = 0
+ begin
+ i+=1
+ end until true
+ i
+}
+def assert_syntax_error expected, code, message = ''
+ assert_equal "#{expected}",
+ "begin eval(%q{#{code}}, nil, '', 0)"'; rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end', message
+end
+assert_syntax_error "unterminated string meets end of file", '().."', '[ruby-dev:29732]'
+assert_equal %q{[]}, %q{$&;[]}, '[ruby-dev:31068]'
+assert_syntax_error "syntax error, unexpected *, expecting '}'", %q{{*0}}, '[ruby-dev:31072]'
+assert_syntax_error "`@0' is not allowed as an instance variable name", %q{@0..0}, '[ruby-dev:31095]'
+assert_syntax_error "identifier $00 is not valid to get", %q{$00..0}, '[ruby-dev:31100]'
+assert_syntax_error "identifier $00 is not valid to set", %q{0..$00=1}
+assert_equal %q{0}, %q{[*0];0}, '[ruby-dev:31102]'
+assert_syntax_error "syntax error, unexpected ')'", %q{v0,(*,v1,) = 0}, '[ruby-dev:31104]'
+assert_equal %q{1}, %q{
+ class << (ary=[]); def []; 0; end; def []=(x); super(0,x);end;end; ary[]+=1
+}, '[ruby-dev:31110]'
+assert_syntax_error "Can't set variable $1", %q{0..$1=1}, '[ruby-dev:31118]'
+assert_valid_syntax %q{1.times{1+(1&&next)}}, '[ruby-dev:31119]'
+assert_valid_syntax %q{x=-1;loop{x+=1&&redo if (x+=1).zero?}}, '[ruby-dev:31119]'
+assert_syntax_error %q{syntax error, unexpected end-of-input}, %q{!}, '[ruby-dev:31243]'
+assert_equal %q{[nil]}, %q{[()]}, '[ruby-dev:31252]'
+assert_equal %q{true}, %q{!_=()}, '[ruby-dev:31263]'
+assert_equal 'ok', %q{while true; redo; end if 1 == 2; :ok}, '[ruby-dev:31360]'
+assert_equal 'ok', %q{
+ 1.times {
+ begin
+ ensure
+ next
+ end
+ }; :ok
+}, '[ruby-dev:31373]'
+assert_equal 'ok', %q{
+ flag = false
+ 1.times {
+ next if flag
+ flag = true
+ begin
+ ensure
+ redo
+ end
+ }; :ok
+}, '[ruby-dev:31373]'
+
+assert_equal 'ok', %q{
+ 1.times{
+ p(1, (next; 2))
+ }; :ok
+}
+assert_equal '3', %q{
+ i = 0
+ 1 + (while true
+ break 2 if (i+=1) > 1
+ next
+ end)
+}
+assert_equal '3', %q{
+ i = 0
+ 1 + (while true
+ break 2 if (i+=1) > 1
+ p(1, (next; 2))
+ end)
+}
+# redo
+assert_equal 'ok', %q{
+ i = 0
+ 1.times{
+ break if i>1
+ i+=1
+ p(1, (redo; 2))
+ }; :ok
+}
+assert_equal '3', %q{
+ i = 0
+ 1 + (while true
+ break 2 if (i+=1) > 1
+ redo
+ end)
+}
+assert_equal '3', %q{
+ i = 0
+ 1 + (while true
+ break 2 if (i+=1) > 1
+ p(1, (redo; 2))
+ end)
+}
+assert_equal '1', %q{
+ a = [0]
+ a[*a]+=1
+}
+assert_equal '2', %q{
+ ary = [0]
+ case 1
+ when *ary, 1
+ 1
+ end +
+ case
+ when *ary
+ 1
+ end
+}
+
+assert_match /invalid multibyte char/, %q{
+ STDERR.reopen(STDOUT)
+ eval("\"\xf0".force_encoding("utf-8"))
+}, '[ruby-dev:32429]'
+
+# method ! and !=
+assert_equal 'true', %q{!false}
+assert_equal 'true', %q{1 == 1}
+assert_equal 'true', %q{1 != 2}
+assert_equal 'true', %q{
+ class C; def !=(obj); true; end; end
+ C.new != 1
+}
+assert_equal 'true', %q{
+ class C; def !@; true; end; end
+ !C.new
+}
+assert_normal_exit %q{
+ eval "while true; return; end rescue p $!"
+}, '[ruby-dev:31663]'
+assert_equal '1', %q{
+ def bar
+ raise
+ end
+
+ def foo
+ 1.times{
+ begin
+ return bar
+ rescue
+ :ok
+ end
+ }
+ end
+
+ foo
+}
+
+assert_equal 'ok', %q{
+ counter = 2
+ while true
+ counter -= 1
+ next if counter != 0
+ break
+ end
+ :ok
+}, '[ruby-core:14385]'
+
+assert_equal 'ok', %q{
+ counter = 2
+ while true
+ counter -= 1
+ next if counter != 0
+ break :ok
+ end # direct
+}, '[ruby-core:14385]'
+
+assert_equal 'ok', %q{
+ counter = 2
+ while true
+ counter -= 1
+ break if counter == 0
+ "#{next}"
+ end
+ :ok
+}, 'reported by Yusuke ENDOH'
+
+assert_equal 'ok', %q{
+ counter = 2
+ while true
+ counter -= 1
+ break if counter == 0
+ next
+ redo
+ end
+ :ok
+}, 'reported by Yusuke ENDOH'
+
+assert_equal 'ok', %q{
+ counter = 2
+ while true
+ counter -= 1
+ break if counter == 0
+ next
+ "#{ redo }"
+ end
+ :ok
+}, 'reported by Yusuke ENDOH'
+
+assert_normal_exit %q{
+ begin
+ raise
+ rescue
+ counter = 2
+ while true
+ counter -= 1
+ break if counter == 0
+ next
+ retry
+ end
+ end
+}, 'reported by Yusuke ENDOH'
+
+assert_normal_exit %q{
+ counter = 2
+ while true
+ counter -= 1
+ break if counter == 0
+ next
+ "#{ break }"
+ end
+}, 'reported by Yusuke ENDOH'
+
+assert_normal_exit %q{
+ counter = 2
+ while true
+ counter -= 1
+ next if counter != 0
+ "#{ break }"
+ end
+}, 'reported by Yusuke ENDOH'
+
+assert_equal 'ok', %q{
+ 1.times do
+ [
+ 1, 2, 3, 4, 5, 6, 7, 8,
+ begin
+ false ? next : p
+ break while true
+ end
+ ]
+ end
+ :ok
+}, '[ruby-dev:32882]'
+
+assert_equal "1\n2\n", %q{
+ i = 0
+ while i<2
+ i += 1
+ next p(i)
+ end
+}
+
+assert_valid_syntax('1.times {|i|print (42),1;}', '[ruby-list:44479]')
+
+assert_equal 'ok', %q{
+ def a() end
+ begin
+ if defined?(a(1).a)
+ :ng
+ else
+ :ok
+ end
+ rescue
+ :ng
+ end
+}, '[ruby-core:16010]'
+
+assert_equal 'ok', %q{
+ def a() end
+ begin
+ if defined?(a::B)
+ :ng
+ else
+ :ok
+ end
+ rescue
+ :ng
+ end
+}, '[ruby-core:16010]'
+
+assert_normal_exit %q{
+ defined? C && 0
+}
+
+assert_normal_exit %q{
+ class C
+ def m
+ defined?(super())
+ end
+ end
+ C.new.m
+}
+
+assert_equal 'ok', %q{
+ class X < RuntimeError;end
+ x = [X]
+ begin
+ raise X
+ rescue *x
+ :ok
+ end
+}, '[ruby-core:14537]'
+
+assert_equal 'ok', %q{
+ a = [false]
+ (a[0] &&= true) == false ? :ok : :ng
+}, '[ruby-dev:34679]'
+
+assert_normal_exit %q{
+ a = []
+ 100.times {|i| a << i << nil << nil }
+ p a.compact!
+}
+
+assert_equal 'ok', %q{
+ "#{}""#{}ok"
+}, '[ruby-dev:38968]'
+
+
+assert_equal 'ok', %q{
+ "o" "#{}k"
+}, '[ruby-dev:38980]'
+
+bug2415 = '[ruby-core:26961]'
+assert_normal_exit %q{
+ 0.times do
+ 0.times do
+ def x(a=1, b, *rest); nil end
+ end
+ end
+}, bug2415
+
+assert_normal_exit %q{
+ 0.times do
+ 0.times do
+ def x@; nil end
+ end
+ end
+}, bug2415
+
+assert_normal_exit %q{
+ 0.times do
+ 0.times do
+ def x(a = 0.times do
+ def y(a=1, b, *rest); nil; end
+ end)
+ nil
+ end
+ end
+ end
+}, bug2415
+
+assert_normal_exit %q{
+ 0.times do
+ 0.times do
+ def x(a = 0.times do
+ def x@; nil; end
+ end)
+ nil
+ end
+ end
+ end
+}, bug2415
+
+assert_normal_exit %q{
+ a {
+ b {|c.d| }
+ e
+ }
+}, '[ruby-dev:39861]'
+
+bug1240 = '[ruby-core:22637]'
+assert_valid_syntax('x y { "#{}".z { } }', bug1240)
+assert_valid_syntax('x y { "#{}".z do end }', bug1240)
+
+assert_valid_syntax('y "#{a 1}" do end', '[ruby-core:29579]')
+assert_normal_exit %q{
+ def foo(&block)
+ yield
+ end
+
+ foo do
+ s = defined?(raise + 1)
+ Class
+ end
+}, '[ruby-core:30293]'
diff --git a/bootstraptest/test_thread.rb b/bootstraptest/test_thread.rb
new file mode 100644
index 0000000000..c2b2b8ce9b
--- /dev/null
+++ b/bootstraptest/test_thread.rb
@@ -0,0 +1,464 @@
+# Thread and Fiber
+
+assert_equal %q{ok}, %q{
+ Thread.new{
+ }.join
+ :ok
+}
+assert_equal %q{ok}, %q{
+ Thread.new{
+ :ok
+ }.value
+}
+assert_equal %q{ok}, %q{
+begin
+ v = 0
+ (1..200).map{|i|
+ Thread.new{
+ i
+ }
+ }.each{|t|
+ v += t.value
+ }
+ v == 20100 ? :ok : v
+rescue ThreadError => e
+ :ok if e.message =~ "can't create Thread"
+end
+}
+assert_equal %q{5000}, %q{
+ 5000.times{|e|
+ (1..2).map{
+ Thread.new{
+ }
+ }.each{|e|
+ e.join()
+ }
+ }
+}
+assert_equal %q{5000}, %q{
+ 5000.times{|e|
+ (1..2).map{
+ Thread.new{
+ }
+ }.each{|e|
+ e.join(1000000000)
+ }
+ }
+}
+assert_equal %q{ok}, %q{
+begin
+ :ok if 5000 == 5000.times{
+ t = Thread.new{}
+ while t.alive?
+ Thread.pass
+ end
+ }
+rescue NoMemoryError
+ :ok
+end
+}
+assert_equal %q{100}, %q{
+ 100.times{
+ Thread.new{loop{Thread.pass}}
+ }
+}
+assert_equal %q{ok}, %q{
+ Thread.new{
+ :ok
+ }.join.value
+}
+assert_equal %q{ok}, %q{
+ begin
+ Thread.new{
+ raise "ok"
+ }.join
+ rescue => e
+ e
+ end
+}
+assert_equal %q{ok}, %q{
+ ans = nil
+ t = Thread.new{
+ begin
+ sleep 0.5
+ ensure
+ ans = :ok
+ end
+ }
+ Thread.pass
+ t.kill
+ t.join
+ ans
+}
+assert_equal %q{ok}, %q{
+ t = Thread.new{
+ sleep
+ }
+ sleep 0.1
+ t.raise
+ begin
+ t.join
+ :ng
+ rescue
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ t = Thread.new{
+ loop{}
+ }
+ Thread.pass
+ t.raise
+ begin
+ t.join
+ :ng
+ rescue
+ :ok
+ end
+}
+assert_equal %q{ok}, %q{
+ t = Thread.new{
+ }
+ Thread.pass
+ t.join
+ t.raise # raise to exited thread
+ begin
+ t.join
+ :ok
+ rescue
+ :ng
+ end
+}
+assert_equal %q{run}, %q{
+ t = Thread.new{
+ loop{}
+ }
+ st = t.status
+ t.kill
+ st
+}
+assert_equal %q{sleep}, %q{
+ t = Thread.new{
+ sleep
+ }
+ sleep 0.1
+ st = t.status
+ t.kill
+ st
+}
+assert_equal %q{false}, %q{
+ t = Thread.new{
+ }
+ t.kill
+ sleep 0.1
+ t.status
+}
+assert_equal %q{[ThreadGroup, true]}, %q{
+ ptg = Thread.current.group
+ Thread.new{
+ ctg = Thread.current.group
+ [ctg.class, ctg == ptg]
+ }.value
+}
+assert_equal %q{[1, 1]}, %q{
+ thg = ThreadGroup.new
+
+ t = Thread.new{
+ thg.add Thread.current
+ sleep
+ }
+ sleep 0.1
+ [thg.list.size, ThreadGroup::Default.list.size]
+}
+assert_equal %q{true}, %q{
+ thg = ThreadGroup.new
+
+ t = Thread.new{sleep 5}
+ thg.add t
+ thg.list.include?(t)
+}
+assert_equal %q{[true, nil, true]}, %q{
+ /a/ =~ 'a'
+ $a = $~
+ Thread.new{
+ $b = $~
+ /b/ =~ 'b'
+ $c = $~
+ }.join
+ $d = $~
+ [$a == $d, $b, $c != $d]
+}
+assert_equal %q{11}, %q{
+ Thread.current[:a] = 1
+ Thread.new{
+ Thread.current[:a] = 10
+ Thread.pass
+ Thread.current[:a]
+ }.value + Thread.current[:a]
+}
+assert_normal_exit %q{
+ begin
+ 100.times do |i|
+ begin
+ th = Thread.start(Thread.current) {|u| u.raise }
+ raise
+ rescue
+ ensure
+ th.join
+ end
+ end
+ rescue
+ end
+}, '[ruby-dev:31371]'
+
+assert_equal 'true', %{
+ t = Thread.new { loop {} }
+ begin
+ pid = fork {
+ exit t.status != "run"
+ }
+ Process.wait pid
+ $?.success?
+ rescue NotImplementedError
+ true
+ end
+}
+
+assert_equal 'ok', %{
+ open("zzz.rb", "w") do |f|
+ f.puts <<-END
+ begin
+ Thread.new { fork { GC.start } }.join
+ pid, status = Process.wait2
+ $result = status.success? ? :ok : :ng
+ rescue NotImplementedError
+ $result = :ok
+ end
+ END
+ end
+ require "./zzz.rb"
+ $result
+}
+
+assert_finish 3, %{
+ th = Thread.new {sleep 2}
+ th.join(1)
+ th.join
+}
+
+assert_finish 3, %{
+ require 'timeout'
+ th = Thread.new {sleep 2}
+ begin
+ Timeout.timeout(1) {th.join}
+ rescue Timeout::Error
+ end
+ th.join
+}
+
+assert_normal_exit %q{
+ STDERR.reopen(STDOUT)
+ exec "/"
+}
+
+assert_normal_exit %q{
+ (0..10).map {
+ Thread.new {
+ 10000.times {
+ Object.new.to_s
+ }
+ }
+ }.each {|t|
+ t.join
+ }
+}
+
+assert_equal 'ok', %q{
+ def m
+ t = Thread.new { while true; // =~ "" end }
+ sleep 0.1
+ 10.times {
+ if /((ab)*(ab)*)*(b)/ =~ "ab"*7
+ return :ng if !$4
+ return :ng if $~.size != 5
+ end
+ }
+ :ok
+ ensure
+ Thread.kill t
+ end
+ m
+}, '[ruby-dev:34492]'
+
+assert_normal_exit %q{
+ at_exit { Fiber.new{}.resume }
+}
+
+assert_normal_exit %q{
+ g = enum_for(:local_variables)
+ loop { g.next }
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ g = enum_for(:block_given?)
+ loop { g.next }
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ g = enum_for(:binding)
+ loop { g.next }
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ g = "abc".enum_for(:scan, /./)
+ loop { g.next }
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ g = Module.enum_for(:new)
+ loop { g.next }
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ Fiber.new(&Object.method(:class_eval)).resume("foo")
+}, '[ruby-dev:34128]'
+
+assert_normal_exit %q{
+ Thread.new("foo", &Object.method(:class_eval)).join
+}, '[ruby-dev:34128]'
+
+assert_equal 'ok', %q{
+ begin
+ Thread.new { Thread.stop }
+ Thread.stop
+ :ng
+ rescue Exception
+ :ok
+ end
+}
+
+assert_equal 'ok', %q{
+ begin
+ m1, m2 = Mutex.new, Mutex.new
+ Thread.new { m1.lock; sleep 1; m2.lock }
+ m2.lock; sleep 1; m1.lock
+ :ng
+ rescue Exception
+ :ok
+ end
+}
+
+assert_equal 'ok', %q{
+ m = Mutex.new
+ Thread.new { m.lock }; sleep 1; m.lock
+ :ok
+}
+
+assert_equal 'ok', %q{
+ m = Mutex.new
+ Thread.new { m.lock }; m.lock
+ :ok
+}
+
+assert_equal 'ok', %q{
+ m = Mutex.new
+ Thread.new { m.lock }.join; m.lock
+ :ok
+}
+
+assert_equal 'ok', %q{
+ m = Mutex.new
+ Thread.new { m.lock; sleep 2 }
+ sleep 1; m.lock
+ :ok
+}
+
+assert_equal 'ok', %q{
+ m = Mutex.new
+ Thread.new { m.lock; sleep 2; m.unlock }
+ sleep 1; m.lock
+ :ok
+}
+
+assert_equal 'ok', %q{
+ t = Thread.new {`echo`}
+ t.join
+ $? ? :ng : :ok
+}, '[ruby-dev:35414]'
+
+assert_equal 'ok', %q{
+ begin
+ 100.times{
+ (1..100).map{ Thread.new(true) {|x| x == false } }.each{|th| th.join}
+ }
+ rescue NoMemoryError, StandardError
+ end
+ :ok
+}
+
+assert_equal 'ok', %{
+ open("zzz.rb", "w") do |f|
+ f.puts <<-END
+ begin
+ m = Mutex.new
+ Thread.new { m.lock; sleep 1 }
+ sleep 0.3
+ parent = Thread.current
+ Thread.new do
+ sleep 0.3
+ begin
+ fork { GC.start }
+ rescue Exception
+ parent.raise $!
+ end
+ end
+ m.lock
+ pid, status = Process.wait2
+ $result = status.success? ? :ok : :ng
+ rescue NotImplementedError
+ $result = :ok
+ end
+ END
+ end
+ require "./zzz.rb"
+ $result
+}
+
+assert_finish 3, %q{
+ require 'thread'
+
+ lock = Mutex.new
+ cond = ConditionVariable.new
+ t = Thread.new do
+ lock.synchronize do
+ cond.wait(lock)
+ end
+ end
+
+ begin
+ pid = fork do
+ # Child
+ STDOUT.write "This is the child process.\n"
+ STDOUT.write "Child process exiting.\n"
+ end
+ Process.waitpid(pid)
+ rescue NotImplementedError
+ end
+}, '[ruby-core:23572]'
+
+assert_equal 'ok', %q{
+ begin
+ Process.waitpid2(fork {sleep 1})[1].success? ? 'ok' : 'ng'
+ rescue NotImplementedError
+ 'ok'
+ end
+}
+
+assert_equal 'foo', %q{
+ f = proc {|s| /#{ sleep 1; s }/o }
+ [ Thread.new { f.call("foo"); nil },
+ Thread.new { sleep 0.5; f.call("bar"); nil },
+ ].each {|t| t.join }
+ GC.start
+ f.call.source
+}
diff --git a/class.c b/class.c
index 6cb55fa240..8d237985b8 100644
--- a/class.c
+++ b/class.c
@@ -1,427 +1,1856 @@
-/************************************************
+/**********************************************************************
class.c -
- $Author: matz $
- $Date: 1996/12/25 08:54:44 $
+ $Author$
created at: Tue Aug 10 15:05:44 JST 1993
- Copyright (C) 1993-1995 Yukihiro Matsumoto
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
+
+**********************************************************************/
+
+/*!
+ * \defgroup class Classes and their hierarchy.
+ * \par Terminology
+ * - class: same as in Ruby.
+ * - singleton class: class for a particular object
+ * - eigenclass: = singleton class
+ * - metaclass: class of a class. metaclass is a kind of singleton class.
+ * - metametaclass: class of a metaclass.
+ * - meta^(n)-class: class of a meta^(n-1)-class.
+ * - attached object: A singleton class knows its unique instance.
+ * The instance is called the attached object for the singleton class.
+ * \{
+ */
+
+#include "ruby/ruby.h"
+#include "ruby/st.h"
+#include "method.h"
+#include "constant.h"
+#include "vm_core.h"
+#include "internal.h"
+#include <ctype.h>
+
+int rb_vm_add_root_module(ID id, VALUE module);
+
+
+#define id_attached id__attached__
+
+void
+rb_class_subclass_add(VALUE super, VALUE klass)
+{
+ rb_subclass_entry_t *entry, *head;
+
+ if (super && super != Qundef) {
+ entry = malloc(sizeof(*entry));
+ entry->klass = klass;
+ entry->next = NULL;
+
+ head = RCLASS_EXT(super)->subclasses;
+ if (head) {
+ entry->next = head;
+ RCLASS_EXT(head->klass)->parent_subclasses = &entry->next;
+ }
+
+ RCLASS_EXT(super)->subclasses = entry;
+ RCLASS_EXT(klass)->parent_subclasses = &RCLASS_EXT(super)->subclasses;
+ }
+}
+
+static void
+rb_module_add_to_subclasses_list(VALUE module, VALUE iclass)
+{
+ rb_subclass_entry_t *entry, *head;
+
+ entry = malloc(sizeof(*entry));
+ entry->klass = iclass;
+ entry->next = NULL;
+
+ head = RCLASS_EXT(module)->subclasses;
+ if (head) {
+ entry->next = head;
+ RCLASS_EXT(head->klass)->module_subclasses = &entry->next;
+ }
+
+ RCLASS_EXT(module)->subclasses = entry;
+ RCLASS_EXT(iclass)->module_subclasses = &RCLASS_EXT(module)->subclasses;
+}
+
+void
+rb_class_remove_from_super_subclasses(VALUE klass)
+{
+ rb_subclass_entry_t *entry;
+
+ if (RCLASS_EXT(klass)->parent_subclasses) {
+ entry = *RCLASS_EXT(klass)->parent_subclasses;
+
+ *RCLASS_EXT(klass)->parent_subclasses = entry->next;
+ if (entry->next) {
+ RCLASS_EXT(entry->next->klass)->parent_subclasses = RCLASS_EXT(klass)->parent_subclasses;
+ }
+ free(entry);
+ }
+
+ RCLASS_EXT(klass)->parent_subclasses = NULL;
+}
-************************************************/
+void
+rb_class_remove_from_module_subclasses(VALUE klass)
+{
+ rb_subclass_entry_t *entry;
+
+ if (RCLASS_EXT(klass)->module_subclasses) {
+ entry = *RCLASS_EXT(klass)->module_subclasses;
+ *RCLASS_EXT(klass)->module_subclasses = entry->next;
+
+ if (entry->next) {
+ RCLASS_EXT(entry->next->klass)->module_subclasses = RCLASS_EXT(klass)->module_subclasses;
+ }
-#include "ruby.h"
-#include "node.h"
-#include "st.h"
+ free(entry);
+ }
-struct st_table *new_idhash();
-extern st_table *rb_class_tbl;
+ RCLASS_EXT(klass)->module_subclasses = NULL;
+}
-extern VALUE cClass;
-extern VALUE cModule;
+void
+rb_class_foreach_subclass(VALUE klass, void(*f)(VALUE))
+{
+ rb_subclass_entry_t *cur = RCLASS_EXT(klass)->subclasses;
+
+ /* do not be tempted to simplify this loop into a for loop, the order of
+ operations is important here if `f` modifies the linked list */
+ while (cur) {
+ VALUE curklass = cur->klass;
+ cur = cur->next;
+ f(curklass);
+ }
+}
+
+void
+rb_class_detach_subclasses(VALUE klass)
+{
+ rb_class_foreach_subclass(klass, rb_class_remove_from_super_subclasses);
+}
+void
+rb_class_detach_module_subclasses(VALUE klass)
+{
+ rb_class_foreach_subclass(klass, rb_class_remove_from_module_subclasses);
+}
+
+/**
+ * Allocates a struct RClass for a new class.
+ *
+ * \param flags initial value for basic.flags of the returned class.
+ * \param klass the class of the returned class.
+ * \return an uninitialized Class object.
+ * \pre \p klass must refer \c Class class or an ancestor of Class.
+ * \pre \code (flags | T_CLASS) != 0 \endcode
+ * \post the returned class can safely be \c #initialize 'd.
+ *
+ * \note this function is not Class#allocate.
+ */
+static VALUE
+class_alloc(VALUE flags, VALUE klass)
+{
+ NEWOBJ_OF(obj, struct RClass, klass, (flags & T_MASK) | (RGENGC_WB_PROTECTED_CLASS ? FL_WB_PROTECTED : 0));
+ obj->ptr = ALLOC(rb_classext_t);
+ RCLASS_IV_TBL(obj) = 0;
+ RCLASS_CONST_TBL(obj) = 0;
+ RCLASS_M_TBL(obj) = 0;
+ RCLASS_SET_SUPER((VALUE)obj, 0);
+ RCLASS_ORIGIN(obj) = (VALUE)obj;
+ RCLASS_IV_INDEX_TBL(obj) = 0;
+
+ RCLASS_EXT(obj)->subclasses = NULL;
+ RCLASS_EXT(obj)->parent_subclasses = NULL;
+ RCLASS_EXT(obj)->module_subclasses = NULL;
+ RCLASS_EXT(obj)->class_serial = rb_next_class_serial();
+
+ RCLASS_REFINED_CLASS(obj) = Qnil;
+ RCLASS_EXT(obj)->allocator = 0;
+ return (VALUE)obj;
+}
+
+
+/*!
+ * A utility function that wraps class_alloc.
+ *
+ * allocates a class and initializes safely.
+ * \param super a class from which the new class derives.
+ * \return a class object.
+ * \pre \a super must be a class.
+ * \post the metaclass of the new class is Class.
+ */
VALUE
-class_new(super)
- struct RClass *super;
+rb_class_boot(VALUE super)
{
- NEWOBJ(cls, struct RClass);
- OBJSETUP(cls, cClass, T_CLASS);
+ VALUE klass = class_alloc(T_CLASS, rb_cClass);
- cls->super = super;
- cls->iv_tbl = 0;
- cls->m_tbl = 0; /* safe GC */
- cls->m_tbl = new_idhash();
+ RCLASS_SET_SUPER(klass, super);
+ RCLASS_M_TBL(klass) = st_init_numtable();
- return (VALUE)cls;
+ OBJ_INFECT(klass, super);
+ return (VALUE)klass;
}
+
+/*!
+ * Ensures a class can be derived from super.
+ *
+ * \param super a reference to an object.
+ * \exception TypeError if \a super is not a Class or \a super is a singleton class.
+ */
+void
+rb_check_inheritable(VALUE super)
+{
+ if (!RB_TYPE_P(super, T_CLASS)) {
+ rb_raise(rb_eTypeError, "superclass must be a Class (%s given)",
+ rb_obj_classname(super));
+ }
+ if (RBASIC(super)->flags & FL_SINGLETON) {
+ rb_raise(rb_eTypeError, "can't make subclass of singleton class");
+ }
+ if (super == rb_cClass) {
+ rb_raise(rb_eTypeError, "can't make subclass of Class");
+ }
+}
+
+
+/*!
+ * Creates a new class.
+ * \param super a class from which the new class derives.
+ * \exception TypeError \a super is not inheritable.
+ * \exception TypeError \a super is the Class class.
+ */
VALUE
-singleton_class_new(super)
- struct RClass *super;
+rb_class_new(VALUE super)
{
- struct RClass *cls = (struct RClass*)class_new(super);
+ Check_Type(super, T_CLASS);
+ rb_check_inheritable(super);
+ return rb_class_boot(super);
+}
- FL_SET(cls, FL_SINGLETON);
+static void
+rewrite_cref_stack(NODE *node, VALUE old_klass, VALUE new_klass, NODE **new_cref_ptr)
+{
+ NODE *new_node;
+ while (node) {
+ if (node->nd_clss == old_klass) {
+ new_node = NEW_CREF(new_klass);
+ new_node->nd_next = node->nd_next;
+ *new_cref_ptr = new_node;
+ return;
+ }
+ new_node = NEW_CREF(node->nd_clss);
+ node = node->nd_next;
+ *new_cref_ptr = new_node;
+ new_cref_ptr = &new_node->nd_next;
+ }
+ *new_cref_ptr = NULL;
+}
- return (VALUE)cls;
+static void
+clone_method(VALUE klass, ID mid, const rb_method_entry_t *me)
+{
+ VALUE newiseqval;
+ if (me->def && me->def->type == VM_METHOD_TYPE_ISEQ) {
+ rb_iseq_t *iseq;
+ NODE *new_cref;
+ newiseqval = rb_iseq_clone(me->def->body.iseq->self, klass);
+ GetISeqPtr(newiseqval, iseq);
+ rewrite_cref_stack(me->def->body.iseq->cref_stack, me->klass, klass, &new_cref);
+ OBJ_WRITE(iseq->self, &iseq->cref_stack, new_cref);
+ rb_add_method(klass, mid, VM_METHOD_TYPE_ISEQ, iseq, me->flag);
+ RB_GC_GUARD(newiseqval);
+ }
+ else {
+ rb_method_entry_set(klass, mid, me, me->flag);
+ }
}
static int
-clone_method(mid, body, tbl)
- ID mid;
- NODE *body;
+clone_method_i(st_data_t key, st_data_t value, st_data_t data)
+{
+ clone_method((VALUE)data, (ID)key, (const rb_method_entry_t *)value);
+ return ST_CONTINUE;
+}
+
+struct clone_const_arg {
+ VALUE klass;
st_table *tbl;
+};
+
+static int
+clone_const(ID key, const rb_const_entry_t *ce, struct clone_const_arg *arg)
{
- st_insert(tbl, mid, NEW_METHOD(body->nd_body, body->nd_noex));
+ rb_const_entry_t *nce = ALLOC(rb_const_entry_t);
+ MEMCPY(nce, ce, rb_const_entry_t, 1);
+ OBJ_WRITTEN(arg->klass, Qundef, ce->value);
+ OBJ_WRITTEN(arg->klass, Qundef, ce->file);
+
+ st_insert(arg->tbl, key, (st_data_t)nce);
return ST_CONTINUE;
}
+static int
+clone_const_i(st_data_t key, st_data_t value, st_data_t data)
+{
+ return clone_const((ID)key, (const rb_const_entry_t *)value, (struct clone_const_arg *)data);
+}
+
+static void
+class_init_copy_check(VALUE clone, VALUE orig)
+{
+ if (orig == rb_cBasicObject) {
+ rb_raise(rb_eTypeError, "can't copy the root class");
+ }
+ if (RCLASS_SUPER(clone) != 0 || clone == rb_cBasicObject) {
+ rb_raise(rb_eTypeError, "already initialized class");
+ }
+ if (FL_TEST(orig, FL_SINGLETON)) {
+ rb_raise(rb_eTypeError, "can't copy singleton class");
+ }
+}
+
+/* :nodoc: */
VALUE
-singleton_class_clone(class)
- struct RClass *class;
+rb_mod_init_copy(VALUE clone, VALUE orig)
{
- if (!FL_TEST(class, FL_SINGLETON))
- return (VALUE)class;
+ if (RB_TYPE_P(clone, T_CLASS)) {
+ class_init_copy_check(clone, orig);
+ }
+ rb_obj_init_copy(clone, orig);
+ if (!FL_TEST(CLASS_OF(clone), FL_SINGLETON)) {
+ RBASIC_SET_CLASS(clone, rb_singleton_class_clone(orig));
+ rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);
+ }
+ RCLASS_SET_SUPER(clone, RCLASS_SUPER(orig));
+ RCLASS_EXT(clone)->allocator = RCLASS_EXT(orig)->allocator;
+ if (RCLASS_IV_TBL(orig)) {
+ st_data_t id;
+
+ if (RCLASS_IV_TBL(clone)) {
+ st_free_table(RCLASS_IV_TBL(clone));
+ }
+ RCLASS_IV_TBL(clone) = rb_st_copy(clone, RCLASS_IV_TBL(orig));
+ CONST_ID(id, "__tmp_classpath__");
+ st_delete(RCLASS_IV_TBL(clone), &id, 0);
+ CONST_ID(id, "__classpath__");
+ st_delete(RCLASS_IV_TBL(clone), &id, 0);
+ CONST_ID(id, "__classid__");
+ st_delete(RCLASS_IV_TBL(clone), &id, 0);
+ }
+ if (RCLASS_CONST_TBL(orig)) {
+ struct clone_const_arg arg;
+ if (RCLASS_CONST_TBL(clone)) {
+ rb_free_const_table(RCLASS_CONST_TBL(clone));
+ }
+ RCLASS_CONST_TBL(clone) = st_init_numtable();
+ arg.klass = clone;
+ arg.tbl = RCLASS_CONST_TBL(clone);
+ st_foreach(RCLASS_CONST_TBL(orig), clone_const_i, (st_data_t)&arg);
+ }
+ if (RCLASS_M_TBL(orig)) {
+ if (RCLASS_M_TBL(clone)) {
+ rb_free_m_table(RCLASS_M_TBL(clone));
+ }
+ RCLASS_M_TBL(clone) = st_init_numtable();
+ st_foreach(RCLASS_M_TBL(orig), clone_method_i, (st_data_t)clone);
+ }
+
+ return clone;
+}
+
+VALUE
+rb_singleton_class_clone(VALUE obj)
+{
+ return rb_singleton_class_clone_and_attach(obj, Qundef);
+}
+
+VALUE
+rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)
+{
+ VALUE klass = RBASIC(obj)->klass;
+
+ if (!FL_TEST(klass, FL_SINGLETON))
+ return klass;
else {
/* copy singleton(unnamed) class */
- NEWOBJ(clone, struct RClass);
- CLONESETUP(clone, class);
-
- clone->super = class->super;
- clone->iv_tbl = 0;
- clone->m_tbl = 0;
- clone->m_tbl = new_idhash();
- st_foreach(class->m_tbl, clone_method, clone->m_tbl);
+ VALUE clone = class_alloc(RBASIC(klass)->flags, 0);
+
+ if (BUILTIN_TYPE(obj) == T_CLASS) {
+ RBASIC_SET_CLASS(clone, clone);
+ }
+ else {
+ RBASIC_SET_CLASS(clone, rb_singleton_class_clone(klass));
+ }
+
+ RCLASS_SET_SUPER(clone, RCLASS_SUPER(klass));
+ RCLASS_EXT(clone)->allocator = RCLASS_EXT(klass)->allocator;
+ if (RCLASS_IV_TBL(klass)) {
+ RCLASS_IV_TBL(clone) = rb_st_copy(clone, RCLASS_IV_TBL(klass));
+ }
+ if (RCLASS_CONST_TBL(klass)) {
+ struct clone_const_arg arg;
+ RCLASS_CONST_TBL(clone) = st_init_numtable();
+ arg.klass = clone;
+ arg.tbl = RCLASS_CONST_TBL(clone);
+ st_foreach(RCLASS_CONST_TBL(klass), clone_const_i, (st_data_t)&arg);
+ }
+ if (attach != Qundef) {
+ rb_singleton_class_attached(clone, attach);
+ }
+ RCLASS_M_TBL(clone) = st_init_numtable();
+ st_foreach(RCLASS_M_TBL(klass), clone_method_i, (st_data_t)clone);
+ rb_singleton_class_attached(RBASIC(clone)->klass, clone);
FL_SET(clone, FL_SINGLETON);
- return (VALUE)clone;
+
+ return clone;
}
}
+/*!
+ * Attach a object to a singleton class.
+ * @pre \a klass is the singleton class of \a obj.
+ */
+void
+rb_singleton_class_attached(VALUE klass, VALUE obj)
+{
+ if (FL_TEST(klass, FL_SINGLETON)) {
+ if (!RCLASS_IV_TBL(klass)) {
+ RCLASS_IV_TBL(klass) = st_init_numtable();
+ }
+ rb_st_insert_id_and_value(klass, RCLASS_IV_TBL(klass), id_attached, obj);
+ }
+}
+
+
+
+#define METACLASS_OF(k) RBASIC(k)->klass
+#define SET_METACLASS_OF(k, cls) RBASIC_SET_CLASS(k, cls)
+
+/*!
+ * whether k is a meta^(n)-class of Class class
+ * @retval 1 if \a k is a meta^(n)-class of Class class (n >= 0)
+ * @retval 0 otherwise
+ */
+#define META_CLASS_OF_CLASS_CLASS_P(k) (METACLASS_OF(k) == (k))
+
+/*!
+ * whether k has a metaclass
+ * @retval 1 if \a k has a metaclass
+ * @retval 0 otherwise
+ */
+#define HAVE_METACLASS_P(k) \
+ (FL_TEST(METACLASS_OF(k), FL_SINGLETON) && \
+ rb_ivar_get(METACLASS_OF(k), id_attached) == (k))
+
+/*!
+ * ensures \a klass belongs to its own eigenclass.
+ * @return the eigenclass of \a klass
+ * @post \a klass belongs to the returned eigenclass.
+ * i.e. the attached object of the eigenclass is \a klass.
+ * @note this macro creates a new eigenclass if necessary.
+ */
+#define ENSURE_EIGENCLASS(klass) \
+ (HAVE_METACLASS_P(klass) ? METACLASS_OF(klass) : make_metaclass(klass))
+
+
+/*!
+ * Creates a metaclass of \a klass
+ * \param klass a class
+ * \return created metaclass for the class
+ * \pre \a klass is a Class object
+ * \pre \a klass has no singleton class.
+ * \post the class of \a klass is the returned class.
+ * \post the returned class is meta^(n+1)-class when \a klass is a meta^(n)-klass for n >= 0
+ */
+static inline VALUE
+make_metaclass(VALUE klass)
+{
+ VALUE super;
+ VALUE metaclass = rb_class_boot(Qundef);
+
+ FL_SET(metaclass, FL_SINGLETON);
+ rb_singleton_class_attached(metaclass, klass);
+
+ if (META_CLASS_OF_CLASS_CLASS_P(klass)) {
+ SET_METACLASS_OF(klass, metaclass);
+ SET_METACLASS_OF(metaclass, metaclass);
+ }
+ else {
+ VALUE tmp = METACLASS_OF(klass); /* for a meta^(n)-class klass, tmp is meta^(n)-class of Class class */
+ SET_METACLASS_OF(klass, metaclass);
+ SET_METACLASS_OF(metaclass, ENSURE_EIGENCLASS(tmp));
+ }
+
+ super = RCLASS_SUPER(klass);
+ while (RB_TYPE_P(super, T_ICLASS)) super = RCLASS_SUPER(super);
+ RCLASS_SET_SUPER(metaclass, super ? ENSURE_EIGENCLASS(super) : rb_cClass);
+
+ OBJ_INFECT(metaclass, RCLASS_SUPER(metaclass));
+
+ return metaclass;
+}
+
+/*!
+ * Creates a singleton class for \a obj.
+ * \pre \a obj must not a immediate nor a special const.
+ * \pre \a obj must not a Class object.
+ * \pre \a obj has no singleton class.
+ */
+static inline VALUE
+make_singleton_class(VALUE obj)
+{
+ VALUE orig_class = RBASIC(obj)->klass;
+ VALUE klass = rb_class_boot(orig_class);
+
+ FL_SET(klass, FL_SINGLETON);
+ RBASIC_SET_CLASS(obj, klass);
+ rb_singleton_class_attached(klass, obj);
+
+ SET_METACLASS_OF(klass, METACLASS_OF(rb_class_real(orig_class)));
+ return klass;
+}
+
+
+static VALUE
+boot_defclass(const char *name, VALUE super)
+{
+ VALUE obj = rb_class_boot(super);
+ ID id = rb_intern(name);
+
+ rb_name_class(obj, id);
+ rb_const_set((rb_cObject ? rb_cObject : obj), id, obj);
+ return obj;
+}
+
+void
+Init_class_hierarchy(void)
+{
+ rb_cBasicObject = boot_defclass("BasicObject", 0);
+ rb_cObject = boot_defclass("Object", rb_cBasicObject);
+ rb_cModule = boot_defclass("Module", rb_cObject);
+ rb_cClass = boot_defclass("Class", rb_cModule);
+
+ rb_const_set(rb_cObject, rb_intern("BasicObject"), rb_cBasicObject);
+ RBASIC_SET_CLASS(rb_cClass, rb_cClass);
+ RBASIC_SET_CLASS(rb_cModule, rb_cClass);
+ RBASIC_SET_CLASS(rb_cObject, rb_cClass);
+ RBASIC_SET_CLASS(rb_cBasicObject, rb_cClass);
+}
+
+
+/*!
+ * \internal
+ * Creates a new *singleton class* for an object.
+ *
+ * \pre \a obj has no singleton class.
+ * \note DO NOT USE the function in an extension libraries. Use \ref rb_singleton_class.
+ * \param obj An object.
+ * \param unused ignored.
+ * \return The singleton class of the object.
+ */
VALUE
-rb_define_class_id(id, super)
- ID id;
- struct RBasic *super;
+rb_make_metaclass(VALUE obj, VALUE unused)
+{
+ if (BUILTIN_TYPE(obj) == T_CLASS) {
+ return make_metaclass(obj);
+ }
+ else {
+ return make_singleton_class(obj);
+ }
+}
+
+
+/*!
+ * Defines a new class.
+ * \param id ignored
+ * \param super A class from which the new class will derive. NULL means \c Object class.
+ * \return the created class
+ * \throw TypeError if super is not a \c Class object.
+ *
+ * \note the returned class will not be associated with \a id.
+ * You must explicitly set a class name if necessary.
+ */
+VALUE
+rb_define_class_id(ID id, VALUE super)
{
- struct RClass *cls;
+ VALUE klass;
- if (!super) super = (struct RBasic*)cClass;
- cls = (struct RClass*)class_new(super);
- rb_name_class(cls, id);
- /* make metaclass */
- RBASIC(cls)->class = singleton_class_new(super->class);
+ if (!super) super = rb_cObject;
+ klass = rb_class_new(super);
+ rb_make_metaclass(klass, RBASIC(super)->klass);
- return (VALUE)cls;
+ return klass;
}
+
+/*!
+ * Calls Class#inherited.
+ * \param super A class which will be called #inherited.
+ * NULL means Object class.
+ * \param klass A Class object which derived from \a super
+ * \return the value \c Class#inherited's returns
+ * \pre Each of \a super and \a klass must be a \c Class object.
+ */
VALUE
-rb_define_class(name, super)
- char *name;
- VALUE super;
+rb_class_inherited(VALUE super, VALUE klass)
+{
+ ID inherited;
+ if (!super) super = rb_cObject;
+ CONST_ID(inherited, "inherited");
+ return rb_funcall(super, inherited, 1, klass);
+}
+
+
+
+/*!
+ * Defines a top-level class.
+ * \param name name of the class
+ * \param super a class from which the new class will derive.
+ * NULL means \c Object class.
+ * \return the created class
+ * \throw TypeError if the constant name \a name is already taken but
+ * the constant is not a \c Class.
+ * \throw NameError if the class is already defined but the class can not
+ * be reopened because its superclass is not \a super.
+ * \post top-level constant named \a name refers the returned class.
+ *
+ * \note if a class named \a name is already defined and its superclass is
+ * \a super, the function just returns the defined class.
+ */
+VALUE
+rb_define_class(const char *name, VALUE super)
{
- VALUE class;
+ VALUE klass;
ID id;
id = rb_intern(name);
- class = rb_define_class_id(id, super);
- st_add_direct(rb_class_tbl, id, class);
+ if (rb_const_defined(rb_cObject, id)) {
+ klass = rb_const_get(rb_cObject, id);
+ if (!RB_TYPE_P(klass, T_CLASS)) {
+ rb_raise(rb_eTypeError, "%s is not a class", name);
+ }
+ if (rb_class_real(RCLASS_SUPER(klass)) != super) {
+ rb_raise(rb_eTypeError, "superclass mismatch for class %s", name);
+ }
+ return klass;
+ }
+ if (!super) {
+ rb_warn("no super class for `%s', Object assumed", name);
+ }
+ klass = rb_define_class_id(id, super);
+ rb_vm_add_root_module(id, klass);
+ rb_name_class(klass, id);
+ rb_const_set(rb_cObject, id, klass);
+ rb_class_inherited(super, klass);
+
+ return klass;
+}
+
- return class;
+/*!
+ * Defines a class under the namespace of \a outer.
+ * \param outer a class which contains the new class.
+ * \param name name of the new class
+ * \param super a class from which the new class will derive.
+ * NULL means \c Object class.
+ * \return the created class
+ * \throw TypeError if the constant name \a name is already taken but
+ * the constant is not a \c Class.
+ * \throw NameError if the class is already defined but the class can not
+ * be reopened because its superclass is not \a super.
+ * \post top-level constant named \a name refers the returned class.
+ *
+ * \note if a class named \a name is already defined and its superclass is
+ * \a super, the function just returns the defined class.
+ */
+VALUE
+rb_define_class_under(VALUE outer, const char *name, VALUE super)
+{
+ return rb_define_class_id_under(outer, rb_intern(name), super);
}
+
+/*!
+ * Defines a class under the namespace of \a outer.
+ * \param outer a class which contains the new class.
+ * \param id name of the new class
+ * \param super a class from which the new class will derive.
+ * NULL means \c Object class.
+ * \return the created class
+ * \throw TypeError if the constant name \a name is already taken but
+ * the constant is not a \c Class.
+ * \throw NameError if the class is already defined but the class can not
+ * be reopened because its superclass is not \a super.
+ * \post top-level constant named \a name refers the returned class.
+ *
+ * \note if a class named \a name is already defined and its superclass is
+ * \a super, the function just returns the defined class.
+ */
VALUE
-rb_define_class_under(under, name, super)
- VALUE under;
- char *name;
- VALUE super;
+rb_define_class_id_under(VALUE outer, ID id, VALUE super)
{
- VALUE class;
- ID id;
+ VALUE klass;
- id = rb_intern(name);
- class = rb_define_class_id(id, super);
- rb_const_set(under, id, class);
- rb_set_class_path(class, under, name);
+ if (rb_const_defined_at(outer, id)) {
+ klass = rb_const_get_at(outer, id);
+ if (!RB_TYPE_P(klass, T_CLASS)) {
+ rb_raise(rb_eTypeError, "%s is not a class", rb_id2name(id));
+ }
+ if (rb_class_real(RCLASS_SUPER(klass)) != super) {
+ rb_name_error(id, "%s is already defined", rb_id2name(id));
+ }
+ return klass;
+ }
+ if (!super) {
+ rb_warn("no super class for `%s::%s', Object assumed",
+ rb_class2name(outer), rb_id2name(id));
+ }
+ klass = rb_define_class_id(id, super);
+ rb_set_class_path_string(klass, outer, rb_id2str(id));
+ rb_const_set(outer, id, klass);
+ rb_class_inherited(super, klass);
+ rb_gc_register_mark_object(klass);
- return class;
+ return klass;
}
VALUE
-module_new()
+rb_module_new(void)
{
- NEWOBJ(mdl, struct RClass);
- OBJSETUP(mdl, cModule, T_MODULE);
+ VALUE mdl = class_alloc(T_MODULE, rb_cModule);
- mdl->super = 0;
- mdl->iv_tbl = 0;
- mdl->m_tbl = 0;
- mdl->m_tbl = new_idhash();
+ RCLASS_M_TBL(mdl) = st_init_numtable();
return (VALUE)mdl;
}
VALUE
-rb_define_module_id(id)
- ID id;
+rb_define_module_id(ID id)
{
- extern st_table *rb_class_tbl;
- struct RClass *mdl = (struct RClass*)module_new();
+ VALUE mdl;
+ mdl = rb_module_new();
rb_name_class(mdl, id);
- return (VALUE)mdl;
+ return mdl;
}
VALUE
-rb_define_module(name)
- char *name;
+rb_define_module(const char *name)
{
VALUE module;
ID id;
id = rb_intern(name);
+ if (rb_const_defined(rb_cObject, id)) {
+ module = rb_const_get(rb_cObject, id);
+ if (RB_TYPE_P(module, T_MODULE))
+ return module;
+ rb_raise(rb_eTypeError, "%s is not a module", rb_obj_classname(module));
+ }
module = rb_define_module_id(id);
- st_add_direct(rb_class_tbl, id, module);
+ rb_vm_add_root_module(id, module);
+ rb_const_set(rb_cObject, id, module);
return module;
}
VALUE
-rb_define_module_under(under, name)
- VALUE under;
- char *name;
+rb_define_module_under(VALUE outer, const char *name)
+{
+ return rb_define_module_id_under(outer, rb_intern(name));
+}
+
+VALUE
+rb_define_module_id_under(VALUE outer, ID id)
{
VALUE module;
- ID id;
- id = rb_intern(name);
+ if (rb_const_defined_at(outer, id)) {
+ module = rb_const_get_at(outer, id);
+ if (RB_TYPE_P(module, T_MODULE))
+ return module;
+ rb_raise(rb_eTypeError, "%s::%s is not a module",
+ rb_class2name(outer), rb_obj_classname(module));
+ }
module = rb_define_module_id(id);
- rb_const_set(under, id, module);
- rb_set_class_path(module, under, name);
+ rb_const_set(outer, id, module);
+ rb_set_class_path_string(module, outer, rb_id2str(id));
+ rb_gc_register_mark_object(module);
return module;
}
-static struct RClass *
-include_class_new(module, super)
- struct RClass *module, *super;
+VALUE
+rb_include_class_new(VALUE module, VALUE super)
{
- NEWOBJ(cls, struct RClass);
- OBJSETUP(cls, cClass, T_ICLASS);
+ VALUE klass = class_alloc(T_ICLASS, rb_cClass);
- cls->m_tbl = module->m_tbl;
- cls->iv_tbl = module->iv_tbl;
- cls->super = super;
- if (TYPE(module) == T_ICLASS) {
- RBASIC(cls)->class = RBASIC(module)->class;
+ if (BUILTIN_TYPE(module) == T_ICLASS) {
+ module = RBASIC(module)->klass;
+ }
+ if (!RCLASS_IV_TBL(module)) {
+ RCLASS_IV_TBL(module) = st_init_numtable();
+ }
+ if (!RCLASS_CONST_TBL(module)) {
+ RCLASS_CONST_TBL(module) = st_init_numtable();
+ }
+ RCLASS_IV_TBL(klass) = RCLASS_IV_TBL(module);
+ RCLASS_CONST_TBL(klass) = RCLASS_CONST_TBL(module);
+
+ RCLASS_M_TBL(OBJ_WB_UNPROTECT(klass)) = RCLASS_M_TBL(OBJ_WB_UNPROTECT(RCLASS_ORIGIN(module)));
+
+ RCLASS_SET_SUPER(klass, super);
+ if (RB_TYPE_P(module, T_ICLASS)) {
+ RBASIC_SET_CLASS(klass, RBASIC(module)->klass);
}
else {
- RBASIC(cls)->class = (VALUE)module;
+ RBASIC_SET_CLASS(klass, module);
}
+ OBJ_INFECT(klass, module);
+ OBJ_INFECT(klass, super);
- return cls;
+ return (VALUE)klass;
}
+static int include_modules_at(const VALUE klass, VALUE c, VALUE module);
+
void
-rb_include_module(class, module)
- VALUE class, module;
+rb_include_module(VALUE klass, VALUE module)
{
- struct RClass *p;
+ int changed = 0;
- if (NIL_P(module)) return;
+ rb_frozen_class_p(klass);
- switch (TYPE(module)) {
- case T_MODULE:
- case T_CLASS:
- break;
- default:
+ if (!RB_TYPE_P(module, T_MODULE)) {
Check_Type(module, T_MODULE);
}
- if (class == module) return;
- rb_clear_cache();
-
+ OBJ_INFECT(klass, module);
+
+ changed = include_modules_at(klass, RCLASS_ORIGIN(klass), module);
+ if (changed < 0)
+ rb_raise(rb_eArgError, "cyclic include detected");
+}
+
+static int
+add_refined_method_entry_i(st_data_t key, st_data_t value, st_data_t data)
+{
+ rb_add_refined_method_entry((VALUE) data, (ID) key);
+ return ST_CONTINUE;
+}
+
+static int
+include_modules_at(const VALUE klass, VALUE c, VALUE module)
+{
+ VALUE p, iclass;
+ int method_changed = 0, constant_changed = 0;
+ const st_table *const klass_m_tbl = RCLASS_M_TBL(RCLASS_ORIGIN(klass));
+
while (module) {
+ int superclass_seen = FALSE;
+
+ if (RCLASS_ORIGIN(module) != module)
+ goto skip;
+ if (klass_m_tbl && klass_m_tbl == RCLASS_M_TBL(module))
+ return -1;
/* ignore if the module included already in superclasses */
- for (p = RCLASS(class)->super; p; p = p->super) {
- if (BUILTIN_TYPE(p) == T_ICLASS && p->m_tbl == RCLASS(module)->m_tbl)
- return;
+ for (p = RCLASS_SUPER(klass); p; p = RCLASS_SUPER(p)) {
+ switch (BUILTIN_TYPE(p)) {
+ case T_ICLASS:
+ if (RCLASS_M_TBL(p) == RCLASS_M_TBL(module)) {
+ if (!superclass_seen) {
+ c = p; /* move insertion point */
+ }
+ goto skip;
+ }
+ break;
+ case T_CLASS:
+ superclass_seen = TRUE;
+ break;
+ }
+ }
+ iclass = rb_include_class_new(module, RCLASS_SUPER(c));
+ c = RCLASS_SET_SUPER(c, iclass);
+
+ if (BUILTIN_TYPE(module) == T_ICLASS) {
+ rb_module_add_to_subclasses_list(RBASIC(module)->klass, iclass);
+ } else {
+ rb_module_add_to_subclasses_list(module, iclass);
}
- RCLASS(class)->super = include_class_new(module, RCLASS(class)->super);
- class = (VALUE)RCLASS(class)->super;
- module = (VALUE)RCLASS(module)->super;
+ if (FL_TEST(klass, RMODULE_IS_REFINEMENT)) {
+ VALUE refined_class =
+ rb_refinement_module_get_refined_class(klass);
+
+ st_foreach(RMODULE_M_TBL(module), add_refined_method_entry_i,
+ (st_data_t) refined_class);
+ FL_SET(c, RMODULE_INCLUDED_INTO_REFINEMENT);
+ }
+ if (RMODULE_M_TBL(module) && RMODULE_M_TBL(module)->num_entries)
+ method_changed = 1;
+ if (RMODULE_CONST_TBL(module) && RMODULE_CONST_TBL(module)->num_entries)
+ constant_changed = 1;
+ skip:
+ module = RCLASS_SUPER(module);
}
+
+ if (method_changed) rb_clear_method_cache_by_class(klass);
+ if (constant_changed) rb_clear_constant_cache();
+
+ return method_changed;
}
+static int
+move_refined_method(st_data_t key, st_data_t value, st_data_t data)
+{
+ rb_method_entry_t *me = (rb_method_entry_t *) value;
+ st_table *tbl = (st_table *) data;
+
+ if (me->def->type == VM_METHOD_TYPE_REFINED) {
+ if (me->def->body.orig_me) {
+ rb_method_entry_t *orig_me = me->def->body.orig_me, *new_me;
+ me->def->body.orig_me = NULL;
+ new_me = ALLOC(rb_method_entry_t);
+ *new_me = *me;
+ st_add_direct(tbl, key, (st_data_t) new_me);
+ *me = *orig_me;
+ xfree(orig_me);
+ return ST_CONTINUE;
+ }
+ else {
+ st_add_direct(tbl, key, (st_data_t) me);
+ return ST_DELETE;
+ }
+ }
+ else {
+ return ST_CONTINUE;
+ }
+}
+
+void
+rb_prepend_module(VALUE klass, VALUE module)
+{
+ void rb_vm_check_redefinition_by_prepend(VALUE klass);
+ VALUE origin;
+ int changed = 0;
+
+ rb_frozen_class_p(klass);
+
+ Check_Type(module, T_MODULE);
+
+ OBJ_INFECT(klass, module);
+
+ origin = RCLASS_ORIGIN(klass);
+ if (origin == klass) {
+ origin = class_alloc(T_ICLASS, klass);
+ OBJ_WB_UNPROTECT(origin); /* TODO: conservertive shading. Need more survery. */
+ RCLASS_SET_SUPER(origin, RCLASS_SUPER(klass));
+ RCLASS_SET_SUPER(klass, origin);
+ RCLASS_ORIGIN(klass) = origin;
+ RCLASS_M_TBL(origin) = RCLASS_M_TBL(klass);
+ RCLASS_M_TBL(klass) = st_init_numtable();
+ st_foreach(RCLASS_M_TBL(origin), move_refined_method,
+ (st_data_t) RCLASS_M_TBL(klass));
+ }
+ changed = include_modules_at(klass, klass, module);
+ if (changed < 0)
+ rb_raise(rb_eArgError, "cyclic prepend detected");
+ if (changed) {
+ rb_vm_check_redefinition_by_prepend(klass);
+ }
+}
+
+/*
+ * call-seq:
+ * mod.included_modules -> array
+ *
+ * Returns the list of modules included in <i>mod</i>.
+ *
+ * module Mixin
+ * end
+ *
+ * module Outer
+ * include Mixin
+ * end
+ *
+ * Mixin.included_modules #=> []
+ * Outer.included_modules #=> [Mixin]
+ */
+
+VALUE
+rb_mod_included_modules(VALUE mod)
+{
+ VALUE ary = rb_ary_new();
+ VALUE p;
+ VALUE origin = RCLASS_ORIGIN(mod);
+
+ for (p = RCLASS_SUPER(mod); p; p = RCLASS_SUPER(p)) {
+ if (p != origin && BUILTIN_TYPE(p) == T_ICLASS) {
+ VALUE m = RBASIC(p)->klass;
+ if (RB_TYPE_P(m, T_MODULE))
+ rb_ary_push(ary, m);
+ }
+ }
+ return ary;
+}
+
+/*
+ * call-seq:
+ * mod.include?(module) -> true or false
+ *
+ * Returns <code>true</code> if <i>module</i> is included in
+ * <i>mod</i> or one of <i>mod</i>'s ancestors.
+ *
+ * module A
+ * end
+ * class B
+ * include A
+ * end
+ * class C < B
+ * end
+ * B.include?(A) #=> true
+ * C.include?(A) #=> true
+ * A.include?(A) #=> false
+ */
+
+VALUE
+rb_mod_include_p(VALUE mod, VALUE mod2)
+{
+ VALUE p;
+
+ Check_Type(mod2, T_MODULE);
+ for (p = RCLASS_SUPER(mod); p; p = RCLASS_SUPER(p)) {
+ if (BUILTIN_TYPE(p) == T_ICLASS) {
+ if (RBASIC(p)->klass == mod2) return Qtrue;
+ }
+ }
+ return Qfalse;
+}
+
+/*
+ * call-seq:
+ * mod.ancestors -> array
+ *
+ * Returns a list of modules included in <i>mod</i> (including
+ * <i>mod</i> itself).
+ *
+ * module Mod
+ * include Math
+ * include Comparable
+ * end
+ *
+ * Mod.ancestors #=> [Mod, Comparable, Math]
+ * Math.ancestors #=> [Math]
+ */
+
+VALUE
+rb_mod_ancestors(VALUE mod)
+{
+ VALUE p, ary = rb_ary_new();
+
+ for (p = mod; p; p = RCLASS_SUPER(p)) {
+ if (BUILTIN_TYPE(p) == T_ICLASS) {
+ rb_ary_push(ary, RBASIC(p)->klass);
+ }
+ else if (p == RCLASS_ORIGIN(p)) {
+ rb_ary_push(ary, p);
+ }
+ }
+ return ary;
+}
+
+#define VISI(x) ((x)&NOEX_MASK)
+#define VISI_CHECK(x,f) (VISI(x) == (f))
+
+static int
+ins_methods_push(ID name, long type, VALUE ary, long visi)
+{
+ if (type == -1) return ST_CONTINUE;
+
+ switch (visi) {
+ case NOEX_PRIVATE:
+ case NOEX_PROTECTED:
+ case NOEX_PUBLIC:
+ visi = (type == visi);
+ break;
+ default:
+ visi = (type != NOEX_PRIVATE);
+ break;
+ }
+ if (visi) {
+ rb_ary_push(ary, ID2SYM(name));
+ }
+ return ST_CONTINUE;
+}
+
+static int
+ins_methods_i(st_data_t name, st_data_t type, st_data_t ary)
+{
+ return ins_methods_push((ID)name, (long)type, (VALUE)ary, -1); /* everything but private */
+}
+
+static int
+ins_methods_prot_i(st_data_t name, st_data_t type, st_data_t ary)
+{
+ return ins_methods_push((ID)name, (long)type, (VALUE)ary, NOEX_PROTECTED);
+}
+
+static int
+ins_methods_priv_i(st_data_t name, st_data_t type, st_data_t ary)
+{
+ return ins_methods_push((ID)name, (long)type, (VALUE)ary, NOEX_PRIVATE);
+}
+
+static int
+ins_methods_pub_i(st_data_t name, st_data_t type, st_data_t ary)
+{
+ return ins_methods_push((ID)name, (long)type, (VALUE)ary, NOEX_PUBLIC);
+}
+
+static int
+method_entry_i(st_data_t key, st_data_t value, st_data_t data)
+{
+ const rb_method_entry_t *me = (const rb_method_entry_t *)value;
+ st_table *list = (st_table *)data;
+ long type;
+
+ if (me && me->def->type == VM_METHOD_TYPE_REFINED) {
+ me = rb_resolve_refined_method(Qnil, me, NULL);
+ if (!me) return ST_CONTINUE;
+ }
+ if (!st_lookup(list, key, 0)) {
+ if (UNDEFINED_METHOD_ENTRY_P(me)) {
+ type = -1; /* none */
+ }
+ else {
+ type = VISI(me->flag);
+ }
+ st_add_direct(list, key, type);
+ }
+ return ST_CONTINUE;
+}
+
+static VALUE
+class_instance_method_list(int argc, VALUE *argv, VALUE mod, int obj, int (*func) (st_data_t, st_data_t, st_data_t))
+{
+ VALUE ary;
+ int recur, prepended = 0;
+ st_table *list;
+
+ if (argc == 0) {
+ recur = TRUE;
+ }
+ else {
+ VALUE r;
+ rb_scan_args(argc, argv, "01", &r);
+ recur = RTEST(r);
+ }
+
+ if (!recur && RCLASS_ORIGIN(mod) != mod) {
+ mod = RCLASS_ORIGIN(mod);
+ prepended = 1;
+ }
+
+ list = st_init_numtable();
+ for (; mod; mod = RCLASS_SUPER(mod)) {
+ if (RCLASS_M_TBL(mod)) st_foreach(RCLASS_M_TBL(mod), method_entry_i, (st_data_t)list);
+ if (BUILTIN_TYPE(mod) == T_ICLASS && !prepended) continue;
+ if (obj && FL_TEST(mod, FL_SINGLETON)) continue;
+ if (!recur) break;
+ }
+ ary = rb_ary_new();
+ st_foreach(list, func, ary);
+ st_free_table(list);
+
+ return ary;
+}
+
+/*
+ * call-seq:
+ * mod.instance_methods(include_super=true) -> array
+ *
+ * Returns an array containing the names of the public and protected instance
+ * methods in the receiver. For a module, these are the public and protected methods;
+ * for a class, they are the instance (not singleton) methods. With no
+ * argument, or with an argument that is <code>false</code>, the
+ * instance methods in <i>mod</i> are returned, otherwise the methods
+ * in <i>mod</i> and <i>mod</i>'s superclasses are returned.
+ *
+ * module A
+ * def method1() end
+ * end
+ * class B
+ * def method2() end
+ * end
+ * class C < B
+ * def method3() end
+ * end
+ *
+ * A.instance_methods #=> [:method1]
+ * B.instance_methods(false) #=> [:method2]
+ * C.instance_methods(false) #=> [:method3]
+ * C.instance_methods(true).length #=> 43
+ */
+
+VALUE
+rb_class_instance_methods(int argc, VALUE *argv, VALUE mod)
+{
+ return class_instance_method_list(argc, argv, mod, 0, ins_methods_i);
+}
+
+/*
+ * call-seq:
+ * mod.protected_instance_methods(include_super=true) -> array
+ *
+ * Returns a list of the protected instance methods defined in
+ * <i>mod</i>. If the optional parameter is not <code>false</code>, the
+ * methods of any ancestors are included.
+ */
+
+VALUE
+rb_class_protected_instance_methods(int argc, VALUE *argv, VALUE mod)
+{
+ return class_instance_method_list(argc, argv, mod, 0, ins_methods_prot_i);
+}
+
+/*
+ * call-seq:
+ * mod.private_instance_methods(include_super=true) -> array
+ *
+ * Returns a list of the private instance methods defined in
+ * <i>mod</i>. If the optional parameter is not <code>false</code>, the
+ * methods of any ancestors are included.
+ *
+ * module Mod
+ * def method1() end
+ * private :method1
+ * def method2() end
+ * end
+ * Mod.instance_methods #=> [:method2]
+ * Mod.private_instance_methods #=> [:method1]
+ */
+
+VALUE
+rb_class_private_instance_methods(int argc, VALUE *argv, VALUE mod)
+{
+ return class_instance_method_list(argc, argv, mod, 0, ins_methods_priv_i);
+}
+
+/*
+ * call-seq:
+ * mod.public_instance_methods(include_super=true) -> array
+ *
+ * Returns a list of the public instance methods defined in <i>mod</i>.
+ * If the optional parameter is not <code>false</code>, the methods of
+ * any ancestors are included.
+ */
+
+VALUE
+rb_class_public_instance_methods(int argc, VALUE *argv, VALUE mod)
+{
+ return class_instance_method_list(argc, argv, mod, 0, ins_methods_pub_i);
+}
+
+/*
+ * call-seq:
+ * obj.methods(regular=true) -> array
+ *
+ * Returns a list of the names of public and protected methods of
+ * <i>obj</i>. This will include all the methods accessible in
+ * <i>obj</i>'s ancestors.
+ * If the <i>regular</i> parameter is set to <code>false</code>,
+ * Returns an array of obj's public and protected singleton methods,
+ * the array will not include methods in modules included in <i>obj</i>.
+ *
+ * class Klass
+ * def klass_method()
+ * end
+ * end
+ * k = Klass.new
+ * k.methods[0..9] #=> [:klass_method, :nil?, :===,
+ * # :==~, :!, :eql?
+ * # :hash, :<=>, :class, :singleton_class]
+ * k.methods.length #=> 57
+ *
+ * k.methods(false) #=> []
+ * def k.singleton_method; end
+ * k.methods(false) #=> [:singleton_method]
+ *
+ * module M123; def m123; end end
+ * k.extend M123
+ * k.methods(false) #=> [:singleton_method]
+ */
+
+VALUE
+rb_obj_methods(int argc, VALUE *argv, VALUE obj)
+{
+ retry:
+ if (argc == 0) {
+ return class_instance_method_list(argc, argv, CLASS_OF(obj), 1, ins_methods_i);
+ }
+ else {
+ VALUE recur;
+
+ rb_scan_args(argc, argv, "1", &recur);
+ if (RTEST(recur)) {
+ argc = 0;
+ goto retry;
+ }
+ return rb_obj_singleton_methods(argc, argv, obj);
+ }
+}
+
+/*
+ * call-seq:
+ * obj.protected_methods(all=true) -> array
+ *
+ * Returns the list of protected methods accessible to <i>obj</i>. If
+ * the <i>all</i> parameter is set to <code>false</code>, only those methods
+ * in the receiver will be listed.
+ */
+
+VALUE
+rb_obj_protected_methods(int argc, VALUE *argv, VALUE obj)
+{
+ return class_instance_method_list(argc, argv, CLASS_OF(obj), 1, ins_methods_prot_i);
+}
+
+/*
+ * call-seq:
+ * obj.private_methods(all=true) -> array
+ *
+ * Returns the list of private methods accessible to <i>obj</i>. If
+ * the <i>all</i> parameter is set to <code>false</code>, only those methods
+ * in the receiver will be listed.
+ */
+
+VALUE
+rb_obj_private_methods(int argc, VALUE *argv, VALUE obj)
+{
+ return class_instance_method_list(argc, argv, CLASS_OF(obj), 1, ins_methods_priv_i);
+}
+
+/*
+ * call-seq:
+ * obj.public_methods(all=true) -> array
+ *
+ * Returns the list of public methods accessible to <i>obj</i>. If
+ * the <i>all</i> parameter is set to <code>false</code>, only those methods
+ * in the receiver will be listed.
+ */
+
+VALUE
+rb_obj_public_methods(int argc, VALUE *argv, VALUE obj)
+{
+ return class_instance_method_list(argc, argv, CLASS_OF(obj), 1, ins_methods_pub_i);
+}
+
+/*
+ * call-seq:
+ * obj.singleton_methods(all=true) -> array
+ *
+ * Returns an array of the names of singleton methods for <i>obj</i>.
+ * If the optional <i>all</i> parameter is true, the list will include
+ * methods in modules included in <i>obj</i>.
+ * Only public and protected singleton methods are returned.
+ *
+ * module Other
+ * def three() end
+ * end
+ *
+ * class Single
+ * def Single.four() end
+ * end
+ *
+ * a = Single.new
+ *
+ * def a.one()
+ * end
+ *
+ * class << a
+ * include Other
+ * def two()
+ * end
+ * end
+ *
+ * Single.singleton_methods #=> [:four]
+ * a.singleton_methods(false) #=> [:two, :one]
+ * a.singleton_methods #=> [:two, :one, :three]
+ */
+
+VALUE
+rb_obj_singleton_methods(int argc, VALUE *argv, VALUE obj)
+{
+ VALUE recur, ary, klass, origin;
+ st_table *list, *mtbl;
+
+ if (argc == 0) {
+ recur = Qtrue;
+ }
+ else {
+ rb_scan_args(argc, argv, "01", &recur);
+ }
+ klass = CLASS_OF(obj);
+ origin = RCLASS_ORIGIN(klass);
+ list = st_init_numtable();
+ if (klass && FL_TEST(klass, FL_SINGLETON)) {
+ if ((mtbl = RCLASS_M_TBL(origin)) != 0)
+ st_foreach(mtbl, method_entry_i, (st_data_t)list);
+ klass = RCLASS_SUPER(klass);
+ }
+ if (RTEST(recur)) {
+ while (klass && (FL_TEST(klass, FL_SINGLETON) || RB_TYPE_P(klass, T_ICLASS))) {
+ if (klass != origin && (mtbl = RCLASS_M_TBL(klass)) != 0)
+ st_foreach(mtbl, method_entry_i, (st_data_t)list);
+ klass = RCLASS_SUPER(klass);
+ }
+ }
+ ary = rb_ary_new();
+ st_foreach(list, ins_methods_i, ary);
+ st_free_table(list);
+
+ return ary;
+}
+
+/*!
+ * \}
+ */
+/*!
+ * \defgroup defmethod Defining methods
+ * There are some APIs to define a method from C.
+ * These API takes a C function as a method body.
+ *
+ * \par Method body functions
+ * Method body functions must return a VALUE and
+ * can be one of the following form:
+ * <dl>
+ * <dt>Fixed number of parameters</dt>
+ * <dd>
+ * This form is a normal C function, excepting it takes
+ * a receiver object as the first argument.
+ *
+ * \code
+ * static VALUE my_method(VALUE self, VALUE x, VALUE y);
+ * \endcode
+ * </dd>
+ * <dt>argc and argv style</dt>
+ * <dd>
+ * This form takes three parameters: \a argc, \a argv and \a self.
+ * \a self is the receiver. \a argc is the number of arguments.
+ * \a argv is a pointer to an array of the arguments.
+ *
+ * \code
+ * static VALUE my_method(int argc, VALUE *argv, VALUE self);
+ * \endcode
+ * </dd>
+ * <dt>Ruby array style</dt>
+ * <dd>
+ * This form takes two parameters: self and args.
+ * \a self is the receiver. \a args is an Array object which
+ * contains the arguments.
+ *
+ * \code
+ * static VALUE my_method(VALUE self, VALUE args);
+ * \endcode
+ * </dd>
+ *
+ * \par Number of parameters
+ * Method defining APIs takes the number of parameters which the
+ * method will takes. This number is called \a argc.
+ * \a argc can be:
+ * <dl>
+ * <dt>zero or positive number</dt>
+ * <dd>This means the method body function takes a fixed number of parameters</dd>
+ * <dt>-1</dt>
+ * <dd>This means the method body function is "argc and argv" style.</dd>
+ * <dt>-2</dt>
+ * <dd>This means the method body function is "self and args" style.</dd>
+ * </dl>
+ * \{
+ */
+
void
-rb_define_method_id(class, name, func, argc)
- struct RClass *class;
- ID name;
- VALUE (*func)();
- int argc;
+rb_define_method_id(VALUE klass, ID mid, VALUE (*func)(ANYARGS), int argc)
{
- rb_add_method(class, name, NEW_CFUNC(func, argc), NOEX_PUBLIC);
+ rb_add_method_cfunc(klass, mid, func, argc, NOEX_PUBLIC);
}
void
-rb_define_method(class, name, func, argc)
- VALUE class;
- char *name;
- VALUE (*func)();
- int argc;
+rb_define_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
{
- rb_add_method(class, rb_intern(name), NEW_CFUNC(func, argc), NOEX_PUBLIC);
+ rb_add_method_cfunc(klass, rb_intern(name), func, argc, NOEX_PUBLIC);
}
void
-rb_undef_method(class, name)
- VALUE class;
- char *name;
+rb_define_protected_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
{
- rb_add_method(class, rb_intern(name), 0, NOEX_PUBLIC);
+ rb_add_method_cfunc(klass, rb_intern(name), func, argc, NOEX_PROTECTED);
}
void
-rb_define_private_method(class, name, func, argc)
- struct RClass *class;
- char *name;
- VALUE (*func)();
- int argc;
+rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
{
- rb_add_method(class, rb_intern(name), NEW_CFUNC(func, argc), NOEX_PRIVATE);
+ rb_add_method_cfunc(klass, rb_intern(name), func, argc, NOEX_PRIVATE);
+}
+
+void
+rb_undef_method(VALUE klass, const char *name)
+{
+ rb_add_method(klass, rb_intern(name), VM_METHOD_TYPE_UNDEF, 0, NOEX_UNDEF);
+}
+
+/*!
+ * \}
+ */
+/*!
+ * \addtogroup class
+ * \{
+ */
+
+#define SPECIAL_SINGLETON(x,c) do {\
+ if (obj == (x)) {\
+ return (c);\
+ }\
+} while (0)
+
+static inline VALUE
+special_singleton_class_of(VALUE obj)
+{
+ SPECIAL_SINGLETON(Qnil, rb_cNilClass);
+ SPECIAL_SINGLETON(Qfalse, rb_cFalseClass);
+ SPECIAL_SINGLETON(Qtrue, rb_cTrueClass);
+ return Qnil;
}
VALUE
-rb_singleton_class(obj)
- struct RBasic *obj;
+rb_special_singleton_class(VALUE obj)
{
- if (rb_special_const_p((VALUE)obj)) {
- TypeError("cannot define singleton");
+ return special_singleton_class_of(obj);
+}
+
+/*!
+ * \internal
+ * Returns the singleton class of \a obj. Creates it if necessary.
+ *
+ * \note DO NOT expose the returned singleton class to
+ * outside of class.c.
+ * Use \ref rb_singleton_class instead for
+ * consistency of the metaclass hierarchy.
+ */
+static VALUE
+singleton_class_of(VALUE obj)
+{
+ VALUE klass;
+
+ if (FIXNUM_P(obj) || FLONUM_P(obj) || SYMBOL_P(obj)) {
+ rb_raise(rb_eTypeError, "can't define singleton");
+ }
+ if (SPECIAL_CONST_P(obj)) {
+ klass = special_singleton_class_of(obj);
+ if (NIL_P(klass))
+ rb_bug("unknown immediate %p", (void *)obj);
+ return klass;
+ }
+ else {
+ enum ruby_value_type type = BUILTIN_TYPE(obj);
+ if (type == T_FLOAT || type == T_BIGNUM) {
+ rb_raise(rb_eTypeError, "can't define singleton");
+ }
+ }
+
+ if (FL_TEST(RBASIC(obj)->klass, FL_SINGLETON) &&
+ rb_ivar_get(RBASIC(obj)->klass, id_attached) == obj) {
+ klass = RBASIC(obj)->klass;
+ }
+ else {
+ klass = rb_make_metaclass(obj, RBASIC(obj)->klass);
+ }
+
+ if (OBJ_TAINTED(obj)) {
+ OBJ_TAINT(klass);
}
- if (FL_TEST(obj->class, FL_SINGLETON)) {
- return (VALUE)obj->class;
+ else {
+ FL_UNSET(klass, FL_TAINT);
+ }
+ if (OBJ_FROZEN(obj)) OBJ_FREEZE(klass);
+
+ return klass;
+}
+
+/*!
+ * Returns the singleton class of \a obj, or nil if obj is not a
+ * singleton object.
+ *
+ * \param obj an arbitrary object.
+ * \return the singleton class or nil.
+ */
+VALUE
+rb_singleton_class_get(VALUE obj)
+{
+ VALUE klass;
+
+ if (SPECIAL_CONST_P(obj)) {
+ return rb_special_singleton_class(obj);
}
- return obj->class = singleton_class_new(obj->class);
+ klass = RBASIC(obj)->klass;
+ if (!FL_TEST(klass, FL_SINGLETON)) return Qnil;
+ if (rb_ivar_get(klass, id_attached) != obj) return Qnil;
+ return klass;
+}
+
+/*!
+ * Returns the singleton class of \a obj. Creates it if necessary.
+ *
+ * \param obj an arbitrary object.
+ * \throw TypeError if \a obj is a Fixnum or a Symbol.
+ * \return the singleton class.
+ *
+ * \post \a obj has its own singleton class.
+ * \post if \a obj is a class,
+ * the returned singleton class also has its own
+ * singleton class in order to keep consistency of the
+ * inheritance structure of metaclasses.
+ * \note a new singleton class will be created
+ * if \a obj does not have it.
+ * \note the singleton classes for nil, true and false are:
+ * NilClass, TrueClass and FalseClass.
+ */
+VALUE
+rb_singleton_class(VALUE obj)
+{
+ VALUE klass = singleton_class_of(obj);
+
+ /* ensures an exposed class belongs to its own eigenclass */
+ if (RB_TYPE_P(obj, T_CLASS)) (void)ENSURE_EIGENCLASS(klass);
+
+ return klass;
}
+/*!
+ * \}
+ */
+
+/*!
+ * \addtogroup defmethod
+ * \{
+ */
+
+/*!
+ * Defines a singleton method for \a obj.
+ * \param obj an arbitrary object
+ * \param name name of the singleton method
+ * \param func the method body
+ * \param argc the number of parameters, or -1 or -2. see \ref defmethod.
+ */
void
-rb_define_singleton_method(obj, name, func, argc)
- VALUE obj;
- char *name;
- VALUE (*func)();
- int argc;
+rb_define_singleton_method(VALUE obj, const char *name, VALUE (*func)(ANYARGS), int argc)
{
- rb_define_method(rb_singleton_class(obj), name, func, argc);
+ rb_define_method(singleton_class_of(obj), name, func, argc);
}
+
+
+/*!
+ * Defines a module function for \a module.
+ * \param module an module or a class.
+ * \param name name of the function
+ * \param func the method body
+ * \param argc the number of parameters, or -1 or -2. see \ref defmethod.
+ */
void
-rb_define_module_function(module, name, func, argc)
- VALUE module;
- char *name;
- VALUE (*func)();
- int argc;
+rb_define_module_function(VALUE module, const char *name, VALUE (*func)(ANYARGS), int argc)
{
rb_define_private_method(module, name, func, argc);
rb_define_singleton_method(module, name, func, argc);
}
-VALUE mKernel;
+/*!
+ * Defines a global function
+ * \param name name of the function
+ * \param func the method body
+ * \param argc the number of parameters, or -1 or -2. see \ref defmethod.
+ */
void
-rb_define_global_function(name, func, argc)
- char *name;
- VALUE (*func)();
- int argc;
+rb_define_global_function(const char *name, VALUE (*func)(ANYARGS), int argc)
{
- rb_define_private_method(mKernel, name, func, argc);
+ rb_define_module_function(rb_mKernel, name, func, argc);
}
+
+/*!
+ * Defines an alias of a method.
+ * \param klass the class which the original method belongs to
+ * \param name1 a new name for the method
+ * \param name2 the original name of the method
+ */
void
-rb_define_alias(class, name1, name2)
- VALUE class;
- char *name1, *name2;
+rb_define_alias(VALUE klass, const char *name1, const char *name2)
{
- rb_alias(class, rb_intern(name1), rb_intern(name2));
+ rb_alias(klass, rb_intern(name1), rb_intern(name2));
}
+/*!
+ * Defines (a) public accessor method(s) for an attribute.
+ * \param klass the class which the attribute will belongs to
+ * \param name name of the attribute
+ * \param read a getter method for the attribute will be defined if \a read is non-zero.
+ * \param write a setter method for the attribute will be defined if \a write is non-zero.
+ */
void
-rb_define_attr(class, id, pub)
- VALUE class;
- ID id;
- int pub;
+rb_define_attr(VALUE klass, const char *name, int read, int write)
{
- char *name;
- char *buf;
- ID attr, attreq, attriv;
+ rb_attr(klass, rb_intern(name), read, write, FALSE);
+}
- name = rb_id2name(id);
- attr = rb_intern(name);
- buf = ALLOCA_N(char,strlen(name)+2);
- sprintf(buf, "%s=", name);
- attreq = rb_intern(buf);
- sprintf(buf, "@%s", name);
- attriv = rb_intern(buf);
- if (!rb_method_boundp(class, attr, NOEX_PRIVATE)) {
- rb_add_method(class, attr, NEW_IVAR(attriv), 0);
- }
- if (pub && !rb_method_boundp(class, attreq, NOEX_PRIVATE)) {
- rb_add_method(class, attreq, NEW_ATTRSET(attriv), 0);
- }
+int
+rb_obj_basic_to_s_p(VALUE obj)
+{
+ const rb_method_entry_t *me = rb_method_entry(CLASS_OF(obj), rb_intern("to_s"), 0);
+ if (me && me->def && me->def->type == VM_METHOD_TYPE_CFUNC &&
+ me->def->body.cfunc.func == rb_any_to_s)
+ return 1;
+ return 0;
}
-#include <varargs.h>
-#include <ctype.h>
+#include <stdarg.h>
int
-rb_scan_args(argc, argv, fmt, va_alist)
- int argc;
- VALUE *argv;
- char *fmt;
- va_dcl
-{
- int n, i;
- char *p = fmt;
+rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)
+{
+ int i;
+ const char *p = fmt;
VALUE *var;
va_list vargs;
+ int f_var = 0, f_hash = 0, f_block = 0;
+ int n_lead = 0, n_opt = 0, n_trail = 0, n_mand;
+ int argi = 0;
+ VALUE hash = Qnil;
- va_start(vargs);
-
- if (*p == '*') {
- var = va_arg(vargs, VALUE*);
- *var = ary_new4(argc, argv);
- return argc;
+ if (ISDIGIT(*p)) {
+ n_lead = *p - '0';
+ p++;
+ if (ISDIGIT(*p)) {
+ n_opt = *p - '0';
+ p++;
+ if (ISDIGIT(*p)) {
+ n_trail = *p - '0';
+ p++;
+ goto block_arg;
+ }
+ }
}
-
- if (isdigit(*p)) {
- n = *p - '0';
- if (n > argc)
- ArgError("Wrong # of arguments (%d for %d)", argc, n);
- for (i=0; i<n; i++) {
- var = va_arg(vargs, VALUE*);
- *var = argv[i];
+ if (*p == '*') {
+ f_var = 1;
+ p++;
+ if (ISDIGIT(*p)) {
+ n_trail = *p - '0';
+ p++;
}
+ }
+ block_arg:
+ if (*p == ':') {
+ f_hash = 1;
p++;
}
- else {
- goto error;
+ if (*p == '&') {
+ f_block = 1;
+ p++;
}
+ if (*p != '\0') {
+ rb_fatal("bad scan arg format: %s", fmt);
+ }
+ n_mand = n_lead + n_trail;
- if (isdigit(*p)) {
- n = i + *p - '0';
- for (; i<n; i++) {
- var = va_arg(vargs, VALUE*);
- if (argc > i) {
- *var = argv[i];
- }
- else {
- *var = Qnil;
- }
+ if (argc < n_mand)
+ goto argc_error;
+
+ va_start(vargs, fmt);
+
+ /* capture an option hash - phase 1: pop */
+ if (f_hash && n_mand < argc) {
+ VALUE last = argv[argc - 1];
+
+ if (NIL_P(last)) {
+ /* nil is taken as an empty option hash only if it is not
+ ambiguous; i.e. '*' is not specified and arguments are
+ given more than sufficient */
+ if (!f_var && n_mand + n_opt < argc)
+ argc--;
+ }
+ else {
+ hash = rb_check_hash_type(last);
+ if (!NIL_P(hash))
+ argc--;
}
- p++;
}
-
- if(*p == '*') {
- var = va_arg(vargs, VALUE*);
- if (argc > i) {
- *var = ary_new4(argc-i, argv+i);
+ /* capture leading mandatory arguments */
+ for (i = n_lead; i-- > 0; ) {
+ var = va_arg(vargs, VALUE *);
+ if (var) *var = argv[argi];
+ argi++;
+ }
+ /* capture optional arguments */
+ for (i = n_opt; i-- > 0; ) {
+ var = va_arg(vargs, VALUE *);
+ if (argi < argc - n_trail) {
+ if (var) *var = argv[argi];
+ argi++;
+ }
+ else {
+ if (var) *var = Qnil;
+ }
+ }
+ /* capture variable length arguments */
+ if (f_var) {
+ int n_var = argc - argi - n_trail;
+
+ var = va_arg(vargs, VALUE *);
+ if (0 < n_var) {
+ if (var) *var = rb_ary_new4(n_var, &argv[argi]);
+ argi += n_var;
}
else {
- *var = ary_new();
+ if (var) *var = rb_ary_new();
}
}
- else if (*p == '\0') {
- if (argc > i) {
- ArgError("Wrong # of arguments(%d for %d)", argc, i);
+ /* capture trailing mandatory arguments */
+ for (i = n_trail; i-- > 0; ) {
+ var = va_arg(vargs, VALUE *);
+ if (var) *var = argv[argi];
+ argi++;
+ }
+ /* capture an option hash - phase 2: assignment */
+ if (f_hash) {
+ var = va_arg(vargs, VALUE *);
+ if (var) *var = hash;
+ }
+ /* capture iterator block */
+ if (f_block) {
+ var = va_arg(vargs, VALUE *);
+ if (rb_block_given_p()) {
+ *var = rb_block_proc();
+ }
+ else {
+ *var = Qnil;
}
}
- else {
- goto error;
+ va_end(vargs);
+
+ if (argi < argc) {
+ argc_error:
+ rb_error_arity(argc, n_mand, f_var ? UNLIMITED_ARGUMENTS : n_mand + n_opt);
}
- va_end(vargs);
return argc;
-
- error:
- Fatal("bad scan arg format: %s", fmt);
- return 0;
}
+
+/*!
+ * \}
+ */
diff --git a/common.mk b/common.mk
new file mode 100644
index 0000000000..e94c4756ea
--- /dev/null
+++ b/common.mk
@@ -0,0 +1,1103 @@
+bin: $(PROGRAM) $(WPROGRAM)
+lib: $(LIBRUBY)
+dll: $(LIBRUBY_SO)
+
+.SUFFIXES: .inc .h .c .y .i .$(DTRACE_EXT)
+
+# V=0 quiet, V=1 verbose. other values don't work.
+V = 0
+Q1 = $(V:1=)
+Q = $(Q1:0=@)
+ECHO = $(ECHO1:0=@echo)
+
+RUBYLIB = $(PATH_SEPARATOR)
+RUBYOPT = -
+RUN_OPTS = --disable-gems
+
+SPEC_GIT_BASE = git://github.com/nurse
+MSPEC_GIT_URL = $(SPEC_GIT_BASE)/mspec.git
+RUBYSPEC_GIT_URL = $(SPEC_GIT_BASE)/rubyspec.git
+
+STATIC_RUBY = static-ruby
+
+EXTCONF = extconf.rb
+LIBRUBY_EXTS = ./.libruby-with-ext.time
+REVISION_H = ./.revision.time
+PLATFORM_D = ./$(PLATFORM_DIR)/.time
+RDOCOUT = $(EXTOUT)/rdoc
+CAPIOUT = doc/capi
+
+DMYEXT = dmyext.$(OBJEXT)
+NORMALMAINOBJ = main.$(OBJEXT)
+MAINOBJ = $(NORMALMAINOBJ)
+EXTOBJS =
+DLDOBJS = $(DMYEXT)
+EXTSOLIBS =
+MINIOBJS = $(ARCHMINIOBJS) miniinit.$(OBJEXT) miniprelude.$(OBJEXT)
+ENC_MK = enc.mk
+
+COMMONOBJS = array.$(OBJEXT) \
+ bignum.$(OBJEXT) \
+ class.$(OBJEXT) \
+ compar.$(OBJEXT) \
+ complex.$(OBJEXT) \
+ dir.$(OBJEXT) \
+ dln_find.$(OBJEXT) \
+ encoding.$(OBJEXT) \
+ enum.$(OBJEXT) \
+ enumerator.$(OBJEXT) \
+ error.$(OBJEXT) \
+ eval.$(OBJEXT) \
+ load.$(OBJEXT) \
+ proc.$(OBJEXT) \
+ file.$(OBJEXT) \
+ gc.$(OBJEXT) \
+ hash.$(OBJEXT) \
+ inits.$(OBJEXT) \
+ io.$(OBJEXT) \
+ marshal.$(OBJEXT) \
+ math.$(OBJEXT) \
+ node.$(OBJEXT) \
+ numeric.$(OBJEXT) \
+ object.$(OBJEXT) \
+ pack.$(OBJEXT) \
+ parse.$(OBJEXT) \
+ process.$(OBJEXT) \
+ random.$(OBJEXT) \
+ range.$(OBJEXT) \
+ rational.$(OBJEXT) \
+ re.$(OBJEXT) \
+ regcomp.$(OBJEXT) \
+ regenc.$(OBJEXT) \
+ regerror.$(OBJEXT) \
+ regexec.$(OBJEXT) \
+ regparse.$(OBJEXT) \
+ regsyntax.$(OBJEXT) \
+ ruby.$(OBJEXT) \
+ safe.$(OBJEXT) \
+ signal.$(OBJEXT) \
+ sprintf.$(OBJEXT) \
+ st.$(OBJEXT) \
+ strftime.$(OBJEXT) \
+ string.$(OBJEXT) \
+ struct.$(OBJEXT) \
+ time.$(OBJEXT) \
+ transcode.$(OBJEXT) \
+ util.$(OBJEXT) \
+ variable.$(OBJEXT) \
+ version.$(OBJEXT) \
+ compile.$(OBJEXT) \
+ debug.$(OBJEXT) \
+ iseq.$(OBJEXT) \
+ vm.$(OBJEXT) \
+ vm_dump.$(OBJEXT) \
+ vm_backtrace.$(OBJEXT) \
+ vm_trace.$(OBJEXT) \
+ thread.$(OBJEXT) \
+ cont.$(OBJEXT) \
+ $(BUILTIN_ENCOBJS) \
+ $(BUILTIN_TRANSOBJS) \
+ $(MISSING)
+
+EXPORTOBJS = $(DLNOBJ) \
+ localeinit.$(OBJEXT) \
+ loadpath.$(OBJEXT) \
+ $(COMMONOBJS)
+
+OBJS = $(EXPORTOBJS) prelude.$(OBJEXT)
+ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT)
+
+GOLFOBJS = goruby.$(OBJEXT) golf_prelude.$(OBJEXT)
+
+PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(srcdir)/enc/prelude.rb $(DEFAULT_PRELUDES)
+GEM_PRELUDE = $(srcdir)/gem_prelude.rb
+PRELUDES = prelude.c miniprelude.c
+GOLFPRELUDES = golf_prelude.c
+
+SCRIPT_ARGS = --dest-dir="$(DESTDIR)" \
+ --extout="$(EXTOUT)" \
+ --mflags="$(MFLAGS)" \
+ --make-flags="$(MAKEFLAGS)"
+EXTMK_ARGS = $(SCRIPT_ARGS) --extension $(EXTS) --extstatic $(EXTSTATIC) \
+ --make-flags="V=$(V) MINIRUBY='$(MINIRUBY)'" --
+INSTRUBY = $(SUDO) $(RUNRUBY) -r./$(arch)-fake $(srcdir)/tool/rbinstall.rb
+INSTRUBY_ARGS = $(SCRIPT_ARGS) \
+ --data-mode=$(INSTALL_DATA_MODE) \
+ --prog-mode=$(INSTALL_PROG_MODE) \
+ --installed-list $(INSTALLED_LIST) \
+ --mantype="$(MANTYPE)"
+INSTALL_PROG_MODE = 0755
+INSTALL_DATA_MODE = 0644
+
+PRE_LIBRUBY_UPDATE = $(MINIRUBY) -e 'ARGV[1] or File.unlink(ARGV[0]) rescue nil' -- \
+ $(LIBRUBY_EXTS) $(LIBRUBY_SO_UPDATE)
+
+TESTSDIR = $(srcdir)/test
+TESTWORKDIR = testwork
+
+TESTRUN_SCRIPT = $(srcdir)/test.rb
+
+BOOTSTRAPRUBY = $(BASERUBY)
+
+COMPILE_PRELUDE = $(MINIRUBY) -I$(srcdir) $(srcdir)/tool/compile_prelude.rb
+
+all: showflags main docs
+
+main: showflags $(EXTSTATIC:static=lib)encs exts
+ @$(NULLCMD)
+
+.PHONY: showflags
+exts enc trans: showflags
+showflags:
+ $(MESSAGE_BEGIN) \
+ " CC = $(CC)" \
+ " LD = $(LD)" \
+ " LDSHARED = $(LDSHARED)" \
+ " CFLAGS = $(CFLAGS)" \
+ " XCFLAGS = $(XCFLAGS)" \
+ " CPPFLAGS = $(CPPFLAGS)" \
+ " DLDFLAGS = $(DLDFLAGS)" \
+ " SOLIBS = $(SOLIBS)" \
+ $(MESSAGE_END)
+ -@$(CC_VERSION)
+
+.PHONY: showconfig
+showconfig:
+ @$(ECHO_BEGIN) \
+ $(configure_args) \
+ $(ECHO_END)
+
+exts: build-ext
+
+EXTS_MK = exts.mk
+$(EXTS_MK): $(MKFILES) all-incs $(PREP) $(RBCONFIG) $(LIBRUBY)
+ $(ECHO) generating makefile $@
+ $(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$(EXTS_MK) $(EXTMK_ARGS) configure
+
+configure-ext: $(EXTS_MK)
+
+build-ext: $(EXTS_MK)
+ $(Q)$(MAKE) -f $(EXTS_MK) $(MFLAGS) $(EXTSTATIC) LIBRUBY_EXTS=$(LIBRUBY_EXTS) ENCOBJS="$(ENCOBJS)"
+
+$(MKMAIN_CMD): $(MKFILES) all-incs $(PREP) $(RBCONFIG) $(LIBRUBY)
+ $(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$@ $(EXTMK_ARGS)
+
+prog: program wprogram
+
+$(PREP): $(MKFILES)
+
+miniruby$(EXEEXT): config.status $(ALLOBJS) $(ARCHFILE) $(DTRACE_OBJ)
+
+objs: $(ALLOBJS)
+
+GORUBY = go$(RUBY_INSTALL_NAME)
+golf: $(LIBRUBY) $(GOLFOBJS) PHONY
+ $(Q) $(MAKE) $(MFLAGS) MAINOBJ="$(GOLFOBJS)" PROGRAM=$(GORUBY)$(EXEEXT) program
+capi: $(CAPIOUT)/.timestamp PHONY
+
+$(CAPIOUT)/.timestamp: Doxyfile $(PREP)
+ $(Q) $(MAKEDIRS) "$(@D)"
+ $(ECHO) generating capi
+ $(Q) $(DOXYGEN) -b
+ $(Q) $(MINIRUBY) -e 'File.open(ARGV[0], "w"){|f| f.puts(Time.now)}' "$@"
+
+Doxyfile: $(srcdir)/template/Doxyfile.tmpl $(PREP) $(srcdir)/tool/generic_erb.rb $(RBCONFIG)
+ $(ECHO) generating $@
+ $(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -o $@ $(srcdir)/template/Doxyfile.tmpl \
+ --srcdir="$(srcdir)" --miniruby="$(MINIRUBY)"
+
+program: showflags $(PROGRAM)
+wprogram: showflags $(WPROGRAM)
+mini: PHONY miniruby$(EXEEXT)
+
+$(PROGRAM) $(WPROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP)
+
+$(LIBRUBY_A): $(OBJS) $(MAINOBJ) $(DTRACE_OBJ) $(DTRACE_GLOMMED_OBJ) $(DMYEXT) $(ARCHFILE)
+
+$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP) $(LIBRUBY_SO_UPDATE) $(BUILTIN_ENCOBJS)
+
+$(LIBRUBY_EXTS):
+ @exit > $@
+
+$(STATIC_RUBY)$(EXEEXT): $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A)
+ $(Q)$(RM) $@
+ $(PURIFY) $(CC) $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(XLDFLAGS)
+
+ruby.imp: $(EXPORTOBJS)
+ $(Q)$(NM) -Pgp $(EXPORTOBJS) | \
+ awk 'BEGIN{print "#!"}; $$2~/^[BDT]$$/&&$$1!~/^(Init_|.*_threadptr_|\.)/{print $$1}' | \
+ sort -u -o $@
+
+install: install-$(INSTALLDOC)
+docs: $(DOCTARGETS)
+pkgconfig-data: $(ruby_pc)
+$(ruby_pc): $(srcdir)/template/ruby.pc.in config.status
+
+install-all: docs pre-install-all do-install-all post-install-all
+pre-install-all:: pre-install-local pre-install-ext pre-install-doc
+do-install-all: all
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all --rdoc-output="$(RDOCOUT)"
+post-install-all:: post-install-local post-install-ext post-install-doc
+ @$(NULLCMD)
+
+install-nodoc: pre-install-nodoc do-install-nodoc post-install-nodoc
+pre-install-nodoc:: pre-install-local pre-install-ext
+do-install-nodoc: main
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS)
+post-install-nodoc:: post-install-local post-install-ext
+
+install-local: pre-install-local do-install-local post-install-local
+pre-install-local:: pre-install-bin pre-install-lib pre-install-man
+do-install-local: $(PROGRAM)
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=local
+post-install-local:: post-install-bin post-install-lib post-install-man
+
+install-ext: pre-install-ext do-install-ext post-install-ext
+pre-install-ext:: pre-install-ext-arch pre-install-ext-comm
+do-install-ext: exts
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext
+post-install-ext:: post-install-ext-arch post-install-ext-comm
+
+install-arch: pre-install-arch do-install-arch post-install-arch
+pre-install-arch:: pre-install-bin pre-install-ext-arch
+do-install-arch: main
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=arch
+post-install-arch:: post-install-bin post-install-ext-arch
+
+install-comm: pre-install-comm do-install-comm post-install-comm
+pre-install-comm:: pre-install-lib pre-install-ext-comm pre-install-man
+do-install-comm: $(PREP)
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=lib --install=ext-comm --install=man
+post-install-comm:: post-install-lib post-install-ext-comm post-install-man
+
+install-bin: pre-install-bin do-install-bin post-install-bin
+pre-install-bin:: install-prereq
+do-install-bin: $(PROGRAM)
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=bin
+post-install-bin::
+ @$(NULLCMD)
+
+install-lib: pre-install-lib do-install-lib post-install-lib
+pre-install-lib:: install-prereq
+do-install-lib: $(PREP)
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=lib
+post-install-lib::
+ @$(NULLCMD)
+
+install-ext-comm: pre-install-ext-comm do-install-ext-comm post-install-ext-comm
+pre-install-ext-comm:: install-prereq
+do-install-ext-comm: exts
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext-comm
+post-install-ext-comm::
+ @$(NULLCMD)
+
+install-ext-arch: pre-install-ext-arch do-install-ext-arch post-install-ext-arch
+pre-install-ext-arch:: install-prereq
+do-install-ext-arch: exts
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext-arch
+post-install-ext-arch::
+ @$(NULLCMD)
+
+install-man: pre-install-man do-install-man post-install-man
+pre-install-man:: install-prereq
+do-install-man: $(PREP)
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=man
+post-install-man::
+ @$(NULLCMD)
+
+install-capi: capi pre-install-capi do-install-capi post-install-capi
+pre-install-capi:: install-prereq
+do-install-capi: $(PREP)
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=capi
+post-install-capi::
+ @$(NULLCMD)
+
+what-where: no-install
+no-install: no-install-$(INSTALLDOC)
+what-where-all: no-install-all
+no-install-all: pre-no-install-all dont-install-all post-no-install-all
+pre-no-install-all:: pre-no-install-local pre-no-install-ext pre-no-install-doc
+dont-install-all: $(PROGRAM)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all --rdoc-output="$(RDOCOUT)"
+post-no-install-all:: post-no-install-local post-no-install-ext post-no-install-doc
+ @$(NULLCMD)
+
+uninstall: $(INSTALLED_LIST)
+ $(Q)$(SUDO) $(MINIRUBY) $(srcdir)/tool/rbuninstall.rb --destdir=$(DESTDIR) $(INSTALLED_LIST)
+
+reinstall: uninstall install
+
+what-where-nodoc: no-install-nodoc
+no-install-nodoc: pre-no-install-nodoc dont-install-nodoc post-no-install-nodoc
+pre-no-install-nodoc:: pre-no-install-local pre-no-install-ext
+dont-install-nodoc: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS)
+post-no-install-nodoc:: post-no-install-local post-no-install-ext
+
+what-where-local: no-install-local
+no-install-local: pre-no-install-local dont-install-local post-no-install-local
+pre-no-install-local:: pre-no-install-bin pre-no-install-lib pre-no-install-man
+dont-install-local: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=local
+post-no-install-local:: post-no-install-bin post-no-install-lib post-no-install-man
+
+what-where-ext: no-install-ext
+no-install-ext: pre-no-install-ext dont-install-ext post-no-install-ext
+pre-no-install-ext:: pre-no-install-ext-arch pre-no-install-ext-comm
+dont-install-ext: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext
+post-no-install-ext:: post-no-install-ext-arch post-no-install-ext-comm
+
+what-where-arch: no-install-arch
+no-install-arch: pre-no-install-arch dont-install-arch post-no-install-arch
+pre-no-install-arch:: pre-no-install-bin pre-no-install-ext-arch
+dont-install-arch: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=bin --install=ext-arch
+post-no-install-arch:: post-no-install-lib post-no-install-man post-no-install-ext-arch
+
+what-where-comm: no-install-comm
+no-install-comm: pre-no-install-comm dont-install-comm post-no-install-comm
+pre-no-install-comm:: pre-no-install-lib pre-no-install-ext-comm pre-no-install-man
+dont-install-comm: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=lib --install=ext-comm --install=man
+post-no-install-comm:: post-no-install-lib post-no-install-ext-comm post-no-install-man
+
+what-where-bin: no-install-bin
+no-install-bin: pre-no-install-bin dont-install-bin post-no-install-bin
+pre-no-install-bin:: install-prereq
+dont-install-bin: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=bin
+post-no-install-bin::
+ @$(NULLCMD)
+
+what-where-lib: no-install-lib
+no-install-lib: pre-no-install-lib dont-install-lib post-no-install-lib
+pre-no-install-lib:: install-prereq
+dont-install-lib: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=lib
+post-no-install-lib::
+ @$(NULLCMD)
+
+what-where-ext-comm: no-install-ext-comm
+no-install-ext-comm: pre-no-install-ext-comm dont-install-ext-comm post-no-install-ext-comm
+pre-no-install-ext-comm:: install-prereq
+dont-install-ext-comm: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext-comm
+post-no-install-ext-comm::
+ @$(NULLCMD)
+
+what-where-ext-arch: no-install-ext-arch
+no-install-ext-arch: pre-no-install-ext-arch dont-install-ext-arch post-no-install-ext-arch
+pre-no-install-ext-arch:: install-prereq
+dont-install-ext-arch: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext-arch
+post-no-install-ext-arch::
+ @$(NULLCMD)
+
+what-where-man: no-install-man
+no-install-man: pre-no-install-man dont-install-man post-no-install-man
+pre-no-install-man:: install-prereq
+dont-install-man: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=man
+post-no-install-man::
+ @$(NULLCMD)
+
+install-doc: rdoc pre-install-doc do-install-doc post-install-doc
+pre-install-doc:: install-prereq
+do-install-doc: $(PROGRAM)
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=rdoc --rdoc-output="$(RDOCOUT)"
+post-install-doc::
+ @$(NULLCMD)
+
+install-gem: pre-install-gem do-install-gem post-install-gem
+pre-install-gem:: pre-install-bin pre-install-lib pre-install-man
+do-install-gem: $(PROGRAM)
+ $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=gem
+post-install-gem::
+ @$(NULLCMD)
+
+rdoc: PHONY main
+ @echo Generating RDoc documentation
+ $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --root "$(srcdir)" --page-dir "$(srcdir)/doc" --encoding=UTF-8 --no-force-update --all --ri --op "$(RDOCOUT)" --debug $(RDOCFLAGS) "$(srcdir)"
+
+rdoc-coverage: PHONY main
+ @echo Generating RDoc coverage report
+ $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --root "$(srcdir)" --encoding=UTF-8 --all --quiet -C $(RDOCFLAGS) "$(srcdir)"
+
+RDOCBENCHOUT=/tmp/rdocbench
+
+GCBENCH_ITEM=null
+
+gcbench: PHONY
+ $(Q) $(XRUBY) "$(srcdir)/benchmark/gc/gcbench.rb" $(GCBENCH_ITEM)
+
+gcbench-rdoc: PHONY
+ $(Q) $(XRUBY) "$(srcdir)/benchmark/gc/gcbench.rb" rdoc
+
+nodoc: PHONY
+
+what-where-doc: no-install-doc
+no-install-doc: pre-no-install-doc dont-install-doc post-no-install-doc
+pre-no-install-doc:: install-prereq
+dont-install-doc:: $(PREP)
+ $(INSTRUBY) -n --make="$(MAKE)" $(INSTRUBY_ARGS) --install=rdoc --rdoc-output="$(RDOCOUT)"
+post-no-install-doc::
+ @$(NULLCMD)
+
+CLEAR_INSTALLED_LIST = clear-installed-list
+
+install-prereq: $(CLEAR_INSTALLED_LIST) yes-fake PHONY
+
+clear-installed-list: PHONY
+ @> $(INSTALLED_LIST) set MAKE="$(MAKE)"
+
+clean: clean-ext clean-local clean-enc clean-golf clean-rdoc clean-capi clean-extout clean-platform
+clean-local:: PHONY
+ $(Q)$(RM) $(OBJS) $(MINIOBJS) $(MAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES)
+ $(Q)$(RM) $(PROGRAM) $(WPROGRAM) miniruby$(EXEEXT) dmyext.$(OBJEXT) $(ARCHFILE) .*.time
+ $(Q)$(RM) y.tab.c y.output encdb.h transdb.h prelude.c config.log rbconfig.rb $(ruby_pc) probes.h probes.$(OBJEXT) probes.stamp ruby-glommed.$(OBJEXT)
+clean-ext:: PHONY
+clean-golf: PHONY
+ $(Q)$(RM) $(GORUBY)$(EXEEXT) $(GOLFOBJS)
+clean-rdoc: PHONY
+clean-capi: PHONY
+clean-platform: PHONY
+clean-extout: PHONY
+clean-docs: clean-rdoc clean-capi
+
+distclean: distclean-ext distclean-local distclean-enc distclean-golf distclean-extout distclean-platform
+distclean-local:: clean-local
+ $(Q)$(RM) $(MKFILES) yasmdata.rb *.inc
+ $(Q)$(RM) config.cache config.status config.status.lineno
+ $(Q)$(RM) *~ *.bak *.stackdump core *.core gmon.out $(PREP)
+distclean-ext:: PHONY
+distclean-golf: clean-golf
+ $(Q)$(RM) $(GOLFPRELUDES)
+distclean-rdoc: PHONY
+distclean-capi: PHONY
+distclean-extout: clean-extout
+distclean-platform: clean-platform
+
+realclean:: realclean-ext realclean-local realclean-enc realclean-golf realclean-extout
+realclean-local:: distclean-local
+ $(Q)$(RM) parse.c parse.h lex.c newline.c miniprelude.c revision.h
+realclean-ext:: PHONY
+realclean-golf: distclean-golf
+realclean-capi: PHONY
+realclean-extout: distclean-extout
+
+clean-ext distclean-ext realclean-ext::
+ $(Q)$(RM) $(EXTS_MK)
+ $(Q)$(RM) $(EXTOUT)/.timestamp/.*.time
+
+clean-enc distclean-enc realclean-enc: PHONY
+
+check: main test test-all
+ $(ECHO) check succeeded
+check-ruby: test test-ruby
+
+fake: $(CROSS_COMPILING)-fake
+yes-fake: $(arch)-fake.rb $(RBCONFIG) PHONY
+no-fake: PHONY
+
+btest: $(TEST_RUNNABLE)-btest
+no-btest: PHONY
+yes-btest: fake miniruby$(EXEEXT) PHONY
+ $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY) $(RUN_OPTS)" $(OPTS) $(TESTOPTS)
+
+btest-ruby: $(TEST_RUNNABLE)-btest-ruby
+no-btest-ruby: PHONY
+yes-btest-ruby: prog PHONY
+ $(Q)$(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib $(RUN_OPTS)" -q $(OPTS) $(TESTOPTS)
+
+test-sample: $(TEST_RUNNABLE)-test-sample
+no-test-sample: PHONY
+yes-test-sample: prog PHONY
+ $(Q)$(RUNRUBY) $(srcdir)/tool/rubytest.rb --run-opt=$(RUN_OPTS) $(OPTS) $(TESTOPTS)
+
+test-knownbugs: test-knownbug
+test-knownbug: $(TEST_RUNNABLE)-test-knownbug
+no-test-knownbug: PHONY
+yes-test-knownbug: prog PHONY
+ -$(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) $(RUN_OPTS)" $(OPTS) $(TESTOPTS) $(srcdir)/KNOWNBUGS.rb
+
+test: test-sample btest-ruby test-knownbug
+
+test-all: $(TEST_RUNNABLE)-test-all
+yes-test-all: prog PHONY
+ $(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS) $(TESTS)
+TESTS_BUILD = mkmf
+no-test-all: PHONY
+ $(MINIRUBY) -I"$(srcdir)/lib" "$(srcdir)/test/runner.rb" $(TESTOPTS) $(TESTS_BUILD)
+
+test-ruby: $(TEST_RUNNABLE)-test-ruby
+no-test-ruby: PHONY
+yes-test-ruby: prog encs PHONY
+ $(RUNRUBY) "$(srcdir)/test/runner.rb" -q $(TESTOPTS) -- ruby -ext-
+
+extconf: $(PREP)
+ $(Q) $(MAKEDIRS) "$(EXTCONFDIR)"
+ $(RUNRUBY) -C "$(EXTCONFDIR)" $(EXTCONF) $(EXTCONFARGS)
+
+$(RBCONFIG): $(srcdir)/tool/mkconfig.rb config.status $(srcdir)/version.h $(PREP)
+ $(Q)$(MINIRUBY) $(srcdir)/tool/mkconfig.rb -timestamp=$@ \
+ -install_name=$(RUBY_INSTALL_NAME) \
+ -so_name=$(RUBY_SO_NAME) rbconfig.rb
+
+test-rubyspec-precheck:
+
+test-rubyspec: test-rubyspec-precheck
+ $(RUNRUBY) $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT)
+
+RUNNABLE = $(LIBRUBY_RELATIVE:no=un)-runnable
+runnable: $(RUNNABLE) prog $(srcdir)/tool/mkrunnable.rb PHONY
+ $(Q) $(MINIRUBY) $(srcdir)/tool/mkrunnable.rb -v $(EXTOUT)
+yes-runnable: PHONY
+
+encs: enc trans
+libencs: libenc libtrans
+encs enc trans libencs libenc libtrans: showflags $(ENC_MK) $(LIBRUBY) $(PREP)
+ $(ECHO) making $@
+ $(Q) $(MAKE) -f $(ENC_MK) V="$(V)" \
+ RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" \
+ $(MFLAGS) $@
+
+
+libenc enc: {$(VPATH)}encdb.h
+libtrans trans: {$(VPATH)}transdb.h
+
+$(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc/depend \
+ $(srcdir)/enc/encinit.c.erb $(srcdir)/lib/mkmf.rb $(RBCONFIG)
+ $(ECHO) generating $@
+ $(Q) $(MINIRUBY) $(srcdir)/enc/make_encmake.rb --builtin-encs="$(BUILTIN_ENCOBJS)" --builtin-transes="$(BUILTIN_TRANSOBJS)" --module$(EXTSTATIC) $@ $(ENCS)
+
+.PRECIOUS: $(MKFILES)
+
+.PHONY: PHONY all fake prereq incs srcs preludes help
+.PHONY: test install install-nodoc install-doc dist
+.PHONY: loadpath golf capi rdoc install-prereq clear-installed-list
+.PHONY: clean clean-ext clean-local clean-enc clean-golf clean-rdoc clean-extout
+.PHONY: distclean distclean-ext distclean-local distclean-enc distclean-golf distclean-extout
+.PHONY: realclean realclean-ext realclean-local realclean-enc realclean-golf realclean-extout
+.PHONY: check test test-all btest btest-ruby test-sample test-knownbug
+.PHONY: run runruby parse benchmark benchmark-each tbench gdb gdb-ruby
+.PHONY: update-mspec update-rubyspec test-rubyspec
+
+PHONY:
+
+{$(VPATH)}parse.c: {$(VPATH)}parse.y $(srcdir)/tool/ytab.sed {$(VPATH)}id.h
+{$(VPATH)}parse.h: {$(VPATH)}parse.c
+
+{$(srcdir)}.y.c:
+ $(ECHO) generating $@
+ $(Q)$(BASERUBY) $(srcdir)/tool/id2token.rb --path-separator=.$(PATH_SEPARATOR)./ --vpath=$(VPATH) id.h $(SRC_FILE) > parse.tmp.y
+ $(Q)$(YACC) -d $(YFLAGS) -o y.tab.c parse.tmp.y
+ $(Q)$(RM) parse.tmp.y
+ $(Q)sed -f $(srcdir)/tool/ytab.sed -e "/^#/s!parse\.tmp\.[iy]!parse.y!" -e "/^#/s!y\.tab\.c!$@!" y.tab.c > $@.new
+ $(Q)$(MV) $@.new $@
+ $(Q)sed -e "/^#line.*y\.tab\.h/d;/^#line.*parse.*\.y/d" y.tab.h > $(@:.c=.h)
+ $(Q)$(RM) y.tab.c y.tab.h
+
+$(PLATFORM_D):
+ $(Q) $(MAKEDIRS) $(PLATFORM_DIR)
+ @exit > $@
+
+###
+
+RUBY_H_INCLUDES = {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h \
+ {$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h \
+ {$(VPATH)}subst.h
+ENCODING_H_INCLUDES= {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h
+PROBES_H_INCLUDES = {$(VPATH)}probes.h
+VM_CORE_H_INCLUDES = {$(VPATH)}vm_core.h {$(VPATH)}thread_$(THREAD_MODEL).h \
+ {$(VPATH)}node.h {$(VPATH)}method.h {$(VPATH)}ruby_atomic.h \
+ {$(VPATH)}vm_debug.h {$(VPATH)}id.h {$(VPATH)}thread_native.h
+
+###
+
+acosh.$(OBJEXT): {$(VPATH)}acosh.c
+alloca.$(OBJEXT): {$(VPATH)}alloca.c {$(VPATH)}config.h
+crypt.$(OBJEXT): {$(VPATH)}crypt.c
+dup2.$(OBJEXT): {$(VPATH)}dup2.c
+erf.$(OBJEXT): {$(VPATH)}erf.c
+finite.$(OBJEXT): {$(VPATH)}finite.c
+flock.$(OBJEXT): {$(VPATH)}flock.c
+memcmp.$(OBJEXT): {$(VPATH)}memcmp.c
+memmove.$(OBJEXT): {$(VPATH)}memmove.c
+mkdir.$(OBJEXT): {$(VPATH)}mkdir.c
+setproctitle.$(OBJEXT): {$(VPATH)}setproctitle.c {$(VPATH)}util.h $(RUBY_H_INCLUDES) $(hdrdir)/ruby.h
+strchr.$(OBJEXT): {$(VPATH)}strchr.c
+strdup.$(OBJEXT): {$(VPATH)}strdup.c
+strerror.$(OBJEXT): {$(VPATH)}strerror.c
+strlcat.$(OBJEXT): {$(VPATH)}strlcat.c
+strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c
+strstr.$(OBJEXT): {$(VPATH)}strstr.c
+strtod.$(OBJEXT): {$(VPATH)}strtod.c
+strtol.$(OBJEXT): {$(VPATH)}strtol.c
+nt.$(OBJEXT): {$(VPATH)}nt.c
+os2.$(OBJEXT): {$(VPATH)}os2.c
+dl_os2.$(OBJEXT): {$(VPATH)}dl_os2.c
+ia64.$(OBJEXT): {$(VPATH)}ia64.s
+ $(CC) $(CFLAGS) -c $<
+
+###
+
+addr2line.$(OBJEXT): {$(VPATH)}addr2line.c {$(VPATH)}addr2line.h {$(VPATH)}config.h
+array.$(OBJEXT): {$(VPATH)}array.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}id.h {$(VPATH)}vm_opts.h
+bignum.$(OBJEXT): {$(VPATH)}bignum.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
+ {$(VPATH)}thread.h {$(VPATH)}internal.h
+class.$(OBJEXT): {$(VPATH)}class.c $(RUBY_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}constant.h {$(VPATH)}vm_opts.h
+compar.$(OBJEXT): {$(VPATH)}compar.c $(RUBY_H_INCLUDES)
+complex.$(OBJEXT): {$(VPATH)}complex.c $(RUBY_H_INCLUDES) \
+ {$(VPATH)}internal.h $(hdrdir)/ruby.h
+dir.$(OBJEXT): {$(VPATH)}dir.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
+ $(ENCODING_H_INCLUDES) \
+ {$(VPATH)}internal.h
+dln.$(OBJEXT): {$(VPATH)}dln.c {$(VPATH)}dln.h $(RUBY_H_INCLUDES)
+dln_find.$(OBJEXT): {$(VPATH)}dln_find.c {$(VPATH)}dln.h $(RUBY_H_INCLUDES)
+dmydln.$(OBJEXT): {$(VPATH)}dmydln.c $(RUBY_H_INCLUDES)
+dmyext.$(OBJEXT): {$(VPATH)}dmyext.c
+encoding.$(OBJEXT): {$(VPATH)}encoding.c $(RUBY_H_INCLUDES) \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}regenc.h {$(VPATH)}util.h \
+ {$(VPATH)}internal.h
+enum.$(OBJEXT): {$(VPATH)}enum.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h \
+ {$(VPATH)}util.h {$(VPATH)}id.h {$(VPATH)}internal.h
+enumerator.$(OBJEXT): {$(VPATH)}enumerator.c $(RUBY_H_INCLUDES) \
+ {$(VPATH)}internal.h {$(VPATH)}node.h
+error.$(OBJEXT): {$(VPATH)}error.c {$(VPATH)}known_errors.inc \
+ $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) $(ENCODING_H_INCLUDES) \
+ {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
+eval.$(OBJEXT): {$(VPATH)}eval.c {$(VPATH)}eval_intern.h {$(VPATH)}vm.h \
+ $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}eval_error.c \
+ {$(VPATH)}eval_jump.c {$(VPATH)}gc.h {$(VPATH)}iseq.h \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h {$(VPATH)}probes_helper.h
+load.$(OBJEXT): {$(VPATH)}load.c {$(VPATH)}eval_intern.h \
+ {$(VPATH)}util.h $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) \
+ {$(VPATH)}dln.h {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h
+file.$(OBJEXT): {$(VPATH)}file.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}util.h {$(VPATH)}dln.h \
+ {$(VPATH)}internal.h
+gc.$(OBJEXT): {$(VPATH)}gc.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
+ {$(VPATH)}regex.h $(ENCODING_H_INCLUDES) $(VM_CORE_H_INCLUDES) \
+ {$(VPATH)}gc.h {$(VPATH)}io.h {$(VPATH)}eval_intern.h {$(VPATH)}util.h \
+ {$(VPATH)}internal.h {$(VPATH)}constant.h \
+ {$(VPATH)}thread.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h {$(VPATH)}debug.h
+hash.$(OBJEXT): {$(VPATH)}hash.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h
+inits.$(OBJEXT): {$(VPATH)}inits.c $(RUBY_H_INCLUDES) \
+ {$(VPATH)}internal.h
+io.$(OBJEXT): {$(VPATH)}io.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
+ {$(VPATH)}util.h $(ENCODING_H_INCLUDES) {$(VPATH)}dln.h \
+ {$(VPATH)}internal.h {$(VPATH)}thread.h {$(VPATH)}id.h {$(VPATH)}ruby_atomic.h
+main.$(OBJEXT): {$(VPATH)}main.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h {$(VPATH)}vm_debug.h {$(VPATH)}vm_opts.h $(hdrdir)/ruby.h
+marshal.$(OBJEXT): {$(VPATH)}marshal.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}util.h {$(VPATH)}internal.h
+math.$(OBJEXT): {$(VPATH)}math.c $(RUBY_H_INCLUDES) \
+ {$(VPATH)}internal.h
+node.$(OBJEXT): {$(VPATH)}node.c $(RUBY_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}vm_opts.h {$(VPATH)}internal.h
+numeric.$(OBJEXT): {$(VPATH)}numeric.c $(RUBY_H_INCLUDES) \
+ {$(VPATH)}util.h $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}id.h
+object.$(OBJEXT): {$(VPATH)}object.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
+ {$(VPATH)}internal.h {$(VPATH)}constant.h $(ENCODING_H_INCLUDES) $(PROBES_H_INCLUDES) \
+ {$(VPATH)}vm_opts.h {$(VPATH)}id.h
+pack.$(OBJEXT): {$(VPATH)}pack.c $(RUBY_H_INCLUDES) {$(VPATH)}encoding.h \
+ {$(VPATH)}oniguruma.h {$(VPATH)}internal.h
+parse.$(OBJEXT): {$(VPATH)}parse.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}id.h {$(VPATH)}regenc.h \
+ {$(VPATH)}regex.h {$(VPATH)}util.h {$(VPATH)}lex.c \
+ {$(VPATH)}defs/keywords {$(VPATH)}id.c {$(VPATH)}parse.y \
+ {$(VPATH)}parse.h {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h
+proc.$(OBJEXT): {$(VPATH)}proc.c {$(VPATH)}eval_intern.h \
+ $(RUBY_H_INCLUDES) {$(VPATH)}gc.h $(VM_CORE_H_INCLUDES) \
+ {$(VPATH)}internal.h {$(VPATH)}iseq.h {$(VPATH)}vm_opts.h
+process.$(OBJEXT): {$(VPATH)}process.c $(RUBY_H_INCLUDES) \
+ {$(VPATH)}util.h {$(VPATH)}io.h $(ENCODING_H_INCLUDES) {$(VPATH)}dln.h \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h \
+ {$(VPATH)}thread.h {$(VPATH)}vm_opts.h
+random.$(OBJEXT): {$(VPATH)}random.c $(RUBY_H_INCLUDES) \
+ {$(VPATH)}siphash.c {$(VPATH)}siphash.h {$(VPATH)}internal.h
+range.$(OBJEXT): {$(VPATH)}range.c $(RUBY_H_INCLUDES) \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}id.h
+rational.$(OBJEXT): {$(VPATH)}rational.c $(RUBY_H_INCLUDES) {$(VPATH)}internal.h $(hdrdir)/ruby.h
+re.$(OBJEXT): {$(VPATH)}re.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
+ {$(VPATH)}regex.h $(ENCODING_H_INCLUDES) {$(VPATH)}util.h \
+ {$(VPATH)}regint.h {$(VPATH)}regenc.h {$(VPATH)}internal.h
+regcomp.$(OBJEXT): {$(VPATH)}regcomp.c {$(VPATH)}regparse.h \
+ {$(VPATH)}regint.h {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h \
+ $(RUBY_H_INCLUDES)
+regenc.$(OBJEXT): {$(VPATH)}regenc.c {$(VPATH)}regint.h \
+ {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h $(RUBY_H_INCLUDES)
+regerror.$(OBJEXT): {$(VPATH)}regerror.c {$(VPATH)}regint.h \
+ {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h $(RUBY_H_INCLUDES)
+regexec.$(OBJEXT): {$(VPATH)}regexec.c {$(VPATH)}regint.h \
+ {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h $(RUBY_H_INCLUDES)
+regparse.$(OBJEXT): {$(VPATH)}regparse.c {$(VPATH)}regparse.h \
+ {$(VPATH)}regint.h {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h \
+ $(RUBY_H_INCLUDES)
+regsyntax.$(OBJEXT): {$(VPATH)}regsyntax.c {$(VPATH)}regint.h \
+ {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h $(RUBY_H_INCLUDES)
+ruby.$(OBJEXT): {$(VPATH)}ruby.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}eval_intern.h $(VM_CORE_H_INCLUDES) \
+ {$(VPATH)}dln.h {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
+safe.$(OBJEXT): {$(VPATH)}safe.c $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}vm_opts.h {$(VPATH)}internal.h
+signal.$(OBJEXT): {$(VPATH)}signal.c $(RUBY_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}vm_opts.h {$(VPATH)}internal.h {$(VPATH)}ruby_atomic.h {$(VPATH)}eval_intern.h
+sprintf.$(OBJEXT): {$(VPATH)}sprintf.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
+ {$(VPATH)}regex.h {$(VPATH)}vsnprintf.c $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h
+st.$(OBJEXT): {$(VPATH)}st.c $(RUBY_H_INCLUDES)
+strftime.$(OBJEXT): {$(VPATH)}strftime.c $(RUBY_H_INCLUDES) \
+ {$(VPATH)}timev.h $(ENCODING_H_INCLUDES)
+string.$(OBJEXT): {$(VPATH)}string.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
+ {$(VPATH)}regex.h $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}vm_opts.h {$(VPATH)}node.h {$(VPATH)}ruby_atomic.h {$(VPATH)}vm_core.h {$(VPATH)}vm_debug.h {$(VPATH)}id.h {$(VPATH)}method.h {$(VPATH)}thread_$(THREAD_MODEL).h {$(VPATH)}thread_native.h
+struct.$(OBJEXT): {$(VPATH)}struct.c $(RUBY_H_INCLUDES) {$(VPATH)}internal.h
+thread.$(OBJEXT): {$(VPATH)}thread.c {$(VPATH)}eval_intern.h \
+ $(RUBY_H_INCLUDES) {$(VPATH)}gc.h $(VM_CORE_H_INCLUDES) \
+ {$(VPATH)}thread_$(THREAD_MODEL).c $(ENCODING_H_INCLUDES) \
+ {$(VPATH)}internal.h {$(VPATH)}io.h {$(VPATH)}thread.h {$(VPATH)}timev.h {$(VPATH)}vm_opts.h
+transcode.$(OBJEXT): {$(VPATH)}transcode.c $(RUBY_H_INCLUDES) \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}transcode_data.h {$(VPATH)}internal.h
+cont.$(OBJEXT): {$(VPATH)}cont.c $(RUBY_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}gc.h {$(VPATH)}eval_intern.h \
+ {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
+time.$(OBJEXT): {$(VPATH)}time.c $(RUBY_H_INCLUDES) \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}timev.h {$(VPATH)}internal.h
+util.$(OBJEXT): {$(VPATH)}util.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
+ {$(VPATH)}internal.h
+variable.$(OBJEXT): {$(VPATH)}variable.c $(RUBY_H_INCLUDES) \
+ {$(VPATH)}node.h {$(VPATH)}util.h {$(VPATH)}encoding.h {$(VPATH)}id.h \
+ {$(VPATH)}oniguruma.h {$(VPATH)}internal.h {$(VPATH)}constant.h
+version.$(OBJEXT): {$(VPATH)}version.c $(RUBY_H_INCLUDES) \
+ $(srcdir)/include/ruby/version.h $(srcdir)/version.h $(srcdir)/revision.h {$(VPATH)}config.h
+loadpath.$(OBJEXT): {$(VPATH)}loadpath.c $(RUBY_H_INCLUDES) \
+ $(srcdir)/include/ruby/version.h $(srcdir)/version.h {$(VPATH)}config.h \
+ verconf.h
+localeinit.$(OBJEXT): {$(VPATH)}localeinit.c $(RUBY_H_INCLUDES) \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h
+miniinit.$(OBJEXT): {$(VPATH)}miniinit.c $(RUBY_H_INCLUDES) \
+ $(ENCODING_H_INCLUDES)
+
+compile.$(OBJEXT): {$(VPATH)}compile.c {$(VPATH)}iseq.h \
+ $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}insns.inc \
+ {$(VPATH)}insns_info.inc {$(VPATH)}optinsn.inc \
+ {$(VPATH)}optunifs.inc {$(VPATH)}opt_sc.inc {$(VPATH)}insns.inc \
+ {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
+iseq.$(OBJEXT): {$(VPATH)}iseq.c {$(VPATH)}gc.h {$(VPATH)}iseq.h \
+ $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}insns.inc \
+ {$(VPATH)}insns_info.inc {$(VPATH)}node_name.inc {$(VPATH)}internal.h {$(VPATH)}vm_opts.h {$(VPATH)}ruby_atomic.h {$(VPATH)}eval_intern.h
+vm.$(OBJEXT): {$(VPATH)}vm.c {$(VPATH)}gc.h {$(VPATH)}iseq.h \
+ {$(VPATH)}eval_intern.h $(RUBY_H_INCLUDES) $(ENCODING_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}vm_method.c {$(VPATH)}vm_eval.c \
+ {$(VPATH)}vm_insnhelper.c {$(VPATH)}vm_insnhelper.h {$(VPATH)}vm_exec.c \
+ {$(VPATH)}vm_exec.h {$(VPATH)}insns.def {$(VPATH)}vmtc.inc \
+ {$(VPATH)}vm.inc {$(VPATH)}insns.inc \
+ {$(VPATH)}internal.h {$(VPATH)}vm.h {$(VPATH)}constant.h \
+ $(PROBES_H_INCLUDES) {$(VPATH)}probes_helper.h {$(VPATH)}vm_opts.h
+vm_dump.$(OBJEXT): {$(VPATH)}vm_dump.c $(RUBY_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}addr2line.h \
+ {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
+debug.$(OBJEXT): {$(VPATH)}debug.c $(RUBY_H_INCLUDES) \
+ $(ENCODING_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}eval_intern.h \
+ {$(VPATH)}util.h {$(VPATH)}vm_opts.h {$(VPATH)}internal.h
+id.$(OBJEXT): {$(VPATH)}id.c $(RUBY_H_INCLUDES) {$(VPATH)}id.h {$(VPATH)}vm_opts.h
+vm_backtrace.$(OBJEXT): {$(VPATH)}vm_backtrace.c \
+ $(VM_CORE_H_INCLUDES) $(RUBY_H_INCLUDES) $(ENCODING_H_INCLUDES) \
+ {$(VPATH)}internal.h {$(VPATH)}iseq.h {$(VPATH)}debug.h {$(VPATH)}vm_opts.h {$(VPATH)}ruby_atomic.h {$(VPATH)}eval_intern.h
+vm_trace.$(OBJEXT): {$(VPATH)}vm_trace.c $(ENCODING_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) $(RUBY_H_INCLUDES) {$(VPATH)}debug.h \
+ {$(VPATH)}internal.h {$(VPATH)}vm_opts.h {$(VPATH)}ruby_atomic.h {$(VPATH)}eval_intern.h
+miniprelude.$(OBJEXT): {$(VPATH)}miniprelude.c $(RUBY_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
+prelude.$(OBJEXT): {$(VPATH)}prelude.c $(RUBY_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
+golf_prelude.$(OBJEXT): {$(VPATH)}golf_prelude.c $(RUBY_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}vm_opts.h
+goruby.$(OBJEXT): {$(VPATH)}goruby.c {$(VPATH)}main.c $(RUBY_H_INCLUDES) \
+ {$(VPATH)}vm_debug.h {$(VPATH)}node.h $(hdrdir)/ruby.h
+
+sizes.$(OBJEXT): {$(VPATH)}sizes.c $(RUBY_H_INCLUDES)
+
+ascii.$(OBJEXT): {$(VPATH)}ascii.c {$(VPATH)}regenc.h {$(VPATH)}config.h \
+ {$(VPATH)}oniguruma.h {$(VPATH)}missing.h $(RUBY_H_INCLUDES)
+us_ascii.$(OBJEXT): {$(VPATH)}us_ascii.c {$(VPATH)}regenc.h \
+ {$(VPATH)}config.h {$(VPATH)}oniguruma.h {$(VPATH)}missing.h $(RUBY_H_INCLUDES)
+unicode.$(OBJEXT): {$(VPATH)}unicode.c {$(VPATH)}regint.h \
+ {$(VPATH)}config.h {$(VPATH)}defines.h {$(VPATH)}regenc.h \
+ {$(VPATH)}oniguruma.h {$(VPATH)}st.h {$(VPATH)}ruby.h \
+ {$(VPATH)}missing.h {$(VPATH)}intern.h \
+ {$(VPATH)}enc/unicode/name2ctype.h {$(VPATH)}enc/unicode/casefold.h \
+ {$(VPATH)}subst.h $(RUBY_H_INCLUDES)
+
+utf_8.$(OBJEXT): {$(VPATH)}utf_8.c {$(VPATH)}regenc.h {$(VPATH)}config.h \
+ {$(VPATH)}oniguruma.h {$(VPATH)}missing.h $(RUBY_H_INCLUDES)
+
+win32/win32.$(OBJEXT): {$(VPATH)}win32/win32.c {$(VPATH)}dln.h {$(VPATH)}dln_find.c \
+ {$(VPATH)}internal.h $(RUBY_H_INCLUDES) $(PLATFORM_D)
+win32/file.$(OBJEXT): {$(VPATH)}win32/file.c $(RUBY_H_INCLUDES) $(PLATFORM_D)
+
+$(NEWLINE_C): $(srcdir)/enc/trans/newline.trans $(srcdir)/tool/transcode-tblgen.rb
+ $(Q) $(BASERUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo $@ $(srcdir)/enc/trans/newline.trans
+newline.$(OBJEXT): $(NEWLINE_C) {$(VPATH)}defines.h \
+ {$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h \
+ {$(VPATH)}transcode_data.h {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}subst.h
+
+verconf.h: $(srcdir)/template/verconf.h.in $(srcdir)/tool/generic_erb.rb $(RBCONFIG)
+ $(ECHO) creating $@
+ $(Q) $(MINIRUBY) "$(srcdir)/tool/generic_erb.rb" $(srcdir)/template/verconf.h.in > $@
+
+DTRACE_DEPENDENT_OBJS = array.$(OBJEXT) \
+ eval.$(OBJEXT) \
+ gc.$(OBJEXT) \
+ hash.$(OBJEXT) \
+ load.$(OBJEXT) \
+ object.$(OBJEXT) \
+ parse.$(OBJEXT) \
+ string.$(OBJEXT) \
+ vm.$(OBJEXT)
+
+probes.$(OBJEXT): $(DTRACE_DEPENDENT_OBJS)
+ruby-glommed.$(OBJEXT): $(OBJS) $(DTRACE_OBJ)
+
+$(OBJS): {$(VPATH)}config.h {$(VPATH)}missing.h
+
+INSNS2VMOPT = --srcdir="$(srcdir)"
+
+{$(VPATH)}minsns.inc: $(srcdir)/template/minsns.inc.tmpl
+
+{$(VPATH)}opt_sc.inc: $(srcdir)/template/opt_sc.inc.tmpl
+
+{$(VPATH)}optinsn.inc: $(srcdir)/template/optinsn.inc.tmpl
+
+{$(VPATH)}optunifs.inc: $(srcdir)/template/optunifs.inc.tmpl
+
+{$(VPATH)}insns.inc: $(srcdir)/template/insns.inc.tmpl
+
+{$(VPATH)}insns_info.inc: $(srcdir)/template/insns_info.inc.tmpl
+
+{$(VPATH)}vmtc.inc: $(srcdir)/template/vmtc.inc.tmpl
+
+{$(VPATH)}vm.inc: $(srcdir)/template/vm.inc.tmpl
+
+srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}newline.c {$(VPATH)}id.c srcs-ext srcs-enc
+
+EXT_SRCS = $(srcdir)/ext/ripper/ripper.c $(srcdir)/ext/json/parser/parser.c \
+ $(srcdir)/ext/dl/callback/callback.c $(srcdir)/ext/rbconfig/sizeof/sizes.c
+
+srcs-ext: $(EXT_SRCS)
+
+srcs-enc: $(ENC_MK)
+ $(ECHO) making srcs under enc
+ $(Q) $(MAKE) -f $(ENC_MK) RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(MFLAGS) srcs
+
+all-incs: incs
+incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}encdb.h {$(VPATH)}transdb.h {$(VPATH)}known_errors.inc \
+ $(srcdir)/revision.h $(REVISION_H) enc/unicode/name2ctype.h {$(VPATH)}id.h {$(VPATH)}probes.dmyh
+
+insns: $(INSNS)
+
+id.h: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.h.tmpl $(srcdir)/defs/id.def
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
+ $(srcdir)/template/id.h.tmpl
+
+id.c: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.c.tmpl $(srcdir)/defs/id.def
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
+ $(srcdir)/template/id.c.tmpl
+
+node_name.inc: {$(VPATH)}node.h
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) -n $(srcdir)/tool/node_name.rb < $? > $@
+
+encdb.h: $(PREP) $(srcdir)/tool/generic_erb.rb $(srcdir)/template/encdb.h.tmpl
+ $(ECHO) generating $@
+ $(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/encdb.h.tmpl $(srcdir)/enc enc
+
+transdb.h: $(PREP) srcs-enc $(srcdir)/tool/generic_erb.rb $(srcdir)/template/transdb.h.tmpl
+ $(ECHO) generating $@
+ $(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/transdb.h.tmpl $(srcdir)/enc/trans enc/trans
+
+enc/encinit.c: $(ENC_MK) $(srcdir)/enc/encinit.c.erb
+
+known_errors.inc: $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
+
+$(MINIPRELUDE_C): $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb
+ $(ECHO) generating $@
+ $(Q) $(BASERUBY) -I$(srcdir) $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb $@
+
+prelude.c: $(srcdir)/tool/compile_prelude.rb $(RBCONFIG) \
+ $(srcdir)/lib/rubygems/defaults.rb \
+ $(srcdir)/lib/rubygems/core_ext/kernel_gem.rb \
+ $(PRELUDE_SCRIPTS) $(PREP)
+ $(ECHO) generating $@
+ $(Q) $(COMPILE_PRELUDE) $(PRELUDE_SCRIPTS) $@
+
+golf_prelude.c: $(srcdir)/tool/compile_prelude.rb $(RBCONFIG) $(srcdir)/prelude.rb $(srcdir)/golf_prelude.rb $(PREP)
+ $(ECHO) generating $@
+ $(Q) $(COMPILE_PRELUDE) $(srcdir)/golf_prelude.rb $@
+
+probes.dmyh: {$(srcdir)}probes.d $(srcdir)/tool/gen_dummy_probes.rb
+ $(BASERUBY) $(srcdir)/tool/gen_dummy_probes.rb $(srcdir)/probes.d > $@
+
+probes.h: {$(VPATH)}probes.$(DTRACE_EXT)
+
+prereq: incs srcs preludes PHONY
+
+preludes: {$(VPATH)}miniprelude.c
+preludes: {$(srcdir)}golf_prelude.c
+
+$(srcdir)/revision.h:
+ @exit > $@
+
+$(REVISION_H): $(srcdir)/version.h $(srcdir)/ChangeLog $(srcdir)/tool/file2lastrev.rb $(REVISION_FORCE)
+ -$(Q) $(BASERUBY) $(srcdir)/tool/file2lastrev.rb --revision.h "$(srcdir)" > revision.tmp
+ $(Q)$(IFCHANGE) "--timestamp=$@" "$(srcdir)/revision.h" revision.tmp
+
+$(srcdir)/ext/ripper/ripper.c: parse.y id.h
+ $(ECHO) generating $@
+ $(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f depend $(MFLAGS) \
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. RUBY="$(BASERUBY)" PATH_SEPARATOR="$(PATH_SEPARATOR)"
+
+$(srcdir)/ext/json/parser/parser.c: $(srcdir)/ext/json/parser/parser.rl
+ $(ECHO) generating $@
+ $(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f prereq.mk $(MFLAGS) \
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. BASERUBY="$(BASERUBY)"
+
+$(srcdir)/ext/dl/callback/callback.c: $(srcdir)/ext/dl/callback/mkcallback.rb $(srcdir)/ext/dl/dl.h
+ $(ECHO) generating $@
+ $(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f depend $(MFLAGS) \
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. RUBY="$(BASERUBY)"
+
+$(srcdir)/ext/rbconfig/sizeof/sizes.c: $(srcdir)/ext/rbconfig/sizeof/depend \
+ $(srcdir)/tool/generic_erb.rb $(srcdir)/template/sizes.c.tmpl $(srcdir)/configure.in
+ $(ECHO) generating $@
+ $(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f depend $(MFLAGS) \
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. RUBY="$(BASERUBY)"
+
+##
+
+run: fake miniruby$(EXEEXT) PHONY
+ $(BTESTRUBY) $(TESTRUN_SCRIPT) $(RUNOPT)
+
+runruby: $(PROGRAM) PHONY
+ $(RUNRUBY) $(TESTRUN_SCRIPT)
+
+parse: fake miniruby$(EXEEXT) PHONY
+ $(BTESTRUBY) $(srcdir)/tool/parse.rb $(TESTRUN_SCRIPT)
+
+bisect: PHONY
+ $(srcdir)/tool/bisect.sh miniruby $(srcdir)
+
+bisect-ruby: PHONY
+ $(srcdir)/tool/bisect.sh ruby $(srcdir)
+
+COMPARE_RUBY = $(BASERUBY)
+ITEM =
+OPTS =
+
+benchmark: $(PROGRAM) PHONY
+ $(BASERUBY) $(srcdir)/benchmark/driver.rb -v \
+ --executables="$(COMPARE_RUBY); built-ruby::$(RUNRUBY)" \
+ --pattern='bm_' --directory=$(srcdir)/benchmark $(OPTS)
+
+benchmark-each: $(PROGRAM) PHONY
+ $(BASERUBY) $(srcdir)/benchmark/driver.rb -v \
+ --executables="$(COMPARE_RUBY); built-ruby::$(RUNRUBY)" \
+ --pattern=$(ITEM) --directory=$(srcdir)/benchmark $(OPTS)
+
+tbench: $(PROGRAM) PHONY
+ $(BASERUBY) $(srcdir)/benchmark/driver.rb -v \
+ --executables="$(COMPARE_RUBY); built-ruby::$(RUNRUBY)" \
+ --pattern='bmx_' --directory=$(srcdir)/benchmark $(OPTS)
+
+run.gdb:
+ echo b ruby_debug_breakpoint > run.gdb
+ echo '# handle SIGINT nostop' >> run.gdb
+ echo '# handle SIGPIPE nostop' >> run.gdb
+ echo '# b rb_longjmp' >> run.gdb
+ echo source $(srcdir)/breakpoints.gdb >> run.gdb
+ echo source $(srcdir)/.gdbinit >> run.gdb
+ echo 'set $$_exitcode = -999' >> run.gdb
+ echo run >> run.gdb
+ echo 'if $$_exitcode != -999' >> run.gdb
+ echo ' quit' >> run.gdb
+ echo end >> run.gdb
+
+
+gdb: miniruby$(EXEEXT) run.gdb PHONY
+ gdb -x run.gdb --quiet --args $(MINIRUBY) $(TESTRUN_SCRIPT)
+
+gdb-ruby: $(PROGRAM) run.gdb PHONY
+ $(Q) $(RUNRUBY_COMMAND) $(RUNRUBY_DEBUGGER) -- $(TESTRUN_SCRIPT)
+
+dist:
+ $(BASERUBY) $(srcdir)/tool/make-snapshot tmp $(RELNAME)
+
+up::
+ -$(Q)$(MAKE) $(MFLAGS) REVISION_FORCE=PHONY "$(REVISION_H)"
+
+update-config_files: $(srcdir)/tool/config.guess $(srcdir)/tool/config.sub
+$(srcdir)/tool/config.guess:
+ $(Q) $(BASERUBY) -C $(@D) get-config_files $(@F)
+$(srcdir)/tool/config.sub:
+ $(Q) $(BASERUBY) -C $(@D) get-config_files $(@F)
+
+info: info-program info-libruby_a info-libruby_so info-arch
+info-program:
+ @echo PROGRAM=$(PROGRAM)
+info-libruby_a:
+ @echo LIBRUBY_A=$(LIBRUBY_A)
+info-libruby_so:
+ @echo LIBRUBY_SO=$(LIBRUBY_SO)
+info-arch:
+ @echo arch=$(arch)
+
+change: PHONY
+ $(BASERUBY) -C "$(srcdir)" ./tool/change_maker.rb $(CHANGES) > change.log
+
+love: sudo-precheck up all test install test-all
+ @echo love is all you need
+
+yes-test-all: sudo-precheck
+
+sudo-precheck:
+ @$(SUDO) echo > $(NULL)
+
+help: PHONY
+ $(MESSAGE_BEGIN) \
+ " Makefile of Ruby" \
+ "" \
+ "targets:" \
+ " all (default): builds all of below" \
+ " miniruby: builds only miniruby" \
+ " encs: builds encodings" \
+ " exts: builds extensions" \
+ " main: builds encodings, extensions and ruby" \
+ " docs: builds documents" \
+ " run: runs test.rb by miniruby" \
+ " runruby: runs test.rb by ruby you just built" \
+ " gdb: runs test.rb by miniruby under gdb" \
+ " gdb-ruby: runs test.rb by ruby under gdb" \
+ " check: equals make test test-all" \
+ " test: ruby core tests" \
+ " test-all: all ruby tests [TESTS=<test files>]" \
+ " test-rubyspec: run RubySpec test suite" \
+ " update-rubyspec: update local copy of RubySpec" \
+ " benchmark: benchmark this ruby and COMPARE_RUBY" \
+ " gcbench: gc benchmark [GCBENCH_ITEM=<item_name>]" \
+ " gcbench-rdoc: gc benchmark with GCBENCH_ITEM=rdoc" \
+ " install: install all ruby distributions" \
+ " install-nodoc: install without rdoc" \
+ " install-cross: install cross compiling staff" \
+ " clean: clean for tarball" \
+ " distclean: clean for repository" \
+ " change: make change log template" \
+ " golf: for golfers" \
+ "" \
+ "see DeveloperHowto for more detail: " \
+ " http://bugs.ruby-lang.org/wiki/ruby/DeveloperHowto" \
+ $(MESSAGE_END)
diff --git a/compar.c b/compar.c
index b3cfac2c69..2f4db291a4 100644
--- a/compar.c
+++ b/compar.c
@@ -1,100 +1,245 @@
-/************************************************
+/**********************************************************************
compar.c -
- $Author: matz $
- $Date: 1996/12/25 09:19:05 $
+ $Author$
created at: Thu Aug 26 14:39:48 JST 1993
- Copyright (C) 1993-1996 Yukihiro Matsumoto
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
-************************************************/
+**********************************************************************/
-#include "ruby.h"
+#include "ruby/ruby.h"
-VALUE mComparable;
+VALUE rb_mComparable;
static ID cmp;
+void
+rb_cmperr(VALUE x, VALUE y)
+{
+ const char *classname;
+
+ if (SPECIAL_CONST_P(y)) {
+ y = rb_inspect(y);
+ classname = StringValuePtr(y);
+ }
+ else {
+ classname = rb_obj_classname(y);
+ }
+ rb_raise(rb_eArgError, "comparison of %s with %s failed",
+ rb_obj_classname(x), classname);
+}
+
static VALUE
-cmp_eq(x, y)
- VALUE x, y;
+invcmp_recursive(VALUE x, VALUE y, int recursive)
{
- VALUE c = rb_funcall(x, cmp, 1, y);
- int t = NUM2INT(c);
+ if (recursive) return Qnil;
+ return rb_check_funcall(y, cmp, 1, &x);
+}
- if (t == 0) return TRUE;
- return FALSE;
+VALUE
+rb_invcmp(VALUE x, VALUE y)
+{
+ VALUE invcmp = rb_exec_recursive(invcmp_recursive, x, y);
+ if (invcmp == Qundef || NIL_P(invcmp)) {
+ return Qnil;
+ }
+ else {
+ int result = -rb_cmpint(invcmp, x, y);
+ return INT2FIX(result);
+ }
}
static VALUE
-cmp_gt(x, y)
- VALUE x, y;
+cmp_eq_recursive(VALUE arg1, VALUE arg2, int recursive)
+{
+ if (recursive) return Qfalse;
+ return rb_funcallv(arg1, cmp, 1, &arg2);
+}
+
+static VALUE
+cmp_eq(VALUE *a)
+{
+ VALUE c = rb_exec_recursive_paired_outer(cmp_eq_recursive, a[0], a[1], a[1]);
+
+ if (NIL_P(c)) return Qfalse;
+ if (rb_cmpint(c, a[0], a[1]) == 0) return Qtrue;
+ return Qfalse;
+}
+
+static VALUE
+cmp_failed(void)
+{
+ return Qfalse;
+}
+
+/*
+ * call-seq:
+ * obj == other -> true or false
+ *
+ * Compares two objects based on the receiver's <code><=></code>
+ * method, returning true if it returns 0. Also returns true if
+ * _obj_ and _other_ are the same object.
+ *
+ * Even if _obj_ <=> _other_ raised an exception, the exception
+ * is ignored and returns false.
+ */
+
+static VALUE
+cmp_equal(VALUE x, VALUE y)
+{
+ VALUE a[2];
+
+ if (x == y) return Qtrue;
+
+ a[0] = x; a[1] = y;
+ return rb_rescue(cmp_eq, (VALUE)a, cmp_failed, 0);
+}
+
+/*
+ * call-seq:
+ * obj > other -> true or false
+ *
+ * Compares two objects based on the receiver's <code><=></code>
+ * method, returning true if it returns 1.
+ */
+
+static VALUE
+cmp_gt(VALUE x, VALUE y)
{
VALUE c = rb_funcall(x, cmp, 1, y);
- int t = NUM2INT(c);
- if (t > 0) return TRUE;
- return FALSE;
+ if (rb_cmpint(c, x, y) > 0) return Qtrue;
+ return Qfalse;
}
+/*
+ * call-seq:
+ * obj >= other -> true or false
+ *
+ * Compares two objects based on the receiver's <code><=></code>
+ * method, returning true if it returns 0 or 1.
+ */
+
static VALUE
-cmp_ge(x, y)
- VALUE x, y;
+cmp_ge(VALUE x, VALUE y)
{
VALUE c = rb_funcall(x, cmp, 1, y);
- int t = NUM2INT(c);
- if (t >= 0) return TRUE;
- return FALSE;
+ if (rb_cmpint(c, x, y) >= 0) return Qtrue;
+ return Qfalse;
}
+/*
+ * call-seq:
+ * obj < other -> true or false
+ *
+ * Compares two objects based on the receiver's <code><=></code>
+ * method, returning true if it returns -1.
+ */
+
static VALUE
-cmp_lt(x, y)
- VALUE x, y;
+cmp_lt(VALUE x, VALUE y)
{
VALUE c = rb_funcall(x, cmp, 1, y);
- int t = NUM2INT(c);
- if (t < 0) return TRUE;
- return FALSE;
+ if (rb_cmpint(c, x, y) < 0) return Qtrue;
+ return Qfalse;
}
+/*
+ * call-seq:
+ * obj <= other -> true or false
+ *
+ * Compares two objects based on the receiver's <code><=></code>
+ * method, returning true if it returns -1 or 0.
+ */
+
static VALUE
-cmp_le(x, y)
- VALUE x, y;
+cmp_le(VALUE x, VALUE y)
{
VALUE c = rb_funcall(x, cmp, 1, y);
- int t = NUM2INT(c);
- if (t <= 0) return TRUE;
- return FALSE;
+ if (rb_cmpint(c, x, y) <= 0) return Qtrue;
+ return Qfalse;
}
+/*
+ * call-seq:
+ * obj.between?(min, max) -> true or false
+ *
+ * Returns <code>false</code> if <i>obj</i> <code><=></code>
+ * <i>min</i> is less than zero or if <i>anObject</i> <code><=></code>
+ * <i>max</i> is greater than zero, <code>true</code> otherwise.
+ *
+ * 3.between?(1, 5) #=> true
+ * 6.between?(1, 5) #=> false
+ * 'cat'.between?('ant', 'dog') #=> true
+ * 'gnu'.between?('ant', 'dog') #=> false
+ *
+ */
+
static VALUE
-cmp_between(x, min, max)
- VALUE x, min, max;
+cmp_between(VALUE x, VALUE min, VALUE max)
{
- VALUE c = rb_funcall(x, cmp, 1, min);
- int t = NUM2INT(c);
- if (t < 0) return FALSE;
-
- c = rb_funcall(x, cmp, 1, max);
- t = NUM2INT(c);
- if (t > 0) return FALSE;
- return TRUE;
+ if (RTEST(cmp_lt(x, min))) return Qfalse;
+ if (RTEST(cmp_gt(x, max))) return Qfalse;
+ return Qtrue;
}
+/*
+ * The <code>Comparable</code> mixin is used by classes whose objects
+ * may be ordered. The class must define the <code><=></code> operator,
+ * which compares the receiver against another object, returning -1, 0,
+ * or +1 depending on whether the receiver is less than, equal to, or
+ * greater than the other object. If the other object is not comparable
+ * then the <code><=></code> operator should return nil.
+ * <code>Comparable</code> uses
+ * <code><=></code> to implement the conventional comparison operators
+ * (<code><</code>, <code><=</code>, <code>==</code>, <code>>=</code>,
+ * and <code>></code>) and the method <code>between?</code>.
+ *
+ * class SizeMatters
+ * include Comparable
+ * attr :str
+ * def <=>(anOther)
+ * str.size <=> anOther.str.size
+ * end
+ * def initialize(str)
+ * @str = str
+ * end
+ * def inspect
+ * @str
+ * end
+ * end
+ *
+ * s1 = SizeMatters.new("Z")
+ * s2 = SizeMatters.new("YY")
+ * s3 = SizeMatters.new("XXX")
+ * s4 = SizeMatters.new("WWWW")
+ * s5 = SizeMatters.new("VVVVV")
+ *
+ * s1 < s2 #=> true
+ * s4.between?(s1, s3) #=> false
+ * s4.between?(s3, s5) #=> true
+ * [ s3, s2, s5, s4, s1 ].sort #=> [Z, YY, XXX, WWWW, VVVVV]
+ *
+ */
+
void
-Init_Comparable()
+Init_Comparable(void)
{
- mComparable = rb_define_module("Comparable");
- rb_define_method(mComparable, "==", cmp_eq, 1);
- rb_define_method(mComparable, ">", cmp_gt, 1);
- rb_define_method(mComparable, ">=", cmp_ge, 1);
- rb_define_method(mComparable, "<", cmp_lt, 1);
- rb_define_method(mComparable, "<=", cmp_le, 1);
- rb_define_method(mComparable, "between?", cmp_between, 2);
+#undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
+
+ rb_mComparable = rb_define_module("Comparable");
+ rb_define_method(rb_mComparable, "==", cmp_equal, 1);
+ rb_define_method(rb_mComparable, ">", cmp_gt, 1);
+ rb_define_method(rb_mComparable, ">=", cmp_ge, 1);
+ rb_define_method(rb_mComparable, "<", cmp_lt, 1);
+ rb_define_method(rb_mComparable, "<=", cmp_le, 1);
+ rb_define_method(rb_mComparable, "between?", cmp_between, 2);
cmp = rb_intern("<=>");
}
diff --git a/compile.c b/compile.c
new file mode 100644
index 0000000000..2b58462d16
--- /dev/null
+++ b/compile.c
@@ -0,0 +1,5933 @@
+/**********************************************************************
+
+ compile.c - ruby node tree -> VM instruction sequence
+
+ $Author$
+ created at: 04/01/01 03:42:15 JST
+
+ Copyright (C) 2004-2007 Koichi Sasada
+
+**********************************************************************/
+
+#include "ruby/ruby.h"
+#include "internal.h"
+#include <math.h>
+
+#define USE_INSN_STACK_INCREASE 1
+#include "vm_core.h"
+#include "iseq.h"
+#include "insns.inc"
+#include "insns_info.inc"
+
+#define FIXNUM_INC(n, i) ((n)+(INT2FIX(i)&~FIXNUM_FLAG))
+#define FIXNUM_OR(n, i) ((n)|INT2FIX(i))
+
+typedef struct iseq_link_element {
+ enum {
+ ISEQ_ELEMENT_NONE,
+ ISEQ_ELEMENT_LABEL,
+ ISEQ_ELEMENT_INSN,
+ ISEQ_ELEMENT_ADJUST
+ } type;
+ struct iseq_link_element *next;
+ struct iseq_link_element *prev;
+} LINK_ELEMENT;
+
+typedef struct iseq_link_anchor {
+ LINK_ELEMENT anchor;
+ LINK_ELEMENT *last;
+} LINK_ANCHOR;
+
+typedef struct iseq_label_data {
+ LINK_ELEMENT link;
+ int label_no;
+ int position;
+ int sc_state;
+ int set;
+ int sp;
+} LABEL;
+
+typedef struct iseq_insn_data {
+ LINK_ELEMENT link;
+ enum ruby_vminsn_type insn_id;
+ unsigned int line_no;
+ int operand_size;
+ int sc_state;
+ VALUE *operands;
+} INSN;
+
+typedef struct iseq_adjust_data {
+ LINK_ELEMENT link;
+ LABEL *label;
+ int line_no;
+} ADJUST;
+
+struct ensure_range {
+ LABEL *begin;
+ LABEL *end;
+ struct ensure_range *next;
+};
+
+struct iseq_compile_data_ensure_node_stack {
+ NODE *ensure_node;
+ struct iseq_compile_data_ensure_node_stack *prev;
+ struct ensure_range *erange;
+};
+
+/**
+ * debug function(macro) interface depend on CPDEBUG
+ * if it is less than 0, runtime option is in effect.
+ *
+ * debug level:
+ * 0: no debug output
+ * 1: show node type
+ * 2: show node important parameters
+ * ...
+ * 5: show other parameters
+ * 10: show every AST array
+ */
+
+#ifndef CPDEBUG
+#define CPDEBUG 0
+#endif
+
+#if CPDEBUG >= 0
+#define compile_debug CPDEBUG
+#else
+#define compile_debug iseq->compile_data->option->debug_level
+#endif
+
+#if CPDEBUG
+
+#define compile_debug_print_indent(level) \
+ ruby_debug_print_indent((level), compile_debug, gl_node_level * 2)
+
+#define debugp(header, value) (void) \
+ (compile_debug_print_indent(1) && \
+ ruby_debug_print_value(1, compile_debug, (header), (value)))
+
+#define debugi(header, id) (void) \
+ (compile_debug_print_indent(1) && \
+ ruby_debug_print_id(1, compile_debug, (header), (id)))
+
+#define debugp_param(header, value) (void) \
+ (compile_debug_print_indent(1) && \
+ ruby_debug_print_value(1, compile_debug, (header), (value)))
+
+#define debugp_verbose(header, value) (void) \
+ (compile_debug_print_indent(2) && \
+ ruby_debug_print_value(2, compile_debug, (header), (value)))
+
+#define debugp_verbose_node(header, value) (void) \
+ (compile_debug_print_indent(10) && \
+ ruby_debug_print_value(10, compile_debug, (header), (value)))
+
+#define debug_node_start(node) ((void) \
+ (compile_debug_print_indent(1) && \
+ (ruby_debug_print_node(1, CPDEBUG, "", (NODE *)(node)), gl_node_level)), \
+ gl_node_level++)
+
+#define debug_node_end() gl_node_level --
+
+#else
+
+static inline ID
+r_id(ID id)
+{
+ return id;
+}
+
+static inline VALUE
+r_value(VALUE value)
+{
+ return value;
+}
+
+#define debugi(header, id) r_id(id)
+#define debugp(header, value) r_value(value)
+#define debugp_verbose(header, value) r_value(value)
+#define debugp_verbose_node(header, value) r_value(value)
+#define debugp_param(header, value) r_value(value)
+#define debug_node_start(node) ((void)0)
+#define debug_node_end() ((void)0)
+#endif
+
+#if CPDEBUG > 1 || CPDEBUG < 0
+#define debugs if (compile_debug_print_indent(1)) ruby_debug_printf
+#define debug_compile(msg, v) ((void)(compile_debug_print_indent(1) && fputs((msg), stderr)), (v))
+#else
+#define debugs if(0)printf
+#define debug_compile(msg, v) (v)
+#endif
+
+
+/* create new label */
+#define NEW_LABEL(l) new_label_body(iseq, (l))
+
+#define iseq_path(iseq) \
+ (((rb_iseq_t*)DATA_PTR(iseq))->location.path)
+
+#define iseq_absolute_path(iseq) \
+ (((rb_iseq_t*)DATA_PTR(iseq))->location.absolute_path)
+
+#define NEW_ISEQVAL(node, name, type, line_no) \
+ new_child_iseq(iseq, (node), (name), 0, (type), (line_no))
+
+#define NEW_CHILD_ISEQVAL(node, name, type, line_no) \
+ new_child_iseq(iseq, (node), (name), iseq->self, (type), (line_no))
+
+/* add instructions */
+#define ADD_SEQ(seq1, seq2) \
+ APPEND_LIST((seq1), (seq2))
+
+/* add an instruction */
+#define ADD_INSN(seq, line, insn) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0))
+
+/* add an instruction with some operands (1, 2, 3, 5) */
+#define ADD_INSN1(seq, line, insn, op1) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) \
+ new_insn_body(iseq, (line), BIN(insn), 1, (VALUE)(op1)))
+
+/* add an instruction with label operand (alias of ADD_INSN1) */
+#define ADD_INSNL(seq, line, insn, label) ADD_INSN1(seq, line, insn, label)
+
+#define ADD_INSN2(seq, line, insn, op1, op2) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) \
+ new_insn_body(iseq, (line), BIN(insn), 2, (VALUE)(op1), (VALUE)(op2)))
+
+#define ADD_INSN3(seq, line, insn, op1, op2, op3) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) \
+ new_insn_body(iseq, (line), BIN(insn), 3, (VALUE)(op1), (VALUE)(op2), (VALUE)(op3)))
+
+/* Specific Insn factory */
+#define ADD_SEND(seq, line, id, argc) \
+ ADD_SEND_R((seq), (line), (id), (argc), (VALUE)Qfalse, (VALUE)INT2FIX(0))
+
+#define ADD_CALL_RECEIVER(seq, line) \
+ ADD_INSN((seq), (line), putself)
+
+#define ADD_CALL(seq, line, id, argc) \
+ ADD_SEND_R((seq), (line), (id), (argc), (VALUE)Qfalse, (VALUE)INT2FIX(VM_CALL_FCALL))
+
+#define ADD_CALL_WITH_BLOCK(seq, line, id, argc, block) \
+ ADD_SEND_R((seq), (line), (id), (argc), (block), (VALUE)INT2FIX(VM_CALL_FCALL))
+
+#define ADD_SEND_R(seq, line, id, argc, block, flag) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) \
+ new_insn_send(iseq, (line), \
+ (VALUE)(id), (VALUE)(argc), (VALUE)(block), (VALUE)(flag)))
+
+#define ADD_TRACE(seq, line, event) \
+ do { \
+ if ((event) == RUBY_EVENT_LINE && iseq->coverage && \
+ (line) != iseq->compile_data->last_coverable_line) { \
+ RARRAY_ASET(iseq->coverage, (line) - 1, INT2FIX(0)); \
+ iseq->compile_data->last_coverable_line = (line); \
+ ADD_INSN1((seq), (line), trace, INT2FIX(RUBY_EVENT_COVERAGE)); \
+ } \
+ if (iseq->compile_data->option->trace_instruction) { \
+ ADD_INSN1((seq), (line), trace, INT2FIX(event)); \
+ } \
+ } while (0)
+
+/* add label */
+#define ADD_LABEL(seq, label) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) (label))
+
+#define APPEND_LABEL(seq, before, label) \
+ APPEND_ELEM((seq), (before), (LINK_ELEMENT *) (label))
+
+#define ADD_ADJUST(seq, line, label) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), (line)))
+
+#define ADD_ADJUST_RESTORE(seq, label) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), -1))
+
+#define ADD_CATCH_ENTRY(type, ls, le, iseqv, lc) \
+ (rb_ary_push(iseq->compile_data->catch_table_ary, \
+ rb_ary_new3(5, (type), \
+ (VALUE)(ls) | 1, (VALUE)(le) | 1, \
+ (VALUE)(iseqv), (VALUE)(lc) | 1)))
+
+/* compile node */
+#define COMPILE(anchor, desc, node) \
+ (debug_compile("== " desc "\n", \
+ iseq_compile_each(iseq, (anchor), (node), 0)))
+
+/* compile node, this node's value will be popped */
+#define COMPILE_POPED(anchor, desc, node) \
+ (debug_compile("== " desc "\n", \
+ iseq_compile_each(iseq, (anchor), (node), 1)))
+
+/* compile node, which is popped when 'poped' is true */
+#define COMPILE_(anchor, desc, node, poped) \
+ (debug_compile("== " desc "\n", \
+ iseq_compile_each(iseq, (anchor), (node), (poped))))
+
+#define OPERAND_AT(insn, idx) \
+ (((INSN*)(insn))->operands[(idx)])
+
+#define INSN_OF(insn) \
+ (((INSN*)(insn))->insn_id)
+
+/* error */
+#define COMPILE_ERROR(strs) \
+{ \
+ VALUE tmp = GET_THREAD()->errinfo; \
+ if (compile_debug) rb_compile_bug strs; \
+ GET_THREAD()->errinfo = iseq->compile_data->err_info; \
+ rb_compile_error strs; \
+ OBJ_WRITE(iseq->self, &iseq->compile_data->err_info, GET_THREAD()->errinfo); \
+ GET_THREAD()->errinfo = tmp; \
+ ret = 0; \
+ break; \
+}
+
+#define ERROR_ARGS ruby_sourcefile, nd_line(node),
+
+
+#define COMPILE_OK 1
+#define COMPILE_NG 0
+
+
+/* leave name uninitialized so that compiler warn if INIT_ANCHOR is
+ * missing */
+#define DECL_ANCHOR(name) \
+ LINK_ANCHOR *name, name##_body__ = {{0,},}
+#define INIT_ANCHOR(name) \
+ (name##_body__.last = &name##_body__.anchor, name = &name##_body__)
+
+#define hide_obj(obj) do {OBJ_FREEZE(obj); RBASIC_CLEAR_CLASS(obj);} while (0)
+
+#include "optinsn.inc"
+#if OPT_INSTRUCTIONS_UNIFICATION
+#include "optunifs.inc"
+#endif
+
+/* for debug */
+#if CPDEBUG < 0
+#define ISEQ_ARG iseq,
+#define ISEQ_ARG_DECLARE rb_iseq_t *iseq,
+#else
+#define ISEQ_ARG
+#define ISEQ_ARG_DECLARE
+#endif
+
+#if CPDEBUG
+#define gl_node_level iseq->compile_data->node_level
+#if 0
+static void debug_list(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor);
+#endif
+#endif
+
+static void dump_disasm_list(LINK_ELEMENT *elem);
+
+static int insn_data_length(INSN *iobj);
+static int insn_data_line_no(INSN *iobj);
+static int calc_sp_depth(int depth, INSN *iobj);
+
+static INSN *new_insn_body(rb_iseq_t *iseq, int line_no, int insn_id, int argc, ...);
+static LABEL *new_label_body(rb_iseq_t *iseq, long line);
+static ADJUST *new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line);
+
+static int iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *anchor, NODE * n, int);
+static int iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *anchor);
+static int iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *anchor);
+static int iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *anchor);
+
+static int iseq_set_local_table(rb_iseq_t *iseq, ID *tbl);
+static int iseq_set_exception_local_table(rb_iseq_t *iseq);
+static int iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *anchor, NODE * node);
+
+static int iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *anchor);
+static int iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor);
+static int iseq_set_exception_table(rb_iseq_t *iseq);
+static int iseq_set_optargs_table(rb_iseq_t *iseq);
+
+/*
+ * To make Array to LinkedList, use link_anchor
+ */
+
+static void
+verify_list(ISEQ_ARG_DECLARE const char *info, LINK_ANCHOR *anchor)
+{
+#if CPDEBUG
+ int flag = 0;
+ LINK_ELEMENT *list, *plist;
+
+ if (!compile_debug) return;
+
+ list = anchor->anchor.next;
+ plist = &anchor->anchor;
+ while (list) {
+ if (plist != list->prev) {
+ flag += 1;
+ }
+ plist = list;
+ list = list->next;
+ }
+
+ if (anchor->last != plist && anchor->last != 0) {
+ flag |= 0x70000;
+ }
+
+ if (flag != 0) {
+ rb_bug("list verify error: %08x (%s)", flag, info);
+ }
+#endif
+}
+#if CPDEBUG < 0
+#define verify_list(info, anchor) verify_list(iseq, (info), (anchor))
+#endif
+
+/*
+ * elem1, elem2 => elem1, elem2, elem
+ */
+static void
+ADD_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor, LINK_ELEMENT *elem)
+{
+ elem->prev = anchor->last;
+ anchor->last->next = elem;
+ anchor->last = elem;
+ verify_list("add", anchor);
+}
+
+/*
+ * elem1, before, elem2 => elem1, before, elem, elem2
+ */
+static void
+APPEND_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor, LINK_ELEMENT *before, LINK_ELEMENT *elem)
+{
+ elem->prev = before;
+ elem->next = before->next;
+ elem->next->prev = elem;
+ before->next = elem;
+ if (before == anchor->last) anchor->last = elem;
+ verify_list("add", anchor);
+}
+#if CPDEBUG < 0
+#define ADD_ELEM(anchor, elem) ADD_ELEM(iseq, (anchor), (elem))
+#define APPEND_ELEM(anchor, before, elem) ADD_ELEM(iseq, (anchor), (before), (elem))
+#endif
+
+static int
+iseq_add_mark_object(rb_iseq_t *iseq, VALUE v)
+{
+ if (!SPECIAL_CONST_P(v)) {
+ rb_iseq_add_mark_object(iseq, v);
+ }
+ return COMPILE_OK;
+}
+
+#define ruby_sourcefile RSTRING_PTR(iseq->location.path)
+
+static int
+iseq_add_mark_object_compile_time(rb_iseq_t *iseq, VALUE v)
+{
+ if (!SPECIAL_CONST_P(v)) {
+ rb_ary_push(iseq->compile_data->mark_ary, v);
+ }
+ return COMPILE_OK;
+}
+
+static int
+validate_label(st_data_t name, st_data_t label, st_data_t arg)
+{
+ rb_iseq_t *iseq = (rb_iseq_t *)arg;
+ LABEL *lobj = (LABEL *)label;
+ if (!lobj->link.next) {
+ do {
+ int ret;
+ COMPILE_ERROR((ruby_sourcefile, lobj->position,
+ "%s: undefined label", rb_id2name((ID)name)));
+ if (ret) break;
+ } while (0);
+ }
+ return ST_CONTINUE;
+}
+
+static void
+validate_labels(rb_iseq_t *iseq, st_table *labels_table)
+{
+ st_foreach(labels_table, validate_label, (st_data_t)iseq);
+ if (!NIL_P(iseq->compile_data->err_info)) {
+ rb_exc_raise(iseq->compile_data->err_info);
+ }
+}
+
+VALUE
+rb_iseq_compile_node(VALUE self, NODE *node)
+{
+ DECL_ANCHOR(ret);
+ rb_iseq_t *iseq;
+ INIT_ANCHOR(ret);
+ GetISeqPtr(self, iseq);
+
+ if (node == 0) {
+ COMPILE(ret, "nil", node);
+ iseq_set_local_table(iseq, 0);
+ }
+ else if (nd_type(node) == NODE_SCOPE) {
+ /* iseq type of top, method, class, block */
+ iseq_set_local_table(iseq, node->nd_tbl);
+ iseq_set_arguments(iseq, ret, node->nd_args);
+
+ switch (iseq->type) {
+ case ISEQ_TYPE_BLOCK:
+ {
+ LABEL *start = iseq->compile_data->start_label = NEW_LABEL(0);
+ LABEL *end = iseq->compile_data->end_label = NEW_LABEL(0);
+
+ ADD_LABEL(ret, start);
+ ADD_TRACE(ret, FIX2INT(iseq->location.first_lineno), RUBY_EVENT_B_CALL);
+ COMPILE(ret, "block body", node->nd_body);
+ ADD_LABEL(ret, end);
+ ADD_TRACE(ret, nd_line(node), RUBY_EVENT_B_RETURN);
+
+ /* wide range catch handler must put at last */
+ ADD_CATCH_ENTRY(CATCH_TYPE_REDO, start, end, 0, start);
+ ADD_CATCH_ENTRY(CATCH_TYPE_NEXT, start, end, 0, end);
+ break;
+ }
+ case ISEQ_TYPE_CLASS:
+ {
+ ADD_TRACE(ret, FIX2INT(iseq->location.first_lineno), RUBY_EVENT_CLASS);
+ COMPILE(ret, "scoped node", node->nd_body);
+ ADD_TRACE(ret, nd_line(node), RUBY_EVENT_END);
+ break;
+ }
+ case ISEQ_TYPE_METHOD:
+ {
+ ADD_TRACE(ret, FIX2INT(iseq->location.first_lineno), RUBY_EVENT_CALL);
+ COMPILE(ret, "scoped node", node->nd_body);
+ ADD_TRACE(ret, nd_line(node), RUBY_EVENT_RETURN);
+ break;
+ }
+ default: {
+ COMPILE(ret, "scoped node", node->nd_body);
+ break;
+ }
+ }
+ }
+ else if (nd_type(node) == NODE_IFUNC) {
+ /* user callback */
+ (*node->nd_cfnc)(iseq, ret, node->nd_tval);
+ }
+ else {
+ switch (iseq->type) {
+ case ISEQ_TYPE_METHOD:
+ case ISEQ_TYPE_CLASS:
+ case ISEQ_TYPE_BLOCK:
+ case ISEQ_TYPE_EVAL:
+ case ISEQ_TYPE_MAIN:
+ case ISEQ_TYPE_TOP:
+ rb_compile_error(ERROR_ARGS "compile/should not be reached: %s:%d",
+ __FILE__, __LINE__);
+ break;
+ case ISEQ_TYPE_RESCUE:
+ iseq_set_exception_local_table(iseq);
+ COMPILE(ret, "rescue", node);
+ break;
+ case ISEQ_TYPE_ENSURE:
+ iseq_set_exception_local_table(iseq);
+ COMPILE_POPED(ret, "ensure", node);
+ break;
+ case ISEQ_TYPE_DEFINED_GUARD:
+ iseq_set_local_table(iseq, 0);
+ COMPILE(ret, "defined guard", node);
+ break;
+ default:
+ rb_bug("unknown scope");
+ }
+ }
+
+ if (iseq->type == ISEQ_TYPE_RESCUE || iseq->type == ISEQ_TYPE_ENSURE) {
+ ADD_INSN2(ret, 0, getlocal, INT2FIX(2), INT2FIX(0));
+ ADD_INSN1(ret, 0, throw, INT2FIX(0) /* continue throw */ );
+ }
+ else {
+ ADD_INSN(ret, iseq->compile_data->last_line, leave);
+ }
+
+#if SUPPORT_JOKE
+ if (iseq->compile_data->labels_table) {
+ validate_labels(iseq, iseq->compile_data->labels_table);
+ }
+#endif
+ return iseq_setup(iseq, ret);
+}
+
+int
+rb_iseq_translate_threaded_code(rb_iseq_t *iseq)
+{
+#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
+ const void * const *table = rb_vm_get_insns_address_table();
+ unsigned long i;
+
+ iseq->iseq_encoded = ALLOC_N(VALUE, iseq->iseq_size);
+ MEMCPY(iseq->iseq_encoded, iseq->iseq, VALUE, iseq->iseq_size);
+
+ for (i = 0; i < iseq->iseq_size; /* */ ) {
+ int insn = (int)iseq->iseq_encoded[i];
+ int len = insn_len(insn);
+ iseq->iseq_encoded[i] = (VALUE)table[insn];
+ i += len;
+ }
+#else
+ iseq->iseq_encoded = iseq->iseq;
+#endif
+ return COMPILE_OK;
+}
+
+/*********************************************/
+/* definition of data structure for compiler */
+/*********************************************/
+
+static void *
+compile_data_alloc(rb_iseq_t *iseq, size_t size)
+{
+ void *ptr = 0;
+ struct iseq_compile_data_storage *storage =
+ iseq->compile_data->storage_current;
+
+ if (storage->pos + size > storage->size) {
+ unsigned long alloc_size = storage->size * 2;
+
+ retry:
+ if (alloc_size < size) {
+ alloc_size *= 2;
+ goto retry;
+ }
+ storage->next = (void *)ALLOC_N(char, alloc_size +
+ sizeof(struct
+ iseq_compile_data_storage));
+ storage = iseq->compile_data->storage_current = storage->next;
+ storage->next = 0;
+ storage->pos = 0;
+ storage->size = alloc_size;
+ storage->buff = (char *)(&storage->buff + 1);
+ }
+
+ ptr = (void *)&storage->buff[storage->pos];
+ storage->pos += size;
+ return ptr;
+}
+
+static INSN *
+compile_data_alloc_insn(rb_iseq_t *iseq)
+{
+ return (INSN *)compile_data_alloc(iseq, sizeof(INSN));
+}
+
+static LABEL *
+compile_data_alloc_label(rb_iseq_t *iseq)
+{
+ return (LABEL *)compile_data_alloc(iseq, sizeof(LABEL));
+}
+
+static ADJUST *
+compile_data_alloc_adjust(rb_iseq_t *iseq)
+{
+ return (ADJUST *)compile_data_alloc(iseq, sizeof(ADJUST));
+}
+
+/*
+ * elem1, elemX => elem1, elem2, elemX
+ */
+static void
+INSERT_ELEM_NEXT(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)
+{
+ elem2->next = elem1->next;
+ elem2->prev = elem1;
+ elem1->next = elem2;
+ if (elem2->next) {
+ elem2->next->prev = elem2;
+ }
+}
+
+#if 0 /* unused */
+/*
+ * elemX, elem1 => elemX, elem2, elem1
+ */
+static void
+INSERT_ELEM_PREV(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)
+{
+ elem2->prev = elem1->prev;
+ elem2->next = elem1;
+ elem1->prev = elem2;
+ if (elem2->prev) {
+ elem2->prev->next = elem2;
+ }
+}
+#endif
+
+/*
+ * elemX, elem1, elemY => elemX, elem2, elemY
+ */
+static void
+REPLACE_ELEM(LINK_ELEMENT *elem1, LINK_ELEMENT *elem2)
+{
+ elem2->prev = elem1->prev;
+ elem2->next = elem1->next;
+ if (elem1->prev) {
+ elem1->prev->next = elem2;
+ }
+ if (elem1->next) {
+ elem1->next->prev = elem2;
+ }
+}
+
+static void
+REMOVE_ELEM(LINK_ELEMENT *elem)
+{
+ elem->prev->next = elem->next;
+ if (elem->next) {
+ elem->next->prev = elem->prev;
+ }
+}
+
+static LINK_ELEMENT *
+FIRST_ELEMENT(LINK_ANCHOR *anchor)
+{
+ return anchor->anchor.next;
+}
+
+#if 0 /* unused */
+static LINK_ELEMENT *
+LAST_ELEMENT(LINK_ANCHOR *anchor)
+{
+ return anchor->last;
+}
+#endif
+
+static LINK_ELEMENT *
+POP_ELEMENT(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor)
+{
+ LINK_ELEMENT *elem = anchor->last;
+ anchor->last = anchor->last->prev;
+ anchor->last->next = 0;
+ verify_list("pop", anchor);
+ return elem;
+}
+#if CPDEBUG < 0
+#define POP_ELEMENT(anchor) POP_ELEMENT(iseq, (anchor))
+#endif
+
+#if 0 /* unused */
+static LINK_ELEMENT *
+SHIFT_ELEMENT(LINK_ANCHOR *anchor)
+{
+ LINK_ELEMENT *elem = anchor->anchor.next;
+ if (elem) {
+ anchor->anchor.next = elem->next;
+ }
+ return elem;
+}
+#endif
+
+#if 0 /* unused */
+static int
+LIST_SIZE(LINK_ANCHOR *anchor)
+{
+ LINK_ELEMENT *elem = anchor->anchor.next;
+ int size = 0;
+ while (elem) {
+ size += 1;
+ elem = elem->next;
+ }
+ return size;
+}
+#endif
+
+static int
+LIST_SIZE_ZERO(LINK_ANCHOR *anchor)
+{
+ if (anchor->anchor.next == 0) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+/*
+ * anc1: e1, e2, e3
+ * anc2: e4, e5
+ *#=>
+ * anc1: e1, e2, e3, e4, e5
+ * anc2: e4, e5 (broken)
+ */
+static void
+APPEND_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *anc1, LINK_ANCHOR *anc2)
+{
+ if (anc2->anchor.next) {
+ anc1->last->next = anc2->anchor.next;
+ anc2->anchor.next->prev = anc1->last;
+ anc1->last = anc2->last;
+ }
+ verify_list("append", anc1);
+}
+#if CPDEBUG < 0
+#define APPEND_LIST(anc1, anc2) APPEND_LIST(iseq, (anc1), (anc2))
+#endif
+
+/*
+ * anc1: e1, e2, e3
+ * anc2: e4, e5
+ *#=>
+ * anc1: e4, e5, e1, e2, e3
+ * anc2: e4, e5 (broken)
+ */
+static void
+INSERT_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *anc1, LINK_ANCHOR *anc2)
+{
+ if (anc2->anchor.next) {
+ LINK_ELEMENT *first = anc1->anchor.next;
+ anc1->anchor.next = anc2->anchor.next;
+ anc1->anchor.next->prev = &anc1->anchor;
+ anc2->last->next = first;
+ if (first) {
+ first->prev = anc2->last;
+ }
+ else {
+ anc1->last = anc2->last;
+ }
+ }
+
+ verify_list("append", anc1);
+}
+#if CPDEBUG < 0
+#define INSERT_LIST(anc1, anc2) INSERT_LIST(iseq, (anc1), (anc2))
+#endif
+
+#if 0 /* unused */
+/*
+ * anc1: e1, e2, e3
+ * anc2: e4, e5
+ *#=>
+ * anc1: e4, e5
+ * anc2: e1, e2, e3
+ */
+static void
+SWAP_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *anc1, LINK_ANCHOR *anc2)
+{
+ LINK_ANCHOR tmp = *anc2;
+
+ /* it has bug */
+ *anc2 = *anc1;
+ *anc1 = tmp;
+
+ verify_list("swap1", anc1);
+ verify_list("swap2", anc2);
+}
+#if CPDEBUG < 0
+#define SWAP_LIST(anc1, anc2) SWAP_LIST(iseq, (anc1), (anc2))
+#endif
+
+static LINK_ANCHOR *
+REVERSE_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *anc)
+{
+ LINK_ELEMENT *first, *last, *elem, *e;
+ first = &anc->anchor;
+ elem = first->next;
+ last = anc->last;
+
+ if (elem != 0) {
+ anc->anchor.next = last;
+ anc->last = elem;
+ }
+ else {
+ /* null list */
+ return anc;
+ }
+ while (elem) {
+ e = elem->next;
+ elem->next = elem->prev;
+ elem->prev = e;
+ elem = e;
+ }
+
+ first->next = last;
+ last->prev = first;
+ anc->last->next = 0;
+
+ verify_list("reverse", anc);
+ return anc;
+}
+#if CPDEBUG < 0
+#define REVERSE_LIST(anc) REVERSE_LIST(iseq, (anc))
+#endif
+#endif
+
+#if CPDEBUG && 0
+static void
+debug_list(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor)
+{
+ LINK_ELEMENT *list = FIRST_ELEMENT(anchor);
+ printf("----\n");
+ printf("anch: %p, frst: %p, last: %p\n", &anchor->anchor,
+ anchor->anchor.next, anchor->last);
+ while (list) {
+ printf("curr: %p, next: %p, prev: %p, type: %d\n", list, list->next,
+ list->prev, FIX2INT(list->type));
+ list = list->next;
+ }
+ printf("----\n");
+
+ dump_disasm_list(anchor->anchor.next);
+ verify_list("debug list", anchor);
+}
+#if CPDEBUG < 0
+#define debug_list(anc) debug_list(iseq, (anc))
+#endif
+#endif
+
+static LABEL *
+new_label_body(rb_iseq_t *iseq, long line)
+{
+ LABEL *labelobj = compile_data_alloc_label(iseq);
+
+ labelobj->link.type = ISEQ_ELEMENT_LABEL;
+ labelobj->link.next = 0;
+
+ labelobj->label_no = iseq->compile_data->label_no++;
+ labelobj->sc_state = 0;
+ labelobj->sp = -1;
+ return labelobj;
+}
+
+static ADJUST *
+new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line)
+{
+ ADJUST *adjust = compile_data_alloc_adjust(iseq);
+ adjust->link.type = ISEQ_ELEMENT_ADJUST;
+ adjust->link.next = 0;
+ adjust->label = label;
+ adjust->line_no = line;
+ return adjust;
+}
+
+static INSN *
+new_insn_core(rb_iseq_t *iseq, int line_no,
+ int insn_id, int argc, VALUE *argv)
+{
+ INSN *iobj = compile_data_alloc_insn(iseq);
+ /* printf("insn_id: %d, line: %d\n", insn_id, line_no); */
+
+ iobj->link.type = ISEQ_ELEMENT_INSN;
+ iobj->link.next = 0;
+ iobj->insn_id = insn_id;
+ iobj->line_no = line_no;
+ iobj->operands = argv;
+ iobj->operand_size = argc;
+ iobj->sc_state = 0;
+ return iobj;
+}
+
+static INSN *
+new_insn_body(rb_iseq_t *iseq, int line_no, int insn_id, int argc, ...)
+{
+ VALUE *operands = 0;
+ va_list argv;
+ if (argc > 0) {
+ int i;
+ va_init_list(argv, argc);
+ operands = (VALUE *)compile_data_alloc(iseq, sizeof(VALUE) * argc);
+ for (i = 0; i < argc; i++) {
+ VALUE v = va_arg(argv, VALUE);
+ operands[i] = v;
+ }
+ va_end(argv);
+ }
+ return new_insn_core(iseq, line_no, insn_id, argc, operands);
+}
+
+static rb_call_info_t *
+new_callinfo(rb_iseq_t *iseq, ID mid, int argc, VALUE block, unsigned long flag)
+{
+ rb_call_info_t *ci = (rb_call_info_t *)compile_data_alloc(iseq, sizeof(rb_call_info_t));
+ ci->mid = mid;
+ ci->flag = flag;
+ ci->orig_argc = argc;
+ ci->argc = argc;
+
+ if (block) {
+ GetISeqPtr(block, ci->blockiseq);
+ }
+ else {
+ ci->blockiseq = 0;
+ if (!(ci->flag & (VM_CALL_ARGS_SPLAT | VM_CALL_ARGS_BLOCKARG))) {
+ ci->flag |= VM_CALL_ARGS_SKIP_SETUP;
+ }
+ }
+ ci->method_serial = 0;
+ ci->class_serial = 0;
+ ci->blockptr = 0;
+ ci->recv = Qundef;
+ ci->call = 0; /* TODO: should set default function? */
+
+ ci->aux.index = iseq->callinfo_size++;
+
+ return ci;
+}
+
+static INSN *
+new_insn_send(rb_iseq_t *iseq, int line_no, VALUE id, VALUE argc, VALUE block, VALUE flag)
+{
+ VALUE *operands = (VALUE *)compile_data_alloc(iseq, sizeof(VALUE) * 1);
+ operands[0] = (VALUE)new_callinfo(iseq, SYM2ID(id), FIX2INT(argc), block, FIX2INT(flag));
+ return new_insn_core(iseq, line_no, BIN(send), 1, operands);
+}
+
+static VALUE
+new_child_iseq(rb_iseq_t *iseq, NODE *node,
+ VALUE name, VALUE parent, enum iseq_type type, int line_no)
+{
+ VALUE ret;
+
+ debugs("[new_child_iseq]> ---------------------------------------\n");
+ ret = rb_iseq_new_with_opt(node, name,
+ iseq_path(iseq->self), iseq_absolute_path(iseq->self),
+ INT2FIX(line_no), parent, type, iseq->compile_data->option);
+ debugs("[new_child_iseq]< ---------------------------------------\n");
+ iseq_add_mark_object(iseq, ret);
+ return ret;
+}
+
+static int
+iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
+{
+ /* debugs("[compile step 2] (iseq_array_to_linkedlist)\n"); */
+
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+
+ debugs("[compile step 3.1 (iseq_optimize)]\n");
+ iseq_optimize(iseq, anchor);
+
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+
+ if (iseq->compile_data->option->instructions_unification) {
+ debugs("[compile step 3.2 (iseq_insns_unification)]\n");
+ iseq_insns_unification(iseq, anchor);
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+ }
+
+ if (iseq->compile_data->option->stack_caching) {
+ debugs("[compile step 3.3 (iseq_set_sequence_stackcaching)]\n");
+ iseq_set_sequence_stackcaching(iseq, anchor);
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+ }
+
+ debugs("[compile step 4.1 (iseq_set_sequence)]\n");
+ iseq_set_sequence(iseq, anchor);
+ if (compile_debug > 5)
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+
+ debugs("[compile step 4.2 (iseq_set_exception_table)]\n");
+ iseq_set_exception_table(iseq);
+
+ debugs("[compile step 4.3 (set_optargs_table)] \n");
+ iseq_set_optargs_table(iseq);
+
+ debugs("[compile step 5 (iseq_translate_threaded_code)] \n");
+ rb_iseq_translate_threaded_code(iseq);
+
+ if (compile_debug > 1) {
+ VALUE str = rb_iseq_disasm(iseq->self);
+ printf("%s\n", StringValueCStr(str));
+ fflush(stdout);
+ }
+ debugs("[compile step: finish]\n");
+
+ return 0;
+}
+
+static int
+iseq_set_exception_local_table(rb_iseq_t *iseq)
+{
+ ID id_dollar_bang;
+
+ CONST_ID(id_dollar_bang, "#$!");
+ iseq->local_table = (ID *)ALLOC_N(ID, 1);
+ iseq->local_table_size = 1;
+ iseq->local_size = iseq->local_table_size + 1;
+ iseq->local_table[0] = id_dollar_bang;
+ return COMPILE_OK;
+}
+
+static int
+get_lvar_level(rb_iseq_t *iseq)
+{
+ int lev = 0;
+ while (iseq != iseq->local_iseq) {
+ lev++;
+ iseq = iseq->parent_iseq;
+ }
+ return lev;
+}
+
+static int
+get_dyna_var_idx_at_raw(rb_iseq_t *iseq, ID id)
+{
+ int i;
+
+ for (i = 0; i < iseq->local_table_size; i++) {
+ if (iseq->local_table[i] == id) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+static int
+get_local_var_idx(rb_iseq_t *iseq, ID id)
+{
+ int idx = get_dyna_var_idx_at_raw(iseq->local_iseq, id);
+
+ if (idx < 0) {
+ rb_bug("get_local_var_idx: %d", idx);
+ }
+
+ return idx;
+}
+
+static int
+get_dyna_var_idx(rb_iseq_t *iseq, ID id, int *level, int *ls)
+{
+ int lv = 0, idx = -1;
+
+ while (iseq) {
+ idx = get_dyna_var_idx_at_raw(iseq, id);
+ if (idx >= 0) {
+ break;
+ }
+ iseq = iseq->parent_iseq;
+ lv++;
+ }
+
+ if (idx < 0) {
+ rb_bug("get_dyna_var_idx: -1");
+ }
+
+ *level = lv;
+ *ls = iseq->local_size;
+ return idx;
+}
+
+static int
+iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args)
+{
+ debugs("iseq_set_arguments: %s\n", node_args ? "" : "0");
+
+ if (node_args) {
+ struct rb_args_info *args = node_args->nd_ainfo;
+ ID rest_id = 0;
+ int last_comma = 0;
+ ID block_id = 0;
+
+ if (nd_type(node_args) != NODE_ARGS) {
+ rb_bug("iseq_set_arguments: NODE_ARGS is expected, but %s",
+ ruby_node_name(nd_type(node_args)));
+ }
+
+
+ iseq->argc = (int)args->pre_args_num;
+ debugs(" - argc: %d\n", iseq->argc);
+
+ rest_id = args->rest_arg;
+ if (rest_id == 1) {
+ last_comma = 1;
+ rest_id = 0;
+ }
+ block_id = args->block_arg;
+
+ if (args->first_post_arg) {
+ iseq->arg_post_start = get_dyna_var_idx_at_raw(iseq, args->first_post_arg);
+ iseq->arg_post_len = args->post_args_num;
+ }
+
+ if (args->opt_args) {
+ NODE *node = args->opt_args;
+ LABEL *label;
+ VALUE labels = rb_ary_tmp_new(1);
+ int i = 0, j;
+
+ while (node) {
+ label = NEW_LABEL(nd_line(node));
+ rb_ary_push(labels, (VALUE)label | 1);
+ ADD_LABEL(optargs, label);
+ COMPILE_POPED(optargs, "optarg", node->nd_body);
+ node = node->nd_next;
+ i += 1;
+ }
+
+ /* last label */
+ label = NEW_LABEL(nd_line(node_args));
+ rb_ary_push(labels, (VALUE)label | 1);
+ ADD_LABEL(optargs, label);
+ i += 1;
+
+ iseq->arg_opts = i;
+ iseq->arg_opt_table = ALLOC_N(VALUE, i);
+ MEMCPY(iseq->arg_opt_table, RARRAY_CONST_PTR(labels), VALUE, i);
+ for (j = 0; j < i; j++) {
+ iseq->arg_opt_table[j] &= ~1;
+ }
+ rb_ary_clear(labels);
+ }
+ else {
+ iseq->arg_opts = 0;
+ }
+
+ if (args->kw_args) {
+ NODE *node = args->kw_args;
+ VALUE keywords = rb_ary_tmp_new(1);
+ VALUE required = 0;
+ int i = 0, j, r = 0;
+
+ iseq->arg_keyword = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_vid);
+ COMPILE(optargs, "kwarg", args->kw_rest_arg);
+ while (node) {
+ VALUE list = keywords;
+ if (node->nd_body->nd_value == (NODE *)-1) {
+ ++r;
+ if (!required) required = rb_ary_tmp_new(1);
+ list = required;
+ }
+ rb_ary_push(list, INT2FIX(node->nd_body->nd_vid));
+ COMPILE_POPED(optargs, "kwarg", node); /* nd_type(node) == NODE_KW_ARG */
+ node = node->nd_next;
+ i += 1;
+ }
+ iseq->arg_keyword_check = (args->kw_rest_arg->nd_vid & ID_SCOPE_MASK) == ID_JUNK;
+ iseq->arg_keywords = i;
+ iseq->arg_keyword_required = r;
+ iseq->arg_keyword_table = ALLOC_N(ID, i);
+ if (r) {
+ rb_ary_concat(required, keywords);
+ keywords = required;
+ }
+ for (j = 0; j < i; j++) {
+ iseq->arg_keyword_table[j] = FIX2INT(RARRAY_AREF(keywords, j));
+ }
+ ADD_INSN(optargs, nd_line(args->kw_args), pop);
+ }
+ else if (args->kw_rest_arg) {
+ iseq->arg_keyword = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_vid);
+ COMPILE(optargs, "kwarg", args->kw_rest_arg);
+ ADD_INSN(optargs, nd_line(args->kw_rest_arg), pop);
+ }
+ else {
+ iseq->arg_keyword = -1;
+ }
+
+ if (args->pre_init) { /* m_init */
+ COMPILE_POPED(optargs, "init arguments (m)", args->pre_init);
+ }
+ if (args->post_init) { /* p_init */
+ COMPILE_POPED(optargs, "init arguments (p)", args->post_init);
+ }
+
+ if (rest_id) {
+ iseq->arg_rest = get_dyna_var_idx_at_raw(iseq, rest_id);
+
+ if (iseq->arg_rest == -1) {
+ rb_bug("arg_rest: -1");
+ }
+
+ if (iseq->arg_post_start == 0) {
+ iseq->arg_post_start = iseq->arg_rest + 1;
+ }
+ }
+
+ if (block_id) {
+ iseq->arg_block = get_dyna_var_idx_at_raw(iseq, block_id);
+ }
+
+ if (iseq->arg_opts != 0 || iseq->arg_post_len != 0 ||
+ iseq->arg_rest != -1 || iseq->arg_block != -1 ||
+ iseq->arg_keyword != -1) {
+ iseq->arg_simple = 0;
+
+ /* set arg_size: size of arguments */
+ if (iseq->arg_keyword != -1) {
+ iseq->arg_size = iseq->arg_keyword + 1;
+ }
+ else if (iseq->arg_block != -1) {
+ iseq->arg_size = iseq->arg_block + 1;
+ }
+ else if (iseq->arg_post_len) {
+ iseq->arg_size = iseq->arg_post_start + iseq->arg_post_len;
+ }
+ else if (iseq->arg_rest != -1) {
+ iseq->arg_size = iseq->arg_rest + 1;
+ }
+ else if (iseq->arg_opts) {
+ iseq->arg_size = iseq->argc + iseq->arg_opts - 1;
+ }
+ else {
+ iseq->arg_size = iseq->argc;
+ }
+ }
+ else {
+ iseq->arg_simple = 1;
+ iseq->arg_size = iseq->argc;
+ }
+
+ if (iseq->type == ISEQ_TYPE_BLOCK) {
+ if (iseq->arg_opts == 0 && iseq->arg_post_len == 0 &&
+ iseq->arg_rest == -1 && iseq->arg_keyword == -1) {
+ if (iseq->argc == 1 && last_comma == 0) {
+ /* {|a|} */
+ iseq->arg_simple |= 0x02;
+ }
+ }
+ }
+ }
+ else {
+ iseq->arg_simple = 1;
+ }
+
+ return COMPILE_OK;
+}
+
+static int
+iseq_set_local_table(rb_iseq_t *iseq, ID *tbl)
+{
+ int size;
+
+ if (tbl) {
+ size = (int)*tbl;
+ tbl++;
+ }
+ else {
+ size = 0;
+ }
+
+ if (size > 0) {
+ iseq->local_table = (ID *)ALLOC_N(ID, size);
+ MEMCPY(iseq->local_table, tbl, ID, size);
+ }
+
+ iseq->local_size = iseq->local_table_size = size;
+ iseq->local_size += 1;
+ /*
+ if (lfp == dfp ) { // top, class, method
+ dfp[-1]: svar
+ else { // block
+ dfp[-1]: cref
+ }
+ */
+
+ debugs("iseq_set_local_table: %d, %d\n", iseq->local_size, iseq->local_table_size);
+ return COMPILE_OK;
+}
+
+static int
+cdhash_cmp(VALUE val, VALUE lit)
+{
+ if (val == lit) return 0;
+ if (SPECIAL_CONST_P(lit)) {
+ return val != lit;
+ }
+ if (SPECIAL_CONST_P(val) || BUILTIN_TYPE(val) != BUILTIN_TYPE(lit)) {
+ return -1;
+ }
+ if (BUILTIN_TYPE(lit) == T_STRING) {
+ return rb_str_hash_cmp(lit, val);
+ }
+ return !rb_eql(lit, val);
+}
+
+static st_index_t
+cdhash_hash(VALUE a)
+{
+ if (SPECIAL_CONST_P(a)) return (st_index_t)a;
+ if (RB_TYPE_P(a, T_STRING)) return rb_str_hash(a);
+ {
+ VALUE hval = rb_hash(a);
+ return (st_index_t)FIX2LONG(hval);
+ }
+}
+
+static const struct st_hash_type cdhash_type = {
+ cdhash_cmp,
+ cdhash_hash,
+};
+
+struct cdhash_set_label_struct {
+ VALUE hash;
+ int pos;
+ int len;
+};
+
+static int
+cdhash_set_label_i(VALUE key, VALUE val, void *ptr)
+{
+ struct cdhash_set_label_struct *data = (struct cdhash_set_label_struct *)ptr;
+ LABEL *lobj = (LABEL *)(val & ~1);
+ rb_hash_aset(data->hash, key, INT2FIX(lobj->position - (data->pos+data->len)));
+ return ST_CONTINUE;
+}
+
+/**
+ ruby insn object list -> raw instruction sequence
+ */
+static int
+iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
+{
+ LABEL *lobj;
+ INSN *iobj;
+ struct iseq_line_info_entry *line_info_table;
+ unsigned int last_line = 0;
+ LINK_ELEMENT *list;
+ VALUE *generated_iseq;
+
+ int k, pos, sp, stack_max = 0, line = 0;
+
+ /* set label position */
+ list = FIRST_ELEMENT(anchor);
+ k = pos = 0;
+ while (list) {
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ iobj = (INSN *)list;
+ line = iobj->line_no;
+ pos += insn_data_length(iobj);
+ k++;
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ lobj = (LABEL *)list;
+ lobj->position = pos;
+ lobj->set = TRUE;
+ break;
+ }
+ case ISEQ_ELEMENT_NONE:
+ {
+ /* ignore */
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)list;
+ if (adjust->line_no != -1) {
+ pos += 2 /* insn + 1 operand */;
+ k++;
+ }
+ break;
+ }
+ default:
+ dump_disasm_list(FIRST_ELEMENT(anchor));
+ dump_disasm_list(list);
+ rb_compile_error(RSTRING_PTR(iseq->location.path), line,
+ "error: set_sequence");
+ break;
+ }
+ list = list->next;
+ }
+
+ /* make instruction sequence */
+ generated_iseq = ALLOC_N(VALUE, pos);
+ line_info_table = ALLOC_N(struct iseq_line_info_entry, k);
+ iseq->is_entries = ALLOC_N(union iseq_inline_storage_entry, iseq->is_size);
+ MEMZERO(iseq->is_entries, union iseq_inline_storage_entry, iseq->is_size);
+ iseq->callinfo_entries = ALLOC_N(rb_call_info_t, iseq->callinfo_size);
+ /* MEMZERO(iseq->callinfo_entries, rb_call_info_t, iseq->callinfo_size); */
+
+ list = FIRST_ELEMENT(anchor);
+ k = pos = sp = 0;
+
+ while (list) {
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ int j, len, insn;
+ const char *types;
+ VALUE *operands;
+
+ iobj = (INSN *)list;
+
+ /* update sp */
+ sp = calc_sp_depth(sp, iobj);
+ if (sp > stack_max) {
+ stack_max = sp;
+ }
+
+ /* fprintf(stderr, "insn: %-16s, sp: %d\n", insn_name(iobj->insn_id), sp); */
+ operands = iobj->operands;
+ insn = iobj->insn_id;
+ generated_iseq[pos] = insn;
+ types = insn_op_types(insn);
+ len = insn_len(insn);
+
+ /* operand check */
+ if (iobj->operand_size != len - 1) {
+ /* printf("operand size miss! (%d, %d)\n", iobj->operand_size, len); */
+ dump_disasm_list(list);
+ rb_compile_error(RSTRING_PTR(iseq->location.path), iobj->line_no,
+ "operand size miss! (%d for %d)",
+ iobj->operand_size, len - 1);
+ xfree(generated_iseq);
+ xfree(line_info_table);
+ return 0;
+ }
+
+ for (j = 0; types[j]; j++) {
+ char type = types[j];
+ /* printf("--> [%c - (%d-%d)]\n", type, k, j); */
+ switch (type) {
+ case TS_OFFSET:
+ {
+ /* label(destination position) */
+ lobj = (LABEL *)operands[j];
+ if (!lobj->set) {
+ rb_compile_error(RSTRING_PTR(iseq->location.path), iobj->line_no,
+ "unknown label");
+ }
+ if (lobj->sp == -1) {
+ lobj->sp = sp;
+ }
+ generated_iseq[pos + 1 + j] = lobj->position - (pos + len);
+ break;
+ }
+ case TS_CDHASH:
+ {
+ VALUE map = operands[j];
+ struct cdhash_set_label_struct data;
+ data.hash = map;
+ data.pos = pos;
+ data.len = len;
+ rb_hash_foreach(map, cdhash_set_label_i, (VALUE)&data);
+
+ hide_obj(map);
+ generated_iseq[pos + 1 + j] = map;
+ break;
+ }
+ case TS_LINDEX:
+ case TS_NUM: /* ulong */
+ generated_iseq[pos + 1 + j] = FIX2INT(operands[j]);
+ break;
+ case TS_ISEQ: /* iseq */
+ {
+ VALUE v = operands[j];
+ rb_iseq_t *block = 0;
+ if (v) {
+ GetISeqPtr(v, block);
+ }
+ generated_iseq[pos + 1 + j] = (VALUE)block;
+ break;
+ }
+ case TS_VALUE: /* VALUE */
+ {
+ VALUE v = operands[j];
+ generated_iseq[pos + 1 + j] = v;
+ /* to mark ruby object */
+ iseq_add_mark_object(iseq, v);
+ break;
+ }
+ case TS_IC: /* inline cache */
+ {
+ int ic_index = FIX2INT(operands[j]);
+ IC ic = (IC)&iseq->is_entries[ic_index];
+ if (UNLIKELY(ic_index >= iseq->is_size)) {
+ rb_bug("iseq_set_sequence: ic_index overflow: index: %d, size: %d", ic_index, iseq->is_size);
+ }
+ generated_iseq[pos + 1 + j] = (VALUE)ic;
+ break;
+ }
+ case TS_CALLINFO: /* call info */
+ {
+ rb_call_info_t *base_ci = (rb_call_info_t *)operands[j];
+ rb_call_info_t *ci = &iseq->callinfo_entries[base_ci->aux.index];
+ *ci = *base_ci;
+
+ if (UNLIKELY(base_ci->aux.index >= iseq->callinfo_size)) {
+ rb_bug("iseq_set_sequence: ci_index overflow: index: %d, size: %d", base_ci->argc, iseq->callinfo_size);
+ }
+ generated_iseq[pos + 1 + j] = (VALUE)ci;
+ break;
+ }
+ case TS_ID: /* ID */
+ generated_iseq[pos + 1 + j] = SYM2ID(operands[j]);
+ break;
+ case TS_GENTRY:
+ {
+ struct rb_global_entry *entry =
+ (struct rb_global_entry *)(operands[j] & (~1));
+ generated_iseq[pos + 1 + j] = (VALUE)entry;
+ }
+ break;
+ default:
+ rb_compile_error(RSTRING_PTR(iseq->location.path), iobj->line_no,
+ "unknown operand type: %c", type);
+ xfree(generated_iseq);
+ xfree(line_info_table);
+ return 0;
+ }
+ }
+ if (last_line != iobj->line_no) {
+ line_info_table[k].line_no = last_line = iobj->line_no;
+ line_info_table[k].position = pos;
+ k++;
+ }
+ pos += len;
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ lobj = (LABEL *)list;
+ if (lobj->sp == -1) {
+ lobj->sp = sp;
+ }
+ else {
+ sp = lobj->sp;
+ }
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)list;
+ int orig_sp = sp;
+
+ if (adjust->label) {
+ sp = adjust->label->sp;
+ }
+ else {
+ sp = 0;
+ }
+
+ if (adjust->line_no != -1) {
+ if (orig_sp - sp > 0) {
+ if (last_line != (unsigned int)adjust->line_no) {
+ line_info_table[k].line_no = last_line = adjust->line_no;
+ line_info_table[k].position = pos;
+ k++;
+ }
+ generated_iseq[pos++] = BIN(adjuststack);
+ generated_iseq[pos++] = orig_sp - sp;
+ }
+ else if (orig_sp - sp == 0) {
+ /* jump to next insn */
+ if (last_line != (unsigned int)adjust->line_no) {
+ line_info_table[k].line_no = last_line = adjust->line_no;
+ line_info_table[k].position = pos;
+ k++;
+ }
+ generated_iseq[pos++] = BIN(jump);
+ generated_iseq[pos++] = 0;
+ }
+ else {
+ rb_bug("iseq_set_sequence: adjust bug");
+ }
+ }
+ break;
+ }
+ default:
+ /* ignore */
+ break;
+ }
+ list = list->next;
+ }
+
+#if 0 /* XXX */
+ /* this check need dead code elimination */
+ if (sp != 1) {
+ rb_bug("SP is not 0 on %s (%d)\n", RSTRING_PTR(iseq->name), sp);
+ }
+#endif
+
+ iseq->iseq = (void *)generated_iseq;
+ iseq->iseq_size = pos;
+ iseq->stack_max = stack_max;
+
+ line_info_table = ruby_xrealloc(line_info_table, k * sizeof(struct iseq_line_info_entry));
+ iseq->line_info_table = line_info_table;
+ iseq->line_info_size = k;
+
+ return COMPILE_OK;
+}
+
+static int
+label_get_position(LABEL *lobj)
+{
+ return lobj->position;
+}
+
+static int
+label_get_sp(LABEL *lobj)
+{
+ return lobj->sp;
+}
+
+static int
+iseq_set_exception_table(rb_iseq_t *iseq)
+{
+ const VALUE *tptr, *ptr;
+ int tlen, i;
+ struct iseq_catch_table_entry *entry;
+
+ tlen = (int)RARRAY_LEN(iseq->compile_data->catch_table_ary);
+ tptr = RARRAY_CONST_PTR(iseq->compile_data->catch_table_ary);
+
+ iseq->catch_table = tlen ? ALLOC_N(struct iseq_catch_table_entry, tlen) : 0;
+ iseq->catch_table_size = tlen;
+
+ for (i = 0; i < tlen; i++) {
+ ptr = RARRAY_CONST_PTR(tptr[i]);
+ entry = &iseq->catch_table[i];
+ entry->type = (enum catch_type)(ptr[0] & 0xffff);
+ entry->start = label_get_position((LABEL *)(ptr[1] & ~1));
+ entry->end = label_get_position((LABEL *)(ptr[2] & ~1));
+ entry->iseq = ptr[3];
+
+ /* register iseq as mark object */
+ if (entry->iseq != 0) {
+ iseq_add_mark_object(iseq, entry->iseq);
+ }
+
+ /* stack depth */
+ if (ptr[4]) {
+ LABEL *lobj = (LABEL *)(ptr[4] & ~1);
+ entry->cont = label_get_position(lobj);
+ entry->sp = label_get_sp(lobj);
+
+ /* TODO: Dirty Hack! Fix me */
+ if (entry->type == CATCH_TYPE_RESCUE ||
+ entry->type == CATCH_TYPE_BREAK ||
+ entry->type == CATCH_TYPE_NEXT) {
+ entry->sp--;
+ }
+ }
+ else {
+ entry->cont = 0;
+ }
+ }
+
+ OBJ_WRITE(iseq->self, &iseq->compile_data->catch_table_ary, 0); /* free */
+ return COMPILE_OK;
+}
+
+/*
+ * set optional argument table
+ * def foo(a, b=expr1, c=expr2)
+ * =>
+ * b:
+ * expr1
+ * c:
+ * expr2
+ */
+static int
+iseq_set_optargs_table(rb_iseq_t *iseq)
+{
+ int i;
+
+ if (iseq->arg_opts != 0) {
+ for (i = 0; i < iseq->arg_opts; i++) {
+ iseq->arg_opt_table[i] =
+ label_get_position((LABEL *)iseq->arg_opt_table[i]);
+ }
+ }
+ return COMPILE_OK;
+}
+
+static LINK_ELEMENT *
+get_destination_insn(INSN *iobj)
+{
+ LABEL *lobj = (LABEL *)OPERAND_AT(iobj, 0);
+ LINK_ELEMENT *list;
+
+ list = lobj->link.next;
+ while (list) {
+ if (list->type == ISEQ_ELEMENT_INSN || list->type == ISEQ_ELEMENT_ADJUST) {
+ break;
+ }
+ list = list->next;
+ }
+ return list;
+}
+
+static LINK_ELEMENT *
+get_next_insn(INSN *iobj)
+{
+ LINK_ELEMENT *list = iobj->link.next;
+
+ while (list) {
+ if (list->type == ISEQ_ELEMENT_INSN || list->type == ISEQ_ELEMENT_ADJUST) {
+ return list;
+ }
+ list = list->next;
+ }
+ return 0;
+}
+
+static LINK_ELEMENT *
+get_prev_insn(INSN *iobj)
+{
+ LINK_ELEMENT *list = iobj->link.prev;
+
+ while (list) {
+ if (list->type == ISEQ_ELEMENT_INSN || list->type == ISEQ_ELEMENT_ADJUST) {
+ return list;
+ }
+ list = list->prev;
+ }
+ return 0;
+}
+
+static int
+iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcallopt)
+{
+ INSN *iobj = (INSN *)list;
+ again:
+ if (iobj->insn_id == BIN(jump)) {
+ INSN *niobj, *diobj, *piobj;
+ /*
+ * useless jump elimination:
+ * jump LABEL1
+ * ...
+ * LABEL1:
+ * jump LABEL2
+ *
+ * => in this case, first jump instruction should jump to
+ * LABEL2 directly
+ */
+ diobj = (INSN *)get_destination_insn(iobj);
+ niobj = (INSN *)get_next_insn(iobj);
+
+ if (diobj == niobj) {
+ /*
+ * jump LABEL
+ * LABEL:
+ * =>
+ * LABEL:
+ */
+ REMOVE_ELEM(&iobj->link);
+ }
+ else if (iobj != diobj && diobj->insn_id == BIN(jump)) {
+ if (OPERAND_AT(iobj, 0) != OPERAND_AT(diobj, 0)) {
+ OPERAND_AT(iobj, 0) = OPERAND_AT(diobj, 0);
+ goto again;
+ }
+ }
+ else if (diobj->insn_id == BIN(leave)) {
+ /*
+ * jump LABEL
+ * ...
+ * LABEL:
+ * leave
+ * =>
+ * leave
+ * ...
+ * LABEL:
+ * leave
+ */
+ INSN *eiobj = new_insn_core(iseq, iobj->line_no, BIN(leave),
+ diobj->operand_size, diobj->operands);
+ INSN *popiobj = new_insn_core(iseq, iobj->line_no,
+ BIN(pop), 0, 0);
+ /* replace */
+ REPLACE_ELEM((LINK_ELEMENT *)iobj, (LINK_ELEMENT *)eiobj);
+ INSERT_ELEM_NEXT((LINK_ELEMENT *)eiobj, (LINK_ELEMENT *)popiobj);
+ iobj = popiobj;
+ }
+ /*
+ * useless jump elimination (if/unless destination):
+ * if L1
+ * jump L2
+ * L1:
+ * ...
+ * L2:
+ *
+ * ==>
+ * unless L2
+ * L1:
+ * ...
+ * L2:
+ */
+ else if ((piobj = (INSN *)get_prev_insn(iobj)) != 0 &&
+ (piobj->insn_id == BIN(branchif) ||
+ piobj->insn_id == BIN(branchunless))) {
+ if (niobj == (INSN *)get_destination_insn(piobj)) {
+ piobj->insn_id = (piobj->insn_id == BIN(branchif))
+ ? BIN(branchunless) : BIN(branchif);
+ OPERAND_AT(piobj, 0) = OPERAND_AT(iobj, 0);
+ REMOVE_ELEM(&iobj->link);
+ }
+ }
+ }
+
+ if (iobj->insn_id == BIN(branchif) ||
+ iobj->insn_id == BIN(branchunless)) {
+ /*
+ * if L1
+ * ...
+ * L1:
+ * jump L2
+ * =>
+ * if L2
+ */
+ INSN *nobj = (INSN *)get_destination_insn(iobj);
+ if (nobj->insn_id == BIN(jump)) {
+ OPERAND_AT(iobj, 0) = OPERAND_AT(nobj, 0);
+ }
+ }
+
+ if (do_tailcallopt && iobj->insn_id == BIN(leave)) {
+ /*
+ * send ...
+ * leave
+ * =>
+ * send ..., ... | VM_CALL_TAILCALL, ...
+ * leave # unreachable
+ */
+ INSN *piobj = (INSN *)get_prev_insn((INSN *)list);
+ enum ruby_vminsn_type previ = piobj->insn_id;
+
+ if (previ == BIN(send) || previ == BIN(opt_send_simple) || previ == BIN(invokesuper)) {
+ rb_call_info_t *ci = (rb_call_info_t *)piobj->operands[0];
+ if (ci->blockiseq == 0) {
+ ci->flag |= VM_CALL_TAILCALL;
+ }
+ }
+ }
+ return COMPILE_OK;
+}
+
+static int
+insn_set_specialized_instruction(rb_iseq_t *iseq, INSN *iobj, int insn_id)
+{
+ int old_opsize = iobj->operand_size;
+ iobj->insn_id = insn_id;
+ iobj->operand_size = insn_len(insn_id) - 1;
+
+ if (iobj->operand_size > old_opsize) {
+ VALUE *old_operands = iobj->operands;
+ if (insn_id != BIN(opt_neq)) {
+ rb_bug("insn_set_specialized_instruction: unknown insn: %d", insn_id);
+ }
+ iobj->operands = (VALUE *)compile_data_alloc(iseq, iobj->operand_size * sizeof(VALUE));
+ iobj->operands[0] = old_operands[0];
+ iobj->operands[1] = (VALUE)new_callinfo(iseq, idEq, 1, 0, 0);
+ }
+
+ return COMPILE_OK;
+}
+
+static int
+iseq_specialized_instruction(rb_iseq_t *iseq, INSN *iobj)
+{
+ if (iobj->insn_id == BIN(send)) {
+ rb_call_info_t *ci = (rb_call_info_t *)OPERAND_AT(iobj, 0);
+
+#define SP_INSN(opt) insn_set_specialized_instruction(iseq, iobj, BIN(opt_##opt))
+ if (ci->blockiseq == 0 && (ci->flag & ~VM_CALL_ARGS_SKIP_SETUP) == 0) {
+ switch (ci->orig_argc) {
+ case 0:
+ switch (ci->mid) {
+ case idLength: SP_INSN(length); return COMPILE_OK;
+ case idSize: SP_INSN(size); return COMPILE_OK;
+ case idEmptyP: SP_INSN(empty_p);return COMPILE_OK;
+ case idSucc: SP_INSN(succ); return COMPILE_OK;
+ case idNot: SP_INSN(not); return COMPILE_OK;
+ }
+ break;
+ case 1:
+ switch (ci->mid) {
+ case idPLUS: SP_INSN(plus); return COMPILE_OK;
+ case idMINUS: SP_INSN(minus); return COMPILE_OK;
+ case idMULT: SP_INSN(mult); return COMPILE_OK;
+ case idDIV: SP_INSN(div); return COMPILE_OK;
+ case idMOD: SP_INSN(mod); return COMPILE_OK;
+ case idEq: SP_INSN(eq); return COMPILE_OK;
+ case idNeq: SP_INSN(neq); return COMPILE_OK;
+ case idLT: SP_INSN(lt); return COMPILE_OK;
+ case idLE: SP_INSN(le); return COMPILE_OK;
+ case idGT: SP_INSN(gt); return COMPILE_OK;
+ case idGE: SP_INSN(ge); return COMPILE_OK;
+ case idLTLT: SP_INSN(ltlt); return COMPILE_OK;
+ case idAREF: SP_INSN(aref); return COMPILE_OK;
+ }
+ break;
+ }
+ }
+ if (ci->flag & VM_CALL_ARGS_SKIP_SETUP) {
+ iobj->insn_id = BIN(opt_send_simple);
+ }
+ }
+#undef SP_INSN
+
+ return COMPILE_OK;
+}
+
+static int
+iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
+{
+ LINK_ELEMENT *list;
+ const int do_peepholeopt = iseq->compile_data->option->peephole_optimization;
+ const int do_tailcallopt = iseq->compile_data->option->tailcall_optimization;
+ const int do_si = iseq->compile_data->option->specialized_instruction;
+ const int do_ou = iseq->compile_data->option->operands_unification;
+ list = FIRST_ELEMENT(anchor);
+
+ while (list) {
+ if (list->type == ISEQ_ELEMENT_INSN) {
+ if (do_peepholeopt) {
+ iseq_peephole_optimize(iseq, list, do_tailcallopt);
+ }
+ if (do_si) {
+ iseq_specialized_instruction(iseq, (INSN *)list);
+ }
+ if (do_ou) {
+ insn_operands_unification((INSN *)list);
+ }
+ }
+ list = list->next;
+ }
+ return COMPILE_OK;
+}
+
+#if OPT_INSTRUCTIONS_UNIFICATION
+static INSN *
+new_unified_insn(rb_iseq_t *iseq,
+ int insn_id, int size, LINK_ELEMENT *seq_list)
+{
+ INSN *iobj = 0;
+ LINK_ELEMENT *list = seq_list;
+ int i, argc = 0;
+ VALUE *operands = 0, *ptr = 0;
+
+
+ /* count argc */
+ for (i = 0; i < size; i++) {
+ iobj = (INSN *)list;
+ argc += iobj->operand_size;
+ list = list->next;
+ }
+
+ if (argc > 0) {
+ ptr = operands =
+ (VALUE *)compile_data_alloc(iseq, sizeof(VALUE) * argc);
+ }
+
+ /* copy operands */
+ list = seq_list;
+ for (i = 0; i < size; i++) {
+ iobj = (INSN *)list;
+ MEMCPY(ptr, iobj->operands, VALUE, iobj->operand_size);
+ ptr += iobj->operand_size;
+ list = list->next;
+ }
+
+ return new_insn_core(iseq, iobj->line_no, insn_id, argc, operands);
+}
+#endif
+
+/*
+ * This scheme can get more performance if do this optimize with
+ * label address resolving.
+ * It's future work (if compile time was bottle neck).
+ */
+static int
+iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
+{
+#if OPT_INSTRUCTIONS_UNIFICATION
+ LINK_ELEMENT *list;
+ INSN *iobj, *niobj;
+ int id, k;
+ intptr_t j;
+
+ list = FIRST_ELEMENT(anchor);
+ while (list) {
+ if (list->type == ISEQ_ELEMENT_INSN) {
+ iobj = (INSN *)list;
+ id = iobj->insn_id;
+ if (unified_insns_data[id] != 0) {
+ const int *const *entry = unified_insns_data[id];
+ for (j = 1; j < (intptr_t)entry[0]; j++) {
+ const int *unified = entry[j];
+ LINK_ELEMENT *li = list->next;
+ for (k = 2; k < unified[1]; k++) {
+ if (li->type != ISEQ_ELEMENT_INSN ||
+ ((INSN *)li)->insn_id != unified[k]) {
+ goto miss;
+ }
+ li = li->next;
+ }
+ /* matched */
+ niobj =
+ new_unified_insn(iseq, unified[0], unified[1] - 1,
+ list);
+
+ /* insert to list */
+ niobj->link.prev = (LINK_ELEMENT *)iobj->link.prev;
+ niobj->link.next = li;
+ if (li) {
+ li->prev = (LINK_ELEMENT *)niobj;
+ }
+
+ list->prev->next = (LINK_ELEMENT *)niobj;
+ list = (LINK_ELEMENT *)niobj;
+ break;
+ miss:;
+ }
+ }
+ }
+ list = list->next;
+ }
+#endif
+ return COMPILE_OK;
+}
+
+#if OPT_STACK_CACHING
+
+#define SC_INSN(insn, stat) sc_insn_info[(insn)][(stat)]
+#define SC_NEXT(insn) sc_insn_next[(insn)]
+
+#include "opt_sc.inc"
+
+static int
+insn_set_sc_state(rb_iseq_t *iseq, INSN *iobj, int state)
+{
+ int nstate;
+ int insn_id;
+
+ insn_id = iobj->insn_id;
+ iobj->insn_id = SC_INSN(insn_id, state);
+ nstate = SC_NEXT(iobj->insn_id);
+
+ if (insn_id == BIN(jump) ||
+ insn_id == BIN(branchif) || insn_id == BIN(branchunless)) {
+ LABEL *lobj = (LABEL *)OPERAND_AT(iobj, 0);
+
+ if (lobj->sc_state != 0) {
+ if (lobj->sc_state != nstate) {
+ dump_disasm_list((LINK_ELEMENT *)iobj);
+ dump_disasm_list((LINK_ELEMENT *)lobj);
+ printf("\n-- %d, %d\n", lobj->sc_state, nstate);
+ rb_compile_error(RSTRING_PTR(iseq->location.path), iobj->line_no,
+ "insn_set_sc_state error\n");
+ return 0;
+ }
+ }
+ else {
+ lobj->sc_state = nstate;
+ }
+ if (insn_id == BIN(jump)) {
+ nstate = SCS_XX;
+ }
+ }
+ else if (insn_id == BIN(leave)) {
+ nstate = SCS_XX;
+ }
+
+ return nstate;
+}
+
+static int
+label_set_sc_state(LABEL *lobj, int state)
+{
+ if (lobj->sc_state != 0) {
+ if (lobj->sc_state != state) {
+ state = lobj->sc_state;
+ }
+ }
+ else {
+ lobj->sc_state = state;
+ }
+
+ return state;
+}
+
+
+#endif
+
+static int
+iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
+{
+#if OPT_STACK_CACHING
+ LINK_ELEMENT *list;
+ int state, insn_id;
+
+ /* initialize */
+ state = SCS_XX;
+ list = FIRST_ELEMENT(anchor);
+ /* dump_disasm_list(list); */
+
+ /* for each list element */
+ while (list) {
+ redo_point:
+ switch (list->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ INSN *iobj = (INSN *)list;
+ insn_id = iobj->insn_id;
+
+ /* dump_disasm_list(list); */
+
+ switch (insn_id) {
+ case BIN(nop):
+ {
+ /* exception merge point */
+ if (state != SCS_AX) {
+ INSN *rpobj =
+ new_insn_body(iseq, 0, BIN(reput), 0);
+
+ /* replace this insn */
+ REPLACE_ELEM(list, (LINK_ELEMENT *)rpobj);
+ list = (LINK_ELEMENT *)rpobj;
+ goto redo_point;
+ }
+ break;
+ }
+ case BIN(swap):
+ {
+ if (state == SCS_AB || state == SCS_BA) {
+ state = (state == SCS_AB ? SCS_BA : SCS_AB);
+
+ REMOVE_ELEM(list);
+ list = list->next;
+ goto redo_point;
+ }
+ break;
+ }
+ case BIN(pop):
+ {
+ switch (state) {
+ case SCS_AX:
+ case SCS_BX:
+ state = SCS_XX;
+ break;
+ case SCS_AB:
+ state = SCS_AX;
+ break;
+ case SCS_BA:
+ state = SCS_BX;
+ break;
+ case SCS_XX:
+ goto normal_insn;
+ default:
+ rb_compile_error(RSTRING_PTR(iseq->location.path), iobj->line_no,
+ "unreachable");
+ }
+ /* remove useless pop */
+ REMOVE_ELEM(list);
+ list = list->next;
+ goto redo_point;
+ }
+ default:;
+ /* none */
+ } /* end of switch */
+ normal_insn:
+ state = insn_set_sc_state(iseq, iobj, state);
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ LABEL *lobj;
+ lobj = (LABEL *)list;
+
+ state = label_set_sc_state(lobj, state);
+ }
+ default:
+ break;
+ }
+ list = list->next;
+ }
+#endif
+ return COMPILE_OK;
+}
+
+static int
+compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int *cntp)
+{
+ NODE *list = node->nd_next;
+ VALUE lit = node->nd_lit;
+ int cnt = 0;
+
+ debugp_param("nd_lit", lit);
+ if (!NIL_P(lit)) {
+ hide_obj(lit);
+ cnt++;
+ ADD_INSN1(ret, nd_line(node), putobject, lit);
+ }
+
+ while (list) {
+ node = list->nd_head;
+ if (nd_type(node) == NODE_STR) {
+ hide_obj(node->nd_lit);
+ ADD_INSN1(ret, nd_line(node), putobject, node->nd_lit);
+ }
+ else {
+ COMPILE(ret, "each string", node);
+ }
+ cnt++;
+ list = list->nd_next;
+ }
+ *cntp = cnt;
+
+ return COMPILE_OK;
+}
+
+static int
+compile_dstr(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node)
+{
+ int cnt;
+ compile_dstr_fragments(iseq, ret, node, &cnt);
+ ADD_INSN1(ret, nd_line(node), concatstrings, INT2FIX(cnt));
+ return COMPILE_OK;
+}
+
+static int
+compile_dregx(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node)
+{
+ int cnt;
+ compile_dstr_fragments(iseq, ret, node, &cnt);
+ ADD_INSN2(ret, nd_line(node), toregexp, INT2FIX(node->nd_cflag), INT2FIX(cnt));
+ return COMPILE_OK;
+}
+
+static int
+compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * cond,
+ LABEL *then_label, LABEL *else_label)
+{
+ switch (nd_type(cond)) {
+ case NODE_AND:
+ {
+ LABEL *label = NEW_LABEL(nd_line(cond));
+ compile_branch_condition(iseq, ret, cond->nd_1st, label,
+ else_label);
+ ADD_LABEL(ret, label);
+ compile_branch_condition(iseq, ret, cond->nd_2nd, then_label,
+ else_label);
+ break;
+ }
+ case NODE_OR:
+ {
+ LABEL *label = NEW_LABEL(nd_line(cond));
+ compile_branch_condition(iseq, ret, cond->nd_1st, then_label,
+ label);
+ ADD_LABEL(ret, label);
+ compile_branch_condition(iseq, ret, cond->nd_2nd, then_label,
+ else_label);
+ break;
+ }
+ case NODE_LIT: /* NODE_LIT is always not true */
+ case NODE_TRUE:
+ case NODE_STR:
+ /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */
+ ADD_INSNL(ret, nd_line(cond), jump, then_label);
+ break;
+ case NODE_FALSE:
+ case NODE_NIL:
+ /* printf("useless condition eliminate (%s)\n", ruby_node_name(nd_type(cond))); */
+ ADD_INSNL(ret, nd_line(cond), jump, else_label);
+ break;
+ default:
+ COMPILE(ret, "branch condition", cond);
+ ADD_INSNL(ret, nd_line(cond), branchunless, else_label);
+ ADD_INSNL(ret, nd_line(cond), jump, then_label);
+ break;
+ }
+ return COMPILE_OK;
+}
+
+enum compile_array_type_t {
+ COMPILE_ARRAY_TYPE_ARRAY,
+ COMPILE_ARRAY_TYPE_HASH,
+ COMPILE_ARRAY_TYPE_ARGS
+};
+
+static int
+compile_array_(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE* node_root,
+ enum compile_array_type_t type, int poped)
+{
+ NODE *node = node_root;
+ int line = (int)nd_line(node);
+ int len = 0;
+
+ if (nd_type(node) == NODE_ZARRAY) {
+ if (!poped) {
+ switch (type) {
+ case COMPILE_ARRAY_TYPE_ARRAY: ADD_INSN1(ret, line, newarray, INT2FIX(0)); break;
+ case COMPILE_ARRAY_TYPE_HASH: ADD_INSN1(ret, line, newhash, INT2FIX(0)); break;
+ case COMPILE_ARRAY_TYPE_ARGS: /* do nothing */ break;
+ }
+ }
+ }
+ else {
+ int opt_p = 1;
+ int first = 1, i;
+
+ while (node) {
+ NODE *start_node = node, *end_node;
+ NODE *kw = 0;
+ const int max = 0x100;
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+
+ for (i=0; i<max && node; i++, len++, node = node->nd_next) {
+ if (CPDEBUG > 0 && nd_type(node) != NODE_ARRAY) {
+ rb_bug("compile_array: This node is not NODE_ARRAY, but %s", ruby_node_name(nd_type(node)));
+ }
+
+ if (type == COMPILE_ARRAY_TYPE_HASH && !node->nd_head) {
+ opt_p = 0;
+ kw = node->nd_next;
+ node = kw->nd_next;
+ kw = kw->nd_head;
+ break;
+ }
+ if (opt_p && nd_type(node->nd_head) != NODE_LIT) {
+ opt_p = 0;
+ }
+
+ COMPILE_(anchor, "array element", node->nd_head, poped);
+ }
+
+ if (opt_p && type != COMPILE_ARRAY_TYPE_ARGS) {
+ if (!poped) {
+ VALUE ary = rb_ary_tmp_new(i);
+
+ end_node = node;
+ node = start_node;
+
+ while (node != end_node) {
+ rb_ary_push(ary, node->nd_head->nd_lit);
+ node = node->nd_next;
+ }
+ while (node && nd_type(node->nd_head) == NODE_LIT &&
+ node->nd_next && nd_type(node->nd_next->nd_head) == NODE_LIT) {
+ rb_ary_push(ary, node->nd_head->nd_lit);
+ node = node->nd_next;
+ rb_ary_push(ary, node->nd_head->nd_lit);
+ node = node->nd_next;
+ len++;
+ }
+
+ OBJ_FREEZE(ary);
+
+ iseq_add_mark_object_compile_time(iseq, ary);
+
+ if (first) {
+ first = 0;
+ if (type == COMPILE_ARRAY_TYPE_ARRAY) {
+ ADD_INSN1(ret, line, duparray, ary);
+ }
+ else { /* COMPILE_ARRAY_TYPE_HASH */
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putobject, ary);
+ ADD_SEND(ret, line, ID2SYM(id_core_hash_from_ary), INT2FIX(1));
+ }
+ }
+ else {
+ if (type == COMPILE_ARRAY_TYPE_ARRAY) {
+ ADD_INSN1(ret, line, putobject, ary);
+ ADD_INSN(ret, line, concatarray);
+ }
+ else {
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putobject, ary);
+ ADD_SEND(ret, line, ID2SYM(id_core_hash_merge_ary), INT2FIX(1));
+ }
+ }
+ }
+ }
+ else {
+ if (!poped) {
+ switch (type) {
+ case COMPILE_ARRAY_TYPE_ARRAY:
+ ADD_INSN1(anchor, line, newarray, INT2FIX(i));
+
+ if (first) {
+ first = 0;
+ }
+ else {
+ ADD_INSN(anchor, line, concatarray);
+ }
+
+ APPEND_LIST(ret, anchor);
+ break;
+ case COMPILE_ARRAY_TYPE_HASH:
+ if (i > 0) {
+ if (first) {
+ ADD_INSN1(anchor, line, newhash, INT2FIX(i));
+ APPEND_LIST(ret, anchor);
+ }
+ else {
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN(ret, line, swap);
+ APPEND_LIST(ret, anchor);
+ ADD_SEND(ret, line, ID2SYM(id_core_hash_merge_ptr), INT2FIX(i + 1));
+ }
+ }
+ if (kw) {
+ VALUE nhash = (i > 0 || !first) ? INT2FIX(2) : INT2FIX(1);
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ if (i > 0 || !first) ADD_INSN(ret, line, swap);
+ COMPILE(ret, "keyword splat", kw);
+ ADD_SEND(ret, line, ID2SYM(id_core_hash_merge_kwd), nhash);
+ }
+ first = 0;
+ break;
+ case COMPILE_ARRAY_TYPE_ARGS:
+ APPEND_LIST(ret, anchor);
+ break;
+ }
+ }
+ else {
+ /* poped */
+ APPEND_LIST(ret, anchor);
+ }
+ }
+ }
+ }
+ return len;
+}
+
+static VALUE
+compile_array(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE* node_root, enum compile_array_type_t type)
+{
+ return compile_array_(iseq, ret, node_root, type, 0);
+}
+
+static VALUE
+case_when_optimizable_literal(NODE * node)
+{
+ switch (nd_type(node)) {
+ case NODE_LIT: {
+ VALUE v = node->nd_lit;
+ double ival;
+ if (RB_TYPE_P(v, T_FLOAT) &&
+ modf(RFLOAT_VALUE(v), &ival) == 0.0) {
+ return FIXABLE(ival) ? LONG2FIX((long)ival) : rb_dbl2big(ival);
+ }
+ if (SYMBOL_P(v) || rb_obj_is_kind_of(v, rb_cNumeric)) {
+ return v;
+ }
+ break;
+ }
+ case NODE_STR:
+ return node->nd_lit;
+ }
+ return Qundef;
+}
+
+static int
+when_vals(rb_iseq_t *iseq, LINK_ANCHOR *cond_seq, NODE *vals, LABEL *l1, int only_special_literals, VALUE literals)
+{
+ while (vals) {
+ NODE* val = vals->nd_head;
+ VALUE lit = case_when_optimizable_literal(val);
+
+ if (lit == Qundef) {
+ only_special_literals = 0;
+ }
+ else {
+ if (rb_hash_lookup(literals, lit) != Qnil) {
+ rb_compile_warning(RSTRING_PTR(iseq->location.path), nd_line(val), "duplicated when clause is ignored");
+ }
+ else {
+ rb_hash_aset(literals, lit, (VALUE)(l1) | 1);
+ }
+ }
+
+ ADD_INSN(cond_seq, nd_line(val), dup); /* dup target */
+
+ if (nd_type(val) == NODE_STR) {
+ debugp_param("nd_lit", val->nd_lit);
+ OBJ_FREEZE(val->nd_lit);
+ ADD_INSN1(cond_seq, nd_line(val), putobject, val->nd_lit);
+ }
+ else {
+ COMPILE(cond_seq, "when cond", val);
+ }
+
+ ADD_INSN1(cond_seq, nd_line(vals), checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE));
+ ADD_INSNL(cond_seq, nd_line(val), branchif, l1);
+ vals = vals->nd_next;
+ }
+ return only_special_literals;
+}
+
+static int
+compile_massign_lhs(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node)
+{
+ switch (nd_type(node)) {
+ case NODE_ATTRASGN: {
+ INSN *iobj;
+ rb_call_info_t *ci;
+ VALUE dupidx;
+
+ COMPILE_POPED(ret, "masgn lhs (NODE_ATTRASGN)", node);
+
+ POP_ELEMENT(ret); /* pop pop insn */
+ iobj = (INSN *)POP_ELEMENT(ret); /* pop send insn */
+ ci = (rb_call_info_t *)iobj->operands[0];
+ ci->orig_argc += 1; ci->argc = ci->orig_argc;
+ dupidx = INT2FIX(ci->orig_argc);
+
+ ADD_INSN1(ret, nd_line(node), topn, dupidx);
+ ADD_ELEM(ret, (LINK_ELEMENT *)iobj);
+ ADD_INSN(ret, nd_line(node), pop); /* result */
+ ADD_INSN(ret, nd_line(node), pop); /* rhs */
+ break;
+ }
+ case NODE_MASGN: {
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+ COMPILE_POPED(anchor, "nest masgn lhs", node);
+ REMOVE_ELEM(FIRST_ELEMENT(anchor));
+ ADD_SEQ(ret, anchor);
+ break;
+ }
+ default: {
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+ COMPILE_POPED(anchor, "masgn lhs", node);
+ REMOVE_ELEM(FIRST_ELEMENT(anchor));
+ ADD_SEQ(ret, anchor);
+ }
+ }
+
+ return COMPILE_OK;
+}
+
+static void
+compile_massign_opt_lhs(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *lhsn)
+{
+ if (lhsn) {
+ compile_massign_opt_lhs(iseq, ret, lhsn->nd_next);
+ compile_massign_lhs(iseq, ret, lhsn->nd_head);
+ }
+}
+
+static int
+compile_massign_opt(rb_iseq_t *iseq, LINK_ANCHOR *ret,
+ NODE *rhsn, NODE *orig_lhsn)
+{
+ VALUE mem[64];
+ const int memsize = numberof(mem);
+ int memindex = 0;
+ int llen = 0, rlen = 0;
+ int i;
+ NODE *lhsn = orig_lhsn;
+
+#define MEMORY(v) { \
+ int i; \
+ if (memindex == memsize) return 0; \
+ for (i=0; i<memindex; i++) { \
+ if (mem[i] == (v)) return 0; \
+ } \
+ mem[memindex++] = (v); \
+}
+
+ if (rhsn == 0 || nd_type(rhsn) != NODE_ARRAY) {
+ return 0;
+ }
+
+ while (lhsn) {
+ NODE *ln = lhsn->nd_head;
+ switch (nd_type(ln)) {
+ case NODE_LASGN:
+ MEMORY(ln->nd_vid);
+ break;
+ case NODE_DASGN:
+ case NODE_DASGN_CURR:
+ case NODE_IASGN:
+ case NODE_IASGN2:
+ case NODE_CVASGN:
+ MEMORY(ln->nd_vid);
+ break;
+ default:
+ return 0;
+ }
+ lhsn = lhsn->nd_next;
+ llen++;
+ }
+
+ while (rhsn) {
+ if (llen <= rlen) {
+ COMPILE_POPED(ret, "masgn val (popped)", rhsn->nd_head);
+ }
+ else {
+ COMPILE(ret, "masgn val", rhsn->nd_head);
+ }
+ rhsn = rhsn->nd_next;
+ rlen++;
+ }
+
+ if (llen > rlen) {
+ for (i=0; i<llen-rlen; i++) {
+ ADD_INSN(ret, nd_line(orig_lhsn), putnil);
+ }
+ }
+
+ compile_massign_opt_lhs(iseq, ret, orig_lhsn);
+ return 1;
+}
+
+static int
+compile_massign(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int poped)
+{
+ NODE *rhsn = node->nd_value;
+ NODE *splatn = node->nd_args;
+ NODE *lhsn = node->nd_head;
+ int lhs_splat = (splatn && (VALUE)splatn != (VALUE)-1) ? 1 : 0;
+
+ if (!poped || splatn || !compile_massign_opt(iseq, ret, rhsn, lhsn)) {
+ int llen = 0;
+ DECL_ANCHOR(lhsseq);
+
+ INIT_ANCHOR(lhsseq);
+
+ while (lhsn) {
+ compile_massign_lhs(iseq, lhsseq, lhsn->nd_head);
+ llen += 1;
+ lhsn = lhsn->nd_next;
+ }
+
+ COMPILE(ret, "normal masgn rhs", rhsn);
+
+ if (!poped) {
+ ADD_INSN(ret, nd_line(node), dup);
+ }
+
+ ADD_INSN2(ret, nd_line(node), expandarray,
+ INT2FIX(llen), INT2FIX(lhs_splat));
+ ADD_SEQ(ret, lhsseq);
+
+ if (lhs_splat) {
+ if (nd_type(splatn) == NODE_POSTARG) {
+ /*a, b, *r, p1, p2 */
+ NODE *postn = splatn->nd_2nd;
+ NODE *restn = splatn->nd_1st;
+ int num = (int)postn->nd_alen;
+ int flag = 0x02 | (((VALUE)restn == (VALUE)-1) ? 0x00 : 0x01);
+
+ ADD_INSN2(ret, nd_line(splatn), expandarray,
+ INT2FIX(num), INT2FIX(flag));
+
+ if ((VALUE)restn != (VALUE)-1) {
+ compile_massign_lhs(iseq, ret, restn);
+ }
+ while (postn) {
+ compile_massign_lhs(iseq, ret, postn->nd_head);
+ postn = postn->nd_next;
+ }
+ }
+ else {
+ /* a, b, *r */
+ compile_massign_lhs(iseq, ret, splatn);
+ }
+ }
+ }
+ return COMPILE_OK;
+}
+
+static int
+compile_colon2(rb_iseq_t *iseq, NODE * node,
+ LINK_ANCHOR *pref, LINK_ANCHOR *body)
+{
+ switch (nd_type(node)) {
+ case NODE_CONST:
+ debugi("compile_colon2 - colon", node->nd_vid);
+ ADD_INSN1(body, nd_line(node), getconstant, ID2SYM(node->nd_vid));
+ break;
+ case NODE_COLON3:
+ debugi("compile_colon2 - colon3", node->nd_mid);
+ ADD_INSN(body, nd_line(node), pop);
+ ADD_INSN1(body, nd_line(node), putobject, rb_cObject);
+ ADD_INSN1(body, nd_line(node), getconstant, ID2SYM(node->nd_mid));
+ break;
+ case NODE_COLON2:
+ compile_colon2(iseq, node->nd_head, pref, body);
+ debugi("compile_colon2 - colon2", node->nd_mid);
+ ADD_INSN1(body, nd_line(node), getconstant, ID2SYM(node->nd_mid));
+ break;
+ default:
+ COMPILE(pref, "const colon2 prefix", node);
+ break;
+ }
+ return COMPILE_OK;
+}
+
+static VALUE
+compile_cpath(LINK_ANCHOR *ret, rb_iseq_t *iseq, NODE *cpath)
+{
+ if (nd_type(cpath) == NODE_COLON3) {
+ /* toplevel class ::Foo */
+ ADD_INSN1(ret, nd_line(cpath), putobject, rb_cObject);
+ return Qfalse;
+ }
+ else if (cpath->nd_head) {
+ /* Bar::Foo */
+ COMPILE(ret, "nd_else->nd_head", cpath->nd_head);
+ return Qfalse;
+ }
+ else {
+ /* class at cbase Foo */
+ ADD_INSN1(ret, nd_line(cpath), putspecialobject,
+ INT2FIX(VM_SPECIAL_OBJECT_CONST_BASE));
+ return Qtrue;
+ }
+}
+
+#define defined_expr defined_expr0
+static int
+defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,
+ NODE *node, LABEL **lfinish, VALUE needstr)
+{
+ enum defined_type expr_type = 0;
+ enum node_type type;
+
+ switch (type = nd_type(node)) {
+
+ /* easy literals */
+ case NODE_NIL:
+ expr_type = DEFINED_NIL;
+ break;
+ case NODE_SELF:
+ expr_type = DEFINED_SELF;
+ break;
+ case NODE_TRUE:
+ expr_type = DEFINED_TRUE;
+ break;
+ case NODE_FALSE:
+ expr_type = DEFINED_FALSE;
+ break;
+
+ case NODE_ARRAY:{
+ NODE *vals = node;
+
+ do {
+ defined_expr(iseq, ret, vals->nd_head, lfinish, Qfalse);
+
+ if (!lfinish[1]) {
+ lfinish[1] = NEW_LABEL(nd_line(node));
+ }
+ ADD_INSNL(ret, nd_line(node), branchunless, lfinish[1]);
+ } while ((vals = vals->nd_next) != NULL);
+ }
+ case NODE_STR:
+ case NODE_LIT:
+ case NODE_ZARRAY:
+ case NODE_AND:
+ case NODE_OR:
+ default:
+ expr_type = DEFINED_EXPR;
+ break;
+
+ /* variables */
+ case NODE_LVAR:
+ case NODE_DVAR:
+ expr_type = DEFINED_LVAR;
+ break;
+
+ case NODE_IVAR:
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_IVAR),
+ ID2SYM(node->nd_vid), needstr);
+ return 1;
+
+ case NODE_GVAR:
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_GVAR),
+ ID2SYM(node->nd_entry->id), needstr);
+ return 1;
+
+ case NODE_CVAR:
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_CVAR),
+ ID2SYM(node->nd_vid), needstr);
+ return 1;
+
+ case NODE_CONST:
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_CONST),
+ ID2SYM(node->nd_vid), needstr);
+ return 1;
+ case NODE_COLON2:
+ if (!lfinish[1]) {
+ lfinish[1] = NEW_LABEL(nd_line(node));
+ }
+ defined_expr(iseq, ret, node->nd_head, lfinish, Qfalse);
+ ADD_INSNL(ret, nd_line(node), branchunless, lfinish[1]);
+
+ if (rb_is_const_id(node->nd_mid)) {
+ COMPILE(ret, "defined/colon2#nd_head", node->nd_head);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_CONST),
+ ID2SYM(node->nd_mid), needstr);
+ }
+ else {
+ COMPILE(ret, "defined/colon2#nd_head", node->nd_head);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_METHOD),
+ ID2SYM(node->nd_mid), needstr);
+ }
+ return 1;
+ case NODE_COLON3:
+ ADD_INSN1(ret, nd_line(node), putobject, rb_cObject);
+ ADD_INSN3(ret, nd_line(node), defined,
+ INT2FIX(DEFINED_CONST), ID2SYM(node->nd_mid), needstr);
+ return 1;
+
+ /* method dispatch */
+ case NODE_CALL:
+ case NODE_VCALL:
+ case NODE_FCALL:
+ case NODE_ATTRASGN:{
+ int self = TRUE;
+
+ switch (type) {
+ case NODE_ATTRASGN:
+ if (node->nd_recv == (NODE *)1) break;
+ case NODE_CALL:
+ self = FALSE;
+ break;
+ default:
+ /* through */;
+ }
+ if (!lfinish[1]) {
+ lfinish[1] = NEW_LABEL(nd_line(node));
+ }
+ if (node->nd_args) {
+ defined_expr(iseq, ret, node->nd_args, lfinish, Qfalse);
+ ADD_INSNL(ret, nd_line(node), branchunless, lfinish[1]);
+ }
+ if (!self) {
+ defined_expr(iseq, ret, node->nd_recv, lfinish, Qfalse);
+ ADD_INSNL(ret, nd_line(node), branchunless, lfinish[1]);
+ COMPILE(ret, "defined/recv", node->nd_recv);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_METHOD),
+ ID2SYM(node->nd_mid), needstr);
+ }
+ else {
+ ADD_INSN(ret, nd_line(node), putself);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_FUNC),
+ ID2SYM(node->nd_mid), needstr);
+ }
+ return 1;
+ }
+
+ case NODE_YIELD:
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_YIELD), 0,
+ needstr);
+ return 1;
+
+ case NODE_BACK_REF:
+ case NODE_NTH_REF:
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_REF),
+ INT2FIX((node->nd_nth << 1) | (type == NODE_BACK_REF)),
+ needstr);
+ return 1;
+
+ case NODE_SUPER:
+ case NODE_ZSUPER:
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_ZSUPER), 0,
+ needstr);
+ return 1;
+
+ case NODE_OP_ASGN1:
+ case NODE_OP_ASGN2:
+ case NODE_OP_ASGN_OR:
+ case NODE_OP_ASGN_AND:
+ case NODE_MASGN:
+ case NODE_LASGN:
+ case NODE_DASGN:
+ case NODE_DASGN_CURR:
+ case NODE_GASGN:
+ case NODE_IASGN:
+ case NODE_CDECL:
+ case NODE_CVDECL:
+ case NODE_CVASGN:
+ expr_type = DEFINED_ASGN;
+ break;
+ }
+
+ if (expr_type) {
+ if (needstr != Qfalse) {
+ VALUE str = rb_iseq_defined_string(expr_type);
+ ADD_INSN1(ret, nd_line(node), putobject, str);
+ }
+ else {
+ ADD_INSN1(ret, nd_line(node), putobject, Qtrue);
+ }
+ return 1;
+ }
+ return 0;
+}
+#undef defined_expr
+
+static int
+defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,
+ NODE *node, LABEL **lfinish, VALUE needstr)
+{
+ LINK_ELEMENT *lcur = ret->last;
+ int done = defined_expr0(iseq, ret, node, lfinish, needstr);
+ if (lfinish[1]) {
+ int line = nd_line(node);
+ LABEL *lstart = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(line);
+ VALUE rescue = NEW_CHILD_ISEQVAL(NEW_NIL(),
+ rb_str_concat(rb_str_new2
+ ("defined guard in "),
+ iseq->location.label),
+ ISEQ_TYPE_DEFINED_GUARD, 0);
+ APPEND_LABEL(ret, lcur, lstart);
+ ADD_LABEL(ret, lend);
+ ADD_CATCH_ENTRY(CATCH_TYPE_RESCUE, lstart, lend, rescue, lfinish[1]);
+ }
+ return done;
+}
+
+#define BUFSIZE 0x100
+
+static VALUE
+make_name_for_block(rb_iseq_t *iseq)
+{
+ int level = 1;
+ rb_iseq_t *ip = iseq;
+
+ if (iseq->parent_iseq != 0) {
+ while (ip->local_iseq != ip) {
+ if (ip->type == ISEQ_TYPE_BLOCK) {
+ level++;
+ }
+ ip = ip->parent_iseq;
+ }
+ }
+
+ if (level == 1) {
+ return rb_sprintf("block in %"PRIsVALUE, ip->location.label);
+ }
+ else {
+ return rb_sprintf("block (%d levels) in %"PRIsVALUE, level, ip->location.label);
+ }
+}
+
+static void
+push_ensure_entry(rb_iseq_t *iseq,
+ struct iseq_compile_data_ensure_node_stack *enl,
+ struct ensure_range *er, NODE *node)
+{
+ enl->ensure_node = node;
+ enl->prev = iseq->compile_data->ensure_node_stack; /* prev */
+ enl->erange = er;
+ iseq->compile_data->ensure_node_stack = enl;
+}
+
+static void
+add_ensure_range(rb_iseq_t *iseq, struct ensure_range *erange,
+ LABEL *lstart, LABEL *lend)
+{
+ struct ensure_range *ne =
+ compile_data_alloc(iseq, sizeof(struct ensure_range));
+
+ while (erange->next != 0) {
+ erange = erange->next;
+ }
+ ne->next = 0;
+ ne->begin = lend;
+ ne->end = erange->end;
+ erange->end = lstart;
+
+ erange->next = ne;
+}
+
+static void
+add_ensure_iseq(LINK_ANCHOR *ret, rb_iseq_t *iseq, int is_return)
+{
+ struct iseq_compile_data_ensure_node_stack *enlp =
+ iseq->compile_data->ensure_node_stack;
+ struct iseq_compile_data_ensure_node_stack *prev_enlp = enlp;
+ DECL_ANCHOR(ensure);
+
+ INIT_ANCHOR(ensure);
+ while (enlp) {
+ if (enlp->erange != 0) {
+ DECL_ANCHOR(ensure_part);
+ LABEL *lstart = NEW_LABEL(0);
+ LABEL *lend = NEW_LABEL(0);
+ INIT_ANCHOR(ensure_part);
+
+ add_ensure_range(iseq, enlp->erange, lstart, lend);
+
+ iseq->compile_data->ensure_node_stack = enlp->prev;
+ ADD_LABEL(ensure_part, lstart);
+ COMPILE_POPED(ensure_part, "ensure part", enlp->ensure_node);
+ ADD_LABEL(ensure_part, lend);
+ ADD_SEQ(ensure, ensure_part);
+ }
+ else {
+ if (!is_return) {
+ break;
+ }
+ }
+ enlp = enlp->prev;
+ }
+ iseq->compile_data->ensure_node_stack = prev_enlp;
+ ADD_SEQ(ret, ensure);
+}
+
+static VALUE
+setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, VALUE *flag)
+{
+ VALUE argc = INT2FIX(0);
+ int nsplat = 0;
+ DECL_ANCHOR(arg_block);
+ DECL_ANCHOR(args_splat);
+
+ INIT_ANCHOR(arg_block);
+ INIT_ANCHOR(args_splat);
+ if (argn && nd_type(argn) == NODE_BLOCK_PASS) {
+ COMPILE(arg_block, "block", argn->nd_body);
+ *flag |= VM_CALL_ARGS_BLOCKARG;
+ argn = argn->nd_head;
+ }
+
+ setup_argn:
+ if (argn) {
+ switch (nd_type(argn)) {
+ case NODE_SPLAT: {
+ COMPILE(args, "args (splat)", argn->nd_head);
+ argc = INT2FIX(1);
+ nsplat++;
+ *flag |= VM_CALL_ARGS_SPLAT;
+ break;
+ }
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH: {
+ int next_is_array = (nd_type(argn->nd_head) == NODE_ARRAY);
+ DECL_ANCHOR(tmp);
+
+ INIT_ANCHOR(tmp);
+ COMPILE(tmp, "args (cat: splat)", argn->nd_body);
+ if (next_is_array && nsplat == 0) {
+ /* none */
+ }
+ else {
+ if (nd_type(argn) == NODE_ARGSCAT) {
+ ADD_INSN1(tmp, nd_line(argn), splatarray, Qfalse);
+ }
+ else {
+ ADD_INSN1(tmp, nd_line(argn), newarray, INT2FIX(1));
+ }
+ }
+ INSERT_LIST(args_splat, tmp);
+ nsplat++;
+ *flag |= VM_CALL_ARGS_SPLAT;
+
+ if (next_is_array) {
+ argc = INT2FIX(compile_array(iseq, args, argn->nd_head, COMPILE_ARRAY_TYPE_ARGS) + 1);
+ }
+ else {
+ argn = argn->nd_head;
+ goto setup_argn;
+ }
+ break;
+ }
+ case NODE_ARRAY: {
+ argc = INT2FIX(compile_array(iseq, args, argn, COMPILE_ARRAY_TYPE_ARGS));
+ break;
+ }
+ default: {
+ rb_bug("setup_arg: unknown node: %s\n", ruby_node_name(nd_type(argn)));
+ }
+ }
+ }
+
+ if (nsplat > 1) {
+ int i;
+ for (i=1; i<nsplat; i++) {
+ ADD_INSN(args_splat, nd_line(args), concatarray);
+ }
+ }
+
+ if (!LIST_SIZE_ZERO(args_splat)) {
+ ADD_SEQ(args, args_splat);
+ }
+
+ if (*flag & VM_CALL_ARGS_BLOCKARG) {
+ ADD_SEQ(args, arg_block);
+ }
+ return argc;
+}
+
+static VALUE
+build_postexe_iseq(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *body)
+{
+ int line = nd_line(body);
+ VALUE argc = INT2FIX(0);
+ VALUE block = NEW_CHILD_ISEQVAL(body, make_name_for_block(iseq->parent_iseq), ISEQ_TYPE_BLOCK, line);
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_CALL_WITH_BLOCK(ret, line, ID2SYM(id_core_set_postexe), argc, block);
+ iseq_set_local_table(iseq, 0);
+ return Qnil;
+}
+
+/**
+ compile each node
+
+ self: InstructionSequence
+ node: Ruby compiled node
+ poped: This node will be poped
+ */
+static int
+iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
+{
+ enum node_type type;
+ LINK_ELEMENT *saved_last_element = 0;
+ int line;
+
+ if (node == 0) {
+ if (!poped) {
+ debugs("node: NODE_NIL(implicit)\n");
+ ADD_INSN(ret, iseq->compile_data->last_line, putnil);
+ }
+ return COMPILE_OK;
+ }
+
+ iseq->compile_data->last_line = line = (int)nd_line(node);
+ debug_node_start(node);
+
+ type = nd_type(node);
+
+ if (node->flags & NODE_FL_NEWLINE) {
+ ADD_TRACE(ret, line, RUBY_EVENT_LINE);
+ saved_last_element = ret->last;
+ }
+
+ switch (type) {
+ case NODE_BLOCK:{
+ while (node && nd_type(node) == NODE_BLOCK) {
+ COMPILE_(ret, "BLOCK body", node->nd_head,
+ (node->nd_next == 0 && poped == 0) ? 0 : 1);
+ node = node->nd_next;
+ }
+ if (node) {
+ COMPILE_(ret, "BLOCK next", node->nd_next, poped);
+ }
+ break;
+ }
+ case NODE_IF:{
+ DECL_ANCHOR(cond_seq);
+ DECL_ANCHOR(then_seq);
+ DECL_ANCHOR(else_seq);
+ LABEL *then_label, *else_label, *end_label;
+
+ INIT_ANCHOR(cond_seq);
+ INIT_ANCHOR(then_seq);
+ INIT_ANCHOR(else_seq);
+ then_label = NEW_LABEL(line);
+ else_label = NEW_LABEL(line);
+ end_label = NEW_LABEL(line);
+
+ compile_branch_condition(iseq, cond_seq, node->nd_cond,
+ then_label, else_label);
+ COMPILE_(then_seq, "then", node->nd_body, poped);
+ COMPILE_(else_seq, "else", node->nd_else, poped);
+
+ ADD_SEQ(ret, cond_seq);
+
+ ADD_LABEL(ret, then_label);
+ ADD_SEQ(ret, then_seq);
+ ADD_INSNL(ret, line, jump, end_label);
+
+ ADD_LABEL(ret, else_label);
+ ADD_SEQ(ret, else_seq);
+
+ ADD_LABEL(ret, end_label);
+
+ break;
+ }
+ case NODE_CASE:{
+ NODE *vals;
+ NODE *tempnode = node;
+ LABEL *endlabel, *elselabel;
+ DECL_ANCHOR(head);
+ DECL_ANCHOR(body_seq);
+ DECL_ANCHOR(cond_seq);
+ int only_special_literals = 1;
+ VALUE literals = rb_hash_new();
+
+ INIT_ANCHOR(head);
+ INIT_ANCHOR(body_seq);
+ INIT_ANCHOR(cond_seq);
+
+ rb_hash_tbl_raw(literals)->type = &cdhash_type;
+
+ if (node->nd_head == 0) {
+ COMPILE_(ret, "when", node->nd_body, poped);
+ break;
+ }
+ COMPILE(head, "case base", node->nd_head);
+
+ node = node->nd_body;
+ type = nd_type(node);
+ line = nd_line(node);
+
+ if (type != NODE_WHEN) {
+ COMPILE_ERROR((ERROR_ARGS "NODE_CASE: unexpected node. must be NODE_WHEN, but %s", ruby_node_name(type)));
+ }
+
+ endlabel = NEW_LABEL(line);
+ elselabel = NEW_LABEL(line);
+
+ ADD_SEQ(ret, head); /* case VAL */
+
+ while (type == NODE_WHEN) {
+ LABEL *l1;
+
+ l1 = NEW_LABEL(line);
+ ADD_LABEL(body_seq, l1);
+ ADD_INSN(body_seq, line, pop);
+ COMPILE_(body_seq, "when body", node->nd_body, poped);
+ ADD_INSNL(body_seq, line, jump, endlabel);
+
+ vals = node->nd_head;
+ if (vals) {
+ switch (nd_type(vals)) {
+ case NODE_ARRAY:
+ only_special_literals = when_vals(iseq, cond_seq, vals, l1, only_special_literals, literals);
+ break;
+ case NODE_SPLAT:
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH:
+ only_special_literals = 0;
+ ADD_INSN (cond_seq, nd_line(vals), dup);
+ COMPILE(cond_seq, "when/cond splat", vals);
+ ADD_INSN1(cond_seq, nd_line(vals), checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE | VM_CHECKMATCH_ARRAY));
+ ADD_INSNL(cond_seq, nd_line(vals), branchif, l1);
+ break;
+ default:
+ rb_bug("NODE_CASE: unknown node (%s)",
+ ruby_node_name(nd_type(vals)));
+ }
+ }
+ else {
+ rb_bug("NODE_CASE: must be NODE_ARRAY, but 0");
+ }
+
+ node = node->nd_next;
+ if (!node) {
+ break;
+ }
+ type = nd_type(node);
+ line = nd_line(node);
+ }
+ /* else */
+ if (node) {
+ ADD_LABEL(cond_seq, elselabel);
+ ADD_INSN(cond_seq, line, pop);
+ COMPILE_(cond_seq, "else", node, poped);
+ ADD_INSNL(cond_seq, line, jump, endlabel);
+ }
+ else {
+ debugs("== else (implicit)\n");
+ ADD_LABEL(cond_seq, elselabel);
+ ADD_INSN(cond_seq, nd_line(tempnode), pop);
+ if (!poped) {
+ ADD_INSN(cond_seq, nd_line(tempnode), putnil);
+ }
+ ADD_INSNL(cond_seq, nd_line(tempnode), jump, endlabel);
+ }
+
+ if (only_special_literals) {
+ iseq_add_mark_object(iseq, literals);
+
+ ADD_INSN(ret, nd_line(tempnode), dup);
+ ADD_INSN2(ret, nd_line(tempnode), opt_case_dispatch, literals, elselabel);
+ }
+
+ ADD_SEQ(ret, cond_seq);
+ ADD_SEQ(ret, body_seq);
+ ADD_LABEL(ret, endlabel);
+ break;
+ }
+ case NODE_WHEN:{
+ NODE *vals;
+ NODE *val;
+ NODE *orig_node = node;
+ LABEL *endlabel;
+ DECL_ANCHOR(body_seq);
+
+ INIT_ANCHOR(body_seq);
+ endlabel = NEW_LABEL(line);
+
+ while (node && nd_type(node) == NODE_WHEN) {
+ LABEL *l1 = NEW_LABEL(line = nd_line(node));
+ ADD_LABEL(body_seq, l1);
+ COMPILE_(body_seq, "when", node->nd_body, poped);
+ ADD_INSNL(body_seq, line, jump, endlabel);
+
+ vals = node->nd_head;
+ if (!vals) {
+ rb_bug("NODE_WHEN: must be NODE_ARRAY, but 0");
+ }
+ switch (nd_type(vals)) {
+ case NODE_ARRAY:
+ while (vals) {
+ val = vals->nd_head;
+ COMPILE(ret, "when2", val);
+ ADD_INSNL(ret, nd_line(val), branchif, l1);
+ vals = vals->nd_next;
+ }
+ break;
+ case NODE_SPLAT:
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH:
+ ADD_INSN(ret, nd_line(vals), putnil);
+ COMPILE(ret, "when2/cond splat", vals);
+ ADD_INSN1(ret, nd_line(vals), checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_WHEN | VM_CHECKMATCH_ARRAY));
+ ADD_INSNL(ret, nd_line(vals), branchif, l1);
+ break;
+ default:
+ rb_bug("NODE_WHEN: unknown node (%s)",
+ ruby_node_name(nd_type(vals)));
+ }
+ node = node->nd_next;
+ }
+ /* else */
+ COMPILE_(ret, "else", node, poped);
+ ADD_INSNL(ret, nd_line(orig_node), jump, endlabel);
+
+ ADD_SEQ(ret, body_seq);
+ ADD_LABEL(ret, endlabel);
+
+ break;
+ }
+ case NODE_OPT_N:
+ case NODE_WHILE:
+ case NODE_UNTIL:{
+ LABEL *prev_start_label = iseq->compile_data->start_label;
+ LABEL *prev_end_label = iseq->compile_data->end_label;
+ LABEL *prev_redo_label = iseq->compile_data->redo_label;
+ int prev_loopval_popped = iseq->compile_data->loopval_popped;
+
+ struct iseq_compile_data_ensure_node_stack enl;
+
+ LABEL *next_label = iseq->compile_data->start_label = NEW_LABEL(line); /* next */
+ LABEL *redo_label = iseq->compile_data->redo_label = NEW_LABEL(line); /* redo */
+ LABEL *break_label = iseq->compile_data->end_label = NEW_LABEL(line); /* break */
+ LABEL *end_label = NEW_LABEL(line);
+
+ LABEL *next_catch_label = NEW_LABEL(line);
+ LABEL *tmp_label = NULL;
+
+ iseq->compile_data->loopval_popped = 0;
+ push_ensure_entry(iseq, &enl, 0, 0);
+
+ if (type == NODE_OPT_N || node->nd_state == 1) {
+ ADD_INSNL(ret, line, jump, next_label);
+ }
+ else {
+ tmp_label = NEW_LABEL(line);
+ ADD_INSNL(ret, line, jump, tmp_label);
+ }
+ ADD_INSN(ret, line, putnil);
+ ADD_LABEL(ret, next_catch_label);
+ ADD_INSN(ret, line, pop);
+ ADD_INSNL(ret, line, jump, next_label);
+ if (tmp_label) ADD_LABEL(ret, tmp_label);
+
+ ADD_LABEL(ret, redo_label);
+ COMPILE_POPED(ret, "while body", node->nd_body);
+ ADD_LABEL(ret, next_label); /* next */
+
+ if (type == NODE_WHILE) {
+ compile_branch_condition(iseq, ret, node->nd_cond,
+ redo_label, end_label);
+ }
+ else if (type == NODE_UNTIL) {
+ /* until */
+ compile_branch_condition(iseq, ret, node->nd_cond,
+ end_label, redo_label);
+ }
+ else {
+ ADD_CALL_RECEIVER(ret, line);
+ ADD_CALL(ret, line, ID2SYM(idGets), INT2FIX(0));
+ ADD_INSNL(ret, line, branchif, redo_label);
+ /* opt_n */
+ }
+
+ ADD_LABEL(ret, end_label);
+
+ if (node->nd_state == Qundef) {
+ /* ADD_INSN(ret, line, putundef); */
+ rb_bug("unsupported: putundef");
+ }
+ else {
+ ADD_INSN(ret, line, putnil);
+ }
+
+ ADD_LABEL(ret, break_label); /* break */
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+
+ ADD_CATCH_ENTRY(CATCH_TYPE_BREAK, redo_label, break_label,
+ 0, break_label);
+ ADD_CATCH_ENTRY(CATCH_TYPE_NEXT, redo_label, break_label, 0,
+ next_catch_label);
+ ADD_CATCH_ENTRY(CATCH_TYPE_REDO, redo_label, break_label, 0,
+ iseq->compile_data->redo_label);
+
+ iseq->compile_data->start_label = prev_start_label;
+ iseq->compile_data->end_label = prev_end_label;
+ iseq->compile_data->redo_label = prev_redo_label;
+ iseq->compile_data->loopval_popped = prev_loopval_popped;
+ iseq->compile_data->ensure_node_stack = iseq->compile_data->ensure_node_stack->prev;
+ break;
+ }
+ case NODE_ITER:
+ case NODE_FOR:{
+ VALUE prevblock = iseq->compile_data->current_block;
+ LABEL *retry_label = NEW_LABEL(line);
+ LABEL *retry_end_l = NEW_LABEL(line);
+
+ ADD_LABEL(ret, retry_label);
+ if (nd_type(node) == NODE_FOR) {
+ COMPILE(ret, "iter caller (for)", node->nd_iter);
+
+ iseq->compile_data->current_block =
+ NEW_CHILD_ISEQVAL(node->nd_body, make_name_for_block(iseq),
+ ISEQ_TYPE_BLOCK, line);
+
+ ADD_SEND_R(ret, line, ID2SYM(idEach), INT2FIX(0),
+ iseq->compile_data->current_block, INT2FIX(0));
+ }
+ else {
+ iseq->compile_data->current_block =
+ NEW_CHILD_ISEQVAL(node->nd_body, make_name_for_block(iseq),
+ ISEQ_TYPE_BLOCK, line);
+ COMPILE(ret, "iter caller", node->nd_iter);
+ }
+ ADD_LABEL(ret, retry_end_l);
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+
+ iseq->compile_data->current_block = prevblock;
+
+ ADD_CATCH_ENTRY(CATCH_TYPE_BREAK, retry_label, retry_end_l, 0, retry_end_l);
+
+ break;
+ }
+ case NODE_BREAK:{
+ unsigned long level = 0;
+
+ if (iseq->compile_data->redo_label != 0) {
+ /* while/until */
+ LABEL *splabel = NEW_LABEL(0);
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line, iseq->compile_data->redo_label);
+ COMPILE_(ret, "break val (while/until)", node->nd_stts, iseq->compile_data->loopval_popped);
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_INSNL(ret, line, jump, iseq->compile_data->end_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!poped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else if (iseq->type == ISEQ_TYPE_BLOCK) {
+ break_by_insn:
+ /* escape from block */
+ COMPILE(ret, "break val (block)", node->nd_stts);
+ ADD_INSN1(ret, line, throw, INT2FIX(level | 0x02) /* TAG_BREAK */ );
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ }
+ else if (iseq->type == ISEQ_TYPE_EVAL) {
+ break_in_eval:
+ COMPILE_ERROR((ERROR_ARGS "Can't escape from eval with break"));
+ }
+ else {
+ rb_iseq_t *ip = iseq->parent_iseq;
+ while (ip) {
+ if (!ip->compile_data) {
+ ip = 0;
+ break;
+ }
+
+ level++;
+ if (ip->compile_data->redo_label != 0) {
+ level = 0x8000;
+ if (ip->compile_data->loopval_popped == 0) {
+ /* need value */
+ level |= 0x4000;
+ }
+ goto break_by_insn;
+ }
+ else if (ip->type == ISEQ_TYPE_BLOCK) {
+ level <<= 16;
+ goto break_by_insn;
+ }
+ else if (ip->type == ISEQ_TYPE_EVAL) {
+ goto break_in_eval;
+ }
+
+ ip = ip->parent_iseq;
+ }
+ COMPILE_ERROR((ERROR_ARGS "Invalid break"));
+ }
+ break;
+ }
+ case NODE_NEXT:{
+ unsigned long level = 0;
+
+ if (iseq->compile_data->redo_label != 0) {
+ LABEL *splabel = NEW_LABEL(0);
+ debugs("next in while loop\n");
+ ADD_LABEL(ret, splabel);
+ COMPILE(ret, "next val/valid syntax?", node->nd_stts);
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_ADJUST(ret, line, iseq->compile_data->redo_label);
+ ADD_INSNL(ret, line, jump, iseq->compile_data->start_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+ if (!poped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else if (iseq->compile_data->end_label) {
+ LABEL *splabel = NEW_LABEL(0);
+ debugs("next in block\n");
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line, iseq->compile_data->start_label);
+ COMPILE(ret, "next val", node->nd_stts);
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_INSNL(ret, line, jump, iseq->compile_data->end_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!poped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else if (iseq->type == ISEQ_TYPE_EVAL) {
+ next_in_eval:
+ COMPILE_ERROR((ERROR_ARGS "Can't escape from eval with next"));
+ }
+ else {
+ rb_iseq_t *ip;
+ ip = iseq;
+ while (ip) {
+ if (!ip->compile_data) {
+ ip = 0;
+ break;
+ }
+
+ level = 0x8000 | 0x4000;
+ if (ip->compile_data->redo_label != 0) {
+ /* while loop */
+ break;
+ }
+ else if (ip->type == ISEQ_TYPE_BLOCK) {
+ break;
+ }
+ else if (ip->type == ISEQ_TYPE_EVAL) {
+ goto next_in_eval;
+ }
+
+ ip = ip->parent_iseq;
+ }
+ if (ip != 0) {
+ COMPILE(ret, "next val", node->nd_stts);
+ ADD_INSN1(ret, line, throw, INT2FIX(level | 0x03) /* TAG_NEXT */ );
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ }
+ else {
+ COMPILE_ERROR((ERROR_ARGS "Invalid next"));
+ }
+ }
+ break;
+ }
+ case NODE_REDO:{
+ if (iseq->compile_data->redo_label) {
+ LABEL *splabel = NEW_LABEL(0);
+ debugs("redo in while");
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line, iseq->compile_data->redo_label);
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_INSNL(ret, line, jump, iseq->compile_data->redo_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+ if (!poped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else if (iseq->type == ISEQ_TYPE_EVAL) {
+ redo_in_eval:
+ COMPILE_ERROR((ERROR_ARGS "Can't escape from eval with redo"));
+ }
+ else if (iseq->compile_data->start_label) {
+ LABEL *splabel = NEW_LABEL(0);
+
+ debugs("redo in block");
+ ADD_LABEL(ret, splabel);
+ add_ensure_iseq(ret, iseq, 0);
+ ADD_ADJUST(ret, line, iseq->compile_data->start_label);
+ ADD_INSNL(ret, line, jump, iseq->compile_data->start_label);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!poped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else {
+ rb_iseq_t *ip;
+ unsigned long level;
+ level = 0x8000 | 0x4000;
+ ip = iseq;
+ while (ip) {
+ if (!ip->compile_data) {
+ ip = 0;
+ break;
+ }
+
+ if (ip->compile_data->redo_label != 0) {
+ break;
+ }
+ else if (ip->type == ISEQ_TYPE_BLOCK) {
+ break;
+ }
+ else if (ip->type == ISEQ_TYPE_EVAL) {
+ goto redo_in_eval;
+ }
+
+ ip = ip->parent_iseq;
+ }
+ if (ip != 0) {
+ ADD_INSN(ret, line, putnil);
+ ADD_INSN1(ret, line, throw, INT2FIX(level | 0x05) /* TAG_REDO */ );
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ }
+ else {
+ COMPILE_ERROR((ERROR_ARGS "Invalid redo"));
+ }
+ }
+ break;
+ }
+ case NODE_RETRY:{
+ if (iseq->type == ISEQ_TYPE_RESCUE) {
+ ADD_INSN(ret, line, putnil);
+ ADD_INSN1(ret, line, throw, INT2FIX(0x04) /* TAG_RETRY */ );
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ }
+ else {
+ COMPILE_ERROR((ERROR_ARGS "Invalid retry"));
+ }
+ break;
+ }
+ case NODE_BEGIN:{
+ COMPILE_(ret, "NODE_BEGIN", node->nd_body, poped);
+ break;
+ }
+ case NODE_RESCUE:{
+ LABEL *lstart = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(line);
+ LABEL *lcont = NEW_LABEL(line);
+ VALUE rescue = NEW_CHILD_ISEQVAL(
+ node->nd_resq,
+ rb_str_concat(rb_str_new2("rescue in "), iseq->location.label),
+ ISEQ_TYPE_RESCUE, line);
+
+ ADD_LABEL(ret, lstart);
+ COMPILE(ret, "rescue head", node->nd_head);
+ ADD_LABEL(ret, lend);
+ if (node->nd_else) {
+ ADD_INSN(ret, line, pop);
+ COMPILE(ret, "rescue else", node->nd_else);
+ }
+ ADD_INSN(ret, line, nop);
+ ADD_LABEL(ret, lcont);
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+
+ /* register catch entry */
+ ADD_CATCH_ENTRY(CATCH_TYPE_RESCUE, lstart, lend, rescue, lcont);
+ ADD_CATCH_ENTRY(CATCH_TYPE_RETRY, lend, lcont, 0, lstart);
+ break;
+ }
+ case NODE_RESBODY:{
+ NODE *resq = node;
+ NODE *narg;
+ LABEL *label_miss, *label_hit;
+
+ while (resq) {
+ label_miss = NEW_LABEL(line);
+ label_hit = NEW_LABEL(line);
+
+ narg = resq->nd_args;
+ if (narg) {
+ switch (nd_type(narg)) {
+ case NODE_ARRAY:
+ while (narg) {
+ ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));
+ COMPILE(ret, "rescue arg", narg->nd_head);
+ ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));
+ ADD_INSNL(ret, line, branchif, label_hit);
+ narg = narg->nd_next;
+ }
+ break;
+ case NODE_SPLAT:
+ case NODE_ARGSCAT:
+ case NODE_ARGSPUSH:
+ ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));
+ COMPILE(ret, "rescue/cond splat", narg);
+ ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE | VM_CHECKMATCH_ARRAY));
+ ADD_INSNL(ret, line, branchif, label_hit);
+ break;
+ default:
+ rb_bug("NODE_RESBODY: unknown node (%s)",
+ ruby_node_name(nd_type(narg)));
+ }
+ }
+ else {
+ ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));
+ ADD_INSN1(ret, line, putobject, rb_eStandardError);
+ ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));
+ ADD_INSNL(ret, line, branchif, label_hit);
+ }
+ ADD_INSNL(ret, line, jump, label_miss);
+ ADD_LABEL(ret, label_hit);
+ COMPILE(ret, "resbody body", resq->nd_body);
+ if (iseq->compile_data->option->tailcall_optimization) {
+ ADD_INSN(ret, line, nop);
+ }
+ ADD_INSN(ret, line, leave);
+ ADD_LABEL(ret, label_miss);
+ resq = resq->nd_head;
+ }
+ break;
+ }
+ case NODE_ENSURE:{
+ DECL_ANCHOR(ensr);
+ VALUE ensure = NEW_CHILD_ISEQVAL(node->nd_ensr,
+ rb_str_concat(rb_str_new2
+ ("ensure in "),
+ iseq->location.label),
+ ISEQ_TYPE_ENSURE, line);
+ LABEL *lstart = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(line);
+ LABEL *lcont = NEW_LABEL(line);
+ struct ensure_range er;
+ struct iseq_compile_data_ensure_node_stack enl;
+ struct ensure_range *erange;
+
+ INIT_ANCHOR(ensr);
+ COMPILE_POPED(ensr, "ensure ensr", node->nd_ensr);
+
+ er.begin = lstart;
+ er.end = lend;
+ er.next = 0;
+ push_ensure_entry(iseq, &enl, &er, node->nd_ensr);
+
+ ADD_LABEL(ret, lstart);
+ COMPILE_(ret, "ensure head", node->nd_head, poped);
+ ADD_LABEL(ret, lend);
+ if (ensr->anchor.next == 0) {
+ ADD_INSN(ret, line, nop);
+ }
+ else {
+ ADD_SEQ(ret, ensr);
+ }
+ ADD_LABEL(ret, lcont);
+
+ erange = iseq->compile_data->ensure_node_stack->erange;
+ while (erange) {
+ ADD_CATCH_ENTRY(CATCH_TYPE_ENSURE, erange->begin, erange->end,
+ ensure, lcont);
+ erange = erange->next;
+ }
+
+ iseq->compile_data->ensure_node_stack = enl.prev;
+ break;
+ }
+
+ case NODE_AND:
+ case NODE_OR:{
+ LABEL *end_label = NEW_LABEL(line);
+ COMPILE(ret, "nd_1st", node->nd_1st);
+ if (!poped) {
+ ADD_INSN(ret, line, dup);
+ }
+ if (type == NODE_AND) {
+ ADD_INSNL(ret, line, branchunless, end_label);
+ }
+ else {
+ ADD_INSNL(ret, line, branchif, end_label);
+ }
+ if (!poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ COMPILE_(ret, "nd_2nd", node->nd_2nd, poped);
+ ADD_LABEL(ret, end_label);
+ break;
+ }
+
+ case NODE_MASGN:{
+ compile_massign(iseq, ret, node, poped);
+ break;
+ }
+
+ case NODE_LASGN:{
+ ID id = node->nd_vid;
+ int idx = iseq->local_iseq->local_size - get_local_var_idx(iseq, id);
+
+ debugs("lvar: %s idx: %d\n", rb_id2name(id), idx);
+ COMPILE(ret, "rvalue", node->nd_value);
+
+ if (!poped) {
+ ADD_INSN(ret, line, dup);
+ }
+ ADD_INSN2(ret, line, setlocal, INT2FIX(idx), INT2FIX(get_lvar_level(iseq)));
+
+ break;
+ }
+ case NODE_DASGN:
+ case NODE_DASGN_CURR:{
+ int idx, lv, ls;
+ COMPILE(ret, "dvalue", node->nd_value);
+ debugp_param("dassn id", rb_str_new2(rb_id2name(node->nd_vid) ? rb_id2name(node->nd_vid) : "*"));
+
+ if (!poped) {
+ ADD_INSN(ret, line, dup);
+ }
+
+ idx = get_dyna_var_idx(iseq, node->nd_vid, &lv, &ls);
+
+ if (idx < 0) {
+ rb_bug("NODE_DASGN(_CURR): unknown id (%s)", rb_id2name(node->nd_vid));
+ }
+
+ ADD_INSN2(ret, line, setlocal, INT2FIX(ls - idx), INT2FIX(lv));
+ break;
+ }
+ case NODE_GASGN:{
+ COMPILE(ret, "lvalue", node->nd_value);
+
+ if (!poped) {
+ ADD_INSN(ret, line, dup);
+ }
+ ADD_INSN1(ret, line, setglobal,
+ ((VALUE)node->nd_entry | 1));
+ break;
+ }
+ case NODE_IASGN:
+ case NODE_IASGN2:{
+ COMPILE(ret, "lvalue", node->nd_value);
+ if (!poped) {
+ ADD_INSN(ret, line, dup);
+ }
+ ADD_INSN2(ret, line, setinstancevariable,
+ ID2SYM(node->nd_vid), INT2FIX(iseq->is_size++));
+ break;
+ }
+ case NODE_CDECL:{
+ COMPILE(ret, "lvalue", node->nd_value);
+
+ if (!poped) {
+ ADD_INSN(ret, line, dup);
+ }
+
+ if (node->nd_vid) {
+ ADD_INSN1(ret, line, putspecialobject,
+ INT2FIX(VM_SPECIAL_OBJECT_CONST_BASE));
+ ADD_INSN1(ret, line, setconstant, ID2SYM(node->nd_vid));
+ }
+ else {
+ compile_cpath(ret, iseq, node->nd_else);
+ ADD_INSN1(ret, line, setconstant, ID2SYM(node->nd_else->nd_mid));
+ }
+ break;
+ }
+ case NODE_CVASGN:{
+ COMPILE(ret, "cvasgn val", node->nd_value);
+ if (!poped) {
+ ADD_INSN(ret, line, dup);
+ }
+ ADD_INSN1(ret, line, setclassvariable,
+ ID2SYM(node->nd_vid));
+ break;
+ }
+ case NODE_OP_ASGN1: {
+ DECL_ANCHOR(args);
+ VALUE argc;
+ VALUE flag = 0;
+ ID id = node->nd_mid;
+ int boff = 0;
+
+ /*
+ * a[x] (op)= y
+ *
+ * nil # nil
+ * eval a # nil a
+ * eval x # nil a x
+ * dupn 2 # nil a x a x
+ * send :[] # nil a x a[x]
+ * eval y # nil a x a[x] y
+ * send op # nil a x ret
+ * setn 3 # ret a x ret
+ * send []= # ret ?
+ * pop # ret
+ */
+
+ /*
+ * nd_recv[nd_args->nd_body] (nd_mid)= nd_args->nd_head;
+ * NODE_OP_ASGN nd_recv
+ * nd_args->nd_head
+ * nd_args->nd_body
+ * nd_mid
+ */
+
+ if (!poped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ COMPILE(ret, "NODE_OP_ASGN1 recv", node->nd_recv);
+ switch (nd_type(node->nd_args->nd_head)) {
+ case NODE_ZARRAY:
+ argc = INT2FIX(0);
+ break;
+ case NODE_BLOCK_PASS:
+ boff = 1;
+ default:
+ INIT_ANCHOR(args);
+ argc = setup_args(iseq, args, node->nd_args->nd_head, &flag);
+ ADD_SEQ(ret, args);
+ }
+ ADD_INSN1(ret, line, dupn, FIXNUM_INC(argc, 1 + boff));
+ ADD_SEND_R(ret, line, ID2SYM(idAREF), argc, Qfalse, LONG2FIX(flag));
+
+ if (id == 0 || id == 1) {
+ /* 0: or, 1: and
+ a[x] ||= y
+
+ unless/if a[x]
+ a[x]= y
+ else
+ nil
+ end
+ */
+ LABEL *label = NEW_LABEL(line);
+ LABEL *lfin = NEW_LABEL(line);
+
+ ADD_INSN(ret, line, dup);
+ if (id == 0) {
+ /* or */
+ ADD_INSNL(ret, line, branchif, label);
+ }
+ else {
+ /* and */
+ ADD_INSNL(ret, line, branchunless, label);
+ }
+ ADD_INSN(ret, line, pop);
+
+ COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body);
+ if (!poped) {
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2+boff));
+ }
+ if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN1(ret, line, newarray, INT2FIX(1));
+ if (boff > 0) {
+ ADD_INSN1(ret, line, dupn, INT2FIX(3));
+ ADD_INSN(ret, line, swap);
+ ADD_INSN(ret, line, pop);
+ }
+ ADD_INSN(ret, line, concatarray);
+ if (boff > 0) {
+ ADD_INSN1(ret, line, setn, INT2FIX(3));
+ ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, line, pop);
+ }
+ ADD_SEND_R(ret, line, ID2SYM(idASET),
+ argc, Qfalse, LONG2FIX(flag));
+ }
+ else {
+ if (boff > 0)
+ ADD_INSN(ret, line, swap);
+ ADD_SEND_R(ret, line, ID2SYM(idASET),
+ FIXNUM_INC(argc, 1), Qfalse, LONG2FIX(flag));
+ }
+ ADD_INSN(ret, line, pop);
+ ADD_INSNL(ret, line, jump, lfin);
+ ADD_LABEL(ret, label);
+ if (!poped) {
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2+boff));
+ }
+ ADD_INSN1(ret, line, adjuststack, FIXNUM_INC(argc, 2+boff));
+ ADD_LABEL(ret, lfin);
+ }
+ else {
+ COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body);
+ ADD_SEND(ret, line, ID2SYM(id), INT2FIX(1));
+ if (!poped) {
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2+boff));
+ }
+ if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN1(ret, line, newarray, INT2FIX(1));
+ if (boff > 0) {
+ ADD_INSN1(ret, line, dupn, INT2FIX(3));
+ ADD_INSN(ret, line, swap);
+ ADD_INSN(ret, line, pop);
+ }
+ ADD_INSN(ret, line, concatarray);
+ if (boff > 0) {
+ ADD_INSN1(ret, line, setn, INT2FIX(3));
+ ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, line, pop);
+ }
+ ADD_SEND_R(ret, line, ID2SYM(idASET),
+ argc, Qfalse, LONG2FIX(flag));
+ }
+ else {
+ if (boff > 0)
+ ADD_INSN(ret, line, swap);
+ ADD_SEND_R(ret, line, ID2SYM(idASET),
+ FIXNUM_INC(argc, 1), Qfalse, LONG2FIX(flag));
+ }
+ ADD_INSN(ret, line, pop);
+ }
+
+ break;
+ }
+ case NODE_OP_ASGN2:{
+ ID atype = node->nd_next->nd_mid;
+ LABEL *lfin = NEW_LABEL(line);
+ LABEL *lcfin = NEW_LABEL(line);
+ /*
+ class C; attr_accessor :c; end
+ r = C.new
+ r.a &&= v # asgn2
+
+ eval r # r
+ dup # r r
+ eval r.a # r o
+
+ # or
+ dup # r o o
+ if lcfin # r o
+ pop # r
+ eval v # r v
+ swap # v r
+ topn 1 # v r v
+ send a= # v ?
+ jump lfin # v ?
+
+ lcfin: # r o
+ swap # o r
+
+ lfin: # o ?
+ pop # o
+
+ # and
+ dup # r o o
+ unless lcfin
+ pop # r
+ eval v # r v
+ swap # v r
+ topn 1 # v r v
+ send a= # v ?
+ jump lfin # v ?
+
+ # others
+ eval v # r o v
+ send ?? # r w
+ send a= # w
+
+ */
+
+ COMPILE(ret, "NODE_OP_ASGN2#recv", node->nd_recv);
+ ADD_INSN(ret, line, dup);
+ ADD_SEND(ret, line, ID2SYM(node->nd_next->nd_vid),
+ INT2FIX(0));
+
+ if (atype == 0 || atype == 1) { /* 0: OR or 1: AND */
+ ADD_INSN(ret, line, dup);
+ if (atype == 0) {
+ ADD_INSNL(ret, line, branchif, lcfin);
+ }
+ else {
+ ADD_INSNL(ret, line, branchunless, lcfin);
+ }
+ ADD_INSN(ret, line, pop);
+ COMPILE(ret, "NODE_OP_ASGN2 val", node->nd_value);
+ ADD_INSN(ret, line, swap);
+ ADD_INSN1(ret, line, topn, INT2FIX(1));
+ ADD_SEND(ret, line, ID2SYM(node->nd_next->nd_aid),
+ INT2FIX(1));
+ ADD_INSNL(ret, line, jump, lfin);
+
+ ADD_LABEL(ret, lcfin);
+ ADD_INSN(ret, line, swap);
+
+ ADD_LABEL(ret, lfin);
+ ADD_INSN(ret, line, pop);
+ if (poped) {
+ /* we can apply more optimize */
+ ADD_INSN(ret, line, pop);
+ }
+ }
+ else {
+ COMPILE(ret, "NODE_OP_ASGN2 val", node->nd_value);
+ ADD_SEND(ret, line, ID2SYM(node->nd_next->nd_mid),
+ INT2FIX(1));
+ if (!poped) {
+ ADD_INSN(ret, line, swap);
+ ADD_INSN1(ret, line, topn, INT2FIX(1));
+ }
+ ADD_SEND(ret, line, ID2SYM(node->nd_next->nd_aid),
+ INT2FIX(1));
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_OP_CDECL: {
+ LABEL *lfin = 0;
+ LABEL *lassign = 0;
+ ID mid;
+
+ switch (nd_type(node->nd_head)) {
+ case NODE_COLON3:
+ ADD_INSN1(ret, line, putobject, rb_cObject);
+ break;
+ case NODE_COLON2:
+ COMPILE(ret, "NODE_OP_CDECL/colon2#nd_head", node->nd_head->nd_head);
+ break;
+ default:
+ do {
+ COMPILE_ERROR((ERROR_ARGS "%s: invalid node in NODE_OP_CDECL",
+ ruby_node_name(nd_type(node->nd_head))));
+ } while (0);
+ return COMPILE_NG;
+ }
+ mid = node->nd_head->nd_mid;
+ /* cref */
+ if (node->nd_aid == 0) {
+ lassign = NEW_LABEL(line);
+ ADD_INSN(ret, line, dup); /* cref cref */
+ ADD_INSN3(ret, line, defined, INT2FIX(DEFINED_CONST),
+ ID2SYM(mid), Qfalse); /* cref bool */
+ ADD_INSNL(ret, line, branchunless, lassign); /* cref */
+ }
+ ADD_INSN(ret, line, dup); /* cref cref */
+ ADD_INSN1(ret, line, getconstant, ID2SYM(mid)); /* cref obj */
+
+ if (node->nd_aid == 0 || node->nd_aid == 1) {
+ lfin = NEW_LABEL(line);
+ if (!poped) ADD_INSN(ret, line, dup); /* cref [obj] obj */
+ if (node->nd_aid == 0)
+ ADD_INSNL(ret, line, branchif, lfin);
+ else
+ ADD_INSNL(ret, line, branchunless, lfin);
+ /* cref [obj] */
+ if (!poped) ADD_INSN(ret, line, pop); /* cref */
+ if (lassign) ADD_LABEL(ret, lassign);
+ COMPILE(ret, "NODE_OP_CDECL#nd_value", node->nd_value);
+ /* cref value */
+ if (poped)
+ ADD_INSN1(ret, line, topn, INT2FIX(1)); /* cref value cref */
+ else {
+ ADD_INSN1(ret, line, dupn, INT2FIX(2)); /* cref value cref value */
+ ADD_INSN(ret, line, swap); /* cref value value cref */
+ }
+ ADD_INSN1(ret, line, setconstant, ID2SYM(mid)); /* cref [value] */
+ ADD_LABEL(ret, lfin); /* cref [value] */
+ if (!poped) ADD_INSN(ret, line, swap); /* [value] cref */
+ ADD_INSN(ret, line, pop); /* [value] */
+ }
+ else {
+ COMPILE(ret, "NODE_OP_CDECL#nd_value", node->nd_value);
+ /* cref obj value */
+ ADD_CALL(ret, line, ID2SYM(node->nd_aid), INT2FIX(1));
+ /* cref value */
+ ADD_INSN(ret, line, swap); /* value cref */
+ if (!poped) {
+ ADD_INSN1(ret, line, topn, INT2FIX(1)); /* value cref value */
+ ADD_INSN(ret, line, swap); /* value value cref */
+ }
+ ADD_INSN1(ret, line, setconstant, ID2SYM(mid));
+ }
+ break;
+ }
+ case NODE_OP_ASGN_AND:
+ case NODE_OP_ASGN_OR:{
+ LABEL *lfin = NEW_LABEL(line);
+ LABEL *lassign;
+
+ if (nd_type(node) == NODE_OP_ASGN_OR) {
+ LABEL *lfinish[2];
+ lfinish[0] = lfin;
+ lfinish[1] = 0;
+ defined_expr(iseq, ret, node->nd_head, lfinish, Qfalse);
+ lassign = lfinish[1];
+ if (!lassign) {
+ lassign = NEW_LABEL(line);
+ }
+ ADD_INSNL(ret, line, branchunless, lassign);
+ }
+ else {
+ lassign = NEW_LABEL(line);
+ }
+
+ COMPILE(ret, "NODE_OP_ASGN_AND/OR#nd_head", node->nd_head);
+ ADD_INSN(ret, line, dup);
+
+ if (nd_type(node) == NODE_OP_ASGN_AND) {
+ ADD_INSNL(ret, line, branchunless, lfin);
+ }
+ else {
+ ADD_INSNL(ret, line, branchif, lfin);
+ }
+
+ ADD_INSN(ret, line, pop);
+ ADD_LABEL(ret, lassign);
+ COMPILE(ret, "NODE_OP_ASGN_AND/OR#nd_value", node->nd_value);
+ ADD_LABEL(ret, lfin);
+
+ if (poped) {
+ /* we can apply more optimize */
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_CALL:
+ if (node->nd_recv && nd_type(node->nd_recv) == NODE_STR &&
+ node->nd_mid == idFreeze && node->nd_args == NULL)
+ {
+ VALUE str = rb_fstring(node->nd_recv->nd_lit);
+ iseq_add_mark_object(iseq, str);
+ ADD_INSN1(ret, line, opt_str_freeze, str);
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_FCALL:
+ case NODE_VCALL:{ /* VCALL: variable or call */
+ /*
+ call: obj.method(...)
+ fcall: func(...)
+ vcall: func
+ */
+ DECL_ANCHOR(recv);
+ DECL_ANCHOR(args);
+ ID mid = node->nd_mid;
+ VALUE argc;
+ VALUE flag = 0;
+ VALUE parent_block = iseq->compile_data->current_block;
+ iseq->compile_data->current_block = Qfalse;
+
+ INIT_ANCHOR(recv);
+ INIT_ANCHOR(args);
+#if SUPPORT_JOKE
+ if (nd_type(node) == NODE_VCALL) {
+ ID id_bitblt;
+ ID id_answer;
+
+ CONST_ID(id_bitblt, "bitblt");
+ CONST_ID(id_answer, "the_answer_to_life_the_universe_and_everything");
+
+ if (mid == id_bitblt) {
+ ADD_INSN(ret, line, bitblt);
+ break;
+ }
+ else if (mid == id_answer) {
+ ADD_INSN(ret, line, answer);
+ break;
+ }
+ }
+ /* only joke */
+ {
+ ID goto_id;
+ ID label_id;
+
+ CONST_ID(goto_id, "__goto__");
+ CONST_ID(label_id, "__label__");
+
+ if (nd_type(node) == NODE_FCALL &&
+ (mid == goto_id || mid == label_id)) {
+ LABEL *label;
+ st_data_t data;
+ st_table *labels_table = iseq->compile_data->labels_table;
+ ID label_name;
+
+ if (!labels_table) {
+ labels_table = st_init_numtable();
+ iseq->compile_data->labels_table = labels_table;
+ }
+ if (nd_type(node->nd_args->nd_head) == NODE_LIT &&
+ SYMBOL_P(node->nd_args->nd_head->nd_lit)) {
+
+ label_name = SYM2ID(node->nd_args->nd_head->nd_lit);
+ if (!st_lookup(labels_table, (st_data_t)label_name, &data)) {
+ label = NEW_LABEL(line);
+ label->position = line;
+ st_insert(labels_table, (st_data_t)label_name, (st_data_t)label);
+ }
+ else {
+ label = (LABEL *)data;
+ }
+ }
+ else {
+ COMPILE_ERROR((ERROR_ARGS "invalid goto/label format"));
+ }
+
+
+ if (mid == goto_id) {
+ ADD_INSNL(ret, line, jump, label);
+ }
+ else {
+ ADD_LABEL(ret, label);
+ }
+ break;
+ }
+ }
+#endif
+ /* receiver */
+ if (type == NODE_CALL) {
+ COMPILE(recv, "recv", node->nd_recv);
+ }
+ else if (type == NODE_FCALL || type == NODE_VCALL) {
+ ADD_CALL_RECEIVER(recv, line);
+ }
+
+ /* args */
+ if (nd_type(node) != NODE_VCALL) {
+ argc = setup_args(iseq, args, node->nd_args, &flag);
+ }
+ else {
+ argc = INT2FIX(0);
+ }
+
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, args);
+
+ debugp_param("call args argc", argc);
+ debugp_param("call method", ID2SYM(mid));
+
+ switch (nd_type(node)) {
+ case NODE_VCALL:
+ flag |= VM_CALL_VCALL;
+ /* VCALL is funcall, so fall through */
+ case NODE_FCALL:
+ flag |= VM_CALL_FCALL;
+ }
+
+ ADD_SEND_R(ret, line, ID2SYM(mid),
+ argc, parent_block, LONG2FIX(flag));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_SUPER:
+ case NODE_ZSUPER:{
+ DECL_ANCHOR(args);
+ int argc;
+ VALUE flag = 0;
+ VALUE parent_block = iseq->compile_data->current_block;
+
+ INIT_ANCHOR(args);
+ iseq->compile_data->current_block = Qfalse;
+ if (nd_type(node) == NODE_SUPER) {
+ VALUE vargc = setup_args(iseq, args, node->nd_args, &flag);
+ argc = FIX2INT(vargc);
+ }
+ else {
+ /* NODE_ZSUPER */
+ int i;
+ rb_iseq_t *liseq = iseq->local_iseq;
+ int lvar_level = get_lvar_level(iseq);
+
+ argc = liseq->argc;
+
+ /* normal arguments */
+ for (i = 0; i < liseq->argc; i++) {
+ int idx = liseq->local_size - i;
+ ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ }
+
+ if (!liseq->arg_simple) {
+ if (liseq->arg_opts) {
+ /* optional arguments */
+ int j;
+ for (j = 0; j < liseq->arg_opts - 1; j++) {
+ int idx = liseq->local_size - (i + j);
+ ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ }
+ i += j;
+ argc = i;
+ }
+
+ if (liseq->arg_rest != -1) {
+ /* rest argument */
+ int idx = liseq->local_size - liseq->arg_rest;
+ ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ argc = liseq->arg_rest + 1;
+ flag |= VM_CALL_ARGS_SPLAT;
+ }
+
+ if (liseq->arg_post_len) {
+ /* post arguments */
+ int post_len = liseq->arg_post_len;
+ int post_start = liseq->arg_post_start;
+
+ if (liseq->arg_rest != -1) {
+ int j;
+ for (j=0; j<post_len; j++) {
+ int idx = liseq->local_size - (post_start + j);
+ ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ }
+ ADD_INSN1(args, line, newarray, INT2FIX(j));
+ ADD_INSN (args, line, concatarray);
+ /* argc is settled at above */
+ }
+ else {
+ int j;
+ for (j=0; j<post_len; j++) {
+ int idx = liseq->local_size - (post_start + j);
+ ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ }
+ argc = post_len + post_start;
+ }
+ }
+
+ if (liseq->arg_keyword >= 0) {
+ int local_size = liseq->local_size;
+ int idx = local_size - liseq->arg_keyword;
+ argc++;
+ ADD_INSN1(args, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ ADD_SEND (args, line, ID2SYM(rb_intern("dup")), INT2FIX(0));
+ for (i = 0; i < liseq->arg_keywords; ++i) {
+ ID id = liseq->arg_keyword_table[i];
+ idx = local_size - get_local_var_idx(liseq, id);
+ ADD_INSN1(args, line, putobject, ID2SYM(id));
+ ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ }
+ ADD_SEND(args, line, ID2SYM(id_core_hash_merge_ptr), INT2FIX(i * 2 + 1));
+ if (liseq->arg_rest != -1) {
+ ADD_INSN1(args, line, newarray, INT2FIX(1));
+ ADD_INSN (args, line, concatarray);
+ --argc;
+ }
+ }
+ }
+ }
+
+ /* dummy receiver */
+ ADD_INSN1(ret, line, putobject, nd_type(node) == NODE_ZSUPER ? Qfalse : Qtrue);
+ ADD_SEQ(ret, args);
+ ADD_INSN1(ret, line, invokesuper, new_callinfo(iseq, 0, argc, parent_block,
+ flag | VM_CALL_SUPER | VM_CALL_FCALL));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_ARRAY:{
+ compile_array_(iseq, ret, node, COMPILE_ARRAY_TYPE_ARRAY, poped);
+ break;
+ }
+ case NODE_ZARRAY:{
+ if (!poped) {
+ ADD_INSN1(ret, line, newarray, INT2FIX(0));
+ }
+ break;
+ }
+ case NODE_VALUES:{
+ NODE *n = node;
+ while (n) {
+ COMPILE(ret, "values item", n->nd_head);
+ n = n->nd_next;
+ }
+ ADD_INSN1(ret, line, newarray, INT2FIX(node->nd_alen));
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_HASH:{
+ DECL_ANCHOR(list);
+ int type = node->nd_head ? nd_type(node->nd_head) : NODE_ZARRAY;
+
+ INIT_ANCHOR(list);
+ switch (type) {
+ case NODE_ARRAY:
+ compile_array(iseq, list, node->nd_head, COMPILE_ARRAY_TYPE_HASH);
+ ADD_SEQ(ret, list);
+ break;
+
+ case NODE_ZARRAY:
+ ADD_INSN1(ret, line, newhash, INT2FIX(0));
+ break;
+
+ default:
+ rb_bug("can't make hash with this node: %s", ruby_node_name(type));
+ }
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_RETURN:{
+ rb_iseq_t *is = iseq;
+
+ if (is) {
+ if (is->type == ISEQ_TYPE_TOP) {
+ COMPILE_ERROR((ERROR_ARGS "Invalid return"));
+ }
+ else {
+ LABEL *splabel = 0;
+
+ if (is->type == ISEQ_TYPE_METHOD) {
+ splabel = NEW_LABEL(0);
+ ADD_LABEL(ret, splabel);
+ ADD_ADJUST(ret, line, 0);
+ }
+
+ COMPILE(ret, "return nd_stts (return val)", node->nd_stts);
+
+ if (is->type == ISEQ_TYPE_METHOD) {
+ add_ensure_iseq(ret, iseq, 1);
+ ADD_TRACE(ret, line, RUBY_EVENT_RETURN);
+ ADD_INSN(ret, line, leave);
+ ADD_ADJUST_RESTORE(ret, splabel);
+
+ if (!poped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ else {
+ ADD_INSN1(ret, line, throw, INT2FIX(0x01) /* TAG_RETURN */ );
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ }
+ }
+ }
+ break;
+ }
+ case NODE_YIELD:{
+ DECL_ANCHOR(args);
+ VALUE argc;
+ VALUE flag = 0;
+
+ INIT_ANCHOR(args);
+ if (iseq->type == ISEQ_TYPE_TOP) {
+ COMPILE_ERROR((ERROR_ARGS "Invalid yield"));
+ }
+
+ if (node->nd_head) {
+ argc = setup_args(iseq, args, node->nd_head, &flag);
+ }
+ else {
+ argc = INT2FIX(0);
+ }
+
+ ADD_SEQ(ret, args);
+ ADD_INSN1(ret, line, invokeblock, new_callinfo(iseq, 0, FIX2INT(argc), 0, flag));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_LVAR:{
+ if (!poped) {
+ ID id = node->nd_vid;
+ int idx = iseq->local_iseq->local_size - get_local_var_idx(iseq, id);
+
+ debugs("id: %s idx: %d\n", rb_id2name(id), idx);
+ ADD_INSN2(ret, line, getlocal, INT2FIX(idx), INT2FIX(get_lvar_level(iseq)));
+ }
+ break;
+ }
+ case NODE_DVAR:{
+ int lv, idx, ls;
+ debugi("nd_vid", node->nd_vid);
+ if (!poped) {
+ idx = get_dyna_var_idx(iseq, node->nd_vid, &lv, &ls);
+ if (idx < 0) {
+ rb_bug("unknown dvar (%s)", rb_id2name(node->nd_vid));
+ }
+ ADD_INSN2(ret, line, getlocal, INT2FIX(ls - idx), INT2FIX(lv));
+ }
+ break;
+ }
+ case NODE_GVAR:{
+ ADD_INSN1(ret, line, getglobal,
+ ((VALUE)node->nd_entry | 1));
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_IVAR:{
+ debugi("nd_vid", node->nd_vid);
+ if (!poped) {
+ ADD_INSN2(ret, line, getinstancevariable,
+ ID2SYM(node->nd_vid), INT2FIX(iseq->is_size++));
+ }
+ break;
+ }
+ case NODE_CONST:{
+ debugi("nd_vid", node->nd_vid);
+
+ if (iseq->compile_data->option->inline_const_cache) {
+ LABEL *lend = NEW_LABEL(line);
+ int ic_index = iseq->is_size++;
+
+ ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));
+ ADD_INSN1(ret, line, getconstant, ID2SYM(node->nd_vid));
+ ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_LABEL(ret, lend);
+ }
+ else {
+ ADD_INSN(ret, line, putnil);
+ ADD_INSN1(ret, line, getconstant, ID2SYM(node->nd_vid));
+ }
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_CVAR:{
+ if (!poped) {
+ ADD_INSN1(ret, line, getclassvariable,
+ ID2SYM(node->nd_vid));
+ }
+ break;
+ }
+ case NODE_NTH_REF:{
+ if (!poped) {
+ ADD_INSN2(ret, line, getspecial, INT2FIX(1) /* '~' */,
+ INT2FIX(node->nd_nth << 1));
+ }
+ break;
+ }
+ case NODE_BACK_REF:{
+ if (!poped) {
+ ADD_INSN2(ret, line, getspecial, INT2FIX(1) /* '~' */,
+ INT2FIX(0x01 | (node->nd_nth << 1)));
+ }
+ break;
+ }
+ case NODE_MATCH:
+ case NODE_MATCH2:
+ case NODE_MATCH3:{
+ DECL_ANCHOR(recv);
+ DECL_ANCHOR(val);
+
+ INIT_ANCHOR(recv);
+ INIT_ANCHOR(val);
+ switch (nd_type(node)) {
+ case NODE_MATCH:
+ ADD_INSN1(recv, line, putobject, node->nd_lit);
+ ADD_INSN2(val, line, getspecial, INT2FIX(0),
+ INT2FIX(0));
+ break;
+ case NODE_MATCH2:
+ COMPILE(recv, "receiver", node->nd_recv);
+ COMPILE(val, "value", node->nd_value);
+ break;
+ case NODE_MATCH3:
+ COMPILE(recv, "receiver", node->nd_value);
+ COMPILE(val, "value", node->nd_recv);
+ break;
+ }
+
+ if (iseq->compile_data->option->specialized_instruction) {
+ /* TODO: detect by node */
+ if (recv->last == recv->anchor.next &&
+ INSN_OF(recv->last) == BIN(putobject) &&
+ nd_type(node) == NODE_MATCH2) {
+ ADD_SEQ(ret, val);
+ ADD_INSN1(ret, line, opt_regexpmatch1,
+ OPERAND_AT(recv->last, 0));
+ }
+ else {
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, val);
+ ADD_INSN1(ret, line, opt_regexpmatch2, new_callinfo(iseq, idEqTilde, 1, 0, 0));
+ }
+ }
+ else {
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, val);
+ ADD_SEND(ret, line, ID2SYM(idEqTilde), INT2FIX(1));
+ }
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_LIT:{
+ debugp_param("lit", node->nd_lit);
+ if (!poped) {
+ ADD_INSN1(ret, line, putobject, node->nd_lit);
+ }
+ break;
+ }
+ case NODE_STR:{
+ debugp_param("nd_lit", node->nd_lit);
+ if (!poped) {
+ OBJ_FREEZE(node->nd_lit);
+ ADD_INSN1(ret, line, putstring, node->nd_lit);
+ }
+ break;
+ }
+ case NODE_DSTR:{
+ compile_dstr(iseq, ret, node);
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_XSTR:{
+ OBJ_FREEZE(node->nd_lit);
+ ADD_CALL_RECEIVER(ret, line);
+ ADD_INSN1(ret, line, putobject, node->nd_lit);
+ ADD_CALL(ret, line, ID2SYM(idBackquote), INT2FIX(1));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_DXSTR:{
+ ADD_CALL_RECEIVER(ret, line);
+ compile_dstr(iseq, ret, node);
+ ADD_CALL(ret, line, ID2SYM(idBackquote), INT2FIX(1));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_EVSTR:{
+ COMPILE(ret, "nd_body", node->nd_body);
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ else {
+ ADD_INSN(ret, line, tostring);
+ }
+ break;
+ }
+ case NODE_DREGX:{
+ compile_dregx(iseq, ret, node);
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_DREGX_ONCE:{
+ int ic_index = iseq->is_size++;
+ NODE *dregx_node = NEW_NODE(NODE_DREGX, node->u1.value, node->u2.value, node->u3.value);
+ NODE *block_node = NEW_NODE(NODE_SCOPE, 0, dregx_node, 0);
+ VALUE block_iseq = NEW_CHILD_ISEQVAL(block_node, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);
+
+ ADD_INSN2(ret, line, once, block_iseq, INT2FIX(ic_index));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_ARGSCAT:{
+ if (poped) {
+ COMPILE(ret, "argscat head", node->nd_head);
+ ADD_INSN1(ret, line, splatarray, Qfalse);
+ ADD_INSN(ret, line, pop);
+ COMPILE(ret, "argscat body", node->nd_body);
+ ADD_INSN1(ret, line, splatarray, Qfalse);
+ ADD_INSN(ret, line, pop);
+ }
+ else {
+ COMPILE(ret, "argscat head", node->nd_head);
+ COMPILE(ret, "argscat body", node->nd_body);
+ ADD_INSN(ret, line, concatarray);
+ }
+ break;
+ }
+ case NODE_ARGSPUSH:{
+ if (poped) {
+ COMPILE(ret, "arsgpush head", node->nd_head);
+ ADD_INSN1(ret, line, splatarray, Qfalse);
+ ADD_INSN(ret, line, pop);
+ COMPILE_(ret, "argspush body", node->nd_body, poped);
+ }
+ else {
+ COMPILE(ret, "arsgpush head", node->nd_head);
+ COMPILE_(ret, "argspush body", node->nd_body, poped);
+ ADD_INSN1(ret, line, newarray, INT2FIX(1));
+ ADD_INSN(ret, line, concatarray);
+ }
+ break;
+ }
+ case NODE_SPLAT:{
+ COMPILE(ret, "splat", node->nd_head);
+ ADD_INSN1(ret, line, splatarray, Qtrue);
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_DEFN:{
+ VALUE iseqval = NEW_ISEQVAL(node->nd_defn,
+ rb_str_dup(rb_id2str(node->nd_mid)),
+ ISEQ_TYPE_METHOD, line);
+
+ debugp_param("defn/iseq", iseqval);
+
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
+ ADD_INSN1(ret, line, putobject, ID2SYM(node->nd_mid));
+ ADD_INSN1(ret, line, putiseq, iseqval);
+ ADD_SEND (ret, line, ID2SYM(id_core_define_method), INT2FIX(3));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+
+ debugp_param("defn", iseqval);
+ break;
+ }
+ case NODE_DEFS:{
+ VALUE iseqval = NEW_ISEQVAL(node->nd_defn,
+ rb_str_dup(rb_id2str(node->nd_mid)),
+ ISEQ_TYPE_METHOD, line);
+
+ debugp_param("defs/iseq", iseqval);
+
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ COMPILE(ret, "defs: recv", node->nd_recv);
+ ADD_INSN1(ret, line, putobject, ID2SYM(node->nd_mid));
+ ADD_INSN1(ret, line, putiseq, iseqval);
+ ADD_SEND (ret, line, ID2SYM(id_core_define_singleton_method), INT2FIX(3));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_ALIAS:{
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
+ COMPILE(ret, "alias arg1", node->u1.node);
+ COMPILE(ret, "alias arg2", node->u2.node);
+ ADD_SEND(ret, line, ID2SYM(id_core_set_method_alias), INT2FIX(3));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_VALIAS:{
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putobject, ID2SYM(node->u1.id));
+ ADD_INSN1(ret, line, putobject, ID2SYM(node->u2.id));
+ ADD_SEND(ret, line, ID2SYM(id_core_set_variable_alias), INT2FIX(2));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_UNDEF:{
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
+ COMPILE(ret, "undef arg", node->u2.node);
+ ADD_SEND(ret, line, ID2SYM(id_core_undef_method), INT2FIX(2));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_CLASS:{
+ VALUE iseqval =
+ NEW_CHILD_ISEQVAL(
+ node->nd_body,
+ rb_sprintf("<class:%s>", rb_id2name(node->nd_cpath->nd_mid)),
+ ISEQ_TYPE_CLASS, line);
+ VALUE noscope = compile_cpath(ret, iseq, node->nd_cpath);
+ int flags = VM_DEFINECLASS_TYPE_CLASS;
+ if (!noscope) flags |= VM_DEFINECLASS_FLAG_SCOPED;
+ if (node->nd_super) flags |= VM_DEFINECLASS_FLAG_HAS_SUPERCLASS;
+ COMPILE(ret, "super", node->nd_super);
+ ADD_INSN3(ret, line, defineclass,
+ ID2SYM(node->nd_cpath->nd_mid), iseqval, INT2FIX(flags));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_MODULE:{
+ VALUE iseqval = NEW_CHILD_ISEQVAL(
+ node->nd_body,
+ rb_sprintf("<module:%s>", rb_id2name(node->nd_cpath->nd_mid)),
+ ISEQ_TYPE_CLASS, line);
+
+ VALUE noscope = compile_cpath(ret, iseq, node->nd_cpath);
+ int flags = VM_DEFINECLASS_TYPE_MODULE;
+ if (!noscope) flags |= VM_DEFINECLASS_FLAG_SCOPED;
+ ADD_INSN (ret, line, putnil); /* dummy */
+ ADD_INSN3(ret, line, defineclass,
+ ID2SYM(node->nd_cpath->nd_mid), iseqval, INT2FIX(flags));
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_SCLASS:{
+ ID singletonclass;
+ VALUE iseqval =
+ NEW_ISEQVAL(node->nd_body, rb_str_new2("singleton class"),
+ ISEQ_TYPE_CLASS, line);
+
+ COMPILE(ret, "sclass#recv", node->nd_recv);
+ ADD_INSN (ret, line, putnil);
+ CONST_ID(singletonclass, "singletonclass");
+ ADD_INSN3(ret, line, defineclass,
+ ID2SYM(singletonclass), iseqval,
+ INT2FIX(VM_DEFINECLASS_TYPE_SINGLETON_CLASS));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_COLON2:{
+ if (rb_is_const_id(node->nd_mid)) {
+ /* constant */
+ LABEL *lend = NEW_LABEL(line);
+ int ic_index = iseq->is_size++;
+
+ DECL_ANCHOR(pref);
+ DECL_ANCHOR(body);
+
+ INIT_ANCHOR(pref);
+ INIT_ANCHOR(body);
+ compile_colon2(iseq, node, pref, body);
+ if (LIST_SIZE_ZERO(pref)) {
+ if (iseq->compile_data->option->inline_const_cache) {
+ ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));
+ }
+ else {
+ ADD_INSN(ret, line, putnil);
+ }
+
+ ADD_SEQ(ret, body);
+
+ if (iseq->compile_data->option->inline_const_cache) {
+ ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_LABEL(ret, lend);
+ }
+ }
+ else {
+ ADD_SEQ(ret, pref);
+ ADD_SEQ(ret, body);
+ }
+ }
+ else {
+ /* function call */
+ ADD_CALL_RECEIVER(ret, line);
+ COMPILE(ret, "colon2#nd_head", node->nd_head);
+ ADD_CALL(ret, line, ID2SYM(node->nd_mid),
+ INT2FIX(1));
+ }
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_COLON3:{
+ LABEL *lend = NEW_LABEL(line);
+ int ic_index = iseq->is_size++;
+
+ debugi("colon3#nd_mid", node->nd_mid);
+
+ /* add cache insn */
+ if (iseq->compile_data->option->inline_const_cache) {
+ ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));
+ ADD_INSN(ret, line, pop);
+ }
+
+ ADD_INSN1(ret, line, putobject, rb_cObject);
+ ADD_INSN1(ret, line, getconstant, ID2SYM(node->nd_mid));
+
+ if (iseq->compile_data->option->inline_const_cache) {
+ ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_LABEL(ret, lend);
+ }
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_DOT2:
+ case NODE_DOT3:{
+ VALUE flag = type == NODE_DOT2 ? INT2FIX(0) : INT2FIX(1);
+ COMPILE(ret, "min", (NODE *) node->nd_beg);
+ COMPILE(ret, "max", (NODE *) node->nd_end);
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, line, pop);
+ }
+ else {
+ ADD_INSN1(ret, line, newrange, flag);
+ }
+ break;
+ }
+ case NODE_FLIP2:
+ case NODE_FLIP3:{
+ LABEL *lend = NEW_LABEL(line);
+ LABEL *lfin = NEW_LABEL(line);
+ LABEL *ltrue = NEW_LABEL(line);
+ rb_iseq_t *local_iseq = iseq->local_iseq;
+ rb_num_t cnt;
+ VALUE key;
+
+ cnt = local_iseq->flip_cnt++ + DEFAULT_SPECIAL_VAR_COUNT;
+ key = INT2FIX(cnt);
+
+ ADD_INSN2(ret, line, getspecial, key, INT2FIX(0));
+ ADD_INSNL(ret, line, branchif, lend);
+
+ /* *flip == 0 */
+ COMPILE(ret, "flip2 beg", node->nd_beg);
+ ADD_INSN(ret, line, dup);
+ ADD_INSNL(ret, line, branchunless, lfin);
+ if (nd_type(node) == NODE_FLIP3) {
+ ADD_INSN(ret, line, dup);
+ ADD_INSN1(ret, line, setspecial, key);
+ ADD_INSNL(ret, line, jump, lfin);
+ }
+ else {
+ ADD_INSN1(ret, line, setspecial, key);
+ }
+
+ /* *flip == 1 */
+ ADD_LABEL(ret, lend);
+ COMPILE(ret, "flip2 end", node->nd_end);
+ ADD_INSNL(ret, line, branchunless, ltrue);
+ ADD_INSN1(ret, line, putobject, Qfalse);
+ ADD_INSN1(ret, line, setspecial, key);
+
+ ADD_LABEL(ret, ltrue);
+ ADD_INSN1(ret, line, putobject, Qtrue);
+
+ ADD_LABEL(ret, lfin);
+ break;
+ }
+ case NODE_SELF:{
+ if (!poped) {
+ ADD_INSN(ret, line, putself);
+ }
+ break;
+ }
+ case NODE_NIL:{
+ if (!poped) {
+ ADD_INSN(ret, line, putnil);
+ }
+ break;
+ }
+ case NODE_TRUE:{
+ if (!poped) {
+ ADD_INSN1(ret, line, putobject, Qtrue);
+ }
+ break;
+ }
+ case NODE_FALSE:{
+ if (!poped) {
+ ADD_INSN1(ret, line, putobject, Qfalse);
+ }
+ break;
+ }
+ case NODE_ERRINFO:{
+ if (!poped) {
+ if (iseq->type == ISEQ_TYPE_RESCUE) {
+ ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));
+ }
+ else {
+ rb_iseq_t *ip = iseq;
+ int level = 0;
+ while (ip) {
+ if (ip->type == ISEQ_TYPE_RESCUE) {
+ break;
+ }
+ ip = ip->parent_iseq;
+ level++;
+ }
+ if (ip) {
+ ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(level));
+ }
+ else {
+ ADD_INSN(ret, line, putnil);
+ }
+ }
+ }
+ break;
+ }
+ case NODE_DEFINED:{
+ if (poped) break;
+ if (!node->nd_head) {
+ VALUE str = rb_iseq_defined_string(DEFINED_NIL);
+ ADD_INSN1(ret, nd_line(node), putobject, str);
+ }
+ else {
+ LABEL *lfinish[2];
+ lfinish[0] = NEW_LABEL(line);
+ lfinish[1] = 0;
+ ADD_INSN(ret, line, putnil);
+ defined_expr(iseq, ret, node->nd_head, lfinish, Qtrue);
+ ADD_INSN(ret, line, swap);
+ ADD_INSN(ret, line, pop);
+ if (lfinish[1]) {
+ ADD_LABEL(ret, lfinish[1]);
+ }
+ ADD_LABEL(ret, lfinish[0]);
+ }
+ break;
+ }
+ case NODE_POSTEXE:{
+ /* compiled to:
+ * ONCE{ rb_mRubyVMFrozenCore::core#set_postexe{ ... } }
+ */
+ int is_index = iseq->is_size++;
+ VALUE once_iseq = NEW_CHILD_ISEQVAL(
+ NEW_IFUNC(build_postexe_iseq, node->nd_body),
+ make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);
+
+ ADD_INSN2(ret, line, once, once_iseq, INT2FIX(is_index));
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_KW_ARG:{
+ LABEL *default_label = NEW_LABEL(line);
+ LABEL *end_label = 0;
+ int idx, lv, ls;
+ ID id = node->nd_body->nd_vid;
+
+ ADD_INSN(ret, line, dup);
+ ADD_INSN1(ret, line, putobject, ID2SYM(id));
+ ADD_SEND(ret, line, ID2SYM(rb_intern("key?")), INT2FIX(1));
+ ADD_INSNL(ret, line, branchunless, default_label);
+ ADD_INSN(ret, line, dup);
+ ADD_INSN1(ret, line, putobject, ID2SYM(id));
+ ADD_SEND(ret, line, ID2SYM(rb_intern("delete")), INT2FIX(1));
+ switch (nd_type(node->nd_body)) {
+ case NODE_LASGN:
+ idx = iseq->local_iseq->local_size - get_local_var_idx(iseq, id);
+ ADD_INSN2(ret, line, setlocal, INT2FIX(idx), INT2FIX(get_lvar_level(iseq)));
+ break;
+ case NODE_DASGN:
+ case NODE_DASGN_CURR:
+ idx = get_dyna_var_idx(iseq, id, &lv, &ls);
+ ADD_INSN2(ret, line, setlocal, INT2FIX(ls - idx), INT2FIX(lv));
+ break;
+ default:
+ rb_bug("iseq_compile_each (NODE_KW_ARG): unknown node: %s", ruby_node_name(nd_type(node->nd_body)));
+ }
+ if (node->nd_body->nd_value != (NODE *)-1) {
+ end_label = NEW_LABEL(nd_line(node));
+ ADD_INSNL(ret, nd_line(node), jump, end_label);
+ }
+ ADD_LABEL(ret, default_label);
+ if (node->nd_body->nd_value != (NODE *)-1) {
+ COMPILE_POPED(ret, "keyword default argument", node->nd_body);
+ ADD_LABEL(ret, end_label);
+ }
+ break;
+ }
+ case NODE_DSYM:{
+ compile_dstr(iseq, ret, node);
+ if (!poped) {
+ ADD_SEND(ret, line, ID2SYM(idIntern), INT2FIX(0));
+ }
+ else {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ case NODE_ATTRASGN:{
+ DECL_ANCHOR(recv);
+ DECL_ANCHOR(args);
+ VALUE flag = 0;
+ VALUE argc;
+
+ INIT_ANCHOR(recv);
+ INIT_ANCHOR(args);
+ argc = setup_args(iseq, args, node->nd_args, &flag);
+
+ if (node->nd_recv == (NODE *) 1) {
+ flag |= VM_CALL_FCALL;
+ ADD_INSN(recv, line, putself);
+ }
+ else {
+ COMPILE(recv, "recv", node->nd_recv);
+ }
+
+ debugp_param("argc", argc);
+ debugp_param("nd_mid", ID2SYM(node->nd_mid));
+
+ if (!poped) {
+ ADD_INSN(ret, line, putnil);
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, args);
+
+ if (flag & VM_CALL_ARGS_BLOCKARG) {
+ ADD_INSN1(ret, line, topn, INT2FIX(1));
+ if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN1(ret, line, putobject, INT2FIX(-1));
+ ADD_SEND(ret, line, ID2SYM(idAREF), INT2FIX(1));
+ }
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 3));
+ ADD_INSN (ret, line, pop);
+ }
+ else if (flag & VM_CALL_ARGS_SPLAT) {
+ ADD_INSN(ret, line, dup);
+ ADD_INSN1(ret, line, putobject, INT2FIX(-1));
+ ADD_SEND(ret, line, ID2SYM(idAREF), INT2FIX(1));
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2));
+ ADD_INSN (ret, line, pop);
+ }
+ else {
+ ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 1));
+ }
+ }
+ else {
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, args);
+ }
+ ADD_SEND_R(ret, line, ID2SYM(node->nd_mid), argc, 0, LONG2FIX(flag));
+ ADD_INSN(ret, line, pop);
+
+ break;
+ }
+ case NODE_PRELUDE:{
+ COMPILE_POPED(ret, "prelude", node->nd_head);
+ COMPILE_(ret, "body", node->nd_body, poped);
+ break;
+ }
+ case NODE_LAMBDA:{
+ /* compile same as lambda{...} */
+ VALUE block = NEW_CHILD_ISEQVAL(node->nd_body, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);
+ VALUE argc = INT2FIX(0);
+ ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_CALL_WITH_BLOCK(ret, line, ID2SYM(idLambda), argc, block);
+
+ if (poped) {
+ ADD_INSN(ret, line, pop);
+ }
+ break;
+ }
+ default:
+ rb_bug("iseq_compile_each: unknown node: %s", ruby_node_name(type));
+ return COMPILE_NG;
+ }
+
+ /* check & remove redundant trace(line) */
+ if (saved_last_element && ret /* ret can be 0 when error */ &&
+ ret->last == saved_last_element &&
+ ((INSN *)saved_last_element)->insn_id == BIN(trace)) {
+ POP_ELEMENT(ret);
+ }
+
+ debug_node_end();
+ return COMPILE_OK;
+}
+
+/***************************/
+/* instruction information */
+/***************************/
+
+static int
+insn_data_length(INSN *iobj)
+{
+ return insn_len(iobj->insn_id);
+}
+
+static int
+calc_sp_depth(int depth, INSN *insn)
+{
+ return insn_stack_increase(depth, insn->insn_id, insn->operands);
+}
+
+static int
+insn_data_line_no(INSN *iobj)
+{
+ return insn_len(iobj->line_no);
+}
+
+static VALUE
+insn_data_to_s_detail(INSN *iobj)
+{
+ VALUE str = rb_sprintf("%-16s", insn_name(iobj->insn_id));
+
+ if (iobj->operands) {
+ const char *types = insn_op_types(iobj->insn_id);
+ int j;
+
+ for (j = 0; types[j]; j++) {
+ char type = types[j];
+ printf("str: %"PRIxVALUE", type: %c\n", str, type);
+
+ switch (type) {
+ case TS_OFFSET: /* label(destination position) */
+ {
+ LABEL *lobj = (LABEL *)OPERAND_AT(iobj, j);
+ rb_str_catf(str, "<L%03d>", lobj->label_no);
+ break;
+ }
+ break;
+ case TS_ISEQ: /* iseq */
+ {
+ rb_iseq_t *iseq = (rb_iseq_t *)OPERAND_AT(iobj, j);
+ VALUE val = Qnil;
+ if (0 && iseq) { /* TODO: invalidate now */
+ val = iseq->self;
+ }
+ rb_str_concat(str, rb_inspect(val));
+ }
+ break;
+ case TS_LINDEX:
+ case TS_NUM: /* ulong */
+ case TS_VALUE: /* VALUE */
+ {
+ VALUE v = OPERAND_AT(iobj, j);
+ rb_str_concat(str, rb_inspect(v));
+ break;
+ }
+ case TS_ID: /* ID */
+ rb_str_concat(str, rb_inspect(OPERAND_AT(iobj, j)));
+ break;
+ case TS_GENTRY:
+ {
+ struct rb_global_entry *entry = (struct rb_global_entry *)
+ (OPERAND_AT(iobj, j) & (~1));
+ rb_str_cat2(str, rb_id2name(entry->id));
+ break;
+ }
+ case TS_IC: /* inline cache */
+ rb_str_catf(str, "<ic:%d>", FIX2INT(OPERAND_AT(iobj, j)));
+ break;
+ case TS_CALLINFO: /* call info */
+ {
+ rb_call_info_t *ci = (rb_call_info_t *)OPERAND_AT(iobj, j);
+ rb_str_catf(str, "<callinfo:%s, %d>", ci->mid ? rb_id2name(ci->mid) : "", ci->orig_argc);
+ break;
+ }
+ case TS_CDHASH: /* case/when condition cache */
+ rb_str_cat2(str, "<ch>");
+ break;
+ default:{
+ rb_raise(rb_eSyntaxError, "unknown operand type: %c", type);
+ }
+ }
+ if (types[j + 1]) {
+ rb_str_cat2(str, ", ");
+ }
+ }
+ }
+ return str;
+}
+
+static void
+dump_disasm_list(struct iseq_link_element *link)
+{
+ int pos = 0;
+ INSN *iobj;
+ LABEL *lobj;
+ VALUE str;
+
+ printf("-- raw disasm--------\n");
+
+ while (link) {
+ switch (link->type) {
+ case ISEQ_ELEMENT_INSN:
+ {
+ iobj = (INSN *)link;
+ str = insn_data_to_s_detail(iobj);
+ printf("%04d %-65s(%4d)\n", pos, StringValueCStr(str), insn_data_line_no(iobj));
+ pos += insn_data_length(iobj);
+ break;
+ }
+ case ISEQ_ELEMENT_LABEL:
+ {
+ lobj = (LABEL *)link;
+ printf("<L%03d>\n", lobj->label_no);
+ break;
+ }
+ case ISEQ_ELEMENT_NONE:
+ {
+ printf("[none]\n");
+ break;
+ }
+ case ISEQ_ELEMENT_ADJUST:
+ {
+ ADJUST *adjust = (ADJUST *)link;
+ printf("adjust: [label: %d]\n", adjust->label->label_no);
+ break;
+ }
+ default:
+ /* ignore */
+ rb_raise(rb_eSyntaxError, "dump_disasm_list error: %ld\n", FIX2LONG(link->type));
+ }
+ link = link->next;
+ }
+ printf("---------------------\n");
+}
+
+const char *
+rb_insns_name(int i)
+{
+ return insn_name_info[i];
+}
+
+VALUE
+rb_insns_name_array(void)
+{
+ VALUE ary = rb_ary_new();
+ int i;
+ for (i = 0; i < numberof(insn_name_info); i++) {
+ rb_ary_push(ary, rb_obj_freeze(rb_str_new2(insn_name_info[i])));
+ }
+ return rb_obj_freeze(ary);
+}
+
+static LABEL *
+register_label(rb_iseq_t *iseq, struct st_table *labels_table, VALUE obj)
+{
+ LABEL *label = 0;
+ st_data_t tmp;
+ obj = rb_convert_type(obj, T_SYMBOL, "Symbol", "to_sym");
+
+ if (st_lookup(labels_table, obj, &tmp) == 0) {
+ label = NEW_LABEL(0);
+ st_insert(labels_table, obj, (st_data_t)label);
+ }
+ else {
+ label = (LABEL *)tmp;
+ }
+ return label;
+}
+
+static VALUE
+get_exception_sym2type(VALUE sym)
+{
+#undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
+ VALUE sym_inspect;
+ static VALUE symRescue, symEnsure, symRetry;
+ static VALUE symBreak, symRedo, symNext;
+
+ if (symRescue == 0) {
+ symRescue = ID2SYM(rb_intern("rescue"));
+ symEnsure = ID2SYM(rb_intern("ensure"));
+ symRetry = ID2SYM(rb_intern("retry"));
+ symBreak = ID2SYM(rb_intern("break"));
+ symRedo = ID2SYM(rb_intern("redo"));
+ symNext = ID2SYM(rb_intern("next"));
+ }
+
+ if (sym == symRescue) return CATCH_TYPE_RESCUE;
+ if (sym == symEnsure) return CATCH_TYPE_ENSURE;
+ if (sym == symRetry) return CATCH_TYPE_RETRY;
+ if (sym == symBreak) return CATCH_TYPE_BREAK;
+ if (sym == symRedo) return CATCH_TYPE_REDO;
+ if (sym == symNext) return CATCH_TYPE_NEXT;
+ sym_inspect = rb_inspect(sym);
+ rb_raise(rb_eSyntaxError, "invalid exception symbol: %s",
+ StringValuePtr(sym_inspect));
+ return 0;
+}
+
+static int
+iseq_build_from_ary_exception(rb_iseq_t *iseq, struct st_table *labels_table,
+ VALUE exception)
+{
+ int i;
+
+ for (i=0; i<RARRAY_LEN(exception); i++) {
+ VALUE v, type, eiseqval;
+ const VALUE *ptr;
+ LABEL *lstart, *lend, *lcont;
+ int sp;
+
+ RB_GC_GUARD(v) = rb_convert_type(RARRAY_AREF(exception, i), T_ARRAY,
+ "Array", "to_ary");
+ if (RARRAY_LEN(v) != 6) {
+ rb_raise(rb_eSyntaxError, "wrong exception entry");
+ }
+ ptr = RARRAY_CONST_PTR(v);
+ type = get_exception_sym2type(ptr[0]);
+ if (ptr[1] == Qnil) {
+ eiseqval = 0;
+ }
+ else {
+ eiseqval = rb_iseq_load(ptr[1], iseq->self, Qnil);
+ }
+
+ lstart = register_label(iseq, labels_table, ptr[2]);
+ lend = register_label(iseq, labels_table, ptr[3]);
+ lcont = register_label(iseq, labels_table, ptr[4]);
+ sp = NUM2INT(ptr[5]);
+
+ (void)sp;
+
+ ADD_CATCH_ENTRY(type, lstart, lend, eiseqval, lcont);
+ }
+ return COMPILE_OK;
+}
+
+static struct st_table *
+insn_make_insn_table(void)
+{
+ struct st_table *table;
+ int i;
+ table = st_init_numtable();
+
+ for (i=0; i<VM_INSTRUCTION_SIZE; i++) {
+ st_insert(table, ID2SYM(rb_intern(insn_name(i))), i);
+ }
+
+ return table;
+}
+
+static VALUE
+iseq_build_load_iseq(rb_iseq_t *iseq, VALUE op)
+{
+ VALUE iseqval;
+ if (RB_TYPE_P(op, T_ARRAY)) {
+ iseqval = rb_iseq_load(op, iseq->self, Qnil);
+ }
+ else if (CLASS_OF(op) == rb_cISeq) {
+ iseqval = op;
+ }
+ else {
+ rb_raise(rb_eSyntaxError, "ISEQ is required");
+ }
+ iseq_add_mark_object(iseq, iseqval);
+ return iseqval;
+}
+
+static int
+iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,
+ VALUE body, struct st_table *labels_table)
+{
+ /* TODO: body should be frozen */
+ const VALUE *ptr = RARRAY_CONST_PTR(body);
+ long i, len = RARRAY_LEN(body);
+ int j;
+ int line_no = 0;
+
+ /*
+ * index -> LABEL *label
+ */
+ static struct st_table *insn_table;
+
+ if (insn_table == 0) {
+ insn_table = insn_make_insn_table();
+ }
+
+ for (i=0; i<len; i++) {
+ VALUE obj = ptr[i];
+
+ if (SYMBOL_P(obj)) {
+ LABEL *label = register_label(iseq, labels_table, obj);
+ ADD_LABEL(anchor, label);
+ }
+ else if (FIXNUM_P(obj)) {
+ line_no = NUM2INT(obj);
+ }
+ else if (RB_TYPE_P(obj, T_ARRAY)) {
+ VALUE *argv = 0;
+ int argc = RARRAY_LENINT(obj) - 1;
+ st_data_t insn_id;
+ VALUE insn;
+
+ insn = (argc < 0) ? Qnil : RARRAY_AREF(obj, 0);
+ if (st_lookup(insn_table, (st_data_t)insn, &insn_id) == 0) {
+ /* TODO: exception */
+ RB_GC_GUARD(insn) = rb_inspect(insn);
+ rb_compile_error(RSTRING_PTR(iseq->location.path), line_no,
+ "unknown instruction: %s", RSTRING_PTR(insn));
+ }
+
+ if (argc != insn_len((VALUE)insn_id)-1) {
+ rb_compile_error(RSTRING_PTR(iseq->location.path), line_no,
+ "operand size mismatch");
+ }
+
+ if (argc > 0) {
+ argv = compile_data_alloc(iseq, sizeof(VALUE) * argc);
+ for (j=0; j<argc; j++) {
+ VALUE op = rb_ary_entry(obj, j+1);
+ switch (insn_op_type((VALUE)insn_id, j)) {
+ case TS_OFFSET: {
+ LABEL *label = register_label(iseq, labels_table, op);
+ argv[j] = (VALUE)label;
+ break;
+ }
+ case TS_LINDEX:
+ case TS_NUM:
+ (void)NUM2INT(op);
+ argv[j] = op;
+ break;
+ case TS_VALUE:
+ argv[j] = op;
+ iseq_add_mark_object(iseq, op);
+ break;
+ case TS_ISEQ:
+ {
+ if (op != Qnil) {
+ argv[j] = iseq_build_load_iseq(iseq, op);
+ }
+ else {
+ argv[j] = 0;
+ }
+ }
+ break;
+ case TS_GENTRY:
+ op = rb_convert_type(op, T_SYMBOL, "Symbol", "to_sym");
+ argv[j] = (VALUE)rb_global_entry(SYM2ID(op));
+ break;
+ case TS_IC:
+ argv[j] = op;
+ if (NUM2INT(op) >= iseq->is_size) {
+ iseq->is_size = NUM2INT(op) + 1;
+ }
+ break;
+ case TS_CALLINFO:
+ {
+ ID mid = 0;
+ int orig_argc = 0;
+ VALUE block = 0;
+ unsigned long flag = 0;
+
+ if (!NIL_P(op)) {
+ VALUE vmid = rb_hash_aref(op, ID2SYM(rb_intern("mid")));
+ VALUE vflag = rb_hash_aref(op, ID2SYM(rb_intern("flag")));
+ VALUE vorig_argc = rb_hash_aref(op, ID2SYM(rb_intern("orig_argc")));
+ VALUE vblock = rb_hash_aref(op, ID2SYM(rb_intern("block")));
+
+ if (!NIL_P(vmid)) mid = SYM2ID(vmid);
+ if (!NIL_P(vflag)) flag = NUM2ULONG(vflag);
+ if (!NIL_P(vorig_argc)) orig_argc = FIX2INT(vorig_argc);
+ if (!NIL_P(vblock)) block = iseq_build_load_iseq(iseq, vblock);
+ }
+ argv[j] = (VALUE)new_callinfo(iseq, mid, orig_argc, block, flag);
+ }
+ break;
+ case TS_ID:
+ argv[j] = rb_convert_type(op, T_SYMBOL,
+ "Symbol", "to_sym");
+ break;
+ case TS_CDHASH:
+ {
+ int i;
+ op = rb_convert_type(op, T_ARRAY, "Array", "to_ary");
+ op = rb_ary_dup(op);
+ for (i=0; i<RARRAY_LEN(op); i+=2) {
+ VALUE sym = rb_ary_entry(op, i+1);
+ LABEL *label =
+ register_label(iseq, labels_table, sym);
+ rb_ary_store(op, i+1, (VALUE)label | 1);
+ }
+ argv[j] = op;
+ iseq_add_mark_object_compile_time(iseq, op);
+ }
+ break;
+ default:
+ rb_raise(rb_eSyntaxError, "unknown operand: %c", insn_op_type((VALUE)insn_id, j));
+ }
+ }
+ }
+ ADD_ELEM(anchor,
+ (LINK_ELEMENT*)new_insn_core(iseq, line_no,
+ (enum ruby_vminsn_type)insn_id, argc, argv));
+ }
+ else {
+ rb_raise(rb_eTypeError, "unexpected object for instruction");
+ }
+ }
+ validate_labels(iseq, labels_table);
+ st_free_table(labels_table);
+ iseq_setup(iseq, anchor);
+ return COMPILE_OK;
+}
+
+#define CHECK_ARRAY(v) rb_convert_type((v), T_ARRAY, "Array", "to_ary")
+#define CHECK_STRING(v) rb_convert_type((v), T_STRING, "String", "to_str")
+#define CHECK_SYMBOL(v) rb_convert_type((v), T_SYMBOL, "Symbol", "to_sym")
+static inline VALUE CHECK_INTEGER(VALUE v) {(void)NUM2LONG(v); return v;}
+
+VALUE
+rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE locals, VALUE args,
+ VALUE exception, VALUE body)
+{
+ int i;
+ ID *tbl;
+ struct st_table *labels_table = st_init_numtable();
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+
+ iseq->local_table_size = RARRAY_LENINT(locals);
+ iseq->local_table = tbl = (ID *)ALLOC_N(ID, iseq->local_table_size);
+ iseq->local_size = iseq->local_table_size + 1;
+
+ for (i=0; i<RARRAY_LEN(locals); i++) {
+ VALUE lv = RARRAY_AREF(locals, i);
+ tbl[i] = FIXNUM_P(lv) ? (ID)FIX2LONG(lv) : SYM2ID(CHECK_SYMBOL(lv));
+ }
+
+ /* args */
+ if (FIXNUM_P(args)) {
+ iseq->arg_size = iseq->argc = FIX2INT(args);
+ iseq->arg_simple = 1;
+ }
+ else {
+ int i = 0;
+ VALUE argc = CHECK_INTEGER(rb_ary_entry(args, i++));
+ VALUE arg_opt_labels = CHECK_ARRAY(rb_ary_entry(args, i++));
+ VALUE arg_post_len = CHECK_INTEGER(rb_ary_entry(args, i++));
+ VALUE arg_post_start = CHECK_INTEGER(rb_ary_entry(args, i++));
+ VALUE arg_rest = CHECK_INTEGER(rb_ary_entry(args, i++));
+ VALUE arg_block = CHECK_INTEGER(rb_ary_entry(args, i++));
+ VALUE arg_simple = CHECK_INTEGER(rb_ary_entry(args, i++));
+
+ iseq->argc = FIX2INT(argc);
+ iseq->arg_rest = FIX2INT(arg_rest);
+ iseq->arg_post_len = FIX2INT(arg_post_len);
+ iseq->arg_post_start = FIX2INT(arg_post_start);
+ iseq->arg_block = FIX2INT(arg_block);
+ iseq->arg_opts = RARRAY_LENINT(arg_opt_labels);
+ iseq->arg_opt_table = (VALUE *)ALLOC_N(VALUE, iseq->arg_opts);
+
+ if (iseq->arg_block != -1) {
+ iseq->arg_size = iseq->arg_block + 1;
+ }
+ else if (iseq->arg_post_len) {
+ iseq->arg_size = iseq->arg_post_start + iseq->arg_post_len;
+ }
+ else if (iseq->arg_rest != -1) {
+ iseq->arg_size = iseq->arg_rest + 1;
+ }
+ else {
+ iseq->arg_size = iseq->argc + (iseq->arg_opts ? iseq->arg_opts - 1 : 0);
+ }
+
+ for (i=0; i<RARRAY_LEN(arg_opt_labels); i++) {
+ iseq->arg_opt_table[i] =
+ (VALUE)register_label(iseq, labels_table,
+ rb_ary_entry(arg_opt_labels, i));
+ }
+
+ iseq->arg_simple = NUM2INT(arg_simple);
+ }
+
+ /* exception */
+ iseq_build_from_ary_exception(iseq, labels_table, exception);
+
+ /* body */
+ iseq_build_from_ary_body(iseq, anchor, body, labels_table);
+ return iseq->self;
+}
+
+/* for parser */
+
+int
+rb_dvar_defined(ID id)
+{
+ rb_thread_t *th = GET_THREAD();
+ rb_iseq_t *iseq;
+ if (th->base_block && (iseq = th->base_block->iseq)) {
+ while (iseq->type == ISEQ_TYPE_BLOCK ||
+ iseq->type == ISEQ_TYPE_RESCUE ||
+ iseq->type == ISEQ_TYPE_ENSURE ||
+ iseq->type == ISEQ_TYPE_EVAL ||
+ iseq->type == ISEQ_TYPE_MAIN
+ ) {
+ int i;
+
+ for (i = 0; i < iseq->local_table_size; i++) {
+ if (iseq->local_table[i] == id) {
+ return 1;
+ }
+ }
+ iseq = iseq->parent_iseq;
+ }
+ }
+ return 0;
+}
+
+int
+rb_local_defined(ID id)
+{
+ rb_thread_t *th = GET_THREAD();
+ rb_iseq_t *iseq;
+
+ if (th->base_block && th->base_block->iseq) {
+ int i;
+ iseq = th->base_block->iseq->local_iseq;
+
+ for (i=0; i<iseq->local_table_size; i++) {
+ if (iseq->local_table[i] == id) {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+int
+rb_parse_in_eval(void)
+{
+ return GET_THREAD()->parse_in_eval > 0;
+}
+
+int
+rb_parse_in_main(void)
+{
+ return GET_THREAD()->parse_in_eval < 0;
+}
diff --git a/complex.c b/complex.c
new file mode 100644
index 0000000000..3e9d63117a
--- /dev/null
+++ b/complex.c
@@ -0,0 +1,2256 @@
+/*
+ complex.c: Coded by Tadayoshi Funaba 2008-2012
+
+ This implementation is based on Keiju Ishitsuka's Complex library
+ which is written in ruby.
+*/
+
+#include "ruby.h"
+#include "internal.h"
+#include <math.h>
+
+#define NDEBUG
+#include <assert.h>
+
+#define ZERO INT2FIX(0)
+#define ONE INT2FIX(1)
+#define TWO INT2FIX(2)
+
+VALUE rb_cComplex;
+
+static ID id_abs, id_abs2, id_arg, id_cmp, id_conj, id_convert,
+ id_denominator, id_divmod, id_eqeq_p, id_expt, id_fdiv, id_floor,
+ id_idiv, id_imag, id_inspect, id_negate, id_numerator, id_quo,
+ id_real, id_real_p, id_to_f, id_to_i, id_to_r, id_to_s,
+ id_i_real, id_i_imag;
+
+#define f_boolcast(x) ((x) ? Qtrue : Qfalse)
+
+#define binop(n,op) \
+inline static VALUE \
+f_##n(VALUE x, VALUE y)\
+{\
+ return rb_funcall(x, (op), 1, y);\
+}
+
+#define fun1(n) \
+inline static VALUE \
+f_##n(VALUE x)\
+{\
+ return rb_funcall(x, id_##n, 0);\
+}
+
+#define fun2(n) \
+inline static VALUE \
+f_##n(VALUE x, VALUE y)\
+{\
+ return rb_funcall(x, id_##n, 1, y);\
+}
+
+#define math1(n) \
+inline static VALUE \
+m_##n(VALUE x)\
+{\
+ return rb_funcall(rb_mMath, id_##n, 1, x);\
+}
+
+#define math2(n) \
+inline static VALUE \
+m_##n(VALUE x, VALUE y)\
+{\
+ return rb_funcall(rb_mMath, id_##n, 2, x, y);\
+}
+
+#define PRESERVE_SIGNEDZERO
+
+inline static VALUE
+f_add(VALUE x, VALUE y)
+{
+#ifndef PRESERVE_SIGNEDZERO
+ if (FIXNUM_P(y) && FIX2LONG(y) == 0)
+ return x;
+ else if (FIXNUM_P(x) && FIX2LONG(x) == 0)
+ return y;
+#endif
+ return rb_funcall(x, '+', 1, y);
+}
+
+inline static VALUE
+f_cmp(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(x) && FIXNUM_P(y)) {
+ long c = FIX2LONG(x) - FIX2LONG(y);
+ if (c > 0)
+ c = 1;
+ else if (c < 0)
+ c = -1;
+ return INT2FIX(c);
+ }
+ return rb_funcall(x, id_cmp, 1, y);
+}
+
+inline static VALUE
+f_div(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(y) && FIX2LONG(y) == 1)
+ return x;
+ return rb_funcall(x, '/', 1, y);
+}
+
+inline static VALUE
+f_gt_p(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(x) && FIXNUM_P(y))
+ return f_boolcast(FIX2LONG(x) > FIX2LONG(y));
+ return rb_funcall(x, '>', 1, y);
+}
+
+inline static VALUE
+f_lt_p(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(x) && FIXNUM_P(y))
+ return f_boolcast(FIX2LONG(x) < FIX2LONG(y));
+ return rb_funcall(x, '<', 1, y);
+}
+
+binop(mod, '%')
+
+inline static VALUE
+f_mul(VALUE x, VALUE y)
+{
+#ifndef PRESERVE_SIGNEDZERO
+ if (FIXNUM_P(y)) {
+ long iy = FIX2LONG(y);
+ if (iy == 0) {
+ if (FIXNUM_P(x) || RB_TYPE_P(x, T_BIGNUM))
+ return ZERO;
+ }
+ else if (iy == 1)
+ return x;
+ }
+ else if (FIXNUM_P(x)) {
+ long ix = FIX2LONG(x);
+ if (ix == 0) {
+ if (FIXNUM_P(y) || RB_TYPE_P(y, T_BIGNUM))
+ return ZERO;
+ }
+ else if (ix == 1)
+ return y;
+ }
+#endif
+ return rb_funcall(x, '*', 1, y);
+}
+
+inline static VALUE
+f_sub(VALUE x, VALUE y)
+{
+#ifndef PRESERVE_SIGNEDZERO
+ if (FIXNUM_P(y) && FIX2LONG(y) == 0)
+ return x;
+#endif
+ return rb_funcall(x, '-', 1, y);
+}
+
+fun1(abs)
+fun1(abs2)
+fun1(arg)
+fun1(conj)
+fun1(denominator)
+fun1(floor)
+fun1(imag)
+fun1(inspect)
+fun1(negate)
+fun1(numerator)
+fun1(real)
+fun1(real_p)
+
+inline static VALUE
+f_to_i(VALUE x)
+{
+ if (RB_TYPE_P(x, T_STRING))
+ return rb_str_to_inum(x, 10, 0);
+ return rb_funcall(x, id_to_i, 0);
+}
+inline static VALUE
+f_to_f(VALUE x)
+{
+ if (RB_TYPE_P(x, T_STRING))
+ return DBL2NUM(rb_str_to_dbl(x, 0));
+ return rb_funcall(x, id_to_f, 0);
+}
+
+fun1(to_r)
+fun1(to_s)
+
+fun2(divmod)
+
+inline static VALUE
+f_eqeq_p(VALUE x, VALUE y)
+{
+ if (FIXNUM_P(x) && FIXNUM_P(y))
+ return f_boolcast(FIX2LONG(x) == FIX2LONG(y));
+ return rb_funcall(x, id_eqeq_p, 1, y);
+}
+
+fun2(expt)
+fun2(fdiv)
+fun2(idiv)
+fun2(quo)
+
+inline static VALUE
+f_negative_p(VALUE x)
+{
+ if (FIXNUM_P(x))
+ return f_boolcast(FIX2LONG(x) < 0);
+ return rb_funcall(x, '<', 1, ZERO);
+}
+
+#define f_positive_p(x) (!f_negative_p(x))
+
+inline static VALUE
+f_zero_p(VALUE x)
+{
+ if (RB_TYPE_P(x, T_FIXNUM)) {
+ return f_boolcast(FIX2LONG(x) == 0);
+ }
+ else if (RB_TYPE_P(x, T_BIGNUM)) {
+ return Qfalse;
+ }
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
+ VALUE num = RRATIONAL(x)->num;
+
+ return f_boolcast(FIXNUM_P(num) && FIX2LONG(num) == 0);
+ }
+ return rb_funcall(x, id_eqeq_p, 1, ZERO);
+}
+
+#define f_nonzero_p(x) (!f_zero_p(x))
+
+inline static VALUE
+f_one_p(VALUE x)
+{
+ if (RB_TYPE_P(x, T_FIXNUM)) {
+ return f_boolcast(FIX2LONG(x) == 1);
+ }
+ else if (RB_TYPE_P(x, T_BIGNUM)) {
+ return Qfalse;
+ }
+ else if (RB_TYPE_P(x, T_RATIONAL)) {
+ VALUE num = RRATIONAL(x)->num;
+ VALUE den = RRATIONAL(x)->den;
+
+ return f_boolcast(FIXNUM_P(num) && FIX2LONG(num) == 1 &&
+ FIXNUM_P(den) && FIX2LONG(den) == 1);
+ }
+ return rb_funcall(x, id_eqeq_p, 1, ONE);
+}
+
+inline static VALUE
+f_kind_of_p(VALUE x, VALUE c)
+{
+ return rb_obj_is_kind_of(x, c);
+}
+
+inline static VALUE
+k_numeric_p(VALUE x)
+{
+ return f_kind_of_p(x, rb_cNumeric);
+}
+
+inline static VALUE
+k_integer_p(VALUE x)
+{
+ return f_kind_of_p(x, rb_cInteger);
+}
+
+inline static VALUE
+k_fixnum_p(VALUE x)
+{
+ return f_kind_of_p(x, rb_cFixnum);
+}
+
+inline static VALUE
+k_bignum_p(VALUE x)
+{
+ return f_kind_of_p(x, rb_cBignum);
+}
+
+inline static VALUE
+k_float_p(VALUE x)
+{
+ return f_kind_of_p(x, rb_cFloat);
+}
+
+inline static VALUE
+k_rational_p(VALUE x)
+{
+ return f_kind_of_p(x, rb_cRational);
+}
+
+inline static VALUE
+k_complex_p(VALUE x)
+{
+ return f_kind_of_p(x, rb_cComplex);
+}
+
+#define k_exact_p(x) (!k_float_p(x))
+#define k_inexact_p(x) k_float_p(x)
+
+#define k_exact_zero_p(x) (k_exact_p(x) && f_zero_p(x))
+#define k_exact_one_p(x) (k_exact_p(x) && f_one_p(x))
+
+#define get_dat1(x) \
+ struct RComplex *dat;\
+ dat = ((struct RComplex *)(x))
+
+#define get_dat2(x,y) \
+ struct RComplex *adat, *bdat;\
+ adat = ((struct RComplex *)(x));\
+ bdat = ((struct RComplex *)(y))
+
+inline static VALUE
+nucomp_s_new_internal(VALUE klass, VALUE real, VALUE imag)
+{
+ NEWOBJ_OF(obj, struct RComplex, klass, T_COMPLEX | (RGENGC_WB_PROTECTED_COMPLEX ? FL_WB_PROTECTED : 0));
+
+ RCOMPLEX_SET_REAL(obj, real);
+ RCOMPLEX_SET_IMAG(obj, imag);
+
+ return (VALUE)obj;
+}
+
+static VALUE
+nucomp_s_alloc(VALUE klass)
+{
+ return nucomp_s_new_internal(klass, ZERO, ZERO);
+}
+
+#if 0
+static VALUE
+nucomp_s_new_bang(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE real, imag;
+
+ switch (rb_scan_args(argc, argv, "11", &real, &imag)) {
+ case 1:
+ if (!k_numeric_p(real))
+ real = f_to_i(real);
+ imag = ZERO;
+ break;
+ default:
+ if (!k_numeric_p(real))
+ real = f_to_i(real);
+ if (!k_numeric_p(imag))
+ imag = f_to_i(imag);
+ break;
+ }
+
+ return nucomp_s_new_internal(klass, real, imag);
+}
+#endif
+
+inline static VALUE
+f_complex_new_bang1(VALUE klass, VALUE x)
+{
+ assert(!k_complex_p(x));
+ return nucomp_s_new_internal(klass, x, ZERO);
+}
+
+inline static VALUE
+f_complex_new_bang2(VALUE klass, VALUE x, VALUE y)
+{
+ assert(!k_complex_p(x));
+ assert(!k_complex_p(y));
+ return nucomp_s_new_internal(klass, x, y);
+}
+
+#ifdef CANONICALIZATION_FOR_MATHN
+#define CANON
+#endif
+
+#ifdef CANON
+static int canonicalization = 0;
+
+RUBY_FUNC_EXPORTED void
+nucomp_canonicalization(int f)
+{
+ canonicalization = f;
+}
+#endif
+
+inline static void
+nucomp_real_check(VALUE num)
+{
+ if (!RB_TYPE_P(num, T_FIXNUM) &&
+ !RB_TYPE_P(num, T_BIGNUM) &&
+ !RB_TYPE_P(num, T_FLOAT) &&
+ !RB_TYPE_P(num, T_RATIONAL)) {
+ if (!k_numeric_p(num) || !f_real_p(num))
+ rb_raise(rb_eTypeError, "not a real");
+ }
+}
+
+inline static VALUE
+nucomp_s_canonicalize_internal(VALUE klass, VALUE real, VALUE imag)
+{
+#ifdef CANON
+#define CL_CANON
+#ifdef CL_CANON
+ if (k_exact_zero_p(imag) && canonicalization)
+ return real;
+#else
+ if (f_zero_p(imag) && canonicalization)
+ return real;
+#endif
+#endif
+ if (f_real_p(real) && f_real_p(imag))
+ return nucomp_s_new_internal(klass, real, imag);
+ else if (f_real_p(real)) {
+ get_dat1(imag);
+
+ return nucomp_s_new_internal(klass,
+ f_sub(real, dat->imag),
+ f_add(ZERO, dat->real));
+ }
+ else if (f_real_p(imag)) {
+ get_dat1(real);
+
+ return nucomp_s_new_internal(klass,
+ dat->real,
+ f_add(dat->imag, imag));
+ }
+ else {
+ get_dat2(real, imag);
+
+ return nucomp_s_new_internal(klass,
+ f_sub(adat->real, bdat->imag),
+ f_add(adat->imag, bdat->real));
+ }
+}
+
+/*
+ * call-seq:
+ * Complex.rect(real[, imag]) -> complex
+ * Complex.rectangular(real[, imag]) -> complex
+ *
+ * Returns a complex object which denotes the given rectangular form.
+ *
+ * Complex.rectangular(1, 2) #=> (1+2i)
+ */
+static VALUE
+nucomp_s_new(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE real, imag;
+
+ switch (rb_scan_args(argc, argv, "11", &real, &imag)) {
+ case 1:
+ nucomp_real_check(real);
+ imag = ZERO;
+ break;
+ default:
+ nucomp_real_check(real);
+ nucomp_real_check(imag);
+ break;
+ }
+
+ return nucomp_s_canonicalize_internal(klass, real, imag);
+}
+
+inline static VALUE
+f_complex_new1(VALUE klass, VALUE x)
+{
+ assert(!k_complex_p(x));
+ return nucomp_s_canonicalize_internal(klass, x, ZERO);
+}
+
+inline static VALUE
+f_complex_new2(VALUE klass, VALUE x, VALUE y)
+{
+ assert(!k_complex_p(x));
+ return nucomp_s_canonicalize_internal(klass, x, y);
+}
+
+/*
+ * call-seq:
+ * Complex(x[, y]) -> numeric
+ *
+ * Returns x+i*y;
+ *
+ * Complex(1, 2) #=> (1+2i)
+ * Complex('1+2i') #=> (1+2i)
+ *
+ * Syntax of string form:
+ *
+ * string form = extra spaces , complex , extra spaces ;
+ * complex = real part | [ sign ] , imaginary part
+ * | real part , sign , imaginary part
+ * | rational , "@" , rational ;
+ * real part = rational ;
+ * imaginary part = imaginary unit | unsigned rational , imaginary unit ;
+ * rational = [ sign ] , unsigned rational ;
+ * unsigned rational = numerator | numerator , "/" , denominator ;
+ * numerator = integer part | fractional part | integer part , fractional part ;
+ * denominator = digits ;
+ * integer part = digits ;
+ * fractional part = "." , digits , [ ( "e" | "E" ) , [ sign ] , digits ] ;
+ * imaginary unit = "i" | "I" | "j" | "J" ;
+ * sign = "-" | "+" ;
+ * digits = digit , { digit | "_" , digit };
+ * digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
+ * extra spaces = ? \s* ? ;
+ *
+ * See String#to_c.
+ */
+static VALUE
+nucomp_f_complex(int argc, VALUE *argv, VALUE klass)
+{
+ return rb_funcall2(rb_cComplex, id_convert, argc, argv);
+}
+
+#define imp1(n) \
+inline static VALUE \
+m_##n##_bang(VALUE x)\
+{\
+ return rb_math_##n(x);\
+}
+
+#define imp2(n) \
+inline static VALUE \
+m_##n##_bang(VALUE x, VALUE y)\
+{\
+ return rb_math_##n(x, y);\
+}
+
+imp2(atan2)
+imp1(cos)
+imp1(cosh)
+imp1(exp)
+imp2(hypot)
+
+#define m_hypot(x,y) m_hypot_bang((x),(y))
+
+static VALUE
+m_log_bang(VALUE x)
+{
+ return rb_math_log(1, &x);
+}
+
+imp1(sin)
+imp1(sinh)
+imp1(sqrt)
+
+static VALUE
+m_cos(VALUE x)
+{
+ if (f_real_p(x))
+ return m_cos_bang(x);
+ {
+ get_dat1(x);
+ return f_complex_new2(rb_cComplex,
+ f_mul(m_cos_bang(dat->real),
+ m_cosh_bang(dat->imag)),
+ f_mul(f_negate(m_sin_bang(dat->real)),
+ m_sinh_bang(dat->imag)));
+ }
+}
+
+static VALUE
+m_sin(VALUE x)
+{
+ if (f_real_p(x))
+ return m_sin_bang(x);
+ {
+ get_dat1(x);
+ return f_complex_new2(rb_cComplex,
+ f_mul(m_sin_bang(dat->real),
+ m_cosh_bang(dat->imag)),
+ f_mul(m_cos_bang(dat->real),
+ m_sinh_bang(dat->imag)));
+ }
+}
+
+#if 0
+static VALUE
+m_sqrt(VALUE x)
+{
+ if (f_real_p(x)) {
+ if (f_positive_p(x))
+ return m_sqrt_bang(x);
+ return f_complex_new2(rb_cComplex, ZERO, m_sqrt_bang(f_negate(x)));
+ }
+ else {
+ get_dat1(x);
+
+ if (f_negative_p(dat->imag))
+ return f_conj(m_sqrt(f_conj(x)));
+ else {
+ VALUE a = f_abs(x);
+ return f_complex_new2(rb_cComplex,
+ m_sqrt_bang(f_div(f_add(a, dat->real), TWO)),
+ m_sqrt_bang(f_div(f_sub(a, dat->real), TWO)));
+ }
+ }
+}
+#endif
+
+inline static VALUE
+f_complex_polar(VALUE klass, VALUE x, VALUE y)
+{
+ assert(!k_complex_p(x));
+ assert(!k_complex_p(y));
+ return nucomp_s_canonicalize_internal(klass,
+ f_mul(x, m_cos(y)),
+ f_mul(x, m_sin(y)));
+}
+
+/*
+ * call-seq:
+ * Complex.polar(abs[, arg]) -> complex
+ *
+ * Returns a complex object which denotes the given polar form.
+ *
+ * Complex.polar(3, 0) #=> (3.0+0.0i)
+ * Complex.polar(3, Math::PI/2) #=> (1.836909530733566e-16+3.0i)
+ * Complex.polar(3, Math::PI) #=> (-3.0+3.673819061467132e-16i)
+ * Complex.polar(3, -Math::PI/2) #=> (1.836909530733566e-16-3.0i)
+ */
+static VALUE
+nucomp_s_polar(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE abs, arg;
+
+ switch (rb_scan_args(argc, argv, "11", &abs, &arg)) {
+ case 1:
+ nucomp_real_check(abs);
+ arg = ZERO;
+ break;
+ default:
+ nucomp_real_check(abs);
+ nucomp_real_check(arg);
+ break;
+ }
+ return f_complex_polar(klass, abs, arg);
+}
+
+/*
+ * call-seq:
+ * cmp.real -> real
+ *
+ * Returns the real part.
+ *
+ * Complex(7).real #=> 7
+ * Complex(9, -4).real #=> 9
+ */
+static VALUE
+nucomp_real(VALUE self)
+{
+ get_dat1(self);
+ return dat->real;
+}
+
+/*
+ * call-seq:
+ * cmp.imag -> real
+ * cmp.imaginary -> real
+ *
+ * Returns the imaginary part.
+ *
+ * Complex(7).imaginary #=> 0
+ * Complex(9, -4).imaginary #=> -4
+ */
+static VALUE
+nucomp_imag(VALUE self)
+{
+ get_dat1(self);
+ return dat->imag;
+}
+
+/*
+ * call-seq:
+ * -cmp -> complex
+ *
+ * Returns negation of the value.
+ *
+ * -Complex(1, 2) #=> (-1-2i)
+ */
+static VALUE
+nucomp_negate(VALUE self)
+{
+ get_dat1(self);
+ return f_complex_new2(CLASS_OF(self),
+ f_negate(dat->real), f_negate(dat->imag));
+}
+
+inline static VALUE
+f_addsub(VALUE self, VALUE other,
+ VALUE (*func)(VALUE, VALUE), ID id)
+{
+ if (k_complex_p(other)) {
+ VALUE real, imag;
+
+ get_dat2(self, other);
+
+ real = (*func)(adat->real, bdat->real);
+ imag = (*func)(adat->imag, bdat->imag);
+
+ return f_complex_new2(CLASS_OF(self), real, imag);
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ get_dat1(self);
+
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(dat->real, other), dat->imag);
+ }
+ return rb_num_coerce_bin(self, other, id);
+}
+
+/*
+ * call-seq:
+ * cmp + numeric -> complex
+ *
+ * Performs addition.
+ *
+ * Complex(2, 3) + Complex(2, 3) #=> (4+6i)
+ * Complex(900) + Complex(1) #=> (901+0i)
+ * Complex(-2, 9) + Complex(-9, 2) #=> (-11+11i)
+ * Complex(9, 8) + 4 #=> (13+8i)
+ * Complex(20, 9) + 9.8 #=> (29.8+9i)
+ */
+static VALUE
+nucomp_add(VALUE self, VALUE other)
+{
+ return f_addsub(self, other, f_add, '+');
+}
+
+/*
+ * call-seq:
+ * cmp - numeric -> complex
+ *
+ * Performs subtraction.
+ *
+ * Complex(2, 3) - Complex(2, 3) #=> (0+0i)
+ * Complex(900) - Complex(1) #=> (899+0i)
+ * Complex(-2, 9) - Complex(-9, 2) #=> (7+7i)
+ * Complex(9, 8) - 4 #=> (5+8i)
+ * Complex(20, 9) - 9.8 #=> (10.2+9i)
+ */
+static VALUE
+nucomp_sub(VALUE self, VALUE other)
+{
+ return f_addsub(self, other, f_sub, '-');
+}
+
+/*
+ * call-seq:
+ * cmp * numeric -> complex
+ *
+ * Performs multiplication.
+ *
+ * Complex(2, 3) * Complex(2, 3) #=> (-5+12i)
+ * Complex(900) * Complex(1) #=> (900+0i)
+ * Complex(-2, 9) * Complex(-9, 2) #=> (0-85i)
+ * Complex(9, 8) * 4 #=> (36+32i)
+ * Complex(20, 9) * 9.8 #=> (196.0+88.2i)
+ */
+static VALUE
+nucomp_mul(VALUE self, VALUE other)
+{
+ if (k_complex_p(other)) {
+ VALUE real, imag;
+
+ get_dat2(self, other);
+
+ real = f_sub(f_mul(adat->real, bdat->real),
+ f_mul(adat->imag, bdat->imag));
+ imag = f_add(f_mul(adat->real, bdat->imag),
+ f_mul(adat->imag, bdat->real));
+
+ return f_complex_new2(CLASS_OF(self), real, imag);
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ get_dat1(self);
+
+ return f_complex_new2(CLASS_OF(self),
+ f_mul(dat->real, other),
+ f_mul(dat->imag, other));
+ }
+ return rb_num_coerce_bin(self, other, '*');
+}
+
+inline static VALUE
+f_divide(VALUE self, VALUE other,
+ VALUE (*func)(VALUE, VALUE), ID id)
+{
+ if (k_complex_p(other)) {
+ int flo;
+ get_dat2(self, other);
+
+ flo = (k_float_p(adat->real) || k_float_p(adat->imag) ||
+ k_float_p(bdat->real) || k_float_p(bdat->imag));
+
+ if (f_gt_p(f_abs(bdat->real), f_abs(bdat->imag))) {
+ VALUE r, n;
+
+ r = (*func)(bdat->imag, bdat->real);
+ n = f_mul(bdat->real, f_add(ONE, f_mul(r, r)));
+ if (flo)
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(self, n),
+ (*func)(f_negate(f_mul(self, r)), n));
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(f_add(adat->real,
+ f_mul(adat->imag, r)), n),
+ (*func)(f_sub(adat->imag,
+ f_mul(adat->real, r)), n));
+ }
+ else {
+ VALUE r, n;
+
+ r = (*func)(bdat->real, bdat->imag);
+ n = f_mul(bdat->imag, f_add(ONE, f_mul(r, r)));
+ if (flo)
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(f_mul(self, r), n),
+ (*func)(f_negate(self), n));
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(f_add(f_mul(adat->real, r),
+ adat->imag), n),
+ (*func)(f_sub(f_mul(adat->imag, r),
+ adat->real), n));
+ }
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ get_dat1(self);
+
+ return f_complex_new2(CLASS_OF(self),
+ (*func)(dat->real, other),
+ (*func)(dat->imag, other));
+ }
+ return rb_num_coerce_bin(self, other, id);
+}
+
+#define rb_raise_zerodiv() rb_raise(rb_eZeroDivError, "divided by 0")
+
+/*
+ * call-seq:
+ * cmp / numeric -> complex
+ * cmp.quo(numeric) -> complex
+ *
+ * Performs division.
+ *
+ * Complex(2, 3) / Complex(2, 3) #=> ((1/1)+(0/1)*i)
+ * Complex(900) / Complex(1) #=> ((900/1)+(0/1)*i)
+ * Complex(-2, 9) / Complex(-9, 2) #=> ((36/85)-(77/85)*i)
+ * Complex(9, 8) / 4 #=> ((9/4)+(2/1)*i)
+ * Complex(20, 9) / 9.8 #=> (2.0408163265306123+0.9183673469387754i)
+ */
+static VALUE
+nucomp_div(VALUE self, VALUE other)
+{
+ return f_divide(self, other, f_quo, id_quo);
+}
+
+#define nucomp_quo nucomp_div
+
+/*
+ * call-seq:
+ * cmp.fdiv(numeric) -> complex
+ *
+ * Performs division as each part is a float, never returns a float.
+ *
+ * Complex(11, 22).fdiv(3) #=> (3.6666666666666665+7.333333333333333i)
+ */
+static VALUE
+nucomp_fdiv(VALUE self, VALUE other)
+{
+ return f_divide(self, other, f_fdiv, id_fdiv);
+}
+
+inline static VALUE
+f_reciprocal(VALUE x)
+{
+ return f_quo(ONE, x);
+}
+
+/*
+ * call-seq:
+ * cmp ** numeric -> complex
+ *
+ * Performs exponentiation.
+ *
+ * Complex('i') ** 2 #=> (-1+0i)
+ * Complex(-8) ** Rational(1, 3) #=> (1.0000000000000002+1.7320508075688772i)
+ */
+static VALUE
+nucomp_expt(VALUE self, VALUE other)
+{
+ if (k_numeric_p(other) && k_exact_zero_p(other))
+ return f_complex_new_bang1(CLASS_OF(self), ONE);
+
+ if (k_rational_p(other) && f_one_p(f_denominator(other)))
+ other = f_numerator(other); /* c14n */
+
+ if (k_complex_p(other)) {
+ get_dat1(other);
+
+ if (k_exact_zero_p(dat->imag))
+ other = dat->real; /* c14n */
+ }
+
+ if (k_complex_p(other)) {
+ VALUE r, theta, nr, ntheta;
+
+ get_dat1(other);
+
+ r = f_abs(self);
+ theta = f_arg(self);
+
+ nr = m_exp_bang(f_sub(f_mul(dat->real, m_log_bang(r)),
+ f_mul(dat->imag, theta)));
+ ntheta = f_add(f_mul(theta, dat->real),
+ f_mul(dat->imag, m_log_bang(r)));
+ return f_complex_polar(CLASS_OF(self), nr, ntheta);
+ }
+ if (k_fixnum_p(other)) {
+ if (f_gt_p(other, ZERO)) {
+ VALUE x, z;
+ long n;
+
+ x = self;
+ z = x;
+ n = FIX2LONG(other) - 1;
+
+ while (n) {
+ long q, r;
+
+ while (1) {
+ get_dat1(x);
+
+ q = n / 2;
+ r = n % 2;
+
+ if (r)
+ break;
+
+ x = nucomp_s_new_internal(CLASS_OF(self),
+ f_sub(f_mul(dat->real, dat->real),
+ f_mul(dat->imag, dat->imag)),
+ f_mul(f_mul(TWO, dat->real), dat->imag));
+ n = q;
+ }
+ z = f_mul(z, x);
+ n--;
+ }
+ return z;
+ }
+ return f_expt(f_reciprocal(self), f_negate(other));
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ VALUE r, theta;
+
+ if (k_bignum_p(other))
+ rb_warn("in a**b, b may be too big");
+
+ r = f_abs(self);
+ theta = f_arg(self);
+
+ return f_complex_polar(CLASS_OF(self), f_expt(r, other),
+ f_mul(theta, other));
+ }
+ return rb_num_coerce_bin(self, other, id_expt);
+}
+
+/*
+ * call-seq:
+ * cmp == object -> true or false
+ *
+ * Returns true if cmp equals object numerically.
+ *
+ * Complex(2, 3) == Complex(2, 3) #=> true
+ * Complex(5) == 5 #=> true
+ * Complex(0) == 0.0 #=> true
+ * Complex('1/3') == 0.33 #=> false
+ * Complex('1/2') == '1/2' #=> false
+ */
+static VALUE
+nucomp_eqeq_p(VALUE self, VALUE other)
+{
+ if (k_complex_p(other)) {
+ get_dat2(self, other);
+
+ return f_boolcast(f_eqeq_p(adat->real, bdat->real) &&
+ f_eqeq_p(adat->imag, bdat->imag));
+ }
+ if (k_numeric_p(other) && f_real_p(other)) {
+ get_dat1(self);
+
+ return f_boolcast(f_eqeq_p(dat->real, other) && f_zero_p(dat->imag));
+ }
+ return f_eqeq_p(other, self);
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_coerce(VALUE self, VALUE other)
+{
+ if (k_numeric_p(other) && f_real_p(other))
+ return rb_assoc_new(f_complex_new_bang1(CLASS_OF(self), other), self);
+ if (RB_TYPE_P(other, T_COMPLEX))
+ return rb_assoc_new(other, self);
+
+ rb_raise(rb_eTypeError, "%s can't be coerced into %s",
+ rb_obj_classname(other), rb_obj_classname(self));
+ return Qnil;
+}
+
+/*
+ * call-seq:
+ * cmp.abs -> real
+ * cmp.magnitude -> real
+ *
+ * Returns the absolute part of its polar form.
+ *
+ * Complex(-1).abs #=> 1
+ * Complex(3.0, -4.0).abs #=> 5.0
+ */
+static VALUE
+nucomp_abs(VALUE self)
+{
+ get_dat1(self);
+
+ if (f_zero_p(dat->real)) {
+ VALUE a = f_abs(dat->imag);
+ if (k_float_p(dat->real) && !k_float_p(dat->imag))
+ a = f_to_f(a);
+ return a;
+ }
+ if (f_zero_p(dat->imag)) {
+ VALUE a = f_abs(dat->real);
+ if (!k_float_p(dat->real) && k_float_p(dat->imag))
+ a = f_to_f(a);
+ return a;
+ }
+ return m_hypot(dat->real, dat->imag);
+}
+
+/*
+ * call-seq:
+ * cmp.abs2 -> real
+ *
+ * Returns square of the absolute value.
+ *
+ * Complex(-1).abs2 #=> 1
+ * Complex(3.0, -4.0).abs2 #=> 25.0
+ */
+static VALUE
+nucomp_abs2(VALUE self)
+{
+ get_dat1(self);
+ return f_add(f_mul(dat->real, dat->real),
+ f_mul(dat->imag, dat->imag));
+}
+
+/*
+ * call-seq:
+ * cmp.arg -> float
+ * cmp.angle -> float
+ * cmp.phase -> float
+ *
+ * Returns the angle part of its polar form.
+ *
+ * Complex.polar(3, Math::PI/2).arg #=> 1.5707963267948966
+ */
+static VALUE
+nucomp_arg(VALUE self)
+{
+ get_dat1(self);
+ return m_atan2_bang(dat->imag, dat->real);
+}
+
+/*
+ * call-seq:
+ * cmp.rect -> array
+ * cmp.rectangular -> array
+ *
+ * Returns an array; [cmp.real, cmp.imag].
+ *
+ * Complex(1, 2).rectangular #=> [1, 2]
+ */
+static VALUE
+nucomp_rect(VALUE self)
+{
+ get_dat1(self);
+ return rb_assoc_new(dat->real, dat->imag);
+}
+
+/*
+ * call-seq:
+ * cmp.polar -> array
+ *
+ * Returns an array; [cmp.abs, cmp.arg].
+ *
+ * Complex(1, 2).polar #=> [2.23606797749979, 1.1071487177940904]
+ */
+static VALUE
+nucomp_polar(VALUE self)
+{
+ return rb_assoc_new(f_abs(self), f_arg(self));
+}
+
+/*
+ * call-seq:
+ * cmp.conj -> complex
+ * cmp.conjugate -> complex
+ *
+ * Returns the complex conjugate.
+ *
+ * Complex(1, 2).conjugate #=> (1-2i)
+ */
+static VALUE
+nucomp_conj(VALUE self)
+{
+ get_dat1(self);
+ return f_complex_new2(CLASS_OF(self), dat->real, f_negate(dat->imag));
+}
+
+#if 0
+/* :nodoc: */
+static VALUE
+nucomp_true(VALUE self)
+{
+ return Qtrue;
+}
+#endif
+
+/*
+ * call-seq:
+ * cmp.real? -> false
+ *
+ * Returns false.
+ */
+static VALUE
+nucomp_false(VALUE self)
+{
+ return Qfalse;
+}
+
+#if 0
+/* :nodoc: */
+static VALUE
+nucomp_exact_p(VALUE self)
+{
+ get_dat1(self);
+ return f_boolcast(k_exact_p(dat->real) && k_exact_p(dat->imag));
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_inexact_p(VALUE self)
+{
+ return f_boolcast(!nucomp_exact_p(self));
+}
+#endif
+
+/*
+ * call-seq:
+ * cmp.denominator -> integer
+ *
+ * Returns the denominator (lcm of both denominator - real and imag).
+ *
+ * See numerator.
+ */
+static VALUE
+nucomp_denominator(VALUE self)
+{
+ get_dat1(self);
+ return rb_lcm(f_denominator(dat->real), f_denominator(dat->imag));
+}
+
+/*
+ * call-seq:
+ * cmp.numerator -> numeric
+ *
+ * Returns the numerator.
+ *
+ * 1 2 3+4i <- numerator
+ * - + -i -> ----
+ * 2 3 6 <- denominator
+ *
+ * c = Complex('1/2+2/3i') #=> ((1/2)+(2/3)*i)
+ * n = c.numerator #=> (3+4i)
+ * d = c.denominator #=> 6
+ * n / d #=> ((1/2)+(2/3)*i)
+ * Complex(Rational(n.real, d), Rational(n.imag, d))
+ * #=> ((1/2)+(2/3)*i)
+ * See denominator.
+ */
+static VALUE
+nucomp_numerator(VALUE self)
+{
+ VALUE cd;
+
+ get_dat1(self);
+
+ cd = f_denominator(self);
+ return f_complex_new2(CLASS_OF(self),
+ f_mul(f_numerator(dat->real),
+ f_div(cd, f_denominator(dat->real))),
+ f_mul(f_numerator(dat->imag),
+ f_div(cd, f_denominator(dat->imag))));
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_hash(VALUE self)
+{
+ st_index_t v, h[2];
+ VALUE n;
+
+ get_dat1(self);
+ n = rb_hash(dat->real);
+ h[0] = NUM2LONG(n);
+ n = rb_hash(dat->imag);
+ h[1] = NUM2LONG(n);
+ v = rb_memhash(h, sizeof(h));
+ return LONG2FIX(v);
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_eql_p(VALUE self, VALUE other)
+{
+ if (k_complex_p(other)) {
+ get_dat2(self, other);
+
+ return f_boolcast((CLASS_OF(adat->real) == CLASS_OF(bdat->real)) &&
+ (CLASS_OF(adat->imag) == CLASS_OF(bdat->imag)) &&
+ f_eqeq_p(self, other));
+
+ }
+ return Qfalse;
+}
+
+inline static VALUE
+f_signbit(VALUE x)
+{
+#if defined(HAVE_SIGNBIT) && defined(__GNUC__) && defined(__sun) && \
+ !defined(signbit)
+ extern int signbit(double);
+#endif
+ if (RB_TYPE_P(x, T_FLOAT)) {
+ double f = RFLOAT_VALUE(x);
+ return f_boolcast(!isnan(f) && signbit(f));
+ }
+ return f_negative_p(x);
+}
+
+inline static VALUE
+f_tpositive_p(VALUE x)
+{
+ return f_boolcast(!f_signbit(x));
+}
+
+static VALUE
+f_format(VALUE self, VALUE (*func)(VALUE))
+{
+ VALUE s, impos;
+
+ get_dat1(self);
+
+ impos = f_tpositive_p(dat->imag);
+
+ s = (*func)(dat->real);
+ rb_str_cat2(s, !impos ? "-" : "+");
+
+ rb_str_concat(s, (*func)(f_abs(dat->imag)));
+ if (!rb_isdigit(RSTRING_PTR(s)[RSTRING_LEN(s) - 1]))
+ rb_str_cat2(s, "*");
+ rb_str_cat2(s, "i");
+
+ return s;
+}
+
+/*
+ * call-seq:
+ * cmp.to_s -> string
+ *
+ * Returns the value as a string.
+ *
+ * Complex(2).to_s #=> "2+0i"
+ * Complex('-8/6').to_s #=> "-4/3+0i"
+ * Complex('1/2i').to_s #=> "0+1/2i"
+ * Complex(0, Float::INFINITY).to_s #=> "0+Infinity*i"
+ * Complex(Float::NAN, Float::NAN).to_s #=> "NaN+NaN*i"
+ */
+static VALUE
+nucomp_to_s(VALUE self)
+{
+ return f_format(self, f_to_s);
+}
+
+/*
+ * call-seq:
+ * cmp.inspect -> string
+ *
+ * Returns the value as a string for inspection.
+ *
+ * Complex(2).inspect #=> "(2+0i)"
+ * Complex('-8/6').inspect #=> "((-4/3)+0i)"
+ * Complex('1/2i').inspect #=> "(0+(1/2)*i)"
+ * Complex(0, Float::INFINITY).inspect #=> "(0+Infinity*i)"
+ * Complex(Float::NAN, Float::NAN).inspect #=> "(NaN+NaN*i)"
+ */
+static VALUE
+nucomp_inspect(VALUE self)
+{
+ VALUE s;
+
+ s = rb_usascii_str_new2("(");
+ rb_str_concat(s, f_format(self, f_inspect));
+ rb_str_cat2(s, ")");
+
+ return s;
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_dumper(VALUE self)
+{
+ return self;
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_loader(VALUE self, VALUE a)
+{
+ get_dat1(self);
+
+ RCOMPLEX_SET_REAL(dat, rb_ivar_get(a, id_i_real));
+ RCOMPLEX_SET_IMAG(dat, rb_ivar_get(a, id_i_imag));
+
+ return self;
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_marshal_dump(VALUE self)
+{
+ VALUE a;
+ get_dat1(self);
+
+ a = rb_assoc_new(dat->real, dat->imag);
+ rb_copy_generic_ivar(a, self);
+ return a;
+}
+
+/* :nodoc: */
+static VALUE
+nucomp_marshal_load(VALUE self, VALUE a)
+{
+ Check_Type(a, T_ARRAY);
+ if (RARRAY_LEN(a) != 2)
+ rb_raise(rb_eArgError, "marshaled complex must have an array whose length is 2 but %ld", RARRAY_LEN(a));
+ rb_ivar_set(self, id_i_real, RARRAY_AREF(a, 0));
+ rb_ivar_set(self, id_i_imag, RARRAY_AREF(a, 1));
+ return self;
+}
+
+/* --- */
+
+VALUE
+rb_complex_raw(VALUE x, VALUE y)
+{
+ return nucomp_s_new_internal(rb_cComplex, x, y);
+}
+
+VALUE
+rb_complex_new(VALUE x, VALUE y)
+{
+ return nucomp_s_canonicalize_internal(rb_cComplex, x, y);
+}
+
+VALUE
+rb_complex_polar(VALUE x, VALUE y)
+{
+ return f_complex_polar(rb_cComplex, x, y);
+}
+
+static VALUE nucomp_s_convert(int argc, VALUE *argv, VALUE klass);
+
+VALUE
+rb_Complex(VALUE x, VALUE y)
+{
+ VALUE a[2];
+ a[0] = x;
+ a[1] = y;
+ return nucomp_s_convert(2, a, rb_cComplex);
+}
+
+/*
+ * call-seq:
+ * cmp.to_i -> integer
+ *
+ * Returns the value as an integer if possible (the imaginary part
+ * should be exactly zero).
+ *
+ * Complex(1, 0).to_i #=> 1
+ * Complex(1, 0.0).to_i # RangeError
+ * Complex(1, 2).to_i # RangeError
+ */
+static VALUE
+nucomp_to_i(VALUE self)
+{
+ get_dat1(self);
+
+ if (k_inexact_p(dat->imag) || f_nonzero_p(dat->imag)) {
+ VALUE s = f_to_s(self);
+ rb_raise(rb_eRangeError, "can't convert %s into Integer",
+ StringValuePtr(s));
+ }
+ return f_to_i(dat->real);
+}
+
+/*
+ * call-seq:
+ * cmp.to_f -> float
+ *
+ * Returns the value as a float if possible (the imaginary part should
+ * be exactly zero).
+ *
+ * Complex(1, 0).to_f #=> 1.0
+ * Complex(1, 0.0).to_f # RangeError
+ * Complex(1, 2).to_f # RangeError
+ */
+static VALUE
+nucomp_to_f(VALUE self)
+{
+ get_dat1(self);
+
+ if (k_inexact_p(dat->imag) || f_nonzero_p(dat->imag)) {
+ VALUE s = f_to_s(self);
+ rb_raise(rb_eRangeError, "can't convert %s into Float",
+ StringValuePtr(s));
+ }
+ return f_to_f(dat->real);
+}
+
+/*
+ * call-seq:
+ * cmp.to_r -> rational
+ *
+ * Returns the value as a rational if possible (the imaginary part
+ * should be exactly zero).
+ *
+ * Complex(1, 0).to_r #=> (1/1)
+ * Complex(1, 0.0).to_r # RangeError
+ * Complex(1, 2).to_r # RangeError
+ *
+ * See rationalize.
+ */
+static VALUE
+nucomp_to_r(VALUE self)
+{
+ get_dat1(self);
+
+ if (k_inexact_p(dat->imag) || f_nonzero_p(dat->imag)) {
+ VALUE s = f_to_s(self);
+ rb_raise(rb_eRangeError, "can't convert %s into Rational",
+ StringValuePtr(s));
+ }
+ return f_to_r(dat->real);
+}
+
+/*
+ * call-seq:
+ * cmp.rationalize([eps]) -> rational
+ *
+ * Returns the value as a rational if possible (the imaginary part
+ * should be exactly zero).
+ *
+ * Complex(1.0/3, 0).rationalize #=> (1/3)
+ * Complex(1, 0.0).rationalize # RangeError
+ * Complex(1, 2).rationalize # RangeError
+ *
+ * See to_r.
+ */
+static VALUE
+nucomp_rationalize(int argc, VALUE *argv, VALUE self)
+{
+ get_dat1(self);
+
+ rb_scan_args(argc, argv, "01", NULL);
+
+ if (k_inexact_p(dat->imag) || f_nonzero_p(dat->imag)) {
+ VALUE s = f_to_s(self);
+ rb_raise(rb_eRangeError, "can't convert %s into Rational",
+ StringValuePtr(s));
+ }
+ return rb_funcall2(dat->real, rb_intern("rationalize"), argc, argv);
+}
+
+/*
+ * call-seq:
+ * complex.to_c -> self
+ *
+ * Returns self.
+ *
+ * Complex(2).to_c #=> (2+0i)
+ * Complex(-8, 6).to_c #=> (-8+6i)
+ */
+static VALUE
+nucomp_to_c(VALUE self)
+{
+ return self;
+}
+
+/*
+ * call-seq:
+ * nil.to_c -> (0+0i)
+ *
+ * Returns zero as a complex.
+ */
+static VALUE
+nilclass_to_c(VALUE self)
+{
+ return rb_complex_new1(INT2FIX(0));
+}
+
+/*
+ * call-seq:
+ * num.to_c -> complex
+ *
+ * Returns the value as a complex.
+ */
+static VALUE
+numeric_to_c(VALUE self)
+{
+ return rb_complex_new1(self);
+}
+
+#include <ctype.h>
+
+inline static int
+issign(int c)
+{
+ return (c == '-' || c == '+');
+}
+
+static int
+read_sign(const char **s,
+ char **b)
+{
+ int sign = '?';
+
+ if (issign(**s)) {
+ sign = **b = **s;
+ (*s)++;
+ (*b)++;
+ }
+ return sign;
+}
+
+inline static int
+isdecimal(int c)
+{
+ return isdigit((unsigned char)c);
+}
+
+static int
+read_digits(const char **s, int strict,
+ char **b)
+{
+ int us = 1;
+
+ if (!isdecimal(**s))
+ return 0;
+
+ while (isdecimal(**s) || **s == '_') {
+ if (**s == '_') {
+ if (strict) {
+ if (us)
+ return 0;
+ }
+ us = 1;
+ }
+ else {
+ **b = **s;
+ (*b)++;
+ us = 0;
+ }
+ (*s)++;
+ }
+ if (us)
+ do {
+ (*s)--;
+ } while (**s == '_');
+ return 1;
+}
+
+inline static int
+islettere(int c)
+{
+ return (c == 'e' || c == 'E');
+}
+
+static int
+read_num(const char **s, int strict,
+ char **b)
+{
+ if (**s != '.') {
+ if (!read_digits(s, strict, b))
+ return 0;
+ }
+
+ if (**s == '.') {
+ **b = **s;
+ (*s)++;
+ (*b)++;
+ if (!read_digits(s, strict, b)) {
+ (*b)--;
+ return 0;
+ }
+ }
+
+ if (islettere(**s)) {
+ **b = **s;
+ (*s)++;
+ (*b)++;
+ read_sign(s, b);
+ if (!read_digits(s, strict, b)) {
+ (*b)--;
+ return 0;
+ }
+ }
+ return 1;
+}
+
+inline static int
+read_den(const char **s, int strict,
+ char **b)
+{
+ if (!read_digits(s, strict, b))
+ return 0;
+ return 1;
+}
+
+static int
+read_rat_nos(const char **s, int strict,
+ char **b)
+{
+ if (!read_num(s, strict, b))
+ return 0;
+ if (**s == '/') {
+ **b = **s;
+ (*s)++;
+ (*b)++;
+ if (!read_den(s, strict, b)) {
+ (*b)--;
+ return 0;
+ }
+ }
+ return 1;
+}
+
+static int
+read_rat(const char **s, int strict,
+ char **b)
+{
+ read_sign(s, b);
+ if (!read_rat_nos(s, strict, b))
+ return 0;
+ return 1;
+}
+
+inline static int
+isimagunit(int c)
+{
+ return (c == 'i' || c == 'I' ||
+ c == 'j' || c == 'J');
+}
+
+VALUE rb_cstr_to_rat(const char *, int);
+
+static VALUE
+str2num(char *s)
+{
+ if (strchr(s, '/'))
+ return rb_cstr_to_rat(s, 0);
+ if (strpbrk(s, ".eE"))
+ return DBL2NUM(rb_cstr_to_dbl(s, 0));
+ return rb_cstr_to_inum(s, 10, 0);
+}
+
+static int
+read_comp(const char **s, int strict,
+ VALUE *ret, char **b)
+{
+ char *bb;
+ int sign;
+ VALUE num, num2;
+
+ bb = *b;
+
+ sign = read_sign(s, b);
+
+ if (isimagunit(**s)) {
+ (*s)++;
+ num = INT2FIX((sign == '-') ? -1 : + 1);
+ *ret = rb_complex_new2(ZERO, num);
+ return 1; /* e.g. "i" */
+ }
+
+ if (!read_rat_nos(s, strict, b)) {
+ **b = '\0';
+ num = str2num(bb);
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "-" */
+ }
+ **b = '\0';
+ num = str2num(bb);
+
+ if (isimagunit(**s)) {
+ (*s)++;
+ *ret = rb_complex_new2(ZERO, num);
+ return 1; /* e.g. "3i" */
+ }
+
+ if (**s == '@') {
+ int st;
+
+ (*s)++;
+ bb = *b;
+ st = read_rat(s, strict, b);
+ **b = '\0';
+ if (strlen(bb) < 1 ||
+ !isdecimal(*(bb + strlen(bb) - 1))) {
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "1@-" */
+ }
+ num2 = str2num(bb);
+ *ret = rb_complex_polar(num, num2);
+ if (!st)
+ return 0; /* e.g. "1@2." */
+ else
+ return 1; /* e.g. "1@2" */
+ }
+
+ if (issign(**s)) {
+ bb = *b;
+ sign = read_sign(s, b);
+ if (isimagunit(**s))
+ num2 = INT2FIX((sign == '-') ? -1 : + 1);
+ else {
+ if (!read_rat_nos(s, strict, b)) {
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "1+xi" */
+ }
+ **b = '\0';
+ num2 = str2num(bb);
+ }
+ if (!isimagunit(**s)) {
+ *ret = rb_complex_new2(num, ZERO);
+ return 0; /* e.g. "1+3x" */
+ }
+ (*s)++;
+ *ret = rb_complex_new2(num, num2);
+ return 1; /* e.g. "1+2i" */
+ }
+ /* !(@, - or +) */
+ {
+ *ret = rb_complex_new2(num, ZERO);
+ return 1; /* e.g. "3" */
+ }
+}
+
+inline static void
+skip_ws(const char **s)
+{
+ while (isspace((unsigned char)**s))
+ (*s)++;
+}
+
+static int
+parse_comp(const char *s, int strict,
+ VALUE *num)
+{
+ char *buf, *b;
+
+ buf = ALLOCA_N(char, strlen(s) + 1);
+ b = buf;
+
+ skip_ws(&s);
+ if (!read_comp(&s, strict, num, &b))
+ return 0;
+ skip_ws(&s);
+
+ if (strict)
+ if (*s != '\0')
+ return 0;
+ return 1;
+}
+
+static VALUE
+string_to_c_strict(VALUE self)
+{
+ char *s;
+ VALUE num;
+
+ rb_must_asciicompat(self);
+
+ s = RSTRING_PTR(self);
+
+ if (!s || memchr(s, '\0', RSTRING_LEN(self)))
+ rb_raise(rb_eArgError, "string contains null byte");
+
+ if (s && s[RSTRING_LEN(self)]) {
+ rb_str_modify(self);
+ s = RSTRING_PTR(self);
+ s[RSTRING_LEN(self)] = '\0';
+ }
+
+ if (!s)
+ s = (char *)"";
+
+ if (!parse_comp(s, 1, &num)) {
+ VALUE ins = f_inspect(self);
+ rb_raise(rb_eArgError, "invalid value for convert(): %s",
+ StringValuePtr(ins));
+ }
+
+ return num;
+}
+
+/*
+ * call-seq:
+ * str.to_c -> complex
+ *
+ * Returns a complex which denotes the string form. The parser
+ * ignores leading whitespaces and trailing garbage. Any digit
+ * sequences can be separated by an underscore. Returns zero for null
+ * or garbage string.
+ *
+ * '9'.to_c #=> (9+0i)
+ * '2.5'.to_c #=> (2.5+0i)
+ * '2.5/1'.to_c #=> ((5/2)+0i)
+ * '-3/2'.to_c #=> ((-3/2)+0i)
+ * '-i'.to_c #=> (0-1i)
+ * '45i'.to_c #=> (0+45i)
+ * '3-4i'.to_c #=> (3-4i)
+ * '-4e2-4e-2i'.to_c #=> (-400.0-0.04i)
+ * '-0.0-0.0i'.to_c #=> (-0.0-0.0i)
+ * '1/2+3/4i'.to_c #=> ((1/2)+(3/4)*i)
+ * 'ruby'.to_c #=> (0+0i)
+ *
+ * See Kernel.Complex.
+ */
+static VALUE
+string_to_c(VALUE self)
+{
+ char *s;
+ VALUE num;
+
+ rb_must_asciicompat(self);
+
+ s = RSTRING_PTR(self);
+
+ if (s && s[RSTRING_LEN(self)]) {
+ rb_str_modify(self);
+ s = RSTRING_PTR(self);
+ s[RSTRING_LEN(self)] = '\0';
+ }
+
+ if (!s)
+ s = (char *)"";
+
+ (void)parse_comp(s, 0, &num);
+
+ return num;
+}
+
+static VALUE
+nucomp_s_convert(int argc, VALUE *argv, VALUE klass)
+{
+ VALUE a1, a2, backref;
+
+ rb_scan_args(argc, argv, "11", &a1, &a2);
+
+ if (NIL_P(a1) || (argc == 2 && NIL_P(a2)))
+ rb_raise(rb_eTypeError, "can't convert nil into Complex");
+
+ backref = rb_backref_get();
+ rb_match_busy(backref);
+
+ if (RB_TYPE_P(a1, T_STRING)) {
+ a1 = string_to_c_strict(a1);
+ }
+
+ if (RB_TYPE_P(a2, T_STRING)) {
+ a2 = string_to_c_strict(a2);
+ }
+
+ rb_backref_set(backref);
+
+ if (RB_TYPE_P(a1, T_COMPLEX)) {
+ {
+ get_dat1(a1);
+
+ if (k_exact_zero_p(dat->imag))
+ a1 = dat->real;
+ }
+ }
+
+ if (RB_TYPE_P(a2, T_COMPLEX)) {
+ {
+ get_dat1(a2);
+
+ if (k_exact_zero_p(dat->imag))
+ a2 = dat->real;
+ }
+ }
+
+ if (RB_TYPE_P(a1, T_COMPLEX)) {
+ if (argc == 1 || (k_exact_zero_p(a2)))
+ return a1;
+ }
+
+ if (argc == 1) {
+ if (k_numeric_p(a1) && !f_real_p(a1))
+ return a1;
+ /* should raise exception for consistency */
+ if (!k_numeric_p(a1))
+ return rb_convert_type(a1, T_COMPLEX, "Complex", "to_c");
+ }
+ else {
+ if ((k_numeric_p(a1) && k_numeric_p(a2)) &&
+ (!f_real_p(a1) || !f_real_p(a2)))
+ return f_add(a1,
+ f_mul(a2,
+ f_complex_new_bang2(rb_cComplex, ZERO, ONE)));
+ }
+
+ {
+ VALUE argv2[2];
+ argv2[0] = a1;
+ argv2[1] = a2;
+ return nucomp_s_new(argc, argv2, klass);
+ }
+}
+
+/* --- */
+
+/*
+ * call-seq:
+ * num.real -> self
+ *
+ * Returns self.
+ */
+static VALUE
+numeric_real(VALUE self)
+{
+ return self;
+}
+
+/*
+ * call-seq:
+ * num.imag -> 0
+ * num.imaginary -> 0
+ *
+ * Returns zero.
+ */
+static VALUE
+numeric_imag(VALUE self)
+{
+ return INT2FIX(0);
+}
+
+/*
+ * call-seq:
+ * num.abs2 -> real
+ *
+ * Returns square of self.
+ */
+static VALUE
+numeric_abs2(VALUE self)
+{
+ return f_mul(self, self);
+}
+
+#define id_PI rb_intern("PI")
+
+/*
+ * call-seq:
+ * num.arg -> 0 or float
+ * num.angle -> 0 or float
+ * num.phase -> 0 or float
+ *
+ * Returns 0 if the value is positive, pi otherwise.
+ */
+static VALUE
+numeric_arg(VALUE self)
+{
+ if (f_positive_p(self))
+ return INT2FIX(0);
+ return rb_const_get(rb_mMath, id_PI);
+}
+
+/*
+ * call-seq:
+ * num.rect -> array
+ * num.rectangular -> array
+ *
+ * Returns an array; [num, 0].
+ */
+static VALUE
+numeric_rect(VALUE self)
+{
+ return rb_assoc_new(self, INT2FIX(0));
+}
+
+/*
+ * call-seq:
+ * num.polar -> array
+ *
+ * Returns an array; [num.abs, num.arg].
+ */
+static VALUE
+numeric_polar(VALUE self)
+{
+ return rb_assoc_new(f_abs(self), f_arg(self));
+}
+
+/*
+ * call-seq:
+ * num.conj -> self
+ * num.conjugate -> self
+ *
+ * Returns self.
+ */
+static VALUE
+numeric_conj(VALUE self)
+{
+ return self;
+}
+
+/*
+ * call-seq:
+ * flo.arg -> 0 or float
+ * flo.angle -> 0 or float
+ * flo.phase -> 0 or float
+ *
+ * Returns 0 if the value is positive, pi otherwise.
+ */
+static VALUE
+float_arg(VALUE self)
+{
+ if (isnan(RFLOAT_VALUE(self)))
+ return self;
+ if (f_tpositive_p(self))
+ return INT2FIX(0);
+ return rb_const_get(rb_mMath, id_PI);
+}
+
+/*
+ * A complex number can be represented as a paired real number with
+ * imaginary unit; a+bi. Where a is real part, b is imaginary part
+ * and i is imaginary unit. Real a equals complex a+0i
+ * mathematically.
+ *
+ * In ruby, you can create complex object with Complex, Complex::rect,
+ * Complex::polar or to_c method.
+ *
+ * Complex(1) #=> (1+0i)
+ * Complex(2, 3) #=> (2+3i)
+ * Complex.polar(2, 3) #=> (-1.9799849932008908+0.2822400161197344i)
+ * 3.to_c #=> (3+0i)
+ *
+ * You can also create complex object from floating-point numbers or
+ * strings.
+ *
+ * Complex(0.3) #=> (0.3+0i)
+ * Complex('0.3-0.5i') #=> (0.3-0.5i)
+ * Complex('2/3+3/4i') #=> ((2/3)+(3/4)*i)
+ * Complex('1@2') #=> (-0.4161468365471424+0.9092974268256817i)
+ *
+ * 0.3.to_c #=> (0.3+0i)
+ * '0.3-0.5i'.to_c #=> (0.3-0.5i)
+ * '2/3+3/4i'.to_c #=> ((2/3)+(3/4)*i)
+ * '1@2'.to_c #=> (-0.4161468365471424+0.9092974268256817i)
+ *
+ * A complex object is either an exact or an inexact number.
+ *
+ * Complex(1, 1) / 2 #=> ((1/2)+(1/2)*i)
+ * Complex(1, 1) / 2.0 #=> (0.5+0.5i)
+ */
+void
+Init_Complex(void)
+{
+ VALUE compat;
+#undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
+
+ assert(fprintf(stderr, "assert() is now active\n"));
+
+ id_abs = rb_intern("abs");
+ id_abs2 = rb_intern("abs2");
+ id_arg = rb_intern("arg");
+ id_cmp = rb_intern("<=>");
+ id_conj = rb_intern("conj");
+ id_convert = rb_intern("convert");
+ id_denominator = rb_intern("denominator");
+ id_divmod = rb_intern("divmod");
+ id_eqeq_p = rb_intern("==");
+ id_expt = rb_intern("**");
+ id_fdiv = rb_intern("fdiv");
+ id_floor = rb_intern("floor");
+ id_idiv = rb_intern("div");
+ id_imag = rb_intern("imag");
+ id_inspect = rb_intern("inspect");
+ id_negate = rb_intern("-@");
+ id_numerator = rb_intern("numerator");
+ id_quo = rb_intern("quo");
+ id_real = rb_intern("real");
+ id_real_p = rb_intern("real?");
+ id_to_f = rb_intern("to_f");
+ id_to_i = rb_intern("to_i");
+ id_to_r = rb_intern("to_r");
+ id_to_s = rb_intern("to_s");
+ id_i_real = rb_intern("@real");
+ id_i_imag = rb_intern("@image"); /* @image, not @imag */
+
+ rb_cComplex = rb_define_class("Complex", rb_cNumeric);
+
+ rb_define_alloc_func(rb_cComplex, nucomp_s_alloc);
+ rb_undef_method(CLASS_OF(rb_cComplex), "allocate");
+
+#if 0
+ rb_define_private_method(CLASS_OF(rb_cComplex), "new!", nucomp_s_new_bang, -1);
+ rb_define_private_method(CLASS_OF(rb_cComplex), "new", nucomp_s_new, -1);
+#else
+ rb_undef_method(CLASS_OF(rb_cComplex), "new");
+#endif
+
+ rb_define_singleton_method(rb_cComplex, "rectangular", nucomp_s_new, -1);
+ rb_define_singleton_method(rb_cComplex, "rect", nucomp_s_new, -1);
+ rb_define_singleton_method(rb_cComplex, "polar", nucomp_s_polar, -1);
+
+ rb_define_global_function("Complex", nucomp_f_complex, -1);
+
+ rb_undef_method(rb_cComplex, "%");
+ rb_undef_method(rb_cComplex, "<");
+ rb_undef_method(rb_cComplex, "<=");
+ rb_undef_method(rb_cComplex, "<=>");
+ rb_undef_method(rb_cComplex, ">");
+ rb_undef_method(rb_cComplex, ">=");
+ rb_undef_method(rb_cComplex, "between?");
+ rb_undef_method(rb_cComplex, "div");
+ rb_undef_method(rb_cComplex, "divmod");
+ rb_undef_method(rb_cComplex, "floor");
+ rb_undef_method(rb_cComplex, "ceil");
+ rb_undef_method(rb_cComplex, "modulo");
+ rb_undef_method(rb_cComplex, "remainder");
+ rb_undef_method(rb_cComplex, "round");
+ rb_undef_method(rb_cComplex, "step");
+ rb_undef_method(rb_cComplex, "truncate");
+ rb_undef_method(rb_cComplex, "i");
+
+#if 0 /* NUBY */
+ rb_undef_method(rb_cComplex, "//");
+#endif
+
+ rb_define_method(rb_cComplex, "real", nucomp_real, 0);
+ rb_define_method(rb_cComplex, "imaginary", nucomp_imag, 0);
+ rb_define_method(rb_cComplex, "imag", nucomp_imag, 0);
+
+ rb_define_method(rb_cComplex, "-@", nucomp_negate, 0);
+ rb_define_method(rb_cComplex, "+", nucomp_add, 1);
+ rb_define_method(rb_cComplex, "-", nucomp_sub, 1);
+ rb_define_method(rb_cComplex, "*", nucomp_mul, 1);
+ rb_define_method(rb_cComplex, "/", nucomp_div, 1);
+ rb_define_method(rb_cComplex, "quo", nucomp_quo, 1);
+ rb_define_method(rb_cComplex, "fdiv", nucomp_fdiv, 1);
+ rb_define_method(rb_cComplex, "**", nucomp_expt, 1);
+
+ rb_define_method(rb_cComplex, "==", nucomp_eqeq_p, 1);
+ rb_define_method(rb_cComplex, "coerce", nucomp_coerce, 1);
+
+ rb_define_method(rb_cComplex, "abs", nucomp_abs, 0);
+ rb_define_method(rb_cComplex, "magnitude", nucomp_abs, 0);
+ rb_define_method(rb_cComplex, "abs2", nucomp_abs2, 0);
+ rb_define_method(rb_cComplex, "arg", nucomp_arg, 0);
+ rb_define_method(rb_cComplex, "angle", nucomp_arg, 0);
+ rb_define_method(rb_cComplex, "phase", nucomp_arg, 0);
+ rb_define_method(rb_cComplex, "rectangular", nucomp_rect, 0);
+ rb_define_method(rb_cComplex, "rect", nucomp_rect, 0);
+ rb_define_method(rb_cComplex, "polar", nucomp_polar, 0);
+ rb_define_method(rb_cComplex, "conjugate", nucomp_conj, 0);
+ rb_define_method(rb_cComplex, "conj", nucomp_conj, 0);
+#if 0
+ rb_define_method(rb_cComplex, "~", nucomp_conj, 0); /* gcc */
+#endif
+
+ rb_define_method(rb_cComplex, "real?", nucomp_false, 0);
+#if 0
+ rb_define_method(rb_cComplex, "complex?", nucomp_true, 0);
+ rb_define_method(rb_cComplex, "exact?", nucomp_exact_p, 0);
+ rb_define_method(rb_cComplex, "inexact?", nucomp_inexact_p, 0);
+#endif
+
+ rb_define_method(rb_cComplex, "numerator", nucomp_numerator, 0);
+ rb_define_method(rb_cComplex, "denominator", nucomp_denominator, 0);
+
+ rb_define_method(rb_cComplex, "hash", nucomp_hash, 0);
+ rb_define_method(rb_cComplex, "eql?", nucomp_eql_p, 1);
+
+ rb_define_method(rb_cComplex, "to_s", nucomp_to_s, 0);
+ rb_define_method(rb_cComplex, "inspect", nucomp_inspect, 0);
+
+ rb_define_private_method(rb_cComplex, "marshal_dump", nucomp_marshal_dump, 0);
+ compat = rb_define_class_under(rb_cComplex, "compatible", rb_cObject);
+ rb_define_private_method(compat, "marshal_load", nucomp_marshal_load, 1);
+ rb_marshal_define_compat(rb_cComplex, compat, nucomp_dumper, nucomp_loader);
+
+ /* --- */
+
+ rb_define_method(rb_cComplex, "to_i", nucomp_to_i, 0);
+ rb_define_method(rb_cComplex, "to_f", nucomp_to_f, 0);
+ rb_define_method(rb_cComplex, "to_r", nucomp_to_r, 0);
+ rb_define_method(rb_cComplex, "rationalize", nucomp_rationalize, -1);
+ rb_define_method(rb_cComplex, "to_c", nucomp_to_c, 0);
+ rb_define_method(rb_cNilClass, "to_c", nilclass_to_c, 0);
+ rb_define_method(rb_cNumeric, "to_c", numeric_to_c, 0);
+
+ rb_define_method(rb_cString, "to_c", string_to_c, 0);
+
+ rb_define_private_method(CLASS_OF(rb_cComplex), "convert", nucomp_s_convert, -1);
+
+ /* --- */
+
+ rb_define_method(rb_cNumeric, "real", numeric_real, 0);
+ rb_define_method(rb_cNumeric, "imaginary", numeric_imag, 0);
+ rb_define_method(rb_cNumeric, "imag", numeric_imag, 0);
+ rb_define_method(rb_cNumeric, "abs2", numeric_abs2, 0);
+ rb_define_method(rb_cNumeric, "arg", numeric_arg, 0);
+ rb_define_method(rb_cNumeric, "angle", numeric_arg, 0);
+ rb_define_method(rb_cNumeric, "phase", numeric_arg, 0);
+ rb_define_method(rb_cNumeric, "rectangular", numeric_rect, 0);
+ rb_define_method(rb_cNumeric, "rect", numeric_rect, 0);
+ rb_define_method(rb_cNumeric, "polar", numeric_polar, 0);
+ rb_define_method(rb_cNumeric, "conjugate", numeric_conj, 0);
+ rb_define_method(rb_cNumeric, "conj", numeric_conj, 0);
+
+ rb_define_method(rb_cFloat, "arg", float_arg, 0);
+ rb_define_method(rb_cFloat, "angle", float_arg, 0);
+ rb_define_method(rb_cFloat, "phase", float_arg, 0);
+
+ /*
+ * The imaginary unit.
+ */
+ rb_define_const(rb_cComplex, "I",
+ f_complex_new_bang2(rb_cComplex, ZERO, ONE));
+}
+
+/*
+Local variables:
+c-file-style: "ruby"
+End:
+*/
diff --git a/config.dj b/config.dj
deleted file mode 100644
index 8ad3883380..0000000000
--- a/config.dj
+++ /dev/null
@@ -1,36 +0,0 @@
-#define THREAD 1
-#define HAVE_DIRENT_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_SYS_FILE_H 1
-#define HAVE_PWD_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_SYS_TIMES_H 1
-#define HAVE_SYS_PARAM_H 1
-#define HAVE_SYS_WAIT_H 1
-#define HAVE_STRING_H 1
-#define HAVE_UTIME_H 1
-#define HAVE_MEMORY_H 1
-#define HAVE_ST_BLKSIZE 1
-#define HAVE_ST_RDEV 1
-#define GETGROUPS_T gid_t
-#define RETSIGTYPE void
-#define HAVE_ALLOCA 1
-#define vfork fork
-#define HAVE_FMOD 1
-#define HAVE_RANDOM 1
-#define HAVE_WAITPID 1
-#define HAVE_GETCWD 1
-#define HAVE_TRUNCATE 1
-#define HAVE_CHSIZE 1
-#define HAVE_TIMES 1
-#define HAVE_UTIMES 1
-/* #define HAVE_FCNTL 1 */
-/* #define HAVE_SETITIMER 1 */
-#define HAVE_GETGROUPS 1
-#define HAVE_SIGPROCMASK 1
-#define FILE_COUNT _cnt
-#define DLEXT ".so"
-#define RUBY_LIB ";/usr/local/lib/ruby;."
-#define RUBY_ARCHLIB "/usr/local/lib/ruby/i386-djgpp"
-#define RUBY_PLATFORM "i386-djgpp"
diff --git a/config.guess b/config.guess
deleted file mode 100755
index 91dad5ee6a..0000000000
--- a/config.guess
+++ /dev/null
@@ -1,613 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
-
-# Modified for Human68k by K.Okabe 1997.07.09
-# Last change: 1997.07.09
-
-case "$KSH_VERSION" in
-*X6*)
- echo m68k-sharp-human
- exit 0 ;;
-*)
- ;;
-esac
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 8/24/94.)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- alpha:OSF1:*:*)
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`
- exit 0 ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-cbm-sysv4
- exit 0;;
- amiga:NetBSD:*:*)
- echo m68k-cbm-netbsd${UNAME_RELEASE}
- exit 0 ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
- Pyramid*:OSx*:*:*)
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit 0 ;;
- sun4*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- atari*:NetBSD:*:*)
- echo m68k-atari-netbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3*:NetBSD:*:*)
- echo m68k-sun-netbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:NetBSD:*:*)
- echo m68k-apple-netbsd${UNAME_RELEASE}
- exit 0 ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- mips:*:4*:UMIPS)
- echo mips-mips-riscos4sysv
- exit 0 ;;
- mips:*:5*:RISCos)
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit 0 ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit 0 ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit 0 ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
- -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit 0 ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit 0 ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit 0 ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit 0 ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit 0 ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i[34]86:AIX:*:*)
- echo i386-ibm-aix
- exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- sed 's/^ //' << EOF >dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit 0 ;;
- *:AIX:*:4)
- if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=4.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit 0 ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit 0 ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit 0 ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit 0 ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit 0 ;;
- 9000/[3478]??:HP-UX:*:*)
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/7?? | 9000/8?[679] ) HP_ARCH=hppa1.1 ;;
- 9000/8?? ) HP_ARCH=hppa1.0 ;;
- esac
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
- 3050*:HI-UX:*:*)
- sed 's/^ //' << EOF >dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit 0 ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit 0 ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit 0 ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit 0 ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
- CRAY*X-MP:*:*:*)
- echo xmp-cray-unicos
- exit 0 ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- CRAY*C90:*:*:*)
- echo c90-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- CRAY-2:*:*:*)
- echo cray2-cray-unicos
- exit 0 ;;
- hp3[0-9][05]:NetBSD:*:*)
- echo m68k-hp-netbsd${UNAME_RELEASE}
- exit 0 ;;
- i[34]86:BSD/386:*:* | *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- *:NetBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- *:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- *:*:*BOW*:*)
- echo i386-pc-bow
- exit 0 ;;
- i*:CYGWIN*:*)
- echo i386-pc-cygwin32
- exit 0 ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin32
- exit 0 ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- *:GNU:*:*)
- echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
- *:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux
- exit 0 ;;
-# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
-# are messed up and put the nodename in both sysname and nodename.
- i[34]86:DYNIX/ptx:4*:*)
- echo i386-sequent-sysv4
- exit 0 ;;
- i[34]86:*:4.*:* | i[34]86:SYSTEM_V:4.*:*)
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- i[34]86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit 0 ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit 0 ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit 0 ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit 0 ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
- M680[234]0:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0)
- uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3 && exit 0 ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
- m680[234]0:LynxOS:2.[23]*:*)
- echo m68k-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
- i[34]86:LynxOS:2.[23]*:*)
- echo i386-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- TSUNAMI:LynxOS:2.[23]*:*)
- echo sparc-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- rs6000:LynxOS:2.[23]*:*)
- echo rs6000-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
- X680[02346]0:Human68k:*:*)
- echo m68k-sharp-human
- exit 0 ;;
- R[34]000:*System_V*:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- R[34]???:UNIX_SV:4.?MP:*)
- if [ -x /sbin/uversion ]; then
- UVERSION_RELEASE=`(/sbin/uversion -r) 2>/dev/null` \
- || UVERSION_RELEASE=unknown
- UVERSION_SYSTEM=`(/sbin/uversion -s) 2>/dev/null` \
- || UVERSION_SYSTEM=unknown
- case "${UVERSION_RELEASE}:${UVERSION_SYSTEM}" in
- Release*:EWS4800/*)
- suffix=`echo ${UNAME_RELEASE} | tr '[A-Z]' '[a-z]'`
- suffix=${suffix}r`echo ${UVERSION_RELEASE} | \
- sed -e 's/Release//' -e 's/ Rev.*$//'`
- echo mips-nec-sysv${suffix}
- exit 0 ;;
- esac
- fi;;
- *:machten:*:*)
- echo ${UNAME_MACHINE}-apple-machten
- exit 0 ;;
- powerpc:JCC_BSD+:*:*)
- echo powerpc-jcc-bsd4.4
- exit 0 ;;
- DS/90*:*:*:V20*)
- echo sparc-fujitsu-uxpds
- exit 0 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-cat >dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- printf ("%s-next-nextstep%s\n", __ARCHITECTURE__, version==2 ? "2" : "3");
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-#if !defined (ultrix)
- printf ("vax-dec-bsd\n"); exit (0);
-#else
- printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-#if defined (__human68k__) || defined (HUMAN68K)
- printf ("m68k-sharp-human\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm -f dummy.c dummy.x dummy && exit 0
-rm -f dummy.c dummy.x dummy
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit 0 ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- c34*)
- echo c34-convex-bsd
- exit 0 ;;
- c38*)
- echo c38-convex-bsd
- exit 0 ;;
- c4*)
- echo c4-convex-bsd
- exit 0 ;;
- esac
-fi
-
-#echo '(Unable to guess system type)' 1>&2
-
-exit 1
diff --git a/config.sub b/config.sub
deleted file mode 100755
index 002d408812..0000000000
--- a/config.sub
+++ /dev/null
@@ -1,931 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script, version 1.1.
-# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-if [ x$1 = x ]
-then
- echo Configuration name missing. 1>&2
- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
- echo "or $0 ALIAS" 1>&2
- echo where ALIAS is a recognized configuration type. 1>&2
- exit 1
-fi
-
-# First pass through any local machine types.
-case $1 in
- *local*)
- echo $1
- exit 0
- ;;
- *)
- ;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- linux-gnu*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple)
- os=
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
- os=sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \
- | arme[lb] | pyramid \
- | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \
- | alpha | we32k | ns16k | clipper | i370 | sh \
- | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \
- | pdp11 | mips64el | mips64orion | mips64orionel \
- | sparc | sparclet | sparclite | sparc64)
- basic_machine=$basic_machine-unknown
- ;;
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i[3456]86)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \
- | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
- | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
- | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
- | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
- | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \
- | mips64el-* | mips64orion-* | mips64orionel-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-cbm
- ;;
- amigados)
- basic_machine=m68k-cbm
- os=-amigados
- ;;
- amigaunix | amix)
- basic_machine=m68k-cbm
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- cray2)
- basic_machine=cray2-cray
- os=-unicos
- ;;
- [ctj]90-cray)
- basic_machine=c90-cray
- os=-unicos
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- ews4800)
- basic_machine=mips-nec
- os=-sysv4
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- os=-mvs
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i[3456]86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i[3456]86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i[3456]86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i[3456]86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5)
- basic_machine=i586-intel
- ;;
- pentiumpro | p6)
- basic_machine=i686-intel
- ;;
- pentium-* | p5-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- k5)
- # We don't have specific support for AMD's K5 yet, so just call it a Pentium
- basic_machine=i586-amd
- ;;
- nexen)
- # We don't have specific support for Nexgen yet, so just call it a Pentium
- basic_machine=i586-nexgen
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=rs6000-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- xmp)
- basic_machine=xmp-cray
- os=-unicos
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- mips)
- basic_machine=mips-mips
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sparc)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- human)
- basic_machine=m68k-sharp
- os=-human
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -unixware* | svr4*)
- os=-sysv4
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \
- | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \
- | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -cygwin32* | -pe* | -psos* | -moss* | -proelf* \
- | -linux* | -bow*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -xenix)
- os=-xenix
- ;;
- -uxpds)
- os=-uxpds
- ;;
- -human)
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-semi)
- os=-aout
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-ibm)
- os=-aix
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigados
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -lynxos*)
- vendor=lynx
- ;;
- -aix*)
- vendor=ibm
- ;;
- -hpux*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -vxworks*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
diff --git a/configure.bat b/configure.bat
deleted file mode 100644
index 84e5191bbe..0000000000
--- a/configure.bat
+++ /dev/null
@@ -1,5 +0,0 @@
-@echo off
-sed -f top.sed Makefile.in >Makefile
-sed -f top.sed ext/extmk.rb.in > ext\extmk.rb
-copy ext\Setup.dj ext\Setup
-copy config.dj config.h
diff --git a/configure.in b/configure.in
index 567e58cc3e..5d86e14bd0 100644
--- a/configure.in
+++ b/configure.in
@@ -1,131 +1,2165 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(ruby.h)
+AC_INIT()
+{
+AC_CONFIG_AUX_DIR(tool)
+
+AC_PREREQ(2.67)
+
+AC_DEFUN([RUBY_PREREQ_AC],
+ [m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), [-1],
+ AC_MSG_ERROR([Autoconf version ]$1[ or higher is required]$2))])
+
+AC_DISABLE_OPTION_CHECKING
+
+AC_DEFUN([RUBY_RM_RECURSIVE], [
+m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [2.70]), [-1], [
+# suppress error messages, rm: cannot remove 'conftest.dSYM', from
+# AC_EGREP_CPP with CFLAGS=-g on Darwin.
+#
+# TODO: remove this hack when AC_PREREQ() becomes 2.70 or later.
+AS_CASE([$build_os], [darwin*], [
+rm() {
+ rm_recursive=''
+ for arg do
+ AS_CASE("$arg",
+ [--*], [],
+ [-*r*], [break],
+ [conftest.*], [if test -d "$arg"; then rm_recursive=-r; break; fi],
+ [])
+ done
+ command rm $rm_recursive "[$]@"
+}
+])])])
+
+{ # environment section
+
+AC_ARG_WITH(baseruby,
+ AS_HELP_STRING([--with-baseruby=RUBY], [use RUBY as baseruby; RUBY is the pathname of ruby]),
+ [
+ AS_CASE(["$withval"],[*ruby*],[BASERUBY=$withval],[AC_MSG_ERROR(need ruby)])
+ ],
+ [
+ BASERUBY="ruby"
+ ])
+if test "`RUBYOPT=- $BASERUBY -e 'p 42' 2>/dev/null`" = 42; then
+ if test "`RUBYOPT=- $BASERUBY --disable=gems -e 'p 42' 2>/dev/null`" = 42; then
+ BASERUBY="$BASERUBY --disable=gems"
+ fi
+else
+ BASERUBY="echo executable host ruby is required. use --with-baseruby option.; false"
+fi
+AC_SUBST(BASERUBY)
+
+for conf in config.guess config.sub; do
+ test -f "$srcdir/tool/$conf" && continue
+ $BASERUBY -C "$srcdir/tool" get-config_files $conf
+done
+
+AC_DEFUN([RUBY_MINGW32],
+[AS_CASE(["$host_os"],
+[cygwin*], [
+AC_CACHE_CHECK(for mingw32 environment, rb_cv_mingw32,
+[AC_TRY_CPP([
+#ifndef __MINGW32__
+# error
+#endif
+], rb_cv_mingw32=yes,rb_cv_mingw32=no)
+rm -f conftest*])
+if test "$rb_cv_mingw32" = yes; then
+ target_os="mingw32"
+ : ${ac_tool_prefix:="`expr "$CC" : ['\(.*-\)g\?cc[^/]*$']`"}
+fi
+])
+AS_CASE(["$target_os"], [mingw*msvc], [
+target_os="`echo ${target_os} | sed 's/msvc$//'`"
+])
+AS_CASE(["$target_cpu-$target_os"], [x86_64-mingw*], [
+target_cpu=x64
+])
+])
+
+AC_DEFUN([RUBY_NACL],
+[
+ AS_CASE(["${host_os}"],
+[nacl], [
+ ac_cv_exeext=.nexe
+ host_vendor=chromium
+ ac_cv_host=chromium
+ AC_MSG_CHECKING([wheather \$NACL_SDK_ROOT is set])
+ if test x"${NACL_SDK_ROOT}" = x; then
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([You need to set \$NACL_SDK_ROOT environment variable to build for NativeClient])
+ fi
+ AC_MSG_RESULT([yes])
+
+ nacl_cv_build_variant=glibc
+ AC_ARG_WITH(newlib,
+ AS_HELP_STRING([--with-newlib], [uses newlib version of NativeClient SDK]),
+ [AS_CASE([$withval],
+ [no], [nacl_cv_build_variant=glibc],
+ [yes], [nacl_cv_build_variant=newlib])])
+
+ AS_CASE(["$build_cpu"],
+ [x86_64|i?86], [nacl_cv_cpu_nick=x86], [nacl_cv_cpu_nick=$build_cpu])
+ AS_CASE(["$build_os"],
+ [linux*], [nacl_cv_os_nick=linux],
+ [darwin*], [nacl_cv_os_nick=mac],
+ [cygwin*|mingw*], [nacl_cv_os_nick=win],
+ [nacl_cv_os_nick=$build_os])
+
+ host="$host_cpu-chromium-$host_os-"
+ ac_tool_prefix="$host_cpu-nacl-"
+
+ AC_MSG_CHECKING([NativeClient toolchain])
+ if test -d \
+ "${NACL_SDK_ROOT}/toolchain/${nacl_cv_os_nick}_${nacl_cv_cpu_nick}_${nacl_cv_build_variant}"; then
+ NACL_TOOLCHAIN="${nacl_cv_os_nick}_${nacl_cv_cpu_nick}_${nacl_cv_build_variant}"
+ else
+ AS_CASE(
+ ["${nacl_cv_build_variant}"],
+ [glibc], [if test \
+ -d "${NACL_SDK_ROOT}/toolchain/${nacl_cv_os_nick}_${nacl_cv_cpu_nick}_newlib" \
+ -a -d "${NACL_SDK_ROOT}/toolchain/${nacl_cv_os_nick}_${nacl_cv_cpu_nick}"; then
+ NACL_TOOLCHAIN="${nacl_cv_os_nick}_${nacl_cv_cpu_nick}"
+ fi],
+ [newlib], [ NACL_TOOLCHAIN="${nacl_cv_os_nick}_${nacl_cv_cpu_nick}" ])
+ fi
+ if test ! -e "${NACL_SDK_ROOT}/toolchain/${NACL_TOOLCHAIN}/${ac_tool_prefix}gcc"; then
+ if test "${build_cpu}" = i686 -a -e "${NACL_SDK_ROOT}/toolchain/${NACL_TOOLCHAIN}/nacl-gcc"; then
+ ac_tool_prefix=nacl-
+ fi
+ if test "${build_cpu}" = x86_64 -a -e "${NACL_SDK_ROOT}/toolchain/${NACL_TOOLCHAIN}/nacl-gcc"; then
+ ac_tool_prefix=nacl64-
+ fi
+ fi
+ if test -z "${NACL_TOOLCHAIN}"; then
+ AC_MSG_ERROR([Unrecognized --host and --build combination or NaCl SDK is not installed])
+ fi
+ AC_MSG_RESULT(${NACL_TOOLCHAIN})
+
+ AC_MSG_CHECKING([path to SDK])
+ if ! echo -- "${PATH}" | grep -F "${NACL_SDK_ROOT}/toolchain/${NACL_TOOLCHAIN}/bin" > /dev/null; then
+ PATH="${PATH}:${NACL_SDK_ROOT}/toolchain/${NACL_TOOLCHAIN}/bin"
+ fi
+
+ AC_SUBST(NACL_TOOLCHAIN)
+ AC_SUBST(NACL_SDK_ROOT)
+ AC_SUBST(NACL_SDK_VARIANT, nacl_cv_build_variant)
+])])
+AC_DEFUN([RUBY_NACL_CHECK_PEPPER_TYPES],
+[AS_CASE(["${host_os}"],
+[nacl], [
+ AC_CHECK_TYPES([struct PPB_Core, struct PPB_Messaging, struct PPB_Var,
+ struct PPB_URLLoader, struct PPB_URLRequestInfo,
+ struct PPB_URLResponseInfo, struct PPB_FileRef,
+ struct PPP_Instance])
+])
+])
+
+AC_DEFUN([RUBY_CPPOUTFILE],
+[AC_CACHE_CHECK(whether ${CPP} accepts -o, rb_cv_cppoutfile,
+[save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS='-o conftest-1.i'
+rb_cv_cppoutfile=no
+AC_TRY_CPP([test-for-cppout],
+ [grep test-for-cppout conftest-1.i > /dev/null && rb_cv_cppoutfile=yes])
+CPPFLAGS="$save_CPPFLAGS"
+rm -f conftest*])
+if test "$rb_cv_cppoutfile" = yes; then
+ CPPOUTFILE='-o conftest.i'
+elif test "$rb_cv_cppoutfile" = no; then
+ CPPOUTFILE='> conftest.i'
+elif test -n "$rb_cv_cppoutfile"; then
+ CPPOUTFILE="$rb_cv_cppoutfile"
+fi
+AC_SUBST(CPPOUTFILE)])
+
+AC_DEFUN([RUBY_PROG_GNU_LD],
+[AC_CACHE_CHECK(whether the linker is GNU ld, rb_cv_prog_gnu_ld,
+[if `$CC $CFLAGS $CPPFLAGS $LDFLAGS --print-prog-name=ld 2>&1` -v 2>&1 | grep "GNU ld" > /dev/null; then
+ rb_cv_prog_gnu_ld=yes
+else
+ rb_cv_prog_gnu_ld=no
+fi
+])
+GNU_LD=$rb_cv_prog_gnu_ld
+AC_SUBST(GNU_LD)])
+
+eval `sed -n 's/^#define RUBY_API_VERSION_\([A-Z][A-Z_0-9]*\) \([0-9][0-9]*\)/\1=\2/p' $srcdir/include/ruby/version.h`
+for v in MAJOR MINOR TEENY; do
+ if eval "test \"\$$v\" = ''"; then
+ AC_MSG_ERROR(could not determine $v number from version.h)
+ fi
+done
+AC_SUBST(MAJOR)
+AC_SUBST(MINOR)
+AC_SUBST(TEENY)
+RUBY_PROGRAM_VERSION=`sed -n 's/^#define RUBY_VERSION "\(.*\)"/\1/p' $srcdir/version.h`
+AC_SUBST(RUBY_PROGRAM_VERSION)
+RUBY_RELEASE_DATE=`sed -n 's/^#define RUBY_RELEASE_DATE "\(.*\)"/\1/p' $srcdir/version.h`
+AC_SUBST(RUBY_RELEASE_DATE)
+RUBY_PATCHLEVEL=`sed -n 's/^#define RUBY_PATCHLEVEL //p' $srcdir/version.h`
+AC_DEFINE(CANONICALIZATION_FOR_MATHN)
dnl checks for alternative programs
-AC_ARG_WITH(gcc, [--without-gcc never use gcc], [
- case $withval in
- no) CC=cc
- without_gcc=yes;;
- yes) CC=gcc
- without_gcc=no;;
- *) CC=$withval
- without_gcc=$withval;;
- esac], [without_gcc=no])
+AC_CANONICAL_BUILD
+RUBY_RM_RECURSIVE
+AC_ARG_WITH(gcc,
+ AS_HELP_STRING([--without-gcc], [never use gcc]),
+ [
+ AS_CASE([$withval],
+ [no], [: ${CC=cc}],
+ [yes], [: ${CC=gcc}],
+ [CC=$withval])])
dnl If the user switches compilers, we can't believe the cache
if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
then
- AC_ERROR(cached CC is different -- throw away $cache_file
+ AC_MSG_ERROR(cached CC is different -- throw away $cache_file
(it is also a good idea to do 'make clean' before compiling))
fi
+AS_CASE(["$build_os"],
+ [darwin1*.*], [
+ AS_CASE(["x$CC"],
+ [xgcc-4.2|x/usr/bin/gcc-4.2], [: ${CXX=g++-4.2}],
+ [xgcc|x/usr/bin/gcc], [: ${CXX=g++}],
+ [xcc|x/usr/bin/cc], [: ${CXX=c++}],
+ [xclang|x/usr/bin/clang], [: ${CXX=clang++}])
+ ])
+test -z "$CC" || ac_cv_prog_CC="$CC"
+test -z "$CXX" || ac_cv_prog_CXX="$CXX"
-dnl checks for thread
-rb_thread=yes
-AC_ARG_ENABLE(thread, [--disable-thread never use user-level thread], [
- rb_thread=$enableval
-])
-if test $rb_thread = yes; then
- AC_DEFINE(THREAD)
+if test "$program_prefix" = NONE; then
+ program_prefix=
fi
+RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
+RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
+AC_SUBST(RUBY_BASE_NAME)
+AC_SUBST(RUBYW_BASE_NAME)
+AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}')
-AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+test x"$target_alias" = x &&
+target_os=`echo $target_os | sed 's/linux-gnu$/linux/;s/linux-gnu/linux-/'`
+ac_install_sh='' # unusable for extension libraries.
+AS_CASE($target_os,
+ [darwin*], [os_version_style=major+0],
+ [os_version_style=full])
+AC_ARG_WITH(os-version-style,
+ AS_HELP_STRING([--with-os-version-style=TYPE],
+ [OS version number for target and target_os [[full]]]
+ [(full|teeny|minor+0|minor|major+0|major|none)]),
+ [os_version_style=$withval])
+os_version_style_transform=
+AS_CASE("${os_version_style}",
+ [full|teeny], [],
+ [minor+0], [os_version_style_transform=['s/\([0-9]\.[0-9][0-9]*\)\.[0-9][.0-9]*$/\1.0/']],
+ [minor], [os_version_style_transform=['s/\([0-9]\.[0-9][0-9]*\)\.[0-9][.0-9]*$/\1/']],
+ [major+0], [os_version_style_transform=['s/\([0-9]\)\.[0-9][.0-9]*$/\1.0/']],
+ [major], [os_version_style_transform=['s/\([0-9]\)\.[0-9][.0-9]*$/\1/']],
+ [none], [os_version_style_transform=['s/[0-9]\.[0-9][.0-9]*$//']],
+ [AC_MSG_ERROR(unknown --with-os-version-style: $withval)])
+AS_IF([test -z "$target_alias" -a -n "$os_version_style_transform"],
+ [
+ target=`echo ${target} | sed "$os_version_style_transform"`
+ target_os=`echo ${target_os} | sed "$os_version_style_transform"`
+ ])
-dnl checks for fat-binary
-fat_binary=no
-AC_ARG_ENABLE( fat-binary,
- [--enable-fat-binary build a NeXT Multi Architecture Binary. ],
- [ fat_binary=$enableval ] )
-if test "$fat_binary" = yes ; then
+AC_DEFUN([RUBY_APPEND_OPTION],
+ [# RUBY_APPEND_OPTION($1, $2)
+ AS_CASE([" [$]{$1-} "],
+ [*' $2 '*], [], [' '], [ $1="$2"], [ $1="[$]$1 $2"])])
+AC_DEFUN([RUBY_APPEND_OPTIONS],
+ [{ for rb_opt in $2; do # RUBY_APPEND_OPTIONS($1, $2)
+ AS_CASE([" [$]{$1-} "],
+ [*" [$]{rb_opt} "*], [], [' '], [ $1="[$]{rb_opt}"], [ $1="[$]$1 [$]{rb_opt}"])
+ done; }])
+AC_DEFUN([RUBY_PREPEND_OPTION],
+ [# RUBY_PREPEND_OPTION($1, $2)
+ AS_CASE([" [$]{$1-} "],
+ [*' $2 '*], [], [' '], [ $1="$2"], [ $1="$2 [$]$1"])])
+AC_DEFUN([RUBY_PREPEND_OPTIONS],
+ [{ unset rb_opts; for rb_opt in $2; do # RUBY_PREPEND_OPTIONS($1, $2)
+ AS_CASE([" [$]{rb_opts} [$]{$1-} "],
+ [*" [$]{rb_opt} "*], [], [' '], [ $1="[$]{rb_opt}"], [ rb_opts="[$]{rb_opts}[$]{rb_opt} "])
+ done
+ $1="[$]{rb_opts}[$]$1"; }])
- AC_MSG_CHECKING( target architecture )
+AC_ARG_WITH(arch,
+ AS_HELP_STRING([--with-arch=ARCHS],
+ [build an Apple/NeXT Multi Architecture Binary (MAB);
+ ARCHS is a comma-delimited list of architectures for
+ which to build; if this option is disabled or omitted
+ entirely, then the package will be built only for the
+ target platform]),
+ [target_archs="$withval"], [unset target_archs])
- if test "$TARGET_ARCHS" = "" ; then
- if test `/usr/bin/arch` = "m68k" ; then
- TARGET_ARCHS="m68k i486"
- else
- TARGET_ARCHS="m68k `/usr/bin/arch`"
- fi
- fi
+AC_DEFUN([RUBY_DEFAULT_ARCH], [
+AC_MSG_CHECKING([arch option])
+AS_CASE([$1],
+ [*64], [ARCH_FLAG=-m64],
+ [[i[3-6]86]], [ARCH_FLAG=-m32],
+ [AC_MSG_ERROR(unknown target architecture: $target_archs)]
+ )
+AC_MSG_RESULT([$ARCH_FLAG])
+])
+
+AC_DEFUN([RUBY_UNIVERSAL_ARCH], [
+# RUBY_UNIVERSAL_ARCH begin
+ARCH_FLAG=`expr " $CFLAGS " : ['.* \(-m[0-9][0-9]*\) ']`
+test ${CFLAGS+set} && CFLAGS=`echo "$CFLAGS" | sed -e 's/ *-arch *[^ ]*//g' -e 's/ *-m32//g' -e 's/ *-m64//g'`
+test ${LDFLAGS+set} && LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-arch *[^ ]*//g' -e 's/ *-m32//g' -e 's/ *-m64//g'`
+unset universal_binary universal_archnames
+if test ${target_archs+set}; then
+ AC_MSG_CHECKING([target architectures])
+ target_archs=`echo $target_archs | tr , ' '`
# /usr/lib/arch_tool -archify_list $TARGET_ARCHS
- for archs in $TARGET_ARCHS
+ for archs in $target_archs
do
- ARCH_FLAG="$ARCH_FLAG -arch $archs "
- echo -n " $archs"
+ AS_CASE([",$universal_binary,"],[*",$archs,"*], [],[
+ cpu=`$SHELL "$ac_aux_dir/config.sub" "${archs}-${target_os}" 2>&1` || {
+ AC_MSG_RESULT([failed])
+ AC_MSG_ERROR([$cpu])
+ }
+ cpu=`echo $cpu | sed 's/-.*-.*//'`
+ universal_binary="${universal_binary+$universal_binary,}$cpu"
+ universal_archnames="${universal_archnames} ${archs}=${cpu}"
+ ARCH_FLAG="${ARCH_FLAG+$ARCH_FLAG }-arch $archs"
+ ])
done
- AC_DEFINE( NEXT_FAT_BINARY )
- echo "."
-fi
+ target_archs="$universal_binary"
+ unset universal_binary
+ AS_CASE(["$target_archs"],
+ [*,*], [universal_binary=yes],
+ [unset universal_archnames])
+ AC_MSG_RESULT([$target_archs])
+
+ target=`echo $target | sed "s/^$target_cpu-/-/"`
+ target_alias=`echo $target_alias | sed "s/^$target_cpu-/-/"`
+ if test "${universal_binary-no}" = yes; then
+ AC_SUBST(try_header,try_compile)
+ target_cpu=universal
+ real_cross_compiling=$cross_compiling
+ else
+ if test x"$target_cpu" != x"${target_archs}"; then
+ echo 'int main(){return 0;}' > conftest.c
+ if $CC $CFLAGS $ARCH_FLAG -o conftest conftest.c > /dev/null 2>&1; then
+ rm -fr conftest.*
+ else
+ RUBY_DEFAULT_ARCH("$target_archs")
+ fi
+ fi
+ target_cpu=${target_archs}
+ fi
+ AS_CASE(["$target"], [-*], [ target="$target_cpu${target}"])
+ AS_CASE(["$target_alias"], [-*], [ target_alias="$target_cpu${target_alias}"])
+else
+ if test x"$target_alias" = x; then
+ AS_CASE(["$target_os"],
+ [darwin*], [
+ AC_MSG_CHECKING([for real target cpu])
+ target=`echo $target | sed "s/^$target_cpu-/-/"`
+ target_cpu=`$CC -E - 2>/dev/null <<EOF |
+#ifdef __x86_64__
+"processor-name=x86_64"
+#endif
+#ifdef __i386__
+"processor-name=i386"
+#endif
+#ifdef __ppc__
+"processor-name=powerpc"
+#endif
+#ifdef __ppc64__
+"processor-name=powerpc64"
+#endif
+EOF
+ sed -n 's/^"processor-name=\(.*\)"/\1/p'`
+ target="$target_cpu${target}"
+ AC_MSG_RESULT([$target_cpu])
+ ])
+ fi
+ target_archs="$target_cpu"
+fi
+if test "${target_archs}" != "${rb_cv_target_archs-${target_archs}}"; then
+ AC_MSG_ERROR([target arch(s) has changed from ${rb_cv_target_archs-nothing} to ${target_archs}])
+else
+ rb_cv_target_archs=${target_archs}
+fi
+if test "x${ARCH_FLAG}" != x; then
+ CFLAGS="$CFLAGS ${ARCH_FLAG}"
+ LDFLAGS="${LDFLAGS+$LDFLAGS }${ARCH_FLAG}"
+fi
+# RUBY_UNIVERSAL_ARCH end
+])
+AC_ARG_ENABLE(load-relative,
+ AS_HELP_STRING([--enable-load-relative], [resolve load paths at run time]),
+ [load_relative=$enableval])
AC_ARG_PROGRAM
dnl Checks for programs.
+
+cflagspat=
+test -z "$optflags" ||
+ cflagspat="$cflagspat;s|"`eval echo '"'"${optflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
+test -z "$debugflags" ||
+ cflagspat="$cflagspat;s|"`eval echo '"'"${debugflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
+test -z "warnflags" ||
+ cflagspat="$cflagspat;s|"`eval echo '"'"${warnflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
+if test -z "${CFLAGS+set}"; then
+ cflags=`echo " $cflags " | sed "$cflagspat;s/^ *//;s/ *$//"`
+ orig_cflags="$cflags"
+ cflags="$cflags "'${optflags} ${debugflags} ${warnflags}'
+fi
+if test -z "${CXXFLAGS+set}"; then
+ cxxflags=`echo " $cxxflags " | sed "$cflagspat;s/^ *//;s/ *$//"`
+ orig_cxxflags="$cxxflags"
+ cxxflags="$cxxflags "'${optflags} ${debugflags} ${warnflags}'
+fi
+
+RUBY_NACL
+AS_CASE(["$host_os:$build_os"],
+[darwin*:darwin*], [
+ AC_CHECK_TOOLS(CC, [gcc-4.2 clang gcc cc])
+ # Following Apple deployed clang are broken
+ # clang version 1.0 (http://llvm.org/svn/llvm-project/cfe/tags/Apple/clang-23 exported)
+ # Apple clang version 2.0 (tags/Apple/clang-137) (based on LLVM 2.9svn)
+ # Apple clang version 2.1 (tags/Apple/clang-163.7.1) (based on LLVM 3.0svn)
+ if ! $CC -E -xc - <<SRC >/dev/null; then
+ @%:@if defined __APPLE_CC__ && defined __clang_major__ && __clang_major__ < 3
+ @%:@error premature clang
+ @%:@endif
+SRC
+ AC_MSG_ERROR([clang version 3.0 or later is required])
+ fi
+])
+if test x"${build}" != x"${host}"; then
+ AC_CHECK_TOOL(CC, gcc)
+fi
+
AC_PROG_CC
+AC_PROG_CXX
+RUBY_MINGW32
AC_PROG_GCC_TRADITIONAL
-AC_PROG_YACC
-AC_PROG_RANLIB
-AC_SUBST(AR)
-AC_CHECK_PROGS(AR, ar aal, ar)
-AC_PROG_INSTALL
+AC_SUBST(GCC)
+AS_CASE(["$target_os"],
+[solaris*], [AC_PATH_TOOL([LD], [ld], [/usr/ccs/bin/ld], [/usr/ccs/bin:$PATH])],
+[AC_CHECK_TOOL([LD], [ld], [ld])])
+AC_SUBST(LD)
+if test "$GCC" = yes; then
+ linker_flag=-Wl,
+ : ${optflags=-O3}
+ gcc_major=`echo =__GNUC__ | $CC -E -xc - | sed '/^=/!d;s///'`
+ test -n "$gcc_major" || gcc_major=0
+ # RUBY_APPEND_OPTIONS(XCFLAGS, ["-include ruby/config.h" "-include ruby/missing.h"])
+else
+ linker_flag=
+fi
+
+RUBY_PROG_GNU_LD
+RUBY_CPPOUTFILE
+
+: ${OUTFLAG='-o '}
+: ${COUTFLAG=${OUTFLAG}}
+AC_SUBST(OUTFLAG)
+AC_SUBST(COUTFLAG)
+
+cc_version=
+for option in --version -v -V -qversion; do
+ cc_version_message=`$CC $option 2>&1`
+ cc_version_status=$?
+ AS_CASE($cc_version_status, [0], [:], [continue])
+ AS_CASE($cc_version_message, [*Warning*], [continue])
+ cc_version='$(CC) '$option
+done
+AC_SUBST(CC_VERSION, $cc_version)
+
+RUBY_UNIVERSAL_ARCH
+if test "$target_cpu" != "$host_cpu" -a "$GCC" = yes -a "$cross_compiling" = no -a "$universal_binary" = no; then
+ RUBY_DEFAULT_ARCH("$target_cpu")
+fi
+
+AS_CASE(["$target_cpu-$target_os"], [[i[3-6]86*]], [
+ AC_CACHE_CHECK([for __sync_val_compare_and_swap], [rb_cv_gcc_compiler_cas], [
+ AC_TRY_LINK([unsigned long atomic_var;],
+ [
+ __sync_val_compare_and_swap(&atomic_var, 0, 1);
+ ],
+ [rb_cv_gcc_compiler_cas=yes],
+ [rb_cv_gcc_compiler_cas=no])])
+ if test "$rb_cv_gcc_compiler_cas" = no; then
+ unset rb_cv_gcc_compiler_cas
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -march=i486"
+ AC_CACHE_CHECK([for __sync_val_compare_and_swap with -march=i486], [rb_cv_gcc_compiler_cas], [
+ AC_TRY_LINK([unsigned long atomic_var;],
+ [
+ __sync_val_compare_and_swap(&atomic_var, 0, 1);
+ ],
+ [rb_cv_gcc_compiler_cas=yes
+ ARCH_FLAG="-march=i486"],
+ [rb_cv_gcc_compiler_cas=no])])
+ CFLAGS="$save_CFLAGS"
+ fi])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(AR, ar)
+if test -z "$AR"; then
+ AC_CHECK_PROGS(AR, aal, ar)
+fi
+
+AC_CHECK_TOOL(AS, as)
+ASFLAGS=$ASFLAGS
+AC_SUBST(ASFLAGS)
+
+AS_CASE(["$target_os"],[cygwin*|mingw*], [ac_cv_prog_ac_ct_OBJCOPY=":"])
+
+# BSD's ports and MacPorts prefix GNU binutils with 'g'
+AC_CHECK_TOOLS(OBJDUMP, [objdump gobjdump])
+AC_CHECK_TOOLS(OBJCOPY, [objcopy gobjcopy])
+
+AS_CASE(["$target_os"],
+[cygwin*|mingw*], [
+ AC_CHECK_TOOL(WINDRES, windres)
+ AC_CHECK_TOOL(DLLWRAP, dllwrap)
+ target=`echo $target | sed "s/^$target_cpu-/-/"`
+ target_alias=`echo $target_alias | sed "s/^$target_cpu-/-/"`
+ target_cpu=`echo $target_cpu | sed s/i.86/i386/`
+ AS_CASE(["$target"], [-*], [ target="$target_cpu${target}"])
+ AS_CASE(["$target_alias"], [-*], [ target_alias="$target_cpu${target_alias}"])
+ AS_CASE(["$target_os"],
+ [mingw*], [
+ test "$rb_cv_msvcrt" = "" && unset rb_cv_msvcrt
+ AC_CACHE_CHECK(for mingw32 runtime DLL, rb_cv_msvcrt, [
+ AC_TRY_LINK([@%:@include <stdio.h>],
+ [FILE* volatile f = stdin; return 0;],
+ [rb_cv_msvcrt=`$OBJDUMP -p conftest$ac_exeext |
+ tr A-Z a-z |
+ sed -n '/^[[ ]]*dll name: \(msvc.*\)\.dll$/{s//\1/p;q;}'`],
+ [rb_cv_msvcrt=msvcrt])
+ test "$rb_cv_msvcrt" = "" && rb_cv_msvcrt=msvcrt])
+ RT_VER=`echo "$rb_cv_msvcrt" | tr -cd [0-9]`
+ test "$RT_VER" = "" && RT_VER=60
+ AC_DEFINE_UNQUOTED(RUBY_MSVCRT_VERSION, $RT_VER)
+ ])
+ : ${enable_shared=yes}
+ ],
+[aix*], [AC_CHECK_TOOL(NM, nm, /usr/ccs/bin/nm, /usr/ccs/bin:$PATH)],
+[hiuxmpp*], [AC_DEFINE(__HIUX_MPP__)]) # by TOYODA Eizi <toyoda@npd.kishou.go.jp>
+AC_CHECK_TOOL(NM, nm)
+
+AC_PROG_LN_S
AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+AC_PROG_MKDIR_P
+if test "x$MKDIR_P" = "x -d"; then
+ if test x"$as_mkdir_p" != xfalse; then
+ MKDIR_P='mkdir -p'
+ echo "use 'mkdir -p' as MKDIR_P"
+ else
+ AC_MSG_ERROR([mkdir -p is required])
+ fi
+fi
+MAKEDIRS="$MKDIR_P"
+AC_SUBST(MAKEDIRS)
+
+AC_DEFUN([RUBY_DTRACE_AVAILABLE],
+[AC_CACHE_CHECK(whether dtrace USDT is available, rb_cv_dtrace_available,
+[
+ echo "provider conftest{ probe fire(); };" > conftest_provider.d
+ if $DTRACE -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null; then
+ # DTrace is available on the system
+ rb_cv_dtrace_available=yes
+ else
+ # DTrace is not available while dtrace command exists
+ # for example FreeBSD 8 or FreeBSD 9 without DTrace build option
+ rb_cv_dtrace_available=no
+ fi
+ rm -f conftest.[co] conftest_provider.[dho]
+])
+])
+
+AC_DEFUN([RUBY_DTRACE_POSTPROCESS],
+[AC_CACHE_CHECK(whether $DTRACE needs post processing, rb_cv_prog_dtrace_g,
+[
+ if {
+ echo "provider conftest{ probe fire(); };" > conftest_provider.d &&
+ dtrace -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null &&
+ cat >conftest.c <<_CONF &&
+ @%:@include "conftest_provider.h"
+ int main(void){ CONFTEST_FIRE(); return 0; }
+_CONF
+ $CC $CFLAGS -c -o conftest.o conftest.c &&
+ $DTRACE -G -s conftest_provider.d conftest.o 2>/dev/null
+ }; then
+ rb_cv_prog_dtrace_g=yes
+ else
+ rb_cv_prog_dtrace_g=no
+ fi
+ rm -f conftest.[co] conftest_provider.[dho]
+])
+])
+
+AC_CHECK_PROG([DTRACE], [${ac_tool_prefix}dtrace], [${ac_tool_prefix}dtrace])
+if test "$cross_compiling:$ac_cv_prog_DTRACE" = no: -a -n "$ac_tool_prefix"; then
+ AC_CHECK_PROG([DTRACE], [dtrace], [dtrace])
+fi
+
+AC_CHECK_PROGS(DOT, dot)
+AC_CHECK_PROGS(DOXYGEN, doxygen)
+AS_CASE(["${host_os}"], [nacl], [AC_PATH_PROG(PYTHON, python)])
+
+AC_CHECK_PROG(PKG_CONFIG, pkg-config, [pkg-config], [], [],
+ [`"$as_dir/$ac_word$ac_exec_ext" --print-errors --version > /dev/null 2>&1 || echo "$as_dir/$ac_word$ac_exec_ext"`])
# checks for UNIX variants that set C preprocessor variables
-AC_MINIX
+AC_USE_SYSTEM_EXTENSIONS
+
+AC_SUBST(RM, ['rm -f'])
+AC_SUBST(CP, ['cp'])
+RMDIRS='$(top_srcdir)/tool/rmdirs'
+RMDIR=rmdir
+mkdir "rmdirs_$$_test" "rmdirs_$$_test/a"
+rmdir --ignore-fail-on-non-empty "rmdirs_$$_test" 2>/dev/null &&
+RMDIR='rmdir --ignore-fail-on-non-empty'
+$RMDIR -p "rmdirs_$$_test/a" 2>/dev/null &&
+{ test -d "rmdirs_$$_test" || RMDIRS="$RMDIR -p"; }
+rmdir "rmdirs_$$_test/a" "rmdirs_$$_test" 2>/dev/null
+AC_SUBST(RMDIR)
+AC_SUBST(RMDIRS)
+AC_SUBST(RMALL, ['rm -fr'])
+
+AC_MSG_CHECKING([for cd using physical directory])
+rm -fr conf$$.dir
+mkdir conf$$.dir &&
+(cd conf$$.dir && mkdir src build && cd src &&
+$as_ln_s ../build . > /dev/null 2>&1 && cd build &&
+for chdir in 'cd -P' 'PWD= cd'; do
+ /bin/sh -c "$chdir ../src && echo '$chdir' > cdcmd" 2> /dev/null && break
+done)
+if test -f conf$$.dir/src/cdcmd; then
+ read CHDIR < conf$$.dir/src/cdcmd 2> /dev/null
+else
+ CHDIR=cd
+fi
+rm -fr conf$$.dir
+AC_MSG_RESULT([$CHDIR])
+AC_SUBST(CHDIR)
+
+}
+{ # compiler section
+
+AC_DEFUN([RUBY_WERROR_FLAG], [dnl
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $rb_cv_warnflags"
+if test "${ac_c_werror_flag+set}"; then
+ rb_c_werror_flag="$ac_c_werror_flag"
+else
+ unset rb_c_werror_flag
+fi
+ac_c_werror_flag=yes
+$1
+CFLAGS="$save_CFLAGS"
+save_CFLAGS=
+if test "${rb_c_werror_flag+set}"; then
+ ac_c_werror_flag="$rb_c_werror_flag"
+else
+ unset ac_c_werror_flag
+fi])
+
+RUBY_WERROR_FLAG([
+ AC_MSG_CHECKING([whether CFLAGS is valid])
+ AC_TRY_COMPILE([], [],
+ [AC_MSG_RESULT(yes)],
+ [
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([something wrong with CFLAGS="$CFLAGS"])
+ ]
+ )
+ AC_MSG_CHECKING([whether LDFLAGS is valid])
+ AC_TRY_LINK([], [],
+ [AC_MSG_RESULT(yes)],
+ [
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([something wrong with LDFLAGS="$LDFLAGS"])
+ ]
+ )
+])
+
+AC_DEFUN(RUBY_TRY_CFLAGS, [
+ AC_MSG_CHECKING([whether ]$1[ is accepted as CFLAGS])
+ RUBY_WERROR_FLAG([
+ CFLAGS="[$]CFLAGS $1"
+ AC_TRY_COMPILE([$4], [$5],
+ [$2
+ AC_MSG_RESULT(yes)],
+ [$3
+ AC_MSG_RESULT(no)])
+ ])
+])
+
+AC_DEFUN(RUBY_TRY_LDFLAGS, [
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="[$]LDFLAGS $1"
+ AC_MSG_CHECKING([whether $1 is accepted as LDFLAGS])
+ RUBY_WERROR_FLAG([
+ AC_TRY_LINK([$4], [$5],
+ [$2
+ AC_MSG_RESULT(yes)],
+ [$3
+ AC_MSG_RESULT(no)])
+ ])
+ LDFLAGS="$save_LDFLAGS"
+ save_LDFLAGS=
+])
+
+AS_CASE([$RUBY_PATCHLEVEL], [-*],
+ [particular_werror_flags=yes], [particular_werror_flags=no])
+AC_ARG_ENABLE(werror,
+ AS_HELP_STRING([--disable-werror],
+ [don't make warnings into errors
+ even if a compiler support -Werror feature
+ [[disabled by default unless development version]]]),
+ [particular_werror_flags=$enableval])
+
+rb_cv_warnflags="$warnflags"
+if test "$GCC:${warnflags+set}:no" = yes::no; then
+ if test $gcc_major -ge 4; then
+ extra_warning=-Werror=extra-tokens
+ else
+ extra_warning=
+ fi
+ for wflag in -Wno-unused-parameter -Wno-parentheses -Wno-long-long \
+ -Wno-missing-field-initializers \
+ -Wunused-variable \
+ -Werror=pointer-arith \
+ -Werror=write-strings \
+ -Werror=declaration-after-statement \
+ -Werror=shorten-64-to-32 \
+ -Werror=implicit-function-declaration \
+ -Werror=division-by-zero \
+ $extra_warning \
+ ; do
+ if test "$particular_werror_flags" != yes; then
+ wflag=`echo x$wflag | sed 's/^x-Werror=/-W/;s/^x//'`
+ fi
+ ok=no
+ RUBY_TRY_CFLAGS($wflag, [
+ RUBY_APPEND_OPTIONS(warnflags, $wflag)
+ ok=yes
+ ])
+ AS_CASE([$ok:$wflag], [no:-Werror=*], [
+ wflag=`echo x$wflag | sed 's/^x-Werror=/-W/'`
+ RUBY_TRY_CFLAGS($wflag, [
+ RUBY_APPEND_OPTIONS(warnflags, $wflag)
+ particular_werror_flags=no
+ ])
+ ])
+ done
+ AS_CASE([" $warnflags "],[*" -Wno-missing-field-initializers "*], [wflag="-Wall -Wextra"],
+ [wflag=-Wall])
+ RUBY_TRY_CFLAGS($wflag, [warnflags="$wflag${warnflags+ $warnflags}"])
+ # Disable warnflags while conftest. -Werror=* flags might make bad OS capability guess.
+ rb_cv_warnflags="$warnflags"
+ warnflags=
+fi
+if test "$GCC" = yes; then
+ # -D_FORTIFY_SOURCE
+ # When defined _FORTIFY_SOURCE, glibc enables some additional sanity
+ # argument check. The performance drop is very little and Ubuntu enables
+ # _FORTIFY_SOURCE=2 by default. So, let's support it for protecting us from
+ # a mistake of silly C extensions.
+ RUBY_TRY_CFLAGS(-D_FORTIFY_SOURCE=2, [RUBY_APPEND_OPTION(XCFLAGS, -D_FORTIFY_SOURCE=2)])
+
+ # -fstack-protector
+ AS_CASE(["$target_os"],
+ [mingw*|nacl|haiku], [
+ stack_protector=no
+ ])
+ if test -z "${stack_protector+set}"; then
+ RUBY_TRY_CFLAGS(-fstack-protector, [stack_protector=yes], [stack_protector=no])
+ if test "x$stack_protector" = xyes; then
+ RUBY_TRY_LDFLAGS(-fstack-protector, [], [stack_protector=broken])
+ fi
+ fi
+ if test "x$stack_protector" = xyes; then
+ RUBY_APPEND_OPTION(XCFLAGS, -fstack-protector)
+ RUBY_APPEND_OPTION(XLDFLAGS, -fstack-protector)
+ RUBY_APPEND_OPTION(LDFLAGS, -fstack-protector)
+ fi
+
+ AS_CASE(["$target_os"],[mingw*], [
+ # On Windows platforms, system provided headers are VC++
+ # optimized. That is, C++ habits are often contaminated into
+ # various headers. Most frequent situation is the use of //
+ # comments. We bypass ANSI C mode for them. Otherwise
+ # extension libs cannot include those headers.
+ ],
+ [cygwin*|darwin*|netbsd*], [
+ # need lgamma_r(), finite()
+ ],
+ [haiku], [
+ # Haiku R1/alpha3 uses gcc-4.4.4 which can not handle anonymous union
+ # with ANSI standard flags. Anonumous union is required to compile
+ # socket extension where <net/if.h> uses anonymous union.
+ ],
+ [
+ # ANSI (no XCFLAGS because this is C only)
+ RUBY_TRY_CFLAGS(-ansi -std=iso9899:199409, [
+ RUBY_APPEND_OPTION(warnflags, -ansi -std=iso9899:199409)
+ RUBY_APPEND_OPTION(strict_warnflags, -ansi -std=iso9899:199409)
+ ])
+ ])
+
+ # suppress annoying -Wstrict-overflow warnings
+ RUBY_TRY_CFLAGS(-fno-strict-overflow, [RUBY_APPEND_OPTION(XCFLAGS, -fno-strict-overflow)])
+
+ test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-ggdb3, [debugflags=-ggdb3])}
+ test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-ggdb, [debugflags=-ggdb])}
+ test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-g3, [debugflags=-g3])}
+fi
+test $ac_cv_prog_cc_g = yes && : ${debugflags=-g}
+
+if test "$GCC" = ""; then
+ AS_CASE(["$target_os"],[aix*],[warnflags="$warnflags -qinfo=por" rb_cv_warnflags="$rb_cv_warnflags -qinfo=por"])
+fi
+if test "$GCC" = yes; then
+ if test "$gcc_major" -ge 4; then
+ RUBY_TRY_CFLAGS(-fvisibility=hidden, [visibility_option=yes], [visibility_option=no])
+ fi
+ AC_SUBST(WERRORFLAG, "-Werror")
+ if test "$visibility_option" = yes; then
+ RUBY_APPEND_OPTION(XCFLAGS, -fvisibility=hidden)
+ AC_DEFINE(RUBY_SYMBOL_EXPORT_BEGIN, [_Pragma("GCC visibility push(default)")])
+ AC_DEFINE(RUBY_SYMBOL_EXPORT_END, [_Pragma("GCC visibility pop")])
+ else
+ RUBY_TRY_LDFLAGS([-Wl,-unexported_symbol,_Init_*], [visibility_option=ld], [visibility_option=no])
+ fi
+ test "$visibility_option" = no -o "$host_os" = nacl || OBJCOPY=:
+fi
+
+if test "$GCC" = yes; then
+ # optflags
+
+ AS_CASE(["$target_os"], [mingw*], [
+ RUBY_TRY_CFLAGS(-fno-omit-frame-pointer, [optflags="${optflags+$optflags }-fno-omit-frame-pointer"])
+ ])
+
+ # disable fast-math
+ for oflag in -fno-fast-math; do
+ RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(optflags, $oflag)])
+ done
+fi
+
+test -z "${ac_env_CFLAGS_set}" -a -n "${cflags+set}" && eval CFLAGS="\"$cflags $ARCH_FLAG\""
+test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cxxflags $ARCH_FLAG\""
+
+}
+{ # header and library section
+
+AC_ARG_WITH(winnt-ver,
+ AS_HELP_STRING([--with-winnt-ver=0xXXXX], [target Windows NT version (default to 0x0501)]),
+ [with_winnt_ver="$withval"], [with_winnt_ver="0x0501"])
+AS_CASE(["$target_os"],
+[mingw*], [
+ RUBY_APPEND_OPTION(CPPFLAGS, -D_WIN32_WINNT=$with_winnt_ver)
+])
+
+AS_CASE(["$target_os"],
+[freebsd*], [
+ AC_CACHE_CHECK([whether pthread should be enabled by default],
+ rb_cv_enable_pthread_default,
+ [AC_TRY_CPP([
+#include <osreldate.h>
+#if __FreeBSD_version < 502102
+#error pthread should be disabled on this platform
+#endif
+ ],
+ rb_cv_enable_pthread_default=yes,
+ rb_cv_enable_pthread_default=no)])
+ enable_pthread=$rb_cv_enable_pthread_default
+ ],
+[mingw*], [
+ enable_pthread=no
+ ],
+[
+ enable_pthread=yes
+ ])
+
+AC_ARG_ENABLE(pthread,
+ AS_HELP_STRING([--enable-pthread], [obsolete, and ignored]))
dnl Checks for libraries.
-case "$host_os" in
-nextstep*) ;;
-human*) ;;
-*) LIBS="-lm $LIBS";;
-esac
-AC_CHECK_LIB(crypt, crypt)
+AS_CASE(["$target_os"],[*bsd*|dragonfly*],[],[ac_cv_func_daemon=no])
+
+POSTLINK=:
+AC_SUBST(POSTLINK)
+AS_CASE(["$target_os"],
+[nextstep*], [ ],
+[openstep*], [ ],
+[rhapsody*], [ ],
+[darwin*], [ RUBY_PREPEND_OPTION(LIBS, -lobjc)
+ RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT)
+ AC_MSG_CHECKING(whether Mac OS X 10.5 or later)
+ AC_TRY_CPP([#include <AvailabilityMacros.h>
+ #if MAC_OS_X_VERSION_MAX_ALLOWED <= 1040
+ #error pre OS X 10.4
+ [!<===== pre OS X 10.4 =====>]
+ #endif
+ ],
+ [macosx_10_5=yes], [macosx_10_5=no])
+ AC_MSG_RESULT($macosx_10_5)
+ if test $macosx_10_5 = yes; then
+ ac_cv_header_ucontext_h=no
+ else
+ AC_DEFINE(BROKEN_SETREUID, 1)
+ AC_DEFINE(BROKEN_SETREGID, 1)
+ fi
+ ac_cv_type_getgroups=gid_t # getgroups() on Rosetta fills garbage
+ ac_cv_lib_crypt_crypt=no
+ ac_cv_func_fdatasync=no # Mac OS X wrongly reports it has fdatasync()
+ AC_CACHE_CHECK(for broken crypt with 8bit chars, rb_cv_broken_crypt,
+ [AC_TRY_RUN([
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+int
+main()
+{
+ int i;
+ for (i = 0; i < 128*128; i++) {
+ char salt[2], buf[256], *s;
+ salt[0] = 0x80 | (i & 0x7f);
+ salt[1] = 0x80 | (i >> 7);
+ strcpy(buf, crypt("", salt));
+ if (strcmp(buf, s = crypt("", salt))) {
+#if 0
+ printf("%.2x%.2x: %s -> %s\n", (unsigned char)salt[0], (unsigned char)salt[1],
+ buf+2, s+2);
+#endif
+ return 1;
+ }
+ }
+ return 0;
+}
+],
+ rb_cv_broken_crypt=no,
+ rb_cv_broken_crypt=yes,
+ rb_cv_broken_crypt=yes)])
+ if test "$rb_cv_broken_crypt" = yes; then
+ AC_DEFINE(BROKEN_CRYPT, 1)
+ fi
+ AC_CHECK_PROGS(codesign, codesign)
+ if test -n "$codesign"; then
+ POSTLINK="test -z '\$(RUBY_CODESIGN)' || $codesign -s '\$(RUBY_CODESIGN)' -f \$@"
+ LINK_SO="$LINK_SO
+\$(POSTLINK)"
+ fi
+ AC_CHECK_HEADERS(crt_externs.h, [], [], [
+ #include <crt_externs.h>
+ ])
+ ],
+[hpux*], [ LIBS="-lm $LIBS"
+ ac_cv_c_inline=no],
+[beos*|haiku*], [
+ ac_cv_func_link=no
+ ac_cv_func_sched_yield=no
+ ac_cv_func_pthread_attr_setinheritsched=no
+ AS_CASE(["$target_os"],
+ [beos*], [ ac_cv_header_net_socket_h=yes],
+ [haiku*], [ ac_cv_func_shutdown=no])
+ LIBS="$LIBS" # m lib is include in root under BeOS/Haiku
+ ],
+[cygwin*], [ ac_cv_header_langinfo_h=yes
+ AC_CHECK_FUNCS(cygwin_conv_path)
+ AC_LIBOBJ([langinfo])
+ ],
+[mingw*], [ LIBS="-lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi $LIBS"
+ ac_cv_header_a_out_h=no
+ ac_cv_header_pwd_h=no
+ ac_cv_header_utime_h=no
+ ac_cv_header_sys_ioctl_h=no
+ ac_cv_header_sys_param_h=no
+ ac_cv_header_sys_resource_h=no
+ ac_cv_header_sys_select_h=no
+ ac_cv_header_sys_time_h=no
+ ac_cv_header_sys_times_h=no
+ ac_cv_header_sys_socket_h=no
+ ac_cv_func_times=yes
+ ac_cv_func_waitpid=yes
+ ac_cv_func_fsync=yes
+ ac_cv_func_seekdir=yes
+ ac_cv_func_telldir=yes
+ ac_cv_func_isinf=yes
+ ac_cv_func_isnan=yes
+ ac_cv_func_finite=yes
+ ac_cv_func_link=yes
+ ac_cv_lib_crypt_crypt=no
+ ac_cv_func_getpgrp_void=no
+ ac_cv_func_memcmp_working=yes
+ ac_cv_lib_dl_dlopen=no
+ rb_cv_binary_elf=no
+ rb_cv_negative_time_t=no
+ ac_cv_func_fcntl=yes
+ ac_cv_func_flock=yes
+ ac_cv_func_gmtime_r=yes
+ rb_cv_large_fd_select=yes
+ ac_cv_type_struct_timeval=yes
+ ac_cv_func_clock_gettime=yes
+ ac_cv_func_clock_getres=yes
+ ac_cv_func_malloc_usable_size=no
+ AC_CHECK_TYPE([NET_LUID], [], [],
+ [@%:@include <windows.h>
+ @%:@include <iphlpapi.h>])
+ if test x"$ac_cv_type_NET_LUID" = xyes; then
+ AC_DEFINE(HAVE_TYPE_NET_LUID, 1)
+ fi
+ AC_LIBOBJ([langinfo])
+ ],
+[os2-emx*], [ LIBS="-lm $LIBS"
+ ac_cv_lib_dir_opendir=no],
+[bsdi*], [ LIBS="-lm $LIBS"
+ AC_DEFINE(BROKEN_SETREUID, 1)
+ AC_DEFINE(BROKEN_SETREGID, 1)
+ ac_cv_sizeof_rlim_t=8],
+[freebsd*], [ LIBS="-lm $LIBS"
+ ac_cv_func_getpeername=no
+ ac_cv_func_getsockname=no
+ ac_cv_func_shutdown=no
+ ac_cv_func_close=no
+ ],
+[dragonfly*], [ LIBS="-lm $LIBS"
+ # isinf() and isnan() are macros on DragonFly.
+ ac_cv_func_isinf=yes
+ ac_cv_func_isnan=yes
+ ],
+[nacl], [
+ LIBS="-lm $LIBS"
+ if test "${nacl_cv_build_variant}" = "newlib"; then
+ RUBY_APPEND_OPTION(CPPFLAGS, -DNACL_NEWLIB)
+ RUBY_APPEND_OPTION(LIBS, '-lnosys')
+ else
+ RUBY_APPEND_OPTION(XCFLAGS, -fPIC)
+ fi
+ ac_cv_func_shutdown=no
+ ac_cv_func_fcntl=no
+ ],
+[ LIBS="-lm $LIBS"])
+
+AC_CHECK_LIB(crypt, crypt) # glibc (GNU/Linux, GNU/Hurd, GNU/kFreeBSD)
AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
+AC_CHECK_LIB(socket, shutdown) # SunOS/Solaris
dnl Checks for header files.
AC_HEADER_DIRENT
-AC_HEADER_STDC
-AC_CHECK_HEADERS(stdlib.h unistd.h limits.h sys/file.h sys/ioctl.h pwd.h \
- sys/select.h sys/time.h sys/times.h sys/param.h sys/wait.h\
- syscall.h a.out.h string.h utime.h memory.h)
+dnl AC_HEADER_STDC has been checked in AC_USE_SYSTEM_EXTENSIONS
+AC_HEADER_STDBOOL
+AC_HEADER_SYS_WAIT
+AC_CHECK_HEADERS( \
+ limits.h \
+ sys/file.h \
+ sys/ioctl.h \
+ sys/syscall.h \
+ fcntl.h \
+ sys/fcntl.h \
+ sys/select.h \
+ sys/time.h \
+ sys/times.h \
+ sys/param.h \
+ syscall.h \
+ pwd.h \
+ grp.h \
+ a.out.h \
+ utime.h \
+ direct.h \
+ sys/resource.h \
+ sys/mkdev.h \
+ sys/utime.h \
+ float.h \
+ ieeefp.h \
+ ucontext.h \
+ intrinsics.h \
+ langinfo.h \
+ locale.h \
+ sys/sendfile.h \
+ time.h \
+ net/socket.h \
+ sys/socket.h \
+ process.h \
+ sys/prctl.h \
+ atomic.h \
+ malloc.h \
+ malloc_np.h \
+ setjmpex.h
+)
+
+AC_ARG_WITH([gmp],
+ [AS_HELP_STRING([--without-gmp],
+ [disable GNU GMP to accelerate Bignum operations])],
+ [],
+ [with_gmp=yes])
+AS_IF([test "x$with_gmp" != xno],
+ [AC_CHECK_HEADERS(gmp.h)
+ AS_IF([test "x$ac_cv_header_gmp_h" != xno],
+ AC_CHECK_LIB([gmp], [__gmpz_init]))
+ with_gmp="$ac_cv_lib_gmp___gmpz_init"
+ AS_IF([test -z "$with_gmp"], [with_gmp=no])])
+
+dnl check for large file stuff
+mv confdefs.h confdefs1.h
+: > confdefs.h
+AC_SYS_LARGEFILE
+mv confdefs.h largefile.h
+mv confdefs1.h confdefs.h
+cat largefile.h >> confdefs.h
+
+AS_CASE(["$target_os"],[mingw*], [ac_cv_type_off_t=yes;ac_cv_sizeof_off_t=8])
+
+AC_C_BIGENDIAN
+AC_C_CONST
+AC_C_CHAR_UNSIGNED
+AC_C_INLINE
+AC_C_VOLATILE
+
+AS_CASE(":$ac_cv_c_const:$ac_cv_c_volatile:",
+ [*:no:*], [AC_MSG_ERROR(ANSI C-conforming const and volatile are mandatory)])
+
+AC_CHECK_TYPES([long long, off_t])
+
+AC_CACHE_CHECK([char bit], [rb_cv_char_bit],
+ [test "$universal_binary" = yes && cross_compiling=yes
+ AC_COMPUTE_INT([rb_cv_char_bit], [CHAR_BIT],
+ [AC_INCLUDES_DEFAULT([@%:@include <limits.h>])], [rb_cv_char_bit=8])
+ test "$universal_binary" = yes && cross_compiling=$real_cross_compiling])
+
+dnl RUBY_CHECK_SIZEOF [typename], [maybe same size types], [macros], [include]
+AC_DEFUN([RUBY_CHECK_SIZEOF],
+[m4_bmatch([$1], [\.], [], [if test "$universal_binary" = yes; then])
+AC_CACHE_CHECK([size of $1], [AS_TR_SH([ac_cv_sizeof_$1])], [
+ unset AS_TR_SH(ac_cv_sizeof_$1)
+ rbcv_var="
+typedef m4_bpatsubst([$1], [\..*]) ac__type_sizeof_;
+static ac__type_sizeof_ *rbcv_ptr;
+@%:@define AS_TR_CPP(SIZEOF_$1) sizeof((*rbcv_ptr)[]m4_bmatch([$1], [\.], .m4_bpatsubst([$1], [^[^.]*\.])))
+"
+ m4_ifval([$2], [test -z "${AS_TR_SH(ac_cv_sizeof_$1)+set}" && {
+ for t in $2; do
+ AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY(AC_INCLUDES_DEFAULT([$4]
+ [$rbcv_var]),
+ [AS_TR_CPP(SIZEOF_$1) == sizeof($t)])], [
+ AS_TR_SH(ac_cv_sizeof_$1)=AS_TR_CPP([SIZEOF_]$t)
+ break])
+ done
+ }])
+ unset cond
+ m4_ifval([$3], [test -z "${AS_TR_SH(ac_cv_sizeof_$1)+set}" && {
+ for s in 32 64 128; do
+ for t in $3; do
+ cond="${cond}
+@%:@${cond+el}if defined(__${t}${s}__) || defined(__${t}${s}) || defined(_${t}${s}) || defined(${t}${s})"
+ hdr="AC_INCLUDES_DEFAULT([$4
+@%:@if defined(__${t}${s}__) || defined(__${t}${s}) || defined(_${t}${s}) || defined(${t}${s})
+@%:@ define AS_TR_CPP(HAVE_$1) 1
+@%:@else
+@%:@ define AS_TR_CPP(HAVE_$1) 0
+@%:@endif])"
+ AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([$hdr], [!AS_TR_CPP(HAVE_$1)])], [continue])
+ AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([$hdr]
+ [$rbcv_var],
+ [AS_TR_CPP(HAVE_$1) == (AS_TR_CPP(SIZEOF_$1) == ([$[s / rb_cv_char_bit]]))])],
+ [AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}${s}"])
+ done
+ done
+ }])
+ m4_ifval([$2][$3],
+ [test "${AS_TR_SH(ac_cv_sizeof_$1)@%:@SIZEOF_}" = "${AS_TR_SH(ac_cv_sizeof_$1)}" && ]){
+ test "$universal_binary" = yes && cross_compiling=yes
+ AC_COMPUTE_INT([t], AS_TR_CPP(SIZEOF_$1), [AC_INCLUDES_DEFAULT([$4])]
+[${cond+$cond
+@%:@else}
+$rbcv_var
+${cond+@%:@endif}
+@%:@ifndef AS_TR_CPP(SIZEOF_$1)
+@%:@define AS_TR_CPP(SIZEOF_$1) 0
+@%:@endif], [t=0])
+ test "$universal_binary" = yes && cross_compiling=$real_cross_compiling
+ if test ${t-0} != 0; then
+ AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}"
+ fi
+ }
+ : ${AS_TR_SH(ac_cv_sizeof_$1)=0}
+])
+{
+ unset cond
+ for t in ${AS_TR_SH(ac_cv_sizeof_$1)-}; do
+ AS_CASE(["$t"],
+ [[[0-9]*|SIZEOF_*]], [
+ ${cond+echo "@%:@else"}
+ echo "[@%:@define ]AS_TR_CPP(SIZEOF_$1) [$t]"
+ break
+ ],
+ [
+ s=`expr $t : ['.*[^0-9]\([0-9][0-9]*\)$']`
+ echo "@%:@${cond+el}if defined(__${t}__) || defined(__${t}) || defined(_${t}) || defined($t)"
+ echo "@%:@define AS_TR_CPP(SIZEOF_$1) [$[s / rb_cv_char_bit]]"
+ cond=1
+ ])
+ done
+ ${cond+echo "@%:@endif"}
+} >> confdefs.h
+m4_bmatch([$1], [\.], [], [else
+AC_CHECK_SIZEOF([$1], 0, [$4])
+fi])
+])
+
+RUBY_CHECK_SIZEOF(int, [], [ILP])
+RUBY_CHECK_SIZEOF(short)
+RUBY_CHECK_SIZEOF(long, [int], [ILP LP])
+RUBY_CHECK_SIZEOF(long long)
+RUBY_CHECK_SIZEOF(__int64)
+RUBY_CHECK_SIZEOF(__int128)
+RUBY_CHECK_SIZEOF(off_t)
+RUBY_CHECK_SIZEOF(void*, [int long "long long"], [ILP LP LLP])
+RUBY_CHECK_SIZEOF(float)
+RUBY_CHECK_SIZEOF(double)
+RUBY_CHECK_SIZEOF(time_t, [long "long long"], [], [@%:@include <time.h>])
+RUBY_CHECK_SIZEOF(clock_t, [], [], [@%:@include <time.h>])
+
+AC_DEFUN([RUBY_CHECK_PRINTF_PREFIX], [
+AC_CACHE_CHECK([for printf prefix for $1], [rb_cv_pri_prefix_]AS_TR_SH($1),[
+ [rb_cv_pri_prefix_]AS_TR_SH($1)=[NONE]
+ RUBY_WERROR_FLAG(for pri in $2; do
+ AC_TRY_COMPILE(
+ [@%:@include <stdio.h>
+ @%:@include <stddef.h>
+ @%:@ifdef __GNUC__
+ @%:@define PRINTF_ARGS(decl, string_index, first_to_check) \
+ decl __attribute__((format(printf, string_index, first_to_check)))
+ @%:@else
+ @%:@define PRINTF_ARGS(decl, string_index, first_to_check) decl
+ @%:@endif
+ PRINTF_ARGS(void test_sprintf(const char*, ...), 1, 2);],
+ [printf("%]${pri}[d", (]$1[)42);
+ test_sprintf("%]${pri}[d", (]$1[)42);],
+ [rb_cv_pri_prefix_]AS_TR_SH($1)[=[$pri]; break])
+ done)])
+if test "[$rb_cv_pri_prefix_]AS_TR_SH($1)" != NONE; then
+ AC_DEFINE_UNQUOTED([PRI_]m4_ifval($3,$3,AS_TR_CPP(m4_bpatsubst([$1],[_t$])))[_PREFIX],
+ "[$rb_cv_pri_prefix_]AS_TR_SH($1)")
+fi
+])
+
+if test "x$ac_cv_type_long_long" = xyes; then
+ RUBY_CHECK_PRINTF_PREFIX(long long, ll I64, LL)
+elif test "x$ac_cv_type___int64" = xyes; then
+ RUBY_CHECK_PRINTF_PREFIX(__int64, ll I64, LL)
+fi
+
+dnl RUBY_CHECK_SIZEOF [typename] [if-signed] [if-unsigned] [included]
+AC_DEFUN([RUBY_CHECK_SIGNEDNESS], [dnl
+ AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])], [($1)-1 > 0])],
+ [$3], [$2])])
+
+dnl RUBY_REPLACE_TYPE [typename] [default type] [macro type] [included]
+AC_DEFUN([RUBY_REPLACE_TYPE], [dnl
+ AC_CHECK_TYPE([$1],
+ [n="patsubst([$1],["],[\\"])"],
+ [n="patsubst([$2],["],[\\"])"],
+ [$4])
+ AC_CACHE_CHECK([for convertible type of [$1]], rb_cv_[$1]_convertible, [
+ u= t=
+ AS_CASE(["$n "],
+ [*" signed "*], [ ],
+ [*" unsigned "*], [
+ u=U],
+ [RUBY_CHECK_SIGNEDNESS($n, [], [u=U], [$4])])
+ if test x"$t" = x; then
+ for t in "long long" long int short; do
+ test -n "$u" && t="unsigned $t"
+ AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])]
+ [typedef $n rbcv_conftest_target_type;
+ typedef $t rbcv_conftest_replace_type;
+ extern rbcv_conftest_target_type rbcv_conftest_var;
+ extern rbcv_conftest_replace_type rbcv_conftest_var;
+ extern rbcv_conftest_target_type rbcv_conftest_func(void);
+ extern rbcv_conftest_replace_type rbcv_conftest_func(void);
+ ], [sizeof(rbcv_conftest_target_type) == sizeof(rbcv_conftest_replace_type)])],
+ [n="$t"; break])
+ done
+ fi
+ AS_CASE([" $n "],
+ [*" long long "*], [
+ t=LL],
+ [*" long "*], [
+ t=LONG],
+ [
+ t=INT])
+ rb_cv_[$1]_convertible=${u}${t}])
+ test "${AS_TR_SH(ac_cv_type_[$1])}" = "yes" && n="$1"
+ AS_CASE("${rb_cv_[$1]_convertible}", [U*], [u=+1], [u=-1])
+ AC_DEFINE_UNQUOTED(rb_[$1], $n)
+ AC_DEFINE_UNQUOTED([SIGNEDNESS_OF_]AS_TR_CPP($1), $u)
+ AC_DEFINE_UNQUOTED([$3]2NUM[(v)], [${rb_cv_[$1]_convertible}2NUM(v)])
+ AC_DEFINE_UNQUOTED(NUM2[$3][(v)], [NUM2${rb_cv_[$1]_convertible}(v)])
+ AC_DEFINE_UNQUOTED(PRI_[$3]_PREFIX,
+ [PRI_`echo ${rb_cv_[$1]_convertible} | sed ['s/^U//']`_PREFIX])
+])
+RUBY_REPLACE_TYPE(pid_t, int, PIDT)
+RUBY_REPLACE_TYPE(uid_t, int, UIDT)
+RUBY_REPLACE_TYPE(gid_t, int, GIDT)
+RUBY_REPLACE_TYPE(time_t, [], TIMET, [@%:@include <time.h>])
+RUBY_REPLACE_TYPE(dev_t, [int long "long long"], DEVT)
+RUBY_REPLACE_TYPE(mode_t, ["unsigned int" long], MODET, [@%:@include <sys/stat.h>])
+RUBY_REPLACE_TYPE(rlim_t, [int long "long long"], RLIM, [
+@%:@ifdef HAVE_SYS_TYPES_H
+@%:@include <sys/types.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TYPES_H
+@%:@include <sys/time.h>
+@%:@endif
+@%:@include <sys/resource.h>
+])
+RUBY_REPLACE_TYPE(off_t, [], OFFT)
+RUBY_REPLACE_TYPE(clockid_t, [], CLOCKID)
+
+AC_CACHE_CHECK(for prototypes, rb_cv_have_prototypes,
+ [AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],
+ rb_cv_have_prototypes=yes,
+ rb_cv_have_prototypes=no)])
+if test "$rb_cv_have_prototypes" = yes; then
+ AC_DEFINE(HAVE_PROTOTYPES)
+fi
+
+AC_CACHE_CHECK(token paste string, rb_cv_tokenpaste,
+ [AC_TRY_COMPILE([@%:@define paste(a,b) a@%:@@%:@b],
+ [int xy = 1; return paste(x,y);],
+ rb_cv_tokenpaste=ansi,
+ rb_cv_tokenpaste=knr)])
+if test "$rb_cv_tokenpaste" = ansi; then
+ AC_DEFINE(TOKEN_PASTE(x,y),[x@%:@@%:@y])
+else
+ AC_DEFINE(TOKEN_PASTE(x,y),[x/**/y])
+fi
+
+AC_CACHE_CHECK(stringization, rb_cv_stringization, [
+ rb_cv_stringization=no
+ for string in "#expr" '"expr"'; do
+ AC_COMPILE_IFELSE([
+ AC_LANG_BOOL_COMPILE_TRY([
+#define STRINGIZE0(expr) $string
+#define STRINGIZE(expr) STRINGIZE0(expr)
+#undef real_test_for_stringization
+#define test_for_stringization -.real_test_for_stringization.-
+const char stringized[[]] = STRINGIZE(test_for_stringization);
+], [sizeof(stringized) == 32])],
+ [rb_cv_stringization="$string"; break],
+ [rb_cv_stringization=no])
+ done]
+)
+AC_DEFINE(STRINGIZE(expr),STRINGIZE0(expr))
+if test x"$rb_cv_stringization" != xno -a "$rb_cv_stringization" != "#expr"; then
+ AC_DEFINE_UNQUOTED(STRINGIZE0(expr),$rb_cv_stringization)
+ AC_DEFINE(OLD_FASHIONED_STRINGIZATION,1)
+fi
+
+AC_CACHE_CHECK([string literal concatenation],
+ rb_cv_string_literal_concatenation, [
+ AC_COMPILE_IFELSE([
+ AC_LANG_BOOL_COMPILE_TRY([
+const char concatenated_literal[[]] = "literals" "to"
+ "be" "concatenated.";
+], [sizeof(concatenated_literal) == 26])],
+ [rb_cv_string_literal_concatenation=yes],
+ [rb_cv_string_literal_concatenation=no])]
+)
+if test "$rb_cv_string_literal_concatenation" = no; then
+ AC_DEFINE(NO_STRING_LITERAL_CONCATENATION,1)
+fi
+
+AC_CACHE_CHECK(for variable length prototypes and stdarg.h, rb_cv_stdarg,
+ [AC_TRY_COMPILE([
+#include <stdarg.h>
+int foo(int x, ...) {
+ va_list va;
+ va_start(va, x);
+ va_arg(va, int);
+ va_arg(va, char *);
+ va_arg(va, double);
+ return 0;
+}
+], [return foo(10, "", 3.14);],
+ rb_cv_stdarg=yes,
+ rb_cv_stdarg=no)])
+if test "$rb_cv_stdarg" = yes; then
+ AC_DEFINE(HAVE_STDARG_PROTOTYPES)
+fi
+
+AC_CACHE_CHECK(for variable length macro, rb_cv_va_args_macro,
+ [AC_TRY_COMPILE([
+int foo(int x, ...);
+@%:@define FOO(a, ...) foo(a, @%:@@%:@__VA_ARGS__)
+], [FOO(1);FOO(1,2);FOO(1,2,3);],
+ rb_cv_va_args_macro=yes,
+ rb_cv_va_args_macro=no)])
+if test "$rb_cv_va_args_macro" = yes; then
+ AC_DEFINE(HAVE_VA_ARGS_MACRO)
+fi
+
+AC_DEFUN([RUBY_DEFINE_IF], [dnl
+ m4_ifval([$1], [AS_LITERAL_IF([$1], [], [test "X$1" = X || ])cat <<EOH >> confdefs.h
+@%:@if $1
+EOH
+])dnl
+AC_DEFINE_UNQUOTED($2, $3)dnl
+ m4_ifval([$1], [AS_LITERAL_IF([$1], [], [test "X$1" = X || ])cat <<EOH >> confdefs.h
+@%:@endif /* $1 */
+EOH
+])dnl
+])dnl
+
+dnl RUBY_FUNC_ATTRIBUTE(attrib, macroname, cachevar, condition)
+AC_DEFUN([RUBY_FUNC_ATTRIBUTE], [dnl
+m4_ifval([$2], dnl
+ [AS_VAR_PUSHDEF([attrib],[$2])], dnl
+ [AS_VAR_PUSHDEF([attrib],[FUNC_]AS_TR_CPP($1))] dnl
+)dnl
+m4_ifval([$3], dnl
+ [AS_VAR_PUSHDEF([rbcv],[$3])], dnl
+ [AS_VAR_PUSHDEF([rbcv],[rb_cv_func_][$1])]dnl
+)dnl
+m4_ifval([$4], [rbcv_cond=["$4"]; test "$rbcv_cond" || unset rbcv_cond])
+AC_CACHE_CHECK(for [$1] function attribute, rbcv,
+[rbcv=x
+RUBY_WERROR_FLAG([
+for mac in "__attribute__ (($1)) x" "x __attribute__ (($1))" "__declspec($1) x" x; do
+ m4_ifval([$4],mac="$mac"${rbcv_cond+" /* only if $rbcv_cond */"})
+ AC_TRY_COMPILE(
+ m4_ifval([$4],${rbcv_cond+[@%:@if ]$rbcv_cond})
+[@%:@define ]attrib[(x) $mac]
+m4_ifval([$4],${rbcv_cond+[@%:@else]}
+${rbcv_cond+[@%:@define ]attrib[(x) x]}
+${rbcv_cond+[@%:@endif]})
+ attrib[(void conftest_attribute_check(void));], [],
+ [rbcv="$mac"; break])
+done
+])])
+if test "$rbcv" != x; then
+ RUBY_DEFINE_IF(m4_ifval([$4],[${rbcv_cond}]), attrib[(x)], $rbcv)
+fi
+m4_ifval([$4], [unset rbcv_cond])dnl
+AS_VAR_POPDEF([attrib])dnl
+AS_VAR_POPDEF([rbcv])dnl
+])
+
+RUBY_FUNC_ATTRIBUTE(noreturn, NORETURN)
+RUBY_FUNC_ATTRIBUTE(deprecated, DEPRECATED)
+RUBY_FUNC_ATTRIBUTE(noinline, NOINLINE)
+
+if_i386=${universal_binary+[defined __i386__]}
+RUBY_FUNC_ATTRIBUTE(stdcall, [], [], ${if_i386})
+RUBY_FUNC_ATTRIBUTE(cdecl, [], [], ${if_i386})
+RUBY_FUNC_ATTRIBUTE(fastcall, [], [], ${if_i386})
+
+if test "$GCC" = yes; then
+ AC_CACHE_CHECK([for function alias], [rb_cv_gcc_function_alias],
+ [rb_cv_gcc_function_alias=no
+ for a in alias weak,alias; do
+ AC_TRY_LINK([void foo(void) {}
+ void bar(void) __attribute__(($a("foo")));], [bar()],
+ [rb_cv_gcc_function_alias=$a; break])
+ done])
+ if test "$rb_cv_gcc_function_alias" != no; then
+ AC_DEFINE(HAVE_ATTRIBUTE_FUNCTION_ALIAS)
+ AC_DEFINE_UNQUOTED([RUBY_ALIAS_FUNCTION_TYPE(type, prot, name, args)],
+ [type prot __attribute__(($rb_cv_gcc_function_alias(@%:@name)));])
+ AC_DEFINE_UNQUOTED([RUBY_ALIAS_FUNCTION_VOID(prot, name, args)],
+ [RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)])
+ fi
+ AC_CACHE_CHECK([for atomic builtins], [rb_cv_gcc_atomic_builtins], [
+ AC_TRY_LINK([unsigned char atomic_var;],
+ [
+ __sync_lock_test_and_set(&atomic_var, 0);
+ __sync_lock_test_and_set(&atomic_var, 1);
+ __sync_fetch_and_add(&atomic_var, 1);
+ __sync_fetch_and_sub(&atomic_var, 1);
+ ],
+ [rb_cv_gcc_atomic_builtins=yes],
+ [rb_cv_gcc_atomic_builtins=no])])
+ if test "$rb_cv_gcc_atomic_builtins" = yes; then
+ AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS)
+ fi
+
+ AC_CACHE_CHECK(for __builtin_unreachable, rb_cv_func___builtin_unreachable,
+ [RUBY_WERROR_FLAG(
+ [AC_TRY_LINK([@%:@include <stdlib.h>],
+ [exit(0); __builtin_unreachable();],
+ [rb_cv_func___builtin_unreachable=yes],
+ [rb_cv_func___builtin_unreachable=no])
+ ])
+ ])
+ if test "$rb_cv_func___builtin_unreachable" = yes; then
+ AC_DEFINE_UNQUOTED(UNREACHABLE, [__builtin_unreachable()])
+ fi
+fi
+
+AC_CACHE_CHECK(for exported function attribute, rb_cv_func_exported, [
+rb_cv_func_exported=no
+RUBY_WERROR_FLAG([
+for mac in '__attribute__ ((visibility("default")))' '__declspec(dllexport)'; do
+ AC_TRY_COMPILE([@%:@define RUBY_FUNC_EXPORTED $mac extern
+ RUBY_FUNC_EXPORTED void conftest_attribute_check(void);], [],
+ [rb_cv_func_exported="$mac"; break])
+done
+])])
+if test "$rb_cv_func_exported" != no; then
+ AC_DEFINE_UNQUOTED(RUBY_FUNC_EXPORTED, [$rb_cv_func_exported extern])
+fi
+
+RUBY_APPEND_OPTION(XCFLAGS, -DRUBY_EXPORT)
+
+AC_CACHE_CHECK(for function name string predefined identifier,
+ rb_cv_function_name_string,
+ [rb_cv_function_name_string=no
+ RUBY_WERROR_FLAG([
+ for func in __func__ __FUNCTION__; do
+ AC_TRY_LINK([@%:@include <stdio.h>],
+ [puts($func);],
+ [rb_cv_function_name_string=$func
+ break])
+ done
+ ])]
+)
+if test "$rb_cv_function_name_string" != no; then
+ AC_DEFINE_UNQUOTED(RUBY_FUNCTION_NAME_STRING, [$rb_cv_function_name_string])
+fi
+
+dnl Check whether we need to define sys_nerr locally
+AC_CHECK_DECLS([sys_nerr], [], [], [$ac_includes_default
+@%:@include <errno.h>])
+
+AC_CHECK_DECLS([getenv])
+
+AS_CASE(["$target_cpu"],
+[alpha*|sh4|sh4el|sh4eb], [AS_CASE(["$target_os"::"$GCC"],
+ [*::yes], # gcc
+ [CFLAGS="-mieee $CFLAGS"],
+ [osf*], # ccc
+ [CFLAGS="-ieee $CFLAGS"],
+ )],
+[sparc*], [AC_LIBOBJ([sparc])])
+
+ac_cv_header_net_socket_h=${ac_cv_header_net_socket_h=no}
+if test "$ac_cv_header_net_socket_h" = yes; then
+ ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=no}
+else
+ ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=yes}
+fi
+
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_TYPE_UID_T
AC_TYPE_SIZE_T
+RUBY_CHECK_SIGNEDNESS(size_t, [AC_MSG_ERROR(size_t is signed)], [],
+ [@%:@include <sys/types.h>])
+RUBY_CHECK_SIZEOF(size_t, [int long void*], [], [@%:@include <sys/types.h>])
+RUBY_CHECK_SIZEOF(ptrdiff_t, size_t, [], [@%:@include <stddef.h>])
+RUBY_CHECK_PRINTF_PREFIX(size_t, z)
+RUBY_CHECK_PRINTF_PREFIX(ptrdiff_t, t)
AC_STRUCT_ST_BLKSIZE
-save_LIBOJBS="$LIBOBJS"
AC_STRUCT_ST_BLOCKS
-LIBOBJS="$save_LIBOBJS"
AC_STRUCT_ST_RDEV
+RUBY_CHECK_SIZEOF([struct stat.st_size], [int long "long long"], [], [@%:@include <sys/stat.h>])
+if test "$ac_cv_member_struct_stat_st_blocks" = yes; then
+ RUBY_CHECK_SIZEOF([struct stat.st_blocks], [int long "long long"], [], [@%:@include <sys/stat.h>])
+fi
+AC_CHECK_MEMBERS([struct stat.st_atim])
+AC_CHECK_MEMBERS([struct stat.st_atimespec])
+AC_CHECK_MEMBERS([struct stat.st_atimensec])
+AC_CHECK_MEMBERS([struct stat.st_mtim])
+AC_CHECK_MEMBERS([struct stat.st_mtimespec])
+AC_CHECK_MEMBERS([struct stat.st_mtimensec])
+AC_CHECK_MEMBERS([struct stat.st_ctim])
+AC_CHECK_MEMBERS([struct stat.st_ctimespec])
+AC_CHECK_MEMBERS([struct stat.st_ctimensec])
+
+AC_CHECK_TYPES([struct timeval], [], [], [@%:@ifdef HAVE_TIME_H
+@%:@include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@include <sys/time.h>
+@%:@endif])
+
+if test "${ac_cv_type_struct_timeval}" = yes; then
+ RUBY_CHECK_SIZEOF([struct timeval.tv_sec], [time_t long "long long"], [],
+ [@%:@ifdef HAVE_TIME_H
+@%:@include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@include <sys/time.h>
+@%:@endif])
+ AS_CASE(${ac_cv_sizeof_struct_timeval_tv_sec},
+ [SIZEOF_INT], [t=int],
+ [SIZEOF_LONG], [t=long],
+ [SIZEOF_LONG_LONG], [t=LONG_LONG],
+ [t=])
+ if test "${t}" != ""; then
+ AC_DEFINE_UNQUOTED(TYPEOF_TIMEVAL_TV_SEC, [$t])
+ fi
+fi
-AC_CHECK_SIZEOF(short)
-AC_CHECK_SIZEOF(int)
-AC_CHECK_SIZEOF(long)
-AC_CHECK_SIZEOF(void*)
+AC_CHECK_TYPES([struct timespec], [], [], [@%:@ifdef HAVE_TIME_H
+@%:@include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@include <sys/time.h>
+@%:@endif])
+
+AC_CHECK_TYPES([struct timezone], [], [], [@%:@ifdef HAVE_TIME_H
+@%:@ include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@ include <sys/time.h>
+@%:@endif])
+
+AC_CHECK_TYPES([clockid_t], [], [], [@%:@ifdef HAVE_TIME_H
+@%:@ include <time.h>
+@%:@endif
+@%:@ifdef HAVE_SYS_TIME_H
+@%:@ include <sys/time.h>
+@%:@endif])
+
+AC_CACHE_VAL([rb_cv_large_fd_select],
+ [AC_CHECK_TYPE(fd_mask, [rb_cv_large_fd_select=yes], [rb_cv_large_fd_select=no])])
+if test "$rb_cv_large_fd_select" = yes; then
+ AC_DEFINE(HAVE_RB_FD_INIT, 1)
+fi
+
+dnl RUBY_DEFINT TYPENAME, SIZE, [SIGNED-OR-UNSIGNED], [INCLUDES = DEFAULT-INCLUDES]
+AC_DEFUN([RUBY_DEFINT], [dnl
+AC_CACHE_CHECK([for $1], [rb_cv_type_$1],
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$4])
+typedef $1 t; int s = sizeof(t) == 42;])],
+ [rb_cv_type_$1=yes],
+ [AS_CASE([m4_bmatch([$2], [^[1-9][0-9]*$], $2, [$ac_cv_sizeof_]AS_TR_SH($2))],
+ ["1"], [ rb_cv_type_$1="m4_if([$3], [], [signed ], [$3 ])char"],
+ ["$ac_cv_sizeof_short"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])short"],
+ ["$ac_cv_sizeof_int"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])int"],
+ ["$ac_cv_sizeof_long"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])long"],
+ ["$ac_cv_sizeof_long_long"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])long long"],
+ ["$ac_cv_sizeof___int64"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])__int64"],
+ ["$ac_cv_sizeof___int128"], [ rb_cv_type_$1="m4_if([$3], [], [], [$3 ])__int128"],
+ [ rb_cv_type_$1=no])])])
+if test "${rb_cv_type_$1}" != no; then
+ AC_DEFINE([HAVE_]AS_TR_CPP($1), 1)
+ if test "${rb_cv_type_$1}" = yes; then
+ m4_bmatch([$2], [^[1-9][0-9]*$], [AC_CHECK_SIZEOF([$1], 0, [AC_INCLUDES_DEFAULT([$4])])],
+ [RUBY_CHECK_SIZEOF([$1], [$2], [], [AC_INCLUDES_DEFAULT([$4])])])
+ else
+ AC_DEFINE_UNQUOTED($1, [$rb_cv_type_$1])
+ AC_DEFINE_UNQUOTED([SIZEOF_]AS_TR_CPP($1), [SIZEOF_]AS_TR_CPP([$rb_cv_type_$1]))
+ fi
+fi
+])
+
+RUBY_DEFINT(int8_t, 1)
+RUBY_DEFINT(uint8_t, 1, unsigned)
+RUBY_DEFINT(int16_t, 2)
+RUBY_DEFINT(uint16_t, 2, unsigned)
+RUBY_DEFINT(int32_t, 4)
+RUBY_DEFINT(uint32_t, 4, unsigned)
+RUBY_DEFINT(int64_t, 8)
+RUBY_DEFINT(uint64_t, 8, unsigned)
+RUBY_DEFINT(int128_t, 16)
+RUBY_DEFINT(uint128_t, 16, unsigned)
+RUBY_DEFINT(intptr_t, void*)
+RUBY_DEFINT(uintptr_t, void*, unsigned)
+RUBY_DEFINT(ssize_t, size_t, [], [@%:@include <sys/types.h>]) dnl may differ from int, so not use AC_TYPE_SSIZE_T.
+
+RUBY_NACL_CHECK_PEPPER_TYPES
+
+AC_CACHE_CHECK(for stack end address, rb_cv_stack_end_address,
+[rb_cv_stack_end_address=no
+ AC_TRY_LINK(
+ [extern void *__libc_stack_end;],
+ [if (!__libc_stack_end) return 1;],
+ [rb_cv_stack_end_address="__libc_stack_end"])
+])
+if test $rb_cv_stack_end_address != no; then
+ AC_DEFINE_UNQUOTED(STACK_END_ADDRESS, $rb_cv_stack_end_address)
+fi
+
+# posix_memalign(memptr, alignment, size) implemented for OpenBSD 4.8 doesn't work if alignment > MALLOC_PAGESIZE.
+# [ruby-core:42158] https://bugs.ruby-lang.org/issues/5901
+# OpenBSD 5.2 fixed the problem. (src/lib/libc/stdlib/malloc.c:1.142)
+# MirOS #10semel has the problem but fixed in the repository. (src/lib/libc/stdlib/malloc.c:1.9)
+AS_CASE(["$target_os"],
+[openbsd*|mirbsd*], [
+ AC_CACHE_CHECK(for heap align log on openbsd, rb_cv_page_size_log,
+ [rb_cv_page_size_log=no
+ for page_log in 12 13; do
+ AC_TRY_RUN([
+#include <math.h>
+#include <unistd.h>
+
+int
+main() {
+ if ((int)log2((double)sysconf(_SC_PAGESIZE)) != $page_log) return 1;
+ return 0;
+}
+ ],
+ rb_cv_page_size_log="$page_log"; break)
+ done])
+ if test $rb_cv_page_size_log != no; then
+ AC_DEFINE_UNQUOTED(HEAP_ALIGN_LOG, $rb_cv_page_size_log)
+ else
+ AC_DEFINE_UNQUOTED(HEAP_ALIGN_LOG, 12)
+ fi
+])
dnl Checks for library functions.
AC_TYPE_GETGROUPS
AC_TYPE_SIGNAL
-AC_FUNC_ALLOCA
-AC_FUNC_VFORK
-AC_REPLACE_FUNCS(dup2 setenv memmove mkdir strcasecmp strerror strftime\
- strstr strtoul strdup crypt flock)
-AC_CHECK_FUNCS(fmod killpg random wait4 waitpid syscall getcwd\
- truncate chsize times utimes fcntl lockf setitimer\
- setruid seteuid setreuid setrgid setegid setregid\
- setpgrp2 getpgid getgroups getpriority\
- dlopen sigprocmask sigaction _setjmp)
-if test "$ac_cv_func_strftime" = no; then
- AC_STRUCT_TIMEZONE
- AC_TRY_LINK([],
- [extern int daylight; int i = daylight;], AC_DEFINE(HAVE_DAYLIGHT))
+AS_CASE(["${target_cpu}-${target_os}:${target_archs}"],
+[powerpc-darwin*], [
+ AC_LIBSOURCES(alloca.c)
+ AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}])
+ AC_DEFINE(C_ALLOCA)
+ AC_DEFINE_UNQUOTED(alloca, alloca)
+ ],
+[universal-darwin*:*ppc*], [
+ AC_LIBSOURCES(alloca.c)
+ AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}])
+ RUBY_DEFINE_IF([defined __powerpc__], C_ALLOCA, 1)
+ RUBY_DEFINE_IF([defined __powerpc__], alloca, alloca)
+ ],
+[
+ AC_FUNC_ALLOCA
+ ])
+if test "x$ALLOCA" = "x"; then
+ AC_CACHE_CHECK([for dynamic size alloca], rb_cv_dynamic_alloca, [
+ for chk in ok __chkstk; do
+ AC_TRY_LINK([
+ @%:@ifdef HAVE_ALLOCA_H
+ @%:@include <alloca.h>
+ @%:@endif
+ void $chk() {}
+ int dynamic_alloca_test;
+ int dynamic_alloca_result;],
+ [dynamic_alloca_result = alloca(dynamic_alloca_test) != 0;],
+ [rb_cv_dynamic_alloca=$chk; break])
+ done])
+ if test "x$rb_cv_dynamic_alloca" = "x__chkstk"; then
+ AC_DEFINE_UNQUOTED(RUBY_ALLOCA_CHKSTK, _$rb_cv_dynamic_alloca)
+ AS_CASE("$target_cpu",
+ [x64|x86_64], [
+ AC_SUBST([ALLOCA], [\${LIBOBJDIR}x86_64-chkstk.${ac_objext}])
+ ],)
+ fi
+fi
+AC_FUNC_MEMCMP
+
+# http://sources.redhat.com/ml/libc-hacker/2005-08/msg00008.html
+# Debian GNU/Linux Etch's libc6.1 2.3.6.ds1-13etch5 has this problem.
+# Debian GNU/Linux Lenny's libc6.1 2.7-10 has no problem.
+AC_CACHE_CHECK(for broken erfc of glibc-2.3.6 on IA64, rb_cv_broken_glibc_ia64_erfc,
+ [AC_TRY_RUN([
+#include <math.h>
+int
+main()
+{
+ erfc(10000.0);
+ return 0;
+}
+],
+ rb_cv_broken_glibc_ia64_erfc=no,
+ rb_cv_broken_glibc_ia64_erfc=yes,
+ rb_cv_broken_glibc_ia64_erfc=no)])
+AS_CASE([$rb_cv_broken_glibc_ia64_erfc],[yes],[ac_cv_func_erf=no])
+
+AS_CASE(["$target_os"],[freebsd*],[
+ AC_DEFINE(BROKEN_CLOSE)
+ AC_REPLACE_FUNCS(close)
+ ])
+AC_REPLACE_FUNCS(dup2 memmove strerror\
+ strchr strstr crypt flock\
+ isnan finite isinf hypot acosh erf tgamma lgamma_r cbrt \
+ strlcpy strlcat ffs setproctitle)
+
+# for missing/setproctitle.c
+AS_CASE(["$target_os"],
+[aix* | k*bsd*-gnu | kopensolaris*-gnu | linux* | darwin*], [AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)],
+[hpux*], [AC_DEFINE(SPT_TYPE,SPT_PSTAT) ],
+[])
+AC_CHECK_HEADERS(sys/pstat.h)
+
+
+AC_CACHE_CHECK(for signbit, rb_cv_have_signbit,
+ [AC_TRY_LINK([
+#include <math.h>
+], [int v = signbit(-0.0);],
+ rb_cv_have_signbit=yes,
+ rb_cv_have_signbit=no)])
+if test "$rb_cv_have_signbit" = yes; then
+ AC_DEFINE(HAVE_SIGNBIT)
+else
+ AC_LIBOBJ([signbit])
+fi
+
+AC_CHECK_FUNCS(__syscall)
+AC_CHECK_FUNCS(_longjmp) # used for AC_ARG_WITH(setjmp-type)
+AC_CHECK_FUNCS(_setjmp) # used for AC_ARG_WITH(setjmp-type)
+AC_CHECK_FUNCS(_setjmpex) # used for AC_ARG_WITH(setjmp-type)
+AC_CHECK_FUNCS(chroot)
+AC_CHECK_FUNCS(chsize)
+AC_CHECK_FUNCS(clock_gettime)
+AC_CHECK_FUNCS(cosh)
+AC_CHECK_FUNCS(daemon)
+AC_CHECK_FUNCS(dl_iterate_phdr)
+AC_CHECK_FUNCS(dlopen)
+AC_CHECK_FUNCS(dup)
+AC_CHECK_FUNCS(dup3)
+AC_CHECK_FUNCS(eaccess)
+AC_CHECK_FUNCS(endgrent)
+AC_CHECK_FUNCS(fchmod)
+AC_CHECK_FUNCS(fchown)
+AC_CHECK_FUNCS(fcntl)
+AC_CHECK_FUNCS(fdatasync)
+AC_CHECK_FUNCS(fmod)
+AC_CHECK_FUNCS(fork)
+AC_CHECK_FUNCS(fsync)
+AC_CHECK_FUNCS(ftruncate)
+AC_CHECK_FUNCS(ftruncate64) # used for Win32 platform
+AC_CHECK_FUNCS(getcwd)
+AC_CHECK_FUNCS(getgrnam_r)
+AC_CHECK_FUNCS(getgroups)
+AC_CHECK_FUNCS(getpgid)
+AC_CHECK_FUNCS(getpgrp)
+AC_CHECK_FUNCS(getpriority)
+AC_CHECK_FUNCS(getpwnam_r)
+AC_CHECK_FUNCS(getrlimit)
+AC_CHECK_FUNCS(getsid)
+AC_CHECK_FUNCS(gettimeofday) # for making ac_cv_func_gettimeofday
+AC_CHECK_FUNCS(gmtime_r)
+AC_CHECK_FUNCS(initgroups)
+AC_CHECK_FUNCS(ioctl)
+AC_CHECK_FUNCS(issetugid)
+AC_CHECK_FUNCS(killpg)
+AC_CHECK_FUNCS(lchmod)
+AC_CHECK_FUNCS(lchown)
+AC_CHECK_FUNCS(link)
+AC_CHECK_FUNCS(llabs)
+AC_CHECK_FUNCS(lockf)
+AC_CHECK_FUNCS(log2)
+AC_CHECK_FUNCS(lstat)
+AC_CHECK_FUNCS(malloc_usable_size)
+AC_CHECK_FUNCS(mblen)
+AC_CHECK_FUNCS(memalign)
+AC_CHECK_FUNCS(memrchr)
+AC_CHECK_FUNCS(mktime)
+AC_CHECK_FUNCS(pipe2)
+AC_CHECK_FUNCS(poll)
+AC_CHECK_FUNCS(posix_fadvise)
+AC_CHECK_FUNCS(posix_memalign)
+AC_CHECK_FUNCS(ppoll)
+AC_CHECK_FUNCS(pread)
+AC_CHECK_FUNCS(readlink)
+AC_CHECK_FUNCS(round)
+AC_CHECK_FUNCS(seekdir)
+AC_CHECK_FUNCS(select_large_fdset)
+AC_CHECK_FUNCS(sendfile)
+AC_CHECK_FUNCS(setegid)
+AC_CHECK_FUNCS(setenv)
+AC_CHECK_FUNCS(seteuid)
+AC_CHECK_FUNCS(setgid)
+AC_CHECK_FUNCS(setgroups)
+AC_CHECK_FUNCS(setpgid)
+AC_CHECK_FUNCS(setpgrp)
+AC_CHECK_FUNCS(setregid)
+AC_CHECK_FUNCS(setresgid)
+AC_CHECK_FUNCS(setresuid)
+AC_CHECK_FUNCS(setreuid)
+AC_CHECK_FUNCS(setrgid)
+AC_CHECK_FUNCS(setrlimit)
+AC_CHECK_FUNCS(setruid)
+AC_CHECK_FUNCS(setsid)
+AC_CHECK_FUNCS(setuid)
+AC_CHECK_FUNCS(shutdown)
+AC_CHECK_FUNCS(sigaction)
+AC_CHECK_FUNCS(sigaltstack)
+AC_CHECK_FUNCS(sigprocmask)
+AC_CHECK_FUNCS(sinh)
+AC_CHECK_FUNCS(spawnv)
+AC_CHECK_FUNCS(symlink)
+AC_CHECK_FUNCS(syscall)
+AC_CHECK_FUNCS(sysconf)
+AC_CHECK_FUNCS(tanh)
+AC_CHECK_FUNCS(telldir)
+AC_CHECK_FUNCS(timegm)
+AC_CHECK_FUNCS(times)
+AC_CHECK_FUNCS(truncate)
+AC_CHECK_FUNCS(truncate64) # used for Win32
+AC_CHECK_FUNCS(unsetenv)
+AC_CHECK_FUNCS(utimensat)
+AC_CHECK_FUNCS(utimes)
+AC_CHECK_FUNCS(wait4)
+AC_CHECK_FUNCS(waitpid)
+
+AC_DEFUN([RUBY_CHECK_BUILTIN_FUNC], [dnl
+AC_CACHE_CHECK([for $1], AS_TR_SH(rb_cv_builtin_$1),
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([], [$2;])],
+ [AS_TR_SH(rb_cv_builtin_$1)=yes],
+ [AS_TR_SH(rb_cv_builtin_$1)=no])])
+if test "${AS_TR_SH(rb_cv_builtin_$1)}" != no; then
+ AC_DEFINE(AS_TR_CPP(HAVE_BUILTIN_$1))
+fi])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap32, [__builtin_bswap32(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap64, [__builtin_bswap64(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_clz, [__builtin_clz(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_clzl, [__builtin_clzl(0)])
+RUBY_CHECK_BUILTIN_FUNC(__builtin_clzll, [__builtin_clzll(0)])
+
+# Some platform need -lrt for clock_gettime, but the other don't.
+if test x"$ac_cv_func_clock_gettime" != xyes; then
+ # glibc 2.17 moves clock_* functions from librt to the main C library.
+ # http://sourceware.org/ml/libc-announce/2012/msg00001.html
+ AC_CHECK_LIB(rt, clock_gettime)
+ if test x"$ac_cv_lib_rt_clock_gettime" = xyes; then
+ AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
+ fi
+fi
+AC_CHECK_FUNCS(clock_getres) # clock_getres should be tested after clock_gettime test including librt test.
+
+AC_CACHE_CHECK(for unsetenv returns a value, rb_cv_unsetenv_return_value,
+ [AC_TRY_COMPILE([
+#include <stdlib.h>
+], [int v = unsetenv("foo");],
+ rb_cv_unsetenv_return_value=yes,
+ rb_cv_unsetenv_return_value=no)])
+if test "$rb_cv_unsetenv_return_value" = no; then
+ AC_DEFINE(VOID_UNSETENV)
+fi
+
+# used for AC_ARG_WITH(setjmp-type)
+AC_CACHE_CHECK(for sigsetjmp as a macro or function, ac_cv_func_sigsetjmp,
+ [AC_TRY_COMPILE([
+#include <setjmp.h>
+], [sigjmp_buf env; sigsetjmp(env,1);],
+ ac_cv_func_sigsetjmp=yes,
+ ac_cv_func_sigsetjmp=no)])
+
+AC_CACHE_CHECK(for __builtin_setjmp, ac_cv_func___builtin_setjmp,
+[AC_TRY_LINK([@%:@include <setjmp.h>
+ jmp_buf jb; void t(v) int v; {__builtin_longjmp(jb, v);}],
+ [__builtin_setjmp(jb);],
+ [ac_cv_func___builtin_setjmp=yes],
+ [ac_cv_func___builtin_setjmp=no])
+])
+
+# we don't use _setjmp if _longjmp doesn't exist.
+test x$ac_cv_func__longjmp = xno && ac_cv_func__setjmp=no
+
+AC_MSG_CHECKING(for setjmp type)
+setjmp_suffix=
+AC_ARG_WITH(setjmp-type,
+ AS_HELP_STRING([--with-setjmp-type], [select setjmp type]),
+ [
+ AS_CASE([$withval],
+ [__builtin_setjmp], [setjmp=__builtin_setjmp],
+ [_setjmp], [ setjmp_prefix=_],
+ [sigsetjmp], [ setjmp_prefix=sig],
+ [setjmp], [ setjmp_prefix=],
+ [setjmpex], [ setjmp_prefix= setjmp_suffix=ex],
+ [''], [ unset setjmp_prefix],
+ [ AC_MSG_ERROR(invalid setjmp type: $withval)])], [unset setjmp_prefix])
+if test ${setjmp_prefix+set}; then
+ if test "${setjmp_prefix}" && eval test '$ac_cv_func_'${setjmp_prefix}setjmp${setjmp_suffix} = no; then
+ AC_MSG_ERROR(${setjmp_prefix}setjmp${setjmp_suffix} is not available)
+ fi
+elif test "$ac_cv_func___builtin_setjmp" = yes; then
+ setjmp_prefix=__builtin_
+ setjmp_suffix=
+elif test "$ac_cv_header_setjmpex_h:$ac_cv_func__setjmpex" = yes:yes; then
+ setjmp_prefix=
+ setjmp_suffix=ex
+elif test "$ac_cv_func__setjmp" = yes; then
+ setjmp_prefix=_
+ setjmp_suffix=
+elif test "$ac_cv_func_sigsetjmp" = yes; then
+ AS_CASE([$target_os],[solaris*|cygwin*],[setjmp_prefix=],[setjmp_prefix=sig])
+ setjmp_suffix=
+else
+ setjmp_prefix=
+ setjmp_suffix=
+fi
+if test x$setjmp_prefix = xsig; then
+ setjmp_sigmask=yes
+else
+ unset setjmp_sigmask
+fi
+AC_MSG_RESULT(${setjmp_prefix}setjmp${setjmp_suffix})
+AC_DEFINE_UNQUOTED([RUBY_SETJMP(env)], [${setjmp_prefix}setjmp${setjmp_suffix}(env${setjmp_sigmask+,0})])
+AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp(env,val)])
+AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf)
+# End of setjmp check.
+
+AC_ARG_ENABLE(setreuid,
+ AS_HELP_STRING([--enable-setreuid], [use setreuid()/setregid() according to need even if obsolete]),
+ [use_setreuid=$enableval])
+if test "$use_setreuid" = yes; then
+ AC_DEFINE(USE_SETREUID)
+ AC_DEFINE(USE_SETREGID)
+fi
+AC_STRUCT_TIMEZONE
+AC_CACHE_CHECK(for struct tm.tm_gmtoff, rb_cv_member_struct_tm_tm_gmtoff,
+ [AC_TRY_COMPILE([@%:@include <time.h>],
+ [struct tm t; t.tm_gmtoff = 3600;],
+ [rb_cv_member_struct_tm_tm_gmtoff=yes],
+ [rb_cv_member_struct_tm_tm_gmtoff=no])])
+if test "$rb_cv_member_struct_tm_tm_gmtoff" = yes; then
+ AC_DEFINE(HAVE_STRUCT_TM_TM_GMTOFF)
+fi
+AC_CACHE_CHECK(for external int daylight, rb_cv_have_daylight,
+ [AC_TRY_LINK([#include <time.h>
+ int i;],
+ [i = daylight;],
+ rb_cv_have_daylight=yes,
+ rb_cv_have_daylight=no)])
+if test "$rb_cv_have_daylight" = yes; then
+ AC_DEFINE(HAVE_DAYLIGHT)
+fi
+AC_DEFUN([RUBY_CHECK_VARTYPE], [dnl
+AC_CACHE_CHECK([for external $1], AS_TR_SH(rb_cv_var_$1),
+ [AS_TR_SH(rb_cv_var_$1)=no
+ AC_TRY_COMPILE([
+#ifndef _XOPEN_SOURCE
+#define _XOPEN_SOURCE 1
+#endif
+$2
+;
+const volatile void *volatile t;],
+ [t = &(&$1)[0];],
+ [for t in $3; do
+ AC_TRY_COMPILE([
+#ifndef _XOPEN_SOURCE
+#define _XOPEN_SOURCE 1
+#endif
+$2
+;
+extern $t $1;
+const volatile void *volatile t;],
+ [t = &(&$1)[0];],
+ [AS_TR_SH(rb_cv_var_$1)=$t; break])
+ done])])
+if test "${AS_TR_SH(rb_cv_var_$1)}" != no; then
+ AC_DEFINE(AS_TR_CPP(HAVE_VAR_$1))
+ AC_DEFINE_UNQUOTED(AS_TR_CPP(TYPEOF_VAR_$1), ${AS_TR_SH(rb_cv_var_$1)})
+fi])
+RUBY_CHECK_VARTYPE(timezone, [@%:@include <time.h>], [long int])
+RUBY_CHECK_VARTYPE(altzone, [@%:@include <time.h>], [long int])
+AC_CHECK_FUNCS(timezone)
+if test "$ac_cv_func_timezone" = yes; then
+ AC_CACHE_CHECK([whether timezone requires zero arguments], rb_cv_func_timezone_void,
+ [AC_TRY_COMPILE([@%:@include <time.h>],
+ [(void)timezone(0, 0);],
+ [rb_cv_func_timezone_void=no],
+ [rb_cv_func_timezone_void=yes])]
+ )
+ if test $rb_cv_func_timezone_void = yes; then
+ AC_DEFINE(TIMEZONE_VOID)
+ fi
+fi
+
+AC_CACHE_CHECK(for negative time_t for gmtime(3), rb_cv_negative_time_t,
+ [AC_TRY_RUN([
+#include <stdlib.h>
+#include <time.h>
+
+void
+check(tm, y, m, d, h, s)
+ struct tm *tm;
+ int y, m, d, h, s;
+{
+ if (!tm ||
+ tm->tm_year != y ||
+ tm->tm_mon != m-1 ||
+ tm->tm_mday != d ||
+ tm->tm_hour != h ||
+ tm->tm_sec != s) {
+ exit(1);
+ }
+}
+
+int
+main()
+{
+ time_t t = -1;
+ struct tm *tm;
+
+ check(gmtime(&t), 69, 12, 31, 23, 59);
+ t = ~(time_t)0 << 31;
+ check(gmtime(&t), 1, 12, 13, 20, 52);
+ return 0;
+}
+],
+ rb_cv_negative_time_t=yes,
+ rb_cv_negative_time_t=no,
+ rb_cv_negative_time_t=yes)])
+if test "$rb_cv_negative_time_t" = yes; then
+ AC_DEFINE(NEGATIVE_TIME_T)
+fi
+
+# [ruby-dev:40910] overflow of time on FreeBSD
+# http://www.freebsd.org/cgi/query-pr.cgi?pr=145341
+AC_CACHE_CHECK(for localtime(3) overflow correctly, rb_cv_localtime_overflow,
+ [AC_TRY_RUN([
+#include <stdlib.h>
+#include <time.h>
+
+void
+check(time_t t1)
+{
+ struct tm *tm;
+ time_t t2;
+ tm = localtime(&t1);
+ if (!tm)
+ return; /* overflow detected. ok. */
+ t2 = mktime(tm);
+ if (t1 == t2)
+ return; /* round-trip. ok. */
+ exit(1);
+}
+
+int
+main()
+{
+ time_t t;
+ if (~(time_t)0 <= 0) {
+ t = (((time_t)1) << (sizeof(time_t) * 8 - 2));
+ t |= t - 1;
+ }
+ else {
+ t = ~(time_t)0;
+ }
+ check(t);
+ return 0;
+}
+],
+ rb_cv_localtime_overflow=yes,
+ rb_cv_localtime_overflow=no,
+ rb_cv_localtime_overflow=no)])
+if test "$rb_cv_localtime_overflow" = no; then
+ AC_DEFINE(LOCALTIME_OVERFLOW_PROBLEM)
fi
if test "$ac_cv_func_sigprocmask" = yes && test "$ac_cv_func_sigaction" = yes; then
AC_DEFINE(POSIX_SIGNAL)
else
- AC_MSG_CHECKING(for BSD signal semantics)
- AC_CACHE_VAL(rb_cv_bsd_signal,
+ AC_CHECK_FUNCS(sigsetmask)
+ AC_CACHE_CHECK(for BSD signal semantics, rb_cv_bsd_signal,
[AC_TRY_RUN([
#include <stdio.h>
#include <signal.h>
@@ -146,195 +2180,646 @@ main()
}
],
rb_cv_bsd_signal=yes,
- rb_cv_bsd_signal=no)])
- AC_MSG_RESULT($rb_cv_bsd_signal)
+ rb_cv_bsd_signal=no,
+ rb_cv_bsd_signal=$ac_cv_func_sigsetmask)])
if test "$rb_cv_bsd_signal" = yes; then
AC_DEFINE(BSD_SIGNAL)
fi
fi
-if test "$ac_cv_func_setpgrp2" = yes; then
- AC_DEFINE(BSD_GETPGRP, getpgrp2)
- AC_DEFINE(BSD_SETPGRP, setpgrp2)
+if test "$ac_cv_func_getpgid" = no; then
+ # AC_FUNC_GETPGRP fails when cross-compiling with old autoconf.
+ # autoconf is changed between 2.52d and 2.52f?
+ # http://lists.gnu.org/archive/html/bug-gnu-utils/2001-09/msg00181.html
+ # "autoconf cleanup for AC_FUNC_GETPGRP and GETPGRP_VOID"
+AC_FUNC_GETPGRP
+fi
+if test "$ac_cv_func_setpgid:$ac_cv_func_setpgrp" = no:yes; then
+ # AC_FUNC_SETPGRP fails when cross-compiling. (until autoconf 2.69?)
+ # https://lists.gnu.org/archive/html/bug-autoconf/2013-02/msg00002.html
+ # "AC_FUNC_SETPGRP fails to work properly when cross-compiling"
+AC_FUNC_SETPGRP
+fi
+
+if test x"$target_cpu" = xia64; then
+ AC_LIBOBJ([ia64])
+ AC_CACHE_CHECK(for __libc_ia64_register_backing_store_base,
+ rb_cv___libc_ia64_register_backing_store_base,
+ [rb_cv___libc_ia64_register_backing_store_base=no
+ AC_TRY_LINK(
+ [extern unsigned long __libc_ia64_register_backing_store_base;],
+ [unsigned long p = __libc_ia64_register_backing_store_base;
+ printf("%ld\n", p);],
+ [rb_cv___libc_ia64_register_backing_store_base=yes])])
+ if test $rb_cv___libc_ia64_register_backing_store_base = yes; then
+ AC_DEFINE(HAVE___LIBC_IA64_REGISTER_BACKING_STORE_BASE)
+ fi
+fi
+
+AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign,
+ [AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([], [(-1==(-1>>1))])],
+ rb_cv_rshift_sign=yes,
+ rb_cv_rshift_sign=no)])
+if test "$rb_cv_rshift_sign" = yes; then
+ AC_DEFINE(RSHIFT(x,y), ((x)>>(int)(y)))
else
- AC_MSG_CHECKING(whether getpgrp() has arg)
- AC_CACHE_VAL(rb_cv_bsdgetpgrp,
- [AC_TRY_COMPILE([#include <unistd.h>], [getpgrp(0);],
- rb_cv_bsdgetpgrp=yes,
- rb_cv_bsdgetpgrp=no)])
- AC_MSG_RESULT($rb_cv_bsdgetpgrp)
- if test "$rb_cv_bsdgetpgrp" = yes; then
- AC_DEFINE(BSD_GETPGRP, getpgrp)
+ AC_DEFINE(RSHIFT(x,y), (((x)<0) ? ~((~(x))>>(int)(y)) : (x)>>(int)(y)))
+fi
+
+# win32.c still use this. Don't remove it.
+test "$rb_cv_fcnt" = "not found" && rb_cv_fcnt="not found (OK if using GNU libc)"
+AC_CACHE_CHECK([read count field in FILE structures], rb_cv_fcnt,
+[rb_cv_fcnt="not found (OK if using GNU libc)"
+for fcnt in dnl
+ _cnt dnl
+ __cnt dnl
+ _r dnl
+ readCount dnl
+ _rcount dnl for emx0.9c
+; do
+ AC_TRY_COMPILE([#include <stdio.h>
+],
+ [FILE *f = stdin; f->$fcnt = 0;],
+ [rb_cv_fcnt="$fcnt"; break])
+done])
+AS_CASE("$rb_cv_fcnt",
+ ["not found"*], [rb_cv_fcnt="not found"],
+ [AC_DEFINE_UNQUOTED(FILE_COUNT, $rb_cv_fcnt)])
+
+# win32.c still use this. Don't remove it.
+AC_CACHE_CHECK([read buffer ptr field in FILE structures], rb_cv_frptr,
+[for frptr in dnl
+ _IO_read_ptr dnl
+ _ptr dnl
+ __ptr dnl
+ bufpos dnl
+ _p dnl
+ __bufpos dnl
+; do
+ AC_TRY_COMPILE([#include <stdio.h>
+],
+ [FILE *f = stdin; char buf[256]; f->$frptr = buf;],
+ rb_cv_frptr="$frptr"; break,
+ rb_cv_frptr="not found")
+done])
+if test "$rb_cv_frptr" != "not found"; then
+ AC_DEFINE_UNQUOTED(FILE_READPTR, $rb_cv_frptr)
+
+ if test "$rb_cv_fcnt" = "not found"; then
+ AC_CACHE_CHECK([read buffer end field in FILE structures], rb_cv_frend,
+ [for frend in dnl
+ _IO_read_end dnl
+ bufread dnl
+ __bufread dnl
+ ; do
+ AC_TRY_COMPILE([#include <stdio.h>
+ ],
+ [FILE *f = stdin; char buf[256]; f->$frend = buf;],
+ rb_cv_frend="$frend"; break,
+ rb_cv_frend="not found")
+ done])
+ if test "$rb_cv_frend" != "not found"; then
+ AC_DEFINE_UNQUOTED(FILE_READEND, $rb_cv_frend)
+ fi
fi
+fi
+
+if test x"$ac_cv_func_gettimeofday" != xyes; then
+ AC_MSG_ERROR(gettimeofday() must exist)
+fi
+
+RUBY_CHECK_SIZEOF([struct stat.st_ino], [long "long long"], [], [@%:@include <sys/stat.h>])
- AC_MSG_CHECKING(whether setpgrp() has args)
- AC_CACHE_VAL(rb_cv_bsdsetpgrp,
- [AC_TRY_COMPILE([#include <unistd.h>], [setpgrp(1, 1);],
- rb_cv_bsdsetpgrp=yes,
- rb_cv_bsdsetpgrp=no)])
- AC_MSG_RESULT($rb_cv_bsdsetpgrp)
- if test "$rb_cv_bsdsetpgrp" = yes; then
- AC_DEFINE(BSD_SETPGRP, setpgrp)
+if test "$ac_cv_func_sysconf" = yes; then
+ AC_DEFUN([RUBY_CHECK_SYSCONF], [dnl
+ AC_CACHE_CHECK([whether _SC_$1 is supported], rb_cv_have_sc_[]m4_tolower($1),
+ [AC_TRY_COMPILE([#include <unistd.h>
+ ],
+ [_SC_$1 >= 0],
+ rb_cv_have_sc_[]m4_tolower($1)=yes,
+ rb_cv_have_sc_[]m4_tolower($1)=no)
+ ])
+ if test "$rb_cv_have_sc_[]m4_tolower($1)" = yes; then
+ AC_DEFINE(HAVE__SC_$1)
fi
+ ])
+ RUBY_CHECK_SYSCONF(CLK_TCK)
fi
-AC_C_BIGENDIAN
-AC_CHAR_UNSIGNED
-
-AC_MSG_CHECKING([count field in FILE structures])
-AC_CACHE_VAL(rb_cv_fcnt,
-[AC_TRY_COMPILE([#include <stdio.h>],
- [FILE *f = stdin; f->_cnt = 0;], rb_cv_fcnt="_cnt", )
-if test "$rb_cv_fcnt" = ""; then
- AC_TRY_COMPILE([#include <stdio.h>],
- [FILE *f = stdin; f->__cnt = 0;], rb_cv_fcnt="__cnt", )
-fi
-if test "$rb_cv_fcnt" = ""; then
- AC_TRY_COMPILE([#include <stdio.h>],
- [FILE *f = stdin; f->_r = 0;], rb_cv_fcnt="_r", )
-fi
-if test "$rb_cv_fcnt" = ""; then
- AC_TRY_COMPILE([#include <stdio.h>],
- [FILE *f = stdin; f->readCount = 0;],
- rb_cv_fcnt="readCount", rb_cv_fcnt="not found")
-fi])
-if test "$rb_cv_fcnt" = "not found"; then
- AC_MSG_RESULT([not found(OK if using GNU libc)])
+AC_DEFUN(RUBY_STACK_GROW_DIRECTION, [
+ AS_VAR_PUSHDEF([stack_grow_dir], [rb_cv_stack_grow_dir_$1])
+ AC_CACHE_CHECK(stack growing direction on $1, stack_grow_dir, [
+AS_CASE(["$1"],
+[m68*|x86*|x64|i?86|ia64|ppc*|sparc*|alpha*], [ $2=-1],
+[hppa*], [ $2=+1],
+[
+ AC_TRY_RUN([
+/* recurse to get rid of inlining */
+static int
+stack_growup_p(addr, n)
+ volatile int *addr, n;
+{
+ volatile int end;
+ if (n > 0)
+ return *addr = stack_growup_p(addr, n - 1);
+ else
+ return (&end > addr);
+}
+int main()
+{
+ int x;
+ return stack_growup_p(&x, 10);
+}
+], $2=-1, $2=+1, $2=0)
+ ])
+eval stack_grow_dir=\$$2])
+eval $2=\$stack_grow_dir
+AS_VAR_POPDEF([stack_grow_dir])])
+if test "${universal_binary-no}" = yes ; then
+ archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
+ save_CFLAGS="$CFLAGS" new_cflags=`echo "$CFLAGS" | sed "s|$archflagpat"'||'`
+ save_LDFLAGS="$LDFLAGS" new_ldflags=`echo "$LDFLAGS" | sed "s|$archflagpat"'||'`
+ stack_dir=
+ for archs in ${universal_archnames}; do
+ archs=`echo $archs | sed 's/=.*//'`
+ CFLAGS="$new_cflags -arch $archs"
+ LDFLAGS="$new_ldflags -arch $archs"
+ RUBY_STACK_GROW_DIRECTION($archs, dir)
+ if test x$stack_dir = x; then
+ stack_dir=$dir
+ elif test x$stack_dir != x$dir; then
+ stack_dir=no
+ fi
+ done
+ CFLAGS="$save_CFLAGS" LDFLAGS="$save_LDFLAGS"
+ if test x$stack_dir = xno; then
+ for archs in ${universal_archnames}; do
+ archs=`echo $archs | sed 's/=.*//'`
+ eval dir=\$[rb_cv_stack_grow_dir_]AS_TR_SH([$archs])
+ RUBY_DEFINE_IF([defined __${archs}__], STACK_GROW_DIRECTION, $dir)
+ done
+ else
+ AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $stack_dir)
+ fi
else
- AC_MSG_RESULT($rb_cv_fcnt)
- AC_DEFINE_UNQUOTED(FILE_COUNT, $rb_cv_fcnt)
-fi
-
-if test "$ac_cv_func_getpwent" = yes; then
- AC_MSG_CHECKING(struct passwd)
- AC_EGREP_HEADER(pw_change, pwd.h, AC_DEFINE(PW_CHANGE))
- AC_EGREP_HEADER(pw_quota, pwd.h, AC_DEFINE(PW_QUOTA))
- AC_EGREP_HEADER(pw_age, pwd.h, AC_DEFINE(PW_AGE))
- AC_EGREP_HEADER(pw_class, pwd.h, AC_DEFINE(PW_CLASS))
- AC_EGREP_HEADER(pw_comment, pwd.h, AC_DEFINE(PW_COMMENT))
- AC_EGREP_HEADER(pw_expire, pwd.h, AC_DEFINE(PW_EXPIRE))
- AC_MSG_RESULT(done)
-fi
-
-dnl wheather use dln_a_out ot not
-AC_ARG_WITH(dln-a-out, [--with-dln-a-out use dln_a_out if possible], [
- case $withval in
- yes) with_dln_a_out=yes;;
- *) with_dln_a_out=no;;
- esac], [with_dln_a_out=no])
-
-case "$host_os" in
- linux*)
- AC_MSG_CHECKING(whether ELF binaries are produced)
- AC_CACHE_VAL(rb_cv_linux_elf,
- [AC_TRY_RUN([
-/* Test for whether ELF binaries are produced */
-#include <fcntl.h>
+ RUBY_STACK_GROW_DIRECTION($target_cpu, dir)
+ AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $dir)
+fi
+
+if test x"$enable_pthread" = xyes; then
+ for pthread_lib in thr pthread pthreads c c_r root; do
+ AC_CHECK_LIB($pthread_lib, pthread_kill,
+ rb_with_pthread=yes, rb_with_pthread=no)
+ if test "$rb_with_pthread" = "yes"; then break; fi
+ done
+ if test x"$rb_with_pthread" = xyes; then
+ AC_DEFINE(_REENTRANT)
+ AC_DEFINE(_THREAD_SAFE)
+ AC_DEFINE(HAVE_LIBPTHREAD)
+ AC_CHECK_HEADERS(pthread_np.h, [], [], [@%:@include <pthread.h>])
+ AS_CASE([$pthread_lib],
+ [c], [],
+ [root], [],
+ [c_r], [MAINLIBS="-pthread $MAINLIBS"],
+ [AS_CASE(["$target_os"],
+ [openbsd*|mirbsd*], [LIBS="-pthread $LIBS"],
+ [LIBS="-l$pthread_lib $LIBS"])])
+ else
+ AC_MSG_WARN("Don't know how to find pthread library on your system -- thread support disabled")
+ fi
+ AC_CHECK_FUNCS(sched_yield pthread_attr_setinheritsched \
+ pthread_getattr_np pthread_attr_get_np pthread_attr_getstack\
+ pthread_get_stackaddr_np pthread_get_stacksize_np \
+ thr_stksegment pthread_stackseg_np pthread_getthrds_np \
+ pthread_cond_init pthread_condattr_setclock pthread_condattr_init \
+ pthread_sigmask)
+ if test "${host_os}" = "nacl"; then
+ ac_cv_func_pthread_attr_init=no
+ else
+ AC_CHECK_FUNCS(pthread_attr_init)
+ fi
+fi
+if test x"$ac_cv_header_ucontext_h" = xyes; then
+ if test x"$rb_with_pthread" = xyes; then
+ AC_CHECK_FUNCS(getcontext setcontext)
+ fi
+fi
+
+if test "$ac_cv_func_fork" = "yes" -a "$rb_with_pthread" = "yes"; then
+ AC_CACHE_CHECK([if fork works with pthread], rb_cv_fork_with_pthread,
+ [AC_TRY_RUN([
#include <stdlib.h>
-main() {
- char buffer[4];
- int i=open("conftest",O_RDONLY);
- if(i==-1)
- exit(1); /* fail */
- if(read(i,&buffer[0],4)<4)
- exit(1); /* fail */
- if(buffer[0] != 127 || buffer[1] != 'E' ||
- buffer[2] != 'L' || buffer[3] != 'F')
- exit(1); /* fail */
- exit(0); /* succeed (yes, it's ELF) */
+#include <unistd.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <signal.h>
+#ifndef EXIT_SUCCESS
+#define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+#define EXIT_FAILURE 1
+#endif
+
+void *
+thread_func(void *dmy)
+{
+ return dmy;
}
-],
- rb_cv_linux_elf=yes,
- rb_cv_linux_elf=no,
- [:])])
- AC_MSG_RESULT($rb_cv_linux_elf)
- if test "$rb_cv_linux_elf" = no; then
- with_dln_a_out=yes
- host_os=linux-a.out
- else
- LDFLAGS="-rdynamic"
- fi;;
-esac
+
+int
+use_threads(void)
+{
+ pthread_t tid;
+ if (pthread_create(&tid, 0, thread_func, 0) != 0) {
+ return -1;
+ }
+ if (pthread_join(tid, 0) != 0) {
+ return -1;
+ }
+ return 0;
+}
+
+int
+main(int argc, char *argv[])
+{
+ pid_t pid;
+ if (use_threads()) return EXIT_FAILURE;
+ pid = fork();
+
+ if (pid) {
+ int loc;
+ sleep(1);
+ if (waitpid(pid, &loc, WNOHANG) == 0) {
+ kill(pid, SIGKILL);
+ return EXIT_FAILURE;
+ }
+ if (!WIFEXITED(loc) || WEXITSTATUS(loc) != EXIT_SUCCESS)
+ return EXIT_FAILURE;
+ }
+ else {
+ if (use_threads()) return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}],
+ rb_cv_fork_with_pthread=yes,
+ rb_cv_fork_with_pthread=no,
+ rb_cv_fork_with_pthread=yes)])
+ test x$rb_cv_fork_with_pthread = xyes || AC_DEFINE(CANNOT_FORK_WITH_PTHREAD)
+fi
+
+
+}
+{ # runtime section
+
+dnl wheather use dln_a_out or not
+AC_ARG_WITH(dln-a-out,
+ AS_HELP_STRING([--with-dln-a-out], [use dln_a_out if possible]),
+ [
+ AS_CASE([$withval],
+ [yes], [
+ if test "$enable_shared" = yes; then
+ AC_MSG_ERROR(dln_a_out can not make shared library)
+ fi
+ with_dln_a_out=yes],
+ [
+ with_dln_a_out=no])], [with_dln_a_out=no])
+
+AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf,
+[AC_TRY_LINK([],[], [
+AS_CASE(["`head -1 conftest$EXEEXT | cat -e`"],
+['^?ELF'*], [rb_cv_binary_elf=yes], [rb_cv_binary_elf=no])],
+rb_cv_binary_elf=no)])
+
+if test "$rb_cv_binary_elf" = yes; then
+ AC_DEFINE(USE_ELF)
+ if test "$with_dln_a_out" = yes; then
+ AC_MSG_ERROR(dln_a_out does not work with ELF)
+ fi
+ AC_CHECK_HEADERS([elf.h elf_abi.h])
+ if test $ac_cv_header_elf_h = yes -o $ac_cv_header_elf_abi_h = yes; then
+ AC_LIBOBJ([addr2line])
+ fi
+fi
+
+AS_CASE(["$target_os"],
+[linux* | gnu* | k*bsd*-gnu | bsdi* | kopensolaris*-gnu | nacl], [
+ if test "$rb_cv_binary_elf" = no; then
+ with_dln_a_out=yes
+ else
+ LDFLAGS="$LDFLAGS -rdynamic"
+ fi])
+LIBEXT=a
AC_SUBST(DLDFLAGS)dnl
+AC_SUBST(ARCH_FLAG)dnl
AC_SUBST(STATIC)dnl
AC_SUBST(CCDLFLAGS)dnl
AC_SUBST(LDSHARED)dnl
+AC_SUBST(LDSHAREDXX)dnl
AC_SUBST(DLEXT)dnl
+AC_SUBST(DLEXT2)dnl
+AC_SUBST(LIBEXT)dnl
STATIC=
+: ${PATHFLAG=''}
if test "$with_dln_a_out" != yes; then
rb_cv_dlopen=unknown
AC_MSG_CHECKING(whether OS depend dynamic link works)
if test "$GCC" = yes; then
- case "$host_os" in
- nextstep*) ;;
- human*) ;;
- *) CCDLFLAGS=-fpic;;
- esac
+ AS_CASE(["$target_os"],
+ [darwin*], [
+ # The -fno-common is needed if we wish to embed the Ruby interpreter
+ # into a plugin module of some project (as opposed to embedding it
+ # within the project's application). The -I/usr/local/include is
+ # needed because CPP as discovered by configure (cc -E -traditional)
+ # fails to consult /usr/local/include by default. This causes
+ # mkmf.rb's have_header() to fail if the desired resource happens to be
+ # installed in the /usr/local tree.
+ RUBY_APPEND_OPTION(CCDLFLAGS, -fno-common)],
+ [bsdi*|beos*|haiku*|cygwin*|mingw*|aix*|interix*], [ ],
+ [
+ RUBY_APPEND_OPTION(CCDLFLAGS, -fPIC)])
else
- case "$host_os" in
- hpux*) CCDLFLAGS='+z';;
- solaris*|irix*) CCDLFLAGS='-K pic' ;;
- sunos*) CCDLFLAGS='-pic' ;;
- esix*|uxpds*) CCDLFLAGS='-Kpic' ;;
- *) CCDLFLAGS='' ;;
- esac
+ AS_CASE(["$target_os"],
+ [hpux*], [CCDLFLAGS="$CCDLFLAGS +Z"],
+ [solaris*|irix*], [CCDLFLAGS="$CCDLFLAGS -KPIC"],
+ [sunos*], [CCDLFLAGS="$CCDLFLAGS -PIC"],
+ [esix*|uxpds*], [CCDLFLAGS="$CCDLFLAGS -KPIC"],
+ [: ${CCDLFLAGS=""}])
fi
- case "$host_os" in
- hpux*) DLDFLAGS="-E"
- LDSHARED='ld -b'
- LDFLAGS="-Wl,-E"
- rb_cv_dlopen=yes;;
- solaris*) LDSHARED='ld -G'
- rb_cv_dlopen=yes;;
- sunos*) LDSHARED='ld -assert nodefinitions'
- rb_cv_dlopen=yes;;
- irix*) LDSHARED='ld -ignore_unresolved'
- rb_cv_dlopen=yes;;
- sysv4*) LDSHARED='ld -G'
- rb_cv_dlopen=yes;;
- esix*|uxpds*) LDSHARED="ld -G"
- rb_cv_dlopen=yes ;;
- linux*) LDSHARED="gcc -shared"
- rb_cv_dlopen=yes ;;
- freebsd*) LDSHARED="ld -Bshareable"
- rb_cv_dlopen=yes ;;
- netbsd*) LDSHARED="ld -Bshareable"
- rb_cv_dlopen=yes ;;
- openbsd*) LDSHARED="ld -Bshareable"
- rb_cv_dlopen=yes ;;
- nextstep*) LDSHARED='cc -r'
- LDFLAGS="-u libsys_s"
- DLDFLAGS="$ARCH_FLAG"
- rb_cv_dlopen=yes ;;
- aix*) LDSHARED='../../miniruby ../aix_ld.rb $(TARGET)'
- rb_cv_dlopen=yes ;;
- human*) DLDFLAGS=''
- LDSHARED=''
- LDFLAGS='' ;;
- *) LDSHARED='ld' ;;
- esac
+
+ AC_ARG_ENABLE(rpath,
+ AS_HELP_STRING([--enable-rpath], [embed run path into extension libraries.
+ enabled by default on ELF platforms]),
+ [enable_rpath=$enableval], [enable_rpath="$rb_cv_binary_elf"])
+ if test "$enable_rpath" = yes; then
+ RPATHFLAG=" ${linker_flag}-R%1\$-s"
+ fi
+
+ AS_CASE(["$target_os"],
+ [hpux*], [ DLDFLAGS="$DLDFLAGS -E"
+ : ${LDSHARED='$(LD) -b'}
+ XLDFLAGS="$XLDFLAGS -Wl,-E"
+ : ${LIBPATHENV=SHLIB_PATH}
+ if test "$rb_cv_prog_gnu_ld" = no; then
+ RPATHFLAG=' +b %1$-s'
+ fi
+ rb_cv_dlopen=yes],
+ [solaris*], [ if test "$GCC" = yes; then
+ : ${LDSHARED='$(CC) -shared'}
+ if test "$rb_cv_prog_gnu_ld" = yes; then
+ LDFLAGS="$LDFLAGS -Wl,-E"
+ fi
+ else
+ : ${LDSHARED='$(CC) -G'}
+ fi
+ if test "$ac_cv_sizeof_voidp" = 8; then
+ : ${LIBPATHENV=LD_LIBRARY_PATH_64}
+ fi
+ rb_cv_dlopen=yes],
+ [sunos*], [ : ${LDSHARED='$(LD) -assert nodefinitions'}
+ rb_cv_dlopen=yes],
+ [irix*], [ : ${LDSHARED='$(LD) -shared'}
+ rb_cv_dlopen=yes],
+ [sysv4*], [ : ${LDSHARED='$(LD) -G'}
+ rb_cv_dlopen=yes],
+ [nto-qnx*], [ : ${LDSHARED='$(CC) -shared'}
+ rb_cv_dlopen=yes],
+ [esix*|uxpds*], [ : ${LDSHARED='$(LD) -G'}
+ rb_cv_dlopen=yes],
+ [osf*], [ : ${LDSHARED='$(LD) -shared -expect_unresolved "*"'}
+ rb_cv_dlopen=yes],
+ [bsdi3*], [ AS_CASE(["$CC"],
+ [*shlicc*], [ : ${LDSHARED='$(CC) -r'}
+ rb_cv_dlopen=yes])],
+ [linux* | gnu* | k*bsd*-gnu | netbsd* | bsdi* | kopensolaris*-gnu], [
+ : ${LDSHARED='$(CC) -shared'}
+ if test "$rb_cv_binary_elf" = yes; then
+ LDFLAGS="$LDFLAGS -Wl,-export-dynamic"
+ fi
+ rb_cv_dlopen=yes],
+ [interix*], [ : ${LDSHARED='$(CC) -shared'}
+ XLDFLAGS="$XLDFLAGS -Wl,-E"
+ LIBPATHFLAG=" -L%1\$-s"
+ rb_cv_dlopen=yes],
+ [freebsd*|dragonfly*], [
+ : ${LDSHARED='$(CC) -shared'}
+ if test "$rb_cv_binary_elf" = yes; then
+ LDFLAGS="$LDFLAGS -rdynamic"
+ DLDFLAGS="$DLDFLAGS "'-Wl,-soname,$(.TARGET)'
+ else
+ test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED='$(LD) -Bshareable'
+ fi
+ rb_cv_dlopen=yes],
+ [openbsd*|mirbsd*], [ : ${LDSHARED='$(CC) -shared ${CCDLFLAGS}'}
+ if test "$rb_cv_binary_elf" = yes; then
+ LDFLAGS="$LDFLAGS -Wl,-E"
+ fi
+ rb_cv_dlopen=yes],
+ [darwin*], [ : ${LDSHARED='$(CC) -dynamic -bundle'}
+ : ${DLDFLAGS="${linker_flag}-undefined${linker_flag:+,}dynamic_lookup ${linker_flag}-multiply_defined${linker_flag:+,}suppress"}
+ : ${LDFLAGS=""}
+ : ${LIBPATHENV=DYLD_LIBRARY_PATH}
+ # /usr/local/include is always searched for
+ # some reason, but /usr/local/lib is not.
+ hdr=`find /usr/local/include -name \*.h -type f | sed 's:^/usr/local/include/::;q'`
+ if test -n "$hdr" && $CC -E -include "$hdr" -xc - </dev/null 2>/dev/null | fgrep -q "$hdr"; then
+ $CC -print-search-dirs | grep -q '^libraries:.*:/usr/local/lib/*' ||
+ echo " $LDFLAGS " | grep -q ' -L */usr/local/lib/* ' ||
+ LDFLAGS="${LDFLAGS:+$LDFLAGS }-L/usr/local/lib"
+ fi
+ rb_cv_dlopen=yes],
+ [aix*], [ : ${LDSHARED='$(CC)'}
+ LDSHARED="$LDSHARED ${linker_flag}-G"
+ EXTDLDFLAGS='-e$(TARGET_ENTRY)'
+ XLDFLAGS="${linker_flag}"'-bE:$(ARCHFILE)'" ${linker_flag}-brtl"
+ XLDFLAGS="$XLDFLAGS ${linker_flag}-blibpath:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}"
+ : ${ARCHFILE="ruby.imp"}
+ TRY_LINK='$(CC) $(LDFLAGS) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS)'
+ TRY_LINK="$TRY_LINK"' $(CFLAGS) $(src) $(LIBPATH) $(LOCAL_LIBS) $(LIBS)'
+ : ${LIBPATHENV=LIBPATH}
+ RPATHFLAG=" ${linker_flag}-blibpath:%1\$-s:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}"
+ rb_cv_dlopen=yes],
+ [beos*], [ AS_CASE(["$target_cpu"],
+ [powerpc*], [
+ : ${LDSHARED='$(LD) -xms'}
+ EXTDLDFLAGS='-export $(TARGET_ENTRY)'
+ DLDFLAGS="$DLDFLAGS -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o"
+ LDFLAGS="$LDFLAGS -L/boot/home/config/lib -lbe -lroot"
+ ],
+ [i586*], [
+ : ${LDSHARED='$(LD) -shared'}
+ DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib \$(topdir)/_APP_ -lroot"
+ LDFLAGS="$LDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib -lroot"
+ ])
+ : ${LIBPATHENV=LIBRARY_PATH}
+ rb_cv_dlopen=yes],
+ [haiku*], [ AS_CASE(["$target_cpu"],
+ [powerpc*], [
+ : ${LDSHARED='$(LD) -xms'}
+ EXTDLDFLAGS='-export $(TARGET_ENTRY)'
+ DLDFLAGS="$DLDFLAGS -lroot glue-noinit.a init_term_dyn.o start_dyn.o"
+ ],
+ [i586*], [
+ : ${LDSHARED='$(CC) -shared'}
+ ])
+ : ${LIBPATHENV=LIBRARY_PATH}
+ rb_cv_dlopen=yes ],
+ [nto-qnx*], [ DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
+ : ${LDSHARED='$(LD) -Bshareable -x'}
+ LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
+ rb_cv_dlopen=yes],
+ [cygwin*|mingw*], [
+ : ${LDSHARED='$(CC) -shared $(if $(filter-out -g -g0,$(debugflags)),,-s)'}
+ XLDFLAGS="$XLDFLAGS -Wl,--stack,0x00200000,--enable-auto-import"
+ DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-image-base,--enable-auto-import"
+ : ${LIBPATHENV=""}
+ rb_cv_dlopen=yes],
+ [hiuxmpp], [ : ${LDSHARED='$(LD) -r'}],
+ [atheos*], [ : ${LDSHARED='$(CC) -shared'}
+ rb_cv_dlopen=yes],
+ [os2-emx*], [ LDFLAGS="$LDFLAGS -Zomf"
+ ],
+ [nacl], [ LDSHARED='$(CC) -shared' ],
+ [ : ${LDSHARED='$(LD)'}])
AC_MSG_RESULT($rb_cv_dlopen)
fi
+if test "${LDSHAREDXX}" = ""; then
+ AS_CASE(["${LDSHARED}"],
+ [*'$(CC)'*], [
+ LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\$(CC)/$(CXX)/'`
+ ],
+ [*'${CC}'*], [
+ LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\${CC}/${CXX}/'`
+ ],
+ [*$CC*], [
+ LDSHAREDXX=`echo "${LDSHARED}" | sed "s|$CC|$CXX|"`
+ ],
+ [ld" "*], [
+ ])
+fi
+AS_CASE([${RPATHFLAG}],[*'%1$'*],[: ${LIBPATHFLAG=' -L%1$-s'}],[: ${LIBPATHFLAG=' -L%s'}])
+
+AC_SUBST(LINK_SO)
+AC_SUBST(LIBPATHFLAG)
+AC_SUBST(RPATHFLAG)
+AC_SUBST(LIBPATHENV, "${LIBPATHENV-LD_LIBRARY_PATH}")
+AC_SUBST(TRY_LINK)
+
+AC_ARG_WITH(opt-dir,
+ AS_HELP_STRING([--with-opt-dir=DIR-LIST],
+ [add optional headers and libraries directories separated by $PATH_SEPARATOR]),
+ [
+ val=`echo "$PATH_SEPARATOR$withval" | sed "s|$PATH_SEPARATOR\([[^$PATH_SEPARATOR]*]\)| -I\1/include|g;s/^ //"`
+ CPPFLAGS="$CPPFLAGS $val"
+ val=`IFS="$PATH_SEPARATOR"
+ for dir in $withval; do
+ echo x ${LIBPATHFLAG} ${RPATHFLAG} |
+ sed "s/^x *//;s${IFS}"'%1\\$-s'"${IFS}${dir}/lib${IFS}g;s${IFS}%s${IFS}${dir}/lib${IFS}g"
+ done | tr '\012' ' '`
+ LDFLAGS_OPTDIR="$val"
+ test x"${LDFLAGS}" = x || LDFLAGS="$LDFLAGS "
+ LDFLAGS="$LDFLAGS$val"
+ test x"${DLDFLAGS}" = x || DLDFLAGS="$DLDFLAGS "
+ DLDFLAGS="$DLDFLAGS$val"
+ ])
+
+AS_CASE(["$target_cpu-$target_os"],
+[*-darwin*], [
+ AC_CHECK_HEADERS([execinfo.h])
+ if test "x$ac_cv_header_execinfo_h" = xyes; then
+ AC_CHECK_LIB([execinfo], [backtrace])
+ fi],
+[*-freebsd*|x86_64-netbsd*], [
+ AC_CHECK_HEADERS([execinfo.h])
+ if test "x$ac_cv_header_execinfo_h" = xyes; then
+ AC_CHECK_LIB([execinfo], [backtrace])
+ AC_CHECK_LIB([unwind], [unw_backtrace])
+ fi])
+AC_CHECK_FUNCS(backtrace)
+
+if test "x$ac_cv_func_backtrace" = xyes; then
+ AC_CACHE_CHECK(for broken backtrace, rb_cv_broken_backtrace,
+ [AC_TRY_RUN([
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <signal.h>
+#include <execinfo.h>
+
+#define TRACE_SIZE 256
+
+void sigsegv(int signum, siginfo_t *info, void *ctx){
+ void *trace[TRACE_SIZE];
+ int n = backtrace(trace, TRACE_SIZE);
+ if (n > 0) {
+ /*fprintf(stdout, "backtrace:%d\n",n);*/
+ } else {
+ abort();
+ }
+ _exit(0);
+}
+int
+main()
+{
+ stack_t ss;
+ ss.ss_sp = malloc(SIGSTKSZ);
+ if (ss.ss_sp == NULL) {
+ fprintf(stderr, "cannot allocate memory for sigaltstack\n");
+ abort();
+ }
+ ss.ss_size = SIGSTKSZ;
+ ss.ss_flags = 0;
+ if (sigaltstack(&ss, NULL) == -1) {
+ fprintf(stderr, "sigaltstack failed\n");
+ abort();
+ }
+ struct sigaction sa;
+ memset(&sa, 0, sizeof(struct sigaction));
+ sigemptyset(&sa.sa_mask);
+ sa.sa_sigaction = sigsegv;
+ sa.sa_flags |= SA_SIGINFO;
+ sa.sa_flags |= SA_ONSTACK;
+ sigaction(SIGSEGV, &sa, NULL);
+ int *a = NULL;
+ a[0] = 1;
+ return 0;
+}
+],
+ rb_cv_broken_backtrace=no,
+ rb_cv_broken_backtrace=yes,
+ rb_cv_broken_backtrace=no)])
+ if test "$rb_cv_broken_backtrace" = yes; then
+ AC_DEFINE(BROKEN_BACKTRACE, 1)
+ fi
+fi
+
+AC_ARG_WITH(valgrind,
+ AS_HELP_STRING([--without-valgrind],[disable valgrind memcheck support]),
+ [], with_valgrind=yes)
+AS_IF([test x$with_valgrind != xno],
+ [AC_CHECK_HEADERS(valgrind/memcheck.h)])
dln_a_out_works=no
if test "$ac_cv_header_a_out_h" = yes; then
if test "$with_dln_a_out" = yes || test "$rb_cv_dlopen" = unknown; then
- AC_MSG_CHECKING(whether matz's dln works)
cat confdefs.h > config.h
- AC_CACHE_VAL(rb_cv_dln_a_out,
+ AC_CACHE_CHECK(whether matz's dln works, rb_cv_dln_a_out,
[AC_TRY_COMPILE([
#define USE_DLN_A_OUT
#include "dln.c"
],
- [],
+ [],
rb_cv_dln_a_out=yes,
rb_cv_dln_a_out=no)])
- AC_MSG_RESULT($rb_cv_dln_a_out)
if test "$rb_cv_dln_a_out" = yes; then
dln_a_out_works=yes
AC_DEFINE(USE_DLN_A_OUT)
@@ -348,127 +2833,1077 @@ if test "$dln_a_out_works" = yes; then
else
STATIC=-Bstatic
fi
- DLEXT=o
- AC_DEFINE(DLEXT, ".o")
+ DLEXT=so
CCDLFLAGS=
else
- case "$host_os" in
- hpux*) DLEXT=sl
- AC_DEFINE(DLEXT, ".sl");;
- nextstep*) DLEXT=o
- AC_DEFINE(DLEXT, ".o");;
- *) DLEXT=so
- AC_DEFINE(DLEXT, ".so");;
- esac
+ AS_CASE(["$target_os"],
+ [hpux*], [
+ DLEXT=sl],
+ [darwin*], [
+ RUBY_APPEND_OPTION(XLDFLAGS, [-Wl,-u,_objc_msgSend])
+ DLEXT=bundle],
+ [os2-emx*], [
+ LOAD_RELATIVE=1
+ DLEXT=dll],
+ [cygwin*|mingw*|*djgpp*], [
+ LOAD_RELATIVE=1
+ DLEXT=so],
+ [
+ DLEXT=so])
+fi
+if test "$rb_cv_dlopen:$load_relative" = yes:yes; then
+ AC_CHECK_FUNCS(dladdr)
+ if test "$ac_cv_func_dladdr" = yes; then
+ LOAD_RELATIVE=1
+ fi
+fi
+if test x"$LOAD_RELATIVE" = x1; then
+ load_relative=yes
+else
+ unset load_relative
fi
-AC_SUBST(STRIP)dnl
+len=2 # .rb
+n=`expr "$DLEXT" : '.*'`; test "$n" -gt "$len" && len=$n
+n=`expr "$DLEXT2" : '.*'`; test "$n" -gt "$len" && len=$n
+AC_DEFINE_UNQUOTED(DLEXT_MAXLEN, `expr $len + 1`)
+test ".$DLEXT" = "." || AC_DEFINE_UNQUOTED(DLEXT, ".$DLEXT")
+test ".$DLEXT2" = "." || AC_DEFINE_UNQUOTED(DLEXT2, ".$DLEXT2")
+AC_SUBST(DLEXT)
+
if test "$with_dln_a_out" = yes; then
STRIP=true
else
- STRIP=strip
+ AC_CHECK_TOOL(STRIP, strip, :)dnl
fi
-case "$host_os" in
- linux*)
- STRIP='strip -S -x';;
- nextstep*)
- STRIP='strip -A -n';;
-esac
+AS_CASE(["$target_os"],
+ [linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu], [
+ STRIP="$STRIP -S -x"],
+ [darwin*], [
+ STRIP="$STRIP -A -n"])
+AC_ARG_WITH(ext,
+ AC_HELP_STRING([--with-ext=EXTS],
+ [pass to --with-ext option of extmk.rb]))
+AC_ARG_WITH(out-ext,
+ AC_HELP_STRING([--with-out-ext=EXTS],
+ [pass to --without-ext option of extmk.rb]))
EXTSTATIC=
AC_SUBST(EXTSTATIC)dnl
AC_ARG_WITH(static-linked-ext,
- [--with-static-linked-ext link external modules statically],
- [case $withval in
- yes) STATIC=
- EXTSTATIC=static;;
- *) ;;
- esac])
-
-case "$host_os" in
- human*)
- AC_CHECK_LIB(signal, _harderr)
- AC_CHECK_LIB(hmem, hmemset)
- AC_CHECK_FUNCS(select)
- AC_MSG_CHECKING(whether PD libc _dtos18 fail to convert big number)
- AC_CACHE_VAL(rb_cv_missing__dtos18,
- [AC_TRY_RUN(
-changequote(<<, >>)dnl
-<<
-#include <stdio.h>
-main ()
-{
- char buf[256];
- sprintf (buf, "%g", 1e+300);
- exit (strcmp (buf, "1e+300") ? 0 : 1);
+ AS_HELP_STRING([--with-static-linked-ext], [link external modules statically]),
+ [AS_CASE([$withval],[yes],[STATIC=;EXTSTATIC=static])])
+if test x"$EXTSTATIC" = xstatic; then
+ ENCOBJS='enc/encinit.$(OBJEXT) enc/libenc.$(LIBEXT) enc/libtrans.$(LIBEXT)'
+ EXTOBJS='ext/extinit.$(OBJEXT)'
+ AC_DEFINE_UNQUOTED(EXTSTATIC, 1)
+fi
+AC_SUBST(ENCOBJS)
+AC_SUBST(EXTOBJS)
+
+if test -f "$srcdir/ext/Setup.$target_os"; then
+ setup="Setup.$target_os"
+else
+ setup=
+ for file in "$srcdir"/ext/Setup.*; do
+ AS_CASE(["$file"], [*~|*.bak|*.orig|*.rej|*.tmp], [continue])
+ setup=`basename "$file"`
+ AS_CASE(["$target_os"], [`expr "$setup" : 'Setup.\(.*\)'`*], [break])
+ platform=`sed '/^option *platform */!d;s///;s/|/*|/g;q' "$file"`
+ if test "x$platform" != x; then
+ eval "AS_CASE([\"\$target_os\"], [$platform*], [break])"
+ fi
+ setup=
+ done
+ : ${setup:=Setup}
+fi
+AC_SUBST(setup)
+
+if test x"${exec_prefix}" != xNONE; then
+ RUBY_EXEC_PREFIX="$exec_prefix"
+elif test x"$prefix" != xNONE; then
+ RUBY_EXEC_PREFIX="$prefix"
+else
+ RUBY_EXEC_PREFIX=$ac_default_prefix
+fi
+pat=`echo "${RUBY_EXEC_PREFIX}" | tr -c '\012' .`'\(.*\)'
+for var in bindir libdir; do
+ eval val='"$'$var'"'
+ AS_CASE(["$val"], ["${RUBY_EXEC_PREFIX}"*], [val='${exec_prefix}'"`expr \"$val\" : \"$pat\"`"])
+ eval $var='"$val"'
+done
+
+BTESTRUBY='$(MINIRUBY)'
+if test x"$cross_compiling" = xyes; then
+ test x"$MINIRUBY" = x && MINIRUBY="${RUBY-$BASERUBY} -I`$CHDIR .; pwd` "-r'$(arch)-fake'
+ XRUBY_LIBDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["libdir"]']`
+ XRUBY_RUBYLIBDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["rubylibdir"]']`
+ XRUBY_RUBYHDRDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["rubyhdrdir"]']`
+ AC_SUBST(XRUBY_LIBDIR)
+ AC_SUBST(XRUBY_RUBYLIBDIR)
+ AC_SUBST(XRUBY_RUBYHDRDIR)
+ PREP='$(arch)-fake.rb'
+ RUNRUBY_COMMAND='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'
+ RUNRUBY='$(RUNRUBY_COMMAND)'
+ XRUBY='$(MINIRUBY)'
+ TEST_RUNNABLE=no
+ CROSS_COMPILING=yes
+
+ if test "$host_os" = "nacl"; then
+ if test "$build_cpu" = "$host_cpu" || test "${nacl_cv_cpu_nick}" = "x86" -a "$host_cpu" = "i686"; then
+ nacl_cv_sel_ldr='`$(MINIRUBY) $(srcdir)/nacl/nacl-config.rb sel_ldr`'
+ nacl_cv_irt_core='`$(MINIRUBY) $(srcdir)/nacl/nacl-config.rb irt_core`'
+ nacl_cv_runnable_ld='`$(MINIRUBY) $(srcdir)/nacl/nacl-config.rb runnable_ld`'
+ nacl_cv_host_lib='`$(MINIRUBY) $(srcdir)/nacl/nacl-config.rb host_lib`'
+ TEST_RUNNABLE=yes
+ BTESTRUBY="${nacl_cv_sel_ldr} -a -B ${nacl_cv_irt_core} -w 1:3 -w 2:4"
+ BTESTRUBY="$BTESTRUBY -- ${nacl_cv_runnable_ld} --library-path ${nacl_cv_host_lib}"
+ BTESTRUBY="$BTESTRUBY `pwd`/"'miniruby$(EXEEXT) -I`cd $(srcdir)/lib; pwd` -I.'
+ BTESTRUBY="$BTESTRUBY"' -I$(EXTOUT)/common 3>&1 4>&2 1>/dev/null 2>/dev/null '
+ fi
+ fi
+else
+ MINIRUBY='./miniruby$(EXEEXT) -I$(srcdir)/lib -I.'
+ MINIRUBY="$MINIRUBY"' -I$(EXTOUT)/common'
+ PREP='miniruby$(EXEEXT)'
+ RUNRUBY_COMMAND='$(MINIRUBY) $(srcdir)/tool/runruby.rb --extout=$(EXTOUT) $(RUNRUBYOPT)'
+ RUNRUBY='$(RUNRUBY_COMMAND) --'
+ XRUBY='$(RUNRUBY)'
+ TEST_RUNNABLE=yes
+ CROSS_COMPILING=no
+fi
+AC_SUBST(TEST_RUNNABLE)
+AC_SUBST(CROSS_COMPILING)
+AC_SUBST(MINIRUBY)
+AC_SUBST(BTESTRUBY)
+AC_SUBST(PREP)
+AC_SUBST(RUNRUBY_COMMAND)
+AC_SUBST(RUNRUBY)
+AC_SUBST(XRUBY)
+AC_SUBST(EXTOUT, [${EXTOUT=.ext}])
+
+FIRSTMAKEFILE=""
+LIBRUBY_A='lib$(RUBY_SO_NAME)-static.a'
+LIBRUBY='$(LIBRUBY_A)'
+LIBRUBYARG_STATIC='-l$(RUBY_SO_NAME)-static'
+LIBRUBYARG='$(LIBRUBYARG_STATIC)'
+SOLIBS=
+
+AS_CASE(["$target_os"],
+ [cygwin*|mingw*|beos*|haiku*|darwin*|os2-emx*], [
+ : ${DLDLIBS=""}
+ ],
+ [
+ DLDLIBS="$DLDLIBS -lc"
+ ])
+
+AC_ARG_ENABLE(multiarch,
+ AS_HELP_STRING([--enable-multiarch], [enable multiarch compatible directories]),
+ [multiarch=], [unset multiarch])
+if test ${multiarch+set}; then
+ AC_DEFINE(ENABLE_MULTIARCH)
+fi
+
+archlibdir='${libdir}/${arch}'
+sitearchlibdir='${libdir}/${sitearch}'
+archincludedir='${includedir}/${arch}'
+sitearchincludedir='${includedir}/${sitearch}'
+
+AC_ARG_WITH(soname,
+ AS_HELP_STRING([--with-soname=SONAME], [base name of shared library]),
+ [RUBY_SO_NAME=$withval], [RUBY_SO_NAME='$(RUBY_BASE_NAME)'])
+
+LIBRUBY_LDSHARED=$LDSHARED
+LIBRUBY_DLDFLAGS=$DLDFLAGS
+LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY)'
+LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so'
+ENABLE_SHARED=no
+
+AC_ARG_ENABLE(shared,
+ AS_HELP_STRING([--enable-shared], [build a shared library for Ruby]),
+ [enable_shared=$enableval])
+libprefix=${multiarch+'$(archlibdir)'}${multiarch-'$(libdir)'}
+LIBRUBY_RELATIVE=${load_relative-no}
+AS_CASE("$enable_shared", [yes], [
+ LIBRUBY='$(LIBRUBY_SO)'
+ LIBRUBYARG_SHARED='-l$(RUBY_SO_NAME)'
+ LIBRUBYARG='$(LIBRUBYARG_SHARED)'
+ LIBRUBY_RELATIVE=no
+ test -z "$CCDLFLAGS" || CFLAGS="$CFLAGS $CCDLFLAGS"
+ ENABLE_SHARED=yes
+ if test "$rb_cv_binary_elf" = yes; then
+ SOLIBS='$(LIBS)'
+ fi
+
+ # libdir can be overridden in config.site file (on OpenSUSE at least).
+ libdir_basename=lib
+ if test "$bindir" = '${exec_prefix}/bin'; then
+ AS_CASE(["$libdir"], ['${exec_prefix}/'*], [libdir_basename=`basename "$libdir"`])
+ fi
+ AC_DEFINE_UNQUOTED(LIBDIR_BASENAME, ["${libdir_basename}"])
+ libdir_basename="${libdir_basename}"${multiarch+'/${arch}'}
+
+ AS_CASE(["$target_os"],
+ [freebsd*|dragonfly*], [],
+ [
+ if test "$GCC" = yes; then
+ RUBY_TRY_LDFLAGS([${linker_flag}--no-undefined], [no_undefined=yes], [no_undefined=no])
+ if test "no_undefined" = yes; then
+ RUBY_APPEND_OPTION(EXTLDFLAGS, [${linker_flag}--no-undefined])
+ fi
+ fi
+ ])
+
+ AS_CASE(["$target_os"],
+ [sunos4*], [
+ LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so'
+ ],
+ [linux* | gnu* | k*bsd*-gnu | atheos* | kopensolaris*-gnu], [
+ LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR)'" $LDFLAGS_OPTDIR"
+ LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so'
+ if test "$load_relative" = yes; then
+ libprefix="'\$\${ORIGIN}/../${libdir_basename}'"
+ LIBRUBY_RPATHFLAGS="-Wl,-rpath,${libprefix}"
+ LIBRUBY_RELATIVE=yes
+ fi
+ ],
+ [freebsd*|dragonfly*], [
+ SOLIBS='$(LIBS)'
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)'
+ if test "$rb_cv_binary_elf" != "yes" ; then
+ LIBRUBY_SO="$LIBRUBY_SO.\$(TEENY)"
+ LIBRUBY_ALIASES=''
+ fi
+ ],
+ [netbsd*], [
+ SOLIBS='$(LIBS)'
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR).$(TEENY)'
+ LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)'" $LDFLAGS_OPTDIR"
+ if test "$rb_cv_binary_elf" = yes; then # ELF platforms
+ LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR) lib$(RUBY_SO_NAME).so'
+ else # a.out platforms
+ LIBRUBY_ALIASES=""
+ fi
+ ],
+ [openbsd*|mirbsd*], [
+ SOLIBS='$(LIBS)'
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR).'`expr ${MINOR} \* 10 + ${TEENY}`
+ ],
+ [solaris*], [
+ SOLIBS='$(LIBS)'
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)'
+ LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY) lib$(RUBY_SO_NAME).so'
+ if test "$GCC" = yes; then
+ LIBRUBY_DLDFLAGS="$DLDFLAGS "'-Wl,-h,$(@F)'
+ else
+ LIBRUBY_DLDFLAGS="$DLDFLAGS "'-h $(@F)'
+ fi
+ XLDFLAGS="$XLDFLAGS "'-R${libdir}'
+ ],
+ [hpux*], [
+ XLDFLAGS="$XLDFLAGS "'-Wl,+s,+b,$(libdir)'
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).sl.$(MAJOR).$(MINOR).$(TEENY)'
+ LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).sl.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).sl'
+ ],
+ [aix*], [
+ LIBRUBY_DLDFLAGS="${linker_flag}-bnoentry $XLDFLAGS $LDFLAGS_OPTDIR"
+ LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}'
+ SOLIBS='-lm -lc'
+ ],
+ [beos*], [
+ AS_CASE(["$target_cpu"],
+ [powerpc*], [
+ LIBRUBY_DLDFLAGS="-f ruby.exp -lnet -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o $LDFLAGS_OPTDIR"
+ ])
+ ],
+ [darwin*], [
+ RUBY_SO_NAME="$RUBY_SO_NAME"'.$(MAJOR).$(MINOR).$(TEENY)'
+ LIBRUBY_LDSHARED='$(CC) -dynamiclib'
+ if test "$load_relative" = yes; then
+ libprefix="@executable_path/../${libdir_basename}"
+ LIBRUBY_RELATIVE=yes
+ fi
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-install_name '${libprefix}'/$(LIBRUBY_SO)'
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-current_version $(MAJOR).$(MINOR).$(TEENY)'
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-compatibility_version $(ruby_version)'
+ if test "$visibility_option" = ld; then
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,_Init_*'
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,*_threadptr_*'
+ fi
+ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "' $(XLDFLAGS)'
+ LIBRUBY_SO='lib$(RUBY_SO_NAME).dylib'
+ LIBRUBY_ALIASES='lib$(RUBY_BASE_NAME).$(MAJOR).$(MINOR).dylib lib$(RUBY_INSTALL_NAME).dylib'
+ SOLIBS='$(LIBS)'
+ ],
+ [interix*], [
+ LIBRUBYARG_SHARED='-L. -L${libdir} -l$(RUBY_SO_NAME)'
+ ],
+ [mingw*|cygwin*|mswin*], [
+ LIBRUBY_RELATIVE=yes
+ ])
+], [
+ LIBRUBYARG_SHARED=
+
+ # enable PIE if possible
+ pie=
+ AS_CASE(["$target_os"],
+ [haiku], [
+ # gcc supports PIE, but doesn't work correctly in Haiku
+ pie=no
+ ],
+ [nacl], [
+ # -pie implies -shared for NaCl.
+ pie=no
+ ])
+ if test "$GCC" = yes -a -z "$EXTSTATIC" -a "x$pie" != xno; then
+ RUBY_TRY_CFLAGS(-fPIE, [pie=yes], [pie=no])
+ if test "$pie" = yes; then
+ # Use -fPIE when testing -pie. RUBY_TRY_LDFLAGS sets
+ # $save_CFLAGS internally, so set other name here.
+ save_CFLAGS_before_pie="$CFLAGS"
+ CFLAGS="$CFLAGS -fPIE"
+
+ # gcc need -pie but clang need -Wl,-pie.
+ for pie in -pie -Wl,-pie; do
+ RUBY_TRY_LDFLAGS([$pie], [], [pie=])
+ if test "x$pie" != x; then
+ RUBY_APPEND_OPTION(XCFLAGS, -fPIE)
+ RUBY_APPEND_OPTION(XLDFLAGS, $pie)
+ break
+ fi
+ done
+ CFLAGS="$save_CFLAGS_before_pie"
+ fi
+ fi
+])
+if test "$enable_rpath" = yes; then
+ test -z "$LIBRUBY_RPATHFLAGS" || LIBRUBY_RPATHFLAGS="$LIBRUBY_RPATHFLAGS "
+ LIBRUBY_RPATHFLAGS="$LIBRUBY_RPATHFLAGS${linker_flag}-R ${linker_flag}${libprefix}"
+ test "x$cross_compiling" = xyes || LIBRUBY_RPATHFLAGS="$LIBRUBY_RPATHFLAGS -L${libprefix}"
+ LIBRUBYARG_SHARED="$LIBRUBY_RPATHFLAGS $LIBRUBYARG_SHARED"
+ LIBRUBYARG_STATIC="$LIBRUBY_RPATHFLAGS $LIBRUBYARG_STATIC"
+fi
+AC_SUBST(LIBRUBY_RELATIVE)
+
+LDFLAGS="-L. $LDFLAGS"
+AC_SUBST(ARCHFILE)
+
+if test "$EXEEXT" = .exe; then
+ EXECUTABLE_EXTS='".exe",".com",".cmd",".bat"'
+ AC_DEFINE_UNQUOTED(EXECUTABLE_EXTS, $EXECUTABLE_EXTS)
+ EXECUTABLE_EXTS=`echo $EXECUTABLE_EXTS | tr -d '"' | tr , ' '`
+ AC_SUBST(EXECUTABLE_EXTS)
+fi
+
+AC_ARG_ENABLE(dtrace,
+ AS_HELP_STRING([--enable-dtrace],
+ [enable DTrace for tracing inside ruby. enabled by default on systems having dtrace]),
+ [enable_dtrace=$enableval], [enable_dtrace=auto])
+
+if test "${enable_dtrace}" = "auto"; then
+ if test x"$DTRACE" != x -a x"$cross_compiling" != xyes; then
+ RUBY_DTRACE_AVAILABLE()
+ enable_dtrace=$rb_cv_dtrace_available
+ else
+ enable_dtrace=no
+ fi
+fi
+
+LIBRUBY_A_OBJS='$(OBJS)'
+if test "${enable_dtrace}" = "yes"; then
+ if test -z "$DTRACE"; then
+ AC_MSG_ERROR([dtrace(1) is missing])
+ elif test "$cross_compiling" = yes; then
+ AC_MSG_ERROR([--enable-dtrace, however, cross compiling])
+ else
+ RUBY_DTRACE_AVAILABLE()
+ enable_dtrace=$rb_cv_dtrace_available
+ if test "${enable_dtrace}" = "no"; then
+ AC_MSG_ERROR([--enable-dtrace, however, USDT is not available])
+ fi
+ RUBY_DTRACE_POSTPROCESS()
+ if test "$rb_cv_prog_dtrace_g" = 'yes'; then
+ DTRACE_OBJ='probes.$(OBJEXT)'
+ DTRACE_GLOMMED_OBJ='ruby-glommed.$(OBJEXT)'
+ LIBRUBY_A_OBJS='$(DTRACE_GLOMMED_OBJ)'
+ fi
+ AS_CASE("${target_os}", [freebsd*], [
+ # FreeBSD's dtrace requires libelf
+ LIBS="-lelf $LIBS"
+ ])
+ fi
+ DTRACE_EXT=d
+else
+ DTRACE_EXT=dmyh
+fi
+AC_SUBST(DTRACE_EXT)
+AC_SUBST(DTRACE_OBJ)
+AC_SUBST(DTRACE_GLOMMED_OBJ)
+AC_SUBST(LIBRUBY_A_OBJS)
+
}
->>,
-changequote([, ])dnl
-rb_cv_missing__dtos18=yes, rb_cv_missing__dtos18=no)])
- AC_MSG_RESULT($rb_cv_missing__dtos18)
- if test "$rb_cv_missing__dtos18" = yes; then
- AC_DEFINE(MISSING__DTOS18)
- fi
- AC_MSG_CHECKING(whether PD libc fconvert fail to round)
- AC_CACHE_VAL(rb_cv_missing_fconvert,
- [AC_TRY_RUN(
-changequote(<<, >>)dnl
-<<
-#include <stdio.h>
-#include <math.h>
-main ()
+{ # build section
+
+dnl build rdoc index if requested
+RDOCTARGET=""
+CAPITARGET=""
+AC_ARG_ENABLE(install-doc,
+ AS_HELP_STRING([--disable-install-doc], [do not install neither rdoc indexes nor C API documents during install]),
+ [install_doc=$enableval], [install_doc=yes])
+AC_ARG_ENABLE(install-rdoc,
+ AS_HELP_STRING([--disable-install-rdoc], [do not install rdoc indexes during install]),
+ [install_rdoc=$enableval], [install_rdoc=yes])
+AC_ARG_ENABLE(install-capi,
+ AS_HELP_STRING([--disable-install-capi], [do not install C API documents during install]),
+ [install_capi=$enableval], [install_capi=yes])
+
+if test "$install_doc" != no; then
+ if test "$install_rdoc" != no; then
+ RDOCTARGET="rdoc"
+ else
+ RDOCTARGET="nodoc"
+ fi
+ if test "$install_capi" != no -a -n "$DOXYGEN"; then
+ CAPITARGET="capi"
+ else
+ CAPITARGET="nodoc"
+ fi
+else
+ RDOCTARGET="nodoc"
+ CAPITARGET="nodoc"
+fi
+
+AC_SUBST(RDOCTARGET)
+AC_SUBST(CAPITARGET)
+
+AS_CASE(["$RDOCTARGET:$CAPITARGET"],[nodoc:nodoc],[INSTALLDOC=nodoc],[INSTALLDOC=all])
+AC_SUBST(INSTALLDOC)
+
+if test "$rb_with_pthread" = "yes"; then
+ THREAD_MODEL=pthread
+fi
+AC_CACHE_CHECK([for prefix of external symbols], rb_cv_symbol_prefix, [
+ AC_TRY_COMPILE([extern void conftest_external(void) {}], [], [
+ rb_cv_symbol_prefix=`$NM conftest.$ac_objext |
+ sed -n ['/.*T[ ]\([^ ]*\)conftest_external.*/!d;s//\1/p;q']`
+ ],
+ [rb_cv_symbol_prefix=''])
+ test -n "$rb_cv_symbol_prefix" || rb_cv_symbol_prefix=NONE
+])
+SYMBOL_PREFIX="$rb_cv_symbol_prefix"
+test "x$SYMBOL_PREFIX" = xNONE && SYMBOL_PREFIX=''
+DLNOBJ=dln.o
+AC_ARG_ENABLE(dln,
+ AC_HELP_STRING([--disable-dln], [disable dynamic link feature]),
+ [test "$enableval" = yes || DLNOBJ=dmydln.o])
+AC_SUBST(DLNOBJ)
+MINIDLNOBJ=dmydln.o
+
+AS_CASE(["$target_os"],
+ [linux*], [
+ ],
+ [netbsd*], [
+ RUBY_APPEND_OPTION(CFLAGS, -pipe)
+ ],
+ [darwin*], [
+ RUBY_APPEND_OPTION(CFLAGS, -pipe)
+ RUBY_APPEND_OPTION(XLDFLAGS, [-framework CoreFoundation])
+ RUBY_APPEND_OPTION(LIBRUBYARG_STATIC, [-framework CoreFoundation])
+ ],
+ [os2-emx], [
+ AC_LIBOBJ([os2])
+ CFLAGS="$CFLAGS -DOS2"
+ LIBRUBY_A=`echo $LIBRUBY_A | sed 's/^lib//'`
+ LIBRUBY_SO=`echo $LIBRUBY_SO | sed 's/^lib//'`
+ LIBRUBY_ALIASES=`for i in $LIBRUBY_ALIASES; do echo "$i"; done | sed 's/^lib//'`
+ ],
+ [osf*], [
+ if test "$GCC" != "yes" ; then
+ # compile something small: taint.c is fine for this.
+ # the main point is the '-v' flag of 'cc'.
+ AS_CASE(["`cc -v -I. -c main.c -o /tmp/main.o 2>&1`"],
+ [*/gemc_cc*], [ # we have the new DEC GEM CC
+ CFLAGS="$CFLAGS -oldc"
+ ],
+ [ # we have the old MIPS CC
+ ])
+ # cleanup
+ rm -f /tmp/main.o
+ CFLAGS="$CFLAGS -std"
+ fi
+ ],
+ [beos*], [
+ AS_CASE(["$target_cpu"],[powerpc*], [CFLAGS="$CFLAGS -relax_pointers"])
+ CPPFLAGS="$CPPFLAGS -I/boot/home/config/include"
+ ],
+ [cygwin*|mingw*], [
+ RUBY_SO_NAME="${RUBY_SO_NAME}"'$(MAJOR)$(MINOR)$(TEENY)'
+ LIBRUBY_DLDFLAGS="${DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)'
+ AS_CASE(["$target_os"],
+ [cygwin*], [
+ if test x"$enable_shared" = xyes; then
+ LIBRUBY_SO='cyg$(RUBY_SO_NAME)'.dll
+ LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)'
+ fi
+ ],
+ [mingw*], [
+ RUBY_SO_NAME="${rb_cv_msvcrt}-${RUBY_SO_NAME}"
+ if test x"${target_cpu}" != xi386; then
+ RUBY_SO_NAME="${target_cpu}-${RUBY_SO_NAME}"
+ fi
+ if test x"$enable_shared" = xyes; then
+ LIBRUBY_SO='$(RUBY_SO_NAME)'.dll
+ LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)'
+ fi
+ EXPORT_PREFIX=' '
+ DLDFLAGS="${DLDFLAGS}"' $(DEFFILE)'
+ AC_LIBOBJ([win32/win32])
+ AC_LIBOBJ([win32/file])
+ COMMON_LIBS=m
+# COMMON_MACROS="WIN32_LEAN_AND_MEAN="
+ COMMON_HEADERS="winsock2.h windows.h"
+ THREAD_MODEL=win32
+ PLATFORM_DIR=win32
+ ])
+ LIBRUBY_ALIASES=''
+ FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in
+ SOLIBS='$(LIBS)'
+ if test x"$enable_shared" = xyes; then
+ LIBRUBY='lib$(RUBY_SO_NAME).dll.a'
+ else
+ LIBRUBY_SO=dummy
+ LIBRUBY='lib$(RUBY_SO_NAME).a'
+ LIBRUBYARG='-l$(RUBY_SO_NAME)'
+ fi
+ ],
+ [hpux*], [
+ AS_CASE(["$YACC"],[*yacc*], [
+ XCFLAGS="$XCFLAGS -DYYMAXDEPTH=300"
+ YACC="$YACC -Nl40000 -Nm40000"
+ ])],
+ [nacl], [
+ FIRSTMAKEFILE=GNUmakefile:nacl/GNUmakefile.in
+ ])
+
+AS_CASE(["$with_gmp: $SOLIBS "], [no:* | *' -lgmp '*|*' $(LIBS) '*], [],
+ [SOLIBS="-lgmp $SOLIBS"])
+
+MINIOBJS="$MINIDLNOBJ"
+
+AS_CASE(["$THREAD_MODEL"],
+[pthread], [AC_CHECK_HEADERS(pthread.h)],
+[win32], [],
+[""], [AC_MSG_ERROR(thread model is missing)],
+ [AC_MSG_ERROR(unknown thread model $THREAD_MODEL)])
+
+AC_ARG_ENABLE(debug-env,
+ AS_HELP_STRING([--enable-debug-env], [enable RUBY_DEBUG environment variable]),
+ [AC_DEFINE(RUBY_DEBUG_ENV)])
+
+AS_CASE(["$FIRSTMAKEFILE"], [*GNUmakefile:*], [gnumake=yes], [
+ AC_MSG_CHECKING([if ${MAKE-make} is GNU make])
+ mkdir conftest.dir
+ echo "all:; @echo yes" > conftest.dir/GNUmakefile
+ echo "all:; @echo no" > conftest.dir/Makefile
+ gnumake=`(cd conftest.dir; ${MAKE-make})`
+ rm -fr conftest.dir
+ AS_CASE(["$gnumake"],
+ [*yes*], [
+ FIRSTMAKEFILE=GNUmakefile:template/GNUmakefile.in
+ gnumake=yes],
+ [
+ gnumake=no])
+ AC_MSG_RESULT($gnumake)
+])
+AS_IF([test "$gnumake" = yes], [ NULLCMD=: ], [
+ AC_MSG_CHECKING([for safe null command for ${MAKE-make}])
+ mkdir conftest.dir
+ NULLCMD=
+ for cmd in : true; do
+ echo 'A=1' > conftest.dir/Makefile
+ echo 'B=$(A:1=@'$cmd')' >> conftest.dir/Makefile
+ echo 'all:; $B 1 2 3 4 5 6 7 8 9' >> conftest.dir/Makefile
+ if (cd conftest.dir; ${MAKE-make} >/dev/null 2>/dev/null); then
+ NULLCMD=$cmd
+ break
+ fi
+ done
+ rm -fr conftest.dir
+ if test -z "$NULLCMD"; then
+ AC_MSG_ERROR(no candidate for safe null command)
+ fi
+ AC_MSG_RESULT($NULLCMD)
+])
+AC_SUBST(NULLCMD)
+
+if test "${universal_binary-no}" = yes ; then
+ AC_CACHE_CHECK([for architecture macros], rb_cv_architecture_macros, [
+ mv confdefs.h confdefs1.h
+ : > confdefs.h
+ AC_TRY_COMPILE([@%:@if defined __`echo ${universal_archnames} |
+ sed 's/=[^ ]*//g;s/ /__ || defined __/g'`__
+@%:@else
+@%:@error
+>>>>>><<<<<<
+@%:@endif], [],
+[
+ rb_cv_architecture_macros=yes
+ mv -f confdefs1.h confdefs.h
+], [
+ rb_cv_architecture_macros=no
+ archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
+ new_cflags=`echo "$CFLAGS" | sed "s|$archflagpat"'||'`
+ for archs in ${universal_archnames}; do
+ cpu=${archs@%:@*=}
+ archs=${archs%=*}
+ CFLAGS="$new_cflags -arch $archs"
+ archs="__${archs}__"
+ AC_MSG_CHECKING([for macro ${archs} on ${cpu}])
+ AC_TRY_COMPILE([@%:@ifndef ${archs}
+@%:@error
+@%:@endif], [], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+ done
+ mv -f confdefs1.h confdefs.h
+ AC_MSG_ERROR([failed])
+ ])])
+fi
+
+AC_CHECK_FUNC(memmem, [
+ AC_CACHE_CHECK(for broken memmem, rb_cv_broken_memmem, [
+ AC_TRY_RUN([
+#include <string.h>
+
+int
+main()
{
- char buf[256];
- sprintf (buf, "%f", log(exp(1.0)));
- exit (strcmp (buf, "1.000000") ? 0 : 1);
+ char *str = "hogefugafoobar";
+ char *rs = "foo";
+ char *empty = "";
+ char *p;
+
+ p = memmem(str, strlen(str), rs, strlen(rs));
+ if (p == str+8) {
+ p = memmem(str, strlen(str), empty, strlen(empty));
+ if (p == str)
+ return 0;
+ else
+ return 1;
+ }
+ else {
+ return 1;
+ }
}
->>,
-changequote([, ])dnl
-rb_cv_missing_fconvert=yes, rb_cv_missing_fconvert=no)])
- AC_MSG_RESULT($rb_cv_missing_fconvert)
- if test "$rb_cv_missing_fconvert" = yes; then
- AC_DEFINE(MISSING_FCONVERT)
- fi
- LIBOBJS="$LIBOBJS x68.o"
- CFLAGS="$CFLAGS -fansi-only -cc1-stack=196608 -cpp-stack=2694144"
- binsuffix=.x
- setup=Setup.x68
- ;;
- *)
- binsuffix=
- setup=Setup
- ;;
-esac
-AC_SUBST(binsuffix)
-AC_SUBST(setup)
+ ],
+ rb_cv_broken_memmem=no,
+ rb_cv_broken_memmem=yes,
+ rb_cv_broken_memmem=yes)
+ ])
+ if test "$rb_cv_broken_memmem" = no; then
+ AC_DEFINE(HAVE_MEMMEM, 1)
+ fi
+])
+
-if test "$prefix" = NONE; then
- prefix=$ac_default_prefix
+CPPFLAGS="$CPPFLAGS "'$(DEFS)'
+test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}'
+if test -n "${cflags+set}"; then
+ cflagspat=`eval echo '"'"${cflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/^ *$/ /'`
+ CFLAGS=`echo " $CFLAGS " | sed "s|$cflagspat"'|${cflags}|;s/^ *//;s/ *$//'`
+fi
+if test -n "${cxxflags+set}"; then
+ cxxflagspat=`eval echo '"'"${cxxflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/^ *$/ /'`
+ CXXFLAGS=`echo " $CXXFLAGS " | sed "s|$cxxflagspat"'|${cxxflags}|;s/^ *//;s/ *$//'`
+fi
+if test "${ARCH_FLAG}"; then
+ archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
+ CFLAGS=`echo "$CFLAGS" | sed "s| *$archflagpat"'||'`
+ CXXFLAGS=`echo "$CXXFLAGS" | sed "s| *$archflagpat"'||'`
+ LDFLAGS=`echo "$LDFLAGS" | sed "s| *$archflagpat"'||'`
fi
+warnflags="$rb_cv_warnflags"
+AC_SUBST(cppflags, [])dnl
+AC_SUBST(cflags, ["$orig_cflags "'${optflags} ${debugflags} ${warnflags}'])dnl
+AC_SUBST(cxxflags, ["$orig_cxxflags "'${optflags} ${debugflags} ${warnflags}'])dnl
+AC_SUBST(optflags)dnl
+AC_SUBST(debugflags)dnl
+AC_SUBST(warnflags)dnl
+AC_SUBST(strict_warnflags)dnl
+AC_SUBST(XCFLAGS)dnl
+AC_SUBST(XLDFLAGS)dnl
+AC_SUBST(EXTLDFLAGS)dnl
+AC_SUBST(EXTDLDFLAGS)dnl
+AC_SUBST(LIBRUBY_LDSHARED)
+AC_SUBST(LIBRUBY_DLDFLAGS)
+AC_SUBST(RUBY_INSTALL_NAME)
+AC_SUBST(rubyw_install_name)
+AC_SUBST(RUBYW_INSTALL_NAME)
+AC_SUBST(RUBY_SO_NAME)
+AC_SUBST(LIBRUBY_A)
+AC_SUBST(LIBRUBY_SO)
+AC_SUBST(LIBRUBY_ALIASES)
+AC_SUBST(LIBRUBY)
+AC_SUBST(LIBRUBYARG)
+AC_SUBST(LIBRUBYARG_STATIC)
+AC_SUBST(LIBRUBYARG_SHARED)
+AC_SUBST(SOLIBS)
+AC_SUBST(DLDLIBS)
+AC_SUBST(ENABLE_SHARED)
+AC_SUBST(MAINLIBS)
+AC_SUBST(COMMON_LIBS)
+AC_SUBST(COMMON_MACROS)
+AC_SUBST(COMMON_HEADERS)
+AC_SUBST(EXPORT_PREFIX)
+AC_SUBST(SYMBOL_PREFIX)
+AC_SUBST(MINIOBJS)
+AC_SUBST(THREAD_MODEL)
+AC_SUBST(PLATFORM_DIR)
+
+firstmf=`echo $FIRSTMAKEFILE | sed 's/:.*//'`
+firsttmpl=`echo $FIRSTMAKEFILE | sed 's/.*://'`
+MAKEFILES="Makefile $firstmf"
+MAKEFILES="`echo $MAKEFILES`"
+AC_SUBST(MAKEFILES)
+
+ri_prefix=
+test "$program_prefix" != NONE &&
+ ri_prefix=$program_prefix
+
+ri_suffix=
+test "$program_suffix" != NONE &&
+ ri_suffix=$program_suffix
+
+RUBY_INSTALL_NAME="${ri_prefix}"'$(RUBY_BASE_NAME)'"${ri_suffix}"
+AS_CASE(["$target_os"],
+ [cygwin*|mingw*], [
+ RUBYW_INSTALL_NAME="${ri_prefix}"'$(RUBYW_BASE_NAME)'"${ri_suffix}"
+ rubyw_install_name='$(RUBYW_INSTALL_NAME)'
+ ])
-if test "$fat_binary" = yes ; then
- CFLAGS="$CFLAGS -pipe $ARCH_FLAG"
+rubylibprefix='${libdir}/${RUBY_BASE_NAME}'
+AC_ARG_WITH(rubylibprefix,
+ AS_HELP_STRING([--with-rubylibprefix=DIR], [prefix for ruby libraries [[LIBDIR/RUBY_BASE_NAME]]]),
+ [if test "x$withval" = xno; then
+ AC_MSG_ERROR([No ruby, No libprefix])
+ fi
+ rubylibprefix="$withval"])
+AC_SUBST(rubylibprefix)
+rubylibdir='${rubylibprefix}/${ruby_version}'
+rubyarchdir=${multiarch+'${rubyarchprefix}/${ruby_version}'}${multiarch-'${rubylibdir}/${arch}'}
+
+rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
+AC_ARG_WITH(rubyarchprefix,
+ AS_HELP_STRING([--with-rubyarchprefix=DIR],
+ [prefix for architecture dependent ruby libraries [[RUBYLIBPREFIX/ARCH]]]),
+ [rubyarchprefix="$withval"])
+AC_SUBST(rubyarchprefix)
+
+rubysitearchprefix=${multiarch+'${sitearchlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${sitearch}'}
+AC_ARG_WITH(rubysitearchprefix,
+ AS_HELP_STRING([--with-rubysitearchprefix=DIR],
+ [prefix for architecture dependent site libraries [[RUBYLIBPREFIX/SITEARCH]]]),
+ [rubysitearchprefix="$withval"])
+AC_SUBST(rubysitearchprefix)
+
+RI_BASE_NAME=`echo ${RUBY_BASE_NAME} | sed 's/ruby/ri/'`
+ridir='${datarootdir}/${RI_BASE_NAME}'
+AC_ARG_WITH(ridir,
+ AS_HELP_STRING([--with-ridir=DIR], [ri documentation [[DATAROOTDIR/ri]]]),
+ [ridir=$withval])
+AC_SUBST(ridir)
+AC_SUBST(RI_BASE_NAME)
+
+AC_ARG_WITH(ruby-version,
+ AS_HELP_STRING([--with-ruby-version=STR], [ruby version string for version specific directories [[full]] (full|minor|STR)]),
+ [ruby_version=$withval],
+ [ruby_version=full])
+unset RUBY_LIB_VERSION
+unset RUBY_LIB_VERSION_STYLE
+AS_CASE(["$ruby_version"],
+ [full], [RUBY_LIB_VERSION_STYLE='3 /* full */'],
+ [minor], [RUBY_LIB_VERSION_STYLE='2 /* minor */'])
+if test ${RUBY_LIB_VERSION_STYLE+set}; then
+ {
+ echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
+ echo '#define STRINGIZE(x) x'
+ test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
+ echo '#include "verconf.h"'
+ echo '#include "version.h"'
+ echo 'ruby_version=RUBY_LIB_VERSION'
+ } > conftest.c
+ test -f verconf.h || > verconf.h
+ ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`"
+ eval $ruby_version
+elif test -z "${ruby_version}"; then
+ AC_MSG_ERROR([No ruby version, No place for bundled libraries])
+else
+ RUBY_LIB_VERSION="\"${ruby_version}\""
fi
+AC_SUBST(RUBY_LIB_VERSION_STYLE)
+AC_SUBST(RUBY_LIB_VERSION)
-AC_DEFINE_UNQUOTED(RUBY_LIB, "${prefix}/lib/ruby")
-AC_SUBST(arch)dnl
+AC_ARG_WITH(sitedir,
+ AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]], "no" to disable site directory]),
+ [sitedir=$withval],
+ [sitedir='${rubylibprefix}/site_ruby'])
+sitelibdir='${sitedir}/${ruby_version}'
-if test "$fat_binary" = yes ; then
- arch="fat-${host_os}"
+AC_ARG_WITH(sitearchdir,
+ AS_HELP_STRING([--with-sitearchdir=DIR],
+ [architecture dependent site libraries in DIR [[SITEDIR/SITEARCH]], "no" to disable site directory]),
+ [sitearchdir=$withval],
+ [sitearchdir=${multiarch+'${rubysitearchprefix}/site_ruby/${ruby_version}'}${multiarch-'${sitelibdir}/${sitearch}'}])
- AC_DEFINE_UNQUOTED(RUBY_THIN_ARCHLIB,
- "${prefix}/lib/ruby/" __ARCHITECTURE__ "-${host_os}" )
+AC_ARG_WITH(vendordir,
+ AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]], "no" to disable vendor directory]),
+ [vendordir=$withval],
+ [vendordir='${rubylibprefix}/vendor_ruby'])
+vendorlibdir='${vendordir}/${ruby_version}'
- AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${prefix}/lib/ruby/${arch}")
- AC_DEFINE_UNQUOTED(RUBY_PLATFORM, __ARCHITECTURE__ "-${host_os}" )
+AC_ARG_WITH(vendorarchdir,
+ AS_HELP_STRING([--with-vendorarchdir=DIR],
+ [architecture dependent vendor libraries in DIR [[VENDORDIR/SITEARCH]], "no" to disable vendor directory]),
+ [vendorarchdir=$withval],
+ [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby/${ruby_version}'}${multiarch-'${vendorlibdir}/${sitearch}'}])
+
+if test "${LOAD_RELATIVE+set}"; then
+ AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
+ RUBY_EXEC_PREFIX=''
+fi
+
+AC_SUBST(RUBY_EXEC_PREFIX)
+
+AC_SUBST(libdirname, ${multiarch+arch}libdir)
+AC_SUBST(archlibdir)dnl
+AC_SUBST(sitearchlibdir)dnl
+AC_SUBST(archincludedir)dnl
+AC_SUBST(sitearchincludedir)dnl
+AC_SUBST(arch)dnl
+AC_SUBST(sitearch)dnl
+AC_SUBST(ruby_version)dnl
+AC_SUBST(rubylibdir)dnl
+AC_SUBST(rubyarchdir)dnl
+AC_SUBST(sitedir)dnl
+AC_SUBST(sitelibdir)dnl
+AC_SUBST(sitearchdir)dnl
+AC_SUBST(vendordir)dnl
+AC_SUBST(vendorlibdir)dnl
+AC_SUBST(vendorarchdir)dnl
+
+AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
+
+if test "${universal_binary-no}" = yes ; then
+ arch="universal-${target_os}"
+ AC_CACHE_CHECK(whether __ARCHITECTURE__ is available, rb_cv_architecture_available,
+ AC_TRY_COMPILE([const char arch[] = __ARCHITECTURE__;], [puts(arch);],
+ [rb_cv_architecture_available=yes], [rb_cv_architecture_available=no]))
+ if test "${rb_cv_architecture_available}" = yes; then
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM_CPU, __ARCHITECTURE__)
+ else
+ for archs in ${universal_archnames}; do
+ cpu=`echo $archs | sed 's/.*=//'`
+ archs=`echo $archs | sed 's/=.*//'`
+ RUBY_DEFINE_IF([defined __${archs}__], RUBY_PLATFORM_CPU, ["${cpu}"])
+ done
+ fi
+ ints='long int short'
+ test "$ac_cv_type_long_long" = yes && ints="'long long' $ints"
+ AC_SUBST(UNIVERSAL_ARCHNAMES, "${universal_archnames}")
+ AC_SUBST(UNIVERSAL_INTS, "${ints}")
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM_OS, "${target_os}")
+ AC_DEFINE_UNQUOTED(RUBY_ARCH, "universal-"RUBY_PLATFORM_OS)
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "universal."RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS)
else
- arch="${host_cpu}-${host_os}"
- AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${prefix}/lib/ruby/${arch}")
+ arch="${target_cpu}-${target_os}"
AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "${arch}")
fi
-echo "creating config.h"
-cat confdefs.h > config.h
+unset sitearch
+AS_CASE(["$target_os"],[mingw*],[sitearch="$target_cpu-$rb_cv_msvcrt"])
+: ${sitearch='${arch}'}
+
+AC_ARG_WITH(search-path,
+ AS_HELP_STRING([--with-search-path=DIR], [specify the additional search path]),
+ [search_path=$withval])
+if test "$search_path" != ""; then
+ AC_SUBST(RUBY_SEARCH_PATH, $search_path)
+fi
+
+AC_ARG_WITH(rubyhdrdir,
+ AS_HELP_STRING([--with-rubyhdrdir=DIR], [core headers in DIR [[INCLUDEDIR/RUBY_BASE_NAME-RUBY_VERSION]]]),
+ [rubyhdrdir=$withval],
+ [rubyhdrdir='${includedir}/${RUBY_VERSION_NAME}'])
+
+AC_ARG_WITH(rubyarchhdrdir,
+ AS_HELP_STRING([--with-rubyarchhdrdir=DIR],
+ [architecture dependent core headers in DIR [[$(rubyhdrdir)/$(arch)]]]),
+ [rubyarchhdrdir=$withval],
+ [rubyarchhdrdir=${multiarch+'${archincludedir}/${RUBY_VERSION_NAME}'}${multiarch-'${rubyhdrdir}/${arch}'}])
+
+AC_ARG_WITH(sitehdrdir,
+ AS_HELP_STRING([--with-sitehdrdir=DIR], [core site headers in DIR [[RUBYHDRDIR/site_ruby]]]),
+ [sitehdrdir=$withval],
+ [sitehdrdir='${rubyhdrdir}/site_ruby'])
+
+AC_ARG_WITH(sitearchhdrdir,
+ AS_HELP_STRING([--with-sitearchhdrdir=DIR],
+ [architecture dependent core site headers in DIR [[RUBYHDRDIR/site_ruby]]]),
+ [sitearchhdrdir=$withval],
+ [sitearchhdrdir=${multiarch+'${sitearchincludedir}/${RUBY_VERSION_NAME}/site_ruby'}${multiarch-'${sitehdrdir}/${sitearch}'}])
+
+AC_ARG_WITH(vendorhdrdir,
+ AS_HELP_STRING([--with-vendorhdrdir=DIR], [core vendor headers in DIR [[RUBYHDRDIR/vendor_ruby]]]),
+ [vendorhdrdir=$withval],
+ [vendorhdrdir='${rubyhdrdir}/vendor_ruby'])
+
+AC_ARG_WITH(vendorarchhdrdir,
+ AS_HELP_STRING([--with-vendorarchhdrdir=DIR],
+ [architecture dependent core vendor headers in DIR [[RUBYHDRDIR/vendor_ruby]]]),
+ [vendorarchhdrdir=$withval],
+ [vendorarchhdrdir=${multiarch+'${sitearchincludedir}/${RUBY_VERSION_NAME}/vendor_ruby'}${multiarch-'${vendorhdrdir}/${sitearch}'}])
+
+AC_SUBST(rubyhdrdir)dnl
+AC_SUBST(sitehdrdir)dnl
+AC_SUBST(vendorhdrdir)dnl
+AC_SUBST(rubyarchhdrdir)dnl
+AC_SUBST(sitearchhdrdir)dnl
+AC_SUBST(vendorarchhdrdir)dnl
+
+AC_ARG_WITH(mantype,
+ AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]),
+ [
+ AS_CASE(["$withval"],
+ [man|doc], [MANTYPE=$withval],
+ [AC_MSG_ERROR(invalid man type: $withval)])
+ ])
+if test -z "$MANTYPE"; then
+ AC_PATH_PROGS(NROFF, nroff awf, /bin/false, "/usr/bin:/usr/ucb")
+ if ${NROFF} -mdoc ${srcdir}/man/ruby.1 >/dev/null 2>&1; then
+ MANTYPE=doc
+ else
+ MANTYPE=man
+ fi
+fi
+AC_SUBST(MANTYPE)
-AC_OUTPUT(Makefile ext/extmk.rb)
+AC_ARG_ENABLE(rubygems,
+ AS_HELP_STRING([--disable-rubygems], [disable rubygems by default]),
+ [enable_rubygems="$enableval"], [enable_rubygems=yes])
+if test x"$enable_rubygems" = xno; then
+ AC_DEFINE(DISABLE_RUBYGEMS, 1)
+ USE_RUBYGEMS=NO
+else
+ USE_RUBYGEMS=YES
+fi
+AC_SUBST(USE_RUBYGEMS)
+
+arch_hdrdir="${EXTOUT}/include/${arch}/ruby"
+AS_MKDIR_P("${arch_hdrdir}")
+config_h="${arch_hdrdir}/config.h"
+guard=INCLUDE_RUBY_CONFIG_H
+{
+ echo "#ifndef $guard"
+ echo "#define $guard 1"
+ grep -v "^#define PACKAGE_" confdefs.h
+ echo "#endif /* $guard */"
+} | tr -d '\015' |
+${srcdir}/tool/ifchange "${config_h}" -
+tr -d '\015' < largefile.h > confdefs.h
+rm largefile.h
+
+BUILTIN_ENCS=["`sed -n -e '/^BUILTIN_ENCS[ ]*=/{' \
+ -e s/// -e :l -e '/\\\\$/N' -e 's/\\\\\\n/ /' -e 't l' -e p \
+ -e '}' "${srcdir}/enc/Makefile.in"`"]
+BUILTIN_ENCOBJS=
+for e in $BUILTIN_ENCS; do BUILTIN_ENCOBJS="$BUILTIN_ENCOBJS `basename $e .c`"'.$(OBJEXT)'; done
+AC_SUBST(BUILTIN_ENCOBJS)
+
+BUILTIN_TRANSES=["`sed -n -e '/^BUILTIN_TRANSES[ ]*=/{' \
+ -e s/// -e :l -e '/\\\\$/N' -e 's/\\\\\\n/ /' -e 't l' -e p \
+ -e '}' "${srcdir}/enc/Makefile.in"`"]
+BUILTIN_TRANSSRCS=
+BUILTIN_TRANSOBJS=
+for e in $BUILTIN_TRANSES; do
+ BUILTIN_TRANSSRCS="$BUILTIN_TRANSSRCS `basename $e .trans`"'.c';
+ BUILTIN_TRANSOBJS="$BUILTIN_TRANSOBJS `basename $e .trans`"'.$(OBJEXT)';
+done
+AC_SUBST(BUILTIN_TRANSSRCS)
+AC_SUBST(BUILTIN_TRANSOBJS)
+
+PACKAGE=$RUBY_BASE_NAME
+AC_SUBST(PACKAGE)
+AC_MSG_RESULT($PACKAGE library version = $ruby_version)
+
+AS_CASE([" $CPP "], [*" $CC "*], [CPP=`echo " $CPP " | sed "s| $CC |"' $(CC) |;s/^ *//;s/ *$//'`])
+
+if test x"$firstmf" != x; then
+ AC_CONFIG_FILES($firstmf:$firsttmpl, [], [firstmf="$firstmf" firsttmpl="$firsttmpl"])
+fi
+AC_CONFIG_FILES(Makefile, [
+ tmpmk=confmk$$.tmp
+ {
+ if test ${VCS+set}; then
+ :
+ elif svn info "$srcdir" > /dev/null 2>&1; then
+ VCS='svn'
+ elif test -d "$srcdir/.git/svn"; then
+ VCS='git svn'
+ elif test -d "$srcdir/.git"; then
+ VCS='git'
+ else
+ VCS='echo cannot'
+ fi
+ AS_CASE("$VCS",
+ [svn], [VCSUP='$(VCS) up $(SVNUPOPTIONS)'],
+ ["git svn"], [VCSUP='$(VCS) rebase $(GITSVNREBASEOPTIONS)'],
+ [git], [VCSUP='$(VCS) pull $(GITPULLOPTIONS)'],
+ [VCSUP='$(VCS)'])
+ sed '/^MISSING/s/\$U\././g;/^VCS *=/s#@VCS@#'"$VCS"'#;/^VCSUP *=/s#@VCSUP@#'"$VCSUP"'#' Makefile
+ echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
+ if test "$gnumake" != yes; then
+ echo ['$(MKFILES): $(srcdir)/common.mk']
+ sed ['s/{\$([^(){}]*)[^{}]*}//g'] ${srcdir}/common.mk
+ else
+ echo 'distclean-local::; @$(RM) GNUmakefile uncommon.mk'
+ fi
+ } > $tmpmk && if ! grep '^ruby:' $tmpmk > /dev/null; then
+ if test "${gnumake}" = yes; then
+ tmpgmk=confgmk$$.tmp
+ {
+ echo "include $tmpmk"
+ echo "-include uncommon.mk"
+ } > $tmpgmk
+ else
+ tmpgmk=$tmpmk
+ fi &&
+ test -z "`${MAKE-make} -f $tmpgmk info-program | grep '^PROGRAM=ruby$'`" &&
+ echo 'ruby: $(PROGRAM);' >> $tmpmk
+ test "$tmpmk" = "$tmpgmk" || rm -f "$tmpgmk"
+ fi && mv -f $tmpmk Makefile],
+[EXEEXT='$EXEEXT' gnumake='$gnumake'])
+
+AC_ARG_WITH([ruby-pc],
+ AC_HELP_STRING([pc file basename]),
+ [ruby_pc="$withval"],
+ [ruby_pc="${RUBY_BASE_NAME}-${MAJOR}.${MINOR}.pc"])
+AC_SUBST(ruby_pc)
+AC_SUBST(exec, [exec])
+
+AC_CONFIG_FILES($ruby_pc:template/ruby.pc.in,
+ [
+ if sed ['s/\$(\([A-Za-z_][A-Za-z0-9_]*\))/${\1}/g;s/@[A-Za-z_][A-Za-z0-9_]*@//'] $ruby_pc > ruby.tmp.pc &&
+ {
+ test -z "$PKG_CONFIG" ||
+ PKG_CONFIG_PATH=. $PKG_CONFIG --print-errors ruby.tmp
+ }
+ then
+ mv -f ruby.tmp.pc $ruby_pc
+ else
+ exit 1
+ fi
+ ],
+ [ruby_pc='$ruby_pc' PKG_CONFIG='$PKG_CONFIG'])
+
+AC_OUTPUT
+}
+}
diff --git a/constant.h b/constant.h
new file mode 100644
index 0000000000..3dc9b8d4ef
--- /dev/null
+++ b/constant.h
@@ -0,0 +1,36 @@
+/**********************************************************************
+
+ constant.h -
+
+ $Author$
+ created at: Sun Nov 15 00:09:33 2009
+
+ Copyright (C) 2009 Yusuke Endoh
+
+**********************************************************************/
+#ifndef CONSTANT_H
+#define CONSTANT_H
+
+typedef enum {
+ CONST_PUBLIC = 0x00,
+ CONST_PRIVATE = 0x01
+} rb_const_flag_t;
+
+typedef struct rb_const_entry_struct {
+ rb_const_flag_t flag;
+ const VALUE value; /* should be mark */
+ const VALUE file; /* should be mark */
+ int line;
+} rb_const_entry_t;
+
+VALUE rb_mod_private_constant(int argc, VALUE *argv, VALUE obj);
+VALUE rb_mod_public_constant(int argc, VALUE *argv, VALUE obj);
+void rb_free_const_table(st_table *tbl);
+VALUE rb_public_const_get(VALUE klass, ID id);
+VALUE rb_public_const_get_at(VALUE klass, ID id);
+VALUE rb_public_const_get_from(VALUE klass, ID id);
+int rb_public_const_defined(VALUE klass, ID id);
+int rb_public_const_defined_at(VALUE klass, ID id);
+int rb_public_const_defined_from(VALUE klass, ID id);
+
+#endif /* CONSTANT_H */
diff --git a/cont.c b/cont.c
new file mode 100644
index 0000000000..fa9e91ee64
--- /dev/null
+++ b/cont.c
@@ -0,0 +1,1694 @@
+/**********************************************************************
+
+ cont.c -
+
+ $Author$
+ created at: Thu May 23 09:03:43 2007
+
+ Copyright (C) 2007 Koichi Sasada
+
+**********************************************************************/
+
+#include "ruby/ruby.h"
+#include "internal.h"
+#include "vm_core.h"
+#include "gc.h"
+#include "eval_intern.h"
+
+/* FIBER_USE_NATIVE enables Fiber performance improvement using system
+ * dependent method such as make/setcontext on POSIX system or
+ * CreateFiber() API on Windows.
+ * This hack make Fiber context switch faster (x2 or more).
+ * However, it decrease maximum number of Fiber. For example, on the
+ * 32bit POSIX OS, ten or twenty thousands Fiber can be created.
+ *
+ * Details is reported in the paper "A Fast Fiber Implementation for Ruby 1.9"
+ * in Proc. of 51th Programming Symposium, pp.21--28 (2010) (in Japanese).
+ */
+
+#if !defined(FIBER_USE_NATIVE)
+# if defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT)
+# if 0
+# elif defined(__NetBSD__)
+/* On our experience, NetBSD doesn't support using setcontext() and pthread
+ * simultaneously. This is because pthread_self(), TLS and other information
+ * are represented by stack pointer (higher bits of stack pointer).
+ * TODO: check such constraint on configure.
+ */
+# define FIBER_USE_NATIVE 0
+# elif defined(__sun)
+/* On Solaris because resuming any Fiber caused SEGV, for some reason.
+ */
+# define FIBER_USE_NATIVE 0
+# elif defined(__ia64)
+/* At least, Linux/ia64's getcontext(3) doesn't save register window.
+ */
+# define FIBER_USE_NATIVE 0
+# elif defined(__GNU__)
+/* GNU/Hurd doesn't fully support getcontext, setcontext, makecontext
+ * and swapcontext functions. Disabling their usage till support is
+ * implemented. More info at
+ * http://darnassus.sceen.net/~hurd-web/open_issues/glibc/#getcontext
+ */
+# define FIBER_USE_NATIVE 0
+# else
+# define FIBER_USE_NATIVE 1
+# endif
+# elif defined(_WIN32)
+# if _WIN32_WINNT >= 0x0400
+/* only when _WIN32_WINNT >= 0x0400 on Windows because Fiber APIs are
+ * supported only such building (and running) environments.
+ * [ruby-dev:41192]
+ */
+# define FIBER_USE_NATIVE 1
+# endif
+# endif
+#endif
+#if !defined(FIBER_USE_NATIVE)
+#define FIBER_USE_NATIVE 0
+#endif
+
+#if FIBER_USE_NATIVE
+#ifndef _WIN32
+#include <unistd.h>
+#include <sys/mman.h>
+#include <ucontext.h>
+#endif
+#define RB_PAGE_SIZE (pagesize)
+#define RB_PAGE_MASK (~(RB_PAGE_SIZE - 1))
+static long pagesize;
+#endif /*FIBER_USE_NATIVE*/
+
+#define CAPTURE_JUST_VALID_VM_STACK 1
+
+enum context_type {
+ CONTINUATION_CONTEXT = 0,
+ FIBER_CONTEXT = 1,
+ ROOT_FIBER_CONTEXT = 2
+};
+
+typedef struct rb_context_struct {
+ enum context_type type;
+ VALUE self;
+ int argc;
+ VALUE value;
+ VALUE *vm_stack;
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ size_t vm_stack_slen; /* length of stack (head of th->stack) */
+ size_t vm_stack_clen; /* length of control frames (tail of th->stack) */
+#endif
+ VALUE *machine_stack;
+ VALUE *machine_stack_src;
+#ifdef __ia64
+ VALUE *machine_register_stack;
+ VALUE *machine_register_stack_src;
+ int machine_register_stack_size;
+#endif
+ rb_thread_t saved_thread;
+ rb_jmpbuf_t jmpbuf;
+ size_t machine_stack_size;
+ rb_ensure_entry_t *ensure_array;
+ rb_ensure_list_t *ensure_list;
+} rb_context_t;
+
+enum fiber_status {
+ CREATED,
+ RUNNING,
+ TERMINATED
+};
+
+#if FIBER_USE_NATIVE && !defined(_WIN32)
+#define MAX_MACHINE_STACK_CACHE 10
+static int machine_stack_cache_index = 0;
+typedef struct machine_stack_cache_struct {
+ void *ptr;
+ size_t size;
+} machine_stack_cache_t;
+static machine_stack_cache_t machine_stack_cache[MAX_MACHINE_STACK_CACHE];
+static machine_stack_cache_t terminated_machine_stack;
+#endif
+
+typedef struct rb_fiber_struct {
+ rb_context_t cont;
+ VALUE prev;
+ enum fiber_status status;
+ struct rb_fiber_struct *prev_fiber;
+ struct rb_fiber_struct *next_fiber;
+ /* If a fiber invokes "transfer",
+ * then this fiber can't "resume" any more after that.
+ * You shouldn't mix "transfer" and "resume".
+ */
+ int transfered;
+
+#if FIBER_USE_NATIVE
+#ifdef _WIN32
+ void *fib_handle;
+#else
+ ucontext_t context;
+#endif
+#endif
+} rb_fiber_t;
+
+static const rb_data_type_t cont_data_type, fiber_data_type;
+static VALUE rb_cContinuation;
+static VALUE rb_cFiber;
+static VALUE rb_eFiberError;
+
+#define GetContPtr(obj, ptr) \
+ TypedData_Get_Struct((obj), rb_context_t, &cont_data_type, (ptr))
+
+#define GetFiberPtr(obj, ptr) do {\
+ TypedData_Get_Struct((obj), rb_fiber_t, &fiber_data_type, (ptr)); \
+ if (!(ptr)) rb_raise(rb_eFiberError, "uninitialized fiber"); \
+} while (0)
+
+NOINLINE(static VALUE cont_capture(volatile int *stat));
+
+#define THREAD_MUST_BE_RUNNING(th) do { \
+ if (!(th)->tag) rb_raise(rb_eThreadError, "not running thread"); \
+ } while (0)
+
+static void
+cont_mark(void *ptr)
+{
+ RUBY_MARK_ENTER("cont");
+ if (ptr) {
+ rb_context_t *cont = ptr;
+ rb_gc_mark(cont->value);
+ rb_thread_mark(&cont->saved_thread);
+ rb_gc_mark(cont->saved_thread.self);
+
+ if (cont->vm_stack) {
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ rb_gc_mark_locations(cont->vm_stack,
+ cont->vm_stack + cont->vm_stack_slen + cont->vm_stack_clen);
+#else
+ rb_gc_mark_localtion(cont->vm_stack,
+ cont->vm_stack, cont->saved_thread.stack_size);
+#endif
+ }
+
+ if (cont->machine_stack) {
+ if (cont->type == CONTINUATION_CONTEXT) {
+ /* cont */
+ rb_gc_mark_locations(cont->machine_stack,
+ cont->machine_stack + cont->machine_stack_size);
+ }
+ else {
+ /* fiber */
+ rb_thread_t *th;
+ rb_fiber_t *fib = (rb_fiber_t*)cont;
+ GetThreadPtr(cont->saved_thread.self, th);
+ if ((th->fiber != cont->self) && fib->status == RUNNING) {
+ rb_gc_mark_locations(cont->machine_stack,
+ cont->machine_stack + cont->machine_stack_size);
+ }
+ }
+ }
+#ifdef __ia64
+ if (cont->machine_register_stack) {
+ rb_gc_mark_locations(cont->machine_register_stack,
+ cont->machine_register_stack + cont->machine_register_stack_size);
+ }
+#endif
+ }
+ RUBY_MARK_LEAVE("cont");
+}
+
+static void
+cont_free(void *ptr)
+{
+ RUBY_FREE_ENTER("cont");
+ if (ptr) {
+ rb_context_t *cont = ptr;
+ RUBY_FREE_UNLESS_NULL(cont->saved_thread.stack); fflush(stdout);
+#if FIBER_USE_NATIVE
+ if (cont->type == CONTINUATION_CONTEXT) {
+ /* cont */
+ ruby_xfree(cont->ensure_array);
+ RUBY_FREE_UNLESS_NULL(cont->machine_stack);
+ }
+ else {
+ /* fiber */
+#ifdef _WIN32
+ if (GET_THREAD()->fiber != cont->self && cont->type != ROOT_FIBER_CONTEXT) {
+ /* don't delete root fiber handle */
+ rb_fiber_t *fib = (rb_fiber_t*)cont;
+ if (fib->fib_handle) {
+ DeleteFiber(fib->fib_handle);
+ }
+ }
+#else /* not WIN32 */
+ if (GET_THREAD()->fiber != cont->self) {
+ rb_fiber_t *fib = (rb_fiber_t*)cont;
+ if (fib->context.uc_stack.ss_sp) {
+ if (cont->type == ROOT_FIBER_CONTEXT) {
+ rb_bug("Illegal root fiber parameter");
+ }
+ munmap((void*)fib->context.uc_stack.ss_sp, fib->context.uc_stack.ss_size);
+ }
+ }
+ else {
+ /* It may reached here when finalize */
+ /* TODO examine whether it is a bug */
+ /* rb_bug("cont_free: release self"); */
+ }
+#endif
+ }
+#else /* not FIBER_USE_NATIVE */
+ ruby_xfree(cont->ensure_array);
+ RUBY_FREE_UNLESS_NULL(cont->machine_stack);
+#endif
+#ifdef __ia64
+ RUBY_FREE_UNLESS_NULL(cont->machine_register_stack);
+#endif
+ RUBY_FREE_UNLESS_NULL(cont->vm_stack);
+
+ /* free rb_cont_t or rb_fiber_t */
+ ruby_xfree(ptr);
+ }
+ RUBY_FREE_LEAVE("cont");
+}
+
+static size_t
+cont_memsize(const void *ptr)
+{
+ const rb_context_t *cont = ptr;
+ size_t size = 0;
+ if (cont) {
+ size = sizeof(*cont);
+ if (cont->vm_stack) {
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ size_t n = (cont->vm_stack_slen + cont->vm_stack_clen);
+#else
+ size_t n = cont->saved_thread.stack_size;
+#endif
+ size += n * sizeof(*cont->vm_stack);
+ }
+
+ if (cont->machine_stack) {
+ size += cont->machine_stack_size * sizeof(*cont->machine_stack);
+ }
+#ifdef __ia64
+ if (cont->machine_register_stack) {
+ size += cont->machine_register_stack_size * sizeof(*cont->machine_register_stack);
+ }
+#endif
+ }
+ return size;
+}
+
+static void
+fiber_mark(void *ptr)
+{
+ RUBY_MARK_ENTER("cont");
+ if (ptr) {
+ rb_fiber_t *fib = ptr;
+ rb_gc_mark(fib->prev);
+ cont_mark(&fib->cont);
+ }
+ RUBY_MARK_LEAVE("cont");
+}
+
+static void
+fiber_link_join(rb_fiber_t *fib)
+{
+ VALUE current_fibval = rb_fiber_current();
+ rb_fiber_t *current_fib;
+ GetFiberPtr(current_fibval, current_fib);
+
+ /* join fiber link */
+ fib->next_fiber = current_fib->next_fiber;
+ fib->prev_fiber = current_fib;
+ current_fib->next_fiber->prev_fiber = fib;
+ current_fib->next_fiber = fib;
+}
+
+static void
+fiber_link_remove(rb_fiber_t *fib)
+{
+ fib->prev_fiber->next_fiber = fib->next_fiber;
+ fib->next_fiber->prev_fiber = fib->prev_fiber;
+}
+
+static void
+fiber_free(void *ptr)
+{
+ RUBY_FREE_ENTER("fiber");
+ if (ptr) {
+ rb_fiber_t *fib = ptr;
+ if (fib->cont.type != ROOT_FIBER_CONTEXT &&
+ fib->cont.saved_thread.local_storage) {
+ st_free_table(fib->cont.saved_thread.local_storage);
+ }
+ fiber_link_remove(fib);
+
+ cont_free(&fib->cont);
+ }
+ RUBY_FREE_LEAVE("fiber");
+}
+
+static size_t
+fiber_memsize(const void *ptr)
+{
+ const rb_fiber_t *fib = ptr;
+ size_t size = 0;
+ if (ptr) {
+ size = sizeof(*fib);
+ if (fib->cont.type != ROOT_FIBER_CONTEXT &&
+ fib->cont.saved_thread.local_storage != NULL) {
+ size += st_memsize(fib->cont.saved_thread.local_storage);
+ }
+ size += cont_memsize(&fib->cont);
+ }
+ return size;
+}
+
+VALUE
+rb_obj_is_fiber(VALUE obj)
+{
+ if (rb_typeddata_is_kind_of(obj, &fiber_data_type)) {
+ return Qtrue;
+ }
+ else {
+ return Qfalse;
+ }
+}
+
+static void
+cont_save_machine_stack(rb_thread_t *th, rb_context_t *cont)
+{
+ size_t size;
+
+ SET_MACHINE_STACK_END(&th->machine_stack_end);
+#ifdef __ia64
+ th->machine_register_stack_end = rb_ia64_bsp();
+#endif
+
+ if (th->machine_stack_start > th->machine_stack_end) {
+ size = cont->machine_stack_size = th->machine_stack_start - th->machine_stack_end;
+ cont->machine_stack_src = th->machine_stack_end;
+ }
+ else {
+ size = cont->machine_stack_size = th->machine_stack_end - th->machine_stack_start;
+ cont->machine_stack_src = th->machine_stack_start;
+ }
+
+ if (cont->machine_stack) {
+ REALLOC_N(cont->machine_stack, VALUE, size);
+ }
+ else {
+ cont->machine_stack = ALLOC_N(VALUE, size);
+ }
+
+ FLUSH_REGISTER_WINDOWS;
+ MEMCPY(cont->machine_stack, cont->machine_stack_src, VALUE, size);
+
+#ifdef __ia64
+ rb_ia64_flushrs();
+ size = cont->machine_register_stack_size = th->machine_register_stack_end - th->machine_register_stack_start;
+ cont->machine_register_stack_src = th->machine_register_stack_start;
+ if (cont->machine_register_stack) {
+ REALLOC_N(cont->machine_register_stack, VALUE, size);
+ }
+ else {
+ cont->machine_register_stack = ALLOC_N(VALUE, size);
+ }
+
+ MEMCPY(cont->machine_register_stack, cont->machine_register_stack_src, VALUE, size);
+#endif
+}
+
+static const rb_data_type_t cont_data_type = {
+ "continuation",
+ {cont_mark, cont_free, cont_memsize,},
+ NULL, NULL, RUBY_TYPED_FREE_IMMEDIATELY
+};
+
+static void
+cont_save_thread(rb_context_t *cont, rb_thread_t *th)
+{
+ /* save thread context */
+ cont->saved_thread = *th;
+ /* saved_thread->machine_stack_(start|end) should be NULL */
+ /* because it may happen GC afterward */
+ cont->saved_thread.machine_stack_start = 0;
+ cont->saved_thread.machine_stack_end = 0;
+#ifdef __ia64
+ cont->saved_thread.machine_register_stack_start = 0;
+ cont->saved_thread.machine_register_stack_end = 0;
+#endif
+}
+
+static void
+cont_init(rb_context_t *cont, rb_thread_t *th)
+{
+ /* save thread context */
+ cont_save_thread(cont, th);
+ cont->saved_thread.local_storage = 0;
+}
+
+static rb_context_t *
+cont_new(VALUE klass)
+{
+ rb_context_t *cont;
+ volatile VALUE contval;
+ rb_thread_t *th = GET_THREAD();
+
+ THREAD_MUST_BE_RUNNING(th);
+ contval = TypedData_Make_Struct(klass, rb_context_t, &cont_data_type, cont);
+ cont->self = contval;
+ cont_init(cont, th);
+ return cont;
+}
+
+static VALUE
+cont_capture(volatile int *stat)
+{
+ rb_context_t *cont;
+ rb_thread_t *th = GET_THREAD(), *sth;
+ volatile VALUE contval;
+
+ THREAD_MUST_BE_RUNNING(th);
+ rb_vm_stack_to_heap(th);
+ cont = cont_new(rb_cContinuation);
+ contval = cont->self;
+ sth = &cont->saved_thread;
+
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ cont->vm_stack_slen = th->cfp->sp + th->mark_stack_len - th->stack;
+ cont->vm_stack_clen = th->stack + th->stack_size - (VALUE*)th->cfp;
+ cont->vm_stack = ALLOC_N(VALUE, cont->vm_stack_slen + cont->vm_stack_clen);
+ MEMCPY(cont->vm_stack, th->stack, VALUE, cont->vm_stack_slen);
+ MEMCPY(cont->vm_stack + cont->vm_stack_slen, (VALUE*)th->cfp, VALUE, cont->vm_stack_clen);
+#else
+ cont->vm_stack = ALLOC_N(VALUE, th->stack_size);
+ MEMCPY(cont->vm_stack, th->stack, VALUE, th->stack_size);
+#endif
+ sth->stack = 0;
+
+ cont_save_machine_stack(th, cont);
+
+ /* backup ensure_list to array for search in another context */
+ {
+ rb_ensure_list_t *p;
+ int size = 0;
+ rb_ensure_entry_t *entry;
+ for (p=th->ensure_list; p; p=p->next)
+ size++;
+ entry = cont->ensure_array = ALLOC_N(rb_ensure_entry_t,size+1);
+ for (p=th->ensure_list; p; p=p->next) {
+ if (!p->entry.marker)
+ p->entry.marker = rb_ary_tmp_new(0); /* dummy object */
+ *entry++ = p->entry;
+ }
+ entry->marker = 0;
+ }
+
+ if (ruby_setjmp(cont->jmpbuf)) {
+ volatile VALUE value;
+
+ value = cont->value;
+ if (cont->argc == -1) rb_exc_raise(value);
+ cont->value = Qnil;
+ *stat = 1;
+ return value;
+ }
+ else {
+ *stat = 0;
+ return contval;
+ }
+}
+
+static void
+cont_restore_thread(rb_context_t *cont)
+{
+ rb_thread_t *th = GET_THREAD(), *sth = &cont->saved_thread;
+
+ /* restore thread context */
+ if (cont->type == CONTINUATION_CONTEXT) {
+ /* continuation */
+ VALUE fib;
+
+ th->fiber = sth->fiber;
+ fib = th->fiber ? th->fiber : th->root_fiber;
+
+ if (fib) {
+ rb_fiber_t *fcont;
+ GetFiberPtr(fib, fcont);
+ th->stack_size = fcont->cont.saved_thread.stack_size;
+ th->stack = fcont->cont.saved_thread.stack;
+ }
+#ifdef CAPTURE_JUST_VALID_VM_STACK
+ MEMCPY(th->stack, cont->vm_stack, VALUE, cont->vm_stack_slen);
+ MEMCPY(th->stack + sth->stack_size - cont->vm_stack_clen,
+ cont->vm_stack + cont->vm_stack_slen, VALUE, cont->vm_stack_clen);
+#else
+ MEMCPY(th->stack, cont->vm_stack, VALUE, sth->stack_size);
+#endif
+ }
+ else {
+ /* fiber */
+ th->stack = sth->stack;
+ th->stack_size = sth->stack_size;
+ th->local_storage = sth->local_storage;
+ th->fiber = cont->self;
+ }
+
+ th->cfp = sth->cfp;
+ th->safe_level = sth->safe_level;
+ th->raised_flag = sth->raised_flag;
+ th->state = sth->state;
+ th->status = sth->status;
+ th->tag = sth->tag;
+ th->protect_tag = sth->protect_tag;
+ th->errinfo = sth->errinfo;
+ th->first_proc = sth->first_proc;
+ th->root_lep = sth->root_lep;
+ th->root_svar = sth->root_svar;
+ th->ensure_list = sth->ensure_list;
+
+}
+
+#if FIBER_USE_NATIVE
+#ifdef _WIN32
+static void
+fiber_set_stack_location(void)
+{
+ rb_thread_t *th = GET_THREAD();
+ VALUE *ptr;
+
+ SET_MACHINE_STACK_END(&ptr);
+ th->machine_stack_start = (void*)(((VALUE)ptr & RB_PAGE_MASK) + STACK_UPPER((void *)&ptr, 0, RB_PAGE_SIZE));
+}
+
+static VOID CALLBACK
+fiber_entry(void *arg)
+{
+ fiber_set_stack_location();
+ rb_fiber_start();
+}
+#else /* _WIN32 */
+
+/*
+ * FreeBSD require a first (i.e. addr) argument of mmap(2) is not NULL
+ * if MAP_STACK is passed.
+ * http://www.FreeBSD.org/cgi/query-pr.cgi?pr=158755
+ */
+#if defined(MAP_STACK) && !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__)
+#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON | MAP_STACK)
+#else
+#define FIBER_STACK_FLAGS (MAP_PRIVATE | MAP_ANON)
+#endif
+
+static char*
+fiber_machine_stack_alloc(size_t size)
+{
+ char *ptr;
+
+ if (machine_stack_cache_index > 0) {
+ if (machine_stack_cache[machine_stack_cache_index - 1].size == (size / sizeof(VALUE))) {
+ ptr = machine_stack_cache[machine_stack_cache_index - 1].ptr;
+ machine_stack_cache_index--;
+ machine_stack_cache[machine_stack_cache_index].ptr = NULL;
+ machine_stack_cache[machine_stack_cache_index].size = 0;
+ }
+ else{
+ /* TODO handle multiple machine stack size */
+ rb_bug("machine_stack_cache size is not canonicalized");
+ }
+ }
+ else {
+ void *page;
+ STACK_GROW_DIR_DETECTION;
+
+ errno = 0;
+ ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, FIBER_STACK_FLAGS, -1, 0);
+ if (ptr == MAP_FAILED) {
+ rb_raise(rb_eFiberError, "can't alloc machine stack to fiber: %s", strerror(errno));
+ }
+
+ /* guard page setup */
+ page = ptr + STACK_DIR_UPPER(size - RB_PAGE_SIZE, 0);
+ if (mprotect(page, RB_PAGE_SIZE, PROT_NONE) < 0) {
+ rb_raise(rb_eFiberError, "mprotect failed");
+ }
+ }
+
+ return ptr;
+}
+#endif
+
+static void
+fiber_initialize_machine_stack_context(rb_fiber_t *fib, size_t size)
+{
+ rb_thread_t *sth = &fib->cont.saved_thread;
+
+#ifdef _WIN32
+ fib->fib_handle = CreateFiberEx(size - 1, size, 0, fiber_entry, NULL);
+ if (!fib->fib_handle) {
+ /* try to release unnecessary fibers & retry to create */
+ rb_gc();
+ fib->fib_handle = CreateFiberEx(size - 1, size, 0, fiber_entry, NULL);
+ if (!fib->fib_handle) {
+ rb_raise(rb_eFiberError, "can't create fiber");
+ }
+ }
+ sth->machine_stack_maxsize = size;
+#else /* not WIN32 */
+ ucontext_t *context = &fib->context;
+ char *ptr;
+ STACK_GROW_DIR_DETECTION;
+
+ getcontext(context);
+ ptr = fiber_machine_stack_alloc(size);
+ context->uc_link = NULL;
+ context->uc_stack.ss_sp = ptr;
+ context->uc_stack.ss_size = size;
+ makecontext(context, rb_fiber_start, 0);
+ sth->machine_stack_start = (VALUE*)(ptr + STACK_DIR_UPPER(0, size));
+ sth->machine_stack_maxsize = size - RB_PAGE_SIZE;
+#endif
+#ifdef __ia64
+ sth->machine_register_stack_maxsize = sth->machine_stack_maxsize;
+#endif
+}
+
+NOINLINE(static void fiber_setcontext(rb_fiber_t *newfib, rb_fiber_t *oldfib));
+
+static void
+fiber_setcontext(rb_fiber_t *newfib, rb_fiber_t *oldfib)
+{
+ rb_thread_t *th = GET_THREAD(), *sth = &newfib->cont.saved_thread;
+
+ if (newfib->status != RUNNING) {
+ fiber_initialize_machine_stack_context(newfib, th->vm->default_params.fiber_machine_stack_size);
+ }
+
+ /* restore thread context */
+ cont_restore_thread(&newfib->cont);
+ th->machine_stack_maxsize = sth->machine_stack_maxsize;
+ if (sth->machine_stack_end && (newfib != oldfib)) {
+ rb_bug("fiber_setcontext: sth->machine_stack_end has non zero value");
+ }
+
+ /* save oldfib's machine stack */
+ if (oldfib->status != TERMINATED) {
+ STACK_GROW_DIR_DETECTION;
+ SET_MACHINE_STACK_END(&th->machine_stack_end);
+ if (STACK_DIR_UPPER(0, 1)) {
+ oldfib->cont.machine_stack_size = th->machine_stack_start - th->machine_stack_end;
+ oldfib->cont.machine_stack = th->machine_stack_end;
+ }
+ else {
+ oldfib->cont.machine_stack_size = th->machine_stack_end - th->machine_stack_start;
+ oldfib->cont.machine_stack = th->machine_stack_start;
+ }
+ }
+ /* exchange machine_stack_start between oldfib and newfib */
+ oldfib->cont.saved_thread.machine_stack_start = th->machine_stack_start;
+ th->machine_stack_start = sth->machine_stack_start;
+ /* oldfib->machine_stack_end should be NULL */
+ oldfib->cont.saved_thread.machine_stack_end = 0;
+#ifndef _WIN32
+ if (!newfib->context.uc_stack.ss_sp && th->root_fiber != newfib->cont.self) {
+ rb_bug("non_root_fiber->context.uc_stac.ss_sp should not be NULL");
+ }
+#endif
+
+ /* swap machine context */
+#ifdef _WIN32
+ SwitchToFiber(newfib->fib_handle);
+#else
+ swapcontext(&oldfib->context, &newfib->context);
+#endif
+}
+#endif
+
+NOINLINE(NORETURN(static void cont_restore_1(rb_context_t *)));
+
+static void
+cont_restore_1(rb_context_t *cont)
+{
+ cont_restore_thread(cont);
+
+ /* restore machine stack */
+#ifdef _M_AMD64
+ {
+ /* workaround for x64 SEH */
+ jmp_buf buf;
+ setjmp(buf);
+ ((_JUMP_BUFFER*)(&cont->jmpbuf))->Frame =
+ ((_JUMP_BUFFER*)(&buf))->Frame;
+ }
+#endif
+ if (cont->machine_stack_src) {
+ FLUSH_REGISTER_WINDOWS;
+ MEMCPY(cont->machine_stack_src, cont->machine_stack,
+ VALUE, cont->machine_stack_size);
+ }
+
+#ifdef __ia64
+ if (cont->machine_register_stack_src) {
+ MEMCPY(cont->machine_register_stack_src, cont->machine_register_stack,
+ VALUE, cont->machine_register_stack_size);
+ }
+#endif
+
+ ruby_longjmp(cont->jmpbuf, 1);
+}
+
+NORETURN(NOINLINE(static void cont_restore_0(rb_context_t *, VALUE *)));
+
+#ifdef __ia64
+#define C(a) rse_##a##0, rse_##a##1, rse_##a##2, rse_##a##3, rse_##a##4
+#define E(a) rse_##a##0= rse_##a##1= rse_##a##2= rse_##a##3= rse_##a##4
+static volatile int C(a), C(b), C(c), C(d), C(e);
+static volatile int C(f), C(g), C(h), C(i), C(j);
+static volatile int C(k), C(l), C(m), C(n), C(o);
+static volatile int C(p), C(q), C(r), C(s), C(t);
+#if 0
+{/* the above lines make cc-mode.el confused so much */}
+#endif
+int rb_dummy_false = 0;
+NORETURN(NOINLINE(static void register_stack_extend(rb_context_t *, VALUE *, VALUE *)));
+static void
+register_stack_extend(rb_context_t *cont, VALUE *vp, VALUE *curr_bsp)
+{
+ if (rb_dummy_false) {
+ /* use registers as much as possible */
+ E(a) = E(b) = E(c) = E(d) = E(e) =
+ E(f) = E(g) = E(h) = E(i) = E(j) =
+ E(k) = E(l) = E(m) = E(n) = E(o) =
+ E(p) = E(q) = E(r) = E(s) = E(t) = 0;
+ E(a) = E(b) = E(c) = E(d) = E(e) =
+ E(f) = E(g) = E(h) = E(i) = E(j) =
+ E(k) = E(l) = E(m) = E(n) = E(o) =
+ E(p) = E(q) = E(r) = E(s) = E(t) = 0;
+ }
+ if (curr_bsp < cont->machine_register_stack_src+cont->machine_register_stack_size) {
+ register_stack_extend(cont, vp, (VALUE*)rb_ia64_bsp());
+ }
+ cont_restore_0(cont, vp);
+}
+#undef C
+#undef E
+#endif
+
+static void
+cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
+{
+ if (cont->machine_stack_src) {
+#ifdef HAVE_ALLOCA
+#define STACK_PAD_SIZE 1
+#else
+#define STACK_PAD_SIZE 1024
+#endif
+ VALUE space[STACK_PAD_SIZE];
+
+#if !STACK_GROW_DIRECTION
+ if (addr_in_prev_frame > &space[0]) {
+ /* Stack grows downward */
+#endif
+#if STACK_GROW_DIRECTION <= 0
+ volatile VALUE *const end = cont->machine_stack_src;
+ if (&space[0] > end) {
+# ifdef HAVE_ALLOCA
+ volatile VALUE *sp = ALLOCA_N(VALUE, &space[0] - end);
+ space[0] = *sp;
+# else
+ cont_restore_0(cont, &space[0]);
+# endif
+ }
+#endif
+#if !STACK_GROW_DIRECTION
+ }
+ else {
+ /* Stack grows upward */
+#endif
+#if STACK_GROW_DIRECTION >= 0
+ volatile VALUE *const end = cont->machine_stack_src + cont->machine_stack_size;
+ if (&space[STACK_PAD_SIZE] < end) {
+# ifdef HAVE_ALLOCA
+ volatile VALUE *sp = ALLOCA_N(VALUE, end - &space[STACK_PAD_SIZE]);
+ space[0] = *sp;
+# else
+ cont_restore_0(cont, &space[STACK_PAD_SIZE-1]);
+# endif
+ }
+#endif
+#if !STACK_GROW_DIRECTION
+ }
+#endif
+ }
+ cont_restore_1(cont);
+}
+#ifdef __ia64
+#define cont_restore_0(cont, vp) register_stack_extend((cont), (vp), (VALUE*)rb_ia64_bsp())
+#endif
+
+/*
+ * Document-class: Continuation
+ *
+ * Continuation objects are generated by Kernel#callcc,
+ * after having +require+d <i>continuation</i>. They hold
+ * a return address and execution context, allowing a nonlocal return
+ * to the end of the <code>callcc</code> block from anywhere within a
+ * program. Continuations are somewhat analogous to a structured
+ * version of C's <code>setjmp/longjmp</code> (although they contain
+ * more state, so you might consider them closer to threads).
+ *
+ * For instance:
+ *
+ * require "continuation"
+ * arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]
+ * callcc{|cc| $cc = cc}
+ * puts(message = arr.shift)
+ * $cc.call unless message =~ /Max/
+ *
+ * <em>produces:</em>
+ *
+ * Freddie
+ * Herbie
+ * Ron
+ * Max
+ *
+ * This (somewhat contrived) example allows the inner loop to abandon
+ * processing early:
+ *
+ * require "continuation"
+ * callcc {|cont|
+ * for i in 0..4
+ * print "\n#{i}: "
+ * for j in i*5...(i+1)*5
+ * cont.call() if j == 17
+ * printf "%3d", j
+ * end
+ * end
+ * }
+ * puts
+ *
+ * <em>produces:</em>
+ *
+ * 0: 0 1 2 3 4
+ * 1: 5 6 7 8 9
+ * 2: 10 11 12 13 14
+ * 3: 15 16
+ */
+
+/*
+ * call-seq:
+ * callcc {|cont| block } -> obj
+ *
+ * Generates a Continuation object, which it passes to
+ * the associated block. You need to <code>require
+ * 'continuation'</code> before using this method. Performing a
+ * <em>cont</em><code>.call</code> will cause the #callcc
+ * to return (as will falling through the end of the block). The
+ * value returned by the #callcc is the value of the
+ * block, or the value passed to <em>cont</em><code>.call</code>. See
+ * class Continuation for more details. Also see
+ * Kernel#throw for an alternative mechanism for
+ * unwinding a call stack.
+ */
+
+static VALUE
+rb_callcc(VALUE self)
+{
+ volatile int called;
+ volatile VALUE val = cont_capture(&called);
+
+ if (called) {
+ return val;
+ }
+ else {
+ return rb_yield(val);
+ }
+}
+
+static VALUE
+make_passing_arg(int argc, VALUE *argv)
+{
+ switch (argc) {
+ case 0:
+ return Qnil;
+ case 1:
+ return argv[0];
+ default:
+ return rb_ary_new4(argc, argv);
+ }
+}
+
+/* CAUTION!! : Currently, error in rollback_func is not supported */
+/* same as rb_protect if set rollback_func to NULL */
+void
+ruby_register_rollback_func_for_ensure(VALUE (*ensure_func)(ANYARGS), VALUE (*rollback_func)(ANYARGS))
+{
+ st_table **table_p = &GET_VM()->ensure_rollback_table;
+ if (UNLIKELY(*table_p == NULL)) {
+ *table_p = st_init_numtable();
+ }
+ st_insert(*table_p, (st_data_t)ensure_func, (st_data_t)rollback_func);
+}
+
+static inline VALUE
+lookup_rollback_func(VALUE (*ensure_func)(ANYARGS))
+{
+ st_table *table = GET_VM()->ensure_rollback_table;
+ st_data_t val;
+ if (table && st_lookup(table, (st_data_t)ensure_func, &val))
+ return (VALUE) val;
+ return Qundef;
+}
+
+
+static inline void
+rollback_ensure_stack(VALUE self,rb_ensure_list_t *current,rb_ensure_entry_t *target)
+{
+ rb_ensure_list_t *p;
+ rb_ensure_entry_t *entry;
+ size_t i;
+ size_t cur_size;
+ size_t target_size;
+ size_t base_point;
+ VALUE (*func)(ANYARGS);
+
+ cur_size = 0;
+ for (p=current; p; p=p->next)
+ cur_size++;
+ target_size = 0;
+ for (entry=target; entry->marker; entry++)
+ target_size++;
+
+ /* search common stack point */
+ p = current;
+ base_point = cur_size;
+ while (base_point) {
+ if (target_size >= base_point &&
+ p->entry.marker == target[target_size - base_point].marker)
+ break;
+ base_point --;
+ p = p->next;
+ }
+
+ /* rollback function check */
+ for (i=0; i < target_size - base_point; i++) {
+ if (!lookup_rollback_func(target[i].e_proc)) {
+ rb_raise(rb_eRuntimeError, "continuation called from out of critical rb_ensure scope");
+ }
+ }
+ /* pop ensure stack */
+ while (cur_size > base_point) {
+ /* escape from ensure block */
+ (*current->entry.e_proc)(current->entry.data2);
+ current = current->next;
+ cur_size--;
+ }
+ /* push ensure stack */
+ while (i--) {
+ func = (VALUE (*)(ANYARGS)) lookup_rollback_func(target[i].e_proc);
+ if ((VALUE)func != Qundef) {
+ (*func)(target[i].data2);
+ }
+ }
+}
+
+/*
+ * call-seq:
+ * cont.call(args, ...)
+ * cont[args, ...]
+ *
+ * Invokes the continuation. The program continues from the end of the
+ * <code>callcc</code> block. If no arguments are given, the original
+ * <code>callcc</code> returns <code>nil</code>. If one argument is
+ * given, <code>callcc</code> returns it. Otherwise, an array
+ * containing <i>args</i> is returned.
+ *
+ * callcc {|cont| cont.call } #=> nil
+ * callcc {|cont| cont.call 1 } #=> 1
+ * callcc {|cont| cont.call 1, 2, 3 } #=> [1, 2, 3]
+ */
+
+static VALUE
+rb_cont_call(int argc, VALUE *argv, VALUE contval)
+{
+ rb_context_t *cont;
+ rb_thread_t *th = GET_THREAD();
+ GetContPtr(contval, cont);
+
+ if (cont->saved_thread.self != th->self) {
+ rb_raise(rb_eRuntimeError, "continuation called across threads");
+ }
+ if (cont->saved_thread.protect_tag != th->protect_tag) {
+ rb_raise(rb_eRuntimeError, "continuation called across stack rewinding barrier");
+ }
+ if (cont->saved_thread.fiber) {
+ rb_fiber_t *fcont;
+ GetFiberPtr(cont->saved_thread.fiber, fcont);
+
+ if (th->fiber != cont->saved_thread.fiber) {
+ rb_raise(rb_eRuntimeError, "continuation called across fiber");
+ }
+ }
+ rollback_ensure_stack(contval, th->ensure_list, cont->ensure_array);
+
+ cont->argc = argc;
+ cont->value = make_passing_arg(argc, argv);
+
+ /* restore `tracing' context. see [Feature #4347] */
+ th->trace_arg = cont->saved_thread.trace_arg;
+
+ cont_restore_0(cont, &contval);
+ return Qnil; /* unreachable */
+}
+
+/*********/
+/* fiber */
+/*********/
+
+/*
+ * Document-class: Fiber
+ *
+ * Fibers are primitives for implementing light weight cooperative
+ * concurrency in Ruby. Basically they are a means of creating code blocks
+ * that can be paused and resumed, much like threads. The main difference
+ * is that they are never preempted and that the scheduling must be done by
+ * the programmer and not the VM.
+ *
+ * As opposed to other stackless light weight concurrency models, each fiber
+ * comes with a small 4KB stack. This enables the fiber to be paused from deeply
+ * nested function calls within the fiber block.
+ *
+ * When a fiber is created it will not run automatically. Rather it must be
+ * be explicitly asked to run using the <code>Fiber#resume</code> method.
+ * The code running inside the fiber can give up control by calling
+ * <code>Fiber.yield</code> in which case it yields control back to caller
+ * (the caller of the <code>Fiber#resume</code>).
+ *
+ * Upon yielding or termination the Fiber returns the value of the last
+ * executed expression
+ *
+ * For instance:
+ *
+ * fiber = Fiber.new do
+ * Fiber.yield 1
+ * 2
+ * end
+ *
+ * puts fiber.resume
+ * puts fiber.resume
+ * puts fiber.resume
+ *
+ * <em>produces</em>
+ *
+ * 1
+ * 2
+ * FiberError: dead fiber called
+ *
+ * The <code>Fiber#resume</code> method accepts an arbitrary number of
+ * parameters, if it is the first call to <code>resume</code> then they
+ * will be passed as block arguments. Otherwise they will be the return
+ * value of the call to <code>Fiber.yield</code>
+ *
+ * Example:
+ *
+ * fiber = Fiber.new do |first|
+ * second = Fiber.yield first + 2
+ * end
+ *
+ * puts fiber.resume 10
+ * puts fiber.resume 14
+ * puts fiber.resume 18
+ *
+ * <em>produces</em>
+ *
+ * 12
+ * 14
+ * FiberError: dead fiber called
+ *
+ */
+
+static const rb_data_type_t fiber_data_type = {
+ "fiber",
+ {fiber_mark, fiber_free, fiber_memsize,},
+ NULL, NULL, RUBY_TYPED_FREE_IMMEDIATELY
+};
+
+static VALUE
+fiber_alloc(VALUE klass)
+{
+ return TypedData_Wrap_Struct(klass, &fiber_data_type, 0);
+}
+
+static rb_fiber_t*
+fiber_t_alloc(VALUE fibval)
+{
+ rb_fiber_t *fib;
+ rb_thread_t *th = GET_THREAD();
+
+ if (DATA_PTR(fibval) != 0) {
+ rb_raise(rb_eRuntimeError, "cannot initialize twice");
+ }
+
+ THREAD_MUST_BE_RUNNING(th);
+ fib = ALLOC(rb_fiber_t);
+ memset(fib, 0, sizeof(rb_fiber_t));
+ fib->cont.self = fibval;
+ fib->cont.type = FIBER_CONTEXT;
+ cont_init(&fib->cont, th);
+ fib->prev = Qnil;
+ fib->status = CREATED;
+
+ DATA_PTR(fibval) = fib;
+
+ return fib;
+}
+
+static VALUE
+fiber_init(VALUE fibval, VALUE proc)
+{
+ rb_fiber_t *fib = fiber_t_alloc(fibval);
+ rb_context_t *cont = &fib->cont;
+ rb_thread_t *th = &cont->saved_thread;
+
+ /* initialize cont */
+ cont->vm_stack = 0;
+
+ th->stack = 0;
+ th->stack_size = 0;
+
+ fiber_link_join(fib);
+
+ th->stack_size = th->vm->default_params.fiber_vm_stack_size / sizeof(VALUE);
+ th->stack = ALLOC_N(VALUE, th->stack_size);
+
+ th->cfp = (void *)(th->stack + th->stack_size);
+ th->cfp--;
+ th->cfp->pc = 0;
+ th->cfp->sp = th->stack + 1;
+#if VM_DEBUG_BP_CHECK
+ th->cfp->bp_check = 0;
+#endif
+ th->cfp->ep = th->stack;
+ *th->cfp->ep = VM_ENVVAL_BLOCK_PTR(0);
+ th->cfp->self = Qnil;
+ th->cfp->klass = Qnil;
+ th->cfp->flag = 0;
+ th->cfp->iseq = 0;
+ th->cfp->proc = 0;
+ th->cfp->block_iseq = 0;
+ th->cfp->me = 0;
+ th->tag = 0;
+ th->local_storage = st_init_numtable();
+
+ th->first_proc = proc;
+
+#if !FIBER_USE_NATIVE
+ MEMCPY(&cont->jmpbuf, &th->root_jmpbuf, rb_jmpbuf_t, 1);
+#endif
+
+ return fibval;
+}
+
+/* :nodoc: */
+static VALUE
+rb_fiber_init(VALUE fibval)
+{
+ return fiber_init(fibval, rb_block_proc());
+}
+
+VALUE
+rb_fiber_new(VALUE (*func)(ANYARGS), VALUE obj)
+{
+ return fiber_init(fiber_alloc(rb_cFiber), rb_proc_new(func, obj));
+}
+
+static VALUE
+return_fiber(void)
+{
+ rb_fiber_t *fib;
+ VALUE curr = rb_fiber_current();
+ VALUE prev;
+ GetFiberPtr(curr, fib);
+
+ prev = fib->prev;
+ if (NIL_P(prev)) {
+ const VALUE root_fiber = GET_THREAD()->root_fiber;
+
+ if (root_fiber == curr) {
+ rb_raise(rb_eFiberError, "can't yield from root fiber");
+ }
+ return root_fiber;
+ }
+ else {
+ fib->prev = Qnil;
+ return prev;
+ }
+}
+
+VALUE rb_fiber_transfer(VALUE fib, int argc, VALUE *argv);
+
+static void
+rb_fiber_terminate(rb_fiber_t *fib)
+{
+ VALUE value = fib->cont.value;
+ fib->status = TERMINATED;
+#if FIBER_USE_NATIVE && !defined(_WIN32)
+ /* Ruby must not switch to other thread until storing terminated_machine_stack */
+ terminated_machine_stack.ptr = fib->context.uc_stack.ss_sp;
+ terminated_machine_stack.size = fib->context.uc_stack.ss_size / sizeof(VALUE);
+ fib->context.uc_stack.ss_sp = NULL;
+ fib->cont.machine_stack = NULL;
+ fib->cont.machine_stack_size = 0;
+#endif
+ rb_fiber_transfer(return_fiber(), 1, &value);
+}
+
+void
+rb_fiber_start(void)
+{
+ rb_thread_t *th = GET_THREAD();
+ rb_fiber_t *fib;
+ rb_context_t *cont;
+ rb_proc_t *proc;
+ int state;
+
+ GetFiberPtr(th->fiber, fib);
+ cont = &fib->cont;
+
+ TH_PUSH_TAG(th);
+ if ((state = EXEC_TAG()) == 0) {
+ int argc;
+ const VALUE *argv, args = cont->value;
+ GetProcPtr(cont->saved_thread.first_proc, proc);
+ argv = (argc = cont->argc) > 1 ? RARRAY_CONST_PTR(args) : &args;
+ cont->value = Qnil;
+ th->errinfo = Qnil;
+ th->root_lep = rb_vm_ep_local_ep(proc->block.ep);
+ th->root_svar = Qnil;
+
+ fib->status = RUNNING;
+ cont->value = rb_vm_invoke_proc(th, proc, argc, argv, 0);
+ }
+ TH_POP_TAG();
+
+ if (state) {
+ if (state == TAG_RAISE || state == TAG_FATAL) {
+ rb_threadptr_pending_interrupt_enque(th, th->errinfo);
+ }
+ else {
+ VALUE err = rb_vm_make_jump_tag_but_local_jump(state, th->errinfo);
+ if (!NIL_P(err))
+ rb_threadptr_pending_interrupt_enque(th, err);
+ }
+ RUBY_VM_SET_INTERRUPT(th);
+ }
+
+ rb_fiber_terminate(fib);
+ rb_bug("rb_fiber_start: unreachable");
+}
+
+static rb_fiber_t *
+root_fiber_alloc(rb_thread_t *th)
+{
+ rb_fiber_t *fib;
+ /* no need to allocate vm stack */
+ fib = fiber_t_alloc(fiber_alloc(rb_cFiber));
+ fib->cont.type = ROOT_FIBER_CONTEXT;
+#if FIBER_USE_NATIVE
+#ifdef _WIN32
+ fib->fib_handle = ConvertThreadToFiber(0);
+#endif
+#endif
+ fib->status = RUNNING;
+ fib->prev_fiber = fib->next_fiber = fib;
+
+ return fib;
+}
+
+VALUE
+rb_fiber_current(void)
+{
+ rb_thread_t *th = GET_THREAD();
+ if (th->fiber == 0) {
+ /* save root */
+ rb_fiber_t *fib = root_fiber_alloc(th);
+ th->root_fiber = th->fiber = fib->cont.self;
+ }
+ return th->fiber;
+}
+
+static VALUE
+fiber_store(rb_fiber_t *next_fib)
+{
+ rb_thread_t *th = GET_THREAD();
+ rb_fiber_t *fib;
+
+ if (th->fiber) {
+ GetFiberPtr(th->fiber, fib);
+ cont_save_thread(&fib->cont, th);
+ }
+ else {
+ /* create current fiber */
+ fib = root_fiber_alloc(th);
+ th->root_fiber = th->fiber = fib->cont.self;
+ }
+
+#if !FIBER_USE_NATIVE
+ cont_save_machine_stack(th, &fib->cont);
+#endif
+
+ if (FIBER_USE_NATIVE || ruby_setjmp(fib->cont.jmpbuf)) {
+#if FIBER_USE_NATIVE
+ fiber_setcontext(next_fib, fib);
+#ifndef _WIN32
+ if (terminated_machine_stack.ptr) {
+ if (machine_stack_cache_index < MAX_MACHINE_STACK_CACHE) {
+ machine_stack_cache[machine_stack_cache_index].ptr = terminated_machine_stack.ptr;
+ machine_stack_cache[machine_stack_cache_index].size = terminated_machine_stack.size;
+ machine_stack_cache_index++;
+ }
+ else {
+ if (terminated_machine_stack.ptr != fib->cont.machine_stack) {
+ munmap((void*)terminated_machine_stack.ptr, terminated_machine_stack.size * sizeof(VALUE));
+ }
+ else {
+ rb_bug("terminated fiber resumed");
+ }
+ }
+ terminated_machine_stack.ptr = NULL;
+ terminated_machine_stack.size = 0;
+ }
+#endif
+#endif
+ /* restored */
+ GetFiberPtr(th->fiber, fib);
+ if (fib->cont.argc == -1) rb_exc_raise(fib->cont.value);
+ return fib->cont.value;
+ }
+#if !FIBER_USE_NATIVE
+ else {
+ return Qundef;
+ }
+#endif
+}
+
+static inline VALUE
+fiber_switch(VALUE fibval, int argc, VALUE *argv, int is_resume)
+{
+ VALUE value;
+ rb_fiber_t *fib;
+ rb_context_t *cont;
+ rb_thread_t *th = GET_THREAD();
+
+ GetFiberPtr(fibval, fib);
+ cont = &fib->cont;
+
+ if (th->fiber == fibval) {
+ /* ignore fiber context switch
+ * because destination fiber is same as current fiber
+ */
+ return make_passing_arg(argc, argv);
+ }
+
+ if (cont->saved_thread.self != th->self) {
+ rb_raise(rb_eFiberError, "fiber called across threads");
+ }
+ else if (cont->saved_thread.protect_tag != th->protect_tag) {
+ rb_raise(rb_eFiberError, "fiber called across stack rewinding barrier");
+ }
+ else if (fib->status == TERMINATED) {
+ value = rb_exc_new2(rb_eFiberError, "dead fiber called");
+ if (th->fiber != fibval) {
+ GetFiberPtr(th->fiber, fib);
+ if (fib->status != TERMINATED) rb_exc_raise(value);
+ fibval = th->root_fiber;
+ }
+ else {
+ fibval = fib->prev;
+ if (NIL_P(fibval)) fibval = th->root_fiber;
+ }
+ GetFiberPtr(fibval, fib);
+ cont = &fib->cont;
+ cont->argc = -1;
+ cont->value = value;
+#if FIBER_USE_NATIVE
+ {
+ VALUE oldfibval;
+ rb_fiber_t *oldfib;
+ oldfibval = rb_fiber_current();
+ GetFiberPtr(oldfibval, oldfib);
+ fiber_setcontext(fib, oldfib);
+ }
+#else
+ cont_restore_0(cont, &value);
+#endif
+ }
+
+ if (is_resume) {
+ fib->prev = rb_fiber_current();
+ }
+ else {
+ /* restore `tracing' context. see [Feature #4347] */
+ th->trace_arg = cont->saved_thread.trace_arg;
+ }
+
+ cont->argc = argc;
+ cont->value = make_passing_arg(argc, argv);
+
+ value = fiber_store(fib);
+#if !FIBER_USE_NATIVE
+ if (value == Qundef) {
+ cont_restore_0(cont, &value);
+ rb_bug("rb_fiber_resume: unreachable");
+ }
+#endif
+ RUBY_VM_CHECK_INTS(th);
+
+ return value;
+}
+
+VALUE
+rb_fiber_transfer(VALUE fib, int argc, VALUE *argv)
+{
+ return fiber_switch(fib, argc, argv, 0);
+}
+
+VALUE
+rb_fiber_resume(VALUE fibval, int argc, VALUE *argv)
+{
+ rb_fiber_t *fib;
+ GetFiberPtr(fibval, fib);
+
+ if (fib->prev != Qnil || fib->cont.type == ROOT_FIBER_CONTEXT) {
+ rb_raise(rb_eFiberError, "double resume");
+ }
+ if (fib->transfered != 0) {
+ rb_raise(rb_eFiberError, "cannot resume transferred Fiber");
+ }
+
+ return fiber_switch(fibval, argc, argv, 1);
+}
+
+VALUE
+rb_fiber_yield(int argc, VALUE *argv)
+{
+ return rb_fiber_transfer(return_fiber(), argc, argv);
+}
+
+void
+rb_fiber_reset_root_local_storage(VALUE thval)
+{
+ rb_thread_t *th;
+ rb_fiber_t *fib;
+
+ GetThreadPtr(thval, th);
+ if (th->root_fiber && th->root_fiber != th->fiber) {
+ GetFiberPtr(th->root_fiber, fib);
+ th->local_storage = fib->cont.saved_thread.local_storage;
+ }
+}
+
+/*
+ * call-seq:
+ * fiber.alive? -> true or false
+ *
+ * Returns true if the fiber can still be resumed (or transferred
+ * to). After finishing execution of the fiber block this method will
+ * always return false. You need to <code>require 'fiber'</code>
+ * before using this method.
+ */
+VALUE
+rb_fiber_alive_p(VALUE fibval)
+{
+ rb_fiber_t *fib;
+ GetFiberPtr(fibval, fib);
+ return fib->status != TERMINATED ? Qtrue : Qfalse;
+}
+
+/*
+ * call-seq:
+ * fiber.resume(args, ...) -> obj
+ *
+ * Resumes the fiber from the point at which the last <code>Fiber.yield</code>
+ * was called, or starts running it if it is the first call to
+ * <code>resume</code>. Arguments passed to resume will be the value of
+ * the <code>Fiber.yield</code> expression or will be passed as block
+ * parameters to the fiber's block if this is the first <code>resume</code>.
+ *
+ * Alternatively, when resume is called it evaluates to the arguments passed
+ * to the next <code>Fiber.yield</code> statement inside the fiber's block
+ * or to the block value if it runs to completion without any
+ * <code>Fiber.yield</code>
+ */
+static VALUE
+rb_fiber_m_resume(int argc, VALUE *argv, VALUE fib)
+{
+ return rb_fiber_resume(fib, argc, argv);
+}
+
+/*
+ * call-seq:
+ * fiber.transfer(args, ...) -> obj
+ *
+ * Transfer control to another fiber, resuming it from where it last
+ * stopped or starting it if it was not resumed before. The calling
+ * fiber will be suspended much like in a call to
+ * <code>Fiber.yield</code>. You need to <code>require 'fiber'</code>
+ * before using this method.
+ *
+ * The fiber which receives the transfer call is treats it much like
+ * a resume call. Arguments passed to transfer are treated like those
+ * passed to resume.
+ *
+ * You cannot resume a fiber that transferred control to another one.
+ * This will cause a double resume error. You need to transfer control
+ * back to this fiber before it can yield and resume.
+ *
+ * Example:
+ *
+ * fiber1 = Fiber.new do
+ * puts "In Fiber 1"
+ * Fiber.yield
+ * end
+ *
+ * fiber2 = Fiber.new do
+ * puts "In Fiber 2"
+ * fiber1.transfer
+ * puts "Never see this message"
+ * end
+ *
+ * fiber3 = Fiber.new do
+ * puts "In Fiber 3"
+ * end
+ *
+ * fiber2.resume
+ * fiber3.resume
+ *
+ * <em>produces</em>
+ *
+ * In fiber 2
+ * In fiber 1
+ * In fiber 3
+ *
+ */
+static VALUE
+rb_fiber_m_transfer(int argc, VALUE *argv, VALUE fibval)
+{
+ rb_fiber_t *fib;
+ GetFiberPtr(fibval, fib);
+ fib->transfered = 1;
+ return rb_fiber_transfer(fibval, argc, argv);
+}
+
+/*
+ * call-seq:
+ * Fiber.yield(args, ...) -> obj
+ *
+ * Yields control back to the context that resumed the fiber, passing
+ * along any arguments that were passed to it. The fiber will resume
+ * processing at this point when <code>resume</code> is called next.
+ * Any arguments passed to the next <code>resume</code> will be the
+ * value that this <code>Fiber.yield</code> expression evaluates to.
+ */
+static VALUE
+rb_fiber_s_yield(int argc, VALUE *argv, VALUE klass)
+{
+ return rb_fiber_yield(argc, argv);
+}
+
+/*
+ * call-seq:
+ * Fiber.current() -> fiber
+ *
+ * Returns the current fiber. You need to <code>require 'fiber'</code>
+ * before using this method. If you are not running in the context of
+ * a fiber this method will return the root fiber.
+ */
+static VALUE
+rb_fiber_s_current(VALUE klass)
+{
+ return rb_fiber_current();
+}
+
+
+
+/*
+ * Document-class: FiberError
+ *
+ * Raised when an invalid operation is attempted on a Fiber, in
+ * particular when attempting to call/resume a dead fiber,
+ * attempting to yield from the root fiber, or calling a fiber across
+ * threads.
+ *
+ * fiber = Fiber.new{}
+ * fiber.resume #=> nil
+ * fiber.resume #=> FiberError: dead fiber called
+ */
+
+void
+Init_Cont(void)
+{
+#if FIBER_USE_NATIVE
+ rb_thread_t *th = GET_THREAD();
+
+#ifdef _WIN32
+ SYSTEM_INFO info;
+ GetSystemInfo(&info);
+ pagesize = info.dwPageSize;
+#else /* not WIN32 */
+ pagesize = sysconf(_SC_PAGESIZE);
+#endif
+ SET_MACHINE_STACK_END(&th->machine_stack_end);
+#endif
+
+ rb_cFiber = rb_define_class("Fiber", rb_cObject);
+ rb_define_alloc_func(rb_cFiber, fiber_alloc);
+ rb_eFiberError = rb_define_class("FiberError", rb_eStandardError);
+ rb_define_singleton_method(rb_cFiber, "yield", rb_fiber_s_yield, -1);
+ rb_define_method(rb_cFiber, "initialize", rb_fiber_init, 0);
+ rb_define_method(rb_cFiber, "resume", rb_fiber_m_resume, -1);
+}
+
+RUBY_SYMBOL_EXPORT_BEGIN
+
+void
+ruby_Init_Continuation_body(void)
+{
+ rb_cContinuation = rb_define_class("Continuation", rb_cObject);
+ rb_undef_alloc_func(rb_cContinuation);
+ rb_undef_method(CLASS_OF(rb_cContinuation), "new");
+ rb_define_method(rb_cContinuation, "call", rb_cont_call, -1);
+ rb_define_method(rb_cContinuation, "[]", rb_cont_call, -1);
+ rb_define_global_function("callcc", rb_callcc, 0);
+}
+
+void
+ruby_Init_Fiber_as_Coroutine(void)
+{
+ rb_define_method(rb_cFiber, "transfer", rb_fiber_m_transfer, -1);
+ rb_define_method(rb_cFiber, "alive?", rb_fiber_alive_p, 0);
+ rb_define_singleton_method(rb_cFiber, "current", rb_fiber_s_current, 0);
+}
+
+RUBY_SYMBOL_EXPORT_END
diff --git a/cygwin/GNUmakefile.in b/cygwin/GNUmakefile.in
new file mode 100644
index 0000000000..5bd414d786
--- /dev/null
+++ b/cygwin/GNUmakefile.in
@@ -0,0 +1,109 @@
+include Makefile
+
+ENABLE_SHARED=@ENABLE_SHARED@
+DLLWRAP = @DLLWRAP@ --target=@target_os@ --driver-name="$(CC)"
+WINDRES = @WINDRES@ --preprocessor="$(CPP) -xc" -DRC_INVOKED
+
+ifeq (@target_os@,cygwin)
+ DLL_BASE_NAME := $(LIBRUBY_SO:.dll=)
+else
+ DLL_BASE_NAME := $(RUBY_SO_NAME)
+ DLLWRAP += -mno-cygwin
+ VPATH := $(VPATH):$(srcdir)/win32
+ STUBPROGRAM = rubystub$(EXEEXT)
+ IGNOREDPATTERNS = %~ .% %.orig %.rej \#%\#
+ SCRIPTPROGRAMS = $(addsuffix $(EXEEXT),$(filter-out $(IGNOREDPATTERNS),$(notdir $(wildcard $(srcdir)/bin/*))))
+endif
+
+ifneq ($(ENABLE_SHARED),yes)
+ RUBY_EXP = $(RUBY_INSTALL_NAME).exp
+ EXTOBJS = $(RUBY_EXP)
+ LIBRUBYARG = $(LIBRUBY_A)
+ LIBRUBY_SO =
+endif
+
+ifeq ($(RUBY_INSTALL_NAME),ruby)
+ RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME)w
+else
+ RUBYW_INSTALL_NAME = $(subst ruby,rubyw,$(RUBY_INSTALL_NAME))
+endif
+
+WPROGRAM = $(RUBYW_INSTALL_NAME)$(EXEEXT)
+
+-include uncommon.mk
+
+SOLIBS := $(DLL_BASE_NAME).res.@OBJEXT@ $(SOLIBS)
+EXTOBJS += $(if $(filter-out $(RUBYW_INSTALL_NAME),$(@:$(EXEEXT)=)),$(RUBY_INSTALL_NAME),$(@:$(EXEEXT)=)).res.$(OBJEXT)
+RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(DLL_BASE_NAME).rc
+RUBYDEF = $(DLL_BASE_NAME).def
+
+ruby: $(PROGRAM)
+rubyw: $(WPROGRAM)
+stub: $(STUBPROGRAM)
+scriptbin: $(SCRIPTPROGRAMS)
+
+%$(EXEEXT): bin/% $(STUBPROGRAM)
+ $(ECHO) generating $@
+ $(Q) { cat $(STUBPROGRAM); echo; sed -e '1{' -e '/^#!.*ruby/!i\' -e '#!/bin/ruby' -e '}' $<; } > $@
+ $(Q) chmod +x $@
+
+$(LIBRUBY): $(RUBY_EXP) $(LIBRUBY_SO)
+$(RUBY_EXP) $(LIBRUBY_SO): $(DLL_BASE_NAME).res.@OBJEXT@
+
+%.res.@OBJEXT@: %.rc
+ $(ECHO) compiling $@
+ $(Q) $(WINDRES) --include-dir . --include-dir $(<D) --include-dir $(srcdir)/win32 $< $@
+
+$(RCFILES): $(RBCONFIG) $(srcdir)/revision.h $(srcdir)/win32/resource.rb
+ $(ECHO) generating $@
+ $(Q) $(MINIRUBY) $(srcdir)/win32/resource.rb \
+ -ruby_name=$(RUBY_INSTALL_NAME) -rubyw_name=$(RUBYW_INSTALL_NAME) \
+ -so_name=$(DLL_BASE_NAME) \
+ . $(icondirs) $(srcdir)/win32
+
+$(PROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@
+$(WPROGRAM): $(RUBYW_INSTALL_NAME).res.@OBJEXT@
+ @rm -f $@
+ $(ECHO) linking $@
+ $(Q) $(PURIFY) $(CC) -mwindows -e $(SYMBOL_PREFIX)mainCRTStartup $(LDFLAGS) $(XLDFLAGS) \
+ $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@
+$(STUBPROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@ stub.@OBJEXT@
+ @rm -f $@
+ $(ECHO) linking $@
+ $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) \
+ stub.@OBJEXT@ $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@
+
+$(RUBY_EXP): $(LIBRUBY_A)
+ $(ECHO) creating $@
+ $(Q) $(DLLWRAP) \
+ --output-exp=$(RUBY_EXP) \
+ --export-all $(LIBRUBY_A) $(LIBS) -o $(PROGRAM)
+ $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) dmyext.o $(SOLIBS) -o $(PROGRAM)
+ @rm -f $(PROGRAM)
+
+GNUmakefile: $(srcdir)/cygwin/GNUmakefile.in
+
+ifeq (@target_os@,mingw32)
+$(OBJS) $(MAINOBJ): win32.h
+
+dir.$(OBJEXT) win32.$(OBJEXT): win32/dir.h
+endif
+
+$(LIBRUBY_SO): $(RUBYDEF)
+
+$(RUBYDEF): $(LIBRUBY_A) $(PREP) $(RBCONFIG)
+ $(ECHO) generating $@
+ $(Q) $(MINIRUBY) $(srcdir)/win32/mkexports.rb -output=$@ $(LIBRUBY_A)
+
+clean-local::
+ @$(RM) $(RUBYDEF)
+
+ifeq (@target_os@,cygwin)
+cygwin-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)$(TEENY).dll: $(LIBRUBY_A) $(RUBYDEF)
+ $(ECHO) generating $@
+ $(Q) @DLLWRAP@ -s --def=$(RUBYDEF) -o $@
+endif
+
+clean-local::
+ @$(RM) $(RUBY_EXP) $(RCFILES:.rc=.res.@OBJEXT@)
+ @$(RM) $(RCFILES)
diff --git a/debug.c b/debug.c
new file mode 100644
index 0000000000..2f1e03cc3a
--- /dev/null
+++ b/debug.c
@@ -0,0 +1,162 @@
+/**********************************************************************
+
+ debug.c -
+
+ $Author$
+ created at: 04/08/25 02:31:54 JST
+
+ Copyright (C) 2004-2007 Koichi Sasada
+
+**********************************************************************/
+
+#include "ruby/ruby.h"
+#include "ruby/encoding.h"
+#include "ruby/util.h"
+#include "vm_debug.h"
+#include "eval_intern.h"
+#include "vm_core.h"
+#include "id.h"
+
+/* for gdb */
+const union {
+ enum ruby_special_consts special_consts;
+ enum ruby_value_type value_type;
+ enum ruby_tag_type tag_type;
+ enum node_type node_type;
+ enum ruby_method_ids method_ids;
+ enum ruby_id_types id_types;
+ enum {
+ RUBY_ENCODING_INLINE_MAX = ENCODING_INLINE_MAX,
+ RUBY_ENCODING_SHIFT = ENCODING_SHIFT,
+ RUBY_ENC_CODERANGE_MASK = ENC_CODERANGE_MASK,
+ RUBY_ENC_CODERANGE_UNKNOWN = ENC_CODERANGE_UNKNOWN,
+ RUBY_ENC_CODERANGE_7BIT = ENC_CODERANGE_7BIT,
+ RUBY_ENC_CODERANGE_VALID = ENC_CODERANGE_VALID,
+ RUBY_ENC_CODERANGE_BROKEN = ENC_CODERANGE_BROKEN,
+ RUBY_FL_WB_PROTECTED = FL_WB_PROTECTED,
+ RUBY_FL_PROMOTED = FL_PROMOTED,
+ RUBY_FL_FINALIZE = FL_FINALIZE,
+ RUBY_FL_TAINT = FL_TAINT,
+ RUBY_FL_EXIVAR = FL_EXIVAR,
+ RUBY_FL_FREEZE = FL_FREEZE,
+ RUBY_FL_SINGLETON = FL_SINGLETON,
+ RUBY_FL_USER0 = FL_USER0,
+ RUBY_FL_USER1 = FL_USER1,
+ RUBY_FL_USER2 = FL_USER2,
+ RUBY_FL_USER3 = FL_USER3,
+ RUBY_FL_USER4 = FL_USER4,
+ RUBY_FL_USER5 = FL_USER5,
+ RUBY_FL_USER6 = FL_USER6,
+ RUBY_FL_USER7 = FL_USER7,
+ RUBY_FL_USER8 = FL_USER8,
+ RUBY_FL_USER9 = FL_USER9,
+ RUBY_FL_USER10 = FL_USER10,
+ RUBY_FL_USER11 = FL_USER11,
+ RUBY_FL_USER12 = FL_USER12,
+ RUBY_FL_USER13 = FL_USER13,
+ RUBY_FL_USER14 = FL_USER14,
+ RUBY_FL_USER15 = FL_USER15,
+ RUBY_FL_USER16 = FL_USER16,
+ RUBY_FL_USER17 = FL_USER17,
+ RUBY_FL_USER18 = FL_USER18,
+ RUBY_FL_USHIFT = FL_USHIFT,
+ RUBY_NODE_TYPESHIFT = NODE_TYPESHIFT,
+ RUBY_NODE_TYPEMASK = NODE_TYPEMASK,
+ RUBY_NODE_LSHIFT = NODE_LSHIFT,
+ RUBY_NODE_FL_NEWLINE = NODE_FL_NEWLINE
+ } various;
+} ruby_dummy_gdb_enums;
+
+const VALUE RUBY_FL_USER19 = FL_USER19;
+const SIGNED_VALUE RUBY_NODE_LMASK = NODE_LMASK;
+const VALUE RUBY_ENCODING_MASK = ENCODING_MASK;
+
+int
+ruby_debug_print_indent(int level, int debug_level, int indent_level)
+{
+ if (level < debug_level) {
+ fprintf(stderr, "%*s", indent_level, "");
+ fflush(stderr);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void
+ruby_debug_printf(const char *format, ...)
+{
+ va_list ap;
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+}
+
+VALUE
+ruby_debug_print_value(int level, int debug_level, const char *header, VALUE obj)
+{
+ if (level < debug_level) {
+ VALUE str;
+ str = rb_inspect(obj);
+ fprintf(stderr, "DBG> %s: %s\n", header,
+ obj == (VALUE)(SIGNED_VALUE)-1 ? "" : StringValueCStr(str));
+ fflush(stderr);
+ }
+ return obj;
+}
+
+void
+ruby_debug_print_v(VALUE v)
+{
+ ruby_debug_print_value(0, 1, "", v);
+}
+
+ID
+ruby_debug_print_id(int level, int debug_level, const char *header, ID id)
+{
+ if (level < debug_level) {
+ fprintf(stderr, "DBG> %s: %s\n", header, rb_id2name(id));
+ fflush(stderr);
+ }
+ return id;
+}
+
+NODE *
+ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node)
+{
+ if (level < debug_level) {
+ fprintf(stderr, "DBG> %s: %s (%u)\n", header,
+ ruby_node_name(nd_type(node)), nd_line(node));
+ }
+ return (NODE *)node;
+}
+
+void
+ruby_debug_breakpoint(void)
+{
+ /* */
+}
+
+static void
+set_debug_option(const char *str, int len, void *arg)
+{
+#define SET_WHEN(name, var) do { \
+ if (len == sizeof(name) - 1 && \
+ strncmp(str, (name), len) == 0) { \
+ extern int var; \
+ var = 1; \
+ return; \
+ } \
+ } while (0)
+ SET_WHEN("gc_stress", *ruby_initial_gc_stress_ptr);
+ SET_WHEN("core", ruby_enable_coredump);
+#if defined _WIN32 && defined _MSC_VER && _MSC_VER >= 1400
+ SET_WHEN("rtc_error", ruby_w32_rtc_error);
+#endif
+ fprintf(stderr, "unexpected debug option: %.*s\n", len, str);
+}
+
+void
+ruby_set_debug_option(const char *str)
+{
+ ruby_each_words(str, set_debug_option, 0);
+}
diff --git a/defines.h b/defines.h
deleted file mode 100644
index b981d8617d..0000000000
--- a/defines.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/************************************************
-
- defines.h -
-
- $Author: matz $
- $Date: 1996/12/25 10:42:25 $
- created at: Wed May 18 00:21:44 JST 1994
-
-************************************************/
-#ifndef DEFINES_H
-#define DEFINES_H
-
-#define RUBY
-
-/* define EUC/SJIS for default kanji-code */
-#if defined(MSDOS) || defined(__CYGWIN32__) || defined(__human68k__)
-#undef EUC
-#define SJIS
-#else
-#define EUC
-#undef SJIS
-#endif
-
-#ifdef NeXT
-#define DYNAMIC_ENDIAN /* determine endian at runtime */
-#define S_IXUSR _S_IXUSR /* execute/search permission, owner */
-#define S_IXGRP 0000010 /* execute/search permission, group */
-#define S_IXOTH 0000001 /* execute/search permission, other */
-#endif /* NeXT */
-
-#ifdef NT
-#include "missing/nt.h"
-#endif
-
-#ifdef sparc
-#define FLUSH_REGISTER_WINDOWS asm("ta 3")
-#else
-#define FLUSH_REGISTER_WINDOWS /* empty */
-#endif
-
-#ifdef __human68k__
-#undef HAVE_RANDOM
-#undef HAVE_SETITIMER
-#endif
-
-#ifndef RUBY_PLATFORM
-#define RUBY_PLATFORM "unknown-unknown"
-#endif
-
-#endif
diff --git a/defs/default_gems b/defs/default_gems
new file mode 100644
index 0000000000..e73e383b26
--- /dev/null
+++ b/defs/default_gems
@@ -0,0 +1,5 @@
+# gem base directory versioning file [executable files under bin]
+rake lib/rake lib/rake/version.rb [rake]
+rdoc lib/rdoc lib/rdoc.rb [rdoc ri]
+minitest lib/minitest lib/minitest/unit.rb
+json ext/json ext/json/lib/json/version.rb
diff --git a/defs/gmake.mk b/defs/gmake.mk
new file mode 100644
index 0000000000..0acb88ef57
--- /dev/null
+++ b/defs/gmake.mk
@@ -0,0 +1,29 @@
+# -*- makefile-gmake -*-
+TEST_TARGETS := $(filter check test check% test% btest%,$(MAKECMDGOALS))
+TEST_TARGETS += $(subst check,test-all,$(patsubst check-%,test-%,$(TEST_TARGETS)))
+TEST_TARGETS := $(patsubst test-%,yes-test-%,$(patsubst btest-%,yes-btest-%,$(TEST_TARGETS)))
+TEST_DEPENDS := $(if $(TEST_TARGETS),$(filter all main exts,$(MAKECMDGOALS)))
+TEST_DEPENDS += $(TEST_DEPENDS) $(if $(filter check%,$(MAKECMDGOALS)),main)
+
+ifneq ($(filter check% test,$(MAKECMDGOALS)),)
+yes-test-knownbug: $(TEST_DEPENDS) yes-btest-ruby
+yes-btest-ruby: $(TEST_DEPENDS) yes-test-sample
+yes-test-sample: $(TEST_DEPENDS)
+endif
+ifneq ($(filter check%,$(MAKECMDGOALS)) $(filter test-all,$(TEST_TARGETS)),)
+yes-test-all yes-test-ruby: $(filter-out %test-all %test-ruby check%,$(TEST_TARGETS))
+endif
+ifneq ($(filter check%,$(MAKECMDGOALS))$(if $(filter test-all,$(MAKECMDGOALS)),$(filter test-knownbug,$(MAKECMDGOALS))),)
+yes-test-all yes-test-ruby: yes-test-knownbug
+endif
+
+$(TEST_TARGETS): $(TEST_DEPENDS)
+
+ifneq ($(if $(filter install,$(MAKECMDGOALS)),$(filter uninstall,$(MAKECMDGOALS))),)
+install-targets := $(filter install uninstall,$(MAKECMDGOALS))
+$(word 1,$(install-targets)): $(word 0,$(install-targets))
+endif
+
+ifneq ($(filter reinstall,$(MAKECMDGOALS)),)
+install: uninstall
+endif
diff --git a/defs/id.def b/defs/id.def
new file mode 100644
index 0000000000..53ed3775ad
--- /dev/null
+++ b/defs/id.def
@@ -0,0 +1,105 @@
+# -*- mode: ruby; coding: us-ascii -*-
+firstline, predefined = __LINE__+1, %[\
+ freeze
+ inspect
+ intern
+ object_id
+ const_missing
+ method_missing MethodMissing
+ method_added
+ singleton_method_added
+ method_removed
+ singleton_method_removed
+ method_undefined
+ singleton_method_undefined
+ length
+ size
+ gets
+ succ
+ each
+ proc
+ lambda
+ send
+ __send__
+ __attached__
+ initialize
+ initialize_copy
+ initialize_clone
+ initialize_dup
+ _ UScore
+ "/*NULL*/" NULL
+ empty?
+ eql?
+ respond_to? Respond_to
+ respond_to_missing? Respond_to_missing
+ <IFUNC>
+ <CFUNC>
+ core#set_method_alias
+ core#set_variable_alias
+ core#undef_method
+ core#define_method
+ core#define_singleton_method
+ core#set_postexe
+ core#hash_from_ary
+ core#hash_merge_ary
+ core#hash_merge_ptr
+ core#hash_merge_kwd
+]
+
+class KeywordError < RuntimeError
+ def self.raise(mesg, line)
+ super(self, mesg, ["#{__FILE__}:#{line}", *caller])
+ end
+end
+
+predefined_ids = {}
+preserved_ids = []
+local_ids = []
+instance_ids = []
+global_ids = []
+const_ids = []
+class_ids = []
+names = {}
+predefined.split(/^/).each_with_index do |line, num|
+ next if /^#/ =~ line
+ line.sub!(/\s+#.*/, '')
+ name, token = line.split
+ next unless name
+ token ||= name
+ if /#/ =~ token
+ token = "_#{token.gsub(/\W+/, '_')}"
+ else
+ token = token.sub(/\?/, 'P').sub(/\A[a-z]/) {$&.upcase}
+ token.sub!(/\A\$/, "_G_")
+ token.sub!(/\A@@/, "_C_")
+ token.sub!(/\A@/, "_I_")
+ token.gsub!(/\W+/, "")
+ end
+ if prev = names[name]
+ KeywordError.raise("#{name} is already registered at line #{prev+firstline}", firstline+num)
+ end
+ if prev = predefined_ids[token]
+ KeywordError.raise("#{token} is already used for #{prev} at line #{names[prev]+firstline}", firstline+num)
+ end
+ names[name] = num
+ case name
+ when /\A[A-Z]\w*\z/; const_ids
+ when /\A(?!\d)\w+\z/; local_ids
+ when /\A\$(?:\d+|(?!\d)\w+)\z/; global_ids
+ when /\A@@(?!\d)\w+\z/; class_ids
+ when /\A@(?!\d)\w+\z/; instance_ids
+ when /\A((?!\d)\w+)=\z/
+ KeywordError.raise("use ID2ATTRSET(#{$1}) instead of ATTRSET #{name}", firstline+num)
+ else preserved_ids
+ end << token
+ predefined_ids[token] = name
+end
+{
+ "LOCAL" => local_ids,
+ "INSTANCE" => instance_ids,
+ "GLOBAL" => global_ids,
+ "CONST" => const_ids,
+ "CLASS" => class_ids,
+ :preserved => preserved_ids,
+ :predefined => predefined_ids,
+}
diff --git a/defs/keywords b/defs/keywords
new file mode 100644
index 0000000000..1b5719aa85
--- /dev/null
+++ b/defs/keywords
@@ -0,0 +1,53 @@
+%{
+struct kwtable {const char *name; int id[2]; enum lex_state_e state;};
+const struct kwtable *rb_reserved_word(const char *, unsigned int);
+#ifndef RIPPER
+static const struct kwtable *reserved_word(const char *, unsigned int);
+#define rb_reserved_word(str, len) reserved_word(str, len)
+%}
+
+struct kwtable;
+%%
+__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
+__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
+__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
+BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
+END, {keyword_END, keyword_END}, EXPR_END
+alias, {keyword_alias, keyword_alias}, EXPR_FNAME
+and, {keyword_and, keyword_and}, EXPR_VALUE
+begin, {keyword_begin, keyword_begin}, EXPR_BEG
+break, {keyword_break, keyword_break}, EXPR_MID
+case, {keyword_case, keyword_case}, EXPR_VALUE
+class, {keyword_class, keyword_class}, EXPR_CLASS
+def, {keyword_def, keyword_def}, EXPR_FNAME
+defined?, {keyword_defined, keyword_defined}, EXPR_ARG
+do, {keyword_do, keyword_do}, EXPR_BEG
+else, {keyword_else, keyword_else}, EXPR_BEG
+elsif, {keyword_elsif, keyword_elsif}, EXPR_VALUE
+end, {keyword_end, keyword_end}, EXPR_END
+ensure, {keyword_ensure, keyword_ensure}, EXPR_BEG
+false, {keyword_false, keyword_false}, EXPR_END
+for, {keyword_for, keyword_for}, EXPR_VALUE
+if, {keyword_if, modifier_if}, EXPR_VALUE
+in, {keyword_in, keyword_in}, EXPR_VALUE
+module, {keyword_module, keyword_module}, EXPR_VALUE
+next, {keyword_next, keyword_next}, EXPR_MID
+nil, {keyword_nil, keyword_nil}, EXPR_END
+not, {keyword_not, keyword_not}, EXPR_ARG
+or, {keyword_or, keyword_or}, EXPR_VALUE
+redo, {keyword_redo, keyword_redo}, EXPR_END
+rescue, {keyword_rescue, modifier_rescue}, EXPR_MID
+retry, {keyword_retry, keyword_retry}, EXPR_END
+return, {keyword_return, keyword_return}, EXPR_MID
+self, {keyword_self, keyword_self}, EXPR_END
+super, {keyword_super, keyword_super}, EXPR_ARG
+then, {keyword_then, keyword_then}, EXPR_BEG
+true, {keyword_true, keyword_true}, EXPR_END
+undef, {keyword_undef, keyword_undef}, EXPR_FNAME
+unless, {keyword_unless, modifier_unless}, EXPR_VALUE
+until, {keyword_until, modifier_until}, EXPR_VALUE
+when, {keyword_when, keyword_when}, EXPR_VALUE
+while, {keyword_while, modifier_while}, EXPR_VALUE
+yield, {keyword_yield, keyword_yield}, EXPR_ARG
+%%
+#endif
diff --git a/defs/known_errors.def b/defs/known_errors.def
new file mode 100644
index 0000000000..3cebe90a8e
--- /dev/null
+++ b/defs/known_errors.def
@@ -0,0 +1,145 @@
+EPERM
+ENOENT
+ESRCH
+EINTR
+EIO
+ENXIO
+E2BIG
+ENOEXEC
+EBADF
+ECHILD
+EAGAIN
+ENOMEM
+EACCES
+EFAULT
+ENOTBLK
+EBUSY
+EEXIST
+EXDEV
+ENODEV
+ENOTDIR
+EISDIR
+EINVAL
+ENFILE
+EMFILE
+ENOTTY
+ETXTBSY
+EFBIG
+ENOSPC
+ESPIPE
+EROFS
+EMLINK
+EPIPE
+EDOM
+ERANGE
+EDEADLK
+ENAMETOOLONG
+ENOLCK
+ENOSYS
+ENOTEMPTY
+ELOOP
+EWOULDBLOCK
+ENOMSG
+EIDRM
+ECHRNG
+EL2NSYNC
+EL3HLT
+EL3RST
+ELNRNG
+EUNATCH
+ENOCSI
+EL2HLT
+EBADE
+EBADR
+EXFULL
+ENOANO
+EBADRQC
+EBADSLT
+EDEADLOCK
+EBFONT
+ENOSTR
+ENODATA
+ETIME
+ENOSR
+ENONET
+ENOPKG
+EREMOTE
+ENOLINK
+EADV
+ESRMNT
+ECOMM
+EPROTO
+EMULTIHOP
+EDOTDOT
+EBADMSG
+EOVERFLOW
+ENOTUNIQ
+EBADFD
+EREMCHG
+ELIBACC
+ELIBBAD
+ELIBSCN
+ELIBMAX
+ELIBEXEC
+EILSEQ
+ERESTART
+ESTRPIPE
+EUSERS
+ENOTSOCK
+EDESTADDRREQ
+EMSGSIZE
+EPROTOTYPE
+ENOPROTOOPT
+EPROTONOSUPPORT
+ESOCKTNOSUPPORT
+EOPNOTSUPP
+EPFNOSUPPORT
+EAFNOSUPPORT
+EADDRINUSE
+EADDRNOTAVAIL
+ENETDOWN
+ENETUNREACH
+ENETRESET
+ECONNABORTED
+ECONNRESET
+ENOBUFS
+EISCONN
+ENOTCONN
+ESHUTDOWN
+ETOOMANYREFS
+ETIMEDOUT
+ECONNREFUSED
+EHOSTDOWN
+EHOSTUNREACH
+EALREADY
+EINPROGRESS
+ESTALE
+EUCLEAN
+ENOTNAM
+ENAVAIL
+EISNAM
+EREMOTEIO
+EDQUOT
+ECANCELED
+EKEYEXPIRED
+EKEYREJECTED
+EKEYREVOKED
+EMEDIUMTYPE
+ENOKEY
+ENOMEDIUM
+ENOTRECOVERABLE
+EOWNERDEAD
+ERFKILL
+EAUTH
+EBADRPC
+EDOOFUS
+EFTYPE
+ENEEDAUTH
+ENOATTR
+ENOTSUP
+EPROCLIM
+EPROCUNAVAIL
+EPROGMISMATCH
+EPROGUNAVAIL
+ERPCMISMATCH
+EIPSEC
diff --git a/defs/lex.c.src b/defs/lex.c.src
new file mode 100644
index 0000000000..1b5719aa85
--- /dev/null
+++ b/defs/lex.c.src
@@ -0,0 +1,53 @@
+%{
+struct kwtable {const char *name; int id[2]; enum lex_state_e state;};
+const struct kwtable *rb_reserved_word(const char *, unsigned int);
+#ifndef RIPPER
+static const struct kwtable *reserved_word(const char *, unsigned int);
+#define rb_reserved_word(str, len) reserved_word(str, len)
+%}
+
+struct kwtable;
+%%
+__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
+__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
+__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
+BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
+END, {keyword_END, keyword_END}, EXPR_END
+alias, {keyword_alias, keyword_alias}, EXPR_FNAME
+and, {keyword_and, keyword_and}, EXPR_VALUE
+begin, {keyword_begin, keyword_begin}, EXPR_BEG
+break, {keyword_break, keyword_break}, EXPR_MID
+case, {keyword_case, keyword_case}, EXPR_VALUE
+class, {keyword_class, keyword_class}, EXPR_CLASS
+def, {keyword_def, keyword_def}, EXPR_FNAME
+defined?, {keyword_defined, keyword_defined}, EXPR_ARG
+do, {keyword_do, keyword_do}, EXPR_BEG
+else, {keyword_else, keyword_else}, EXPR_BEG
+elsif, {keyword_elsif, keyword_elsif}, EXPR_VALUE
+end, {keyword_end, keyword_end}, EXPR_END
+ensure, {keyword_ensure, keyword_ensure}, EXPR_BEG
+false, {keyword_false, keyword_false}, EXPR_END
+for, {keyword_for, keyword_for}, EXPR_VALUE
+if, {keyword_if, modifier_if}, EXPR_VALUE
+in, {keyword_in, keyword_in}, EXPR_VALUE
+module, {keyword_module, keyword_module}, EXPR_VALUE
+next, {keyword_next, keyword_next}, EXPR_MID
+nil, {keyword_nil, keyword_nil}, EXPR_END
+not, {keyword_not, keyword_not}, EXPR_ARG
+or, {keyword_or, keyword_or}, EXPR_VALUE
+redo, {keyword_redo, keyword_redo}, EXPR_END
+rescue, {keyword_rescue, modifier_rescue}, EXPR_MID
+retry, {keyword_retry, keyword_retry}, EXPR_END
+return, {keyword_return, keyword_return}, EXPR_MID
+self, {keyword_self, keyword_self}, EXPR_END
+super, {keyword_super, keyword_super}, EXPR_ARG
+then, {keyword_then, keyword_then}, EXPR_BEG
+true, {keyword_true, keyword_true}, EXPR_END
+undef, {keyword_undef, keyword_undef}, EXPR_FNAME
+unless, {keyword_unless, modifier_unless}, EXPR_VALUE
+until, {keyword_until, modifier_until}, EXPR_VALUE
+when, {keyword_when, keyword_when}, EXPR_VALUE
+while, {keyword_while, modifier_while}, EXPR_VALUE
+yield, {keyword_yield, keyword_yield}, EXPR_ARG
+%%
+#endif
diff --git a/defs/opt_insn_unif.def b/defs/opt_insn_unif.def
new file mode 100644
index 0000000000..1ac613dbea
--- /dev/null
+++ b/defs/opt_insn_unif.def
@@ -0,0 +1,29 @@
+#
+# a definition of instruction unification
+#
+#
+
+__END__
+
+putobject putobject
+putobject putstring
+putobject setlocal
+putobject setdynamic
+
+putstring putstring
+putstring putobject
+putstring setlocal
+putstring setdynamic
+
+# putnil end
+
+dup setlocal
+
+# from tarai
+getlocal getlocal
+# getlocal send
+
+# from tak, ackermann
+getlocal putobject
+
+
diff --git a/defs/opt_operand.def b/defs/opt_operand.def
new file mode 100644
index 0000000000..ab7103a421
--- /dev/null
+++ b/defs/opt_operand.def
@@ -0,0 +1,22 @@
+#
+# configration file for operand union optimization
+#
+# format:
+# [insn name] op1, op2 ...
+#
+# wildcard: *
+#
+
+getlocal *, 0
+getlocal *, 1
+setlocal *, 0
+setlocal *, 1
+
+putobject INT2FIX(0)
+putobject INT2FIX(1)
+
+__END__
+
+putobject Qtrue
+putobject Qfalse
+
diff --git a/dir.c b/dir.c
index ca2ca2101a..e3a74c18b0 100644
--- a/dir.c
+++ b/dir.c
@@ -1,31 +1,33 @@
-/************************************************
+/**********************************************************************
dir.c -
- $Author: matz $
- $Date: 1996/12/25 10:42:28 $
+ $Author$
created at: Wed Jan 5 09:51:01 JST 1994
- Copyright (C) 1993-1996 Yukihiro Matsumoto
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
+ Copyright (C) 2000 Network Applied Communication Laboratory, Inc.
+ Copyright (C) 2000 Information-technology Promotion Agency, Japan
-************************************************/
+**********************************************************************/
-#include "ruby.h"
+#include "ruby/ruby.h"
+#include "ruby/encoding.h"
+#include "internal.h"
#include <sys/types.h>
+#include <sys/stat.h>
+
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#else
-# define MAXPATHLEN 1024
-#endif
-
-#if HAVE_DIRENT_H
+#if defined HAVE_DIRENT_H && !defined _WIN32
# include <dirent.h>
# define NAMLEN(dirent) strlen((dirent)->d_name)
+#elif defined HAVE_DIRECT_H && !defined _WIN32
+# include <direct.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
#else
# define dirent direct
# define NAMLEN(dirent) (dirent)->d_namlen
@@ -38,206 +40,941 @@
# if HAVE_NDIR_H
# include <ndir.h>
# endif
-# ifdef NT
-# include "missing/dir.h"
+# ifdef _WIN32
+# include "win32/dir.h"
# endif
#endif
+#if defined(__native_client__) && defined(NACL_NEWLIB)
+# include "nacl/dirent.h"
+# include "nacl/stat.h"
+#endif
#include <errno.h>
-#ifndef NT
+#ifndef HAVE_STDLIB_H
char *getenv();
#endif
-static VALUE cDir;
+#ifndef HAVE_STRING_H
+char *strchr(char*,char);
+#endif
+
+#include <ctype.h>
-static void
-free_dir(dir)
+#include "ruby/util.h"
+
+/* define system APIs */
+#ifdef _WIN32
+#undef chdir
+#define chdir(p) rb_w32_uchdir(p)
+#undef mkdir
+#define mkdir(p, m) rb_w32_umkdir((p), (m))
+#undef rmdir
+#define rmdir(p) rb_w32_urmdir(p)
+#undef opendir
+#define opendir(p) rb_w32_uopendir(p)
+#endif
+
+#ifdef __APPLE__
+# define HAVE_HFS 1
+#else
+# define HAVE_HFS 0
+#endif
+#if HAVE_HFS
+#include <sys/param.h>
+#include <sys/mount.h>
+
+static inline int
+is_hfs(DIR *dirp)
+{
+ struct statfs buf;
+ if (fstatfs(dirfd(dirp), &buf) == 0) {
+ return buf.f_type == 17; /* HFS on darwin */
+ }
+ return FALSE;
+}
+
+static inline int
+has_nonascii(const char *ptr, size_t len)
+{
+ while (len > 0) {
+ if (!ISASCII(*ptr)) return 1;
+ ptr++;
+ --len;
+ }
+ return 0;
+}
+
+# define IF_HAVE_HFS(something) something
+#else
+# define IF_HAVE_HFS(something) /* nothing */
+#endif
+
+#define FNM_NOESCAPE 0x01
+#define FNM_PATHNAME 0x02
+#define FNM_DOTMATCH 0x04
+#define FNM_CASEFOLD 0x08
+#define FNM_EXTGLOB 0x10
+#if CASEFOLD_FILESYSTEM
+#define FNM_SYSCASE FNM_CASEFOLD
+#else
+#define FNM_SYSCASE 0
+#endif
+
+#define FNM_NOMATCH 1
+#define FNM_ERROR 2
+
+# define Next(p, e, enc) ((p)+ rb_enc_mbclen((p), (e), (enc)))
+# define Inc(p, e, enc) ((p) = Next((p), (e), (enc)))
+
+static char *
+bracket(
+ const char *p, /* pattern (next to '[') */
+ const char *pend,
+ const char *s, /* string */
+ const char *send,
+ int flags,
+ rb_encoding *enc)
+{
+ const int nocase = flags & FNM_CASEFOLD;
+ const int escape = !(flags & FNM_NOESCAPE);
+ unsigned int c1, c2;
+ int r;
+ int ok = 0, not = 0;
+
+ if (p >= pend) return NULL;
+ if (*p == '!' || *p == '^') {
+ not = 1;
+ p++;
+ }
+
+ while (*p != ']') {
+ const char *t1 = p;
+ if (escape && *t1 == '\\')
+ t1++;
+ if (!*t1)
+ return NULL;
+ p = t1 + (r = rb_enc_mbclen(t1, pend, enc));
+ if (p >= pend) return NULL;
+ if (p[0] == '-' && p[1] != ']') {
+ const char *t2 = p + 1;
+ int r2;
+ if (escape && *t2 == '\\')
+ t2++;
+ if (!*t2)
+ return NULL;
+ p = t2 + (r2 = rb_enc_mbclen(t2, pend, enc));
+ if (ok) continue;
+ if ((r <= (send-s) && memcmp(t1, s, r) == 0) ||
+ (r2 <= (send-s) && memcmp(t2, s, r2) == 0)) {
+ ok = 1;
+ continue;
+ }
+ c1 = rb_enc_codepoint(s, send, enc);
+ if (nocase) c1 = rb_enc_toupper(c1, enc);
+ c2 = rb_enc_codepoint(t1, pend, enc);
+ if (nocase) c2 = rb_enc_toupper(c2, enc);
+ if (c1 < c2) continue;
+ c2 = rb_enc_codepoint(t2, pend, enc);
+ if (nocase) c2 = rb_enc_toupper(c2, enc);
+ if (c1 > c2) continue;
+ }
+ else {
+ if (ok) continue;
+ if (r <= (send-s) && memcmp(t1, s, r) == 0) {
+ ok = 1;
+ continue;
+ }
+ if (!nocase) continue;
+ c1 = rb_enc_toupper(rb_enc_codepoint(s, send, enc), enc);
+ c2 = rb_enc_toupper(rb_enc_codepoint(p, pend, enc), enc);
+ if (c1 != c2) continue;
+ }
+ ok = 1;
+ }
+
+ return ok == not ? NULL : (char *)p + 1;
+}
+
+/* If FNM_PATHNAME is set, only path element will be matched. (upto '/' or '\0')
+ Otherwise, entire string will be matched.
+ End marker itself won't be compared.
+ And if function succeeds, *pcur reaches end marker.
+*/
+#define UNESCAPE(p) (escape && *(p) == '\\' ? (p) + 1 : (p))
+#define ISEND(p) (!*(p) || (pathname && *(p) == '/'))
+#define RETURN(val) return *pcur = p, *scur = s, (val);
+
+static int
+fnmatch_helper(
+ const char **pcur, /* pattern */
+ const char **scur, /* string */
+ int flags,
+ rb_encoding *enc)
+{
+ const int period = !(flags & FNM_DOTMATCH);
+ const int pathname = flags & FNM_PATHNAME;
+ const int escape = !(flags & FNM_NOESCAPE);
+ const int nocase = flags & FNM_CASEFOLD;
+
+ const char *ptmp = 0;
+ const char *stmp = 0;
+
+ const char *p = *pcur;
+ const char *pend = p + strlen(p);
+ const char *s = *scur;
+ const char *send = s + strlen(s);
+
+ int r;
+
+ if (period && *s == '.' && *UNESCAPE(p) != '.') /* leading period */
+ RETURN(FNM_NOMATCH);
+
+ while (1) {
+ switch (*p) {
+ case '*':
+ do { p++; } while (*p == '*');
+ if (ISEND(UNESCAPE(p))) {
+ p = UNESCAPE(p);
+ RETURN(0);
+ }
+ if (ISEND(s))
+ RETURN(FNM_NOMATCH);
+ ptmp = p;
+ stmp = s;
+ continue;
+
+ case '?':
+ if (ISEND(s))
+ RETURN(FNM_NOMATCH);
+ p++;
+ Inc(s, send, enc);
+ continue;
+
+ case '[': {
+ const char *t;
+ if (ISEND(s))
+ RETURN(FNM_NOMATCH);
+ if ((t = bracket(p + 1, pend, s, send, flags, enc)) != 0) {
+ p = t;
+ Inc(s, send, enc);
+ continue;
+ }
+ goto failed;
+ }
+ }
+
+ /* ordinary */
+ p = UNESCAPE(p);
+ if (ISEND(s))
+ RETURN(ISEND(p) ? 0 : FNM_NOMATCH);
+ if (ISEND(p))
+ goto failed;
+ r = rb_enc_precise_mbclen(p, pend, enc);
+ if (!MBCLEN_CHARFOUND_P(r))
+ goto failed;
+ if (r <= (send-s) && memcmp(p, s, r) == 0) {
+ p += r;
+ s += r;
+ continue;
+ }
+ if (!nocase) goto failed;
+ if (rb_enc_toupper(rb_enc_codepoint(p, pend, enc), enc) !=
+ rb_enc_toupper(rb_enc_codepoint(s, send, enc), enc))
+ goto failed;
+ p += r;
+ Inc(s, send, enc);
+ continue;
+
+ failed: /* try next '*' position */
+ if (ptmp && stmp) {
+ p = ptmp;
+ Inc(stmp, send, enc); /* !ISEND(*stmp) */
+ s = stmp;
+ continue;
+ }
+ RETURN(FNM_NOMATCH);
+ }
+}
+
+static int
+fnmatch(
+ const char *pattern,
+ rb_encoding *enc,
+ const char *string,
+ int flags)
+{
+ const char *p = pattern;
+ const char *s = string;
+ const char *send = s + strlen(string);
+ const int period = !(flags & FNM_DOTMATCH);
+ const int pathname = flags & FNM_PATHNAME;
+
+ const char *ptmp = 0;
+ const char *stmp = 0;
+
+ if (pathname) {
+ while (1) {
+ if (p[0] == '*' && p[1] == '*' && p[2] == '/') {
+ do { p += 3; } while (p[0] == '*' && p[1] == '*' && p[2] == '/');
+ ptmp = p;
+ stmp = s;
+ }
+ if (fnmatch_helper(&p, &s, flags, enc) == 0) {
+ while (*s && *s != '/') Inc(s, send, enc);
+ if (*p && *s) {
+ p++;
+ s++;
+ continue;
+ }
+ if (!*p && !*s)
+ return 0;
+ }
+ /* failed : try next recursion */
+ if (ptmp && stmp && !(period && *stmp == '.')) {
+ while (*stmp && *stmp != '/') Inc(stmp, send, enc);
+ if (*stmp) {
+ p = ptmp;
+ stmp++;
+ s = stmp;
+ continue;
+ }
+ }
+ return FNM_NOMATCH;
+ }
+ }
+ else
+ return fnmatch_helper(&p, &s, flags, enc);
+}
+
+VALUE rb_cDir;
+
+struct dir_data {
DIR *dir;
+ VALUE path;
+ rb_encoding *enc;
+};
+
+static void
+dir_mark(void *ptr)
{
- if (dir) closedir(dir);
+ struct dir_data *dir = ptr;
+ rb_gc_mark(dir->path);
}
+static void
+dir_free(void *ptr)
+{
+ struct dir_data *dir = ptr;
+ if (dir) {
+ if (dir->dir) closedir(dir->dir);
+ }
+ xfree(dir);
+}
+
+static size_t
+dir_memsize(const void *ptr)
+{
+ return ptr ? sizeof(struct dir_data) : 0;
+}
+
+static const rb_data_type_t dir_data_type = {
+ "dir",
+ {dir_mark, dir_free, dir_memsize,},
+ NULL, NULL, RUBY_TYPED_FREE_IMMEDIATELY
+};
+
+static VALUE dir_close(VALUE);
+
+#define GlobPathValue(str, safe) \
+ /* can contain null bytes as separators */ \
+ (!RB_TYPE_P((str), T_STRING) ? \
+ (void)FilePathValue(str) : \
+ (void)(check_safe_glob((str), (safe)), \
+ check_glob_encoding(str), (str)))
+#define check_safe_glob(str, safe) ((safe) ? rb_check_safe_obj(str) : (void)0)
+#define check_glob_encoding(str) rb_enc_check((str), rb_enc_from_encoding(rb_usascii_encoding()))
+
static VALUE
-dir_s_open(dir_class, dirname)
- VALUE dir_class;
- struct RString *dirname;
+dir_s_alloc(VALUE klass)
{
- VALUE obj;
- DIR *dirp;
+ struct dir_data *dirp;
+ VALUE obj = TypedData_Make_Struct(klass, struct dir_data, &dir_data_type, dirp);
+
+ dirp->dir = NULL;
+ dirp->path = Qnil;
+ dirp->enc = NULL;
+
+ return obj;
+}
+
+/*
+ * call-seq:
+ * Dir.new( string ) -> aDir
+ * Dir.new( string, encoding: enc ) -> aDir
+ *
+ * Returns a new directory object for the named directory.
+ *
+ * The optional <i>enc</i> argument specifies the encoding of the directory.
+ * If not specified, the filesystem encoding is used.
+ */
+static VALUE
+dir_initialize(int argc, VALUE *argv, VALUE dir)
+{
+ struct dir_data *dp;
+ rb_encoding *fsenc;
+ VALUE dirname, opt, orig;
+ static VALUE sym_enc;
+
+ if (!sym_enc) {
+ sym_enc = ID2SYM(rb_intern("encoding"));
+ }
+ fsenc = rb_filesystem_encoding();
- Check_SafeStr(dirname);
+ rb_scan_args(argc, argv, "1:", &dirname, &opt);
+
+ if (!NIL_P(opt)) {
+ VALUE enc = rb_hash_aref(opt, sym_enc);
+ if (!NIL_P(enc)) {
+ fsenc = rb_to_encoding(enc);
+ }
+ }
- dirp = opendir(dirname->ptr);
- if (dirp == NULL) {
+ GlobPathValue(dirname, FALSE);
+ orig = rb_str_dup_frozen(dirname);
+ dirname = rb_str_encode_ospath(dirname);
+ dirname = rb_str_dup_frozen(dirname);
+
+ TypedData_Get_Struct(dir, struct dir_data, &dir_data_type, dp);
+ if (dp->dir) closedir(dp->dir);
+ dp->dir = NULL;
+ dp->path = Qnil;
+ dp->enc = fsenc;
+ dp->dir = opendir(RSTRING_PTR(dirname));
+ if (dp->dir == NULL) {
if (errno == EMFILE || errno == ENFILE) {
- gc();
- dirp = opendir(dirname->ptr);
+ rb_gc();
+ dp->dir = opendir(RSTRING_PTR(dirname));
}
- if (dirp == NULL) {
- rb_sys_fail(dirname->ptr);
+ if (dp->dir == NULL) {
+ rb_sys_fail_path(orig);
}
}
+ dp->path = orig;
- obj = Data_Wrap_Struct(dir_class, 0, free_dir, dirp);
+ return dir;
+}
- return obj;
+/*
+ * call-seq:
+ * Dir.open( string ) -> aDir
+ * Dir.open( string, encoding: enc ) -> aDir
+ * Dir.open( string ) {| aDir | block } -> anObject
+ * Dir.open( string, encoding: enc ) {| aDir | block } -> anObject
+ *
+ * The optional <i>enc</i> argument specifies the encoding of the directory.
+ * If not specified, the filesystem encoding is used.
+ *
+ * With no block, <code>open</code> is a synonym for
+ * <code>Dir::new</code>. If a block is present, it is passed
+ * <i>aDir</i> as a parameter. The directory is closed at the end of
+ * the block, and <code>Dir::open</code> returns the value of the
+ * block.
+ */
+static VALUE
+dir_s_open(int argc, VALUE *argv, VALUE klass)
+{
+ struct dir_data *dp;
+ VALUE dir = TypedData_Make_Struct(klass, struct dir_data, &dir_data_type, dp);
+
+ dir_initialize(argc, argv, dir);
+ if (rb_block_given_p()) {
+ return rb_ensure(rb_yield, dir, dir_close, dir);
+ }
+
+ return dir;
}
static void
-dir_closed()
+dir_closed(void)
{
- Fail("closed directory");
+ rb_raise(rb_eIOError, "closed directory");
}
-#define GetDIR(obj, dirp) {\
- Data_Get_Struct(obj, DIR, dirp);\
- if (dirp == NULL) dir_closed();\
+static struct dir_data *
+dir_check(VALUE dir)
+{
+ struct dir_data *dirp;
+ rb_check_frozen(dir);
+ dirp = rb_check_typeddata(dir, &dir_data_type);
+ if (!dirp->dir) dir_closed();
+ return dirp;
}
+#define GetDIR(obj, dirp) ((dirp) = dir_check(obj))
+
+
+/*
+ * call-seq:
+ * dir.inspect -> string
+ *
+ * Return a string describing this Dir object.
+ */
static VALUE
-dir_each(dir)
- VALUE dir;
+dir_inspect(VALUE dir)
{
- DIR *dirp;
+ struct dir_data *dirp;
+
+ TypedData_Get_Struct(dir, struct dir_data, &dir_data_type, dirp);
+ if (!NIL_P(dirp->path)) {
+ VALUE str = rb_str_new_cstr("#<");
+ rb_str_append(str, rb_class_name(CLASS_OF(dir)));
+ rb_str_cat2(str, ":");
+ rb_str_append(str, dirp->path);
+ rb_str_cat2(str, ">");
+ return str;
+ }
+ return rb_funcall(dir, rb_intern("to_s"), 0, 0);
+}
+
+/*
+ * call-seq:
+ * dir.path -> string or nil
+ * dir.to_path -> string or nil
+ *
+ * Returns the path parameter passed to <em>dir</em>'s constructor.
+ *
+ * d = Dir.new("..")
+ * d.path #=> ".."
+ */
+static VALUE
+dir_path(VALUE dir)
+{
+ struct dir_data *dirp;
+
+ TypedData_Get_Struct(dir, struct dir_data, &dir_data_type, dirp);
+ if (NIL_P(dirp->path)) return Qnil;
+ return rb_str_dup(dirp->path);
+}
+
+#if defined _WIN32
+# define READDIR(dir, enc) rb_w32_readdir((dir), (enc))
+#else
+# define READDIR(dir, enc) readdir((dir))
+#endif
+
+/*
+ * call-seq:
+ * dir.read -> string or nil
+ *
+ * Reads the next entry from <em>dir</em> and returns it as a string.
+ * Returns <code>nil</code> at the end of the stream.
+ *
+ * d = Dir.new("testdir")
+ * d.read #=> "."
+ * d.read #=> ".."
+ * d.read #=> "config.h"
+ */
+static VALUE
+dir_read(VALUE dir)
+{
+ struct dir_data *dirp;
+ struct dirent *dp;
+
+ GetDIR(dir, dirp);
+ errno = 0;
+ if ((dp = READDIR(dirp->dir, dirp->enc)) != NULL) {
+ return rb_external_str_new_with_enc(dp->d_name, NAMLEN(dp), dirp->enc);
+ }
+ else {
+ if (errno != 0) rb_sys_fail(0);
+ return Qnil; /* end of stream */
+ }
+}
+
+/*
+ * call-seq:
+ * dir.each { |filename| block } -> dir
+ * dir.each -> an_enumerator
+ *
+ * Calls the block once for each entry in this directory, passing the
+ * filename of each entry as a parameter to the block.
+ *
+ * If no block is given, an enumerator is returned instead.
+ *
+ * d = Dir.new("testdir")
+ * d.each {|x| puts "Got #{x}" }
+ *
+ * <em>produces:</em>
+ *
+ * Got .
+ * Got ..
+ * Got config.h
+ * Got main.rb
+ */
+static VALUE
+dir_each(VALUE dir)
+{
+ struct dir_data *dirp;
struct dirent *dp;
- VALUE file;
+ IF_HAVE_HFS(int hfs_p);
+ RETURN_ENUMERATOR(dir, 0, 0);
GetDIR(dir, dirp);
- for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
- file = str_taint(str_new(dp->d_name, NAMLEN(dp)));
- rb_yield(file);
+ rewinddir(dirp->dir);
+ IF_HAVE_HFS(hfs_p = is_hfs(dirp->dir));
+ while ((dp = READDIR(dirp->dir, dirp->enc)) != NULL) {
+ const char *name = dp->d_name;
+ size_t namlen = NAMLEN(dp);
+ VALUE path;
+#if HAVE_HFS
+ if (hfs_p && has_nonascii(name, namlen) &&
+ !NIL_P(path = rb_str_normalize_ospath(name, namlen))) {
+ path = rb_external_str_with_enc(path, dirp->enc);
+ }
+ else
+#endif
+ path = rb_external_str_new_with_enc(name, namlen, dirp->enc);
+ rb_yield(path);
+ if (dirp->dir == NULL) dir_closed();
}
return dir;
}
+#ifdef HAVE_TELLDIR
+/*
+ * call-seq:
+ * dir.pos -> integer
+ * dir.tell -> integer
+ *
+ * Returns the current position in <em>dir</em>. See also
+ * <code>Dir#seek</code>.
+ *
+ * d = Dir.new("testdir")
+ * d.tell #=> 0
+ * d.read #=> "."
+ * d.tell #=> 12
+ */
static VALUE
-dir_tell(dir)
- VALUE dir;
+dir_tell(VALUE dir)
{
- DIR *dirp;
- int pos;
+ struct dir_data *dirp;
+ long pos;
-#if !defined(__CYGWIN32__)
GetDIR(dir, dirp);
- pos = telldir(dirp);
- return int2inum(pos);
+ pos = telldir(dirp->dir);
+ return rb_int2inum(pos);
+}
#else
- rb_notimplement();
+#define dir_tell rb_f_notimplement
#endif
-}
+#ifdef HAVE_SEEKDIR
+/*
+ * call-seq:
+ * dir.seek( integer ) -> dir
+ *
+ * Seeks to a particular location in <em>dir</em>. <i>integer</i>
+ * must be a value returned by <code>Dir#tell</code>.
+ *
+ * d = Dir.new("testdir") #=> #<Dir:0x401b3c40>
+ * d.read #=> "."
+ * i = d.tell #=> 12
+ * d.read #=> ".."
+ * d.seek(i) #=> #<Dir:0x401b3c40>
+ * d.read #=> ".."
+ */
static VALUE
-dir_seek(dir, pos)
- VALUE dir, pos;
+dir_seek(VALUE dir, VALUE pos)
{
- DIR *dirp;
+ struct dir_data *dirp;
+ long p = NUM2LONG(pos);
-#if !defined(__CYGWIN32__)
GetDIR(dir, dirp);
- seekdir(dirp, NUM2INT(pos));
+ seekdir(dirp->dir, p);
return dir;
+}
#else
- rb_notimplement();
+#define dir_seek rb_f_notimplement
#endif
+
+#ifdef HAVE_SEEKDIR
+/*
+ * call-seq:
+ * dir.pos = integer -> integer
+ *
+ * Synonym for <code>Dir#seek</code>, but returns the position
+ * parameter.
+ *
+ * d = Dir.new("testdir") #=> #<Dir:0x401b3c40>
+ * d.read #=> "."
+ * i = d.pos #=> 12
+ * d.read #=> ".."
+ * d.pos = i #=> 12
+ * d.read #=> ".."
+ */
+static VALUE
+dir_set_pos(VALUE dir, VALUE pos)
+{
+ dir_seek(dir, pos);
+ return pos;
}
+#else
+#define dir_set_pos rb_f_notimplement
+#endif
+/*
+ * call-seq:
+ * dir.rewind -> dir
+ *
+ * Repositions <em>dir</em> to the first entry.
+ *
+ * d = Dir.new("testdir")
+ * d.read #=> "."
+ * d.rewind #=> #<Dir:0x401b3fb0>
+ * d.read #=> "."
+ */
static VALUE
-dir_rewind(dir)
- VALUE dir;
+dir_rewind(VALUE dir)
{
- DIR *dirp;
+ struct dir_data *dirp;
GetDIR(dir, dirp);
- rewinddir(dirp);
+ rewinddir(dirp->dir);
return dir;
}
+/*
+ * call-seq:
+ * dir.close -> nil
+ *
+ * Closes the directory stream. Any further attempts to access
+ * <em>dir</em> will raise an <code>IOError</code>.
+ *
+ * d = Dir.new("testdir")
+ * d.close #=> nil
+ */
static VALUE
-dir_close(dir)
- VALUE dir;
+dir_close(VALUE dir)
{
- DIR *dirp;
+ struct dir_data *dirp;
- Data_Get_Struct(dir, DIR, dirp);
- if (dirp == NULL) dir_closed();
- closedir(dirp);
- DATA_PTR(dir) = NULL;
+ GetDIR(dir, dirp);
+ closedir(dirp->dir);
+ dirp->dir = NULL;
return Qnil;
}
+static void
+dir_chdir(VALUE path)
+{
+ if (chdir(RSTRING_PTR(path)) < 0)
+ rb_sys_fail_path(path);
+}
+
+static int chdir_blocking = 0;
+static VALUE chdir_thread = Qnil;
+
+struct chdir_data {
+ VALUE old_path, new_path;
+ int done;
+};
+
static VALUE
-dir_s_chdir(argc, argv, obj)
- int argc;
- VALUE *argv;
- VALUE obj;
+chdir_yield(struct chdir_data *args)
{
- VALUE path;
- char *dist = "";
+ dir_chdir(args->new_path);
+ args->done = TRUE;
+ chdir_blocking++;
+ if (chdir_thread == Qnil)
+ chdir_thread = rb_thread_current();
+ return rb_yield(args->new_path);
+}
+
+static VALUE
+chdir_restore(struct chdir_data *args)
+{
+ if (args->done) {
+ chdir_blocking--;
+ if (chdir_blocking == 0)
+ chdir_thread = Qnil;
+ dir_chdir(args->old_path);
+ }
+ return Qnil;
+}
+
+/*
+ * call-seq:
+ * Dir.chdir( [ string] ) -> 0
+ * Dir.chdir( [ string] ) {| path | block } -> anObject
+ *
+ * Changes the current working directory of the process to the given
+ * string. When called without an argument, changes the directory to
+ * the value of the environment variable <code>HOME</code>, or
+ * <code>LOGDIR</code>. <code>SystemCallError</code> (probably
+ * <code>Errno::ENOENT</code>) if the target directory does not exist.
+ *
+ * If a block is given, it is passed the name of the new current
+ * directory, and the block is executed with that as the current
+ * directory. The original working directory is restored when the block
+ * exits. The return value of <code>chdir</code> is the value of the
+ * block. <code>chdir</code> blocks can be nested, but in a
+ * multi-threaded program an error will be raised if a thread attempts
+ * to open a <code>chdir</code> block while another thread has one
+ * open.
+ *
+ * Dir.chdir("/var/spool/mail")
+ * puts Dir.pwd
+ * Dir.chdir("/tmp") do
+ * puts Dir.pwd
+ * Dir.chdir("/usr") do
+ * puts Dir.pwd
+ * end
+ * puts Dir.pwd
+ * end
+ * puts Dir.pwd
+ *
+ * <em>produces:</em>
+ *
+ * /var/spool/mail
+ * /tmp
+ * /usr
+ * /tmp
+ * /var/spool/mail
+ */
+static VALUE
+dir_s_chdir(int argc, VALUE *argv, VALUE obj)
+{
+ VALUE path = Qnil;
rb_secure(2);
- rb_scan_args(argc, argv, "01", &path);
- if (path) {
- Check_SafeStr(path);
- dist = RSTRING(path)->ptr;
+ if (rb_scan_args(argc, argv, "01", &path) == 1) {
+ FilePathValue(path);
+ path = rb_str_encode_ospath(path);
}
else {
- dist = getenv("HOME");
+ const char *dist = getenv("HOME");
if (!dist) {
dist = getenv("LOGDIR");
+ if (!dist) rb_raise(rb_eArgError, "HOME/LOGDIR not set");
}
+ path = rb_str_new2(dist);
}
- if (chdir(dist) < 0)
- rb_sys_fail(0);
+ if (chdir_blocking > 0) {
+ if (!rb_block_given_p() || rb_thread_current() != chdir_thread)
+ rb_warn("conflicting chdir during another chdir block");
+ }
+
+ if (rb_block_given_p()) {
+ struct chdir_data args;
+
+ args.old_path = rb_str_encode_ospath(rb_dir_getwd());
+ args.new_path = path;
+ args.done = FALSE;
+ return rb_ensure(chdir_yield, (VALUE)&args, chdir_restore, (VALUE)&args);
+ }
+ dir_chdir(path);
return INT2FIX(0);
}
-static VALUE
-dir_s_getwd(dir)
- VALUE dir;
+VALUE
+rb_dir_getwd(void)
{
- extern char *getwd();
- char path[MAXPATHLEN];
+ char *path;
+ VALUE cwd;
-#ifdef HAVE_GETCWD
- if (getcwd(path, sizeof(path)) == 0) rb_sys_fail(path);
-#else
- if (getwd(path) == 0) rb_sys_fail(path);
-#endif
+ path = my_getcwd();
+ cwd = rb_tainted_str_new2(path);
+ rb_enc_associate(cwd, rb_filesystem_encoding());
- return str_taint(str_new2(path));
+ xfree(path);
+ return cwd;
}
+/*
+ * call-seq:
+ * Dir.getwd -> string
+ * Dir.pwd -> string
+ *
+ * Returns the path to the current working directory of this process as
+ * a string.
+ *
+ * Dir.chdir("/tmp") #=> 0
+ * Dir.getwd #=> "/tmp"
+ */
static VALUE
-dir_s_chroot(dir, path)
- VALUE dir, path;
+dir_s_getwd(VALUE dir)
+{
+ return rb_dir_getwd();
+}
+
+static void
+check_dirname(volatile VALUE *dir)
{
-#if !defined(DJGPP) && !defined(__CYGWIN32__) && !defined(NT) && !defined(__human68k__)
+ VALUE d = *dir;
+ char *path, *pend;
+ long len;
+ rb_encoding *enc;
+
rb_secure(2);
- Check_SafeStr(path);
+ FilePathValue(d);
+ enc = rb_enc_get(d);
+ RSTRING_GETMEM(d, path, len);
+ pend = path + len;
+ pend = rb_enc_path_end(rb_enc_path_skip_prefix(path, pend, enc), pend, enc);
+ if (pend - path < len) {
+ d = rb_str_subseq(d, 0, pend - path);
+ }
+ *dir = rb_str_encode_ospath(d);
+}
- if (chroot(RSTRING(path)->ptr) == -1)
- rb_sys_fail(0);
+#if defined(HAVE_CHROOT)
+/*
+ * call-seq:
+ * Dir.chroot( string ) -> 0
+ *
+ * Changes this process's idea of the file system root. Only a
+ * privileged process may make this call. Not available on all
+ * platforms. On Unix systems, see <code>chroot(2)</code> for more
+ * information.
+ */
+static VALUE
+dir_s_chroot(VALUE dir, VALUE path)
+{
+ check_dirname(&path);
+ if (chroot(RSTRING_PTR(path)) == -1)
+ rb_sys_fail_path(path);
return INT2FIX(0);
+}
#else
- rb_notimplement();
+#define dir_s_chroot rb_f_notimplement
#endif
-}
+/*
+ * call-seq:
+ * Dir.mkdir( string [, integer] ) -> 0
+ *
+ * Makes a new directory named by <i>string</i>, with permissions
+ * specified by the optional parameter <i>anInteger</i>. The
+ * permissions may be modified by the value of
+ * <code>File::umask</code>, and are ignored on NT. Raises a
+ * <code>SystemCallError</code> if the directory cannot be created. See
+ * also the discussion of permissions in the class documentation for
+ * <code>File</code>.
+ *
+ * Dir.mkdir(File.join(Dir.home, ".foo"), 0700) #=> 0
+ *
+ */
static VALUE
-dir_s_mkdir(argc, argv, obj)
- int argc;
- VALUE *argv;
- VALUE obj;
+dir_s_mkdir(int argc, VALUE *argv, VALUE obj)
{
VALUE path, vmode;
int mode;
- rb_secure(2);
if (rb_scan_args(argc, argv, "11", &path, &vmode) == 2) {
mode = NUM2INT(vmode);
}
@@ -245,183 +982,1282 @@ dir_s_mkdir(argc, argv, obj)
mode = 0777;
}
- Check_SafeStr(path);
-#ifndef NT
- if (mkdir(RSTRING(path)->ptr, mode) == -1)
- rb_sys_fail(RSTRING(path)->ptr);
-#else
- if (mkdir(RSTRING(path)->ptr) == -1)
- rb_sys_fail(RSTRING(path)->ptr);
-#endif
+ check_dirname(&path);
+ if (mkdir(RSTRING_PTR(path), mode) == -1)
+ rb_sys_fail_path(path);
return INT2FIX(0);
}
+/*
+ * call-seq:
+ * Dir.delete( string ) -> 0
+ * Dir.rmdir( string ) -> 0
+ * Dir.unlink( string ) -> 0
+ *
+ * Deletes the named directory. Raises a subclass of
+ * <code>SystemCallError</code> if the directory isn't empty.
+ */
static VALUE
-dir_s_rmdir(obj, dir)
- VALUE obj;
- struct RString *dir;
+dir_s_rmdir(VALUE obj, VALUE dir)
{
- rb_secure(2);
- Check_SafeStr(dir);
- if (rmdir(dir->ptr) < 0)
- rb_sys_fail(dir->ptr);
+ check_dirname(&dir);
+ if (rmdir(RSTRING_PTR(dir)) < 0)
+ rb_sys_fail_path(dir);
- return TRUE;
+ return INT2FIX(0);
}
-#define isdelim(c) ((c)==' '||(c)=='\t'||(c)=='\n'||(c)=='\0')
+static VALUE
+sys_warning_1(VALUE mesg)
+{
+ rb_sys_warning("%s:%s", strerror(errno), (const char *)mesg);
+ return Qnil;
+}
-char **glob_filename();
-extern char *glob_error_return;
+#define GLOB_VERBOSE (1U << (sizeof(int) * CHAR_BIT - 1))
+#define sys_warning(val) \
+ (void)((flags & GLOB_VERBOSE) && rb_protect(sys_warning_1, (VALUE)(val), 0))
-static void
-push_globs(ary, s)
- VALUE ary;
- char *s;
+#define GLOB_ALLOC(type) ((type *)malloc(sizeof(type)))
+#define GLOB_ALLOC_N(type, n) ((type *)malloc(sizeof(type) * (n)))
+#define GLOB_FREE(ptr) free(ptr)
+#define GLOB_JUMP_TAG(status) (((status) == -1) ? rb_memerror() : rb_jump_tag(status))
+
+/*
+ * ENOTDIR can be returned by stat(2) if a non-leaf element of the path
+ * is not a directory.
+ */
+#define to_be_ignored(e) ((e) == ENOENT || (e) == ENOTDIR)
+
+#ifdef _WIN32
+#define STAT(p, s) rb_w32_ustati64((p), (s))
+#else
+#define STAT(p, s) stat((p), (s))
+#endif
+
+/* System call with warning */
+static int
+do_stat(const char *path, struct stat *pst, int flags)
+
+{
+ int ret = STAT(path, pst);
+ if (ret < 0 && !to_be_ignored(errno))
+ sys_warning(path);
+
+ return ret;
+}
+
+#if defined HAVE_LSTAT || defined lstat
+static int
+do_lstat(const char *path, struct stat *pst, int flags)
{
- char **fnames, **ff;
+ int ret = lstat(path, pst);
+ if (ret < 0 && !to_be_ignored(errno))
+ sys_warning(path);
+
+ return ret;
+}
+#else
+#define do_lstat do_stat
+#endif
- fnames = glob_filename(s);
- if (fnames == (char**)-1) rb_sys_fail(s);
- ff = fnames;
- while (*ff) {
- ary_push(ary, str_taint(str_new2(*ff)));
- free(*ff);
- ff++;
+static DIR *
+do_opendir(const char *path, int flags, rb_encoding *enc)
+{
+ DIR *dirp;
+#ifdef _WIN32
+ volatile VALUE tmp;
+ if (enc != rb_usascii_encoding() &&
+ enc != rb_ascii8bit_encoding() &&
+ enc != rb_utf8_encoding()) {
+ tmp = rb_enc_str_new(path, strlen(path), enc);
+ tmp = rb_str_encode_ospath(tmp);
+ path = RSTRING_PTR(tmp);
}
- if (fnames != &glob_error_return) {
- free(fnames);
+#endif
+ dirp = opendir(path);
+ if (dirp == NULL && !to_be_ignored(errno))
+ sys_warning(path);
+
+ return dirp;
+}
+
+/* Return nonzero if S has any special globbing chars in it. */
+static int
+has_magic(const char *p, const char *pend, int flags, rb_encoding *enc)
+{
+ const int escape = !(flags & FNM_NOESCAPE);
+ const int nocase = flags & FNM_CASEFOLD;
+
+ register char c;
+
+ while (p < pend && (c = *p++) != 0) {
+ switch (c) {
+ case '*':
+ case '?':
+ case '[':
+ return 1;
+
+ case '\\':
+ if (escape && !(c = *p++))
+ return 0;
+ continue;
+
+ default:
+ if (!FNM_SYSCASE && ISALPHA(c) && nocase)
+ return 1;
+ }
+
+ p = Next(p-1, pend, enc);
}
+
+ return 0;
}
-static void
-push_braces(ary, s)
- VALUE ary;
- char *s;
+/* Find separator in globbing pattern. */
+static char *
+find_dirsep(const char *p, const char *pend, int flags, rb_encoding *enc)
{
- char buf[MAXPATHLEN];
- char *p, *t, *b;
- char *lbrace, *rbrace;
+ const int escape = !(flags & FNM_NOESCAPE);
+
+ register char c;
+ int open = 0;
+
+ while ((c = *p++) != 0) {
+ switch (c) {
+ case '[':
+ open = 1;
+ continue;
+ case ']':
+ open = 0;
+ continue;
+
+ case '/':
+ if (!open)
+ return (char *)p-1;
+ continue;
+
+ case '\\':
+ if (escape && !(c = *p++))
+ return (char *)p-1;
+ continue;
+ }
+
+ p = Next(p-1, pend, enc);
+ }
+
+ return (char *)p-1;
+}
+
+/* Remove escaping backslashes */
+static char *
+remove_backslashes(char *p, register const char *pend, rb_encoding *enc)
+{
+ char *t = p;
+ char *s = p;
- p = s;
- lbrace = rbrace = 0;
while (*p) {
- if (*p == '{') {
- lbrace = p;
+ if (*p == '\\') {
+ if (t != s)
+ memmove(t, s, p - s);
+ t += p - s;
+ s = ++p;
+ if (!*p) break;
+ }
+ Inc(p, pend, enc);
+ }
+
+ while (*p++);
+
+ if (t != s)
+ memmove(t, s, p - s); /* move '\0' too */
+
+ return p;
+}
+
+/* Globing pattern */
+enum glob_pattern_type { PLAIN, MAGICAL, RECURSIVE, MATCH_ALL, MATCH_DIR };
+
+struct glob_pattern {
+ char *str;
+ enum glob_pattern_type type;
+ struct glob_pattern *next;
+};
+
+static void glob_free_pattern(struct glob_pattern *list);
+
+static struct glob_pattern *
+glob_make_pattern(const char *p, const char *e, int flags, rb_encoding *enc)
+{
+ struct glob_pattern *list, *tmp, **tail = &list;
+ int dirsep = 0; /* pattern is terminated with '/' */
+ int recursive = 0;
+
+ while (p < e && *p) {
+ tmp = GLOB_ALLOC(struct glob_pattern);
+ if (!tmp) goto error;
+ if (p[0] == '*' && p[1] == '*' && p[2] == '/') {
+ /* fold continuous RECURSIVEs (needed in glob_helper) */
+ do { p += 3; while (*p == '/') p++; } while (p[0] == '*' && p[1] == '*' && p[2] == '/');
+ tmp->type = RECURSIVE;
+ tmp->str = 0;
+ dirsep = 1;
+ recursive = 1;
+ }
+ else {
+ const char *m = find_dirsep(p, e, flags, enc);
+ int magic = has_magic(p, m, flags, enc);
+ char *buf;
+
+ if (!magic && !recursive && *m) {
+ const char *m2;
+ while (!has_magic(m+1, m2 = find_dirsep(m+1, e, flags, enc), flags, enc) &&
+ *m2) {
+ m = m2;
+ }
+ }
+ buf = GLOB_ALLOC_N(char, m-p+1);
+ if (!buf) {
+ GLOB_FREE(tmp);
+ goto error;
+ }
+ memcpy(buf, p, m-p);
+ buf[m-p] = '\0';
+ tmp->type = magic ? MAGICAL : PLAIN;
+ tmp->str = buf;
+ if (*m) {
+ dirsep = 1;
+ p = m + 1;
+ }
+ else {
+ dirsep = 0;
+ p = m;
+ }
+ }
+ *tail = tmp;
+ tail = &tmp->next;
+ }
+
+ tmp = GLOB_ALLOC(struct glob_pattern);
+ if (!tmp) {
+ error:
+ *tail = 0;
+ glob_free_pattern(list);
+ return 0;
+ }
+ tmp->type = dirsep ? MATCH_DIR : MATCH_ALL;
+ tmp->str = 0;
+ *tail = tmp;
+ tmp->next = 0;
+
+ return list;
+}
+
+static void
+glob_free_pattern(struct glob_pattern *list)
+{
+ while (list) {
+ struct glob_pattern *tmp = list;
+ list = list->next;
+ if (tmp->str)
+ GLOB_FREE(tmp->str);
+ GLOB_FREE(tmp);
+ }
+}
+
+static char *
+join_path(const char *path, long len, int dirsep, const char *name, size_t namlen)
+{
+ char *buf = GLOB_ALLOC_N(char, len+namlen+(dirsep?1:0)+1);
+
+ if (!buf) return 0;
+ memcpy(buf, path, len);
+ if (dirsep) {
+ buf[len++] = '/';
+ }
+ memcpy(buf+len, name, namlen);
+ buf[len+namlen] = '\0';
+ return buf;
+}
+
+enum answer {UNKNOWN = -1, NO, YES};
+
+#ifndef S_ISDIR
+# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#endif
+
+#ifndef S_ISLNK
+# ifndef S_IFLNK
+# define S_ISLNK(m) (0)
+# else
+# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+# endif
+#endif
+
+struct glob_args {
+ void (*func)(const char *, VALUE, void *);
+ const char *path;
+ VALUE value;
+ rb_encoding *enc;
+};
+
+static VALUE
+glob_func_caller(VALUE val)
+{
+ struct glob_args *args = (struct glob_args *)val;
+
+ (*args->func)(args->path, args->value, args->enc);
+ return Qnil;
+}
+
+#define glob_call_func(func, path, arg, enc) (*(func))((path), (arg), (enc))
+
+static int
+glob_helper(
+ const char *path,
+ int dirsep, /* '/' should be placed before appending child entry's name to 'path'. */
+ enum answer exist, /* Does 'path' indicate an existing entry? */
+ enum answer isdir, /* Does 'path' indicate a directory or a symlink to a directory? */
+ struct glob_pattern **beg,
+ struct glob_pattern **end,
+ int flags,
+ ruby_glob_func *func,
+ VALUE arg,
+ rb_encoding *enc)
+{
+ struct stat st;
+ int status = 0;
+ struct glob_pattern **cur, **new_beg, **new_end;
+ int plain = 0, magical = 0, recursive = 0, match_all = 0, match_dir = 0;
+ int escape = !(flags & FNM_NOESCAPE);
+ long pathlen;
+
+ for (cur = beg; cur < end; ++cur) {
+ struct glob_pattern *p = *cur;
+ if (p->type == RECURSIVE) {
+ recursive = 1;
+ p = p->next;
+ }
+ switch (p->type) {
+ case PLAIN:
+ plain = 1;
+ break;
+ case MAGICAL:
+ magical = 1;
break;
+ case MATCH_ALL:
+ match_all = 1;
+ break;
+ case MATCH_DIR:
+ match_dir = 1;
+ break;
+ case RECURSIVE:
+ rb_bug("continuous RECURSIVEs");
}
- p++;
}
+
+ pathlen = strlen(path);
+ if (*path) {
+ if (match_all && exist == UNKNOWN) {
+ if (do_lstat(path, &st, flags) == 0) {
+ exist = YES;
+ isdir = S_ISDIR(st.st_mode) ? YES : S_ISLNK(st.st_mode) ? UNKNOWN : NO;
+ }
+ else {
+ exist = NO;
+ isdir = NO;
+ }
+ }
+ if (match_dir && isdir == UNKNOWN) {
+ if (do_stat(path, &st, flags) == 0) {
+ exist = YES;
+ isdir = S_ISDIR(st.st_mode) ? YES : NO;
+ }
+ else {
+ exist = NO;
+ isdir = NO;
+ }
+ }
+ if (match_all && exist == YES) {
+ status = glob_call_func(func, path, arg, enc);
+ if (status) return status;
+ }
+ if (match_dir && isdir == YES) {
+ char *tmp = join_path(path, pathlen, dirsep, "", 0);
+ if (!tmp) return -1;
+ status = glob_call_func(func, tmp, arg, enc);
+ GLOB_FREE(tmp);
+ if (status) return status;
+ }
+ }
+
+ if (exist == NO || isdir == NO) return 0;
+
+ if (magical || recursive) {
+ struct dirent *dp;
+ DIR *dirp;
+ IF_HAVE_HFS(int hfs_p);
+ dirp = do_opendir(*path ? path : ".", flags, enc);
+ if (dirp == NULL) return 0;
+ IF_HAVE_HFS(hfs_p = is_hfs(dirp));
+
+ while ((dp = READDIR(dirp, enc)) != NULL) {
+ char *buf;
+ enum answer new_isdir = UNKNOWN;
+ const char *name;
+ size_t namlen;
+ int dotfile = 0;
+ IF_HAVE_HFS(VALUE utf8str = Qnil);
+
+ if (recursive && dp->d_name[0] == '.') {
+ ++dotfile;
+ if (!dp->d_name[1]) {
+ /* unless DOTMATCH, skip current directories not to recurse infinitely */
+ if (!(flags & FNM_DOTMATCH)) continue;
+ ++dotfile;
+ }
+ else if (dp->d_name[1] == '.' && !dp->d_name[2]) {
+ /* always skip parent directories not to recurse infinitely */
+ continue;
+ }
+ }
+
+ name = dp->d_name;
+ namlen = NAMLEN(dp);
+# if HAVE_HFS
+ if (hfs_p && has_nonascii(name, namlen)) {
+ if (!NIL_P(utf8str = rb_str_normalize_ospath(name, namlen))) {
+ RSTRING_GETMEM(utf8str, name, namlen);
+ }
+ }
+# endif
+ buf = join_path(path, pathlen, dirsep, name, namlen);
+ IF_HAVE_HFS(if (!NIL_P(utf8str)) rb_str_resize(utf8str, 0));
+ if (!buf) {
+ status = -1;
+ break;
+ }
+ name = buf + pathlen + (dirsep != 0);
+ if (recursive && dotfile < ((flags & FNM_DOTMATCH) ? 2 : 1)) {
+ /* RECURSIVE never match dot files unless FNM_DOTMATCH is set */
+#ifndef _WIN32
+ if (do_lstat(buf, &st, flags) == 0)
+ new_isdir = S_ISDIR(st.st_mode) ? YES : S_ISLNK(st.st_mode) ? UNKNOWN : NO;
+ else
+ new_isdir = NO;
+#else
+ new_isdir = dp->d_isdir ? (!dp->d_isrep ? YES : UNKNOWN) : NO;
+#endif
+ }
+
+ new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, (end - beg) * 2);
+ if (!new_beg) {
+ GLOB_FREE(buf);
+ status = -1;
+ break;
+ }
+
+ for (cur = beg; cur < end; ++cur) {
+ struct glob_pattern *p = *cur;
+ if (p->type == RECURSIVE) {
+ if (new_isdir == YES) /* not symlink but real directory */
+ *new_end++ = p; /* append recursive pattern */
+ p = p->next; /* 0 times recursion */
+ }
+ if (p->type == PLAIN || p->type == MAGICAL) {
+ if (fnmatch(p->str, enc, name, flags) == 0)
+ *new_end++ = p->next;
+ }
+ }
+
+ status = glob_helper(buf, 1, YES, new_isdir, new_beg, new_end,
+ flags, func, arg, enc);
+ GLOB_FREE(buf);
+ GLOB_FREE(new_beg);
+ if (status) break;
+ }
+
+ closedir(dirp);
+ }
+ else if (plain) {
+ struct glob_pattern **copy_beg, **copy_end, **cur2;
+
+ copy_beg = copy_end = GLOB_ALLOC_N(struct glob_pattern *, end - beg);
+ if (!copy_beg) return -1;
+ for (cur = beg; cur < end; ++cur)
+ *copy_end++ = (*cur)->type == PLAIN ? *cur : 0;
+
+ for (cur = copy_beg; cur < copy_end; ++cur) {
+ if (*cur) {
+ char *buf;
+ char *name;
+ size_t len = strlen((*cur)->str) + 1;
+ name = GLOB_ALLOC_N(char, len);
+ if (!name) {
+ status = -1;
+ break;
+ }
+ memcpy(name, (*cur)->str, len);
+ if (escape)
+ len = remove_backslashes(name, name+len-1, enc) - name;
+
+ new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, end - beg);
+ if (!new_beg) {
+ GLOB_FREE(name);
+ status = -1;
+ break;
+ }
+ *new_end++ = (*cur)->next;
+ for (cur2 = cur + 1; cur2 < copy_end; ++cur2) {
+ if (*cur2 && fnmatch((*cur2)->str, enc, name, flags) == 0) {
+ *new_end++ = (*cur2)->next;
+ *cur2 = 0;
+ }
+ }
+
+ buf = join_path(path, pathlen, dirsep, name, len);
+ GLOB_FREE(name);
+ if (!buf) {
+ GLOB_FREE(new_beg);
+ status = -1;
+ break;
+ }
+ status = glob_helper(buf, 1, UNKNOWN, UNKNOWN, new_beg,
+ new_end, flags, func, arg, enc);
+ GLOB_FREE(buf);
+ GLOB_FREE(new_beg);
+ if (status) break;
+ }
+ }
+
+ GLOB_FREE(copy_beg);
+ }
+
+ return status;
+}
+
+static int
+ruby_glob0(const char *path, int flags, ruby_glob_func *func, VALUE arg, rb_encoding *enc)
+{
+ struct glob_pattern *list;
+ const char *root, *start;
+ char *buf;
+ size_t n;
+ int status;
+
+ start = root = path;
+ flags |= FNM_SYSCASE;
+#if defined DOSISH
+ root = rb_enc_path_skip_prefix(root, root + strlen(root), enc);
+#endif
+
+ if (root && *root == '/') root++;
+
+ n = root - start;
+ buf = GLOB_ALLOC_N(char, n + 1);
+ if (!buf) return -1;
+ MEMCPY(buf, start, char, n);
+ buf[n] = '\0';
+
+ list = glob_make_pattern(root, root + strlen(root), flags, enc);
+ if (!list) {
+ GLOB_FREE(buf);
+ return -1;
+ }
+ status = glob_helper(buf, 0, UNKNOWN, UNKNOWN, &list, &list + 1, flags, func, arg, enc);
+ glob_free_pattern(list);
+ GLOB_FREE(buf);
+
+ return status;
+}
+
+int
+ruby_glob(const char *path, int flags, ruby_glob_func *func, VALUE arg)
+{
+ return ruby_glob0(path, flags & ~GLOB_VERBOSE, func, arg,
+ rb_ascii8bit_encoding());
+}
+
+static int
+rb_glob_caller(const char *path, VALUE a, void *enc)
+{
+ int status;
+ struct glob_args *args = (struct glob_args *)a;
+
+ args->path = path;
+ rb_protect(glob_func_caller, a, &status);
+ return status;
+}
+
+static int
+rb_glob2(const char *path, int flags,
+ void (*func)(const char *, VALUE, void *), VALUE arg,
+ rb_encoding* enc)
+{
+ struct glob_args args;
+
+ args.func = func;
+ args.value = arg;
+ args.enc = enc;
+
+ if (flags & FNM_SYSCASE) {
+ rb_warning("Dir.glob() ignores File::FNM_CASEFOLD");
+ }
+
+ return ruby_glob0(path, flags | GLOB_VERBOSE, rb_glob_caller, (VALUE)&args,
+ enc);
+}
+
+void
+rb_glob(const char *path, void (*func)(const char *, VALUE, void *), VALUE arg)
+{
+ int status = rb_glob2(path, 0, func, arg, rb_ascii8bit_encoding());
+ if (status) GLOB_JUMP_TAG(status);
+}
+
+static void
+push_pattern(const char *path, VALUE ary, void *enc)
+{
+ rb_ary_push(ary, rb_external_str_new_with_enc(path, strlen(path), enc));
+}
+
+static int
+ruby_brace_expand(const char *str, int flags, ruby_glob_func *func, VALUE arg,
+ rb_encoding *enc)
+{
+ const int escape = !(flags & FNM_NOESCAPE);
+ const char *p = str;
+ const char *pend = p + strlen(p);
+ const char *s = p;
+ const char *lbrace = 0, *rbrace = 0;
+ int nest = 0, status = 0;
+
while (*p) {
- if (*p == '}' && lbrace) {
+ if (*p == '{' && nest++ == 0) {
+ lbrace = p;
+ }
+ if (*p == '}' && --nest <= 0) {
rbrace = p;
break;
}
- p++;
+ if (*p == '\\' && escape) {
+ if (!*++p) break;
+ }
+ Inc(p, pend, enc);
}
- if (lbrace) {
+ if (lbrace && rbrace) {
+ size_t len = strlen(s) + 1;
+ char *buf = GLOB_ALLOC_N(char, len);
+ long shift;
+
+ if (!buf) return -1;
memcpy(buf, s, lbrace-s);
- b = buf + (lbrace-s);
+ shift = (lbrace-s);
p = lbrace;
- while (*p != '}') {
- t = p + 1;
- for (p = t; *p!='}' && *p!=','; p++) {
- /* skip inner braces */
- if (*p == '{') while (*p!='}') p++;
+ while (p < rbrace) {
+ const char *t = ++p;
+ nest = 0;
+ while (p < rbrace && !(*p == ',' && nest == 0)) {
+ if (*p == '{') nest++;
+ if (*p == '}') nest--;
+ if (*p == '\\' && escape) {
+ if (++p == rbrace) break;
+ }
+ Inc(p, pend, enc);
}
- memcpy(b, t, p-t);
- strcpy(b+(p-t), rbrace+1);
- push_braces(ary, buf);
+ memcpy(buf+shift, t, p-t);
+ strlcpy(buf+shift+(p-t), rbrace+1, len-(shift+(p-t)));
+ status = ruby_brace_expand(buf, flags, func, arg, enc);
+ if (status) break;
}
+ GLOB_FREE(buf);
}
- else {
- push_globs(ary, s);
+ else if (!lbrace && !rbrace) {
+ status = (*func)(s, arg, enc);
}
+
+ return status;
+}
+
+struct brace_args {
+ ruby_glob_func *func;
+ VALUE value;
+ int flags;
+};
+
+static int
+glob_brace(const char *path, VALUE val, void *enc)
+{
+ struct brace_args *arg = (struct brace_args *)val;
+
+ return ruby_glob0(path, arg->flags, arg->func, arg->value, enc);
+}
+
+static int
+ruby_brace_glob0(const char *str, int flags, ruby_glob_func *func, VALUE arg,
+ rb_encoding* enc)
+{
+ struct brace_args args;
+
+ args.func = func;
+ args.value = arg;
+ args.flags = flags;
+ return ruby_brace_expand(str, flags, glob_brace, (VALUE)&args, enc);
+}
+
+int
+ruby_brace_glob(const char *str, int flags, ruby_glob_func *func, VALUE arg)
+{
+ return ruby_brace_glob0(str, flags & ~GLOB_VERBOSE, func, arg,
+ rb_ascii8bit_encoding());
+}
+
+int
+ruby_brace_glob_with_enc(const char *str, int flags, ruby_glob_func *func, VALUE arg, rb_encoding *enc)
+{
+ return ruby_brace_glob0(str, flags & ~GLOB_VERBOSE, func, arg, enc);
+}
+
+static int
+push_glob(VALUE ary, VALUE str, int flags)
+{
+ struct glob_args args;
+ rb_encoding *enc = rb_enc_get(str);
+
+ if (enc == rb_usascii_encoding()) enc = rb_filesystem_encoding();
+ args.func = push_pattern;
+ args.value = ary;
+ args.enc = enc;
+
+ RB_GC_GUARD(str);
+ return ruby_brace_glob0(RSTRING_PTR(str), flags | GLOB_VERBOSE,
+ rb_glob_caller, (VALUE)&args, enc);
}
static VALUE
-dir_s_glob(dir, str)
- VALUE dir;
- struct RString *str;
+rb_push_glob(VALUE str, int flags) /* '\0' is delimiter */
{
- char *p, *pend;
- char buf[MAXPATHLEN];
- char *t, *t0;
- int nest;
+ long offset = 0;
VALUE ary;
- Check_SafeStr(str);
+ GlobPathValue(str, TRUE);
+ ary = rb_ary_new();
+
+ while (offset < RSTRING_LEN(str)) {
+ char *p, *pend;
+ int status;
+ p = RSTRING_PTR(str) + offset;
+ status = push_glob(ary, rb_enc_str_new(p, strlen(p), rb_enc_get(str)),
+ flags);
+ if (status) GLOB_JUMP_TAG(status);
+ if (offset >= RSTRING_LEN(str)) break;
+ p += strlen(p) + 1;
+ pend = RSTRING_PTR(str) + RSTRING_LEN(str);
+ while (p < pend && !*p)
+ p++;
+ offset = p - RSTRING_PTR(str);
+ }
- ary = ary_new();
+ return ary;
+}
- p = str->ptr;
- pend = p + str->len;
+static VALUE
+dir_globs(long argc, const VALUE *argv, int flags)
+{
+ VALUE ary = rb_ary_new();
+ long i;
+
+ for (i = 0; i < argc; ++i) {
+ int status;
+ VALUE str = argv[i];
+ GlobPathValue(str, TRUE);
+ status = push_glob(ary, str, flags);
+ if (status) GLOB_JUMP_TAG(status);
+ }
- while (p < pend) {
- t = buf;
- while (p < pend && isdelim(*p)) p++;
- while (p < pend && !isdelim(*p)) {
- *t++ = *p++;
- }
- *t = '\0';
- t0 = buf;
- nest = 0;
- while (t0 < t) {
- if (*t0 == '{') nest+=2;
- if (*t0 == '}') nest+=3;
- t0++;
- }
- if (nest == 0) {
- push_globs(ary, buf);
- }
- else if (nest % 5 == 0) {
- push_braces(ary, buf);
- }
- /* else unmatched braces */
+ return ary;
+}
+
+/*
+ * call-seq:
+ * Dir[ array ] -> array
+ * Dir[ string [, string ...] ] -> array
+ *
+ * Equivalent to calling
+ * <code>Dir.glob(</code><i>array,</i><code>0)</code> and
+ * <code>Dir.glob([</code><i>string,...</i><code>],0)</code>.
+ *
+ */
+static VALUE
+dir_s_aref(int argc, VALUE *argv, VALUE obj)
+{
+ if (argc == 1) {
+ return rb_push_glob(argv[0], 0);
+ }
+ return dir_globs(argc, argv, 0);
+}
+
+/*
+ * call-seq:
+ * Dir.glob( pattern, [flags] ) -> matches
+ * Dir.glob( pattern, [flags] ) { |filename| block } -> nil
+ *
+ * Expands +pattern+, which is an Array of patterns or a pattern String, and
+ * returns the results as +matches+ or as arguments given to the block.
+ *
+ * Note that this pattern is not a regexp, it's closer to a shell glob. See
+ * File::fnmatch for the meaning of the +flags+ parameter. Note that case
+ * sensitivity depends on your system (so File::FNM_CASEFOLD is ignored), as
+ * does the order in which the results are returned.
+ *
+ * <code>*</code>::
+ * Matches any file. Can be restricted by other values in the glob.
+ * Equivalent to <code>/ .* /x</code> in regexp.
+ *
+ * <code>*</code>:: Matches all files
+ * <code>c*</code>:: Matches all files beginning with <code>c</code>
+ * <code>*c</code>:: Matches all files ending with <code>c</code>
+ * <code>\*c\*</code>:: Match all files that have <code>c</code> in them
+ * (including at the beginning or end).
+ *
+ * Note, this will not match Unix-like hidden files (dotfiles). In order
+ * to include those in the match results, you must use the
+ * File::FNM_DOTMATCH flag or something like <code>"{*,.*}"</code>.
+ *
+ * <code>**</code>::
+ * Matches directories recursively.
+ *
+ * <code>?</code>::
+ * Matches any one character. Equivalent to <code>/.{1}/</code> in regexp.
+ *
+ * <code>[set]</code>::
+ * Matches any one character in +set+. Behaves exactly like character sets
+ * in Regexp, including set negation (<code>[^a-z]</code>).
+ *
+ * <code>{p,q}</code>::
+ * Matches either literal <code>p</code> or literal <code>q</code>.
+ * Equivalent to pattern alternation in regexp.
+ *
+ * Matching literals may be more than one character in length. More than
+ * two literals may be specified.
+ *
+ * <code> \\ </code>::
+ * Escapes the next metacharacter.
+ *
+ * Note that this means you cannot use backslash on windows as part of a
+ * glob, i.e. <code>Dir["c:\\foo*"]</code> will not work, use
+ * <code>Dir["c:/foo*"]</code> instead.
+ *
+ * Examples:
+ *
+ * Dir["config.?"] #=> ["config.h"]
+ * Dir.glob("config.?") #=> ["config.h"]
+ * Dir.glob("*.[a-z][a-z]") #=> ["main.rb"]
+ * Dir.glob("*.[^r]*") #=> ["config.h"]
+ * Dir.glob("*.{rb,h}") #=> ["main.rb", "config.h"]
+ * Dir.glob("*") #=> ["config.h", "main.rb"]
+ * Dir.glob("*", File::FNM_DOTMATCH) #=> [".", "..", "config.h", "main.rb"]
+ *
+ * rbfiles = File.join("**", "*.rb")
+ * Dir.glob(rbfiles) #=> ["main.rb",
+ * # "lib/song.rb",
+ * # "lib/song/karaoke.rb"]
+ * libdirs = File.join("**", "lib")
+ * Dir.glob(libdirs) #=> ["lib"]
+ *
+ * librbfiles = File.join("**", "lib", "**", "*.rb")
+ * Dir.glob(librbfiles) #=> ["lib/song.rb",
+ * # "lib/song/karaoke.rb"]
+ *
+ * librbfiles = File.join("**", "lib", "*.rb")
+ * Dir.glob(librbfiles) #=> ["lib/song.rb"]
+ */
+static VALUE
+dir_s_glob(int argc, VALUE *argv, VALUE obj)
+{
+ VALUE str, rflags, ary;
+ int flags;
+
+ if (rb_scan_args(argc, argv, "11", &str, &rflags) == 2)
+ flags = NUM2INT(rflags);
+ else
+ flags = 0;
+
+ ary = rb_check_array_type(str);
+ if (NIL_P(ary)) {
+ ary = rb_push_glob(str, flags);
+ }
+ else {
+ volatile VALUE v = ary;
+ ary = dir_globs(RARRAY_LEN(v), RARRAY_CONST_PTR(v), flags);
+ }
+
+ if (rb_block_given_p()) {
+ rb_ary_each(ary);
+ return Qnil;
}
return ary;
}
static VALUE
-dir_foreach(io, dirname)
- VALUE io;
- struct RString *dirname;
+dir_open_dir(int argc, VALUE *argv)
+{
+ VALUE dir = rb_funcall2(rb_cDir, rb_intern("open"), argc, argv);
+
+ rb_check_typeddata(dir, &dir_data_type);
+ return dir;
+}
+
+
+/*
+ * call-seq:
+ * Dir.foreach( dirname ) {| filename | block } -> nil
+ * Dir.foreach( dirname, encoding: enc ) {| filename | block } -> nil
+ * Dir.foreach( dirname ) -> an_enumerator
+ * Dir.foreach( dirname, encoding: enc ) -> an_enumerator
+ *
+ * Calls the block once for each entry in the named directory, passing
+ * the filename of each entry as a parameter to the block.
+ *
+ * If no block is given, an enumerator is returned instead.
+ *
+ * Dir.foreach("testdir") {|x| puts "Got #{x}" }
+ *
+ * <em>produces:</em>
+ *
+ * Got .
+ * Got ..
+ * Got config.h
+ * Got main.rb
+ *
+ */
+static VALUE
+dir_foreach(int argc, VALUE *argv, VALUE io)
{
VALUE dir;
- dir = dir_s_open(cDir, dirname);
- return rb_ensure(dir_each, dir, dir_close, dir);
+ RETURN_ENUMERATOR(io, argc, argv);
+ dir = dir_open_dir(argc, argv);
+ rb_ensure(dir_each, dir, dir_close, dir);
+ return Qnil;
}
-void
-Init_Dir()
+/*
+ * call-seq:
+ * Dir.entries( dirname ) -> array
+ * Dir.entries( dirname, encoding: enc ) -> array
+ *
+ * Returns an array containing all of the filenames in the given
+ * directory. Will raise a <code>SystemCallError</code> if the named
+ * directory doesn't exist.
+ *
+ * The optional <i>enc</i> argument specifies the encoding of the directory.
+ * If not specified, the filesystem encoding is used.
+ *
+ * Dir.entries("testdir") #=> [".", "..", "config.h", "main.rb"]
+ *
+ */
+static VALUE
+dir_entries(int argc, VALUE *argv, VALUE io)
+{
+ VALUE dir;
+
+ dir = dir_open_dir(argc, argv);
+ return rb_ensure(rb_Array, dir, dir_close, dir);
+}
+
+static int
+fnmatch_brace(const char *pattern, VALUE val, void *enc)
{
- extern VALUE mEnumerable;
+ struct brace_args *arg = (struct brace_args *)val;
+ VALUE path = arg->value;
+ rb_encoding *enc_pattern = enc;
+ rb_encoding *enc_path = rb_enc_get(path);
+
+ if (enc_pattern != enc_path) {
+ if (!rb_enc_asciicompat(enc_pattern))
+ return FNM_NOMATCH;
+ if (!rb_enc_asciicompat(enc_path))
+ return FNM_NOMATCH;
+ if (!rb_enc_str_asciionly_p(path)) {
+ int cr = ENC_CODERANGE_7BIT;
+ long len = strlen(pattern);
+ if (rb_str_coderange_scan_restartable(pattern, pattern + len,
+ enc_pattern, &cr) != len)
+ return FNM_NOMATCH;
+ if (cr != ENC_CODERANGE_7BIT)
+ return FNM_NOMATCH;
+ }
+ }
+ return (fnmatch(pattern, enc, RSTRING_PTR(path), arg->flags) == 0);
+}
- cDir = rb_define_class("Dir", cObject);
+/*
+ * call-seq:
+ * File.fnmatch( pattern, path, [flags] ) -> (true or false)
+ * File.fnmatch?( pattern, path, [flags] ) -> (true or false)
+ *
+ * Returns true if +path+ matches against +pattern+. The pattern is not a
+ * regular expression; instead it follows rules similar to shell filename
+ * globbing. It may contain the following metacharacters:
+ *
+ * <code>*</code>::
+ * Matches any file. Can be restricted by other values in the glob.
+ * Equivalent to <code>/ .* /x</code> in regexp.
+ *
+ * <code>*</code>:: Matches all files regular files
+ * <code>c*</code>:: Matches all files beginning with <code>c</code>
+ * <code>*c</code>:: Matches all files ending with <code>c</code>
+ * <code>\*c*</code>:: Matches all files that have <code>c</code> in them
+ * (including at the beginning or end).
+ *
+ * To match hidden files (that start with a <code>.</code> set the
+ * File::FNM_DOTMATCH flag.
+ *
+ * <code>**</code>::
+ * Matches directories recursively or files expansively.
+ *
+ * <code>?</code>::
+ * Matches any one character. Equivalent to <code>/.{1}/</code> in regexp.
+ *
+ * <code>[set]</code>::
+ * Matches any one character in +set+. Behaves exactly like character sets
+ * in Regexp, including set negation (<code>[^a-z]</code>).
+ *
+ * <code> \ </code>::
+ * Escapes the next metacharacter.
+ *
+ * <code>{a,b}</code>::
+ * Matches pattern a and pattern b if File::FNM_EXTGLOB flag is enabled.
+ * Behaves like a Regexp union (<code>(?:a|b)</code>).
+ *
+ * +flags+ is a bitwise OR of the <code>FNM_XXX</code> constants. The same
+ * glob pattern and flags are used by Dir::glob.
+ *
+ * Examples:
+ *
+ * File.fnmatch('cat', 'cat') #=> true # match entire string
+ * File.fnmatch('cat', 'category') #=> false # only match partial string
+ *
+ * File.fnmatch('c{at,ub}s', 'cats') #=> false # { } isn't supported by default
+ * File.fnmatch('c{at,ub}s', 'cats', File::FNM_EXTGLOB) #=> true # { } is supported on FNM_EXTGLOB
+ *
+ * File.fnmatch('c?t', 'cat') #=> true # '?' match only 1 character
+ * File.fnmatch('c??t', 'cat') #=> false # ditto
+ * File.fnmatch('c*', 'cats') #=> true # '*' match 0 or more characters
+ * File.fnmatch('c*t', 'c/a/b/t') #=> true # ditto
+ * File.fnmatch('ca[a-z]', 'cat') #=> true # inclusive bracket expression
+ * File.fnmatch('ca[^t]', 'cat') #=> false # exclusive bracket expression ('^' or '!')
+ *
+ * File.fnmatch('cat', 'CAT') #=> false # case sensitive
+ * File.fnmatch('cat', 'CAT', File::FNM_CASEFOLD) #=> true # case insensitive
+ *
+ * File.fnmatch('?', '/', File::FNM_PATHNAME) #=> false # wildcard doesn't match '/' on FNM_PATHNAME
+ * File.fnmatch('*', '/', File::FNM_PATHNAME) #=> false # ditto
+ * File.fnmatch('[/]', '/', File::FNM_PATHNAME) #=> false # ditto
+ *
+ * File.fnmatch('\?', '?') #=> true # escaped wildcard becomes ordinary
+ * File.fnmatch('\a', 'a') #=> true # escaped ordinary remains ordinary
+ * File.fnmatch('\a', '\a', File::FNM_NOESCAPE) #=> true # FNM_NOESCAPE makes '\' ordinary
+ * File.fnmatch('[\?]', '?') #=> true # can escape inside bracket expression
+ *
+ * File.fnmatch('*', '.profile') #=> false # wildcard doesn't match leading
+ * File.fnmatch('*', '.profile', File::FNM_DOTMATCH) #=> true # period by default.
+ * File.fnmatch('.*', '.profile') #=> true
+ *
+ * rbfiles = '**' '/' '*.rb' # you don't have to do like this. just write in single string.
+ * File.fnmatch(rbfiles, 'main.rb') #=> false
+ * File.fnmatch(rbfiles, './main.rb') #=> false
+ * File.fnmatch(rbfiles, 'lib/song.rb') #=> true
+ * File.fnmatch('**.rb', 'main.rb') #=> true
+ * File.fnmatch('**.rb', './main.rb') #=> false
+ * File.fnmatch('**.rb', 'lib/song.rb') #=> true
+ * File.fnmatch('*', 'dave/.profile') #=> true
+ *
+ * pattern = '*' '/' '*'
+ * File.fnmatch(pattern, 'dave/.profile', File::FNM_PATHNAME) #=> false
+ * File.fnmatch(pattern, 'dave/.profile', File::FNM_PATHNAME | File::FNM_DOTMATCH) #=> true
+ *
+ * pattern = '**' '/' 'foo'
+ * File.fnmatch(pattern, 'a/b/c/foo', File::FNM_PATHNAME) #=> true
+ * File.fnmatch(pattern, '/a/b/c/foo', File::FNM_PATHNAME) #=> true
+ * File.fnmatch(pattern, 'c:/a/b/c/foo', File::FNM_PATHNAME) #=> true
+ * File.fnmatch(pattern, 'a/.b/c/foo', File::FNM_PATHNAME) #=> false
+ * File.fnmatch(pattern, 'a/.b/c/foo', File::FNM_PATHNAME | File::FNM_DOTMATCH) #=> true
+ */
+static VALUE
+file_s_fnmatch(int argc, VALUE *argv, VALUE obj)
+{
+ VALUE pattern, path;
+ VALUE rflags;
+ int flags;
+
+ if (rb_scan_args(argc, argv, "21", &pattern, &path, &rflags) == 3)
+ flags = NUM2INT(rflags);
+ else
+ flags = 0;
+
+ StringValue(pattern);
+ FilePathStringValue(path);
+
+ if (flags & FNM_EXTGLOB) {
+ struct brace_args args;
+
+ args.value = path;
+ args.flags = flags;
+ if (ruby_brace_expand(RSTRING_PTR(pattern), flags, fnmatch_brace,
+ (VALUE)&args, rb_enc_get(pattern)) > 0)
+ return Qtrue;
+ }
+ else {
+ rb_encoding *enc = rb_enc_compatible(pattern, path);
+ if (!enc) return Qfalse;
+ if (fnmatch(RSTRING_PTR(pattern), enc, RSTRING_PTR(path), flags) == 0)
+ return Qtrue;
+ }
+ RB_GC_GUARD(pattern);
- rb_include_module(cDir, mEnumerable);
+ return Qfalse;
+}
- rb_define_singleton_method(cDir, "open", dir_s_open, 1);
- rb_define_singleton_method(cDir, "foreach", dir_foreach, 1);
+/*
+ * call-seq:
+ * Dir.home() -> "/home/me"
+ * Dir.home("root") -> "/root"
+ *
+ * Returns the home directory of the current user or the named user
+ * if given.
+ */
+static VALUE
+dir_s_home(int argc, VALUE *argv, VALUE obj)
+{
+ VALUE user;
+ const char *u = 0;
+
+ rb_check_arity(argc, 0, 1);
+ user = (argc > 0) ? argv[0] : Qnil;
+ if (!NIL_P(user)) {
+ SafeStringValue(user);
+ rb_must_asciicompat(user);
+ u = StringValueCStr(user);
+ if (*u) {
+ return rb_home_dir_of(user, rb_str_new(0, 0));
+ }
+ }
+ return rb_default_home_dir(rb_str_new(0, 0));
- rb_define_method(cDir,"each", dir_each, 0);
- rb_define_method(cDir,"rewind", dir_rewind, 0);
- rb_define_method(cDir,"tell", dir_tell, 0);
- rb_define_method(cDir,"seek", dir_seek, 1);
- rb_define_method(cDir,"close", dir_close, 0);
+}
- rb_define_singleton_method(cDir,"chdir", dir_s_chdir, -1);
- rb_define_singleton_method(cDir,"getwd", dir_s_getwd, 0);
- rb_define_singleton_method(cDir,"pwd", dir_s_getwd, 0);
- rb_define_singleton_method(cDir,"chroot", dir_s_chroot, 1);
- rb_define_singleton_method(cDir,"mkdir", dir_s_mkdir, -1);
- rb_define_singleton_method(cDir,"rmdir", dir_s_rmdir, 1);
- rb_define_singleton_method(cDir,"delete", dir_s_rmdir, 1);
- rb_define_singleton_method(cDir,"unlink", dir_s_rmdir, 1);
+#if 0
+/*
+ * call-seq:
+ * Dir.exist?(file_name) -> true or false
+ * Dir.exists?(file_name) -> true or false
+ *
+ * Returns <code>true</code> if the named file is a directory,
+ * <code>false</code> otherwise.
+ *
+ */
+VALUE
+rb_file_directory_p()
+{
+}
+#endif
- rb_define_singleton_method(cDir,"glob", dir_s_glob, 1);
- rb_define_singleton_method(cDir,"[]", dir_s_glob, 1);
+static VALUE
+rb_dir_exists_p(VALUE obj, VALUE fname)
+{
+ rb_warning("Dir.exists? is a deprecated name, use Dir.exist? instead");
+ return rb_file_directory_p(obj, fname);
+}
+
+/*
+ * Objects of class <code>Dir</code> are directory streams representing
+ * directories in the underlying file system. They provide a variety of
+ * ways to list directories and their contents. See also
+ * <code>File</code>.
+ *
+ * The directory used in these examples contains the two regular files
+ * (<code>config.h</code> and <code>main.rb</code>), the parent
+ * directory (<code>..</code>), and the directory itself
+ * (<code>.</code>).
+ */
+void
+Init_Dir(void)
+{
+ rb_cDir = rb_define_class("Dir", rb_cObject);
+
+ rb_include_module(rb_cDir, rb_mEnumerable);
+
+ rb_define_alloc_func(rb_cDir, dir_s_alloc);
+ rb_define_singleton_method(rb_cDir, "open", dir_s_open, -1);
+ rb_define_singleton_method(rb_cDir, "foreach", dir_foreach, -1);
+ rb_define_singleton_method(rb_cDir, "entries", dir_entries, -1);
+
+ rb_define_method(rb_cDir,"initialize", dir_initialize, -1);
+ rb_define_method(rb_cDir,"path", dir_path, 0);
+ rb_define_method(rb_cDir,"to_path", dir_path, 0);
+ rb_define_method(rb_cDir,"inspect", dir_inspect, 0);
+ rb_define_method(rb_cDir,"read", dir_read, 0);
+ rb_define_method(rb_cDir,"each", dir_each, 0);
+ rb_define_method(rb_cDir,"rewind", dir_rewind, 0);
+ rb_define_method(rb_cDir,"tell", dir_tell, 0);
+ rb_define_method(rb_cDir,"seek", dir_seek, 1);
+ rb_define_method(rb_cDir,"pos", dir_tell, 0);
+ rb_define_method(rb_cDir,"pos=", dir_set_pos, 1);
+ rb_define_method(rb_cDir,"close", dir_close, 0);
+
+ rb_define_singleton_method(rb_cDir,"chdir", dir_s_chdir, -1);
+ rb_define_singleton_method(rb_cDir,"getwd", dir_s_getwd, 0);
+ rb_define_singleton_method(rb_cDir,"pwd", dir_s_getwd, 0);
+ rb_define_singleton_method(rb_cDir,"chroot", dir_s_chroot, 1);
+ rb_define_singleton_method(rb_cDir,"mkdir", dir_s_mkdir, -1);
+ rb_define_singleton_method(rb_cDir,"rmdir", dir_s_rmdir, 1);
+ rb_define_singleton_method(rb_cDir,"delete", dir_s_rmdir, 1);
+ rb_define_singleton_method(rb_cDir,"unlink", dir_s_rmdir, 1);
+ rb_define_singleton_method(rb_cDir,"home", dir_s_home, -1);
+
+ rb_define_singleton_method(rb_cDir,"glob", dir_s_glob, -1);
+ rb_define_singleton_method(rb_cDir,"[]", dir_s_aref, -1);
+ rb_define_singleton_method(rb_cDir,"exist?", rb_file_directory_p, 1);
+ rb_define_singleton_method(rb_cDir,"exists?", rb_dir_exists_p, 1);
+
+ rb_define_singleton_method(rb_cFile,"fnmatch", file_s_fnmatch, -1);
+ rb_define_singleton_method(rb_cFile,"fnmatch?", file_s_fnmatch, -1);
+
+ /* Document-const: File::Constants::FNM_NOESCAPE
+ *
+ * Disables escapes in File.fnmatch and Dir.glob patterns
+ */
+ rb_file_const("FNM_NOESCAPE", INT2FIX(FNM_NOESCAPE));
+
+ /* Document-const: File::Constants::FNM_PATHNAME
+ *
+ * Wildcards in File.fnmatch and Dir.glob patterns do not match directory
+ * separators
+ */
+ rb_file_const("FNM_PATHNAME", INT2FIX(FNM_PATHNAME));
+
+ /* Document-const: File::Constants::FNM_DOTMATCH
+ *
+ * The '*' wildcard matches filenames starting with "." in File.fnmatch
+ * and Dir.glob patterns
+ */
+ rb_file_const("FNM_DOTMATCH", INT2FIX(FNM_DOTMATCH));
+
+ /* Document-const: File::Constants::FNM_CASEFOLD
+ *
+ * Makes File.fnmatch patterns case insensitive (but not Dir.glob
+ * patterns).
+ */
+ rb_file_const("FNM_CASEFOLD", INT2FIX(FNM_CASEFOLD));
+
+ /* Document-const: File::Constants::FNM_EXTGLOB
+ *
+ * Allows file globbing through "{a,b}" in File.fnmatch patterns.
+ */
+ rb_file_const("FNM_EXTGLOB", INT2FIX(FNM_EXTGLOB));
+ rb_file_const("FNM_SYSCASE", INT2FIX(FNM_SYSCASE));
}
diff --git a/dln.c b/dln.c
index ee5429a596..e6b20d54e3 100644
--- a/dln.c
+++ b/dln.c
@@ -1,45 +1,69 @@
-/************************************************
+/**********************************************************************
dln.c -
- $Author: matz $
- $Date: 1996/12/25 01:28:23 $
+ $Author$
created at: Tue Jan 18 17:05:06 JST 1994
- Copyright (C) 1993-1996 Yukihiro Matsumoto
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
-************************************************/
+**********************************************************************/
-#ifdef _AIX
-#pragma alloca
+#ifdef RUBY_EXPORT
+#include "ruby/ruby.h"
+#define dln_notimplement rb_notimplement
+#define dln_memerror rb_memerror
+#define dln_exit rb_exit
+#define dln_loaderror rb_loaderror
+#else
+#define dln_notimplement --->>> dln not implemented <<<---
+#define dln_memerror abort
+#define dln_exit exit
+static void dln_loaderror(const char *format, ...);
#endif
-
-#include "config.h"
-#include "defines.h"
#include "dln.h"
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+
+#ifdef USE_DLN_A_OUT
char *dln_argv0;
+#endif
-#if defined(HAVE_ALLOCA_H) && !defined(__GNUC__)
+#if defined(HAVE_ALLOCA_H)
#include <alloca.h>
#endif
+#ifdef HAVE_STRING_H
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+
+#ifndef xmalloc
void *xmalloc();
void *xcalloc();
void *xrealloc();
+#endif
+
+#define free(x) xfree(x)
#include <stdio.h>
-#ifndef NT
-#include <sys/file.h>
-#else
+#if defined(_WIN32)
#include "missing/file.h"
#endif
#include <sys/types.h>
#include <sys/stat.h>
+#ifndef S_ISDIR
+# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#endif
+
#ifdef HAVE_SYS_PARAM_H
# include <sys/param.h>
-#else
+#endif
+#ifndef MAXPATHLEN
# define MAXPATHLEN 1024
#endif
@@ -47,51 +71,85 @@ void *xrealloc();
# include <unistd.h>
#endif
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else
-# include <strings.h>
+#ifndef _WIN32
+char *getenv();
#endif
-#ifndef NT
-char *strdup();
+#ifdef __APPLE__
+# if defined(HAVE_DLOPEN)
+ /* Mac OS X with dlopen (10.3 or later) */
+# define MACOSX_DLOPEN
+# else
+# define MACOSX_DYLD
+# endif
+#endif
-char *getenv();
+#if defined(__BEOS__) || defined(__HAIKU__)
+# include <image.h>
#endif
-int eaccess();
+#ifndef dln_loaderror
+static void
+dln_loaderror(const char *format, ...)
+{
+ va_list ap;
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+ abort();
+}
+#endif
-#if defined(HAVE_DLOPEN) && !defined(USE_DLN_A_OUT)
+#if defined(HAVE_DLOPEN) && !defined(USE_DLN_A_OUT) && !defined(_AIX) && !defined(MACOSX_DYLD) && !defined(_UNICOSMP)
/* dynamic load with dlopen() */
# define USE_DLN_DLOPEN
#endif
#ifndef FUNCNAME_PATTERN
-# if defined(__hp9000s300) || defined(__NetBSD__) || defined(__BORLANDC__) || defined(__FreeBSD__) || defined(NeXT)
-# define FUNCNAME_PATTERN "_Init_%.200s"
+# if defined(__hp9000s300) || ((defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)) && !defined(__ELF__)) || defined(__BORLANDC__) || defined(NeXT) || defined(__WATCOMC__) || defined(MACOSX_DYLD)
+# define FUNCNAME_PREFIX "_Init_"
# else
-# define FUNCNAME_PATTERN "Init_%.200s"
+# define FUNCNAME_PREFIX "Init_"
# endif
#endif
-static void
-init_funcname(buf, file)
- char *buf, *file;
+#if defined __CYGWIN__ || defined DOSISH
+#define isdirsep(x) ((x) == '/' || (x) == '\\')
+#else
+#define isdirsep(x) ((x) == '/')
+#endif
+
+static size_t
+init_funcname_len(const char **file)
{
- char *p, *slash;
+ const char *p = *file, *base, *dot = NULL;
/* Load the file as an object one */
- for (p = file, slash = p-1; *p; p++) /* Find position of last '/' */
- if (*p == '/') slash = p;
-
- sprintf(buf, FUNCNAME_PATTERN, slash + 1);
- for (p = buf; *p; p++) { /* Delete suffix it it exists */
- if (*p == '.') {
- *p = '\0'; break;
- }
+ for (base = p; *p; p++) { /* Find position of last '/' */
+ if (*p == '.' && !dot) dot = p;
+ if (isdirsep(*p)) base = p+1, dot = NULL;
}
+ *file = base;
+ /* Delete suffix if it exists */
+ return (dot ? dot : p) - base;
}
+static const char funcname_prefix[sizeof(FUNCNAME_PREFIX) - 1] = FUNCNAME_PREFIX;
+
+#define init_funcname(buf, file) do {\
+ const char *base = (file);\
+ const size_t flen = init_funcname_len(&base);\
+ const size_t plen = sizeof(funcname_prefix);\
+ char *const tmp = ALLOCA_N(char, plen+flen+1);\
+ if (!tmp) {\
+ dln_memerror();\
+ }\
+ memcpy(tmp, funcname_prefix, plen);\
+ memcpy(tmp+plen, base, flen);\
+ tmp[plen+flen] = '\0';\
+ *(buf) = tmp;\
+} while (0)
+
#ifdef USE_DLN_A_OUT
#ifndef LIBC_NAME
@@ -107,16 +165,15 @@ init_funcname(buf, file)
static int dln_errno;
#define DLN_ENOEXEC ENOEXEC /* Exec format error */
-#define DLN_ECONFL 201 /* Symbol name conflict */
-#define DLN_ENOINIT 202 /* No inititalizer given */
-#define DLN_EUNDEF 203 /* Undefine symbol remains */
-#define DLN_ENOTLIB 204 /* Not a library file */
-#define DLN_EBADLIB 205 /* Malformed library file */
-#define DLN_EINIT 206 /* Not initialized */
+#define DLN_ECONFL 1201 /* Symbol name conflict */
+#define DLN_ENOINIT 1202 /* No initializer given */
+#define DLN_EUNDEF 1203 /* Undefine symbol remains */
+#define DLN_ENOTLIB 1204 /* Not a library file */
+#define DLN_EBADLIB 1205 /* Malformed library file */
+#define DLN_EINIT 1206 /* Not initialized */
static int dln_init_p = 0;
-#include "st.h"
#include <ar.h>
#include <a.out.h>
#ifndef N_COMM
@@ -128,16 +185,16 @@ static int dln_init_p = 0;
#define INVALID_OBJECT(h) (N_MAGIC(h) != OMAGIC)
+#include "ruby/util.h"
+#include "ruby/st.h"
+
static st_table *sym_tbl;
static st_table *undef_tbl;
static int load_lib();
static int
-load_header(fd, hdrp, disp)
- int fd;
- struct exec *hdrp;
- long disp;
+load_header(int fd, struct exec *hdrp, long disp)
{
int size;
@@ -171,7 +228,7 @@ load_header(fd, hdrp, disp)
#define RELOC_TARGET_SIZE(r) ((r)->r_length)
#endif
-#if defined(sun) && defined(sparc)
+#if defined(__sun) && defined(__sparc)
/* Sparc (Sun 4) macros */
# undef relocation_info
# define relocation_info reloc_info_sparc
@@ -207,10 +264,7 @@ static int reloc_r_length[] = {
#endif
static struct relocation_info *
-load_reloc(fd, hdrp, disp)
- int fd;
- struct exec *hdrp;
- long disp;
+load_reloc(int fd, struct exec *hdrp, long disp)
{
struct relocation_info *reloc;
int size;
@@ -233,10 +287,7 @@ load_reloc(fd, hdrp, disp)
}
static struct nlist *
-load_sym(fd, hdrp, disp)
- int fd;
- struct exec *hdrp;
- long disp;
+load_sym(int fd, struct exec *hdrp, long disp)
{
struct nlist * buffer;
struct nlist * sym;
@@ -277,9 +328,7 @@ load_sym(fd, hdrp, disp)
}
static st_table *
-sym_hash(hdrp, syms)
- struct exec *hdrp;
- struct nlist *syms;
+sym_hash(struct exec *hdrp, struct nlist *syms)
{
st_table *tbl;
struct nlist *sym = syms;
@@ -299,17 +348,16 @@ sym_hash(hdrp, syms)
}
static int
-dln_init(prog)
- char *prog;
+dln_init(const char *prog)
{
- char *file;
+ char *file, fbuf[MAXPATHLEN];
int fd;
struct exec hdr;
struct nlist *syms;
if (dln_init_p == 1) return 0;
- file = dln_find_exe(prog, NULL);
+ file = dln_find_exe_r(prog, NULL, fbuf, sizeof(fbuf));
if (file == NULL || (fd = open(file, O_RDONLY)) < 0) {
dln_errno = errno;
return -1;
@@ -341,7 +389,7 @@ dln_init(prog)
if (c != '!') goto err_noexec;
p = buf;
- /* skip forwading spaces */
+ /* skip forwarding spaces */
while (read(fd, &c, 1) == 1) {
if (c == '\n') goto err_noexec;
if (c != '\t' && c != ' ') {
@@ -353,6 +401,10 @@ dln_init(prog)
while (read(fd, p, 1) == 1) {
if (*p == '\n' || *p == '\t' || *p == ' ') break;
p++;
+ if (p-buf >= MAXPATHLEN) {
+ dln_errno = ENAMETOOLONG;
+ return -1;
+ }
}
*p = '\0';
@@ -370,11 +422,7 @@ dln_init(prog)
}
static long
-load_text_data(fd, hdrp, bss, disp)
- int fd;
- struct exec *hdrp;
- int bss;
- long disp;
+load_text_data(int fd, struct exec *hdrp, int bss, long disp)
{
int size;
unsigned char* addr;
@@ -408,27 +456,26 @@ load_text_data(fd, hdrp, bss, disp)
}
static int
-undef_print(key, value)
- char *key, *value;
+undef_print(char *key, char *value)
{
fprintf(stderr, " %s\n", key);
return ST_CONTINUE;
}
static void
-dln_print_undef()
+dln_print_undef(void)
{
fprintf(stderr, " Undefined symbols:\n");
st_foreach(undef_tbl, undef_print, NULL);
}
static void
-dln_undefined()
+dln_undefined(void)
{
if (undef_tbl->num_entries > 0) {
fprintf(stderr, "dln: Calling undefined function\n");
dln_print_undef();
- rb_exit(1);
+ dln_exit(1);
}
}
@@ -446,10 +493,7 @@ struct undef {
static st_table *reloc_tbl = NULL;
static void
-link_undef(name, base, reloc)
- char *name;
- long base;
- struct relocation_info *reloc;
+link_undef(const char *name, long base, struct relocation_info *reloc)
{
static int u_no = 0;
struct undef *obj;
@@ -477,19 +521,16 @@ link_undef(name, base, reloc)
}
struct reloc_arg {
- char *name;
+ const char *name;
long value;
};
static int
-reloc_undef(no, undef, arg)
- int no;
- struct undef *undef;
- struct reloc_arg *arg;
+reloc_undef(int no, struct undef *undef, struct reloc_arg *arg)
{
int datum;
char *address;
-#if defined(sun) && defined(sparc)
+#if defined(__sun) && defined(__sparc)
unsigned int mask = 0;
#endif
@@ -498,7 +539,7 @@ reloc_undef(no, undef, arg)
datum = arg->value;
if (R_PCREL(&(undef->reloc))) datum -= undef->base;
-#if defined(sun) && defined(sparc)
+#if defined(__sun) && defined(__sparc)
datum += undef->reloc.r_addend;
datum >>= R_RIGHTSHIFT(&(undef->reloc));
mask = (1 << R_BITSIZE(&(undef->reloc))) - 1;
@@ -546,9 +587,7 @@ reloc_undef(no, undef, arg)
}
static void
-unlink_undef(name, value)
- char *name;
- long value;
+unlink_undef(const char *name, long value)
{
struct reloc_arg arg;
@@ -563,10 +602,7 @@ struct indr_data {
};
static int
-reloc_repl(no, undef, data)
- int no;
- struct undef *undef;
- struct indr_data *data;
+reloc_repl(int no, struct undef *undef, struct indr_data *data)
{
if (strcmp(data->name0, undef->name) == 0) {
free(undef->name);
@@ -577,12 +613,9 @@ reloc_repl(no, undef, data)
#endif
static int
-load_1(fd, disp, need_init)
- int fd;
- long disp;
- char *need_init;
+load_1(int fd, long disp, const char *need_init)
{
- static char *libc = LIBC_NAME;
+ static const char *libc = LIBC_NAME;
struct exec hdr;
struct relocation_info *reloc = NULL;
long block = 0;
@@ -591,7 +624,6 @@ load_1(fd, disp, need_init)
struct nlist *sym;
struct nlist *end;
int init_p = 0;
- char buf[256];
if (load_header(fd, &hdr, disp) == -1) return -1;
if (INVALID_OBJECT(hdr)) {
@@ -600,8 +632,12 @@ load_1(fd, disp, need_init)
}
reloc = load_reloc(fd, &hdr, disp);
if (reloc == NULL) return -1;
+
syms = load_sym(fd, &hdr, disp);
- if (syms == NULL) return -1;
+ if (syms == NULL) {
+ free(reloc);
+ return -1;
+ }
sym = syms;
end = syms + (hdr.a_syms / sizeof(struct nlist));
@@ -614,7 +650,7 @@ load_1(fd, disp, need_init)
char *key = sym->n_un.n_name;
if (st_lookup(sym_tbl, sym[1].n_un.n_name, &old_sym)) {
- if (st_delete(undef_tbl, &key, NULL)) {
+ if (st_delete(undef_tbl, (st_data_t*)&key, NULL)) {
unlink_undef(key, old_sym->n_value);
free(key);
}
@@ -627,7 +663,7 @@ load_1(fd, disp, need_init)
st_foreach(reloc_tbl, reloc_repl, &data);
st_insert(undef_tbl, strdup(sym[1].n_un.n_name), NULL);
- if (st_delete(undef_tbl, &key, NULL)) {
+ if (st_delete(undef_tbl, (st_data_t*)&key, NULL)) {
free(key);
}
}
@@ -695,7 +731,7 @@ load_1(fd, disp, need_init)
}
key = sym->n_un.n_name;
- if (st_delete(undef_tbl, &key, NULL) != 0) {
+ if (st_delete(undef_tbl, (st_data_t*)&key, NULL) != 0) {
unlink_undef(key, sym->n_value);
free(key);
}
@@ -727,11 +763,11 @@ load_1(fd, disp, need_init)
while (rel < rel_end) {
char *address = (char*)(rel->r_address + block);
long datum = 0;
-#if defined(sun) && defined(sparc)
+#if defined(__sun) && defined(__sparc)
unsigned int mask = 0;
#endif
- if(rel >= rel_beg)
+ if (rel >= rel_beg)
address += hdr.a_text;
if (rel->r_extern) { /* Look it up in symbol-table */
@@ -748,7 +784,7 @@ load_1(fd, disp, need_init)
}
} /* end.. look it up */
else { /* is static */
- switch (R_SYMBOL(rel)) {
+ switch (R_SYMBOL(rel)) {
case N_TEXT:
case N_DATA:
datum = block;
@@ -762,7 +798,7 @@ load_1(fd, disp, need_init)
} /* end .. is static */
if (R_PCREL(rel)) datum -= block;
-#if defined(sun) && defined(sparc)
+#if defined(__sun) && defined(__sparc)
datum += rel->r_addend;
datum >>= R_RIGHTSHIFT(rel);
mask = (1 << R_BITSIZE(rel)) - 1;
@@ -804,18 +840,19 @@ load_1(fd, disp, need_init)
if (need_init) {
int len;
char **libs_to_be_linked = 0;
+ char *buf;
if (undef_tbl->num_entries > 0) {
if (load_lib(libc) == -1) goto err_exit;
}
- init_funcname(buf, need_init);
+ init_funcname(&buf, need_init);
len = strlen(buf);
for (sym = syms; sym<end; sym++) {
char *name = sym->n_un.n_name;
if (name[0] == '_' && sym->n_value >= block) {
- if (strcmp(name+1, "libs_to_be_linked") == 0) {
+ if (strcmp(name+1, "dln_libs_to_be_linked") == 0) {
libs_to_be_linked = (char**)sym->n_value;
}
else if (strcmp(name+1, buf) == 0) {
@@ -857,12 +894,9 @@ load_1(fd, disp, need_init)
static int target_offset;
static int
-search_undef(key, value, lib_tbl)
- char *key;
- int value;
- st_table *lib_tbl;
+search_undef(const char *key, int value, st_table *lib_tbl)
{
- int offset;
+ long offset;
if (st_lookup(lib_tbl, key, &offset) == 0) return ST_CONTINUE;
target_offset = offset;
@@ -870,17 +904,17 @@ search_undef(key, value, lib_tbl)
}
struct symdef {
- int str_index;
+ int rb_str_index;
int lib_offset;
};
-char *dln_library_path = DLN_DEFAULT_LIB_PATH;
+const char *dln_librrb_ary_path = DLN_DEFAULT_LIB_PATH;
static int
-load_lib(lib)
- char *lib;
+load_lib(const char *lib)
{
- char *path, *file;
+ char *path, *file, fbuf[MAXPATHLEN];
+ char *envpath = 0;
char armagic[SARMAG];
int fd, size;
struct ar_hdr ahdr;
@@ -898,19 +932,22 @@ load_lib(lib)
dln_errno = DLN_EBADLIB;
if (lib[0] == '-' && lib[1] == 'l') {
- char *p = alloca(strlen(lib) + 4);
- sprintf(p, "lib%s.a", lib+2);
+ long len = strlen(lib) + 4;
+ char *p = alloca(len);
+ snprintf(p, len, "lib%s.a", lib+2);
lib = p;
}
/* library search path: */
/* look for environment variable DLN_LIBRARY_PATH first. */
- /* then variable dln_library_path. */
+ /* then variable dln_librrb_ary_path. */
/* if path is still NULL, use "." for path. */
path = getenv("DLN_LIBRARY_PATH");
- if (path == NULL) path = dln_library_path;
+ if (path == NULL) path = dln_librrb_ary_path;
+ else path = envpath = strdup(path);
- file = dln_find_file(lib, path);
+ file = dln_find_file_r(lib, path, fbuf, sizeof(fbuf));
+ if (envpath) free(envpath);
fd = open(file, O_RDONLY);
if (fd == -1) goto syserr;
size = read(fd, armagic, SARMAG);
@@ -937,7 +974,7 @@ load_lib(lib)
base = (struct symdef*)(data + 1);
name_base = (char*)(base + nsym) + sizeof(int);
while (nsym > 0) {
- char *name = name_base + base->str_index;
+ char *name = name_base + base->rb_str_index;
st_insert(lib_tbl, name, base->lib_offset + sizeof(ahdr));
nsym--;
@@ -1014,8 +1051,7 @@ load_lib(lib)
}
static int
-load(file)
- char *file;
+load(const char *file)
{
int fd;
int result;
@@ -1040,8 +1076,7 @@ load(file)
}
void*
-dln_sym(name)
- char *name;
+dln_sym(const char *name)
{
struct nlist *sym;
@@ -1053,32 +1088,64 @@ dln_sym(name)
#endif /* USE_DLN_A_OUT */
#ifdef USE_DLN_DLOPEN
-# ifdef __NetBSD__
-# include <nlist.h>
-# include <link.h>
-# else
-# include <dlfcn.h>
-# endif
+# include <dlfcn.h>
#endif
-#ifdef hpux
+#ifdef __hpux
#include <errno.h>
#include "dl.h"
#endif
-#ifdef _AIX
+#if defined(_AIX)
#include <ctype.h> /* for isdigit() */
#include <errno.h> /* for global errno */
-#include <string.h> /* for strerror() */
#include <sys/ldr.h>
#endif
#ifdef NeXT
-/*#include <mach-o/rld.h>*/
+#if NS_TARGET_MAJOR < 4
+#include <mach-o/rld.h>
+#else
+#include <mach-o/dyld.h>
+#ifndef NSLINKMODULE_OPTION_BINDNOW
+#define NSLINKMODULE_OPTION_BINDNOW 1
+#endif
+#endif
+#else
+#ifdef MACOSX_DYLD
+#include <mach-o/dyld.h>
+#endif
+#endif
+
+#if defined _WIN32 && !defined __CYGWIN__
+#include <windows.h>
+#include <imagehlp.h>
#endif
-static char *
-dln_strerror()
+#if defined _WIN32 && !defined __CYGWIN__
+static const char *
+dln_strerror(char *message, size_t size)
+{
+ int error = GetLastError();
+ char *p = message;
+ size_t len = snprintf(message, size, "%d: ", error);
+
+#define format_message(sublang) FormatMessage(\
+ FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, \
+ NULL, error, MAKELANGID(LANG_NEUTRAL, (sublang)), \
+ message + len, size - len, NULL)
+ if (format_message(SUBLANG_ENGLISH_US) == 0)
+ format_message(SUBLANG_DEFAULT);
+ for (p = message + len; *p; p++) {
+ if (*p == '\n' || *p == '\r')
+ *p = ' ';
+ }
+ return message;
+}
+#define dln_strerror() dln_strerror(message, sizeof message)
+#elif ! defined _AIX
+static const char *
+dln_strerror(void)
{
#ifdef USE_DLN_A_OUT
char *strerror();
@@ -1087,7 +1154,7 @@ dln_strerror()
case DLN_ECONFL:
return "Symbol name conflict";
case DLN_ENOINIT:
- return "No inititalizer given";
+ return "No initializer given";
case DLN_EUNDEF:
return "Unresolved symbols";
case DLN_ENOTLIB:
@@ -1105,100 +1172,192 @@ dln_strerror()
return (char*)dlerror();
#endif
}
+#endif
-
-#ifdef _AIX
+#if defined(_AIX) && ! defined(_IA64)
static void
-aix_loaderror(char *pathname)
+aix_loaderror(const char *pathname)
+{
+ char *message[1024], errbuf[1024];
+ int i;
+#define ERRBUF_APPEND(s) strncat(errbuf, (s), sizeof(errbuf)-strlen(errbuf)-1)
+ snprintf(errbuf, sizeof(errbuf), "load failed - %s. ", pathname);
+
+ if (loadquery(L_GETMESSAGES, &message[0], sizeof(message)) != -1) {
+ ERRBUF_APPEND("Please issue below command for detailed reasons:\n\t");
+ ERRBUF_APPEND("/usr/sbin/execerror ruby ");
+ for (i=0; message[i]; i++) {
+ ERRBUF_APPEND("\"");
+ ERRBUF_APPEND(message[i]);
+ ERRBUF_APPEND("\" ");
+ }
+ ERRBUF_APPEND("\n");
+ } else {
+ ERRBUF_APPEND(strerror(errno));
+ ERRBUF_APPEND("[loadquery failed]");
+ }
+ dln_loaderror("%s", errbuf);
+}
+#endif
+
+#if defined _WIN32 && defined RUBY_EXPORT
+HANDLE rb_libruby_handle(void);
+
+static int
+rb_w32_check_imported(HMODULE ext, HMODULE mine)
{
- char *message[8], errbuf[1024];
- int i,j;
-
- struct errtab {
- int errno;
- char *errstr;
- } load_errtab[] = {
- {L_ERROR_TOOMANY, "too many errors, rest skipped."},
- {L_ERROR_NOLIB, "can't load library:"},
- {L_ERROR_UNDEF, "can't find symbol in library:"},
- {L_ERROR_RLDBAD,
- "RLD index out of range or bad relocation type:"},
- {L_ERROR_FORMAT, "not a valid, executable xcoff file:"},
- {L_ERROR_MEMBER,
- "file not an archive or does not contain requested member:"},
- {L_ERROR_TYPE, "symbol table mismatch:"},
- {L_ERROR_ALIGN, "text allignment in file is wrong."},
- {L_ERROR_SYSTEM, "System error:"},
- {L_ERROR_ERRNO, NULL}
- };
-
-#define LOAD_ERRTAB_LEN (sizeof(load_errtab)/sizeof(load_errtab[0]))
-#define ERRBUF_APPEND(s) strncat(errbuf, s, sizeof(errbuf)-strlen(errbuf)-1)
-
- sprintf(errbuf, "load failed - %.200s ", pathname);
-
- if (!loadquery(1, &message[0], sizeof(message)))
- ERRBUF_APPEND(strerror(errno));
- for(i = 0; message[i] && *message[i]; i++) {
- int nerr = atoi(message[i]);
- for (j=0; j<LOAD_ERRTAB_LEN ; j++) {
- if (nerr == load_errtab[i].errno && load_errtab[i].errstr)
- ERRBUF_APPEND(load_errtab[i].errstr);
+ ULONG size;
+ const IMAGE_IMPORT_DESCRIPTOR *desc;
+
+ desc = ImageDirectoryEntryToData(ext, TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, &size);
+ if (!desc) return 0;
+ while (desc->Name) {
+ PIMAGE_THUNK_DATA pint = (PIMAGE_THUNK_DATA)((char *)ext + desc->Characteristics);
+ PIMAGE_THUNK_DATA piat = (PIMAGE_THUNK_DATA)((char *)ext + desc->FirstThunk);
+ for (; piat->u1.Function; piat++, pint++) {
+ static const char prefix[] = "rb_";
+ PIMAGE_IMPORT_BY_NAME pii;
+ const char *name;
+
+ if (IMAGE_SNAP_BY_ORDINAL(pint->u1.Ordinal)) continue;
+ pii = (PIMAGE_IMPORT_BY_NAME)((char *)ext + (size_t)pint->u1.AddressOfData);
+ name = (const char *)pii->Name;
+ if (strncmp(name, prefix, sizeof(prefix) - 1) == 0) {
+ FARPROC addr = GetProcAddress(mine, name);
+ if (addr) return (FARPROC)piat->u1.Function == addr;
+ }
}
- while (isdigit(*message[i])) message[i]++ ;
- ERRBUF_APPEND(message[i]);
- ERRBUF_APPEND("\n");
+ desc++;
}
- errbuf[strlen(errbuf)-1] = '\0'; /* trim off last newline */
- LoadError(errbuf);
- return;
+ return 1;
}
#endif
-void
-dln_load(file)
- char *file;
+#if defined(DLN_NEEDS_ALT_SEPARATOR) && DLN_NEEDS_ALT_SEPARATOR
+#define translit_separator(src) do { \
+ char *tmp = ALLOCA_N(char, strlen(src) + 1), *p = tmp, c; \
+ do { \
+ *p++ = ((c = *file++) == '/') ? DLN_NEEDS_ALT_SEPARATOR : c; \
+ } while (c); \
+ (src) = tmp; \
+ } while (0)
+#else
+#define translit_separator(str) (void)(str)
+#endif
+
+void*
+dln_load(const char *file)
{
+#if !defined(_AIX) && !defined(NeXT)
+ const char *error = 0;
+#define DLN_ERROR() (error = dln_strerror(), strcpy(ALLOCA_N(char, strlen(error) + 1), error))
+#endif
+
+#if defined _WIN32 && !defined __CYGWIN__
+ HINSTANCE handle;
+ char winfile[MAXPATHLEN];
+ char message[1024];
+ void (*init_fct)();
+ char *buf;
+
+ if (strlen(file) >= MAXPATHLEN) dln_loaderror("filename too long");
+
+ /* Load the file as an object one */
+ init_funcname(&buf, file);
+
+ strlcpy(winfile, file, sizeof(winfile));
+
+ /* Load file */
+ if ((handle = LoadLibrary(winfile)) == NULL) {
+ error = dln_strerror();
+ goto failed;
+ }
+
+#if defined _WIN32 && defined RUBY_EXPORT
+ if (!rb_w32_check_imported(handle, rb_libruby_handle())) {
+ FreeLibrary(handle);
+ error = "incompatible library version";
+ goto failed;
+ }
+#endif
+
+ if ((init_fct = (void(*)())GetProcAddress(handle, buf)) == NULL) {
+ dln_loaderror("%s - %s\n%s", dln_strerror(), buf, file);
+ }
+
+ /* Call the init code */
+ (*init_fct)();
+ return handle;
+#else
#ifdef USE_DLN_A_OUT
if (load(file) == -1) {
+ error = dln_strerror();
goto failed;
}
- return;
+ return 0;
#else
- char buf[MAXPATHLEN];
+ char *buf;
/* Load the file as an object one */
- init_funcname(buf, file);
+ init_funcname(&buf, file);
+ translit_separator(file);
#ifdef USE_DLN_DLOPEN
#define DLN_DEFINED
{
void *handle;
void (*init_fct)();
- int len = strlen(file);
-# ifndef RTLD_LAZY
-# define RTLD_LAZY 1
-# endif
-# ifndef RTLD_GLOBAL
-# define RTLD_GLOBAL 0
-# endif
+#ifndef RTLD_LAZY
+# define RTLD_LAZY 1
+#endif
+#ifdef __INTERIX
+# undef RTLD_GLOBAL
+#endif
+#ifndef RTLD_GLOBAL
+# define RTLD_GLOBAL 0
+#endif
+#ifdef __native_client__
+ char* p, *orig;
+ if (file[0] == '.' && file[1] == '/') file+=2;
+ orig = strdup(file);
+ for (p = file; *p; ++p) {
+ if (*p == '/') *p = '_';
+ }
+#endif
/* Load file */
- if ((handle = dlopen(file, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
+ if ((handle = (void*)dlopen(file, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
+#ifdef __native_client__
+ free(orig);
+#endif
+ error = dln_strerror();
goto failed;
}
- if ((init_fct = (void(*)())dlsym(handle, buf)) == NULL) {
+ init_fct = (void(*)())(VALUE)dlsym(handle, buf);
+#ifdef __native_client__
+ strcpy(file, orig);
+ free(orig);
+#endif
+#if defined __SYMBIAN32__
+ if (init_fct == NULL) {
+ init_fct = (void(*)())dlsym(handle, "1"); /* Some Symbian versions do not support symbol table in DLL, ordinal numbers only */
+ }
+#endif
+ if (init_fct == NULL) {
+ error = DLN_ERROR();
+ dlclose(handle);
goto failed;
}
/* Call the init code */
(*init_fct)();
- return;
+
+ return handle;
}
#endif /* USE_DLN_DLOPEN */
-#ifdef hpux
+#ifdef __hpux
#define DLN_DEFINED
{
shl_t lib = NULL;
@@ -1208,238 +1367,136 @@ dln_load(file)
flags = BIND_DEFERRED;
lib = shl_load(file, flags, 0);
if (lib == NULL) {
- rb_sys_fail(file);
+ extern int errno;
+ dln_loaderror("%s - %s", strerror(errno), file);
}
shl_findsym(&lib, buf, TYPE_PROCEDURE, (void*)&init_fct);
if (init_fct == NULL) {
shl_findsym(&lib, buf, TYPE_UNDEFINED, (void*)&init_fct);
if (init_fct == NULL) {
- extern int errno;
errno = ENOSYM;
- rb_sys_fail(file);
+ dln_loaderror("%s - %s", strerror(ENOSYM), file);
}
}
(*init_fct)();
- return;
+ return (void*)lib;
}
#endif /* hpux */
-#ifdef _AIX
+#if defined(_AIX) && ! defined(_IA64)
#define DLN_DEFINED
{
void (*init_fct)();
- init_fct = (void(*)())load(file, 1, 0);
+ init_fct = (void(*)())load((char*)file, 1, 0);
if (init_fct == NULL) {
aix_loaderror(file);
}
+ if (loadbind(0, (void*)dln_load, (void*)init_fct) == -1) {
+ aix_loaderror(file);
+ }
(*init_fct)();
- return;
+ return (void*)init_fct;
}
#endif /* _AIX */
-#ifdef NeXT
+#if defined(MACOSX_DYLD)
#define DLN_DEFINED
/*----------------------------------------------------
By SHIROYAMA Takayuki Psi@fortune.nest.or.jp
-
+
Special Thanks...
Yu tomoak-i@is.aist-nara.ac.jp,
Mi hisho@tasihara.nest.or.jp,
+ sunshine@sunshineco.com,
and... Miss ARAI Akino(^^;)
----------------------------------------------------*/
{
- unsigned long init_address;
- char *object_files[2] = {NULL, NULL};
+ int dyld_result;
+ NSObjectFileImage obj_file; /* handle, but not use it */
+ /* "file" is module file name .
+ "buf" is pointer to initial function name with "_" . */
void (*init_fct)();
-
- object_files[0] = file;
-
- /* Load object file, if return value ==0 , load failed*/
- if(rld_load(NULL, NULL, object_files, NULL) == 0) {
- LoadError("Failed to load %.200s", file);
- }
- /* lookup the initial function */
- if(rld_lookup(NULL, buf, &init_address) == 0) {
- LoadError("Failed to lookup Init function %.200s",file);
+
+ dyld_result = NSCreateObjectFileImageFromFile(file, &obj_file);
+
+ if (dyld_result != NSObjectFileImageSuccess) {
+ dln_loaderror("Failed to load %.200s", file);
}
- /* Cannot call *init_address directory, so copy this value to
- funtion pointer */
+ NSLinkModule(obj_file, file, NSLINKMODULE_OPTION_BINDNOW);
- init_fct = (void(*)())init_address;
+ /* lookup the initial function */
+ if (!NSIsSymbolNameDefined(buf)) {
+ dln_loaderror("Failed to lookup Init function %.200s",file);
+ }
+ init_fct = NSAddressOfSymbol(NSLookupAndBindSymbol(buf));
(*init_fct)();
- return ;
+
+ return (void*)init_fct;
}
#endif
+#if defined(__BEOS__) || defined(__HAIKU__)
+# define DLN_DEFINED
+ {
+ status_t err_stat; /* BeOS error status code */
+ image_id img_id; /* extension module unique id */
+ void (*init_fct)(); /* initialize function for extension module */
+
+ /* load extension module */
+ img_id = load_add_on(file);
+ if (img_id <= 0) {
+ dln_loaderror("Failed to load add_on %.200s error_code=%x",
+ file, img_id);
+ }
+
+ /* find symbol for module initialize function. */
+ /* The Be Book KernelKit Images section described to use
+ B_SYMBOL_TYPE_TEXT for symbol of function, not
+ B_SYMBOL_TYPE_CODE. Why ? */
+ /* strcat(init_fct_symname, "__Fv"); */ /* parameter nothing. */
+ /* "__Fv" dont need! The Be Book Bug ? */
+ err_stat = get_image_symbol(img_id, buf,
+ B_SYMBOL_TYPE_TEXT, (void **)&init_fct);
+
+ if (err_stat != B_NO_ERROR) {
+ char real_name[MAXPATHLEN];
+
+ strlcpy(real_name, buf, MAXPATHLEN);
+ strlcat(real_name, "__Fv", MAXPATHLEN);
+ err_stat = get_image_symbol(img_id, real_name,
+ B_SYMBOL_TYPE_TEXT, (void **)&init_fct);
+ }
+
+ if ((B_BAD_IMAGE_ID == err_stat) || (B_BAD_INDEX == err_stat)) {
+ unload_add_on(img_id);
+ dln_loaderror("Failed to lookup Init function %.200s", file);
+ }
+ else if (B_NO_ERROR != err_stat) {
+ char errmsg[] = "Internal of BeOS version. %.200s (symbol_name = %s)";
+ unload_add_on(img_id);
+ dln_loaderror(errmsg, strerror(err_stat), buf);
+ }
+
+ /* call module initialize function. */
+ (*init_fct)();
+ return (void*)img_id;
+ }
+#endif /* __BEOS__ || __HAIKU__ */
+
#ifndef DLN_DEFINED
- rb_notimplement("dynamic link not supported");
+ dln_notimplement();
#endif
#endif /* USE_DLN_A_OUT */
+#endif
#if !defined(_AIX) && !defined(NeXT)
failed:
- LoadError("%s - %s", dln_strerror(), file);
-#endif
-}
-
-static char *dln_find_1();
-
-char *
-dln_find_exe(fname, path)
- char *fname;
- char *path;
-{
-#if defined(__human68k__)
- if (!path)
- path = getenv("path");
- if (!path)
- path = "/usr/local/bin;/usr/usb;/usr/bin;/bin;.";
-#else
- if (!path) path = getenv("PATH");
- if (!path) path = "/usr/local/bin:/usr/ucb:/usr/bin:/bin:.";
-#endif
- return dln_find_1(fname, path, 1);
-}
-
-char *
-dln_find_file(fname, path)
- char *fname;
- char *path;
-{
- if (!path) path = ".";
- return dln_find_1(fname, path, 0);
-}
-
-static char fbuf[MAXPATHLEN];
-
-static char *
-dln_find_1(fname, path, exe_flag)
- char *fname;
- char *path;
- int exe_flag; /* non 0 if looking for executable. */
-{
- register char *dp;
- register char *ep;
- register char *bp;
- struct stat st;
-
- if (fname[0] == '/') return fname;
- if (strncmp("./", fname, 2) == 0 || strncmp("../", fname, 3) == 0)
- return fname;
-#if defined(MSDOS) || defined(NT) || defined(__human68k__)
- if (fname[0] == '\\') return fname;
- if (fname[1] == ':') return fname;
- if (strncmp(".\\", fname, 2) == 0 || strncmp("..\\", fname, 3) == 0)
- return fname;
-#endif
-
- for (dp = path;; dp = ++ep) {
- register int l;
- int i;
- int fspace;
-
- /* extract a component */
-#if !defined(MSDOS) && !defined(NT) && !defined(__human68k__)
- ep = strchr(dp, ':');
-#else
- ep = strchr(dp, ';');
-#endif
- if (ep == NULL)
- ep = dp+strlen(dp);
-
- /* find the length of that component */
- l = ep - dp;
- bp = fbuf;
- fspace = sizeof fbuf - 2;
- if (l > 0) {
- /*
- ** If the length of the component is zero length,
- ** start from the current directory. If the
- ** component begins with "~", start from the
- ** user's $HOME environment variable. Otherwise
- ** take the path literally.
- */
-
- if (*dp == '~' && (l == 1 || dp[1] == '/')) {
- char *home;
-
- home = getenv("HOME");
- if (home != NULL) {
- i = strlen(home);
- if ((fspace -= i) < 0)
- goto toolong;
- memcpy(bp, home, i);
- bp += i;
- }
- dp++;
- l--;
- }
- if (l > 0) {
- if ((fspace -= l) < 0)
- goto toolong;
- memcpy(bp, dp, l);
- bp += l;
- }
-
- /* add a "/" between directory and filename */
- if (ep[-1] != '/')
- *bp++ = '/';
- }
-
- /* now append the file name */
- i = strlen(fname);
- if ((fspace -= i) < 0) {
- toolong:
- fprintf(stderr, "openpath: pathname too long (ignored)\n");
- *bp = '\0';
- fprintf(stderr, "\tDirectory \"%s\"\n", fbuf);
- fprintf(stderr, "\tFile \"%s\"\n", fname);
- continue;
- }
- memcpy(bp, fname, i + 1);
-
- if (stat(fbuf, &st) == 0) {
- if (exe_flag == 0) return fbuf;
- /* looking for executable */
- if (eaccess(fbuf, X_OK) == 0) return fbuf;
- }
-#if defined(MSDOS) || defined(NT) || defined(__human68k__)
- if (exe_flag) {
- static const char *extension[] = {
-#if defined(MSDOS)
- ".com", ".exe", ".bat",
-#if defined(DJGPP)
- ".btm", ".sh", ".ksh", ".pl", ".sed",
-#endif
-#else
- ".r", ".R", ".x", ".X", ".bat", ".BAT",
+ dln_loaderror("%s - %s", error, file);
#endif
- (char *) NULL
- };
- int j;
-
- for (j = 0; extension[j]; j++) {
- if (fspace < strlen(extension[j])) {
- fprintf(stderr, "openpath: pathname too long (ignored)\n");
- fprintf(stderr, "\tDirectory \"%.*s\"\n", (int) (bp - fbuf), fbuf);
- fprintf(stderr, "\tFile \"%s%s\"\n", fname, extension[j]);
- continue;
- }
- strcpy(bp + i, extension[j]);
- if (stat(fbuf, &st) == 0)
- return fbuf;
- }
- }
-#endif /* MSDOS or NT or __human68k__ */
- /* if not, and no other alternatives, life is bleak */
- if (*ep == '\0') {
- return NULL;
- }
- /* otherwise try the next component in the search path */
- }
+ return 0; /* dummy return */
}
diff --git a/dln.h b/dln.h
index 6cfbc6aff6..d98b2607e2 100644
--- a/dln.h
+++ b/dln.h
@@ -1,22 +1,51 @@
-/************************************************
+/**********************************************************************
dln.h -
- $Author: matz $
- $Revision: 1.2 $
- $Date: 1996/12/25 04:47:17 $
+ $Author$
created at: Wed Jan 19 16:53:09 JST 1994
-************************************************/
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
+
+**********************************************************************/
+
#ifndef DLN_H
#define DLN_H
-char *dln_find_exe();
-char *dln_find_file();
+#ifdef __cplusplus
+# ifndef HAVE_PROTOTYPES
+# define HAVE_PROTOTYPES 1
+# endif
+# ifndef HAVE_STDARG_PROTOTYPES
+# define HAVE_STDARG_PROTOTYPES 1
+# endif
+#endif
+
+#undef _
+#ifdef HAVE_PROTOTYPES
+# define _(args) args
+#else
+# define _(args) ()
+#endif
+
+RUBY_SYMBOL_EXPORT_BEGIN
+
+#ifndef DLN_FIND_EXTRA_ARG
+#define DLN_FIND_EXTRA_ARG
+#endif
+#ifndef DLN_FIND_EXTRA_ARG_DECL
+#define DLN_FIND_EXTRA_ARG_DECL
+#endif
+
+char *dln_find_exe_r(const char*,const char*,char*,size_t DLN_FIND_EXTRA_ARG_DECL);
+char *dln_find_file_r(const char*,const char*,char*,size_t DLN_FIND_EXTRA_ARG_DECL);
#ifdef USE_DLN_A_OUT
extern char *dln_argv0;
#endif
-void dln_load();
+void *dln_load(const char*);
+
+RUBY_SYMBOL_EXPORT_END
+
#endif
diff --git a/dln_find.c b/dln_find.c
new file mode 100644
index 0000000000..f41ceb051d
--- /dev/null
+++ b/dln_find.c
@@ -0,0 +1,294 @@
+/**********************************************************************
+
+ dln_find.c -
+
+ $Author$
+ created at: Tue Jan 18 17:05:06 JST 1994
+
+ Copyright (C) 1993-2007 Yukihiro Matsumoto
+
+**********************************************************************/
+
+#ifdef RUBY_EXPORT
+#include "ruby/ruby.h"
+#define dln_warning rb_warning
+#define dln_warning_arg
+#else
+#define dln_warning fprintf
+#define dln_warning_arg stderr,
+#endif
+#include "dln.h"
+
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+
+#ifdef USE_DLN_A_OUT
+char *dln_argv0;
+#endif
+
+#if defined(HAVE_ALLOCA_H)
+#include <alloca.h>
+#endif
+
+#ifdef HAVE_STRING_H
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+
+#include <stdio.h>
+#if defined(_WIN32)
+#include "missing/file.h"
+#endif
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#ifndef S_ISDIR
+# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#endif
+
+#ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+#ifndef MAXPATHLEN
+# define MAXPATHLEN 1024
+#endif
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#if !defined(_WIN32) && !HAVE_DECL_GETENV
+char *getenv();
+#endif
+
+static char *dln_find_1(const char *fname, const char *path, char *buf, size_t size, int exe_flag
+ DLN_FIND_EXTRA_ARG_DECL);
+
+char *
+dln_find_exe_r(const char *fname, const char *path, char *buf, size_t size
+ DLN_FIND_EXTRA_ARG_DECL)
+{
+ char *envpath = 0;
+
+ if (!path) {
+ path = getenv(PATH_ENV);
+ if (path) path = envpath = strdup(path);
+ }
+
+ if (!path) {
+#if defined(_WIN32)
+ path = "/usr/local/bin;/usr/ucb;/usr/bin;/bin;.";
+#else
+ path = "/usr/local/bin:/usr/ucb:/usr/bin:/bin:.";
+#endif
+ }
+ buf = dln_find_1(fname, path, buf, size, 1 DLN_FIND_EXTRA_ARG);
+ if (envpath) free(envpath);
+ return buf;
+}
+
+char *
+dln_find_file_r(const char *fname, const char *path, char *buf, size_t size
+ DLN_FIND_EXTRA_ARG_DECL)
+{
+ if (!path) path = ".";
+ return dln_find_1(fname, path, buf, size, 0 DLN_FIND_EXTRA_ARG);
+}
+
+static char *
+dln_find_1(const char *fname, const char *path, char *fbuf, size_t size,
+ int exe_flag /* non 0 if looking for executable. */
+ DLN_FIND_EXTRA_ARG_DECL)
+{
+ register const char *dp;
+ register const char *ep;
+ register char *bp;
+ struct stat st;
+ size_t i, fnlen, fspace;
+#ifdef DOSISH
+ static const char extension[][5] = {
+ EXECUTABLE_EXTS,
+ };
+ size_t j;
+ int is_abs = 0, has_path = 0;
+ const char *ext = 0;
+#endif
+ const char *p = fname;
+
+ static const char pathname_too_long[] = "openpath: pathname too long (ignored)\n\
+\tDirectory \"%.*s\"%s\n\tFile \"%.*s\"%s\n";
+#define PATHNAME_TOO_LONG() dln_warning(dln_warning_arg pathname_too_long, \
+ ((bp - fbuf) > 100 ? 100 : (int)(bp - fbuf)), fbuf, \
+ ((bp - fbuf) > 100 ? "..." : ""), \
+ (fnlen > 100 ? 100 : (int)fnlen), fname, \
+ (fnlen > 100 ? "..." : ""))
+
+#define RETURN_IF(expr) if (expr) return (char *)fname;
+
+ RETURN_IF(!fname);
+ fnlen = strlen(fname);
+ if (fnlen >= size) {
+ dln_warning(dln_warning_arg
+ "openpath: pathname too long (ignored)\n\tFile \"%.*s\"%s\n",
+ (fnlen > 100 ? 100 : (int)fnlen), fname,
+ (fnlen > 100 ? "..." : ""));
+ return NULL;
+ }
+#ifdef DOSISH
+# ifndef CharNext
+# define CharNext(p) ((p)+1)
+# endif
+# ifdef DOSISH_DRIVE_LETTER
+ if (((p[0] | 0x20) - 'a') < 26 && p[1] == ':') {
+ p += 2;
+ is_abs = 1;
+ }
+# endif
+ switch (*p) {
+ case '/': case '\\':
+ is_abs = 1;
+ p++;
+ }
+ has_path = is_abs;
+ while (*p) {
+ switch (*p) {
+ case '/': case '\\':
+ has_path = 1;
+ ext = 0;
+ p++;
+ break;
+ case '.':
+ ext = p;
+ p++;
+ break;
+ default:
+ p = CharNext(p);
+ }
+ }
+ if (ext) {
+ for (j = 0; STRCASECMP(ext, extension[j]); ) {
+ if (++j == sizeof(extension) / sizeof(extension[0])) {
+ ext = 0;
+ break;
+ }
+ }
+ }
+ ep = bp = 0;
+ if (!exe_flag) {
+ RETURN_IF(is_abs);
+ }
+ else if (has_path) {
+ RETURN_IF(ext);
+ i = p - fname;
+ if (i + 1 > size) goto toolong;
+ fspace = size - i - 1;
+ bp = fbuf;
+ ep = p;
+ memcpy(fbuf, fname, i + 1);
+ goto needs_extension;
+ }
+ p = fname;
+#endif
+
+ if (*p == '.' && *++p == '.') ++p;
+ RETURN_IF(*p == '/');
+ RETURN_IF(exe_flag && strchr(fname, '/'));
+
+#undef RETURN_IF
+
+ for (dp = path;; dp = ++ep) {
+ register size_t l;
+
+ /* extract a component */
+ ep = strchr(dp, PATH_SEP[0]);
+ if (ep == NULL)
+ ep = dp+strlen(dp);
+
+ /* find the length of that component */
+ l = ep - dp;
+ bp = fbuf;
+ fspace = size - 2;
+ if (l > 0) {
+ /*
+ ** If the length of the component is zero length,
+ ** start from the current directory. If the
+ ** component begins with "~", start from the
+ ** user's $HOME environment variable. Otherwise
+ ** take the path literally.
+ */
+
+ if (*dp == '~' && (l == 1 ||
+#if defined(DOSISH)
+ dp[1] == '\\' ||
+#endif
+ dp[1] == '/')) {
+ char *home;
+
+ home = getenv("HOME");
+ if (home != NULL) {
+ i = strlen(home);
+ if (fspace < i)
+ goto toolong;
+ fspace -= i;
+ memcpy(bp, home, i);
+ bp += i;
+ }
+ dp++;
+ l--;
+ }
+ if (l > 0) {
+ if (fspace < l)
+ goto toolong;
+ fspace -= l;
+ memcpy(bp, dp, l);
+ bp += l;
+ }
+
+ /* add a "/" between directory and filename */
+ if (ep[-1] != '/')
+ *bp++ = '/';
+ }
+
+ /* now append the file name */
+ i = fnlen;
+ if (fspace < i) {
+ toolong:
+ PATHNAME_TOO_LONG();
+ goto next;
+ }
+ fspace -= i;
+ memcpy(bp, fname, i + 1);
+
+#if defined(DOSISH)
+ if (exe_flag && !ext) {
+ needs_extension:
+ for (j = 0; j < sizeof(extension) / sizeof(extension[0]); j++) {
+ if (fspace < strlen(extension[j])) {
+ PATHNAME_TOO_LONG();
+ continue;
+ }
+ strlcpy(bp + i, extension[j], fspace);
+ if (stat(fbuf, &st) == 0)
+ return fbuf;
+ }
+ goto next;
+ }
+#endif /* _WIN32 or __EMX__ */
+
+ if (stat(fbuf, &st) == 0) {
+ if (exe_flag == 0) return fbuf;
+ /* looking for executable */
+ if (!S_ISDIR(st.st_mode) && eaccess(fbuf, X_OK) == 0)
+ return fbuf;
+ }
+ next:
+ /* if not, and no other alternatives, life is bleak */
+ if (*ep == '\0') {
+ return NULL;
+ }
+
+ /* otherwise try the next component in the search path */
+ }
+}
diff --git a/dmydln.c b/dmydln.c
new file mode 100644
index 0000000000..25872efc98
--- /dev/null
+++ b/dmydln.c
@@ -0,0 +1,9 @@
+#include "ruby/ruby.h"
+
+void*
+dln_load(const char *file)
+{
+ rb_loaderror("this executable file can't load extension libraries");
+
+ UNREACHABLE;
+}
diff --git a/dmyext.c b/dmyext.c
index 4120d493c3..34ea7a02f4 100644
--- a/dmyext.c
+++ b/dmyext.c
@@ -1,4 +1,9 @@
void
-Init_ext()
+Init_ext(void)
+{
+}
+
+void
+Init_enc(void)
{
}
diff --git a/doc/.document b/doc/.document
new file mode 100644
index 0000000000..b48c0387a7
--- /dev/null
+++ b/doc/.document
@@ -0,0 +1,4 @@
+*.rdoc
+ChangeLog*
+NEWS-*
+syntax
diff --git a/doc/ChangeLog-1.8.0 b/doc/ChangeLog-1.8.0
new file mode 100644
index 0000000000..07d7c6b165
--- /dev/null
+++ b/doc/ChangeLog-1.8.0
@@ -0,0 +1,24350 @@
+Mon Aug 4 17:21:19 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (class_instance_method_list): methods defined in
+ singleton class and extended modules should be included.
+ [ruby-dev:21119]
+
+Mon Aug 4 13:05:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_proc): should specify YIELD_FUNC_SVALUE.
+ [ruby-dev:21107]
+
+ * marshal.c (w_object): should not call w_extended for USRMARSHAL
+ dump. [ruby-dev:21106]
+
+Mon Aug 4 10:42:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/ui/console/testrunner.rb: Flushed io in the
+ Console::TestRunner so that it will output immediately.
+
+Mon Aug 4 10:27:22 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.h: remove unnecessary parentheses. [ruby-dev:20879]
+
+Mon Aug 4 10:00:47 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (receive_responses): raise exception to
+ client_thread. Thanks to William Webber.
+
+Mon Aug 4 09:22:53 2003 William Webber <wew@williamwebber.com>
+
+ * lib/net/imap.rb: convert RD to RDoc.
+
+Mon Aug 4 02:34:05 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_utime): never use utime() of C runtime.
+ [ruby-talk:77782]
+
+Sun Aug 3 23:56:50 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call_super): should propagate previous block for
+ super call. [ruby-talk:77884]
+
+Sun Aug 3 22:07:47 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkentry.rb: support 'validatecommand' option of
+ TkEntry/TkSpinbox widget
+
+ * ext/tk/sample/{demos-en,demos-jp}/spin.rb: add
+
+Sun Aug 3 19:25:28 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (call_trace_func): clear exception flag temporarily.
+ [ruby-dev:21090]
+
+Sun Aug 3 18:03:44 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * regex.h (re_mbctab): should refer to RUBY_EXPORT. [ruby-ext:02199]
+
+ * lib/un.h (help): new. % ruby -run -e help cp
+
+Sun Aug 3 08:53:06 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/{demos-en,demos-jp}/image3.rb: add
+
+ * ext/tk/lib/tkcanvas.rb: bug fix on Tk object ID management
+
+ * ext/tk/lib/tktext.rb: ditto
+
+Sun Aug 3 02:55:52 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * process.c: modify macro to detect 'MacOS X' [ruby-talk:77849]
+
+ * ext/tcltklib/lib/tcltk.rb: bug fix ( NOT MAINTAINED : only
+ for running 'line2.rb' demo. )
+
+Sun Aug 3 02:45:06 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * numeric.c (flo_to_s): get rid of buffer overflow.
+
+Sat Aug 2 23:51:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (appendline): clearerr(3) before raising exception, since
+ exception may be captured by rescue. [ruby-talk:77794]
+
+Sat Aug 2 09:58:13 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix --- TkGrid failed to treat
+ RELATIVE PLACEMENT
+
+ * ext/tk/sample/demos-en/, demos-jp/: add or modify some
+ widget demo scripts
+
+Sat Aug 2 20:59:38 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/https.rb: change an option name.
+ :SSLCertStore -> :SSLCertificateStore.
+
+Sat Aug 2 19:18:40 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: respond_to? needs 2nd argument.
+ Thanks Jim Bob. [ruby-talk:77796]
+
+Sat Aug 2 15:11:54 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (--no-undefined): annoying option removed.
+
+Sat Aug 2 14:53:55 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (pkg_config): get configuration by pkg-config. [new]
+
+ * ext/openssl/extconf.rb: use pkg_config.
+
+Sat Aug 2 13:45:17 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c: add "#pragma weak" for __libc_ia64_register_backing_store_base.
+ [ruby-dev:21072]
+
+Sat Aug 2 14:02:39 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (classname): find regular class name if not set.
+ [ruby-dev:20496]
+
+Sat Aug 2 09:58:13 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix --- forgot to entry a widget class
+ name of 'labelframe' widget
+
+ * ext/tk/sample/{demos-en,demos-jp}/{labelframe.rb,paned1.rb,
+ paned2.rb,spin.rb}: add demo-scripts to the JP/EN widget demos
+
+Sat Aug 2 05:04:30 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkentry.rb: bug fix of TkEntry#delete
+
+ * ext/tk/samples/: bug fix of some widget demos
+
+ * ext/tk/lib/tk.rb: support <TkVariable object> == <Symbol>
+
+ * ext/tk/lib/*.rb: freeze some object for security reason
+
+Sat Aug 2 03:30:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_obj_singleton_methods): should not go up to
+ ancestors unless the recursive flag is set. [ruby-list:38007]
+
+ * eval.c (rb_yield_0): expand [] to nil if avalue is set.
+ [ruby-dev:21058]
+
+ * hash.c (env_each_key): use env_keys to avoid environment modify
+ on the fly.
+
+ * hash.c (env_each_value): use env_values for safety.
+
+ * hash.c (env_each): allocate environment array first.
+
+Fri Aug 2 03:20:00 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * lib/yaml/store.rb (YAML::Store#initialize): filename is first
+ argument. Thanks Kent Dahl.
+
+Sat Aug 2 00:49:31 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: refine document.
+
+Fri Aug 1 23:57:45 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_mark_locations): no need to swap arguments.
+
+ * gc.c (STACK_LENGTH): insufficient for growing up stack
+ architectures.
+
+ * gc.c (rb_gc, Init_stack) ditto.
+
+Fri Aug 1 23:33:36 2003 Masatoshi Seki <mas@snow.local.>
+
+ * rubytest.rb: set dldpath on darwin.
+
+Fri Aug 1 23:07:38 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: convert RD to RDoc. Thanks William Webber.
+ [ruby-doc:456]
+
+Fri Aug 1 19:48:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_emitter_write_m): forgot to declare
+ "self", making it default to "int".
+
+ * ext/syck/rubyext.c (syck_emitter_simple_write): ditto.
+
+ * gc.c (rb_gc): should mark backing store region on IA64.
+
+Fri Aug 1 18:51:10 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * process.c: bug fix --- preprocessor errors occur on OpenBSD-current
+
+Fri Aug 1 17:13:23 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: should replace literally.
+
+Fri Aug 1 16:22:57 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_check_readable, rb_io_check_writable): ensure not
+ closed at first.
+
+ * io.c (rb_io_getline): check readable always. (ruby-bugs:PR#1069)
+
+ * io.c (rb_io_each_byte): ditto.
+
+Fri Aug 1 16:02:46 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (READ_DATA_PENDING_PTR): cast to get rid of warnings.
+
+ * ext/socket/socket.c (unix_send_io, unix_recv_io): ditto.
+
+Fri Aug 1 15:53:24 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (isInternalCmd): shouldn't return if find end of str.
+ [ruby-talk:77678]
+
+Fri Aug 1 13:45:14 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call_super): propagate previous block if a block is
+ given. [ruby-talk:77577]
+
+Fri Aug 1 09:54:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fill): array length may be changed during the
+ block execution. [ruby-talk:77579]
+
+ * array.c (rb_ary_zip): ditto.
+
+ * array.c (rb_ary_fill): ditto.
+
+ * hash.c (env_reject_bang): length may be changed during the block
+ execution.
+
+ * hash.c (env_clear): ditto.
+
+Fri Aug 1 04:58:55 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix --- forget to eval given block to
+ TkRoot.new method
+
+ * ext/tk/sample/tkoptdb-safeTk.rb: new sample script
+
+Fri Aug 1 00:52:58 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (Init_stack): IA64 requires STACK_LEVEL_MAX to be less than
+ magic number when optimizer turned on, regardless of rlimit
+ values.
+
+Thu Jul 31 23:44:00 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb: import erb-2.0.4b4.
+
+Thu Jul 31 23:04:45 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/resource.en, ext/tk/sample/resource.jp:
+ wrong resource file format
+
+ * ext/tk/lib/tk.rb: add Tk::Encoding.{encoding_convertfrom,
+ encoding_convertto}
+
+ * ext/tk/lib/tk.rb: add TkOptionDB.read_with_encoding to read
+ non-utf8 resource file
+
+Thu Jul 31 23:02:47 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/etc/etc.c: revert getenv()'s prototype. use it only when _WIN32
+ is not defined.
+
+Thu Jul 31 20:52:40 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: (IMPORTANT BUG FIX) scan of event keywords
+ doesn't work on recent versions of Tck/Tk
+
+ * ext/tk/lib/tk.rb: initialize error of instance variable on
+ TkComposite
+
+ * ext/tk/lib/multi-tk.rb: initialize error on encoding-system on
+ MultiTkIp
+
+ * ext/tk/lib/tk.rb: trouble on destroying widgets
+
+ * ext/tk/sample/demos-en/, demos-jp/: add JP and EN version of
+ Ruby/Tk widget demos
+
+Thu Jul 31 15:25:12 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (rb_ary_collect): must get length of array for each
+ iteration. reported on [ruby-talk:77500], and fixed by
+ K.Sasada <ko1@namikilab.tuat.ac.jp> on [ruby-talk:77504]
+
+Thu Jul 31 14:11:54 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: move gmake specific features
+ into GNUmakefile.
+
+Thu Jul 31 12:36:11 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * bin/erb, lib/erb.rb: add explicit trim mode.
+
+Thu Jul 31 04:59:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (rb_num_coerce_relop): export function.
+
+Thu Jul 31 08:18:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit.rb: A useful return code is now set if tests fail when
+ running automatically using the Console::TestRunner.
+
+Thu Jul 31 07:59:18 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: wrap the command-proc of TkScale --- pass
+ the numeric object to the proc
+
+ * ext/tk/lib/tk.rb: better support for widgets created on
+ Tk interpreter (without Ruby)
+
+ * ext/tk/lib/multi-tk.rb: a little more stable on Multiple Tk
+ interpreters running
+
+Thu Jul 31 00:17:19 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (return_code): obsolete.
+
+ * lib/net/ftp.rb (last_response_code): new method. lastresp is now
+ alias to last_response_code.
+
+ * lib/net/ftp.rb (last_response): new method.
+
+Wed Jul 30 23:55:44 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): check has been dropped. "_dump must return
+ string." [ruby-dev:21024]
+
+Wed Jul 30 22:35:19 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (dir_config): allow multiple directories separated
+ by File::PATH_SEPARATOR.
+
+ * lib/mkmf.rb (create_makefile): DLDFLAGS include $LDFLAGS again.
+ [ruby-talk:76894]
+
+ * lib/mkmf.rb (init_mkmf): not default $LDFLAGS to LDFLAGS for
+ ruby itself, but default $DLDFLAGS to DLDFLAGS.
+
+Wed Jul 30 16:17:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): marshal_dump should not take any
+ argument.
+
+Wed Jul 30 15:54:04 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_initialize): should initialize
+ instance variables. [ruby-talk:77362]
+
+Wed Jul 30 15:39:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): -F set compiled regular expression to $;.
+ [ruby-talk:77381]
+
+ * string.c (Init_String): no setter type check for $;
+
+Wed Jul 30 15:10:02 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * error.c (rb_raise): snprintf() termination moved to
+ win32/win32.c.
+
+ * win32/win32.c (valid_filename, str_grow): unused.
+
+ * win32/win32.c (NTLoginName, ChildRecord): make static.
+
+ * win32/win32.c (CreateChild): argument check.
+
+ * win32/win32.c (kill): should not call CloseHandle() when
+ OpenProcess() failed.
+
+ * win32/win32.c (rb_w32_vsnprintf, rb_w32_snprintf): ensure buffer
+ terminated. [ruby-talk:69672]
+
+Wed Jul 30 10:54:10 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (get): fix wrong argument name. Thanks to William
+ Webber.
+
+Wed Jul 30 10:31:37 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/iconv/iconv.c (iconv_convert): append unchanged portion
+ after overflow. [ruby-dev:21006]
+
+ * ext/iconv/extconf.rb: check if iconv() 2nd argument is const.
+
+Wed Jul 30 09:31:55 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (os2-emx): renamed from os2_emx, add flags to
+ CFLAGS and LDFLAGS, and remove lib prefix. [ruby-dev:20993]
+
+ * file.c (rb_file_s_rename): retry with removing new file on
+ DOSISH. [ruby-dev:21007]
+
+ * ext/socket/extconf.rb (sendmsg, recvmsg): check functions.
+
+ * ext/socket/socket.c (unix_send_io, unix_recv_io): raise
+ NotImplementedError unless system calls are available.
+
+ * ext/socket/socket.c (sock_initialize): rename from sock_init()
+ to get rid of conflict with OS/2 socket library.
+
+Wed Jul 30 07:23:14 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkentry.rb: fix lack of methods for TkEntry
+
+ * ext/tk/lib/multi-tk.rb, ext/tk/lib/tk.rb,
+ ext/tk/lib/tkdialog.rb, ext/tk/lib/tkentry.rb,
+ ext/tk/sample/safe-tk.rb, ext/tk/sample/tktimer2.rb: bug fix
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp.new_* accept a block to
+ eval under the new interpreter
+
+Wed Jul 30 04:36:30 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c,
+ ext/tk/lib/tk.rb, ext/tk/lib/tkafter.rb: additional check of
+ Tk interpreters' status for a little more safety
+
+Wed Jul 30 02:37:12 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): if object responds to 'marshal_dump',
+ Marshal.dump uses it to dump object. unlike '_dump',
+ marshal_dump returns any kind of object.
+
+ * marshal.c (r_object0): restore instance by calling
+ 'marshal_load' method. unlike '_load', it's an instance
+ method, to handle cyclic reference.
+
+ * marshal.c (marshal_load): all objects read from file should be
+ tainted. [ruby-core:01325]
+
+Wed Jul 30 01:47:51 2003 Hugh Sasse <hgs@dmu.ac.uk>
+
+ * lib/timeout.rb (Timeout::timeout): execute immediately if sec is
+ zero.
+
+Wed Jul 30 01:36:18 2003 Aron Griffis <ruby-talk@griffis1.net>
+
+ * ext/socket/socket.c (socks_init): typo fixed. [ruby-talk:77232]
+
+Wed Jul 30 00:48:43 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/extconf.rb: the default value for --enable-socks is
+ taken from ENV["SOCKS_SERVER"]. [ruby-talk:77232]
+
+ * ruby.c (proc_options): add -W option. -W0 to shut up all warning
+ messages. [ruby-talk:77227]
+
+ * error.c (rb_warn): no message will be printed if the value of
+ $VERBOSE is "nil", i.e. perfect silence.
+
+ * ruby.c (verbose_setter): $VERBOSE value is either true, false,
+ or nil.
+
+ * io.c (Init_IO): no "read" check for $stdin. in addition some
+ function names has been changed.
+
+Tue Jul 29 23:10:19 2003 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * regex.c (re_match_exec): incorrect multibyte match.
+
+Tue Jul 29 22:36:50 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb (send0): do taint check only when $SAFE > 0
+
+Tue Jul 29 19:20:34 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (install): support preserve timestamp.
+
+ * instruby.rb (install): use FileUtils::install preserve mode.
+
+ * lib/un.rb: new. % ruby -run -e cp -- -p foo bar
+
+ * lib/mkmf.rb: use un.rb instead of ftools.rb.
+
+ * MANIFEST: add lib/un.rb.
+
+ * ext/extmk.rb (INSTALL_PROG, INSTALL_DATA): modify verbose messages.
+
+Tue Jul 29 18:55:22 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: unify coding style.
+
+ * lib/net/http.rb: ditto.
+
+Tue Jul 29 17:27:59 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.h (LLONG_MIN): fix typo.
+
+Tue Jul 29 16:38:44 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP::send0): add taint check.
+
+Tue Jul 29 15:41:02 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb (install): preserve the timestamp for Mac OS X ranlib
+ problem.
+
+Tue Jul 29 01:14:51 2003 Rick Ohnemus <rick_ohnemus@acm.org>
+
+ * ruby.h (LLONG_MIN): wrong value.
+
+Mon Jul 28 22:57:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_getc): $stdin may not be IO. [ruby-dev:20973]
+
+Tue Jul 29 16:20:36 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: bug fix and
+ change mainloop_abort_on_no_widget_cmd => mainloop_abort_on_exception
+ ( to avoid thread timing trouble on accessing destroyed widgets )
+
+ * ext/tk/lib/multi-tk.rb: change default mode of
+ mainloop_abort_on_exception on multi-tk.rb
+
+ * ext/tk/lib/multi-tk.rb: fix a bug of the procedure for
+ 'Delete' button on the safe-Tk frmae
+
+Tue Jul 29 12:22:28 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c: prefixed many constants and definitions
+ with YAML_ to avoid name clash.
+
+ * ext/syck/gram.c: ditto.
+
+ * ext/syck/gram.h: ditto.
+
+Tue Jul 29 12:15:37 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/etc/etc.c: add real prototype to getenv().
+
+ * win32/win32.h: add arguments to definitions of functions if possible.
+
+Tue Jul 29 08:05:30 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tkdialog.rb, ext/tk/lib/tktext.rb,
+ ext/tk/sample/tkbiff.rb, ext/tk/sample/tkdialog.rb,
+ ext/tk/sample/tkform.rb: bug fix ( tested with Ruby/Tk widget demo )
+
+Tue Jul 29 04:22:08 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/syck.h: Added 'syck' yacc prefixes.
+
+ * ext/syck/gram.c: ditto.
+
+ * ext/syck/token.c: ditto.
+
+ * ext/syck: Added ruby.h reference to source files.
+
+Tue Jul 29 03:53:28 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/net/https.rb (use_ssl=): raise ProtocolError if
+ connection is set up already.
+
+Tue Jul 29 01:45:32 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: use RTEST()
+
+Tue Jul 29 01:24:32 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: bug fix
+
+ * ext/tk/lib/multi-tk.rb: bug fix and pack options are pssed
+ to the safeTk container
+
+ * ext/tk/sample/safe-tk.rb: add example for pack options of
+ safeTk container
+
+Mon Jul 28 23:23:08 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (Init_File): IO should include File::Const.
+ [ruby-dev:20964]
+
+Mon Jul 28 18:53:03 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: check again after pkg-config for MinGW on
+ Cygwin.
+
+Mon Jul 28 15:32:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_gets): only "gets" should set $_.
+
+ * ext/stringio/stringio.c (strio_getline): should not set $_ here.
+
+ * io.c (argf_to_s): argf.to_s returns "ARGF".
+
+ * io.c (set_defout_var, set_deferr_var): make $defout and $deferr
+ obsolete.
+
+ * io.c (set_input_var, set_output_var): allow $stdin, $stdout,
+ $stderr not to be instance of IO.
+
+ * io.c (rb_f_readline): forward method to current_file. gets,
+ readline, readlines, getc, readchar, tell, seek, pos=, rewind,
+ fileno, to_io, eof, each_line, each_byte, binmode, and closed?
+ as well.
+
+ * io.c (argf_forward): utility function to forward method to
+ current_file.
+
+Mon Jul 28 06:10:13 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: bug fix
+
+ * ext/lib/tk/multi-tk.rb: bug fix
+
+ * ext/lib/tk/multi-tk.rb: add methods depend on Tcl's 'interp' command
+
+ * ext/lib/tk/multi-tk.rb: suppot safe-level control of each interpreter
+
+Mon Jul 28 03:08:47 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: each() should return self.
+
+Mon Jul 28 01:35:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): defer rb_str_modify() to actual
+ modify point. other methods, replace, tr, delete, squeeze,
+ lstrip, and rstrip as well.
+
+ * string.c (rb_str_rstrip_bang): remove trailing '\0' at the end
+ of string.
+
+ * string.c (rb_str_lstrip_bang): do not strip '\0' from the left.
+
+Sun Jul 27 21:16:30 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: better support MinGW. add
+ dir_config("kerberos") and with_config("pkg-config").
+
+ * mkconfig.rb: initialize global variables to avoid warnings.
+
+Sun Jul 27 19:35:06 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: add some methods to support
+ multiple interpreters (low level)
+
+ * ext/tk/lib/multi-tk.rb: new library to support multiple Tk
+ interpreters (high level)
+
+ * ext/tcltklib/demo/safeTk.rb: new sample of safeTk interpreter
+
+ * ext/tk/sample/safe-tk.rb: new sample of multi-tk.rb
+
+ * ext/tk/lib/tk.rb: bug fix and add feature to supprt multi-tk
+
+ * ext/tk/lib/tkafter.rb: ditto
+
+Sun Jul 27 14:43:37 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/debug.rb: fix breakpoint parameter parsing/checking.
+ (?:(file|class):)(line_number|method)
+
+Sun Jul 27 10:21:28 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/unix.rb: add UNIXFileOwner, UNIXFileGroup.
+
+Sun Jul 27 03:10:43 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (io_reopen): avoid dup2() equal handles not to close itself and
+ to get rid of a msvcrt bug. [ruby-dev:20919]
+
+Sun Jul 27 00:37:16 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/tmpdir.rb: use GetWindowsDirectory, not GetSystemDirectory.
+ [ruby-talk:77073]
+
+Sat Jul 26 21:25:21 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_fdopen): set errno if it's zero on win32 platforms.
+
+ * ext/openssl/ossl_ssl.c (TO_SOCKET): define special version when
+ _WIN32 is defined. this is ruby's problem, not OpenSSL.
+
+ * win32/win32.c: remove some old comments.
+
+Sat Jul 26 14:26:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/tk/lib/tk.rb (TkCore::chooseDirectory): back up wrongly
+ removed method.
+
+Sat Jul 26 14:14:12 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/stringio/stringio.c: includes Enumerable as well as IO.
+ [ruby-talk:77058]
+
+Sat Jul 26 07:00:53 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb: fix % line.
+
+Sat Jul 26 05:31:09 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.h: fix comment.
+
+ * ext/openssl/ossl.c (ossl_debug): should enable if no va-args
+ macro supplied.
+
+Sat Jul 26 04:04:36 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: refine va-args macro detection.
+ [ruby-talk:76983]
+
+Sat Jul 26 01:33:51 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_setup): need to pass the real
+ socket to SSL_get_fd on native win32 platforms.
+
+Sat Jul 26 01:20:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_const_missing): "const_missing" should not
+ appear in the caller(); add call frame adjustment.
+
+ * eval.c (rb_method_missing): simplify call frame adjustment.
+
+Fri Jul 26 00:04:25 2003 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * ext/openssl/sample: add samples.
+ - cert2text.rb: dump certificate file as text.
+ - crlstore.rb: CRL store implementation. Fetch CRL via HTTP when
+ http-access2 is installed.
+ - certstore.rb: certificate store implementation.
+ - cert_store_view.rb: certificate store viewer with FXRuby. Uses
+ c_rehash.rb, crlstore.rb and certstore.rb.
+
+Fri Jul 25 16:43:03 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: add TclTkIp#create_slave,
+ TclTkIp#_make_safe and TclTkIp#safe?
+
+ * ext/tcltklib/MANUAL.euc: modify descriptions
+
+ * ext/tk/lib/tk.rb: bug fix [ruby-talk:76980] and modify to
+ support multi Tk IPs
+
+ * ext/tk/lib/tkafter.rb: modify to support multi Tk IPs
+
+Fri Jul 25 15:47:39 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for BN_rand_range() and
+ BN_pseudo_rand_range().
+
+ * ext/openssl/ossl_bn.c (ossl_bn_s_rand_range): should raise
+ NotImplementedError if BN_rand_range() wan not defined.
+
+ * ext/openssl/ossl_bn.c (ossl_bn_s_pseudo_rand_range): should raise
+ NotImplementedError if BN_pseudo_rand_range() wan not defined.
+
+ * ext/openssl/ossl_pkcs7.c (ossl_pkcs7_s_encrypt): avoid compiler
+ warning for OpenSSL-0.9.6.
+
+ * ext/openssl/ossl_pkcs7.c (ossl_pkcs7si_initialize): ditto.
+
+Fri Jul 25 14:34:55 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (tcp_s_gethostbyname): was using
+ uninitialized size_t value. [ruby-talk:76946]
+
+Fri Jul 25 13:38:38 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * re.c (rb_reg_options_m): use rb_reg_options() to mask internal
+ flags.
+
+ * re.c (rb_reg_initialize_m): allow nil as third argument and
+ ignore, and mask code flags if the argument is given.
+ [ruby-dev:20885]
+
+ * re.c (rb_reg_options): get common flags directly.
+
+Fri Jul 25 03:52:21 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * lib/yaml/dbm.rb: replace indexes with values_at.
+
+Fri Jul 25 02:55:59 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for libsocket and libnsl.
+
+ * ext/openssl/extconf.rb: use pkg-config to build CFLAGS and LDFLAGS.
+
+Fri Jul 25 01:27:59 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/emitter.c (syck_emitter_flush): accepts count
+ of bytes to flush. anchor offsets now functional.
+
+ * ext/syck/syck.h (syck_emitter_flush): ditto.
+
+ * ext/syck/rubyext.c: ditto.
+
+ * ext/syck/token.c: URI escaping now supported.
+
+Thu Jul 24 16:41:31 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (have_type): check if a type is defined.
+
+ * lib/mkmf.rb (check_sizeof): check size of a type.
+
+ * ext/dbm/extconf.rb: check if type DBM is defined.
+ [ruby-talk:76693]
+
+Thu Jul 24 16:18:40 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ChangeLog (add-log-time-format): "%c" contains timezone on
+ XEmacs.
+
+Thu Jul 24 16:05:22 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (AC_C_VOLATILE): check if volatile works.
+
+ * defines.h (volatile): removed.
+
+ * eval.c (rb_thread_group): Thread#group. [new]
+
+Thu Jul 24 15:50:42 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for win32 OpenSSL libraries.
+
+ * ext/openssl/extconf.rb: add check for __VA_ARGS__.
+
+ * ext/openssl/ossl.h: avoid non C99 compiler errors.
+
+Thu Jul 24 13:32:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (thgroup_add): no warning for terminated threads.
+
+Thu Jul 24 13:09:26 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: added.
+
+Thu Jul 24 11:21:10 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/io/wait/extconf.rb: removed unnecessary backward
+ compatibility stuff.
+
+Thu Jul 24 11:09:10 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: revert use of dir_config.
+
+Thu Jul 24 09:58:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/lib/win32/resolv.rb: added.
+
+ * lib/resolv.rb: support Win32 platforms. based on Tietew's work
+ [ruby-dev:15573].
+
+Thu Jul 24 04:05:46 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ssl.h: undef X509_NAME and PKCS7_SIGNER_INFO to
+ avoid name confliction on mswin32.
+
+ * ext/openssl/ssl.c (ossl_protect_obj2bio): avoid VC++ warnings
+ in function prototype.
+
+ * ext/openssl/ssl.c (ossl_protect_membio2str): ditto.
+
+ * ext/openssl/ssl.c (ossl_protect_x509_ary2sk): ditto.
+
+Thu Jul 24 03:44:04 2003 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * ext/openssl/extconf.rb: cut check for OpenSSL version
+
+Thu Jul 24 03:41:30 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tcltklib/tcltklib.c (ip_init): need at least one statement after
+ label.
+
+Thu Jul 24 01:48:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::[]): should return StringIO (or
+ Tempfile) for multipart/form.
+
+ * variable.c (rb_define_const): give warning for non constant
+ name. [ruby-core:01287]
+
+Thu Jul 24 01:51:08 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick: imported.
+
+ * MANIFEST: added webrick files.
+
+Thu Jul 24 01:32:04 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/tmpdir.rb (tmpdir): new method. remove TMPDIR.
+ use GetSystemWindowsDirectory(GetSystemDirectory), not GetTempPath.
+
+Thu Jul 24 01:08:43 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl: imported.
+
+Wed Jul 23 23:06:59 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (DOSISH): better Cygwin support.
+
+Wed Jul 23 19:13:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_split_m): the receiver may be empty string.
+
+Wed Jul 23 18:43:00 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb: import erb-2.0.4b1.
+
+Wed Jul 23 18:21:52 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/io/wait: imported.
+
+Wed Jul 23 16:07:35 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * process.c: unify indentation
+
+ * configure.in: add --enable-setreuid option
+
+ * ext/tcltklib/tcltklib.c: TclTkIp.new accepts 'ip-name' and 'options'
+
+ * ext/tk/lib/tk.rb: support arguments of TclTkIp.new
+
+ * ext/tk/lib/tk*.rb: preparations for multi-Tk interpreter support
+
+Wed Jul 23 15:49:01 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lstrip_bang): strip NUL along with white
+ spaces. [ruby-talk:76659]
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+Wed Jul 23 14:19:17 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (log_src, checking_for, create_header):
+ Logging.message is printf like format.
+
+Wed Jul 23 10:11:15 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/iconv/iconv.c (check_iconv): check if Iconv instance.
+
+ * ext/iconv/iconv.c (iconv_convert): stringify argument.
+
+Wed Jul 23 02:39:46 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * process.c: add a module for raw syscalls to control UID/GID
+
+ * process.c: add modules for portable UID/GID control
+
+Tue Jul 22 19:16:40 2003 Tanaka Akira <akr@m17n.org>
+
+ * ext/iconv/iconv.c (iconv_failure_initialize): limit
+ inspect message. [ruby-dev:20785]
+
+ * ext/iconv/iconv.c (rb_str_derive): share with original
+ string if possible. [ruby-dev:20785]
+
+Tue Jul 22 17:22:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_const_missing): new method. [ruby-core:00441]
+
+ * variable.c (rb_const_get_at): allow "const_missing" hook.
+
+ * variable.c (rb_const_get_0): ditto.
+
+ * eval.c (method_missing): rename from rb_undefined to clarify.
+
+ * eval.c (ruby_finalize_0): update exit status if any of END proc
+ raises SystemExit. [ruby-core:01256]
+
+ * signal.c (rb_trap_exit): wrap rb_eval_cmd
+
+ * eval.c (rb_exec_end_proc): reduce rb_protect().
+
+Tue Jul 22 17:15:57 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST (lib/cgi/session/pstore.rb, lib/yaml/baseemitter.rb):
+ added.
+
+Tue Jul 22 10:52:19 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/tmpdir.rb: remove charcters after "\000" and regularize path.
+
+Tue Jul 22 02:22:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_equal): should not use rb_equal().
+
+ * string.c (rb_str_equal): should return nil for non string
+ operand to conform comparable convention. [ruby-dev:20759]
+
+Tue Jul 22 00:19:19 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tmpdir.rb: new library to get temporary directory path,
+ using GetTempPath on Win32 environment.
+
+ * lib/tempfile.rb: now uses tmpdir.rb.
+
+ * lib/cgi/session.rb, ib/drb/unix.rb: ditto.
+
+Mon Jul 21 01:53:43 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_string_value_cstr): check null byte in the string
+ before retrieving C ptr. accessed via macro StringValueCStr.
+
+ * file.c: use StringValueCStr to retrieve paths to system calls.
+
+ * file.c (sys_fail2): raise error for two operand system calls
+ such as rename, link, symlink. (ruby-bugs PR#1047)
+
+Sun Jul 20 11:03:25 2003 UENO Katsuhiro <katsu@blue.sky.or.jp>
+
+ * ext/zlib/zlib.c (gzfile_read_header): gz->z.input may be nil after
+ finishing reading a gzip header.
+
+Sat Jul 19 22:25:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_match2): add warning to "~string".
+ [ruby-list:37751]
+
+ * lib/net/ftp.rb (Net::FTP::open): takes block. suggested by Gavin
+ Sinclair in [ruby-core:01237].
+
+Sat Jul 19 19:03:24 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/stdlib.c: add bsearch().
+
+Sat Jul 19 12:34:45 2003 David Black <dblack@superlink.net>
+
+ * lib/scanf.rb: import.
+
+Sat Jul 19 11:27:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc: import.
+
+ * eval.c (thgroup_add): should return group for terminated thread
+ case.
+
+ * eval.c (thgroup_add): do not raise ThreadError on terminated
+ thread addition for compatibility. just warning.
+
+Sat Jul 19 04:50:56 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/iconv/charset_alias.rb, ext/iconv/extconf.rb: make wrapper
+ script which maps charset names. [ruby-dev:20625]
+
+ * ext/iconv/iconv.c (charset_map): charset name map.
+
+ * ext/iconv/iconv.c (iconv_dfree): no exception while
+ finalization.
+
+ * ext/iconv/iconv.c (iconv_s_conv): new method Iconv.conv.
+ [ruby-dev:20588]
+
+Sat Jul 19 03:09:18 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/lib/win32/registry.rb (Win32::Registry::Error):
+ inherit StandardError instead of SystemCallError.
+
+Sat Jul 19 02:00:39 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_attr): extra calls of method_added. [ruby-talk:76361]
+
+Fri Jul 18 18:44:22 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (init_mkmf): clear $INSTALLFILES. [ruby-dev:20727]
+
+Fri Jul 18 17:34:39 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (rm_f): use FileUtils.
+
+ * lib/mkmf.rb (modified?): return mtime of the target if
+ it exists and newer than times.
+
+ * lib/mkmf.rb (install_files): add a current directory
+ file even if it does not exist yet.
+
+ * lib/mkmf.rb (configuration): do not add $LDFLAGS to
+ DLDFLAGS.
+
+ * ext/extmk.rb (extmake): check whether Makefile is newer
+ than depend and MANIFEST.
+
+Fri Jul 18 14:57:19 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (make_cmdvector): recognize quote within string.
+ based on Nobu's patch ([ruby-win32:450]). [ruby-talk:75853]
+
+Fri Jul 18 13:04:36 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_missing): VCALL is called only for LOCAL_ID. no
+ check required.
+
+ * parse.y (primary): primary:tFID generates NODE_FCALL.
+ [ruby-dev:20641]
+
+Thu Jul 17 18:50:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (match_captures): rename from "groups".
+
+Thu Jul 17 17:57:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_clear_cache_by_class): check both klass and origin.
+
+Thu Jul 17 13:46:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_init): set ruby_running to true after
+ initialization.
+
+Thu Jul 17 13:42:53 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftools.rb (File::makedirs): do not handle "//" as a directory.
+
+Thu Jul 17 06:40:28 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: recover and fix typo : Tk.chooseDirectory
+ (Tk8.4 feature)
+
+Wed Jul 16 16:23:58 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_proc_new): call svalue_to_avalue for yield argument.
+
+Wed Jul 16 00:31:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_disable_super, rb_enable_super): deprecate.
+
+ * eval.c (thgroup_s_alloc): re-implement group struct.
+
+ * eval.c (thgroup_add): add check for enclose and frozen status.
+
+Tue Jul 15 19:50:49 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_add_method, rb_alias): need to clear cache by
+ ID when method defined in parent class is cached for
+ grand child classes. [ruby-dev:20672]
+
+Tue Jul 15 14:38:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/matrix.rb: remove elements conversion to_f, to_i, to_r.
+
+ * lib/cgi/session/pstore.rb: add new file.
+
+Tue Jul 15 03:30:41 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (syck_mark_emitter): forgot to rb_gc_mark the
+ outgoing IO object.
+
+Sun Jul 13 14:55:36 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * process.c (proc_getgroups, proc_setmaxgroups): fix typo.
+
+Sat Jul 12 17:01:28 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * struct.c (struct_entry): add prototype to avoid VC++ warnings.
+
+Sat Jul 12 04:43:57 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/emitter.c: new emitter code.
+
+ * ext/syck/rubyext.c: Emitter class.
+
+ * lib/yaml.rb: Load Syck emitter, if available.
+
+ * lib/yaml/stream.rb: ditto.
+
+ * lib/yaml/baseemitter.rb: underlying class for all emitters.
+
+ * lib/yaml/rubytypes.rb: use BaseEmitter abstraction.
+
+ * lib/yaml/emitter.rb: ditto.
+
+Sat Jul 12 04:23:13 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_undef): need to clear cache for inherited class.
+ (rubicon/builtin/TestModulePrivate.rb:test_undef_method)
+
+Sat Jul 12 01:21:54 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (avalue_to_svalue): typo.
+
+ * eval.c (rb_load): rb_prohibit_interrupt must not underflow.
+
+ * parse.y (NODE_STRTERM, tokadd_string, parse_string): moved
+ string nest level from a static variable to NODE_STRTERM, to
+ preserve it from word to word in %W/%w.
+
+Fri Jul 11 22:37:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (aix): needs ruby.imp even with gcc.
+ (ruby-bugs:PR#1007)
+
+Fri Jul 11 18:37:37 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb: do not handle directories. [ruby-dev:20613]
+
+Fri Jul 11 16:09:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): exp should be less than MDMAXEXPT.
+
+Fri Jul 11 07:17:47 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: not create a Tcl/Tk interpreter if already
+ defined TkCore::INTERP
+
+ * ext/tk/lib/tk.rb: bugfix on TkWindow#configure
+
+Thu Jul 10 14:42:02 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * math.c (math_log): nan takes a dummy argument on Cygwin 1.5.0.
+
+Wed Jul 9 23:50:46 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * regex.c (mbctab_sjis): 0x80 is not shift jis first byte.
+ [ruby-dev:20516]
+
+Wed Jul 9 15:38:28 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb: do not install shared libraries as man pages.
+
+ * mkconfig.rb: support text-mount on Cygwin.
+
+Wed Jul 9 11:09:57 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (match_entry): add prototype to avoid VC++ warnings.
+
+Wed Jul 9 03:48:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): put rb_load_file() in a thread critical
+ section. [ruby-dev:20490]
+
+ * eval.c (compile): put rb_compile_string() in a thread critical
+ section.
+
+Tue Jul 8 02:35:41 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get_0): should not warn if constant is not
+ defined. (ruby-bugs-ja PR#509)
+
+ * bignum.c (rb_big2dbl): give a warning on overflow.
+ (ruby-bugs-ja PR#510)
+
+ * util.c (ruby_strtod): change MDMAXEXPT from 511 to 308.
+
+ * pack.c (utf8_to_uv): long is sufficient. LONG_LONG is not
+ required.
+
+Tue Jul 8 01:43:16 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * bignum.c (rb_big2str): support 32 bit (without `long long' type)
+ machines. (ruby-bugs-ja PR#512)
+
+Mon Jul 7 10:22:46 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dbm/extconf.rb (gdbm_compat, qdbm): add check for gdbm_compat
+ and qdbm.
+
+Mon Jul 7 01:34:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call_super): k->super maybe NULL if klass is Kernel.
+ [ruby-dev:20519]
+
+ * gc.c (obj_free): clear method cache when freeing class/module.
+
+Sat Jul 5 23:32:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_remove_method): allow "remove_method" to accept
+ multiple arguments.
+
+Sat Jul 5 00:22:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * node.h (NEW_NODE): cast arguments to rb_node_newnode().
+
+Fri Jul 4 21:48:44 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/syck/rubyext.c, ext/syck/syck.c, ext/syck/syck.h,
+ ext/syck/token.c: C++ style comments are not allowed.
+ (ruby-bugs:PR#1008)
+
+Thu Jul 3 23:41:30 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/timeout.rb: add optional exception argument for compatibility
+ function.
+
+Thu Jul 3 14:22:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_values_at): extract common procedure from
+ rb_ary_values_at. follow DRY principle.
+
+ * re.c (match_values_at): values_at should understand ranges.
+
+ * struct.c (rb_struct_values_at): ditto.
+
+ * struct.c (inspect_struct): inspect format changed; add "struct "
+ at the top.
+
+ * sprintf.c (rb_f_sprintf): "%p" specifier for inspect output.
+ (RCR#69)
+
+ * eval.c (rb_mod_undef_method): allow "undef_method" to accept
+ multiple arguments. (RCR#146)
+
+ * lib/timeout.rb: put timeout in Timeout module. (RCR#121)
+ [ruby-talk:61028]
+
+ * re.c (match_groups): new method added. (RCR#139)
+
+ * variable.c (rb_mod_const_of): should exclude constant defined
+ in Object, unless retrieving constants of Object.
+
+Thu Jul 3 12:13:05 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (VPATH): convert from Windows form to Unix form on
+ MinGW. This fixes the build with GNU make 3.80-1 for Cygwin.
+
+Wed Jul 2 23:27:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_new4): do not allocate new string if original
+ is frozen or already have copy-on-write entry. [ruby-talk:74940]
+
+Wed Jul 2 13:22:39 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_shared_replace): clear flags before copy.
+
+ * string.c (rb_str_replace): ditto.
+
+ * eval.c (rb_yield_0): override visibility mode for module_eval
+ etc. (ruby-bugs-ja PR#505)
+
+Wed Jul 2 11:45:34 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: synchronize document with source code.
+
+ * lib/net/pop.rb: ditto.
+
+Wed Jul 2 11:39:50 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: unify SMTP and SMTPCommand.
+
+ * lib/net/smtp.rb: new exception class SMTPError.
+
+ * lib/net/smtp.rb: new exception class SMTPAuthenticationError.
+
+ * lib/net/smtp.rb: new exception class SMTPServerBusy.
+
+ * lib/net/smtp.rb: new exception class SMTPSyntaxError.
+
+ * lib/net/smtp.rb: new exception class SMTPFatalError.
+
+ * lib/net/smtp.rb: new exception class SMTPUnknownError.
+
+ * lib/net/smtp.rb: change critical section protect algorithm.
+
+ * lib/net/smtp.rb (SMTP#do_start): check authentication args
+ before all.
+
+ * lib/net/smtp.rb: new method send_message (alias send_mail).
+
+ * lib/net/smtp.rb: new method open_message_stream (alias ready).
+
+ * lib/net/pop.rb: POPBadResponse is a POPError.
+
+ * lib/net/pop.rb (POPMail#pop): ban ReadAdapter.
+
+ * lib/net/pop.rb (POPMail#top): ditto.
+
+ * lib/net/pop.rb (POP3Command): change critical section protect
+ algorithm.
+
+ * lib/net/pop.rb (POP3Command#auth): USER and PASS should be one
+ critical block.
+
+ * lib/net/pop.rb (POP3Command#retr): ban `dest' argument using
+ iterator.
+
+ * lib/net/pop.rb (POP3Command#top): ditto.
+
+ * lib/net/protocol.rb: #read_message_to -> #each_message_chunk
+
+ * lib/net/protocol.rb: #D -> #LOG
+
+ * lib/net/protocol.rb: #D_off -> #LOG_off
+
+ * lib/net/protocol.rb: #D_on -> #LOG_on
+
+Wed Jul 2 11:10:47 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: set old class aliases for backward
+ compatibility. [ruby-talk:74863]
+
+ * lib/net/protocol.rb: ditto.
+
+Wed Jul 2 01:32:40 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/net/pop.rb (Net::POP3#start): typofix.
+
+Tue Jul 1 22:08:19 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: TkWindow include TkWinfo
+
+ * ext/tk/lib/tk.rb: treat unknown widget classes as subclasses
+ of TkWindow
+
+Tue Jul 1 19:02:12 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * parse.y (rb_intern): should use mbclen instead of mblen.
+
+Tue Jul 1 10:36:19 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * class.c (rb_define_class, rb_define_module): also set constant under
+ Object. [ruby-dev:20445]
+
+ * object.c (boot_defclass): ditto.
+
+ * variable.c (rb_const_get_at, rb_const_get_0, rb_mod_const_at,
+ rb_const_defined, mod_av_set, rb_const_assign): toplevel constants
+ are now under Object, rb_class_tbl remains for GC.
+
+Mon Jun 30 17:53:06 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (mnew): ignore metaclasses have no influence, for rklass.
+ [ruby-talk:74706]
+
+Sun Jun 29 06:59:07 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb, lib/drb/invokemethod.rb: import drb-2.0.4
+ (use LocalJumpError#reason)
+
+Sat Jun 28 12:28:54 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (rb_cv_stack_grow_dir): check stack growing direction.
+
+ * eval.c (rb_thread_restore_context): prior configuration macro.
+
+ * gc.c (ruby_stack_length): always return the address of lower edge.
+
+ * gc.c (rb_gc_mark_locations): remove margin. [ruby-dev:20462]
+
+ * gc.c (rb_gc, Init_stack): prior configuration macro.
+
+ * gc.c (Init_stack): add safety margin.
+
+Fri Jun 27 14:41:22 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_split_m): remove white spaces on the head of
+ the last element, when limit is specified. [ruby-talk:74506]
+
+Fri Jun 27 03:24:54 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (io_fflush): need to check if closed after thread switch.
+ [ruby-dev:20351]
+
+ * io.c (fptr_finalize): ditto.
+
+ * string.c (rb_str_rindex_m): fixed wrong fix. should move backward
+ first only when matching from the end.
+
+Thu Jun 26 21:34:49 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * class.c (class_instance_method_list): get rid of warning about
+ arguement type mismatch, and inline method_list().
+ [ruby-core:01198]
+
+Wed Jun 25 14:40:33 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add and modify methods ---
+ TkWidget.database_class, TkWidget.database_classname,
+ TkWidget#database_class, TkWidget#database_classname
+
+ * ext/tk/lib/tk.rb: instances of a subclass of TkToplevel or
+ TkFrame are created with ":class=>subclass" option as default.
+
+ * ext/tk/sample/tkoptdb.rb: add a new part
+
+Wed Jun 25 12:52:58 2003 Matthew Dempsky <jivera@flame.org>
+
+ * class.c (rb_generic_class_instance_methods): merge argument
+ check (and warning) into one function; following DRY principle.
+ [ruby-core:01193]
+
+Wed Jun 25 05:49:10 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add widget destroy hook binding to TkBindTag::ALL
+
+ * ext/tk/lib/tkcanvas.rb: Although requiring manual control of GC,
+ memory eating problem of TkCanvas Items is fixed.
+
+ * ext/tk/lib/tktext.rb: add some methods and bug fix
+
+Wed Jun 25 00:14:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (autoload_delete): should delete Qundef from iv_tbl.
+ (ruby-bugs-ja PR#504)
+
+Tue Jun 24 16:46:07 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix on TkToplevel, TkFrame,
+ TkPanedwindow, TkOptionDB
+
+ * ext/tk/lib/tk.rb: TkOptionDB --- make it more secure to use procs
+ defined on resourceDB
+
+ * ext/tk/sample/tkoptdb.rb, resource.ja, resource.en:
+ sample script how to use TkOptionDB.
+
+Tue Jun 24 14:22:41 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * lib/yaml/types.rb: replaced Kernel::Hash reference with Object::Hash
+ from [ruby-talk:74270]
+
+Tue Jun 24 17:59:30 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_yield_0): show yielded block position not only yielding
+ point. [ruby-dev:20441]
+
+Tue Jun 24 16:47:07 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTPHeader#proxy_basic_auth): missing `@'.
+ Thanks Douglas Koszerek. (ruby-bugs:PR975)
+
+Tue Jun 24 14:31:17 2003 Minero Aoki <aamine@loveruby.net>
+
+ * config.guess: have wrongly returned "alphaev56-unknown-linux-"
+ on Linux/Alpha. [ruby-dev:20434]
+
+Tue Jun 24 04:54:46 2003 Minero Aoki <aamine@loveruby.net>
+
+ * configure.in: always add -mieee for gcc/alpha. [ruby-dev:20429]
+
+Tue Jun 24 02:40:09 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * array.c (rb_ary_unshift_m): need to check number of arguments.
+ [ruby-talk:74189]
+
+Mon Jun 23 23:59:56 2003 Minero Aoki <aamine@loveruby.net>
+
+ * io.c (io_close): missing prototype. [ruby-dev:20422]
+
+ * ext/socket/socket.c (bsock_do_not_rev_lookup_set): ditto.
+
+ * ext/win32ole/win32ole.c (foletype_guid, foletype_progid): ditto.
+
+ * error.c (syserr_initialize): length argument of sprintf() is an
+ int.
+
+Mon Jun 23 23:28:14 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST: add wince files.
+
+ * ext/tk/MANIFEST: add sample/tkmenubutton.rb.
+
+Mon Jun 23 17:40:58 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dir.c (find_dirsep): get rid of warnings.
+
+ * eval.c (error_print): temporary value might be disposed by GC.
+
+ * hash.c (env_has_value, env_index): should not increment NULL.
+
+ * io.c (io_read, rb_io_sysread): not read when length is 0.
+
+ * io.c (rb_io_reopen): ensure initialized IO.
+
+ * io.c (rb_io_init_copy): sychronize file pointer.
+
+ * io.c (rb_io_s_pipe): make exception proof.
+
+ * string.c (rb_str_rindex_m): Fixnum 0 matched end of string.
+
+Mon Jun 23 16:18:12 2003 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_open_file): initialize flags.
+
+ * time.c (time_arg): initialize v[6] even when argc is 10 to
+ avoid valgrind error.
+
+Mon Jun 23 14:22:44 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix on TkRoot and TkToplevel
+
+Mon Jun 23 08:24:01 2003 Florian Frank <flori@nixe.ping.de>
+
+ * string.c (rb_str_upto): generate sequence according to "succ"
+ order. formerly check was done by dictionary order.
+ [ruby-talk:74138]
+
+Mon Jun 23 00:27:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_string_value): fill constant empty string along
+ with setting ELTS_SHARED if str->ptr is NULL. [ruby-core:01179]
+
+ * string.c (rb_string_value_ptr): ditto.
+
+ * string.c (rb_check_string_type): ditto.
+
+Sun Jun 22 23:42:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (str_gsub): move END(0) check before mbclen2().
+
+ * string.c (scan_once): reduce END(0) check.
+
+ * io.c (rb_io_initialize): accept fixnum mode.
+
+ * eval.c (error_print): replace strchr() by memchr(), einfo may
+ contain "\0".
+
+ * pack.c (pack_unpack): range check for "@" move; initialize check
+ for "m".
+
+ * error.c (syserr_initialize): avoid buffer overflow.
+
+ * file.c (rb_file_s_readlink): expand buffer until readlink
+ succeed.
+
+Sun Jun 22 16:17:02 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: TkRoot.new and TkToplevel.new accept Wm
+ commands as elements
+
+ * ext/tk/lib/tk.rb: TkMenu --- add some methods
+
+ * ext/tk/lib/tk.rb: TkOptionMenubutton --- bug fix
+
+ * ext/tk/sample/tkmenubutton.rb: sample of TkMenubutton and
+ TkOptionMenubutton
+
+Sat Jun 21 23:15:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should not propagate distination tag if
+ tag is already handled in this level. (ruby-bugs-ja PR#501)
+
+ * object.c (str_to_id): check for empty string before intern.
+ [ruby-talk:74006]
+
+Sat Jun 21 13:56:09 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/Makefile.sub: undefine HAVE__SETJMP.
+
+ * wince/resource.rb: include winver.h in wince3.0.
+
+Sat Jun 21 12:55:17 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: TkRoot.new and TkToplevel.new accept Wm commands
+ as elements of a hash argument.
+
+ * ext/tk/sample/tktimer2.rb: add comments about the usage of a
+ TkTimer object.
+
+Sat Jun 21 08:47:22 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk*.rb: remove direct-accesses to TkComm::INTERP and
+ TkComm::INITIALIZE_TARGETS
+
+ * ext/tk/lib/tk*.rb: use TkINTERP_SETUP_SCRIPTS constant for setting
+ up the interpreter
+
+ * ext/tcltklib/tcltklib.c: support to create a safe interpreter
+ with safe-Tk
+
+Fri Jun 20 23:28:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should not propagate TAG_BREAK and
+ TAG_RETURN from orphan Proc object. [ruby-core:01148]
+
+Fri Jun 20 15:04:28 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * defines.h (PATH_ENV): name of PATH environment. [new].
+
+ * defines.h (ENV_IGNORECASE): define for case insensitive platforms
+ to access environment variables.
+
+ * dln.c (dln_find_exe): use PATH_ENV instead of "PATH".
+
+ * hash.c (env_delete, rb_f_getenv, env_fetch, rb_env_path_tainted,
+ env_aset): ditto.
+
+ * ruby.c (proc_options): ditto.
+
+Fri Jun 20 14:52:46 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: Tk interpreter returns TAINTED strings.
+
+Fri Jun 20 03:09:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (new_yield): distinguish "yield 1,2" and "yield [1,2]".
+ [ruby-dev:20360]
+
+ * eval.c (rb_eval): support new_yield() change.
+
+ * variable.c (rb_const_get_0): warn for Foo::BAR when BAR is a
+ toplevel constant (i.e. a constant defined under Object).
+ [ruby-list:36935]
+
+ * parse.y (no_blockarg): separate no block argument check and
+ ret_args argument processing.
+
+Fri Jun 20 00:45:19 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: import csv module.
+
+Thu Jun 19 22:51:41 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb.rb, lib/drb/drb.rb, lib/drb/eq.rb,
+ lib/drb/extserv.rb, lib/drb/extservm.rb, lib/drb/gw.rb,
+ lib/drb/invokemethod.rb, lib/drb/observer.rb,
+ lib/drb/timeridconv.rb, lib/drb/unix.rb: import drb-2.0.4b3
+
+Thu Jun 19 16:14:43 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_do_one_event): change default
+ value of the argument
+
+ * ext/tcltklib/tcltklib.c (lib_do_one_event): returns true/false
+
+ * ext/tcltklib/tcltklib.c: add TclTkLib::EventFlag::NONE ( == 0 )
+
+ * ext/tcltklib/tcltklib.c: add set_no_event_wait() and
+ get_no_event_wait()
+
+ * ext/tcltklib/MANUAL.euc: modify
+
+ * ext/tcltklib/README.euc: ditto
+
+ * ext/tk/lib/tk.rb: change default value of TkCore.do_one_event
+ argument
+
+ * ext/tk/lib/tk.rb: add TkCore.set_no_event_wait(wait) and
+ TkCore.get_no_event_wait
+
+ * ext/tk/lib/tk.rb: add Tk.exit ( == destroy root widget )
+
+ * ext/tk/lib/tkafter.rb: rename TkAfter => TkTimer (TkAfter is
+ an alias name)
+
+ * ext/tk/lib/tkafter.rb: set_callback returns self
+
+ * ext/tk/lib/tkafter.rb: continue() raises an exception, if already
+ running or no procedure.
+
+ * ext/tk/lib/tkafter.rb: skip() raises an exception, if not running.
+
+ * ext/tk/sample/tktimer2.rb: new sample for TkTimer class.
+
+Thu Jun 19 16:13:54 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * rubytest.rb: add library path to include standard libraries.
+
+Thu Jun 19 13:13:10 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (env_delete, rb_f_getenv, env_fetch): case insensitive to
+ access environment variables on DOSISH platforms.
+
+Thu Jun 19 00:51:47 2003 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * range.c (rb_range_beg_len): out_of_range check after adjusting
+ end point. [ruby-dev:20370]
+
+Wed Jun 18 23:59:11 2003 Guy Decoux <ts@moulon.inra.fr>
+
+ * parse.y (call_args): the first argument to arg_cancat() should
+ be NODE_LIST. [ruby-core:01151]
+
+Wed Jun 18 23:41:27 2003 Marc Cartright <marc@isri.unlv.edu>
+
+ * ext/zlib/zlib.c (zstream_run): In a particular situation,
+ deflate/inflate will return Z_BUF_ERROR, even though another call
+ is required by the zlib library.
+
+Wed Jun 18 19:46:21 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix
+
+ * ext/tk/lib/tk.rb: rename 'no_create' option to 'without_creating'
+
+ * ext/tk/lib/tk.rb: add TkWindow#pack_in, TkWindow#grid_in,
+ TkWindow#place_in
+
+ * ext/tk/lib/tk.rb: add TkWindow#bind_class and TkWindow#database_class
+
+ * ext/tk/lib/tk.rb: add TkBindTag.new_by_name and TkDatabaseClass
+ for binding to database class
+
+ * ext/tk/lib/tk.rb: check varname whether already exsist or not.
+ (TkVarAccess.new)
+
+ * ext/tk/lib/tk.rb: TkTextWin#bbox returns an array of four numbers
+
+ * ext/tk/lib/tk.rb: autoload TkDialog2, TkWarning2
+
+ * ext/tk/lib/tk.rb: scan event callback arguments and convert
+ to proper type
+
+ * ext/tk/lib/tk.rb: TkBindTag.new accepts a block
+
+ * ext/tk/lib/tk.rb: If given taglist, TkWindow#bindtags(taglist)
+ returns taglist
+
+ * ext/tk/lib/tk.rb: add TkWindow#bindtags=(taglist)
+
+ * ext/tk/lib/tk.rb: Tk.focue and Tk.focus_lastfor return nil
+ if there is no target widget.
+
+ * ext/tk/lib/tk.rb: Tk::Wm.client returns the argument string
+ when setting name
+
+ * ext/tk/lib/tk.rb: TkGrid.columnconfiginfo and rowconfiginfo
+ given a slot return a number.
+
+ * ext/tk/lib/tk.rb: TkWindow.grid_columnconfiginfo and
+ grid_rowconfiginfo --- ditto
+
+ * ext/tk/lib/tk.rb: rename and define alias :: TkOption ==> TkOptionDB
+
+ * ext/tk/lib/tk.rb: define alias :: TkTimer ==> TkAfter
+
+ * ext/tk/lib/tk.rb: some instance methods change from public to private
+
+ * ext/tk/lib/tk.rb: some TkComm methods change to module functions
+
+ * ext/tk/lib/tk.rb: add support for -displayof option to some
+ TkWinfo methods
+
+ * ext/tk/lib/tk.rb: bind, bind_append and bind_remove ---
+ returns the target of event-binding
+
+ * ext/tk/lib/tk.rb: add Tk8.4 features
+
+ * ext/tk/lib/tk.rb: add TkPaneWindow
+
+ * ext/tk/lib/tkdialog.rb: bug fix
+
+ * ext/tk/lib/tkdialog.rb: some methods return self
+
+ * ext/tk/lib/tkdialog.rb: add TkTextMark#+(mod) and TkTextMark#-(mod)
+
+ * ext/tk/lib/tkdialog.rb: add some methods
+
+ * ext/tk/lib/tkcanvas.rb: bug fix and some methods return self
+
+ * ext/tk/lib/tkentry.rb: some methods return self
+
+ * ext/tk/lib/tkentry.rb: TkEntry#bbox returns an array of four numbers
+
+ * ext/tk/lib/tkentry.rb: scan validatecommand arguments and
+ convert to proper type
+
+ * ext/tk/lib/tkbgerror.rb: support to define a error handler by user
+
+ * ext/tcltklib/tcltklib.c: [ruby-talk:60759]
+
+Wed Jun 18 13:50:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should dispatch based on ID type.
+
+Wed Jun 18 12:53:42 2003 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (rb_yield_0): should restore scope_vmode during yield.
+ [ruby-dev:20361]
+
+Wed Jun 18 01:13:36 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (rb_syck_load_handler): merge key implemented.
+
+ * ext/syck/rubyext.c (transfer_find_i): removed use of String#=~ in favor
+ of Regexp#match.
+
+ * lib/yaml.rb: YAML::try_implicit returns.
+
+ * lib/yaml/rubytypes.rb: Regexps added for type matching.
+
+ * lib/yaml/emitter.rb: fix String + nil error.
+
+Tue Jun 17 17:01:08 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/gram.c: added grammar for certain empty sequence entries.
+
+ * ext/syck/handler.c, ext/syck/syck.c, ext/syck/syck.h: track bad anchors.
+
+ * ext/syck/token.c: added pause token, tag possible circular references.
+
+ * lib/yaml/rubytypes.rb: parsing YMD time as Date instance.
+
+ * ext/syck/rubyext.c: ditto. DomainType, PrivateType, BadAlias classes.
+
+Tue Jun 17 21:28:27 2003 Ariff Abdullah <skywizard@time.net.my>
+
+ * win32/win32.c (rb_w32_opendir): need to set errno. [ruby-talk:73761]
+
+Mon Jun 16 19:01:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: remove rb_cBlock.
+
+Mon Jun 16 18:06:33 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * numeric.c (rb_fix2uint): renamed from rb_fix2int on IA64.
+
+Mon Jun 16 17:02:57 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (proc_invoke): format the message for localjump_error().
+
+Mon Jun 16 16:23:56 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/dl.c (rb_dl_callback): use rb_block_proc() instead of
+ rb_block_new().
+
+ * ext/win32ole/win32ole.c (ev_on_event): ditto.
+
+Mon Jun 16 16:06:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_alloc): re-unification of Block and Proc. Block
+ class is no longer available.
+
+Mon Jun 16 14:43:14 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * bcc32/Makefile.sub: undefine HAVE_GETGROUPS.
+
+Sat Jun 14 16:58:41 2003 Guy Decoux <ts@moulon.inra.fr>
+
+ * regex.c (calculate_must_string): should handle option_set
+ properly. [ruby-talk:73481]
+
+ * regex.c (re_compile_fastmap): a bug in flag manipulation.
+ [ruby-talk:73549]
+
+Sat Jun 14 17:59:59 2003 Guy Decoux <ts@moulon.inra.fr>
+
+ * eval.c (method_arity): should handle NODE_BMETHOD and
+ NODE_DMETHOD. [ruby-core:01138]
+
+Fri Jun 13 09:24:39 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (storebinary): seek correctly. Thanks, William Webber.
+
+ * lib/net/ftp.rb (putbinaryfile): rescue FTPPermError.
+
+Thu Jun 12 22:13:13 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb : add 'no_create' option to widget
+ initialize method.
+
+ * ext/tk/MANIFEST : forgot to commit when added tkmacpkg.rb
+ and tkwinpkg.rb
+
+ * ext/tk/lib/README : ditto.
+
+Thu Jun 12 21:14:11 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb : widget configure returns self (for method
+ call chain)
+
+ * ext/tk/lib/tkmacpkg.rb : Mac resource (not new but not
+ included until now)
+
+ * ext/tk/lib/tkwinpkg.rb : Win DDE and registry (not new but not
+ included until now)
+
+Tue Jun 10 14:26:30 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c: preserve newlines prepended to a block.
+
+ * ext/syck/implicit.c (syck_match_implicit): added !merge and !default.
+
+ * lib/yaml/constants.rb: remove '\z' escape.
+
+ * lib/yaml/emitter.rb: ensure reset of @seq_map shortcut flag.
+
+ * lib/yaml/encoding.rb: remove Unicode translation methods.
+
+ * lib/yaml/rubytypes.rb: improved round-tripping of Strings.
+ [ruby-core:1134]
+
+Tue Jun 10 01:07:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb.rb (IRB::Irb::eval_input): warn and exit if $SAFE >=3
+ after input evaluation.
+
+ * lib/irb.rb (IRB::Irb::eval_input): untaint input string. now
+ irb works for levels 1 and 2.
+
+Mon Jun 9 19:02:33 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in: checks presence of grp.h and setgroups().
+
+ * process.c (proc_getgroups, proc_setgroups): raise
+ NotImplementedError unless available. [ruby-talk:73014]
+
+Mon Jun 9 18:09:11 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fixed 100% CPU problem of Tk.mainloop
+
+Mon Jun 9 15:50:24 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: renewal Tk.mainloop
+
+Sun Jun 8 13:37:21 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/setup.mak: set SUBSYSTEM in each platform.
+
+ * wince/stdlib.c: fix mblen() bug.
+
+Sat Jun 7 22:22:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_loader_transfer): should not use
+ rb_cProc directly, since type_proc may be Proc, Block, or
+ Method.
+
+ * parse.y (value_expr0): class and module statements should not be
+ warned for "void value expression". [ruby-talk:72989]
+
+Sat Jun 7 01:46:41 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (add_final): should determine type by respond_to?
+
+ * gc.c (define_final): ditto.
+
+ * io.c (rb_io_ctl): should not depend on respond_to?
+
+ * range.c (range_step): rb_check_string_type().
+
+Fri Jun 6 20:29:14 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (error_print): needs to be exception proof.
+
+ * eval.c (error_handle, rb_longjmp): bails out when exception
+ reentered. (ruby-bugs-ja:PR#487), [ruby-core:01119],
+ [ruby-core:01122]
+
+ * eval.c (Init_Proc): pre-allocates critical error objects.
+
+Fri Jun 6 20:29:14 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (cmd_brace_block, do_block, brace_block): initialize block
+ variables at the beginning of the block. [ruby-talk:72521]
+
+Fri Jun 6 18:49:11 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_setgroups): new functions.
+
+Fri Jun 6 18:33:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (define_final): eliminate rb_f_lambda() call.
+
+ * class.c (rb_scan_args): ditto.
+
+ * signal.c (sig_trap): ditto.
+
+ * hash.c (rb_hash_initialize): ditto.
+
+ * variable.c (rb_f_trace_var): ditto.
+
+ * ext/dl/dl.c (rb_dl_callback): ditto.
+
+ * ext/win32ole/win32ole.c (ev_on_event): ditto.
+
+Fri Jun 6 16:10:01 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: define Net::HTTPResponse#to_ary for backward
+ compatibility. [ruby-talk:72927]
+
+ * lib/net/protocol.rb: add warning.
+
+Fri Jun 6 13:30:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): $SAFE is turned off in the finalization.
+ Each END proc should preserve its own $SAFE level. [ruby-core:01119]
+
+ * marshal.c (marshal_load): remove unused variable "hash".
+ [ruby-core:01120]
+
+ * hash.c (env_str_new): freeze strings from ENV. [ruby-talk:72860]
+
+ * array.c (rb_ary_first): optional argument to retrieve first n
+ elements.
+
+ * array.c (rb_ary_last): optional argument to retrieve last n
+ elements.
+
+Thu Jun 5 21:31:55 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/stdlib.c: add mblen().
+
+Thu Jun 5 18:33:46 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/curses/curses.c (window_s_allocate,curses_finalize):
+ avoid VC++ warnings.
+
+Thu Jun 5 17:44:11 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (syck_parser_mark): was a bit heavy on the GC.
+
+ * lib/yaml.rb (YAML::transfer): added.
+
+Thu Jun 5 16:11:50 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (MISSING): link with missing/erf.c.
+
+ * missing.h (erf, erfc): fix prototype.
+
+ * missing/erf.c: new. [ruby-list:37753]
+
+Thu Jun 5 15:09:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (math_erf,math_erfc): new function. [ruby-list:37753]
+
+Thu Jun 5 14:49:43 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c: using GC nodes caused segfault. [ruby-core:1071]
+
+Thu Jun 5 13:48:57 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c: directives choked on a period.
+
+ * ext/syck/gram.y: anchors work above a collection. [ruby-core:1071]
+
+ * ext/syck/handler.c, ext/syck/syck.c: ensure a fresh strtable between
+ parser iterations.
+
+Wed Jun 4 12:06:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_finalize): no longer need to turn off $DEBUG in the
+ finalizer. (ruby-bugs-ja PR#473)
+
+Tue Jun 3 22:20:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call_super): should search superclass method based on
+ orig_func, not last_func.
+
+Tue Jun 3 09:59:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call_super): inheritance line adjustment moved from
+ rb_call(). [ruby-core:01113]
+
+ * eval.c (rb_eval): use rb_call_super() to follow DRY principle.
+
+Mon Jun 2 02:20:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (push_values_at): Array#values_at should work with
+ ranges too.
+
+ * range.c (rb_range_beg_len): length calculation was wrong.
+
+ * eval.c (rb_call): should set T_ICLASS in the frame->last_class.
+ [ruby-core:01110]
+
+Sun Jun 1 21:50:01 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: should not use def file, use ld with
+ --export-all-symbols option on Cygwin/MinGW.
+
+ * defines.h: ditto.
+
+ * cygwin/GNUmakefile.in: ditto.
+
+ * ext/digest/defs.h: avoid warnings on Cygwin.
+
+Sun Jun 01 13:33:49 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/string_wce.c: add strpbrk() for hpcpro support.
+
+ * wince/setup.mak: add hpcpro(CE2.11) & armv4t(CE.NET) support.
+
+ * wince/resource.rb: ditto.
+
+ * wince/Makefile.sub: ditto.
+
+Sun Jun 1 10:38:28 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * variable.c (rb_autoload_load): autoloaded constants under a module
+ belong to the module. [ruby-core:01094], [ruby-dev:20309]
+
+Sat May 31 04:36:54 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (rb_intern): should handle multibyte name.
+
+Fri May 30 23:18:01 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (rb_syck_mktime): seconds calculated wrong.
+
+ * ext/syck/gram.c: flexibility to anchors and transfer methods on
+ collections.
+
+ * ext/syck/token.c: hex escapes.
+
+ * lib/yaml/basenode.rb: YamlNode references changed to YAML::BaseNode.
+
+Fri May 30 22:28:04 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * numeric.c (rb_num2uint, rb_fix2int): new function to convert
+ values over INT_MAX. [ruby-core:01099]
+
+ * ruby.h (NUM2UINT, FIX2INT): ditto.
+
+Fri May 30 15:01:05 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c: preserve any indentation past an explicit
+ indentation.
+
+Fri May 30 14:55:44 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_Array): exclude Kernel#to_a instead of Object#to_a.
+ (ruby-bugs-ja:PR#483)
+
+ * lib/optparse.rb (OptionParser::Switch#parse_arg): not splat.
+
+ * lib/optparse.rb (OptionParser::Switch#conv_arg): splat if no
+ conversion supplied.
+
+ * lib/optparse.rb (OptionParser::Switch::PlacedArgument#parse):
+ override next switch after argument conversion.
+
+Fri May 30 14:41:34 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/handler.c, ext/syck/syck.h: removed syck_fold_format().
+
+ * ext/syck/gram.c: flexibility for aliases and anchors.
+
+ * ext/syck/token.c: folding now handled in the tokenizer.
+
+Fri May 30 06:21:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * variable.c (rb_autoload_load): should delete autoloaded
+ symbol itself before load. [ruby-core:01097]
+
+ * variable.c (rb_mod_remove_const): must not return Qundef.
+
+Thu May 29 14:59:10 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (_CRTIMP): redefine _CRTIMP on MinGW.
+
+ * configure.in: remove '-D__USE_CRTIMP' from XCFLAGS on MinGW.
+
+ * win32/win32.c (NtMakeCmdVector): handle quotes only if not instring.
+
+Thu May 29 09:11:01 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (ev_const_defined, ev_const_get), variable.c
+ (rb_const_get_at, rb_const_get, rb_mod_remove_const): use Qundef
+ as autoload marker. [ruby-dev:18103], [ruby-dev:18184]
+
+ * eval.c (rb_mod_autoload, rb_mod_autoload_p): new method;
+ Module#autoload, Module#autoload?.
+
+ * variable.c (rb_autoload, rb_autoload_load, rb_autoload_p):
+ manage autoload constants per classes/modules.
+
+ * variable.c (rb_const_defined_at, rb_const_defined): return false
+ for autoloading constants.
+
+ * class.c (rb_define_class, rb_define_module), eval.c (rb_eval),
+ variable.c (rb_mod_const_at, rb_const_assign): removed autoload
+ stuff.
+
+ * intern.h: prototypes; rb_autoload, rb_autoload_load,
+ rb_autoload_p.
+
+ * lib/optparse.rb (OptionParser::Switch::PlacedArgument::parse):
+ do not treat unmatched argument as an option.
+
+Wed May 28 08:44:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_syscall): type dispatch should be based on
+ rb_check_string_type(), not FIXNUM_P(), because values may be a
+ bignum. [ruby-talk:72257]
+
+Tue May 27 20:33:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c, util.c: removed duplicated includes/defines.
+
+ * ext/socket/socket.c (sock_addrinfo): get rid of SEGV at NULL ptr
+ String. increase buffer size for 64bit platforms.
+
+Tue May 27 02:34:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): should pass the current klass value to
+ block_invoke, which may be called via "super". [ruby-core:01077]
+
+ * eval.c (block_invoke): now takes 4th argument "klass".
+
+ * eval.c (block_alloc): should propagate BLOCK_PROC to
+ ruby_block.
+
+Mon May 26 23:51:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): should not use "yield" method, use "call"
+ instead. (ruby-bugs-ja PR#476)
+
+Mon May 26 21:39:46 2003 MoonWolf <moonwolf@moonwolf.com>
+
+ * lib/mkmf.rb, lib/optparse.rb, lib/tracer.rb: use Method#to_block
+ instead of deprecated Method#to_proc. (ruby-bugs-ja:PR#477)
+
+Mon May 26 21:21:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser::Switch::parse,
+ OptionParser::order): use {Block,Proc}#call instead of deprecated
+ #yield.
+
+Mon May 26 16:39:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): Block/Proc separation. [huge change]
+
+ * eval.c (block_arity): returns exact arity number for Procs out
+ of methods. also gives 1 for {|a|..}.
+
+ * string.c (rb_str_match): revert use of String#index for
+ invocation like string =~ string.
+
+ * eval.c (rb_Array): move Object#to_a exclusion hack from
+ splat_value(). need to be in eval.c for a while.
+
+Sun May 25 23:48:21 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_quad_pack): should negate negative bignum.
+ (ruby-bugs-ja:PR#474)
+
+Sun May 25 03:27:25 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: support LOGIN authentication, based on
+ the patch by Kazuhiko Izawa. [ruby-talk:78981]
+
+Sat May 24 18:19:51 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/Makefile.sub: add eMbedded Visual C++ 4.0 support.
+
+ * wince/resource.rb: ditto.
+
+ * wince/setup.mak: ditto.
+
+ * wince/configure.bat: ditto.
+
+ * wince/mkexports.rb: delete japanese comments.
+
+Fri May 23 18:34:05 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_longjmp): get rid of reentering while debug warning.
+ (ruby-bugs-ja:PR473)
+
+Fri May 23 15:16:16 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * pack.c (pack_unpack): sign-extend if sizeof long is bigger than
+ 32. (ruby-bugs-ja:PR#472)
+
+Fri May 23 14:19:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_finalize): turn off ruby_debug flag before calling
+ at_exit procs and finalizers. (ruby-bugs-ja:PR473)
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop_core): OK to block if
+ there's no other thread. (ruby-bugs:PR#861)
+
+Thu May 22 18:07:46 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c: single- and double-quoted root-level fix.
+
+ * lib/yaml.rb (YAML::object_maker): can create object attributes (such as
+ found in Exception class)
+
+ * lib/yaml/rubytypes.rb: roundtripping of Exception and subclasses.
+
+Fri May 23 01:26:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_clone): defer copying freezing state after
+ calling initialize_copy(). [ruby-dev:20276]
+
+Thu May 22 17:12:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (run_final): use rb_thread_critical instead of DEFER_INTS.
+ [ruby-dev:20272]
+
+ * marshal.c: try to make ArgumentError and TypeError consistent.
+ [ruby-core:01068]
+
+Thu May 22 15:46:37 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_define_alloc_func): need not to disable
+ rb_call_super() for allocation functions. [ruby-core:1065]
+
+Thu May 22 06:21:33 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (rb_syck_err_handler): raise ArgumentError on
+ malformed YAML.
+
+ * lib/yaml/rubytypes.rb: String#to_yaml was missing space indicators at
+ the end of a line.
+
+Thu May 22 05:43:24 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c (syck_parser_load): root-level false was returning
+ nil.
+
+ * ext/syck/token.c: root-level transfer method bug.
+
+ * ext/syck/gram.c: root-level empty gave a parse error.
+
+ * lib/yaml/rubytypes.rb: Symbol#to_yaml generating method call error.
+
+Thu May 22 02:46:38 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): splat NODE_RESTARY. [ruby-dev:20268]
+
+ * eval.c (rb_thread_fd_close): raise for writing threads.
+ [ruby-dev:20269]
+
+ * io.c (rb_io_close, io_reopen): ditto.
+
+ * io.c (io_reopen): keep stdio objects for stdin, stdout,
+ and stderr. [ruby-dev:19442]
+
+Thu May 22 01:11:15 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (strings, word_list): must create new instance always.
+ http://yowaken.dip.jp/tdiary/20030521.html#p02
+
+ * parse.y (yylex): slight optimization.
+
+Wed May 21 23:07:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_sys_fail): should not specify errno explicitly.
+ [ruby-dev:20264]
+
+Wed May 21 20:51:47 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub,
+ wince/Makefile.sub: update dependencies.
+
+Wed May 21 17:44:16 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (syserr_initialize): prohibit specifying errno for
+ subclasses of SystemCallError. in addition, if initialize is
+ called for SystenCallError instance, its class be changed.
+ [ruby-dev:20257]
+
+ * gc.c (run_final): to protect thread context switch, finalizers
+ are wrapped in DEFER_INTS/ENABLE_INTS.
+
+Wed May 21 13:26:08 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb: get rid of warnings.
+
+Tue May 20 18:59:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_save_context): prohibit rb_gc_force_recycle()
+ on thread saved ruby_dyna_vars. [ruby-dev:20236]
+
+Tue May 20 17:39:15 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (init_copy): call initialize_copy at the end of copy
+ process.
+
+Tue May 20 17:15:55 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * error.c (syserr_initialize): use Errno constants as default
+ errno for subclasses. [ruby-dev:20241]
+
+Tue May 20 15:26:25 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * st.h: define ST_DATA_T_DEFINED for portability.
+
+ * ext/syck/syck.h: add typedef, st_data_t for Ruby 1.6.
+
+ * ext/syck/syck.c (syck_st_free_nodes): return int.
+
+ * ext/syck/syck.c (syck_add_sym): cast the data to st_data_t
+ to avoid error on bcc32.
+
+ * ext/syck/syck.c (syck_lookup_sym): ditto.
+
+ * ext/syck/syck.c (syck_free_parser): NULL is not integer.
+
+Tue May 20 13:29:04 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (kill): set errno after calling raise().
+
+Tue May 20 10:51:26 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_f_missing): create exception instance by ordinal
+ method. [ruby-dev:20033]
+
+ * error.c (rb_name_error, rb_sys_fail): ditto.
+
+ * error.c (exc_to_s, exit_status, name_err_name,
+ nometh_err_args, syserr_errno, syserr_eqq): access
+ attributes.
+
+ * error.c (name_err_initialize, nometh_err_initialize,
+ syserr_initialize): initialize attributes.
+
+Tue May 20 10:26:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): give warning for multiple values for a
+ block parameter.
+
+ * eval.c (rb_yield_values): a function to yield multiple values.
+
+ * array.c (sort_1): use rb_yield_values.
+
+ * enum.c (min_ii, max_ii): ditto.
+
+ * hash.c (rb_hash_update_block_i, delete_if_i, select_i,
+ each_pair_i, env_each, env_reject_bang, env_select,
+ env_update_i): ditto.
+
+ * struct.c (rb_struct_each_pair): ditto.
+
+ * eval.c (top_include): should include module in the current self,
+ not ruby_top_self. [ruby-dev:20198]
+
+ * eval.c (top_include): stop inclusion to ruby_wrapper; give
+ warning.
+
+Mon May 19 18:54:30 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/token.c, ext/syck/implicit.c: expanded character set to
+ allow UTF-8, other Ruby encodings.
+
+Mon May 19 16:47:00 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/syck.c, ext/syck/syck.h, ext/syck/token.c, ext/syck/gram.c:
+ count line numbers only if line pointer has increased.
+
+Tue May 20 00:45:40 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (push_braces): do not push_braces() unless rbrace is found.
+ (ruby-bugs-ja:PR#469)
+
+Tue May 20 00:09:41 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/pty/pty.c (pty_finalize_syswait): join (using Thread#value)
+ before detach pid. [ruby-talk:71519]
+
+Mon May 19 23:02:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (PUSH_FRAME): save outer ruby_block. [ruby-list:37677],
+ [ruby-dev:20202]
+
+ * eval.c (BEGIN_CALLARGS): restore outer block by using
+ ruby_block->outer.
+
+ * eval.c (block_pass): do not alter block->prev, but block->outer.
+
+ * array.c (get_inspect_tbl): warning on wrong condition.
+
+Mon May 19 16:13:57 2003 Minero Aoki <aamine@loveruby.net>
+
+ * class.c: add #include "version.h".
+
+ * hash.c: ditto.
+
+ * string.c: ditto.
+
+Mon May 19 15:33:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (localjump_xvalue): renamed exitstatus to exit_value
+ since it's not exit "status" after all.
+
+ * eval.c (localjump_error): add reason to LocalJumpError.
+
+ * compar.c (rb_cmpint): raise error via rb_cmperr(), if cmp value
+ is nil. now take new 2 arguments.
+
+ * time.c (time_cmp): 2003-05-16 fix was incomplete.
+ (ruby-bugs-ja:PR#458)
+
+Mon May 19 14:42:50 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_cmp): stupid comparison fixed.
+
+ * io.c (Init_IO): ARGF.path added (alias to ARGF.filename).
+ [ruby-dev:20197]
+
+Mon May 19 13:58:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (init_copy): rename copy_object as initialize_copy,
+ since it works as copy constructor.
+
+ * eval.c (rb_add_method): initialize_copy should always be
+ private, like initialize.
+
+Mon May 19 13:51:50 2003 Minero Aoki <aamine@loveruby.net>
+
+ * re.c (rb_reg_quote): \n \r \f \v quoting was wrong.
+ [ruby-dev:20203]
+
+ * re.c (rb_reg_quote): rb_reg_quote(" ") should be "\\ ", not
+ "\\s".
+
+Mon May 19 08:08:51 2003 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: use warn() instead of $stderr.puts().
+
+ * sample/cal.rb: ditto.
+
+Sat May 17 12:02:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (get_inspect_tbl): check whether inspect_tbl value is a
+ valid array. (ruby-bugs-ja PR#65)
+
+ * array.c (inspect_ensure,rb_protect_inspect,rb_inspecting_p):
+ use get_inspect_tbl().
+
+Sat May 17 11:50:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_abort): call exit(1) if exception is raised. This
+ patch was made by Nobuyoshi Nakada <nobu.nokada@softhome.net> on
+ 2002-05-30. (ruby-bugs-ja PR#236)
+
+ * signal.c: disable Ruby's interrupt handler at the beginning.
+ (ruby-bugs-ja PR#236)
+
+Sat May 17 02:17:42 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/rational.rb (Integer::denominator): fixed typo.
+ (ruby-bugs-ja:PR#466)
+
+Sat May 17 00:18:11 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/socket/socket.c (ruby_connect): connect() after EINPROGRESS
+ returns EINVAL on some platforms, need to check true error
+ status. [ruby-core:01037]
+
+Sat May 17 00:21:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_class_allocate_instance): singleton class check
+ moved to rb_obj_alloc(). (ruby-bugs-ja PR#345)
+
+Fri May 16 23:55:50 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_quote): should escape white space characters,
+ \t, \f, \n, \r. (ruby-bugs-ja PR#231)
+
+Fri May 16 12:40:40 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): chain previous block to the pushing block.
+ [ruby-list:37677]
+
+ * time.c (time_cmp): does not compare with numbers for
+ interchangeability. (ruby-bugs-ja:PR#458)
+
+Thu May 15 21:55:54 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/gram.c: fixes to one-line documents and end of stream
+ documents.
+
+ * ext/syck/syck.c, ext/syck/syck.h: add root_on_error to parser
+ struct, specifying the symbol to be returned on a parse error.
+
+Thu May 15 18:44:31 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI::Redirect#initialize): call super to
+ initialize mesg.
+
+ * lib/open-uri.rb (OpenURI::Meta#charset): call block to guess charset
+ if block is given and charset is not given.
+
+Thu May 15 16:55:16 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_le): returns nil if two classes/modules are not
+ in class-superclass relationship.
+
+ * object.c (rb_mod_cmp): uses new rb_mod_le() behavior.
+
+Thu May 15 07:45:30 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/rubyext.c, ext/syck/implicit.c: timestamp repairs to
+ timezone and milliseconds.
+
+ * ext/syck/syck.c (syck_parser_reset_levels): duplicate string literal
+ to avoid warning.
+
+Thu May 15 13:26:48 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_class_instance_methods): default will be changed in
+ 1.8.1.
+
+ * io.c (set_stdio): better message.
+
+Thu May 15 13:18:11 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (set_stdio): $stdin, $stdout, $stderr now became read-only.
+
+ * variable.c (readonly_setter): message changed.
+
+Thu May 15 09:50:51 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/syck/syck.c (syck_parser_pop_level): add prototype.
+
+ * ext/syck/syck.c (syck_strndup): should return value.
+
+Thu May 15 09:32:25 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (kill): fix typo and add signal 0 support.
+
+Wed May 14 20:09:26 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/gram.c: sequence-in-map shortcut, transfer methods on
+ sequence-in-sequence, memory leak in mapping merge.
+
+ * ext/syck/syck.c: memory leak in domain anchoring.
+
+ * lib/yaml/rubytypes.rb, lib/yaml/types.rb: eliminated 1.6.x code.
+
+Wed May 14 19:56:43 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/syck/rubyext.c: add prototypes to avoid VC++ warnings.
+
+Wed May 14 12:23:46 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (Net::HTTP#start): should check whether HTTP
+ session is opened before finishing. (ruby-bugs-ja:PR#463)
+
+Wed May 14 09:12:55 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: reduce warning. (ruby-bugs-ja:PR#462)
+
+Tue May 13 22:31:04 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * lib/yaml/rubytypes.rb, lib/yaml/types.rb: using Object#object_id
+ rather than deprecated Object#id.
+
+ * ext/syck/token.c: changed ASCII escapes to octal notation.
+
+ * ext/Setup*: added entries for static linking of Syck extension.
+
+Tue May 13 20:31:58 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: add '--Wl,--enable-auto-import' to DLDFLAGS
+ on Cygwin/MinGW.
+
+ * configure.in: add '-D__USE_CRTIMP' to XCFLAGS on MinGW.
+
+ * ext/syck/handler.c: add proper casts.
+
+ * ext/syck/syck.c: ditto.
+
+Tue May 13 17:58:08 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, bcc32/Makefile.sub, win32/Makefile.sub: define
+ HAVE_FSYNC.
+
+ * win32/win32.h (fsync): define as _commit().
+
+Tue May 13 15:35:35 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match_exec): \Z changed to be consistent with new $
+ (endbuf) behavior.
+
+Tue May 13 14:48:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_pos): use $deferr for output instead of stderr
+ directly.
+
+ * eval.c (error_print,error_handle,rb_longjmp,rb_thread_schedule):
+ ditto.
+
+Tue May 13 06:34:19 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * lib/yaml/rubytypes.rb: object and struct loading
+
+ * lib/yaml.rb: YAML::detect_implicit will discover typing for a Ruby
+ string
+
+ * ext/syck/: Fixed portable comments, misuse of NULL and methods without
+ return VALUEs.
+
+Mon May 12 18:08:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (Init_IO): new variable $deferr which is default output
+ port of error messages.
+
+ * io.c (rb_warn_m): new method "warn". [new]
+
+ * error.c (warn_print): use $deferr.
+
+ * error.c (rb_bug): ditto.
+
+ * error.c (err_append): ditto.
+
+Sun May 11 13:50:12 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb: refine to_s test.
+
+ * lib/pp.rb (PP::ObjectMixin#pretty_print): refine to_s handling.
+
+Sun May 11 06:32:13 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/implicit.c, ext/syck/rubyext.c: transfer methods applied to
+ native loading
+
+ * ext/syck/token.c: fix for transfer methods on same indentation as nested
+ mapping
+
+ * lib/yaml/rubytypes.rb: all type names in lowercase
+
+Sat May 10 19:55:18 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ext/syck/gram.c ext/syck/handler.c ext/syck/implicit.c
+ ext/syck/node.c ext/syck/rubyext.c ext/syck/syck.c
+ ext/syck/syck.h ext/syck/token.c: updated to Syck 0.27
+
+ * lib/yaml/loader.rb: new YAML::Loader class
+
+ * lib/yaml.rb: loading of type families leverages YAML::DefaultLoader
+
+Sat May 10 19:00:08 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/string.c: file removed.
+
+ * wince/stdlib.c: file added.
+
+Sat May 10 16:17:02 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (decode_utf7): new method.
+
+ * lib/net/imap.rb (encode_utf7): new method.
+
+Fri May 9 21:25:50 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
+
+ * ruby/ext/syck, ruby/lib/yaml: Initial checkin of YAML substances.
+
+Fri May 9 16:38:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_reopen): It should be possible to reopen closed IO.
+ [ruby-talk:70941]
+
+ * io.c (rb_io_reopen): inherit original file mode unless specified.
+
+Thu May 8 18:44:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc): check odd alignment stack on m68k machines.
+
+Thu May 8 12:56:04 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * compar.c (rb_cmperr): raise comparison failure.
+
+ * intern.h: prototype; rb_cmperr
+
+ * numeric.c (flo_gt, flo_ge, flo_lt, flo_le, fix_gt, fix_ge,
+ fix_lt, fix_le): should fail unless the argument is comparable.
+ (ruby-bugs-ja:PR#456)
+
+ * numeric.c (int_upto, int_downto): should fail unless the
+ argument is comparable. (ruby-bugs-ja:PR#454)
+
+Wed May 7 13:30:11 2003 Masahiro TANAKA <masa@ir.isas.ac.jp>
+
+ * numeric.c (num_step): better error treatment of float values.
+
+Tue May 6 17:51:54 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: rename method: POP3#mail_size -> n_mails
+
+ * lib/net/pop.rb: rename method: POP3#bytes -> n_bytes
+
+Tue May 6 17:21:01 2003 Minero Aoki <aamine@loveruby.net>
+
+ * ext/bigdecimal/.cvsignore: new file.
+
+ * ext/zlib/.cvsignore: new file.
+
+Tue May 6 14:39:36 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_methods): list singleton methods if recur
+ argument is false; list all methods otherwise.
+
+Mon May 5 21:19:25 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * ext/gdbm/gdbm.c (fgdbm_values_at): new method to replace
+ select(index..).
+
+ * ext/sdbm/init.c (fsdbm_values_at): ditto.
+
+ * ext/dbm/dbm.c (fdbm_values_at): ditto.
+
+ * ext/dbm/dbm.c (DBM::VERSION): defined.
+
+ * ext/gdbm/testgdbm.rb: replace select with values_at.
+
+ * ext/sdbm/testsdbm.rb: ditto.
+
+ * ext/dbm/testdbm.rb: ditto.
+
+ * ext/dbm/testdbm.rb (setup): DBM.open(path, 0400) cause EACCESS
+ on Berkeley DB[234].
+
+Mon May 5 22:57:07 2003 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * sample/cal.rb: use values_at instead of select.
+
+ * sample/biorhythm.rb: ditto.
+
+Mon May 5 18:59:45 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * sample/test.rb: substitute 'select' with 'values_at'.
+
+ * lib/date.rb: ditto.
+
+ * lib/parsedate.rb: ditto.
+
+Mon May 5 00:46:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_values_at): new method to replace select(index..).
+
+ * hash.c (rb_hash_values_at,env_values_at): ditto.
+
+ * re.c (match_values_at): ditto.
+
+ * struct.c (rb_struct_values_at): ditto.
+
+ * re.c (match_select): add iterator behavior.
+
+Sun May 4 19:08:53 2003 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: synchronized with date2 3.3.2.
+
+Sun May 4 15:21:18 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: ESMTP -> SMTP transition wrongly fails.
+
+Sun May 4 15:06:37 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: APOP did not work. [ruby-dev:20149]
+
+Sat May 3 21:14:29 2003 Johan Holmberg <holmberg@iar.se>
+
+ * ext/curses/curses.c, ext/digest/sha2/sha2.c, ext/iconv/iconv.c,
+ ext/racc/cparse/cparse.c: include "ruby.h" at the top to shut up
+ "_FILE_OFFSET_BITS redefined" warning on Solaris.
+
+Sat May 3 11:00:12 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_class_protected_instance_methods): now gives
+ warnings to show migration path. The default will be reversed
+ on Jan 2004.
+
+Sat May 3 00:58:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_methods): now accepts recurse parameter.
+
+ * lib/delegate.rb (Delegator::initialize): instance_methods
+ etc. now recurse by default. need to specify false.
+
+Sat May 3 00:22:00 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: reintroduce Protocol.protocol_param.
+
+ * lib/net/http.rb: ditto.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/smtp.rb: ditto.
+
+Fri May 2 23:29:53 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: remove Protocol class.
+
+ * lib/net/smtp.rb (SMTP): ditto.
+
+ * lib/net/pop.rb (POP3): ditto.
+
+ * lib/net/http.rb (HTTP): ditto.
+
+ * lib/net/protocol.rb: remove Command class.
+
+ * lib/net/smtp.rb (SMTPCommand): ditto.
+
+ * lib/net/pop.rb (POP3Command): ditto.
+
+ * lib/net/pop.rb: remove APOPCommand class.
+
+ * lib/net/protocol.rb: remove Code class and its all subclasses.
+
+ * lib/net/protocol.rb: remove Response class and its all
+ subclasses.
+
+ * lib/net/pop.rb (POPMail): new method unique_id (alias uidl).
+
+Fri May 2 18:17:37 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compar.c (cmp_gt): raises ArgumentError when "<=>" give nil.
+ inspired by discussion on comp.lang.python.
+
+Fri May 2 17:37:01 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::initialize): updated to
+ support 2003-04-23 change in cgi.rb [ruby-core:1002]
+
+Fri May 2 17:21:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (method_list): classify methods based on nearest
+ visibility. [ruby-dev:20127]
+
+ * class.c (rb_class_instance_methods): recurse by default. other
+ method listing methods as well.
+
+Fri May 2 09:38:06 2003 Warren Brown <wkb@airmail.net>
+
+ * string.c (rb_str_ljust): now takes optional argument to specify
+ pad string. [ruby-talk:70482]
+
+ * string.c (rb_str_rjust): ditto.
+
+ * string.c (rb_str_center): ditto.
+
+ * string.c (rb_str_justify): utility function.
+
+Fri May 2 04:10:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_add_method): call singleton_method_added or
+ method_added for every method definition (after ruby_running).
+ [ruby-talk:70471]
+
+ * array.c (rb_ary_reverse_bang): Array#reverse! should not return
+ nil even for arrays sized less than 2.
+
+Thu May 1 23:18:01 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_eof): should not block after reading all argument
+ files. (ruby-bugs-ja PR#449)
+
+Fri May 2 15:10:41 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: use hashes to pass options.
+
+ * lib/fileutils.rb: new option mkdir(:mode), mkdir_p(:mode).
+
+ * instruby.rb: follow fileutils.rb feature change.
+
+Thu May 1 08:24:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match_exec): $ _always_ matches at the end of string.
+
+Wed Apr 30 14:12:00 2003 wanowa.kimura@nifty.ne.jp (kimura wataru)
+
+ * net/imap.rb: support THREAD extension.
+
+Sun Apr 27 23:13:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_to_i): disallow negative radix.
+ [ruby-dev:20087]
+
+Sat Apr 26 23:34:42 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (open_args): warning message changed to "don't put space
+ before argument parentheses".
+
+Sat Apr 26 14:25:00 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/ : files removed.
+ (config, dll.mak, exe.mak, mswince-ruby17.def,
+ io.c, process.c, signal.c, string.c, time.c)
+
+ * wince/ : files added.
+ (assert.c, Makefile.sub, mkexports.rb, io_wce.c,
+ process_wce.c, signal_wce.c, string_wce.c,
+ time_wce.c)
+
+ * wince/configure.bat : like mswin32 style.
+
+ * wince/direct.c : remove "static" at _currentdir.
+
+ * wince/io.h : change definition.
+
+ * wince/stdio.c : _fdopen -> fdopen.
+
+ * wince/process.h : add _P_OVERLAY.
+
+ * wince/time.h : change definition.
+
+ * wince/wincemain.c : add wce_SetCurrentDir.
+
+ * wince/wince.c : add wce_SetCurrentDir and wce_fopen.
+ fix GetModuleFileNameA to return correct "lpFileName".
+
+ * wince/wince.h : remove #ifdef.
+
+ * wince/sys/utime.h, utime.c : rename _utime to utime.
+
+ * wince/sys/stat.c : expand relative directory in stat.
+
+Sat Apr 26 06:33:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_read): ARGF.read() should read all argument files.
+
+Fri Apr 25 18:46:00 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * gc.c: STACK_LEVEL_MAX=65535 on mswince.
+
+Fri Apr 25 18:40:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_read): read should not span two files. [ruby-dev:20073]
+
+Fri Apr 25 18:19:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (splat_value): split splat_value() and avalue_splat().
+
+ * io.c: there's no way to set non-IO value to current_file, thus
+ no need for argf_forward().
+
+Fri Apr 25 02:03:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): Proc#yield should pass through retry and
+ break like keyword yield. [ruby-talk:70034]
+
+ * eval.c (proc_invoke): orphan Proc now raises LocalJumpError for
+ break and retry again.
+
+ * eval.c (rb_eval): ARGSCAT should splat the argument.
+
+ * eval.c (splat_value): splat operation function.
+
+Thu Apr 24 23:37:02 2003 Dave Thomas <dave@thomases.com>
+
+ * lib/matrix.rb (Matrix#minor): Used Range#size, which no longer
+ exists.
+
+ * lib/complex.rb (new!): Complex.new had been made private, but
+ Kernel#Complex called it. Re-exposed as new!.
+
+ * lib/matrix.rb (Matrix.row_vector): Fix method name typo
+
+Thu Apr 24 19:40:02 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb: add -Wl,--no-undefined to LDSHARED only
+ if GNU ld is 2.11 or later.
+
+Wed Apr 23 14:05:40 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/ipaddr.rb (include?): Support non-IPAddr parameters.
+ [ruby-core:00980]
+
+Wed Apr 23 13:31:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::[]): always return Value
+ object.
+
+Wed Apr 23 08:39:27 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/zlib/extconf.rb: bccwin32 is win32 too.
+
+Tue Apr 22 20:58:00 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * ruby.c: don't call VirtualQuery in ruby_init_loadpath()
+ on mswince.
+
+Tue Apr 22 19:08:53 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (save_mantissa, load_mantissa): for interoperability
+ should count cut-down bit from topmost.
+
+Tue Apr 22 09:20:40 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg_ambiguous): hopefully better message.
+
+ * lib/cgi.rb (CGI::QueryExtension::initialize_query): to_ary
+ removed.
+
+Tue Apr 22 06:06:22 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Resource#hash): use XOR to accumulate
+ hash value.
+
+ * lib/tsort.rb (TSort#each_strongly_connected_component): don't use
+ block argument.
+ (each_strongly_connected_component_from): ditto.
+
+Mon Apr 21 21:59:48 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c: one more digit for decimal point. [ruby-talk:69808]
+
+Mon Apr 21 21:25:59 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * numeric.c (flo_is_finite_p): use finite() if available.
+
+ * win32/win32.h (isinf, isnan): define as macro.
+ [ruby-win32:00533]
+
+ * bcc32/Makefile.sub, win32/Makefile.sub: no longer use
+ missing/isinf.c, missing/isnan.c.
+
+Mon Apr 21 18:36:28 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_cstr_to_inum): unnecessarily long buffer was used
+ for radix 9. [ruby-dev:20057]
+
+Mon Apr 21 17:44:34 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (block_append, value_expr0, assign_in_cond,
+ warn_unless_e_option, warning_unless_e_option, range_op,
+ cond0): adjust line number in warning.
+
+Mon Apr 21 00:47:42 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * sample/test.rb: avoid the MSVCRT *printf problem(float).
+ [ruby-dev:20037]
+
+Mon Apr 21 00:11:15 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (w_float): append least mantissa bits to get rid
+ of roundoff problem. [ruby-talk:69518]
+
+ * marshal.c (r_object0): load least mantissa bits.
+
+Sun Apr 20 23:24:25 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (NtInitialize): set the floating-point control word
+ on bcc32.
+
+ * win32/win32.h, bcc32/Makefile.sub: use missing/isinf.c, should not
+ use _finite() because it returns 0 if NaN.
+
+Sun Apr 20 03:09:30 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * parse.y (void_expr0): node might become NULL after calling
+ remove_begin().
+
+Sat Apr 19 21:55:10 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Setup*: Add zlib and remove bogus and obsolete entries.
+
+Sat Apr 19 14:47:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc): use rb_gc_mark_maybe() to mark registered C
+ addresses. C variables may not hold valid reference to Ruby
+ objects. [ruby-core:00975]
+
+Sat Apr 19 00:56:13 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_eql): should compare values with "eql?".
+
+Fri Apr 18 23:29:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_check): <=> returns nil for invalid values;
+ should check.
+
+Fri Apr 18 15:26:50 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c (rb_raise): workaround for some implementations of
+ vsnprintf.
+
+Fri Apr 18 02:23:42 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should not set RE_OPTIMIZE_ANCHOR,
+ if anychar_repeat is enclosed by parentheses.
+
+Fri Apr 18 01:49:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * util.c (ruby_strtod): improved conversion accuracy.
+
+Thu Apr 17 14:39:23 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dbm/dbm.c (each_pair): add prototype to avoid VC++ warnings.
+
+ * ext/readline/readline.c (Init_readline): follow readline 4.2
+ prototype.
+
+Thu Apr 17 14:22:36 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (cond0): warn only range literals whose both side are
+ literals. [ruby-core:00964]
+
+Thu Apr 17 11:10:59 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/readline/readline.c: add the defined operator for bcc32.
+
+Wed Apr 16 00:14:06 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-special-char-p): should test at the
+ point if no argument. fixed by Michael Scholz
+ <scholz-micha@gmx.de>.
+
+Tue Apr 15 19:35:08 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: rm_r should raise Errno::ENOENT if file
+ does not exist ([ruby-core:958]). Thanks Johan Holmberg.
+
+Tue Apr 15 19:12:21 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * struct.c (rb_struct_hash): new methods Struct#hash, Struct#eql?.
+ (ruby-bugs:PR#758)
+
+Tue Apr 15 16:05:11 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * numeric.c (rb_fix2str): buffer was insufficient.
+ (ruby-bugs-ja:PR#431)
+
+Mon Apr 14 19:45:56 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): root must follow buf when
+ reallocated. [ruby-talk:69339], [ruby-dev:20025]
+
+Mon Apr 14 03:22:33 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rubyio.h (struct OpenFile): add noraise flag to finalizer.
+
+ * io.c (Init_IO): define $/, $-0, and $\ as string-only
+ variables.
+
+ * string.c (rb_str_split_m): does not generate empty string if
+ the receiver is empty.
+
+ * io.c (fptr_finalize): should raise error on EBADF for readable
+ IOs as well.
+
+Mon Apr 14 15:54:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_cstr_to_inum, rb_big2str): allow 2-36 as radix.
+
+ * numeric.c (rb_fix2str): ditto.
+
+ * string.c (rb_str_to_i): ditto.
+
+Sun Apr 13 03:20:31 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (try_func): remove COMMON_HEADERS at first for
+ performance.
+
+Sat Apr 12 20:59:40 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-beginning-of-arg): substitute
+ ruby-backward-arg.
+
+ * misc/ruby-mode.el (ruby-calculate-indent): fixed wrong
+ indentation in brace block and parentheses.
+
+ * misc/ruby-mode.el (ruby-forward-sexp, ruby-backward-sexp):
+ support special char literal, and negative arguments.
+
+Sat Apr 12 17:52:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat): use rb_check_convert_type() to retrieve IO.
+
+Fri Apr 11 19:00:14 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_stat): check arguments. [ruby-dev:20007]
+ [ruby-win32:535]
+
+Fri Apr 11 15:56:08 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * numeric.c (coerce_rescue): prevent inspected String from GC.
+
+ * numeric.c (flo_eq, rb_dbl_cmp, flo_gt, flo_ge, flo_lt, flo_le,
+ flo_eql): correct NaN comparison. (ruby-bugs:PR#744)
+
+ * sample/test.rb: NaN comparison test.
+
+Fri Apr 11 14:48:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat): dereference using StringValuePtr().
+
+ * file.c (rb_file_s_stat): use rb_stat(). [ruby-dev:20007]
+
+Fri Apr 11 10:51:08 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/benchmark.rb (Benchmark::bm): get rid of warning.
+ [ruby-talk:69124]
+
+Fri Apr 11 02:41:35 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (set_stdin): assigned value must respond to "read" and
+ "getc".
+
+ * io.c (set_outfile): assigned value must respond to "write".
+ (ruby-bugs-ja:PR#425)
+
+Thu Apr 10 21:12:19 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: Exception line was accidentaly removed.
+ [ruby-dev:19989]
+
+Thu Apr 10 18:42:13 2003 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * array.c (rb_ary_times): added some checks for request size.
+
+Thu Apr 10 03:22:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_name): always return empty string for
+ anonymous class/module. (ruby-bugs-ja PR#424)
+
+ * config.sub: stop forcing addition of -gnu to -linux.
+
+ * variable.c (classname): refactoring.
+
+ * variable.c (rb_class_path): __tmp__classpath__ handling moved
+ from classname().
+
+Thu Apr 10 01:52:24 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_obj_is_method): indefinite return value.
+
+Thu Apr 10 00:39:32 2003 Tanaka Akira <akr@m17n.org>
+
+ * regex.c (re_compile_pattern): /[\--\-]/ was warned. warn /]/.
+
+ * mkconfig.rb: escape `]' in regexp.
+
+Thu Apr 10 00:27:07 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * time.c (time_strftime): RSTRING(format)->ptr might become NULL.
+
+Wed Apr 9 23:54:50 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_obj_remove_instance_variable): better message.
+ [ruby-talk:68987]
+
+ * variable.c (rb_mod_remove_const): ditto.
+
+ * object.c (rb_obj_ivar_get): ditto.
+
+ * object.c (rb_obj_ivar_set): ditto.
+
+ * parse.y (yylex): ditto.
+
+Wed Apr 9 21:51:20 2003 Dave Thomas <Dave@Thomases.com>
+
+ * eval.c (rb_mod_define_method): Allow UnboundMethod as
+ parameter.
+
+Wed Apr 9 18:30:58 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (top_include): include module to wrapper module if
+ wrapper is present. experimental. [ruby-list:37539]
+
+Wed Apr 9 17:24:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_mark_children): introduce this function again; this
+ is required when stack was very tight. [ruby-talk:68916]
+
+Wed Apr 9 15:49:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivmod): small typo.
+
+Wed Apr 9 15:35:04 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/readline/readline.c: include <unistd.h> only when
+ HAVE_UNISTD_H is defined.
+
+Wed Apr 9 14:05:00 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (w_object): preserve extended module on struct.
+ (ruby-bugs-ja:PR#422)
+
+Wed Apr 9 03:43:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (BIGZEROP): macro to determine if x is a bignum zero.
+
+Tue Apr 8 11:49:31 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): make Method and UnboundMethod independent.
+ They are like instance and its class. [ruby-core:00941]
+
+ * parse.y (yylex): disallow global variables like "$1ve".
+ [ruby-core:00945]
+
+ * marshal.c (marshal_dump): Marshal.dump(0, false) should cause an
+ error. (ruby-bugs-ja PR#421)
+
+ * regex.c (re_compile_pattern): warn if '-' is the edge of
+ character range.
+
+Mon Apr 7 15:49:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_unpack_sockaddr_in): remove struct
+ size check. getnameinfo(3) can handle. [ruby-dev:19967]
+
+Mon Apr 7 01:33:31 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_read): do not call rb_sys_fail() when required data
+ length is zero. (ruby-bugs-ja PR#420)
+
+ * eval.c (umethod_proc): should raise TypeError, instead of
+ returning error causing Proc. Following the principle of "fail
+ early". [ruby-core:00927]
+
+Sun Apr 6 18:29:21 2003 UENO Katsuhiro <katsu@blue.sky.or.jp>
+
+ * ext/zlib/zlib.c: the return value of GzipReader#getc must be
+ unsigned.
+
+Sun Apr 6 00:35:37 2003 Tanaka Akira <akr@m17n.org>
+
+ * sample/exyacc.rb: use Regexp in gsub!.
+
+Sat Apr 5 23:41:28 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): small but serious typo.
+
+Sat Apr 5 04:23:05 2003 Warren Brown <wkb@airmail.net>
+
+ * sprintf.c (rb_f_sprintf): was decrementing width even if there
+ is no sign character.
+
+Sat Apr 5 01:41:28 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (backtrace): skip internal allocator frame.
+ (ruby-bugs-ja PR#416)
+
+Fri Apr 4 10:53:22 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (assign): should prepare mrhs by svalue_to_mrhs().
+
+Wed Apr 2 15:11:23 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * README.EXT, README.EXT.ja (3.3): clarified -1 as free for
+ Data_Wrap_Struct(). [ruby-dev:19881]
+
+Mon Mar 31 11:11:36 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_missing): use "inspect" for T_OBJECT as well.
+
+Mon Mar 31 10:50:48 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_reject_bang): untaint key string.
+
+ * hash.c (env_delete_m): execute block only if deleting key does
+ not exist.
+
+Sat Mar 29 17:54:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): do not call rb_str_buf_cat() with NULL ptr,
+ which causes SEGV; jump to grow instead. [ruby-dev:19944]
+
+Sat Mar 29 15:19:48 2003 Tanaka Akira <akr@m17n.org>
+
+ * instruby.rb, ext/extmk.rb, lib/benchmark.rb, lib/cgi.rb,
+ lib/debug.rb, lib/getoptlong.rb, lib/optparse.rb, lib/time.rb,
+ lib/date/format.rb, lib/irb/ruby-lex.rb lib/uri/common.rb: revert
+ escape for `-' in character class.
+
+Sat Mar 29 09:48:35 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (avalue_to_svalue): use rb_check_array_type() again.
+ Clarify how "to_ary" and "to_a" work. [ruby-talk:68155]
+
+ * eval.c (svalue_to_avalue): ditto.
+
+ * eval.c (svalue_to_mrhs): ditto.
+
+ * eval.c (rb_eval): unary splat to use to_a, but we need a hack to
+ exclude Object#to_a until it's removed.
+
+ * object.c (rb_Array): check obj.respond_to?("to_a"). Currently
+ all object respond_to "to_a", but Object#to_a will be removed.
+
+ * range.c (Init_Range): undefine to_ary.
+
+ * re.c (Init_Regexp): ditto.
+
+Sat Mar 29 09:47:52 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * MANIFEST (ext/aix_mksym.rb): remove obsolete file.
+
+Fri Mar 29 06:21:24 2003 UENO Katsuhiro <katsu@blue.sky.or.jp>
+
+ * ext/zlib: merge from rough.
+
+Fri Mar 28 19:33:39 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * variable.c (rb_class_path): hold temporary class path in a
+ instance variable to get rid of GC. [ruby-dev:19932]
+
+ * variable.c (classname): remove temporary class path when exact
+ name found.
+
+Fri Mar 28 18:29:23 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): do not warn if "-" is at the top
+ or last of character class.
+
+Thu Mar 27 12:10:15 2003 Tanaka Akira <akr@m17n.org>
+
+ * regex.c (re_compile_pattern): fix [:name:] handling.
+ /[\[:digit:]]/ was treated as /[[:digit:]]/.
+ /[[:-@]/ was treated as /[\[:\-@]/.
+ /[%-[:digit:]]/ was treated as /[%-\[:digit:]\]/.
+
+Thu Mar 27 03:26:40 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_capitalize_bang): check length before upcase
+ first character. (ruby-bugs:PR#697)
+
+Wed Mar 26 20:25:10 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dln.c (dln_find_1): break if path list end, even for too long
+ path names. (ruby-bugs-ja:PR#412)
+
+Wed Mar 26 13:19:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (avalue_splat): new function to do unary * (splat)
+ operator.
+
+ * eval.c (avalue_to_svalue,svalue_to_avalue,svalue_to_mrhs): do
+ not use implicit "to_ary" conversion.
+
+ * ext/curses/curses.c (GetWINDOW,GetMOUSE): add taint check.
+
+ * ext/curses/curses.c (curses_init_screen): ditto.
+
+ * ext/curses/curses.c (window_initialize): ditto.
+
+ * gc.c (os_each_obj): prohibit ObjectSpace#each_object in safe
+ mode ($SAFE >= 4).
+
+Tue Mar 25 23:26:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (trap): return "DEFAULT" and "IGNORE" respectively for
+ previous sighandler SIG_DFL and SIG_IGN. [ruby-talk:67860]
+
+Tue Mar 25 12:24:15 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): call avalue_to_mrhs() to assign block
+ parameter |a|. [ruby-dev:19897]
+
+ * ruby.c (ruby_set_argv): freeze argument strings.
+
+Tue Mar 25 12:01:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_initialize): should check rb_secure(4).
+
+ * dir.c (dir_s_getwd): should check rb_secure(4).
+
+ * object.c (rb_obj_infect): function version of OBJ_INFECT().
+
+ * eval.c (rb_secure_update): new function to check object update.
+
+Tue Mar 25 10:18:05 2003 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: should infect also return values of
+ #inspect.
+
+ * ext/strscan/strscan.c: use snprintf() instead of sprintf().
+
+Mon Mar 24 16:55:04 2003 Takaaki Tateishi <ttate@ttsky.net>
+
+ * ext/dl/dl.c: added rb_secure(4). (Thanks to Minero Aoki)
+
+ * ext/dl/sym.c: ditto.
+
+ * ext/dl/ptr.c: ditto.
+
+Mon Mar 24 00:09:02 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (block_append): warn unused literal.
+
+Sun Mar 23 22:22:04 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/jcode.rb (tr!, delete!, szueeze!): add empty string checking.
+
+Sun Mar 23 19:54:53 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): use free() if dfree is -1.
+
+Sat Mar 22 15:50:29 2003 Tanaka Akira <akr@m17n.org>
+
+ * time.c (make_time_t): try search_time_t if mktime/timegm is failed.
+
+Sat Mar 22 13:26:33 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/optparse.rb, lib/jcode.rb, ext/tk/lib/tk.rb: reorder character
+ class /[\]\[]/ to /[\[\]]/ for readability.
+
+Sat Mar 22 12:44:15 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/date/format.rb, lib/uri/common.rb: escape `[', `]', `-' in
+ character class in regexp to avoid warning.
+
+Sat Mar 22 07:39:32 2003 Ulf Betlehem <flu@iki.fi>
+
+ * io.c (rb_io_fread): may lose data on nonblocking read.
+
+Fri Mar 21 23:40:41 2003 Tanaka Akira <akr@m17n.org>
+
+ * regex.c (re_compile_pattern): fix previous change.
+
+ * instruby.rb, ext/extmk.rb, ext/tk/lib/tk.rb, lib/benchmark.rb,
+ lib/cgi.rb, lib/debug.rb, lib/getoptlong.rb, lib/jcode.rb,
+ lib/optparse.rb, lib/time.rb, lib/date/format.rb,
+ lib/irb/ruby-lex.rb: escape `[', `]', `-' in character class in
+ regexp to avoid warning.
+
+Fri Mar 21 23:23:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): give warning for unescaped square
+ brackets and minus in character class. [ruby-dev:19868]
+
+Fri Mar 21 18:12:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (bmcall): missing type.
+
+Fri Mar 21 01:29:35 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): copy sign bits only if value is
+ negative.
+
+ * missing.h: include <stdarg.h> or <varargs.h> if HAVE_VSNPRINTF
+ is not defined.
+
+Thu Mar 20 18:31:37 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser#order!): follow recent change
+ of proc argument.
+
+Thu Mar 20 16:12:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_to_s): change format specifier to "%.15g" to
+ avoid unnecessary 9s (e.g. 99.59999999999999). (ruby-bugs-ja PR#406)
+
+Thu Mar 20 16:03:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (stmt, primary): get rid of SEGV at empty or invalid
+ condition. (ruby-bugs-ja:PR#410)
+
+ * parse.y (cond_negative): negate condition node when NODE_NOT.
+
+Thu Mar 20 10:45:29 2003 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (bmcall): add volatile to avoid GC problem.
+
+Thu Mar 20 10:10:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (load_dyna): clear ruby_errinfo. (ruby-bugs-ja PR#409)
+
+Wed Mar 19 23:05:30 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/tracer.rb (trace_func): save and recover Thread.critical state.
+ Fixed by Fukumoto Atsushi <fukumoto@imasy.or.jp> [ruby-dev:19830]
+
+Wed Mar 19 02:55:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): make str empty if given. (ruby-bugs-ja PR#408)
+
+ * io.c (io_read): ditto.
+
+ * io.c (rb_io_sysread): ditto.
+
+Tue Mar 18 18:24:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c: do not override min and max.
+
+Sun Mar 16 12:29:55 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (object_address_group): use to_s instead of name
+ to get name of class.
+
+Fri Mar 14 08:53:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (remove_sign_bits): octal left most digit for negative
+ numbers may be '3'. (ruby-bugs-ja PR#407)
+
+ * sprintf.c (rb_f_sprintf): should prefix sign bits if bignum is
+ negative, using sign_bits().
+
+Wed Mar 12 16:48:19 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (prep_stdio): set binmode only if the file descriptor
+ is not connected to a terminal on Cygwin.
+
+Wed Mar 12 11:23:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (avalue_to_mrhs): split argument passing and assignment
+ conversion.
+
+ * eval.c (svalue_to_mrhs): ditto.
+
+ * eval.c (avalue_to_svalue): avalue_to_svalue([[1,2]]) should be
+ [[1,2]], not [1,2] to wrap-around.
+
+Tue Mar 11 21:00:59 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: Digest string wrongly included '\n' when user
+ name is too long (ruby-bugs-ja:PR#404).
+
+Tue Mar 11 20:07:01 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: speeding up by avoiding extra flush.
+ (suggested by Brian Candler <B.Candler@pobox.com> [ruby-talk:66516])
+
+Tue Mar 11 04:30:12 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (massign): remove unnecessary array unpacking; it should
+ be handled before massign() by svalue_to_mrhs().
+
+ * eval.c (svalue_to_mrhs): '*a = v' value conversion to avalue
+ (i.e. [1] => [[1]], [1,2] => [1,2]).
+
+ * eval.c (rb_eval): use svalue_to_mrhs.
+
+ * eval.c (rb_yield_0): ditto.
+
+ * eval.c (proc_invoke): break from "Proc#yield" is legal.
+
+Mon Mar 10 23:19:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_find_file): need world writable directory check for
+ relative paths too.
+
+Mon Mar 10 11:23:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_find_file): world writable directory check if
+ $SAFE >= 1 (was $SAFE >= 2).
+
+Mon Mar 10 01:59:47 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: do not dispatch LIST when a mailbox is empty.
+
+ * lib/net/pop.rb: merge the 'STAT' patch from Frank S.Fejes
+ <frank@oopdreams.com>, with modifications (listed below).
+
+ * lib/net/pop.rb: new method Net::POP#mail_size.
+
+ * lib/net/pop.rb: new method Net::POP#bytes.
+
+ * lib/net/pop.rb: new method Net::POPCommand#stat.
+
+Sun Mar 9 19:30:25 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (mkdir, mkdir_p): revert.
+
+ * instruby.rb (umask): umask 0022, not 0.
+
+Sun Mar 9 17:09:40 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (mkdir, mkdir_p): set mode to 0755.
+
+ * Makefile.in (fake.rb): set ALT_SEPARATOR to the default value.
+
+Sat Mar 8 11:30:59 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (massign): fix a bug not to expand in assignment to sole
+ lhs. [ruby-dev:19766]
+
+Fri Mar 7 21:57:25 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (Kernel.pp): module function.
+ (MatchData#pretty_print): new method.
+
+Fri Mar 7 20:27:19 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/tcltklib/extconf.rb (find_tcl, find_tk): return true if
+ non-versioned found. [ruby-dev:19759]
+
+Fri Mar 7 15:05:35 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dbm/extconf.rb: add QDBM support.
+
+Fri Mar 7 12:59:39 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (massign): deal with sole lhs, assign rest args from
+ converted array. [ruby-dev:19751]
+
+Fri Mar 7 03:31:36 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (dsym): :"symbol string" style should not contain `\0'.
+
+ * process.c (proc_detach): new method Process.detach(pid) which
+ create background watcher thread to issue waitpid. [new]
+
+ * process.c (rb_detach_process): utility function to detach
+ process from C code.
+
+ * ext/pty/pty.c (pty_finalize_syswait): terminate watcher thread,
+ and detach child process (by creating new idle waitpid watcher
+ thread).
+
+ * ext/pty/pty.c (pty_syswait): may lost signal stopped child.
+
+Fri Mar 7 00:30:33 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/Win32API/Win32API.c: no longer use inline-asms.
+
+ * ext/Win32API/extconf.rb: no need to add gcc options.
+
+Thu Mar 6 13:02:10 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (reswords): fix reswords list.
+
+Wed Mar 5 12:13:21 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: better YACC support on HP-UX.
+
+Wed Mar 5 05:55:20 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cat): remove ptr NULL check and MEMZERO(). ptr
+ must be non NULL.
+
+Tue Mar 4 23:12:07 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in, bcc32/Makefile.sub, win32/Makefile.sub: define
+ RUBY_EXPORT to export symbols.
+
+ * defines.h: use RUBY_EXTERN instead of EXTERN.
+
+ * intern.h, re.h, ruby.h, rubysig.h: ditto.
+
+ * win32/win32.h: remove EXTERN definition.
+
+Tue Mar 4 17:54:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_aref): raise TypeError if index is a symbol.
+ [ruby-list:37217]
+
+ * array.c (rb_ary_aset): ditto.
+
+Tue Nov 13 14:39:11 2001 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * missing/strftime.c: HP-UX support.
+
+Tue Mar 4 15:08:08 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: better HP-UX support.
+
+ * missing/strftime.c: ditto.
+
+Tue Mar 4 10:11:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_popen): do not call rb_io_close() directly, call
+ "close" method instead. [ruby-dev:19717]
+
+ * io.c (rb_io_s_open): ditto.
+
+ * hash.c (rb_any_hash): remove DEFER_INTS. all do_hash() calls in
+ st.c are at the top of functions. No reentrant problem.
+
+Tue Mar 4 01:19:21 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dl/MANIFEST: Exclude .cvsignore. [found by: eban]
+
+Tue Mar 4 01:17:08 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Win32API/MANIFEST: Belatedly add lib/win32/registry.rb.
+ [found by: eban]
+
+Tue Mar 4 00:33:04 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * MANIFEST: Belatedly add Test::Unit files. D'oh!
+
+Sun Mar 2 09:51:47 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (w_nbyte): should output always via rb_io_write().
+
+ * marshal.c (dump_ensure): ditto.
+
+ * marshal.c (marshal_dump): should call "binmode" method, if it
+ responds to.
+
+ * marshal.c (r_byte): should input always via "getc" method.
+
+ * marshal.c (r_bytes0): should input always via "read" method.
+
+ * marshal.c (marshal_load): need not to set up FILE* fp;
+
+Mon Mar 3 11:29:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): parse 'lhs = a rescue b' as 'lhs=(a rescue b)'.
+
+Mon Mar 3 02:53:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fread): should not clearerr() if there's no filled
+ buffer (i.e. rb_io_fread() returning zero).
+
+Mon Mar 3 01:42:35 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-expr-beg): escaped char syntax.
+
+ * misc/ruby-mode.el (ruby-parse-partial): ditto.
+
+ * misc/ruby-mode.el (ruby-parse-partial): no deep indent for
+ block.
+
+ * misc/ruby-mode.el (ruby-backward-arg): skip arguments backward.
+
+ * misc/ruby-mode.el (ruby-calculate-indent): too deep indentation.
+
+Fri Feb 28 23:50:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (map_errno): map OS error to errno. [new]
+
+ * win32/win32.c (pipe_exec, CreateChild, poll_child_status, waitpid,
+ kill, link, rb_w32_rename, unixtime_to_filetime, rb_w32_utime): use
+ map_errno() instead of using GetLastError() directly.
+
+ * win32/win32.c (rb_w32_select, rb_w32_accept, rb_w32_bind,
+ rb_w32_connect, rb_w32_getpeername, rb_w32_getsockname,
+ rb_w32_getsockopt, rb_w32_ioctlsocket, rb_w32_listen, rb_w32_recv,
+ rb_w32_recvfrom, rb_w32_send, rb_w32_sendto, rb_w32_setsockopt,
+ rb_w32_shutdown, rb_w32_socket, rb_w32_gethostbyaddr,
+ rb_w32_gethostbyname, rb_w32_gethostname, rb_w32_getprotobyname,
+ rb_w32_getprotobynumber, rb_w32_getservbyname, rb_w32_getservbyport,
+ rb_w32_fclose, rb_w32_close): map winsock error to errno.
+
+Fri Feb 28 22:54:10 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (flock): supports larger files, and maps error
+ code.
+
+ * win32/win32.c (rb_w32_asynchronize): returns errno from child
+ thread.
+
+ * win32/win32.c (rb_w32_fclose, rb_w32_close): ensures unlocked.
+
+Wed Feb 26 17:38:16 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: replace Kernel.open as well.
+
+Tue Feb 25 23:03:08 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/debug.rb (DEBUGGER__::Context#debug_command): bp filename must
+ be the basename of it. [ruby-talk:65644]
+
+Mon Feb 24 17:49:35 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (yycompile): zero clear ruby_eval_tree_begin if
+ compilation failed.
+
+Mon Feb 24 08:06:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_new): need no MEMZERO().
+
+Sun Feb 23 17:57:06 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils (fu_stream_blksize): wrong logical condition.
+ (and -> or).
+
+Sat Feb 22 03:12:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_gt): use rb_num_coerce_cmp() instead of
+ rb_num_coerce_bin.
+
+ * numeric.c (fix_ge, fix_lt, fix_le): ditto.
+
+ * numeric.c (flo_gt, flo_ge, flo_lt, flo_le): ditto.
+
+Sat Feb 22 02:45:20 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_create): may called from place higher than
+ rb_gc_stack_start.
+
+ * gc.c (Init_stack): update rb_gc_stack_start if it is lower (or
+ higher if stack grows down) than the previous value.
+
+Fri Feb 21 21:03:41 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: new method FileUtils#copy_stream.
+
+ * lib/fileutils.rb: new method FileUtils#compare_file.
+
+ * lib/fileutils.rb: new method FileUtils#compare_stream.
+
+ * lib/fileutils.rb: new method FileUtils#rmtree (alias of rm_rf).
+
+Fri Feb 21 17:19:27 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (rb_f_require): do not need to abort if a DLEXT file
+ is not found.
+
+Fri Feb 21 13:39:25 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cmp_m): should use LONG2NUM().
+
+Fri Feb 21 12:45:50 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cmp_m): two small bugs fixed.
+
+Fri Feb 21 08:03:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_mark): inline rb_gc_mark_children().
+
+ * gc.c (gc_sweep): new tactics to increase malloc_limit mildly.
+
+Fri Feb 21 05:16:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cmp_m): return nil if str2 does not respond to
+ both "to_str" and "<=>".
+
+ * compar.c (cmp_gt): return nil if "<=>" returns nil (means
+ incomparable).
+
+ * compar.c (cmp_ge, cmp_lt, cmp_le): ditto.
+
+ * compar.c (cmp_between): use RTEST(), since cmp_lt and cmp_gt may
+ return nil.
+
+Thu Feb 20 19:05:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): main thread swapped by fork() may
+ terminate rb_thread_start_0() successfully. call ruby_stop(0);
+ this change was suggested by Rudi Cilibrasi
+ <cilibrar@drachma.ugcs.caltech.edu>.
+
+Thu Feb 20 18:44:51 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): fix wrong behavior for root file.
+ expand_path("..", "//machine/share") => "//machine/share"
+ expand_path("..", "c:/a") => "c:/"
+ expand_path("..", "/a") => "/"
+
+Thu Feb 20 18:11:01 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): should not upward beyond share name.
+
+Thu Feb 20 15:45:33 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * missing.h (strtoul): fix prototype of strtoul.
+
+Thu Feb 20 10:11:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (clhs): allow "Foo::Bar = x".
+
+Thu Feb 20 04:07:06 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (primary): "self[n]=x" can be legal even when "[]=" is
+ private. changes submitted in [ruby-talk:63982]
+
+ * parse.y (aryset): ditto.
+
+ * parse.y (attrset): "self.foo=x" can be legal even when "foo="
+ is private.
+
+ * eval.c (is_defined): private "[]=" and "foo=" support.
+
+ * eval.c (rb_eval, assign): ditto.
+
+Thu Feb 20 03:58:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): "foo=" should not always be public.
+
+Thu Feb 20 01:23:59 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_restore_context): inhibit interrupts in
+ critical section while context switching. [ruby-talk:64785]
+
+Wed Feb 19 18:27:42 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * node.h (nd_cpath): nested class/module declaration.
+ [EXPERIMENTAL]
+
+ * eval.c (rb_eval): ditto.
+
+ * gc.c (rb_gc_mark_children): ditto.
+
+ * parse.y (cpath): ditto.
+
+Tue Feb 18 21:39:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): should not report uninitialized warning by
+ attribute reader method.
+
+ * variable.c (rb_attr_get): new function to get instance variable
+ without uninitialized warning.
+
+ * io.c (argf_to_io): should prefetch argv.
+
+Tue Feb 18 00:13:50 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-comment-column): customize comment
+ column. [new]
+
+ * misc/ruby-mode.el (ruby-deep-indent-paren): deep indentation
+ parentheses. [new]
+
+ * misc/ruby-mode.el (ruby-expr-beg): fix for / after $?.
+
+ * misc/ruby-mode.el (ruby-parse-partial, ruby-calculate-indent):
+ deep indentation support.
+
+ * misc/ruby-mode.el (ruby-forward-sexp, ruby-backward-sexp):
+ move forward/backward across one balanced expression. [new]
+
+ * misc/ruby-mode.el (ruby-indent-exp): indent balanced
+ expression. [new]
+
+ * misc/ruby-mode.el (ruby-electric-brace): indent before
+ show matching parenthesis. (contributed by NABEYA Kenichi)
+
+Mon Feb 17 14:36:56 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_opendir, rb_w32_utime): need parens.
+
+Mon Feb 17 14:13:25 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (link): implement with CreateHardLink().
+
+ * win32/win32.c, win32/win32.h (rb_w32_utime): enable utime() to
+ directory if on NT. [new] (ruby-bugs-ja:PR#393)
+
+Mon Feb 17 13:28:51 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): strip last slash when path is
+ root.
+
+Sun Feb 16 19:22:31 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): buffer might be reallocated while
+ expanding default directory.
+
+ * file.c (file_expand_path): default directory was being
+ ignored if path was full path with no drive letter, under
+ DOSISH.
+
+Sun Feb 16 03:14:33 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (prep_stdio, Init_io): always set binmode on Cygwin.
+
+Sat Feb 15 01:01:45 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (file_expand_path): fix surplus path separators while
+ expanding at root directory. [ruby-dev:19572]
+
+Fri Feb 14 14:25:24 2003 akira yamada <akira@arika.org>
+
+ * lib/uri/generic.rb, lib/uri/ldap.rb, lib/uri/mailto.ldap: all foo=()
+ returns arguments passed by caller.
+
+ * lib/uri/generic.rb (Generic#to_str, Generic#to_s): removed to_str.
+ Suggested by Tanaka Akira <akr@m17n.org> at [ruby-dev:19475].
+
+ * lib/uri/generic.rb (Generic#==): should not generate an URI object
+ from argument. Suggested by Tanaka Akira <akr@m17n.org> at
+ [ruby-dev:19475].
+
+Thu Feb 13 11:54:50 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.c (ruby_init_loadpath): ensures buffer terminated
+ before use strncpy().
+
+ * ruby.c (proc_options): avoid SEGV at -S with no arguments.
+ script argument is in effect only when -e is not given.
+ (ruby-bugs-ja:PR#391)
+
+Thu Feb 13 01:30:10 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_schedule): current thread may be dead when
+ deadlock. (ruby-bugs:PR#588)
+
+Thu Feb 13 00:28:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): step might be float 0 < x < 1.
+
+ * eval.c (rb_thread_schedule): pause if no runnable thread when
+ there's only one thread.
+
+Thu Feb 13 00:09:47 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (strrdirsep): ignore trailing directory separators.
+
+ * file.c (rb_file_s_expand_path): File.expand_path(".","/") should
+ return "/". (ruby-bugs-ja:PR#389)
+
+ * file.c (rb_file_s_basename): also ignore trailing directory
+ separators, in compliance with SUSv3. (ruby-bugs-ja:PR#390)
+
+ * file.c (rb_file_s_dirname, rb_file_s_extname): ditto.
+
+ * file.c (rb_file_s_dirname): append "." if drive only.
+
+ * file.c (rb_file_s_split): get rid of converting twice.
+
+Mon Feb 10 20:55:15 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (parse_args): add '-n' to $mflags BEFORE "--".
+ do not add DESTDIR if already included in $mflags.
+
+Mon Feb 10 19:54:30 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (FileUtils#uptodate?): use mtime for
+ comparison.
+
+Mon Feb 10 10:14:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_to_a): return value should be an Array if the
+ receiver is an instance of subclass of Array.
+
+ * string.c (rb_str_to_s): return value should be a String if the
+ receiver is an instance of subclass of String.
+
+Mon Feb 10 03:33:42 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (rb_file_sysopen): rb_file_sysopen_internal() needs four
+ arguments.
+
+Sun Feb 9 15:16:04 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * intern.h (HAVE_RB_DEFINE_ALLOC_FUNC, RB_CVAR_SET_4ARGS):
+ define to 1.
+
+ * ruby.h (NORETURN_STYLE_NEW): ditto.
+
+Sun Feb 9 12:28:18 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (init_mkmf): add libdir to LIBPATH unless cross
+ compiling.
+
+Sun Feb 9 08:34:45 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: 4xx raises Net::ProtoServerError, 5xx raises
+ Net::ProtoFatalError (for backward compatibility).
+
+Sun Feb 9 07:07:26 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: new method FileUtils.pwd (really).
+
+ * lib/fileutils.rb: FileUtils.pwd, cmp, identical?, uptodate? does
+ not accept any option.
+
+Sat Feb 8 18:35:30 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-forward-string): fixed void variable
+ error.
+
+Sat Feb 8 16:23:11 2003 NABEYA Kenichi <kenichi@nabeya.com>
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): method name can
+ be delimited by tab.
+
+Sat Feb 8 03:57:32 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/irb/workspace.rb, lib/irb/ext/math-mode.rb,
+ lib/irb/ext/multi-irb.rb, lib/irb/lc/error.rb,
+ lib/irb/lc/help-message, lib/irb/lc/ja/error.rb,
+ lib/shell/command-processor.rb, lib/shell/error.rb,
+ lib/shell/filter.rb: Fix typos and grammos. [approved by: keiju]
+
+Sat Feb 8 03:34:28 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * intern.h (HAVE_RB_DEFINE_ALLOC_FUNC): New boolean macro to make
+ it easier to write extensions that work with both ~1.6 and 1.8~.
+
+ * intern.h (RB_CVAR_SET_4ARGS): Ditto.
+
+ * ruby.h (NORETURN_STYLE_NEW): Ditto.
+
+Sat Feb 8 00:47:24 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): calls method_missing when superclass method
+ does not exist.
+
+ * eval.c (rb_f_missing): now handles "no super" case.
+
+ * object.c (rb_obj_ivar_get): Object#instance_variable_get: new
+ method to get instance variable value without eval(). [new]
+
+ * object.c (rb_obj_ivar_set): Object#instance_variable_set: new
+ method to set instance variable value without eval(). [new]
+
+Fri Feb 7 15:35:21 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * intern.h, re.c (rb_memsearch): returns long.
+
+ * string.c (rb_str_index): should return offset position.
+
+Fri Feb 7 15:30:15 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (proc_invoke): should propagate self to super
+ methods. [ruby-dev:19510]
+
+Thu Feb 6 19:04:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): should not preset "kcode" unless
+ encoding is explicitly specified.
+
+Thu Feb 6 19:01:32 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: new method FileUtils.pwd.
+
+ * lib/fileutils.rb: default label is ''.
+
+ * lib/fileutils.rb: using module_eval again, to avoid ruby's bug.
+
+ * lib/fileutils.rb: fix wrong examples in rdoc.
+
+Thu Feb 6 17:43:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/complex.rb (Complex#==): should not raise error by type
+ mismatch.
+
+ * lib/rational.rb (Rational#==): ditto.
+
+Thu Feb 6 11:44:40 2003 MoonWolf <moonwolf@moonwolf.com>
+
+ * re.c (rb_reg_initialize_m): 3rd argument was ignored.
+
+Thu Feb 6 01:09:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_count): return 0 for empty string (was
+ returning nil).
+
+Wed Feb 5 19:41:37 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: dispatch code restructured to make it openable
+ that has `open' method.
+
+ * lib/open-uri.rb: Location: field may has a relative URI.
+ pointed out by erik eriksson <ee@opera.com>.
+
+Wed Feb 5 17:11:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): no .<digit> float literal anymore.
+
+Tue Feb 4 16:11:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_equal): a == b is true when b is non T_ARRAY
+ object, if b has "to_ary" and b == a.
+
+ * hash.c (rb_hash_equal): a == b is true when b is non T_HASH
+ object, if b has "to_hash" and b == a.
+
+ * string.c (rb_str_equal): a == b is true when b is non T_STRING
+ object, if b has "to_str" and b == a.
+
+Mon Feb 3 23:46:48 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_getline): should not increment lineno at EOF.
+
+Mon Feb 3 16:49:19 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): default Object#=== now calls "=="
+ internally.
+
+ * re.c (rb_reg_initialize_m): should honor option status of
+ original regexp.
+
+ * array.c (rb_ary_equal): ary2 should be T_ARRAY (no to_ary
+ conversion).
+
+ * array.c (rb_ary_eql): ditto.
+
+ * string.c (rb_str_equal): str2 should be T_STRING (no to_str
+ conversion).
+
+Mon Feb 3 16:32:52 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * re.c (rb_memsearch): a little improvement.
+
+Mon Feb 3 13:18:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_memsearch): algorithm body of String#index.
+
+ * error.c (Init_Exception): "to_str" removed.
+
+ * eval.c (eval): should not rely on Exception#to_str
+
+ * eval.c (compile_error): ditto.
+
+ * error.c (err_append): ditto.
+
+Sat Feb 1 23:56:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_merge): Hash#merge, non destructive "update".
+ now there's also Hash#merge! which is an alias to "update".
+
+Fri Jan 31 14:16:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_index): search using Karp-Rabin algorithm.
+
+Fri Jan 31 12:45:11 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_obj_classname): new function.
+
+ * string.c (rb_str_dup): should preserve original's class (but not
+ hidden singleton class).
+
+ * string.c (rb_str_substr): ditto.
+
+ * parse.y: backout EXPR_CMDARG removal.
+
+Fri Jan 31 09:40:07 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser::List::accept): default
+ pattern must not be nil.
+
+ * lib/optparse.rb (OptionParser::make_switch): NoArgument doesn't
+ override other styles.
+
+Thu Jan 30 16:46:43 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser::Switch::PlacedArgument): added.
+ if the next argument doesn't start with '-', use it as the
+ value.
+
+ * lib/optparse.rb (OptionParser::make_switch): fixed a bug of
+ pattern.
+
+ * lib/optparse.rb (Array): no need to guard.
+
+Thu Jan 30 08:27:19 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (rb_file_s_expand_path): removed a sludge.
+
+Wed Jan 29 03:24:39 2003 Michal Rokos <michal@rokos.homeip.net>
+
+ * dir.c (glob_helper): memory leak fixed.
+
+Tue Jan 28 04:45:03 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb (parse_args), ext/extmk.rb (parse_args): Prepend a
+ hyphen to the first argument of MAKEFLAGS only if appropriate.
+ Remove wrong comments.
+
+Mon Jan 27 03:30:06 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c (get_syserror): use snprintf() instead of sprintf(). pointed
+ out by knu.
+
+Mon Jan 27 02:06:38 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c (get_syserror): some Windows' errno have 5 digits. pointed
+ out by znz.
+
+Sun Jan 26 19:23:10 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb ($mflags.set?): Check $make instead of $nmake, since
+ there is no such a variable.
+
+ * instruby.rb ($mflags.set?), ext/extmk.rb ($mflags.set?): Return
+ false if unmatched.
+
+Sun Jan 26 19:08:30 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb: Embed rdoc style comments.
+
+ * lib/shellwords.rb (shellwords): Use String#lstrip!.
+
+ * lib/shellwords.rb (shellwords): Recognize an object that
+ responds to to_str() by using String.new().
+
+Sun Jan 26 17:53:04 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb (parse_args), ext/extmk.rb (parse_args): Detect -n
+ and emulate a dry run. Use 'make' in case no --make argument is
+ given.
+
+Sun Jan 26 07:18:42 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * instruby.rb: re-define individual methods verbosely rather than
+ including FileUtils::Verbose, in order to suppress messages from
+ FileUtils#cmp.
+
+ * instruby.rb (makedirs): make same directory only once even if
+ dryrun.
+
+ * lib/fileutils.rb (FileUtils::Verbose, FileUtils::NoWrite):
+ re-define methods with define_method instead of module_eval.
+
+Sun Jan 26 03:37:18 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb, ext/extmk.rb, Makefile.in, win32/Makefile.sub,
+ bcc32/Makefile.sub: Replace the complicated MFLAGS/MAKEFLAGS
+ parser with something plain and comprehensible. This fixes a
+ bug where make flags were wrongly reordered and the resulted
+ command line often did not make sense especially when BSD make
+ is used with extra arguments given. Tested with FreeBSD and
+ Linux by me and mswin32, bccwin32 and mingw by usa.
+
+Fri Jan 24 18:15:33 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: tMINUS should have lower precedence than tPOW.
+
+Fri Jan 24 05:12:55 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): deal
+ with escaped $ and ? at the end of strings. [ruby-talk:62297]
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): added defined?.
+
+Thu Jan 23 17:25:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): do not warn discarding already undefined
+ method.
+
+ * lib/rational.rb: undef quo before replacing.
+
+Thu Jan 23 15:49:57 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (arg): missing arguments.
+
+Thu Jan 23 14:56:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rational.rb: modified to support "quo".
+
+ * numeric.c (num_quo): should return most exact quotient value,
+ i.e. float by default, rational if available.
+
+ * numeric.c (num_div): "div" should return x.divmod(x)[0].
+
+Thu Jan 23 13:24:18 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_arg): was accessing garbage argv value.
+
+Thu Jan 23 06:37:01 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * instruby.rb: should not contain destdir in shebang line.
+
+Wed Jan 22 23:19:57 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (pipe_exec): remove unnecessary SetStdHandle().
+
+Wed Jan 22 20:20:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): syntaxify tPOW negative number hack.
+
+ * parse.y (negate_lit): new function to negate literal numeric
+ values in compile time.
+
+Wed Jan 22 15:36:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match_exec): charset info may be stored in MBC
+ region when $KCODE != NONE.
+
+Wed Jan 22 14:22:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (set_syserr): should preserve duplicated error names.
+
+Tue Jan 21 20:29:31 2003 Michal Rokos <michal@rokos.homeip.net>
+
+ * mkmf.rb: make possible to add files to clean and distclean targets
+
+Tue Jan 21 18:05:25 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bcc32/Makefile.sub (LIBRUBY_A): link dmyext.
+
+Tue Jan 21 16:59:18 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: use real interpreter pathname at shebang line.
+ [ruby-dev:19370]
+
+Tue Jan 21 16:22:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): put back old ** behavior for negative number
+ right operand.
+
+Tue Jan 21 14:46:12 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb: Use Test::Unit.
+
+ * lib/prettyprint.rb: Ditto
+
+ * lib/time.rb: Ditto
+
+ * lib/tsort.rb: Ditto
+
+Tue Jan 21 04:15:50 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb: Use redefined `to_s' as well as `inspect'.
+ Useless `pretty_print' methods removed.
+ (PP::ObjectMixin#pretty_print_inspect): new method.
+
+Mon Jan 20 21:48:43 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (MANTYPE): Detect if the system's nroff(1) groks
+ mdoc. Provide a new option --with-mantype={doc|man} in case the
+ check does not work as expected.
+
+ * Makefile.in (MANTYPE): Define MANTYPE and pass it to
+ instruby.rb.
+
+ * instruby.rb: Convert mdoc manpages to man for systems which
+ nroff(1) does not grok mdoc.
+
+Mon Jan 20 21:25:18 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb (self.open): If a block is given, call it with
+ tempfile as an argument and automatically close the tempfile
+ when the block terminates.
+
+Mon Jan 20 21:02:50 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * mdoc2man.rb: Properly put nested braces, parentheses and angles.
+
+ * mdoc2man.rb: Add support for .An and .Aq/.Ao/.Ac.
+
+ * mdoc2man.rb: Add support for .Dl.
+
+ * mdoc2man.rb: Make .Pf macro actually work.
+
+ * mdoc2man.rb: Properly handle .Os.
+
+ * mdoc2man.rb: Correctly omit spaces around punctuation
+ characters.
+
+Mon Jan 20 19:43:41 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * mdoc2man.rb: Make this work as a library.
+
+Mon Jan 20 18:22:40 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_f_require): purge too many goto's.
+
+Mon Jan 20 17:50:05 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * mdoc2man.rb (parse_macro): Understand .Ux.
+
+Mon Jan 20 17:32:56 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * mdoc2man.rb: New file. A mdoc to man converter ported from
+ Perl.
+
+Mon Jan 20 15:40:15 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.1: Properly close .Bl with .El.
+
+Mon Jan 20 04:14:17 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (egrep_cpp): use inspect to show options.
+
+ * lib/mkmf.rb (dir_config): prior configured directories to
+ defaults.
+
+ * lib/mkmf.rb (dir_config): extract first word to determine
+ make command type.
+
+Mon Jan 20 02:15:53 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/aix_mksym.rb: no longer used.
+
+Mon Jan 20 00:17:16 2003 Matt Armstrong <matt@lickey.com>
+
+ * file.c (eaccess): under windows, make eaccess() just call
+ access(). [ruby-core:716], [ruby-bugs:PR#556]
+
+Sun Jan 19 23:08:18 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb (shellwords): A backslash ('\') in single
+ quotes should not be regarded as meta character. This bug or
+ maybe feature was inherited from Perl's shellwords.pl.
+
+Sun Jan 19 14:01:12 2003 UENO Katsuhiro <unnie@blue.sky.or.jp>
+
+ * regex.c (is_in_list): should work well with UTF-8.
+
+ * regex.c (re_match_exec): ditto.
+
+Sat Jan 18 14:53:49 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_cstr_to_inum): should not erase all 0s, but
+ squeeze into one. [ruby-dev:19377]
+
+Fri Jan 17 03:33:42 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * sprintf.c (rb_f_sprintf): Fix a bug caused by an uninitialized
+ variable v, that a bignum unexpectedly gets converted into a
+ string with its higher figures all filled with ./f/7/1,
+ depending on the base. This bug seems to have been introduced
+ in rev.1.27.
+
+ * sprintf.c (rb_f_sprintf): Use switch instead of a sequence of
+ else-if's.
+
+Wed Jan 15 15:18:38 2003 moumar <moumar@netcourrier.com>
+
+ * configure.in (ARCHFILE): set even unless --enable-shared on
+ AIX. [ruby-talk:61466]
+
+ * marshal.c (math.h): should be included after ruby.h on AIX.
+ [ruby-talk:61366]
+
+Tue Jan 14 21:47:56 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_f_require): do not search adding .rb/.so suffixes if
+ the suffix specified. [ruby-dev:18702]
+ http://moonrock.jp/~don/d/200211.html#d08_t1
+
+Tue Jan 14 18:36:41 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_all): now works without block.
+
+ * enum.c (enum_any): ditto.
+
+Tue Jan 14 01:21:32 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (next_argv): not always set binmode.
+
+Mon Jan 13 20:45:19 2003 Guy Decoux <ts@moulon.inra.fr>
+
+ * parse.y (list_append): avoid O(n) search using node->nd_next->nd_end.
+
+ * parse.y (list_concat): ditto.
+
+ * eval.c (rb_eval): NODE_ARRY nd_end adoption.
+
+Mon Jan 13 02:22:11 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dl/lib/dl/win32.rb: eliminate unnecessary "A" adding.
+
+Sun Jan 12 16:07:17 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (next_argv): inherit binmode from $defout.
+
+Sat Jan 11 22:50:47 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dl/lib/dl/win32.rb: compatibility improvement.
+
+Sat Jan 11 01:44:16 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (RUBY_CHECK_IO_NEED): added more tests.
+
+ * io.c (rb_io_check_readable): seek after synchronized write.
+
+Fri Jan 10 01:23:45 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): syntax
+ classes are not allowed inside character classes.
+ [ruby-talk:60996]
+
+Thu Jan 9 23:28:01 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in: AC_MSG_FAILURE is a new macro in 2.54b or later.
+
+Thu Jan 9 17:05:24 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (RUBY_CHECK_IO_NEED): check whether fseek() and
+ fflush() are needed.
+
+ * io.c (flush_before_seek): flush write stream only.
+
+ * io.c (rb_io_check_readable): seek instead of flush if the last
+ operation was write.
+
+ * io.c (rb_io_check_writable): seek instead of flush if the last
+ operation was read.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub: needs to seek between
+ R/W.
+
+Thu Jan 9 16:31:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should not discard nested NODE_BLOCK.
+
+Thu Jan 9 15:12:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): NODE_NOT elimination for if/unless/while/until node.
+
+ * parse.y (primary): ditto.
+
+Thu Jan 9 13:26:18 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * st.h, st.c: Back out the introduction of st_*_func_t. Some
+ compilers complain about function type mismatch.
+
+Thu Jan 9 02:10:44 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): reduce recursive rb_eval() call by using sort
+ of continuation passing style.
+
+Wed Jan 8 17:10:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/lib/win32/registry.rb: added. [new]
+
+Wed Jan 8 15:54:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: remove ruby_last_node and assignments seems to be
+ unnecessary
+
+ * intern.h: debug does not run if ID_ALLOCATOR is zero.
+
+Wed Jan 8 15:04:11 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_each): treat fixnums specially to boost.
+
+ * numeric.c (num_step): remove rb_scan_args() for small speedup.
+
+Tue Jan 7 17:56:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_avalue): should return converted array.
+
+Tue Jan 7 07:48:01 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_f_local_variables): skip $_, $~ and flip states in
+ dynamic variables. [ruby-core:00681]
+
+Tue Jan 7 02:46:29 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_clear): new Hash compatible method.
+
+ * hash.c (env_shift, env_invert, env_replace, env_update): ditto.
+
+Mon Jan 6 23:36:29 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * st.h, st.c: Introduce new conventional typedef's, st_data_t,
+ st_compare_func_t, st_hash_func_t and st_each_func_t.
+
+ * st.h, st.c: Do explicit function declarations and do not rely on
+ implicit declarations.
+
+ * class.c, eval.c, gc.c, hash.c, marshal.c, parse.y, variable.c:
+ Add proper casts to avoid warnings.
+
+Mon Jan 6 20:44:43 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * intern.h (rb_check_array_type): Declare rb_check_array_type().
+
+ * ext/digest/md5/md5ossl.c: Include stdio.h for sprintf() and
+ string.h for memcmp().
+
+ * ext/dl/ptr.c: Include ctype.h for isdigit().
+
+Mon Jan 6 18:43:17 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c: improve DOSISH drive letter support.
+
+Mon Jan 6 18:31:45 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (ln): add ' -f' in the verbose message.
+
+ * lib/fileutils.rb (cp_r): add 'p' in the verbose message.
+
+Mon Jan 6 16:44:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_join): dispatch based on "to_str".
+
+ * array.c (rb_ary_times, rb_ary_equal): ditto.
+
+Mon Jan 6 13:26:35 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (proc_exec_v): follow to proc_spawn_v(). call do_aspawn()
+ on Win32.
+
+ * process.c (rb_proc_exec): call do_spawn() on Win32.
+
+ * win32/win32.c, win32/win32.h (do_spawn, do_aspawn): add mode flag.
+
+ * process.c (proc_spawn_v, rb_f_system): follow above change.
+
+Mon Jan 6 05:11:15 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/extmk.rb: make $0 normal variable.
+
+Mon Jan 6 02:32:46 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * struct.c (make_struct): needs meta class.
+
+Sun Jan 5 22:54:05 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (ln): `argv' is not a argument.
+
+Sun Jan 5 17:44:37 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/extmk.rb (extmake): set $0 temporarily while loading
+ extconf.rb.
+
+Sun Jan 5 14:46:46 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb: need paren in regexp(make -n install).
+
+ * ext/extmk.rb (sysquote): do not need to quote on mswin/bccwin/mingw.
+
+ * ext/extmk.rb ($mflags): uniq items and remove '-' and '--'.
+ move options to the lead.
+
+ * lib/fileutils.rb (install): model on the real install
+ command(message).
+
+Sun Jan 5 09:36:46 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.c (ruby_init_loadpath): under Windows, get the module
+ path from an internal address instead of hard coded library
+ name.
+
+ * cygwin/GNUmakefile.in, bcc32/Makefile.sub,
+ win32/Makefile.sub (CPPFLAGS): removed LIBRUBY_SO macro.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub (config.h): no longer
+ depends on makefiles.
+
+Sun Jan 5 04:17:05 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * gc.c (SET_STACK_END): Issue a FLUSH_REGISTER_WINDOWS here too.
+ This fixes make test on FreeBSD/sparc64.
+
+Sun Jan 5 03:43:47 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * defines.h (FLUSH_REGISTER_WINDOWS): Make the flushw call an
+ inline function so it can be used as an expression.
+
+ * eval.c (EXEC_TAG, THREAD_SAVE_CONTEXT): Consistently call
+ FLUSH_REGISTER_WINDOWS before calling setjmp(). (I suspect that
+ every setjmp() implementation should take care of register
+ windows, though)
+
+Sun Jan 5 03:12:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (utimbuf): use utimbuf instead of _utimbuf if defined _WIN32.
+
+ * win32/Makefile.sub (LIBS): use oldnames.lib.
+
+ * win32/win32.c (rb_w32_getcwd): follow above change.
+
+ * win32/win32.h: ditto.
+
+ * wince/direct.c, wince/direct.h (getcwd): ditto.
+
+ * wince/io.h: ditto.
+
+ * wince/string.c, wince/wince.h (stricmp, strnicmp): ditto.
+
+Sat Jan 4 15:18:50 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_proc_exec): use same logic as DJGPP on win32 ports.
+
+ * process.c (rb_f_system): ditto.
+
+ * win32/win32.c, win32/win32.h (do_aspawn): [new]. for arrayed
+ arguments.
+
+ * win32/win32.c (CreateChild): add new argument for real filename of
+ executing process.
+
+ * win32/win32.c (NtHasRedirection, pipe_exec): follow above change.
+
+Sat Jan 4 14:29:52 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in: set rb_cv_need_io_flush_between_seek=yes.
+
+ * win32/Makefile.sub (config.h): define NEED_IO_FLUSH_BETWEE_SEEK.
+ (pointed out by moriq [ruby-dev:19299])
+
+Sat Jan 4 03:12:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (umethod_bind): exact class match is not required. relax
+ the restriction to subclasses.
+
+Sat Jan 4 01:33:40 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (rb_file_s_lchmod): get rid of gcc-3 -O3 warning.
+
+Fri Jan 3 22:26:07 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * process.c (rb_proc_times): need to initialize first.
+
+Fri Jan 3 01:10:17 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): call "inherited" before executing class body.
+
+ * class.c (rb_define_class): call "inherited" after defining the
+ constant.
+
+ * class.c (rb_define_class_under): ditto.
+
+Thu Jan 2 19:37:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (massign): expand first element if RHS is an array and
+ its size is 1, and LHS has concrete assignment target (i.e. LHS
+ has target(s) other than *var).
+
+ * eval.c (massign): avoid unnecessary avalue/svalue conversion.
+
+ * eval.c (rb_yield_0): ditto
+
+ * array.c (rb_ary_update): do not allocate unused array if rpl is
+ nil (i.e. merely removing elements).
+
+Thu Jan 2 13:55:08 2003 Mathieu Bouchard <matju@sympatico.ca>
+
+ * io.c (io_read): should resize supplied string if it's shorter
+ than expected.
+
+Thu Jan 2 11:01:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (bmcall): arguments should be an array.
+
+Wed Jan 1 18:18:45 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: better DJGPP support. add GNUmakefile.
+
+ * djgpp/GNUmakefile: new.
+
+Wed Jan 1 04:16:18 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * node.h (struct RNode): Change argc from int to long. Otherwise
+ NEW_CFUNC() sets argc to a wrong value on platforms where
+ sizeof(int) != sizeof(long) and the byte order is big-endian.
+ This fixes breakage on FreeBSD/sparc64.
+
+Tue Dec 31 23:22:50 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (massign): removed awkward conversion between yvalue,
+ mvalue, etc.
+
+ * eval.c (rb_yield_0): new parameter added to tell whether val is
+ an array value or not.
+
+ * parse.y (yield_args): restructuring: new nodes: NODE_RESTARY2,
+ NODE_SVALUE; removed node: NODE_RESTARGS.
+
+Tue Dec 31 21:13:51 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * Makefile.in, {win32,bcc32}/Makefile.sub: add new target:
+ what-where, no-install.
+
+ * mkconfig.rb: add const: CROSS_COMPILING.
+
+ * ext/extmk.rb: no-install support. add MAKEDIRS macro.
+
+ * lib/mkmf.rb: add !ifdef .. !endif for Borland make.
+
+ * process.c: improve DJGPP support. system "ls", "-l".
+
+Tue Dec 31 20:16:37 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/socket/addrinfo.h (NI_MAXHOST): Define NI_MAXHOST and
+ NI_MAXSERV only if they are not defined yet. This fixes build
+ on such platforms as OpenBSD.
+
+Tue Dec 31 20:07:49 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/tcltklib/extconf.rb (find_tcl, find_tk): Look for both
+ lib{tcl,tk}M.N and lib{tcl,tk}MN on all platforms. *BSD have
+ Tcl/Tk libraries named this way.
+
+Tue Dec 31 19:48:21 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in: Improve OpenBSD support. [obtained from: OpenBSD
+ ports]
+
+ * dln.c (FUNCNAME_PATTERN): Ditto.
+
+Tue Dec 31 19:21:02 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_transpose): Properly declare ary as a VALUE.
+
+ * file.c (rb_file_s_chmod): Do not directly cast an int to void *
+ to avoid a warning.
+
+ * defines.h (FLUSH_REGISTER_WINDOWS): Add support for
+ FreeBSD/sparc64. miniruby still coredumps in a different place,
+ though.
+
+Tue Dec 31 07:47:15 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (parse_string): readjusted.
+
+ * parse.y (heredoc_identifier): readjusted.
+
+ * parse.y (here_document): make EOL codes of single-quoted
+ here-documents consistent.
+
+ * parse.y (yylex): reduced unnecessary conditionals.
+
+Tue Dec 31 04:49:51 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.1: mdoc'ify.
+
+Tue Dec 31 01:30:29 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * parse.y (yylex): do not accept " __END__\n". ([ruby-dev:19245])
+
+Mon Dec 30 21:10:59 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * parse.y (yylex): use strncmp instead of strcmp.
+ accept "__END__\r\n". ([ruby-dev:19241])
+
+Mon Dec 30 20:32:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_mark_frame): should mark frame->node.
+
+Mon Dec 30 19:10:30 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/extmk.rb: split --make argument contains options, assume
+ the first word of --make-flags is always options even unless
+ preceded by -, and ignore letter-case of options if nmake.
+
+ * instruby.rb: extract -n option also from --make and
+ --make-flags.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub: not prepend - to
+ $(MFLAGS)
+
+Mon Dec 30 16:44:14 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_substr): should share the shared string if
+ present, instead of the original string. (ruby-bugs:PR#528)
+
+Mon Dec 30 05:10:00 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/socket/socket.c (tcp_svr_init): local host to
+ init_inetsock() is VALUE but not pointer.
+
+ * ext/socket/socket.c (sock_s_unpack_sockaddr_in): get rid of
+ gcc-3 -O3 warning.
+
+Sun Dec 29 23:45:53 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * gc.c (gc_sweep): adjust GC trigger.
+
+ * dln.c (init_funcname_len): get rid of gcc-3 -O3 warning.
+
+ * eval.c (copy_node_scope): ditto.
+
+ * hash.c (rb_hash_foreach, delete_if_i, select_i, each_value_i,
+ each_key_i, each_pair_i, envix): ditto.
+
+ * range.c (range_each_func): ditto.
+
+ * file.c (rb_file_s_chmod): ditto.
+
+Sun Dec 29 15:30:37 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_parseargs): should not inherit ftools.rb's
+ misfeature.
+
+Sun Dec 29 05:08:13 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/fileutils.rb (cmp): return false if file size differs.
+
+Sat Dec 28 19:21:24 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb: remove junk args.
+
+ * lib/mkmf.rb (create_makefile): remove a trouble library
+ before making a shared library.
+
+ * win32/Makefile.sub: invoke instruby.rb with the --make-flags option.
+
+Sat Dec 28 03:09:58 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#[]): improvement. thanks to Kazuhiro NISHIYAMA
+ <zn@mbf.nifty.com>
+
+Sat Dec 28 00:34:03 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * {win32,bcc32}/Makefile.sub: remove `=' from --make-flags options.
+ nmake quotes args if included `=' in args.
+
+ * instruby.rb: use getopts.rb.
+
+ * ext/dbm/extconf.rb (-DDBM_HDR): substitute ' with " to avoid
+ a error on Win32.
+
+ * ext/gdbm/gdbm.c: add prototypes to avoid VC++ warnings.
+
+Fri Dec 27 21:41:57 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bcc32/setup.mak, win32/setup.mak(-prologue-): move srcdir from
+ CPP input or UNC path will be removed as a comment.
+
+Fri Dec 27 17:55:00 2002 Takaaki Uematsu <mail@uema2.cjb.net>
+
+ * wince/config, wince/configure.bat: replace 1.7 with 1.8
+ in macros.
+
+Fri Dec 27 13:28:14 2002 Minero Aoki <aamine@loveruby.net>
+
+ * instruby.rb: fileutils.rb accepts only one argument.
+
+Fri Dec 27 13:23:29 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_parseargs): reject illegal options
+ correctly.
+
+ * lib/fileutils.rb (uptodate?): parameter declaration was wrong.
+
+ * lib/fileutils.rb: change coding styles.
+
+Fri Dec 27 09:25:22 2002 ABE Shigeru <shiger-a@nifty.com>
+
+ * process.c (rb_proc_times): avoid WindowsXP crash using volatile
+ variables.
+
+Fri Dec 27 02:56:58 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * instruby.rb: check only `-' option, and use fileutils instead of
+ ftools.
+
+Fri Dec 27 02:45:17 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/net/telnet.rb: Telnet#print not add "\n".
+
+ * lib/cgi.rb: cgi['key'] is equal cgi['key'][0]
+
+Thu Dec 26 22:33:18 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (create_makefile): check only `-' option.
+
+ * configure.in: cleanups for MinGW. remove -D__NO_ISOCEXT in $CFLAGS.
+
+ * win32/win32.h: prototypes for isinf, isnan are not needed on MinGW.
+
+Thu Dec 26 19:22:00 2002 YOSHIDA Kazuhiro <moriq@moriq.com>
+
+ * win32/setup.mak (-prologue-): moved srcdir macro definition.
+ [ruby-win32:420].
+
+Wed Dec 25 18:26:44 2002 K.Kosako <kosako@sofnec.co.jp>
+
+ * regex.c (re_match): fixed wrong \G behavior. (ruby-bugs-ja:PR#377)
+
+Wed Dec 25 16:41:16 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match_exec): fix odd \G behavior based on the patch
+ from Nobu.
+
+Wed Dec 25 11:05:11 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bcc32/setup.mak (-generic-): removed garbages.
+
+Wed Dec 25 10:36:20 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub (RUBY_SO_NAME, config.h):
+ use $(MAJOR) and $(MINOR). based on Nobu's patch. [ruby-win32:413]
+
+ * bcc32/setup.mak, win32/setup.mak (-prologue-): define MAJOR, MINOR
+ and TEENY from version.h. based on Nobu's patch. [ruby-win32:413]
+
+ * win32/Makefile.sub (config.h): add HAVE_FLOAT_H.
+
+ * win32/Makefile.sub (parse.obj): depend on win32/win32.h.
+
+Tue Dec 24 23:49:16 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/irb/completion.rb: Use Object#class rather than Object#type.
+
+Tue Dec 24 23:37:40 2002 TADA Tadashi <sho@spc.gr.jp>
+
+ * lib/cgi.rb (Cookie::parse), lib/cgi-lib.rb (initialize): Do not
+ pass to split() a bare string longer than 2 characters as
+ separator.
+
+Tue Dec 24 19:19:24 2002 Tietew <tietew@tietew.net>
+
+ * numeric.c (DBL_MAX_10_EXP): fix typo. [ruby-dev:19175]
+
+Tue Dec 24 17:02:46 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_undefined): use NoMethodError instead of fatal.
+
+Tue Dec 24 02:12:45 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/README: Synchronize with reality.
+
+Tue Dec 24 02:05:51 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * MANIFEST, lib/README, lib/ipaddr.rb: Add ipaddr.rb from rough.
+
+Sun Dec 22 04:07:47 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_alloc): allocator takes only one argument.
+
+Sun Dec 22 02:49:25 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (ary_alloc), dir.c (dir_s_alloc), eval.c (thgroup_s_alloc),
+ file.c (rb_stat_s_alloc), hash.c (hash_alloc), io.c (io_alloc),
+ object.c (rb_module_s_alloc, rb_class_allocate_instance),
+ re.c (match_alloc, rb_reg_s_alloc), string.c (str_alloc),
+ time.c (time_s_alloc), ext/digest/digest.c (rb_digest_base_alloc),
+ ext/tcltklib/tcltklib.c (ip_alloc),
+ ext/win32ole/win32ole.c (fole_s_allocate, fev_s_allocate)
+ : add prototype to get rid of VC++ warnings.
+
+ * ext/sdbm/init.c (fsdbm_alloc): allocator takes only one argument.
+
+Sun Dec 22 00:36:43 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): accept pure ruby libraries.
+
+Sat Dec 21 23:59:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (ins_methods_i): should not show ID_ALLOCATOR.
+
+ * class.c (ins_methods_prot_i): ditto.
+
+ * class.c (ins_methods_priv_i): ditto.
+
+ * class.c (ins_methods_pub_i): ditto.
+
+ * eval.c (call_trace_func): ditto.
+
+ * eval.c (rb_undefined): ditto.
+
+Sat Dec 21 07:27:24 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-parse-partial): keywords must not be
+ preceded by @ or $.
+
+Fri Dec 20 20:29:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/curses/curses.c, ext/dbm/dbm.c, ext/digest/digest.c,
+ ext/dl/handle.c, ext/dl/ptr.c, ext/dl/sym.c, ext/gdbm/gdbm.c,
+ ext/iconv/iconv.c, ext/sdbm/init.c, ext/stringio/stringio.c,
+ ext/strscan/strscan.c, ext/tcltklib/tcltklib.c,
+ ext/win32ole/win32ole.c: use rb_define_alloc_func().
+
+Fri Dec 20 18:29:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_fwrite): separated from io_write().
+
+ * marshal.c (w_byten): use rb_io_fwrite() to support non-blocking
+ IO, and added error check.
+
+ * rubyio.h: prototypes; rb_io_fwrite
+
+Fri Dec 20 17:40:59 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): should not remove Class#allocate.
+
+ * lib/profiler.rb: separate profiling functions, without
+ trace_func and at_exit setting.
+
+Fri Dec 20 16:20:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (do_block): split "do" block and tLBRACE_ARG block.
+
+ * parse.y (cmd_brace_block): new tLBRACE_ARG block rule
+
+ * parse.y (command): can take optional cmd_brace_block; use %prec
+ to resolve shift/reduce conflict. (ruby-bugs-ja PR#372)
+
+ * eval.c (ruby_finalize): trace_func should be cleared here (after
+ executing exit procs and finalizers).
+
+ * eval.c (rb_define_alloc_func): new allocation framework, based
+ on Nobu's work [ruby-dev:19116]. "allocate" method is no longer
+ used for object allocation.
+
+Fri Dec 20 05:06:49 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/README, lib/cgi/ftplib.rb, lib/telnet.rb: Delete ftplib.rb
+ and telnet.rb. It has been quite some time sinc they were
+ obsoleted and made to emit warnings.
+
+Fri Dec 20 04:58:22 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb: Embed Rdoc style comments.
+
+ * lib/tempfile.rb: Add length as an alias for size.
+
+Fri Dec 20 03:57:32 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb: Add Tempfile#close!() as a shorthand for
+ Tempfile#close(true).
+
+ * lib/tempfile.rb: Add Tempfile#{unlink,delete}().
+
+Fri Dec 20 03:53:01 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/README, lib/cgi/final.rb, lib/cgi/session.rb: Delete
+ final.rb, which was obsoleted long ago.
+
+Fri Dec 20 00:16:06 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * re.c (rb_reg_match_pre, rb_reg_match_post, match_to_a,
+ match_select): return instances of same class as the original
+ string. [ruby-dev:19119]
+
+Thu Dec 19 22:55:49 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (DBL_EPSILON): fix typo.
+
+Thu Dec 19 22:35:20 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (assign): avoid [BUG] at multiple attribute assignment.
+
+Thu Dec 19 01:00:09 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_step): use DBL_EPSILON.
+
+ * array.c (rb_check_array_type): new function: return an array
+ (convert if possible), or nil.
+
+ * string.c (rb_check_string_type): new function: return a string
+ (convert if possible), or nil.
+
+ * numeric.c (rb_dbl_cmp): returns nil if values are not
+ comparable.
+
+ * numeric.c (fix_cmp,flo_cmp): use rb_num_coerce_cmp()
+
+ * bignum.c (rb_big_cmp): ditto.
+
+ * numeric.c (rb_num_coerce_cmp): new coercing function for "<=>",
+ which does not raise TypeError.
+
+ * numeric.c (do_coerce): can be suppress exception now.
+
+ * object.c (rb_mod_cmp): should return nil for non class/module
+ objects.
+
+Thu Dec 19 04:21:10 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/open-uri.rb: add a missing ||. (found by: ruby -wc)
+
+Wed Dec 18 17:53:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_eqq): return false if the argument is not a
+ string. now returns boolean value.
+
+ * class.c (rb_include_module): argument should be T_MODULE, not
+ T_class, nor T_ICLASS.
+
+Wed Dec 18 03:52:55 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_new4): handle tail shared string.
+ (ruby-bugs-ja:PR#370)
+
+ * string.c (rb_str_dup_frozen): ditto.
+
+Tue Dec 17 21:08:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * node.h (NODE_ATTRASGN): new node, assignment to attribute.
+ [ruby-core:00637].
+
+ * eval.c (is_defined, rb_eval): ditto.
+
+ * parse.y (attrset, node_assign): ditto.
+
+ * string.c (rb_str_substr): tail sharing. [ruby-core:00650]
+
+ * re.c (rb_reg_nth_match): ditto.
+
+Tue Dec 17 16:52:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): "defined?" should return "assignment" for
+ attribute assignment (e.g. a.foo=b) and indexed assignment
+ (e.g. a[2] = 44).
+
+ * parse.y (aryset): use NODE_ATTRASGN.
+
+Tue Dec 17 04:03:45 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: new file.
+
+Tue Dec 17 00:28:19 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (utimbuf): need to define for VC++.
+
+Mon Dec 16 15:53:20 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (nextc): get rid of overrun. (pointed out by akr
+ [ruby-list:36773])
+
+Sun Dec 15 21:16:44 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (init_mkmf): add $(topdir) to $LIBPATH if $extmk.
+ remove adding $(archdir) to $LIBPATH.
+
+Sat Dec 15 12:15:00 2002 Takaaki Uematsu <mail@uema2.cjb.net>
+
+ * configure.in, defines.h, dir.c, dir.h, dln.c, error.c,
+ eval.c, file.c, hash.c, io.c, main.c, missing.c,
+ process.c, ruby.c, rubysig.h, signal.c, st.c, util.c, util.h,
+ bcc/Makefile.sub, win32/Makefile.sub, win32/win32.h,
+ ext/Win32API/Win32API.c, ext/socket/getaddrinfo.c,
+ ext/socket/getnameinfo.c, ext/socket/socket.c,
+ ext/tcltklib/stubs.c
+ : replace "NT" with "_WIN32", add DOSISH_DRIVE_LETTER
+ * wince/exe.mak : delete \r at the end of lines.
+ * wince/mswince-ruby17.def : delete rb_obj_become
+
+Sun Dec 15 11:43:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (dispose_string): dispose String object.
+
+ * parse.y (heredoc_restore, here_document): fix memory leak.
+
+Sat Dec 14 14:25:00 2002 Takaaki Uematsu <mail@uema2.cjb.net>
+
+ * wince/sys : add stat.c, stat.h, timeb.c, timeb.h,
+ types.h, utime.c, utime.h
+ * wince/dll.mak : object file name changed.
+ * wince/io.c : add empty dup2().
+ * wince/io.h : add dup2 definition.
+
+Sat Dec 14 01:51:29 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dbm/extconf.rb (rb_check): support for GNU dbm 1.8.3.
+ (-with-dbm-type=gdbm_compat). link against -lgdbm_compat
+ and -lgdbm.
+
+Fri Dec 13 23:42:16 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/dbm/extconf.rb (db_check): check existence of the function
+ in the specified library before checking it in libc.
+
+Fri Dec 13 17:15:49 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (generic_ivar_get): should always warn uninitialized
+ instance variables.
+
+Fri Dec 13 12:33:22 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (expr): rescue clause was ignored.
+
+Thu Dec 12 18:19:14 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RUBY_PROG_GNU_LD): add $CFLAGS, $CPPFLAGS, $LDFLAGS
+ to the option of $CC.
+
+ * configure.in: set LIBRUBYARG to '-l$(RUBY_SO_NAME)' if the
+ target os is cygwin and --disable-shared option is supplied.
+
+ * lib/mkmf.rb (init_mkmf): expand config["LIBRUBY"] and
+ config["LIBRUBY_A"]. don't link $LIBRUBYARG_STATIC if
+ --disable-shared option is supplied.
+
+ * configure.in (RUBY_CPPOUTFILE): should be a better message.
+
+ * ext/Win32API/extconf.rb: join with a space.
+
+Thu Dec 12 17:27:19 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_hash): define Regexp#hash to make regexps to be
+ hash keys.
+
+ * re.c (Init_Regexp): define Regexp#eql? (alias to Regexp#==).
+
+Thu Dec 12 16:26:31 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (r_object0): singleton class instance can't be loaded.
+ (ruby-bugs-ja:PR#366)
+
+Wed Dec 11 23:35:43 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (create_makefile): -no-undefined -> --no-undefined.
+
+Wed Dec 11 17:54:59 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_read): takes optional second argument to specify a
+ string to be written. the string should not be frozen.
+
+ * io.c (rb_io_sysread): ditto.
+
+Wed Dec 11 11:30:28 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/digest/digest.c (rb_digest_base_copy): renamed "become".
+
+ * ext/stringio/stringio.c (strio_copy): ditto.
+
+Wed Dec 11 00:45:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/getoptlong.rb (GetoptLong::Error): provide a common ancestor
+ for GetoptLong error classes (RCR#129).
+
+Tue Dec 10 17:42:39 2002 K.Kosako <kosako@sofnec.co.jp>
+
+ * re.c (rb_reg_copy_object): fixed memory leak.
+
+Tue Dec 10 17:30:35 2002 Tanaka Akira <akr@m17n.org>
+
+ * pack.c (utf8_limits): fix the limit of 4 bytes UTF-8 sequence.
+
+Tue Dec 10 12:01:15 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (mnew): original class of method defined in module should
+ be the module not intermediate class. [ruby-dev:19040]
+
+Tue Dec 10 01:16:52 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): preceding ".." for negative numbers
+ still left; removed.
+
+ * sprintf.c (rb_f_sprintf): should not prepend '0' if width > prec
+ for example "%5.3d".
+
+Sat Dec 7 18:14:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (Init_process): add Process.exit and Process.abort
+
+ * pack.c (utf8_to_uv): raise ArgumentError for malformed/redundant
+ UTF-8 sequences.
+
+Fri Dec 6 03:46:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (last_status_set): add pid attribute to Process::Status.
+
+Wed Dec 4 17:31:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (uv_to_utf8): limit maximum length of the encoded string
+ to 6 bytes, even when the platform supports 8 bytes long integers.
+
+ * pack.c (utf8_to_uv): do not decode sequences longer than 6 bytes.
+
+ * object.c (copy_object): use "copy_object" method, not "become".
+
+Wed Dec 4 16:37:11 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (copy_object): copy finalizers as well if any.
+
+ * gc.c (rb_gc_copy_finalizer): new function to copy finalizers.
+
+Tue Dec 3 01:13:41 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (PP.singleline_pp): new method.
+
+Sun Dec 1 23:04:03 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser::new): same as OptionParser#on but
+ returns new OptionParser::switch.
+
+Sun Dec 1 22:43:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_stat): empty path is invalid, and return
+ ENOENT rather than EBADF in such case. [ruby-talk:57177]
+
+Fri Nov 29 18:01:48 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (utf8_to_uv): added checks for malformed or redundant
+ UTF-8 sequences.
+
+Thu Nov 28 12:08:30 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb: Avoid the use of "clean::" in favor of "clean:" in
+ order not to let make(1) choke if there is another dependency on
+ the target added in a depend file.
+
+Thu Nov 28 02:40:42 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb: Make sure to dig the destination directory before
+ installing a file there. Formerly "make install" could fail
+ depending on make(1)'s mood of the moment, especially when -jN
+ is given.
+
+Wed Nov 27 17:39:38 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c: Cut redundancy.
+
+ * ext/syslog/syslog.c: Do not leak ident.
+
+Wed Nov 27 17:25:29 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c, ext/syslog/test.rb: Syslog.close should
+ raise RuntimeError when not opened.
+
+ * ext/syslog/syslog.c, ext/syslog/test.rb:
+ Syslog.{ident,options,facility,mask} should all return nil when
+ not opened.
+
+ * ext/syslog/syslog.c, ext/syslog/test.rb: Change back the output
+ format of inspect().
+
+Wed Nov 27 16:25:43 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/test.rb: Switch from RUnit to Test::Unit.
+
+Wed Nov 27 16:14:12 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c: Fix a problem where Syslog.ident was not
+ marked and could thus be GC'd.
+
+Wed Nov 27 16:11:53 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/test.rb: Switch from RUnit to Test::Unit.
+
+ * ext/syslog/test.rb: The output format of inspect() is slightly
+ altered.
+
+Wed Nov 27 06:43:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * error.c (exit_initialize): add SystemExit#initialize to set
+ instance variable status. (ruby-bugs-ja:PR#362)
+ Now accepts status as optional first argument.
+
+ * eval.c (error_handle): now SystemExit have status always.
+
+ * eval.c (system_exit): just instantiate SystemExit without raise.
+
+ * eval.c (rb_thread_start_0): initialize SystemExit properly.
+
+Tue Nov 26 10:17:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dln.c (init_funcname_len): remove MAXPATHLEN dependency.
+
+Mon Nov 25 19:55:38 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): return true if not dynamic and not static.
+
+Mon Nov 25 01:08:40 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c: revert and add the MAXPATHLEN definition on mswin32/mingw32.
+
+Sun Nov 24 20:36:53 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c: move the MAXPATHLEN definition in front.
+
+Fri Nov 22 22:55:01 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): preceding ".." for negative
+ hexadecimal numbers should not appear if prec (e.g. %.4) is
+ specified.
+
+ * pack.c (NUM2I32): support platforms which does not have 32bit
+ integers (e.g. Cray).
+
+Fri Nov 22 19:20:36 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb: Install batch files on Windows. [Submitted by usa]
+
+Fri Nov 22 18:31:46 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_add_method): node may be NULL.
+
+Thu Nov 21 20:53:06 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: changes coding style.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/protocol.rb: ditto.
+
+Thu Nov 21 20:17:08 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: changes coding style.
+
+Thu Nov 21 20:04:06 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: should not overwrite Host: header.
+ (This patch is contributed by sean@ruby-lang.org)
+
+Thu Nov 21 20:01:33 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: support Proxy-Authorization.
+ (This patch is contributed by Alexander Bokovoy)
+
+Thu Nov 21 11:03:39 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_find_file_ext): should not terminate searching with
+ empty path, just ignore.
+
+ * dir.c: remove <sys/parm.h> inclusion.
+
+Wed Nov 20 02:07:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compar.c (cmp_eq,cmp_gt,cmp_ge,cmp_lt,cmp_le): check using
+ rb_cmpint().
+
+ * error.c (init_syserr): remove sys_nerr dependency.
+
+Wed Nov 20 01:52:21 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_cmp): added to satisfy Comparable assumption.
+
+ * eval.c (rb_add_method): "initialize" should be public if it is a
+ singleton method.
+
+Tue Nov 19 22:37:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match): avoid dereferencing if size == 0.
+ (ruby-bugs-ja:PR#360)
+
+Tue Nov 19 20:40:39 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_cmp): should return nil if an operand is not a
+ number nor time. (ruby-bugs-ja:PR#359)
+
+ * file.c (rb_stat_cmp): should return nil if an operand is not
+ File::Stat.
+
+Tue Nov 19 14:35:09 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_zip): iterates over items in the receiver.
+ zipped with nil if argument arrays are shorter. if arrays are
+ longer, left items are ignored. now works with blocks.
+
+ * enum.c (zip_i): changed for new behavior.
+
+ * array.c (rb_ary_transpose): added. [new]
+
+Tue Nov 19 05:12:21 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb: Do not install various working files under bin/.
+
+Tue Nov 19 05:07:39 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * instruby.rb: not rewrite installed scripts when dry-run mode.
+
+ * lib/ostruct.rb (OpenStruct::initialize): should symbolize keys
+ instead of values.
+
+Tue Nov 19 02:24:10 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * instruby.rb: Rewrite installed scripts' shebang lines.
+
+ * instruby.rb: Use File.join() where appropriate.
+
+Tue Nov 19 01:53:35 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * bin/irb: Moved from sample/irb.rb.
+
+ * instruby.rb: Install script files under bin/ with ruby's program
+ prefix and suffix.
+
+Mon Nov 18 02:13:36 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb: Make this library thread safe.
+
+ * lib/tempfile.rb: Do not pick a name which was once used and is
+ still scheduled for removal.
+
+ * lib/tempfile.rb: A lock file need not and must not be scheduled
+ for removal.
+
+ * lib/tempfile.rb: Compare Max_try with the number of mkdir
+ failures instead of the suffix counter.
+
+ * lib/tempfile.rb: Overall cleanup and add some important notices.
+
+Sun Nov 17 22:57:31 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (dsym): garbage returned. (ruby-bugs-ja:PR#358)
+
+Fri Nov 15 07:40:08 2002 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * observer.rb: raise NoMethodError instead of NameError.
+ [ruby-dev:18788]
+
+ * ostruct.rb: ditto. fix a bug in inspect which called String#+ with
+ Symbol. [ruby-dev:18788]
+
+ * profile.rb: illegal use of Array#sort!. replaced it with non-bang
+ method. [ruby-dev:18792]
+
+Thu Nov 14 22:40:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (LIBRUBY_A): append -static. [ruby-dev:18689]
+
+ * configure.in (LIBRUBYARG_STATIC, LIBRUBYARG_SHARED): linker
+ argument to link static/shared library respectively.
+
+ * Makefile.in (LIBRUBYARG_STATIC, LIBRUBYARG_SHARED): added.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub: ditto.
+
+ * instruby.rb (LIBRUBY_A): install to libdir.
+
+ * lib/mkmf.rb (link_command): link static library of ruby, or
+ try_run fails unless LIBRUBY_SO is installed. [ruby-dev:18646]
+
+ * eval.c (call_trace_func): toplevel caller was missing.
+ [ruby-dev:18754]
+
+ * eval.c (proc_to_s): adjust created line number.
+
+ * parse.y (primary, do_block, brace_block): adjust line number of
+ block to beginning line, instead of the first statement inside
+ the block.
+
+Thu Nov 14 08:23:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (math_acos): check errno after operation. ditto for
+ asin, acosh, atanh, log, log10 and sqrt.
+
+ * eval.c (rb_add_method): initialize should always be private.
+
+ * parse.y (expr): add rescue modifier rule.
+
+ * parse.y (command_call): return, break and next with argument is
+ now part of this rule.
+
+Wed Nov 13 16:22:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (DLDFLAGS): removed -Wl,-no-undefined to
+ ext/extmk.rb, in order to allow references to symbols in other
+ extension libraries for mkmf.rb. [ruby-dev:18724]
+
+ * ext/extmk.rb (extmake): ditto.
+
+ * ext/extmk.rb (extmake): exit when make failed.
+
+Sun Nov 10 03:46:18 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: retire contain?() and add superset?(),
+ proper_superset?() subset?(), and proper_subset?().
+ [obtained from: Jason Voegele's set.rb]
+
+ * lib/set.rb: define several aliases: union() for |(),
+ difference() for -(), and intersection() for &().
+ [obtained from: Jason Voegele's set.rb]
+
+ * lib/set.rb: deal with a s/id/object_id/ leftover.
+
+Sat Nov 9 16:06:57 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tcltklib/stubs.c: should include "util.h" for ruby_strdup.
+
+Sat Nov 9 11:39:45 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c: remove ENABLE_TRACE/DISABLE_TRACE to trace child nodes of
+ c-call. [ruby-dev:18699]
+
+Fri Nov 8 04:16:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): "a" in "a /5" should be considered as a local
+ variable. [experimental]
+
+Thu Nov 7 09:51:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_yield_0): should enable trace for non-cfunc nodes.
+ [ruby-dev:18645]
+
+ * eval.c (blk_orphan): a block created in a different thread is
+ orphan. [ruby-dev:17471]
+
+Wed Nov 6 16:57:06 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_define_method): do not set NOEX_CFUNC if klass is
+ really a module, whose methods must be safe for reciever's type.
+
+ * eval.c (rb_eval): nosuper should not be inherited unless the
+ overwritten method is an undef placeholder.
+
+Tue Nov 5 00:46:04 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb: Properly pass the given target to
+ make(1). [pointed out by eban]
+
+Mon Nov 4 20:03:53 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb, lib/mkmf.rb: use CONFIG["ENABLE_SHARED"] instead of
+ checking whether CONFIG["configure-args"] includes "--enable-shared".
+
+Mon Nov 4 16:49:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): allow 'when'-less case statement; persuaded
+ by Sean Chittenden.
+
+Mon Nov 4 06:28:09 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * Makefile.in, ext/extmk.rb, bcc32/Makefile.sub,
+ win32/Makefile.sub: Introduce better command line syntax
+ (--make/--make-flags/--extstatic) to extmk.rb and instruby.rb.
+ Previously such command as 'make -j3 install' with pmake doesn't
+ fail. Formerly extmk.rb was receiving "make -j 3 -j 3" via the
+ command line arguments and just ended up recognizing the first
+ "3" as destdir. [with help of usa]
+
+Mon Nov 4 03:59:51 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/getopts.rb: Do not choke on characters that cannot be used
+ in a variable name. Replace them with `_'. Define a hash named
+ $OPT for convenience.
+
+Sat Nov 2 00:38:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): added Object#object_id, new name for
+ Object#id. [new]
+
+ * object.c (rb_obj_id_obsolete): give warning for Object#id.
+
+ * numeric.c (fix_intern): added Fixnum#to_sym. [new]
+
+ * object.c (sym_to_sym): rename from Symbol#intern
+
+Fri Nov 1 14:21:06 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_zip): added Enumerable#zip. [new]
+
+ * array.c (rb_ary_zip): added Array#zip.
+
+Thu Oct 31 20:10:18 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (init_syserr): remove sys_nerr dependency.
+
+Thu Oct 31 09:31:51 2002 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_export_method): undef'ed method visibility should not
+ be changed.
+
+Wed Oct 30 17:00:47 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_public_method_defined, etc.): new methods:
+ public_method_defined?, private_method_defined?,
+ protected_method_defined?
+
+ * object.c (rb_obj_public_methods): new method
+ Object#public_methods.
+
+ * class.c (ins_methods_i): Object#methods should list both public
+ and protected methods.
+
+ * class.c (rb_class_public_instance_methods): new method
+ Module#public_instance_methods.
+
+Wed Oct 30 06:29:00 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * eval.c, file.c, gc.c, io.c, object.c, ruby.c, ruby.h, struct.c,
+ ext/socket/socket.c: differentiate long and int; use proper
+ printf type specifiers and do casts where appropriate.
+
+Wed Oct 30 04:07:33 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (error_print, rb_longjmp, rb_thread_schedule): flush
+ error message. [ruby-dev:18582]
+
+ * eval.c (ruby_cleanup): added. just clean up without exit.
+ [ruby-dev:18582]
+
+ * eval.c (ruby_exec): added. execute main evaluation tree without
+ exit. [ruby-dev:18582]
+
+ * intern.h: prototypes; ruby_cleanup, ruby_exec
+
+Tue Oct 29 02:00:08 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/extmk.rb (extmake): use dummy_makefile to create dummy
+ Makefile.
+
+ * lib/mkmf.rb (find_executable0): EXEEXT is optional.
+
+ * lib/mkmf.rb (dummy_makefile): make dummy Makefile content.
+
+ * lib/mkmf.rb (create_makefile): define EXTLIB replacing -l.
+
+ * lib/mkmf.rb ($bccwin): detect Borland make by help message.
+
+ * lib/mkmf.rb (CLEANINGS): common rules to clean.
+
+Mon Oct 28 01:27:17 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * djgpp/config.sed (@program_transform_name@): use `%', not `,'.
+
+Sun Oct 27 22:59:50 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * ext/extmk.rb(78) : The unnecessary error when installing by bccwin32
+ is controlled.
+
+ * lib/mkmf.rb(773) : Also in the case of bccwin32, the path was added.
+
+Sun Oct 27 17:07:25 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * djgpp/*: sync with the latest.
+
+ * ext/extmk.rb, lib/mkmf.rb: flush $stdout.
+
+ * io.c (READ_DATA_PENDING_COUNT, READ_DATA_PENDING_PTR):
+ undef these macros on DJGPP.
+
+Sat Oct 26 10:11:47 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * node.h (nd_type): cast the value to int.
+
+Sat Oct 26 04:27:35 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dbm/dbm.c (fdbm_indexes, fdbm_select): add a missing
+ argument and prevent coredump when a nonexistent key is
+ specified.
+
+ * ext/sdbm/init.c (fsdbm_indexes, fsdbm_select): ditto.
+
+Sat Oct 26 03:28:43 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * eval.c, gc.c: use a common set of alloca() #ifdef's. This fixes
+ the build with Intel C Compiler for Linux.
+
+ * eval.c (rb_f_require): declare old_func with a real type, not
+ just type modifiers.
+
+Fri Oct 25 02:55:01 2002 Minero Aoki <aamine@loveruby.net>
+
+ * string.c (rb_str_split_m): RSTRING(str)->ptr might become NULL.
+ [ruby-dev:18581]
+
+Thu Oct 24 21:57:02 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (LIBPATHFLAG): avoid $ substitution.
+ [ruby-dev:18577]
+
+ * ext/extmk.rb (extmake): expand $srcdir.
+
+ * ext/win32ole/extconf.rb: should not override $CFLAGS, but
+ append.
+
+ * lib/mkmf.rb (config_string): use given config hash.
+
+ * bcc32/Makefile.sub (.rc.res): directory part may be empty in
+ Borland make.
+
+Thu Oct 24 03:38:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb (create_makefile): site-install target for backward
+ compatibility.
+
+ * lib/mkmf.rb (init_mkmf): libdir prior to topdir.
+
+ * configure.in (LIBPATHFLAG): should escape $. [ruby-dev:18572]
+
+ * mkconfig.rb: never substitute escaped $$.
+
+ * instruby.rb: not install LIBRUBY_SO unless enable-shared.
+ [ruby-dev:18569]
+
+Wed Oct 23 19:16:06 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): added NODE_DSYM, symbol literal with
+ interpolation.
+
+ * node.h: ditto.
+
+ * intern.h: prototypes; rb_is_junk_id, rb_str_dump, rb_str_intern
+
+ * object.c (sym_inspect): escape and quote for non-alphanumeric
+ symbols.
+
+ * parse.y (dsym, tokadd_string, yylex): extended symbol literals.
+
+ * parse.y (rb_is_junk_id): added.
+
+ * string.c (rb_str_dump, rb_str_intern) : make extern.
+
+ * lib/mkmf.rb (create_makefile): deffile should be removed by
+ distclean, not clean.
+
+Tue Oct 22 23:56:41 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (init_mkmf): add dir_config("opt").
+
+Tue Oct 22 19:44:03 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/configure.bat : The command line when calling setup.mak is
+ corrected.
+
+ * bcc32/readme.bcc32 : It follows up about the option of configure.bat.
+
+Tue Oct 22 15:23:19 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * instruby.rb: add dryrun mode.
+
+ * ext/extmk.rb (extmake): add install: target to dummy Makefile.
+
+ * ext/extmk.rb (extmake): avoid Borland make's quirk behavior.
+
+ * lib/mkmf.rb (link_command): opt is not a makefile macro.
+
+ * bcc32/Makefile.sub ($(LIBRUBY_SO) $(LIBRUBY)): EXTOBJS were not
+ linked.
+
+ * bcc32/Makefile.sub (ext/extinit.obj): missing.
+
+ * bcc32/Makefile.sub (TRY_LINK): options have to place before any
+ non-option arguments.
+
+ * win32/Makefile.sub (TRY_LINK): need -link and -libpath options.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub (RANLIB): logical
+ operator never work with command.com.
+
+Tue Oct 22 00:59:59 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RUBY_CPPOUTFILE): fix cache file bug.
+
+ * lib/mkmf.rb (link_command): put 'opt' after conftest.c for
+ static linking.
+
+Mon Oct 21 22:53:02 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (XCFLAGS): CFLAGS to compile ruby itself.
+
+ * configure.in (LIBEXT): suffix for static libraries.
+
+ * configure.in (LIBPATHFLAG): switch template to specify library
+ path.
+
+ * configure.in (LINK_SO): command to link shared objects.
+
+ * configure.in (DEFFILE, ARCHFILE): miscellaneous system dependent
+ files.
+
+ * configure.in (EXPORT_PREFIX): prefix to exported symbols on
+ Windows.
+
+ * configure.in (COMMON_LIBS, COMMON_MACROS, COMMON_HEADERS):
+ libraries, macros and headers used in common.
+
+ * configure.in (RUBYW_INSTALL_NAME, rubyw_install_name): GUI mode
+ executable name.
+
+ * Makefile.in (CFLAGS): append XCFLAGS.
+
+ * Makefile.in (PREP): miscellaneous system dependent files.
+
+ * Makefile.in (ruby.imp, ext/extinit.o): moved from ext/extmk.rb.
+
+ * Makefile.in (fake.rb): CROSS_COMPILING keeps building platform.
+
+ * Makefile.in (MAKEFILES): depend on *.in and config.status.
+
+ * Makefile.in (parse.c): replace "y.tab.c" with actual name for
+ byacc.
+
+ * ext/extmk.rb, lib/mkmf.rb: integrated.
+
+ * ext/extmk.rb: propagate MFLAGS.
+
+ * ext/extmk.rb (extmake): make dummy Makefile to clean even if no
+ Makefile is made.
+
+ * lib/mkmf.rb (older): accept multiple file names and Time
+ objects.
+
+ * lib/mkmf.rb (xsystem): split and quote.
+
+ * lib/mkmf.rb (cpp_include): make include directives.
+
+ * lib/mkmf.rb (try_func): try whether specified function is
+ available.
+
+ * lib/mkmf.rb (install_files): default to site-install.
+
+ * lib/mkmf.rb (checking_for): added.
+
+ * lib/mkmf.rb (find_executable0): just find executable file with
+ no message.
+
+ * lib/mkmf.rb (create_header): output header file is variable.
+
+ * lib/mkmf.rb (create_makefile): separate sections.
+
+ * lib/mkmf.rb (init_mkmf): initialize global variables.
+
+ * win32/Makefile.sub, bcc32/Makefile.sub (CPP, AR): added.
+
+ * bcc32/Makefile.sub (ARCH): fixed to i386.
+
+ * win32/Makefile.sub, bcc32/Makefile.sub (miniruby): should not
+ link EXTOBJS.
+
+ * ext/dl/extconf.rb: use try_cpp to cross compile.
+
+ * ext/dl/extconf.rb: not modify files in source directory.
+
+Fri Oct 18 23:11:21 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (value_expr0): allow return/break/next/redo/retry in rhs
+ of logical operator. [ruby-dev:18534]
+
+ * parse.y (remove_begin): eliminate useless NODE_BEGIN.
+ [ruby-dev:18535]
+
+Fri Oct 18 01:02:44 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c, eval.c: Use (*_NSGetEnviron()) instead of environ on
+ Darwin for namespace cleanness. [ruby-core:00537]
+
+ * dln.c (dln_load): Fix Darwin support that has been disabled and
+ switch to using it on Darwin instead of the system dlopen().
+ [ruby-core:00541]
+
+Thu Oct 17 19:17:56 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (w_byten): added; write n bytes from s to arg.
+
+ * marshal.c (dump): flush buffered data.
+
+ * marshal.c (marshal_dump, r_byte, r_bytes0, marshal_load): unify
+ marshaling I/O. [ruby-talk:53368]
+
+Thu Oct 17 12:58:24 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: stat.blksize might be 0/nil.
+
+ * lib/fileutils.rb: change coding style.
+
+Wed Oct 16 22:35:53 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * sprintf.c (rb_f_sprintf): disallow mixed usage of numbered and
+ unnumbered arguments. [ruby-dev:18531]
+ get rid of memory leak at exception. [ruby-core:00460]
+
+Wed Oct 16 13:36:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * variable.c (rb_global_entry): not add global entry until
+ initialized to avoid accessing it while GC. [ruby-dev:18514]
+
+ * variable.c (rb_alias_variable): ditto.
+
+Wed Oct 16 01:03:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_str_to_dbl): RString ptr might be NULL.
+
+ * object.c (rb_cstr_to_dbl): p pointer might be NULL.
+
+ * bignum.c (rb_str_to_inum): RString ptr might be NULL.
+
+ * bignum.c (rb_cstr_to_inum): str pointer might be NULL.
+
+Sat Oct 12 23:44:11 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_putc): wrong condition to fill or flush on
+ bccwin32. [ruby-win32:408]
+
+Fri Oct 11 15:58:06 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): rescue modifier is now an operator with
+ precedence right below assignments. i.e. "a = b rescue c" now
+ parsed as "a = (b rescue c)", not as "(a = b) rescue c". [new]
+ [experimental]
+
+Fri Oct 11 06:05:30 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_fclose, rb_w32_close): use closesocket()
+ for socket. [ruby-win32:382]
+
+ * win32/win32.c (StartSockets): set NtSocketsInitialized.
+
+ * win32/win32.h: prototypes; rb_w32_fclose, rb_w32_close
+
+Fri Oct 11 00:24:57 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * gc.c (ruby_xmalloc, ruby_xrealloc): restrict total allocation
+ size according to memories consumed by live objects.
+ [ruby-dev:18482]
+
+ * gc.c (gc_sweep): estimate how live objects consume memories.
+
+Thu Oct 10 17:26:12 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tcltklib/stubs.c (ruby_tcltk_stubs): fix memory leak.
+ [ruby-dev:18478]
+
+Thu Oct 10 15:20:18 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/weakref.rb (WeakRef::@@final): use Hash#delete.
+
+ * lib/weakref.rb (WeakRef::__getobj__): examine if alive or not by
+ ID_REV_MAP to deal with recycled object. [ruby-dev:18472]
+
+ * lib/weakref.rb (WeakRef::weakref_alive?): ditto.
+
+Wed Oct 9 07:11:25 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * gc.c (gc_sweep): also adjust heaps_limits when free unused heap
+ page. [ruby-core:00526]
+
+ * io.c (io_fflush): condition to retry can occur.
+
+ * io.c (io_write): returned 0 wrongly if no error occurred.
+
+Tue Oct 8 14:19:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (io_write): must check returned value from fwrite() before
+ test with ferror(). (ruby-bugs-ja:PR#350)
+
+Tue Oct 8 10:55:23 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb (PrettyPrint.singleline_format): new method.
+
+Mon Oct 7 16:43:07 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivrem): bignum zero's len should not be 0.
+
+Mon Oct 7 15:36:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivmod): wrong condition check for Bignum zero.
+
+ * bignum.c (Init_Bignum): need to add Bignum#div.
+
+Sun Oct 6 00:49:15 2002 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (rb_load): should not pass blocks to the loaded file.
+ [ruby-dev:18458]
+
+Fri Oct 4 20:25:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_interrupt, rb_thread_signal_raise): no need to
+ save dead thread context. (same as [ruby-dev:18322])
+ (ruby-bugs-ja:PR#349)
+
+Fri Oct 4 13:05:58 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RUBY_PROG_GNU_LD): check whether the linker is GNU ld.
+
+ * ext/extmk.rb (create_makefile): add -Wl,-no-undefined to $DLDFLAGS
+ on Linux if GNU ld is used and --enable-shared is specified.
+
+Fri Oct 4 02:21:16 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_rshift): num should be initialized by carry
+ bits if x is negative.
+
+ * bignum.c (bigdivmod): len for bignum zero is 1, not 0.
+
+Thu Oct 3 20:22:11 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bcc32/mkexports.rb: to work on cygwin via telnet.
+ [ruby-win32:358]
+
+ * ext/tcltklib/tcltklib.c (ip_invoke): requires command name
+ argument. [ruby-dev:18438]
+
+ * eval.c (ruby_init, ruby_options): Init_stack() with local
+ location. (ruby-bugs-ja:PR#277)
+
+ * eval.c (rb_call0): disable trace call. [ruby-dev:18074]
+
+ * eval.c (eval, rb_load): enable trace call. [ruby-dev:18074]
+
+ * eval.c (rb_f_require): set source file name for extension
+ libraries. [ruby-dev:18445]
+
+ * gc.c (Init_stack): prefer address of argument rather than local
+ variable to initialize rb_gc_stack_start.
+
+ * ruby.c (translate_char): translate a character in a string;
+ DOSISH only. [ruby-dev:18274]
+
+ * ruby.c (ruby_init_loadpath): added argv[0] handling under
+ Human68K. [ruby-dev:18274]
+
+ * ruby.c (proc_options): translate directory separator in $0 to
+ '/'. [ruby-dev:18274]
+
+Thu Oct 3 00:27:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/delegate.rb (Delegator::initialize): use Object#class
+ instead of deprecated Object#type.
+
+Wed Oct 2 23:32:48 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * configure.in (RUBY_CHECK_IO_NEED_FLUSH): check whether fflush()
+ is needed.
+
+ * io.c (flush_before_seek): flush before seek if buffered data
+ may remain.
+
+ * io.c (rb_io_check_readable): flush if the last operation was
+ write.
+
+ * io.c (rb_io_check_writable): flush if the last operation was
+ read.
+
+ * rubyio.h (FMODE_RBUF): added.
+
+Wed Oct 2 23:09:20 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_wait_readable): handle retryable errors.
+
+ * io.c (rb_io_wait_writable): ditto.
+
+ * ext/socket/socket.c (bsock_send): ditto.
+
+ * ext/socket/socket.c (s_recvfrom): ditto.
+
+ * ext/socket/socket.c (s_accept): ditto.
+
+ * ext/socket/socket.c (udp_send): ditto.
+
+ * ext/socket/getaddrinfo.c (afdl): made private structures constant.
+
+ * rubyio.h: prototype; rb_io_wait_readable(), rb_io_wait_writable().
+
+Wed Oct 2 13:03:58 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set ac_cv_func_setitimer to "no" on Cygwin.
+
+Wed Oct 2 10:59:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_sweep): free unused heap page to reduce process size if
+ possible.
+
+ * object.c (rb_obj_type): deprecated Object#type; use Object#class.
+
+Tue Oct 1 23:48:32 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/socket/socket.c (init_sock): no need for special finalizer,
+ socket descriptor is no longer duplicated in 1.7.
+ [ruby-talk:50732]
+
+ * win32/win32.c, win32/win32.h (rb_w32_fddup, rb_w32_fdclose):
+ delete.
+
+Mon Sep 30 20:29:10 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_inspect): not need to raise IOError for closed
+ stream. [ruby-talk:51871]
+
+Mon Sep 30 03:48:15 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_check): need no Fixnum check.
+
+Sun Sep 29 18:30:24 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (rb_w32_open_osfhandle): adjust
+ rb_w32_open_osfhandle() with _open_osfhandle().
+
+ * win32/win32.c (rb_w32_accept, rb_w32_socket): return -1 on
+ error.
+
+ * win32/win32.h: should use file descriptor instead of SOCKET.
+
+Sun Sep 29 06:33:03 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (is_socket, rb_w32_select, rb_w32_accept, rb_w32_bind,
+ rb_w32_connect, rb_w32_getpeername, rb_w32_getsockname,
+ rb_w32_getsockopt, rb_w32_ioctlsocket, rb_w32_listen, rb_w32_recv,
+ rb_w32_recvfrom, rb_w32_send, rb_w32_sendto, rb_w32_setsockopt,
+ rb_w32_shutdown, rb_w32_socket, rb_w32_gethostbyaddr,
+ rb_w32_gethostbyname, rb_w32_gethostname, rb_w32_getprotobyname,
+ rb_w32_getprotobynumber, rb_w32_getservbyname, rb_w32_getservbyport):
+ need to protect WSAGetLastError() by RUBY_CRITICAL. [ruby-talk:51778]
+
+Sat Sep 28 20:06:36 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * keywords: add braces around initializers.
+
+Sat Sep 28 13:19:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * hash.c (rb_hash_become): should check self-assignment after
+ conversion.
+
+Sat Sep 28 10:40:44 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_become): Hash#become should check added
+ self-assignment.
+
+ * class.c (rb_make_metaclass): metaclass of a superclass may be
+ NULL at boot time.
+
+Sat Sep 28 09:50:03 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * ext/extmk.rb: The condition judgment without necessity was deleted.
+
+Fri Sep 27 18:40:42 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_deadlock): more verbose message at deadlock.
+
+ * eval.c (rb_thread_schedule): ditto.
+
+ * eval.c (rb_thread_join): ditto.
+
+Fri Sep 27 13:24:35 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): Class#inherited should be called after the
+ execution of the class body.
+
+Fri Sep 27 02:41:53 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha1: Use OpenSSL's SHA1 engine if available. It is
+ much faster than what we have now (sha1.[ch]). Add a knob
+ (--with-bundled-sha1) to extconf.rb which makes it use the
+ bundled one anyway.
+
+Fri Sep 27 02:25:14 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/rmd160: Use OpenSSL's RMD160 engine if available. It
+ is much faster than what we have now (rmd160.[ch]). Add a knob
+ (--with-bundled-rmd160) to extconf.rb which makes it use the
+ bundled one anyway.
+
+Fri Sep 27 01:23:39 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/md5: Use OpenSSL's MD5 engine if available. It is
+ much faster than what we have now (md5.[ch]). Add a knob
+ (--with-bundled-md5) to extconf.rb which makes it use the
+ bundled one anyway.
+
+Thu Sep 26 22:44:21 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_s_digest): Fix a double
+ free() bug mingled with allocation framework deployment.
+
+ * ext/digest/digest.c (rb_digest_base_s_hexdigest): Get rid of
+ redundant struct allocation.
+
+Thu Sep 26 09:52:52 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): remove "return outside of method" check at
+ compile time.
+
+Wed Sep 25 23:51:29 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dir.c (glob_helper): must not closedir() when exception raised
+ while globbing "**".
+
+ * marshal.c (w_uclass): unused variable.
+
+ * re.c (match_clone): unused.
+
+ * regex.c (re_compile_pattern): get rid of implicit promotion from
+ plain char to int.
+
+Wed Sep 25 17:46:46 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (libpathflag): restore ENV['LIB'] when some error
+ occurred.
+
+Wed Sep 25 16:14:51 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match): p1 may exceed pend limit.
+
+Mon Sep 23 23:22:43 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_call0): must not clear ruby_current_node, or
+ backtrace cannot be generated.
+
+ * intern.h (ruby_yyparse): rather than yyparse().
+
+ * parse.y (yylex): nextc() returns -1 at end of input, not 0.
+
+ * parse.y (newline_node): reduce duplicated newline node.
+
+ * parse.y (literal_concat): get rid of warning.
+
+ * parse.y (new_evstr): fixed junk code.
+
+Mon Sep 23 19:57:52 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RUBY_MINGW32): new macro. check for the MinGW
+ compiler environment.
+
+ * lib/mkmf.rb: refactoring.
+
+Mon Sep 23 08:27:11 2002 Tanaka Akira <akr@m17n.org>
+
+ * io.c (appendline): forget to terminate with nul.
+
+Mon Sep 23 02:46:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_run): should set toplevel visibility again here.
+
+ * eval.c (rb_eval): should not rely on ruby_class == rb_cObject
+ check. Besides allow implicit publicity for attribute set
+ methods.
+
+ * parse.y (primary): need not to check class_nest, just set
+ whether method is an attrset or not.
+
+Sun Sep 22 21:49:42 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (call_trace_func): should not call trace function while
+ compilation.
+
+ * eval.c (rb_call0): also inside c-func.
+
+ * parse.y (yycompile): ditto.
+
+ * ruby.c (require_libraries): preserve source file/line for each
+ require.
+
+Sun Sep 22 17:08:11 2002 Tanaka Akira <akr@m17n.org>
+
+ * string.c (rb_str_each_line): p might be at the top of the
+ string.
+
+Sat Sep 21 23:28:28 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_make_metaclass): class of metaclass should be
+ metaclass of superclass, unless class itself is a metaclass;
+ class of metaclass of metaclass should point back to self.
+ eh, confusing, isn't it.
+
+ * class.c (rb_singleton_class): check if its class is singleton
+ AND attached to self.
+
+Sat Sep 21 22:23:41 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_raise): no need to save dead thread context.
+ [ruby-dev:18322]
+
+Fri Sep 20 23:02:01 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (block_append): eliminate unused literal nodes.
+
+ * parse.y (literal_concat): refined literal concatenation.
+
+Fri Sep 20 19:43:40 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Merge rough/lib/set.rb rev.1.5-1.15.
+
+Wed Sep 18 12:41:16 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should define class/module under ruby_cbase.
+
+ * eval.c (rb_eval): should set class/module path based on
+ ruby_cbase, not ruby_class.
+
+ * eval.c (module_setup): use ruby_cbase instead of ruby_class.
+
+Tue Sep 17 21:06:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_die): put thread dead state.
+
+ * eval.c (rb_thread_atfork): free stack buffer at fork too.
+
+Tue Sep 17 01:13:31 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_nesting): load wrapping module should appear in
+ Module#nesting list. (ruby-bugs-ja:PR#328)
+
+ * eval.c (rb_thread_remove): free stack buffer on remove.
+
+Tue Sep 17 00:58:35 2002 Minero Aoki <aamine@loveruby.net>
+
+ * io.c: add parameter prototype.
+
+ * re.c: ditto.
+
+Sun Sep 15 21:14:22 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * win32/win32.c (rb_w32_opendir, rb_w32_stat): Corresponds to
+ the unjust path containing ".
+
+Sun Sep 15 19:48:55 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (OUTFLAG, CPPOUTFILE): moved from lib/mkmf.rb.
+ check whether ${CPP} accepts the -o option.
+
+ * win32/Makefile.sub (OUTFLAG, CPPOUTFILE): ditto.
+
+ * bcc32/Makefile.sub (OUTFLAG, CPPOUTFILE): ditto.
+
+ * djgpp/config.sed (OUTFLAG, CPPOUTFILE): ditto.
+
+ * lib/mkmf.rb (OUTFLAG, CPPOUTFILE): use CONFIG.
+ make easy to understand log.
+
+ * mkconfig.rb (val): should not strip.
+
+Sat Sep 14 20:13:42 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * error.c(rb_sys_fail): remove case EPIPE on bcc32 .
+
+Fri Sep 13 23:39:49 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dir.c (glob_func_caller): add prototype to get rid of warning.
+
+Fri Sep 13 18:35:12 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): avoid uninitialized global/class variable
+ warnings at `||='. [ruby-dev:18278]
+
+ * parse.y (stmt, arg): ditto
+
+Fri Sep 13 13:28:04 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb ($INSTALLFILES): avoid warning when $VERBOSE mode.
+
+Thu Sep 12 23:20:10 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/setup.mak : Control of a message.
+
+ * bcc32/makefile.sub : include resource.
+
+Thu Sep 12 18:10:03 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dir.c (glob_helper): fixed freeing buffer. (ruby-bugs-ja:PR#332)
+
+ * dir.c (glob_helper): should pass matched path. (ruby-bugs-ja:PR#333)
+
+Thu Sep 12 00:09:32 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_trap_eval): preserve thread status and so on.
+ [ruby-talk:40337], [ruby-core:00019]
+
+Wed Sep 11 21:25:52 2002 Tanaka Akira <akr@m17n.org>
+
+ * pp.rb (ARGF.pretty_print): implemented.
+ (PP.pp): arguments reordered.
+
+Wed Sep 11 18:55:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (proc_to_s): refined format. [ruby-dev:18215]
+
+Wed Sep 11 17:47:17 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, win32/win32.h (rb_w32_getpid): negate pid under Win9x.
+ [ruby-dev:18262]
+
+Wed Sep 11 12:58:57 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (get_pat): Add an extra argument "quote".
+
+ * string.c (rb_str_match_m): Do not bother to convert if a regexp
+ is given.
+
+Wed Sep 11 11:33:40 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub: remove unnecessary `.dll' from filename of
+ dll's resource file.
+
+ * cygwin/GNUmakefile.in: ditto. [ruby-dev:17103]
+
+ * win32/Makefile.sub: ditto. [ruby-dev:17103]
+
+ * win32/resource.rb: ditto. [ruby-dev:17103]
+
+Wed Sep 11 09:59:46 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_wait_readable): added.
+
+ * io.c (rb_io_wait_writable): added.
+
+ * io.c (io_read_retryable): added.
+
+ * io.c (io_write): retry on EINTR, ERESTART and EWOULDBLOCK.
+ [ruby-dev:17855], [ruby-dev:17878], [ruby-core:00444]
+
+ * io.c (rb_io_fread): ditto.
+
+ * io.c (read_all): ditto.
+
+ * io.c (appendline): ditto.
+
+ * io.c (rb_io_each_byte): ditto.
+
+ * io.c (rb_io_getc): ditto.
+
+Wed Sep 11 09:29:24 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (ext): make directory `ext' on compile dir.
+ [ruby-dev:18255]
+
+Wed Sep 11 00:41:10 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_mod_define_method): initialize orig_func too.
+ (ruby-bugs-ja:PR#330)
+
+Wed Sep 11 00:01:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (glob_helper): prevent memory leak using rb_protect().
+
+ * string.c (rb_str_associate): no need to check freeze flag.
+
+ * string.c (rb_str_resize): should honor STR_ASSOC flag on
+ resize.
+
+ * string.c (rb_str_resize): proper STR_ASSOC handling. pointed
+ out by Michal Rokos.
+
+ * string.c (rb_str_buf_cat): ditto.
+
+ * string.c (rb_str_cat): ditto.
+
+ * string.c (rb_str_buf_append): ditto.
+
+ * string.c (rb_str_append): ditto.
+
+Tue Sep 10 23:35:46 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (nextc): restore line number after here documents.
+ (ruby-bugs-ja:PR#331)
+
+ * parse.y (heredoc_restore): ditto.
+
+Tue Sep 10 18:26:52 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb, lib/mkmf.rb ($INCFLAGS): new var for -I$(topdir).
+
+ * lib/mkmf.rb: add #define WIN32_LEAN_AND_MEAN to improve compile
+ times.
+
+Tue Sep 10 17:16:14 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (miniruby): shouldn't link $(EXTOBJS).
+ [ruby-dev:17059]
+
+ * win32/Makefile.sub ($(LIBRUBY_A), $(LIBRUBY)): avoid lib.exe's
+ warning. [ruby-dev:17059]
+
+ * win32/Makefile.sub: remove unnecessary rules. [ruby-dev:17059]
+
+ * win32/configure.bat, win32/setup.mak, win32/README.win32: enable to
+ pass some arguments to configure. [ruby-dev:17059]
+
+Mon Sep 9 23:43:33 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.h (S_I?USR): define only if not mingw32.
+
+Mon Sep 9 11:21:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/stringio/stringio.c (strio_set_string): reinitialize
+ properly.
+
+ * ext/stringio/stringio.c (strio_become): added self-assign check
+ and experimental auto-conversion to StringIO.
+
+ * ext/stringio/stringio.c (strio_reopen): added.
+
+
+Sun Sep 8 21:29:25 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * time.c (time_free): prototype; struct time_object -> void *.
+ avoid GCC warnings.
+
+ * lib/mkmf.rb, ext/extmk.rb ($LINK, $CPP): move to lib/mkmf.rb.
+
+Sun Sep 8 19:02:28 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c: prototype; time_free() to avoid VC++ warnings.
+
+ * ext/tcltklib/tcltklib.c: prototype; invoke_queue_handler() to avoid
+ VC++ warning.
+
+ * win32/win32.c (rb_w32_stat): remove S_IWGRP and S_IWOTH bits from
+ st_mode.
+
+ * win32/win32.h (S_I*): define if not defined.
+
+Sun Sep 8 14:38:31 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: modify program_prefix only if specified
+ --program-prefix.
+
+ * configure.in: don't generate ext/extmk.rb.
+
+ * Makefile.in: execute directly $(srcdir)/ext/extmk.rb.
+ remove -Cext option, "Dir::chdir 'ext'" in ext/extmk.rb.
+
+ * {win32,bccwin32}/Makefile.sub: ditto.
+
+ * instruby.rb: ditto.
+
+ * ext/extmk.rb: renamed from ext/extmk.rb.in.
+
+ * lib/mkmf.rb (module Logging): create log files (mkmf.log)
+ in each extension module directories.
+
+ * ext/extmk.rb: ditto.
+
+ * lib/mkmf.rb (macro_defined?): new method.
+
+ * ext/.cvsignore: remove extmk.rb.
+
+ * ext/*/.cvsignore: add "*.def".
+
+ * lib/mkmf.rb (have_struct_member): moved from ext/socket/extconf.rb.
+
+ * ext/socket/extconf.rb: use macro_defined? instead of egrep_cpp.
+
+ * ext/etc/extconf.rb: use have_struct_member.
+
+ * ext/etc/etc.c: add prefix HAVE_ST_ to PW_ macros.
+
+Sun Sep 8 14:36:40 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/configure.bat : Control of a message.
+ * bcc32/makefile.sub : @(sitearch) typo.
+ * ext/extmk.rb.in : [bccwin32] libdir is added to a library path.
+ * lib/mkmf.rb : ditto.
+
+Sat Sep 7 23:32:56 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/inf-ruby.el (inferior-ruby-error-regexp-alist): regexp
+ alist for error message from ruby.
+
+ * misc/inf-ruby.el (inferior-ruby-mode): fixed for Emacs.
+
+ * misc/inf-ruby.el (ruby-send-region): compilation-parse-errors
+ doesn't parse first line, so insert separators before each
+ evaluations.
+
+Sat Sep 7 19:46:57 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Disallow Set.new(false). Add even more tests.
+ [Submitted by: "Christoph" <chr_news@gmx.net>]
+
+Sat Sep 7 19:23:56 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Fix a bug in flatten()'s recursive set detection.
+ [Submitted by: "Christoph" <chr_news@gmx.net>] Some tests
+ against the bug are added.
+
+ * lib/set.rb: Resurrect the test suite by putting it after
+ __END__ and executing `eval DATA.read'.
+
+Sat Sep 7 08:41:39 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (rb_gc_mark_parser): ruby_eval_tree is marked in eval.c.
+
+Fri Sep 6 20:01:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/mkmf.rb ($CC): command to compile C source.
+
+ * lib/mkmf.rb (logging): added.
+
+ * lib/mkmf.rb (try_compile): added.
+
+ * lib/mkmf.rb (egrep_cpp): use internal grep when pattern is
+ Regexp, otherwise use external egrep command but get rid of
+ pipe of command.com.
+
+ * lib/mkmf.rb (have_func): local variable should be volatile not
+ to be eliminated by optimization.
+
+ * lib/mkmf.rb (create_makefile): link with CONFIG["LIBS"].
+
+ * lib/mkmf.rb (create_makefile): emit .SUFFIXES:.
+
+Fri Sep 6 12:11:22 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (rb_gc_mark_parser): should mark ALL global variables
+ defined in parse.y.
+
+Fri Sep 6 01:15:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (ruby_xmalloc): remove MALLOC_LIMIT to avoid frequent
+ garbage collection.
+
+Fri Sep 6 11:47:37 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (rb_gc_mark_parser): should mark global variables
+ defined in parse.y.
+
+Fri Sep 6 10:34:32 2002 Minero Aoki <aamine@loveruby.net>
+
+ * io.c (rb_io_puts): RSTRING(line)->ptr might be NULL.
+
+Fri Sep 6 10:26:37 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: should not put non-NODE-VALUEs in the semantic stack.
+
+Fri Sep 6 05:48:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (rb_path_check): nothing to check under DOSISH.
+ [ruby-list:35772]
+
+Fri Sep 6 05:03:50 2002 Minero Aoki <aamine@loveruby.net>
+
+ * gc.c (rb_gc): should mark parser.
+
+ * parse.y (rb_gc_mark_parser): new function.
+
+ * intern.h (rb_gc_mark_parser): added.
+
+Thu Sep 5 18:32:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_path2class): should not use rb_eval_string().
+
+Thu Sep 5 17:18:22 2002 Michal Rokos <michal@ruby-lang.org>
+
+ * dln.c: fix memory leak in dln_load (ruby-core:405) and
+ in load_1 (ruby-core:407)
+
+Thu Sep 5 15:43:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_extended): should allow marshaling of object which
+ is extended by named module.
+
+ * class.c (rb_make_metaclass): super may be T_ICLASS, need to skip.
+
+Thu Sep 5 13:09:22 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): overriding false constant with class/module
+ definition should be error. (PR#327)
+
+Thu Sep 5 01:24:26 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * extmk.rb (create_makefile): add macro MAKEDIRS, INSTALL_PROG,
+ INSTALL_DATA.
+
+ * extmk.rb (create_makefile): support for building to any directory.
+
+ * extmk.rb (xsystem): move to mkmf.rb.
+
+ * mkmf.rb (xsystem): support for extmk.rb
+
+ * mkmf.rb ($CPP): remove '-E' option. add CPPFLAGS.
+
+Wed Sep 4 16:15:17 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: ==(o) should be aware of all the Set variant
+ instances, not just those of its subclasses. [Submitted by:
+ "Christoph" <chr_news@gmx.net>]
+
+ * lib/set.rb: - Fix eql?(). [ditto]
+
+Wed Sep 4 15:23:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_make_metaclass): obj.meta.super.meta should be equal
+ to obj.meta.meta.super (ruby-bugs-ja:PR#324).
+
+Wed Sep 4 05:10:16 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * parse.y (yylex): the warning message "invalid
+ character syntax" was never issued (ruby-bugs-ja:PR#323).
+
+Wed Sep 4 01:08:45 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_bytes): do not use alloca (ruby-bugs:PR#382).
+
+Tue Sep 3 17:12:59 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * extmk.rb: require mkmf.rb. remove duplicate methods.
+ use Config::CONFIG["FOO"] instead of @FOO@.
+
+ * mkmf.rb: support for extmk.rb.
+
+Mon Sep 2 23:01:50 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * re.c (rb_reg_search): MatchData must be rb_cMatch.
+ (ruby-bugs-ja:PR#319)
+
+Mon Sep 2 21:21:46 2002 Minero Aoki <aamine@loveruby.net>
+
+ * gc.c (gc_sweep): does reclaim nodes in also compile time, if we
+ can.
+
+ * ruby.c (load_file): omit GC if we can.
+
+ * parse.y (ruby_parser_stack_on_heap): new function.
+
+ * intern.h (ruby_parser_stack_on_heap): added.
+
+Mon Sep 2 18:45:07 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_copy_generic_ivar): remove old generic instance
+ variable table if it exists.
+
+Sun Sep 1 15:54:33 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * config.guess: fixed for Linux/PPC.
+
+Sat Aug 31 09:38:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_make_metaclass): metaclass of a metaclass is a
+ metaclass itself.
+
+Fri Aug 30 22:45:16 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Added.
+
+Fri Aug 30 20:58:54 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_Call): typo.
+
+Fri Aug 30 19:45:52 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * variable.c (rb_const_assign): st_delete() takes pointer to key.
+
+Fri Aug 30 19:40:28 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/Win32API/Win32API.c (Win32API_Call): RSTRING()->ptr may be
+ NULL.
+
+ * ext/nkf/nkf.c (rb_nkf_guess): ditto.
+
+ * ext/readline/readline.c (readline_s_set_completion_append_character):
+ ditto.
+
+ * ext/socket/socket.c (sock_s_getaddrinfo, sock_s_getnameinfo):
+ ditto.
+
+ * ext/tcltklib/tcltklib.c (ip_toUTF8, ip_fromUTF8): ditto.
+
+Fri Aug 30 01:32:17 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_singleton_class): superclass of a metaclass
+ should be a metaclass of superclass.
+
+ * range.c (range_eq): two instances must belong to a same class to
+ be equal.
+
+ * range.c (range_eql): ditto.
+
+ * io.c (rb_io_taint_check): frozen check added.
+
+ * file.c (rb_stat_become): frozen check added.
+
+ * object.c (rb_obj_become): ditto.
+
+ * re.c (rb_reg_become): ditto.
+
+ * struct.c (rb_struct_become): ditto.
+
+ * time.c (time_become): ditto.
+
+ * array.c (rb_ary_become): should call rb_ary_modify().
+
+ * hash.c (rb_hash_become): should call rb_hash_modify().
+
+ * compar.c (cmp_equal): should not use NUM2LONG(), since <=> may
+ return bignum.
+
+ * compar.c (cmp_gt, cmp_ge, cmp_lt, cmp_le, cmp_between): ditto.
+
+Thu Aug 29 23:34:42 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/MakeFile.sub (sitearch): add.
+
+Thu Aug 29 13:36:42 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (read_all): should use off_t instead of long.
+
+Thu Aug 29 00:55:55 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * marshal.c (r_object): yield loaded objects, not intermediates.
+ (ruby-bugs-ja:PR#296)
+
+Thu Aug 29 00:06:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_become): should not free ptr if it's shared.
+
+ * eval.c (rb_alias): prohibit making an alias named "allocate" if
+ klass is a metaclass.
+
+Wed Aug 28 23:59:15 2002 Michal Rokos <michal@ruby-lang.org>
+
+ * signal.c: remove #ifdef SIGINT for struct signals.
+
+ * variable.c: get rid of fix length buffer in rb_class_path.
+
+Wed Aug 28 23:34:32 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (appendline): data was lost when raw mode.
+
+Wed Aug 28 22:57:34 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_string_value_ptr): StringValuePtr() should never
+ return NULL pointer.
+
+Wed Aug 28 19:12:46 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/stringio/stringio.c (strio_initialize): RSTRING(mode)->ptr
+ can be NULL.
+
+ * ext/stringio/stringio.c (strio_ungetc): fix buffer overflow.
+
+Wed Aug 28 18:19:55 2002 Michal Rokos <michal@ruby-lang.org>
+
+ * file.c: fix memory leak in rb_stat_init.
+
+Wed Aug 28 17:45:03 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/win32.c (kill): negate pid under Win9x.
+
+Wed Aug 28 16:36:40 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (ar): don't check ar twice.
+
+Wed Aug 28 15:00:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_delete_bang): should check if str->ptr is 0.
+
+ * string.c (rb_str_squeeze_bang): ditto.
+
+ * string.c (rb_str_count): ditto.
+
+ * string.c (rb_str_lstrip_bang): ditto.
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+ * string.c (rb_str_intern): ditto.
+
+Wed Aug 28 11:37:35 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.h: define SIGINT and SIGKILL if not defined.
+
+ * win32/win32.c: remove definition of SIGINT and SIGKILL.
+
+Tue Aug 27 19:50:27 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.c (require_libraries): prevent ruby_sourcefile from GC.
+
+Tue Aug 27 15:03:35 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_find_file): $LOAD_PATH must not be empty.
+
+ * file.c (rb_find_file_ext): ditto.
+
+Tue Aug 27 02:35:21 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eq): class check should be based on range.class,
+ instead of Range to work with Range.dup.
+
+ * range.c (range_eql): ditto.
+
+Mon Aug 26 18:17:56 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_mod_dup): need to preserve metaclass and flags.
+
+Mon Aug 26 10:44:18 2002 Tanaka Akira <akr@m17n.org>
+
+ * object.c (rb_cstr_to_dbl): had a buffer overrun.
+
+Sun Aug 25 20:10:32 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#form): fix ruby-bugs-ja:PR#280, add default action.
+
+Sat Aug 24 15:32:16 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (call_trace_func): restore source file/line, as trace
+ function installed in required library with -r option can be
+ called while parsing. (ruby-bugs:PR#372)
+
+ * eval.c (module_setup): unused variable. [ruby-core:00358]
+
+Sat Aug 24 14:59:02 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_class): integrate singleton check into a function
+ to follow DRY principle.
+
+ * marshal.c (w_uclass): should check singleton method.
+
+ * object.c (rb_obj_dup): dmark and dfree functions must be match
+ for T_DATA type.
+
+ * object.c (rb_obj_dup): class of the duped object must be match
+ to the class of the original.
+
+Sat Aug 24 13:57:28 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb (Time.rfc2822, Time#rfc2822): preserve localtimeness.
+
+ * lib/pp.rb: pretty_print_cycled is renamed to pretty_print_cycle.
+
+Fri Aug 23 23:59:57 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (method_call): check receiver is defined.
+
+ * eval.c (umethod_call): removed.
+
+Fri Aug 23 23:39:17 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_quote): do not escape \t, \f, \r, \n, for they are
+ not regular expression metacharacters.
+
+ * time.c (time_s_alloc): use time_free instead of free (null check,
+ also serves for type mark).
+
+ * time.c (time_s_at): check dfree function too.
+
+Fri Aug 23 17:06:48 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: RUBY_SO_NAME is msvcrt-rubyXX on mswin32/mingw32.
+
+ * configure.in (sitearch): new var.
+
+ * mkconfig.rb, lib/mkmf.rb (sitearch): ditto.
+
+ * win32/Makefile.sub, win32/setup.mak (sitearch): ditto.
+
+ * instruby.rb: ditto.
+
+Wed Aug 21 16:53:00 2002 Michal Rokos <michal@ruby-lang.org>
+
+ * *.c: int, long types cleanup.
+
+ * parse.y: ditto.
+
+ * re.h, regex.h, ruby.h: ditto.
+
+Wed Aug 21 16:43:19 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_cleanup): should not modify the global
+ variable curr_thread.
+
+Wed Aug 21 16:14:26 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set ac_cv_func__setjmp to "no" on Cygwin.
+
+ * configure.in: set ac_cv_func_crypt to "no" on MinGW.
+
+Tue Aug 20 21:47 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * io.c (rb_io_fread): remove case EPIPE on bcc32 .
+
+ * win32/win32.c (rb_w32_getc): clear EPIPE error on bcc32.
+
+Tue Aug 20 19:39:03 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): accept drive letter on Cygwin.
+
+ * file.c (is_absolute_path): ditto.
+
+Tue Aug 20 12:12:25 2002 Tietew <tietew@tietew.net>
+
+ * io.c (rb_io_putc): output via rb_io_write().
+
+Mon Aug 19 19:01:55 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/inf-ruby.el (inf-ruby-keys): ruby-send-definition
+ conflicted with ruby-insert-end.
+
+ * misc/inf-ruby.el (inferior-ruby-mode): compilation-minor-mode.
+
+ * misc/inf-ruby.el (ruby-send-region): send as here document to
+ adjust source file/line. [ruby-talk:47113], [ruby-dev:17965]
+
+ * misc/inf-ruby.el (ruby-send-terminator): added to make unique
+ terminator.
+
+Mon Aug 19 17:08:19 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): frozen check should be moved here
+ from rb_reg_initialize().
+
+Mon Aug 19 15:38:44 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (sort_2): comparison should be done as signed long.
+
+ * array.c (sort_2): should return int, not VALUE.
+
+Mon Aug 19 12:38:33 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_save_context, rb_thread_restore_context):
+ save/restore SEH chain on MS-Windows at thread switch.
+ [ruby-win32:273]
+
+ * eval.c (win32_get_exception_list, win32_set_exception_list):
+ added.
+
+Sat Aug 17 23:01:25 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (sort_2): *a - *b may overflow.
+
+Sat Aug 17 00:25:08 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_new): len*sizeof(VALUE) may be a positive value.
+
+ * array.c (rb_ary_initialize): ditto.
+
+Fri Aug 16 15:58:16 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (NOFILE): define NOFILE as 64 if not defined.
+
+ * signal.c (sighandler_t): rename to sh_t on dietlibc.
+
+Fri Aug 16 15:37:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_cstr_to_inum): new decimal and octal string.
+
+Fri Aug 16 13:17:11 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_class_allocate_instance): move singleton class
+ check from rb_obj_alloc().
+
+Fri Aug 16 11:47:24 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_fread): renamed from io_fread and made extern.
+
+ * marshal.c (r_bytes0): check if successfully read, use
+ rb_io_fread() instead of fread() to be preemptive.
+ (ruby-bugs-ja:PR#294, 295)
+
+ * rubyio.h (rb_io_fread): added.
+
+Fri Aug 16 07:57:26 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (compile_error): must not clear ruby_sourcefile here.
+ (ruby-bugs:PR#364).
+
+ * eval.c (rb_longjmp): set ruby_sourcefile before making
+ backtrace.
+
+Thu Aug 15 20:38:58 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (ruby_current_node) : added to set sourceline on demand.
+
+ * eval.c (error_pos, error_print, rb_longjmp, assign): set source
+ file/line.
+
+ * eval.c (rb_eval): store current node instead of file/line, and
+ preserve it at return.
+
+ * eval.c (module_setup): ditto.
+
+ * eval.c (struct thread): store node instead of file/line.
+
+ * eval.c (rb_thread_raise): ditto.
+
+ * intern.h (ruby_current_node): added.
+
+ * intern.h (ruby_set_current_source): added.
+
+ * parse.y (stmt, arg): not fix position of assignment.
+
+ * parse.y (node_assign): ditto.
+
+ * parse.y (yycompile): clear current node.
+
+Thu Aug 15 00:48:46 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): should not modify frozen Regexp.
+
+Tue Aug 13 18:33:18 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/tcltklib/tcltklib.c (ip_init): allocation framework.
+
+Tue Aug 13 15:32:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_replace): should copy ifnone.
+
+ * hash.c (rb_hash_dup): should preserve HASH_PROC_DEFAULT and
+ HASH_DELETED flags.
+
+ * hash.c (rb_hash_shift): shift from empty hash should not return
+ its default proc.
+
+ * hash.c (rb_hash_default_proc): new method. [new]
+
+Tue Aug 13 00:37:11 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_aref): no need for Bignum check.
+
+ * array.c (rb_ary_aset): explicit Bignum check removed.
+
+ * numeric.c (fix_aref): normalize bignum before bit-op.
+
+ * bignum.c (rb_big_rand): max may be Bignum zero.
+
+ * bignum.c (rb_cstr_to_inum): should normalize bignums, to avoid
+ returning fixable bignum value.
+
+ * bignum.c (rb_uint2big): there should be no zero sized bignum.
+
+Mon Aug 12 23:45:28 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/extmk.rb.in: extmake() that works properly for both tkutil
+ (tk/tkutil.so) and digest/sha1.
+
+Mon Aug 12 22:29:35 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.c (set_arg0): Correct the position of #endif.
+
+Mon Aug 12 17:25:06 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_equal): should check HASH_PROC_DEFAULT too.
+
+Mon Aug 12 16:15:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * bignum.c (rb_big_cmp): raise for NaN. (ruby-bugs-ja:PR#284).
+
+Sun Aug 11 09:34:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): set line number from all nodes.
+
+ * eval.c (proc_to_s): show source file/line if available.
+
+ * marshal.c (r_object): register TYPE_BIGNUM regardless real type.
+
+Sat Aug 10 23:47:16 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_cmp): use dbl2big() for Floats, instead of
+ big2dbl().
+
+ * bignum.c (Init_Bignum): rb_big_zero_p() removed. There may be
+ Bignum zero.
+
+Fri Aug 9 13:31:40 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/Win32API/extconf.rb: check existence of <windows.h>.
+
+Thu Aug 8 09:37:02 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (NilClass): must provide conversion block.
+
+ * lib/optparse.rb (String): ditto.
+
+Thu Aug 8 00:45:15 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): new argument added for original method name.
+ preserve original method name in frame->orig_func.
+
+ * eval.c (is_defined): use frame->orig_func, not last_func.
+
+ * eval.c (rb_eval): ditto.
+
+ * eval.c (method_call): supply data->oid also to rb_call0().
+
+ * object.c (rb_class_allocate_instance): call rb_obj_alloc() when
+ called from alias, thus invoke original "allocate".
+
+ * eval.c (remove_method): removing allocate from classes should
+ cause NameError.
+
+Wed Aug 7 22:12:54 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb (OptionParser::Completion::convert): returned
+ all values not first one.
+
+ * lib/optparse.rb (OptionParser::Switch::parse): return values as
+ is.
+
+ * lib/optparse.rb (OptionParser::order): ditto.
+
+ * lib/optparse/time.rb: prior time.rb.
+
+ * lib/optparse/uri.rb: require standard uri module. thanks to
+ Minero Aoki.
+
+Wed Aug 7 09:51:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_equal): should check default values.
+
+Wed Aug 7 08:44:32 2002 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/cparse.c: reduce goto.
+
+Tue Aug 6 15:19:39 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_rindex): must return -1 if unmatched.
+
+Mon Aug 5 22:41:18 2002 Minero Aoki <aamine@loveruby.net>
+
+ * MANIFEST: add lib/racc/parser.rb.
+
+ * ext/racc/cparse/cparse.c: code refine.
+
+ * ext/racc/cparse/MANIFEST: add depend.
+
+Sun Aug 4 22:30:50 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/curses/curses.c: follow allocation framework.
+
+Sat Aug 3 21:23:56 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): set constant in cbase scope.
+
+ * eval.c (assign): ditto.
+
+Fri Aug 2 09:12:32 2002 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: follow allocation framework.
+
+Fri Aug 2 01:21:52 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (s_recvfrom): update RSTRING len.
+
+Thu Aug 1 17:47:15 2002 Tachino Nobuhiro <tachino@jp.fujitsu.com>
+
+ * parse.y (tokadd_string): ignore backslashed spaces in %w.
+
+Thu Aug 1 14:14:15 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_find): do not use rb_eval_cmd(); should not accept
+ a string for if_none.
+
+Wed Jul 31 14:11:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_undef): undef should be done for klass, not ruby_class.
+
+Tue Jul 30 19:48:51 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-accurate-end-of-block): restrict search
+ region.
+
+ * misc/ruby-mode.el (ruby-parse-partial): reversed wrong patch.
+
+Tue Jul 30 17:21:13 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-accurate-end-of-block): incomplete block
+ caused infinite loop.
+
+ * misc/ruby-mode.el (ruby-parse-partial): returns nil unless
+ delimiters found.
+
+Tue Jul 30 15:24:07 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tcltklib/stubs.c (ruby_tcltk_stubs): win32_getenv returns
+ the same address always, so allocate string by ruby_strdup.
+
+ * win32/win32.c: prototype; rb_w32_open_osfhandle().
+
+Tue Jul 30 09:11:07 2002 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (rb_thread_join_m): add parameter type declaration.
+
+Tue Jul 30 08:37:11 2002 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (localjump_error): add parameter type declaration.
+
+Mon Jul 29 16:00:54 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in: always use File.expand_path for $top_srcdir.
+
+Sat Jul 27 23:07:52 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_to_int): default to_int implementation for every
+ numeric class.
+
+Sat Jul 27 08:09:03 2002 Booker C. Bense <bbense@slac.stanford.edu>
+
+ * re.c (rb_reg_quote): initial part of the string was never copied
+ to the quoted string.
+
+Fri Jul 26 23:03:53 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): no need to convert to string twice.
+
+Fri Jul 26 18:32:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-expr-beg): wrong indent at modifiers
+ after ?.
+
+Fri Jul 26 16:01:16 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in (create_makefile): use Regexp in gsub.
+
+ * sample/mkproto.rb: ditto and fix bug.
+
+Fri Jul 26 14:31:06 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c: replace with Mersenne Twister RNG.
+
+Fri Jul 26 12:14:48 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (yylex): modify to accept a code like "m (a){...}".
+
+Thu Jul 25 09:05:02 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-delimiter): include here document.
+
+ * misc/ruby-mode.el (ruby-deep-arglist): skips spaces after
+ parenthesis when 'space.
+
+ * misc/ruby-mode.el (ruby-imenu-create-index): fix for nested
+ classes.
+
+ * misc/ruby-mode.el (ruby-accurate-end-of-block): added. scan a
+ block in the order.
+
+ * misc/ruby-mode.el (ruby-expr-beg): support for here document.
+
+ * misc/ruby-mode.el (ruby-parse-partial): splitted from
+ ruby-parse-region.
+
+ * misc/ruby-mode.el (ruby-move-to-block): skips RD style comments.
+
+Wed Jul 24 09:47:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (jump_tag_but_local_jump): preserve retval in
+ LocalJumpError exceptions.
+
+ * parse.y (command): no more check for "super outside of method".
+
+ * eval.c (rb_mod_define_method): should set last_class and
+ last_func in the block->frame.
+
+Mon Jul 22 17:23:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_handle): should handle TAG_THROW as well.
+
+Fri Jul 19 10:52:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): new decimal notation '0d4567'.
+
+Thu Jul 18 11:52:02 2002 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (set_socket): new method.
+
+Thu Jul 18 06:51:24 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (yylex): fix typo.
+
+Wed Jul 17 18:41:28 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): new octal notation '0o777'.
+
+Mon Jul 15 18:36:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (string_content): every string_content node should
+ return string only. use NODE_EVSTR to coercing.
+
+ * eval.c (rb_eval): NODE_EVSTR support.
+
+Mon Jul 15 10:35:35 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (heredoc_identifier): fix typo.
+
+Sat Jul 13 09:30:04 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (literal_concat_string): wrong optimization.
+
+Sat Jul 13 01:25:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/resolv.rb (Resolv::DNS::open, close): new.
+
+ * lib/optparse.rb, lib/optparse: import.
+
+Fri Jul 12 06:34:05 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: rename HTTP.get_uri get_response.
+
+ * lib/net/http.rb: HTTP.get_print accepts URI objects.
+
+ * lib/net/http.rb: HTTP.get had not work with URI objects.
+
+Fri Jul 12 02:15:58 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * string.c (rb_str_match): fix for string match.
+
+Fri Jul 12 00:02:50 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/stringio/stringio.c (strio_gets_internal): fixed for record
+ separator longer than 1.
+
+Thu Jul 11 17:59:20 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_quote): avoid unnecessary string allocation.
+
+ * string.c (get_pat): quote metacharacters before compiling a
+ string into a regex.
+
+ * string.c (rb_str_split_m): special treatment of strings of size
+ 1, but AWK emulation. now uses get_pat().
+
+ * string.c (rb_str_match_m): quote metacharacters.
+
+ * string.c (rb_str_match2): ditto.
+
+Thu Jul 11 12:59:23 2002 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/resolv.rb: untaint strings read from /etc/hosts and
+ /etc/resolv.conf to prevent SecurityError when $SAFE==1.
+
+Thu Jul 11 09:00:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_slice_bang): if there's no corresponding
+ substring, slice! should return nil without exception.
+
+Tue Jul 9 20:03:55 2002 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * irb 0.9
+
+Sat Jul 6 07:35:02 2002 Jamie Herre <jfh@gettysgroup.com>
+
+ * array.c (rb_ary_insert): type fixed.
+
+Fri Jul 5 09:17:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_split_m): accept separator value nil as well.
+
+Fri Jul 5 08:59:15 2002 Michal Rokos <michal@ruby-lang.org>
+
+ * enum.c: Fix bug in enum_sort_by and some code indents
+
+Fri Jul 5 05:00:40 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#initialize): improvement for mod_ruby.
+ thanks to Sean Chittenden <sean@ruby-lang.org>, Shugo Maeda
+ <shugo@modruby.net>
+
+Fri Jul 5 00:10:09 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_become): was leaking memory.
+
+Thu Jul 4 23:43:26 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: remove useless function str_extend_p().
+
+Wed Jul 3 14:26:40 2002 Sean Chittenden <sean@ruby-lang.org>
+
+ * lib/net/ftp.rb (get): new method.
+
+ * lib/net/ftp.rb (putt): ditto.
+
+ * lib/net/ftp.rb (binary): ditto.
+
+ * lib/net/ftp.rb (binary=): ditto.
+
+Wed Jul 3 13:57:53 2002 Sean Chittenden <sean@ruby-lang.org>
+
+ * lib/net/ftp.rb (getbinaryfile): the second argument (localfile)
+ is now optional.
+
+ * lib/net/ftp.rb (gettextfile): ditto.
+
+Wed Jul 3 13:45:42 2002 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb: use &block and yield for speed.
+
+Wed Jul 3 02:32:31 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#initialize): improvement for mod_ruby.
+
+Tue Jul 2 14:53:10 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): should not alter other
+ classes/modules by inclusion. by this fix, local order may not
+ be preserved for some cases.
+
+ * class.c (include_class_new): module may be T_ICLASS; retrieve
+ original module information.
+
+Tue Jul 2 14:13:11 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#header): accept any type as value.
+
+Sun Jun 30 17:05:29 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (seekdir, telldir): add ac_cv_func_telldir=yes,
+ ac_cv_func_seekdir=yes for MinGW.
+
+Sat Jun 29 01:43:32 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_finalize, pipe_popen): two-way pipe support for win32.
+
+ * win32/win32.c (ChildRecord, FindFreeChildSlot): ditto.
+
+ * win32/win32.c, win32/win32.h (pipe_exec): new function for two-way
+ pipe support for win32.
+
+ * win32/win32.c, win32/win32.h (FindPipedChildSlot, rb_w32_popen,
+ rb_w32_pclose): removed functions for two-way pipe support for win32.
+
+Fri Jun 28 23:49:34 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * pack.c (pack_unpack): change names of local variables because their
+ names are overlapped.
+
+Fri Jun 28 17:54:07 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb: fix object address.
+
+Thu Jun 27 23:55:50 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_stat): fix buffer overflow. (ruby-bugs:PR#329)
+
+Thu Jun 27 20:57:45 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb, lib/pp.rb: convenience methods added.
+
+Thu Jun 27 15:22:18 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb: re-implemented for incremental output to handle
+ huge data. API is changed a bit.
+
+ * lib/pp.rb: adapt new pretty printing API.
+
+Thu Jun 27 08:28:18 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (literal_concat_string): non-string last expression in
+ #{} was ignored when followed by literal.
+
+Thu Jun 27 03:42:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): need to process backslashes properly.
+
+Wed Jun 26 17:33:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_any_to_a): declare Object#to_a to be obsolete.
+
+ * object.c (rb_Array): do not convert nil into [] automagically.
+
+Wed Jun 26 15:40:00 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (words, qwords): word list literal rules.
+
+ * parse.y (parse_string): ditto.
+
+ * parse.y (yylex): %W: word list literal with interpolation. [new]
+
+Tue Jun 25 18:53:34 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (string1, xstring, regexp): moved lex_strnest
+ initialization to string_contents/xstring_contents.
+
+Tue Jun 25 19:24:38 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * dln.c: remove definition rb_loaderror().
+
+Tue Jun 25 00:34:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_Integer): use "to_int" instead of
+ "to_i". [experimental]
+
+ * object.c (nil_to_f): new method.
+
+ * object.c (rb_Integer): Symbols and nil should cause error.
+
+ * object.c (rb_Float): nil should cause error.
+
+Tue Jun 25 00:21:00 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * dln.c: remark definition rb_loaderror().
+
+Tue Jun 25 00:14:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (string_dvar): allow back references in interpolation.
+
+Mon Jun 24 16:32:31 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_eval): NODE_EVSTR is no longer used.
+
+ * eval.c (eval): not enforce to make assigned variables dynamic.
+
+ * parse.y (string): split rules to strings/xstring/regexp to allow
+ arbitrary statements inside string interpolation.
+
+ * parse.y (here_document): splitted into three phases.
+
+ * parse.y (literall_append, literal_concat): added.
+ append/concatenate string literals.
+
+ * sample/test.rb (valid_syntax): adjust line number for BEGIN.
+
+ * lib/mkmf.rb (create_makefile): get rid of nested string.
+
+ * lib/mkmf.rb (install_rb): site-install didn't work properly.
+
+Sun Jun 23 00:19:10 2002 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb, sample/cal.rb, sample/goodfriday.rb:
+ updated to the new version (based on date2 3.3).
+
+Sat Jun 22 14:41:33 2002 Guy Decoux <ts@moulon.inra.fr>
+
+ * ext/socket/socket.c (sock_addrinfo): make all 3 versions of
+ getaddrinfo happy. [ruby-core:00184]
+
+Fri Jun 21 18:49:58 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): __END__ should not be effective within
+ string literals.
+
+Thu Jun 20 21:09:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/readline/readline.c (readline_readline): get rid of
+ libreadline's bug. (ruby-bugs-ja:PR#268)
+
+Thu Jun 20 17:10:27 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftool.rb (BUFSIZE): tuning, set buffer length to 8192.
+
+ * configure.in (__NO_ISOCEXT): add for mingw-runtime 2.0-2.
+
+ * configure.in (__MSVCRT__): removed because it is defined
+ in the GCC specs.
+
+Wed Jun 19 14:46:18 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb, lib/mkmf.rb (xsystem): open the log file if xsystem
+ is called.
+
+Wed Jun 19 01:01:13 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (here_document): should be aware of __END__ within here
+ documents.
+
+Wed Jun 19 00:50:50 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (yylex): ? followed by successive word characters is
+ ternary operator not numeric literal.
+
+ * parse.y (yylex): commands after break/next/rescue can take
+ arguments. (ruby-bugs-ja:PR#265)
+
+Tue Jun 18 19:20:16 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb: remove unnecessary exports. (ruby-dev:17418)
+
+Tue Jun 18 12:50:17 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (yylex): should pushback proper char after '<<'.
+
+ * parse.y (range_op, cond0, cond): get rid of doubled warnings.
+
+ * parse.y (value_expr): reduce recursion level.
+
+ * parse.y (logop): ditto.
+
+Mon Jun 17 11:11:34 2002 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * string.c (rb_str_crypt): result need not be tainted always.
+
+Mon Jun 17 10:51:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dln.c (dln_load): need to preserve dln_strerror() result,
+ calling other dl family can clear it.
+
+Sat Jun 15 22:56:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): obsolete '?<whitespace>'; use '?\s', '?\n',
+ etc, instead.
+
+Sat Jun 15 18:51:13 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * dir.c (glob_helper): Use lstat() instead of stat() so it catches
+ a dead symlink. Given a dead symlink named "a", Dir.glob("?")
+ did catch it but Dir.glob("a") somehow didn't.
+
+Sat Jun 15 01:59:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): no here document after a dot.
+
+ * parse.y (yylex): should have set lex_state after '`'.
+
+ * parse.y (yylex): should have set lex_state properly after
+ tOP_ASGN.
+
+Fri Jun 14 21:01:48 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/mkexports.rb: insert sleep(1) for win9x.
+
+ * bcc32/configure.bat: change return code LF -> CRLF for win9x.
+
+ * win32/win32.c: fix rb_w32_open_osfhandle()
+
+Fri Jun 14 15:22:19 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (read_escape): deny zero-width hexadecimal character.
+ (ruby-bugs-ja:PR#260)
+
+ * parse.y (tokadd_escape): ditto.
+
+ * regex.c (re_compile_pattern): ditto.
+
+Fri Jun 14 00:49:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2dbl): return canonical HUGE_VAL for infinity.
+
+Thu Jun 13 09:43:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_avalue): v may be Qundef. This fix was
+ suggested by Guy Decoux.
+
+Thu Jun 13 00:33:49 2002 takuma ozawa <metal@mine.ne.jp>
+
+ * hash.c (rb_hash_s_create): use rb_hash_aset() instead of calling
+ st_insert() directly, to dup&freeze string keys.
+
+Thu Jun 13 00:12:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): proper error message for "@@0".
+
+ * parse.y (yylex): paren to parse_string() must be zero for
+ unparenthesized strings.
+
+ * parse.y (str_extend): broken string when unterminated "#{".
+
+ * enum.c (enum_sort_by): had a bug in 1 element enumeration.
+
+Wed Jun 12 18:04:44 2002 akira yamada <akira@arika.org>
+
+ * uri/common.rb (REGEXP::PATTERN::X_ABS_URI): 'file:/foo' is valid.
+
+ * uri/generic.rb (Generic#xxx=): should return substituted value.
+ (ruby-dev:16728.)
+
+ * test/generic.rb (test_set_component): added tests for the above
+ change.
+
+Wed Jun 12 02:38:00 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (stmt): fix typo.
+
+Wed Jun 12 01:10:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): 'do' should return kDO_BLOCK on EXPR_ENDARG.
+
+ * parse.y (singleton): "def (()).a end" dumped core.
+
+ * parse.y (range_op): node may be null.
+
+ * parse.y (match_gen): ditto.
+
+Tue Jun 11 19:20:34 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (LIBRUBY): rename to lib$(LIBRUBY_SO).a on Cygwin/MinGW.
+
+ * configure.in, cygwin/GNUmakefile: use dllwrap when --disable-shared
+ is specified.
+
+Tue Jun 11 17:12:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): void value check for "..", "...", "!", and "not".
+
+ * parse.y (match_gen): void value check for "=~".
+
+ * parse.y (value_expr): check NODE_AND and NODE_OR recursively.
+
+ * parse.y (cond0): void value check added for conditionals.
+
+Tue Jun 11 13:18:47 2002 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (noop): new method.
+
+ * lib/net/ftp.rb (site): ditto.
+
+Tue Jun 11 13:15:41 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub: set PROCESSOR_LEVEL to 6 if it's too big value.
+
+ * win32/Makefile.sub: ditto.
+
+Tue Jun 11 12:37:46 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/configure.bat fix.
+
+Tue Jun 11 10:18:23 2002 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * new platform [bccwin32] merged.
+ - create new folder bcc32
+ - modify any files for bccwin32
+ error.c, file.c, hash.c, io.c, instruby.rb,
+ ext/extmk.rb.in,
+ lib/mkmf.rb, lib/ftools.rb,
+ ext/digest/defs.h,
+ ext/dl/depend, ext/dl/dl.c, ext/dl/sym.c, ext/dl/extconf.rb,
+ ext/socket/extconf.rb,
+ ext/pty/extconf.rb,
+ ext/tcltklib/extconf.rb
+ ext/Win32API/Win32API.c,
+ win32/dir.h, win32/win32.c, win32/win32.h, win32/resource.rb
+
+Mon Jun 10 19:02:19 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * numeric.c (fix_lshift): negative shift count means right shift.
+ (ruby-bugs-ja:PR#248)
+
+ * numeric.c (fix_rshift): return -1 when left side operand is
+ negative. (ruby-bugs-ja:PR#247)
+
+ * parse.y (yylex): `0_' should be an error. (ruby-bugs-ja:PR#249)
+
+Mon Jun 10 01:53:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): ruby_frame->last_func may be null, if it's
+ called outside of a method.
+
+ * parse.y (arg): use INT2NUM, not INT2FIX for tUMINUS.
+
+ * parse.y (arg): unnecessary negative tPOW treatment.
+
+ * parse.y (tokadd_escape): wrong backslash escapement.
+
+Sun Jun 9 17:40:41 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: change the callback mechanism.
+
+Sat Jun 8 00:48:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt,arg): too much void value check.
+
+ * parse.y (stmt,arg): need to check void value on rules which does
+ not use node_assign().
+
+Thu Jun 6 19:50:39 2002 KONISHI Hiromasa <H_Konishi@ruby-lang.org>
+
+ * sample/biorhythm.rb (getPosiiton,etc)
+ fix at changing Date module ( Date is changed Fixnum to Rational )
+
+Thu Jun 6 17:42:39 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (ipaddr): need not to taint hostnames.
+
+Thu Jun 6 12:04:30 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): use sub! instead of []= because
+ []= causes exception.
+
+Thu Jun 6 11:42:15 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/thread.rb (Queue::pop): get rid of race condition.
+
+Wed Jun 5 01:56:47 2002 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: Stop the running zombi-eventloop when
+ mainloop_watchdog is killed.
+
+Tue Jun 4 23:09:24 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_include): should be based on "<=>", whereas
+ member? still is based on "each".
+
+ * range.c (range_min,range_max): redefine methods based on "<=>".
+
+Tue Jun 4 18:28:37 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/extconf.rb: The IPv6 stack of Cygwin is still incomplete.
+
+ * ext/Win32API/extconf.rb: refactoring.
+
+Tue Jun 4 07:03:33 2002 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkfont.rb: Fix bugs on TkFont.init_widget_font for Tk8.x.
+
+ * ext/tk/lib/tkafter.rb: Add self to 1st argument of interval-
+ and loop-proc
+ TkAfter#current_interval returns an interval (sleep) time value
+ TkAfter#current_args returns an array of arguments
+ TkAfter#return_value returns a return value of last loop-proc
+
+ * ext/tk/lib/tk*.rb: Allow to use Symbols for parameters.
+
+ * ext/tk/lib/tkcanvas.rb: (TkcItem) Add 'coords' parameter to the
+ canvas item constructor (for new notation of constructor).
+
+ * ext/tcltklib/tcltklib.c: New 'mainloop' and 'mainloop_watchdog'.
+
+ * ext/tk/lib/tk.rb: (Tk.restart) Add 'app-name' paramater and
+ 'use' parameter.
+
+ * ext/tk/lib/tk.rb: Add new parameter 'widgetname' to the widget
+ constructor to support effective use of Resource Database.
+
+ * ext/tk/lib/tk.rb: TkOption::get always returns a tainted string.
+
+Tue Jun 4 00:45:50 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/socket/addrinfo.h: typo.
+
+ * ext/socket/getaddrinfo.c (gai_strerror): make literals const.
+
+ * ext/socket/socket.c (init_inetsock): ensures resources are
+ freed at exceptions.
+
+ * ext/socket/socket.c (init_unixsock): ditto.
+
+ * ext/socket/socket.c (udp_connect): ditto.
+
+Mon Jun 3 20:39:51 2002 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/extconf.rb : change PLATFORM with RUBY_PLATFORM.
+
+Mon Jun 3 07:07:07 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (here_document): check if identifier is terminated.
+ (ruby-bugs-ja:PR#239)
+
+ * parse.y (yylex): should pushback proper char after '**'.
+ (ruby-bugs-ja:PR#240)
+
+Mon Jun 3 05:56:17 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_aset): should raise error if an indexing string
+ is not found in the receiver.
+
+ * sprintf.c (rb_f_sprintf): "%d" should convert objects into
+ integers using Integer().
+
+Sat Jun 1 19:20:07 2002 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole: merge from rough.
+
+Fri May 31 17:11:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile::size): added.
+
+Thu May 30 12:52:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): iteration done using "+" if elements are
+ Numeric. Otherwise using "succ".
+
+ * range.c (range_each): iteration done using "succ". If the
+ elements does not respond to "succ", raise TypeError. As a
+ result, all Enumerable methods, e.g. collect, require elements
+ to respond to "succ".
+
+ * range.c (range_member): comparison done using "each", if
+ elements are non-Numeric or no-"succ" objects. Otherwise
+ compare using "<=>".
+
+ * range.c (Init_Range): remove "size" and "length".
+
+Thu May 30 09:16:36 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb: if StringIO is usable then use it.
+
+Wed May 29 18:55:47 2002 KONISHI Hiromasa <H_Konishi@ruby-lang.org>
+
+ * function renames my* and win32_* to rb_w32_* in win32/win32.c
+ fixed files win32/win32.c, win32/win32.h, win32/dir.h,
+ hash.c, rubysig.h, signal.c, ext/socket/socket.c
+
+Wed May 29 17:32:55 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * time.c (tmcmp, search_time_t): activate unless HAVE_TIMEGM.
+
+Wed May 29 13:45:15 2002 Wakou Aoyama <wakou@ruby-lang.org>
+
+ * lib/cgi.rb: not use const if GET, HEAD. check multipart form head.
+
+Tue May 28 17:56:02 2002 Sean Chittenden <sean@ruby-lang.org>
+
+ * parse.y: yyparse #defines moved from intern.h
+
+ * ruby.c (proc_options): access prefixed "ruby_yydebug".
+
+ * applied modifies to pacify some of gcc -Wall warnings.
+
+Tue May 28 14:07:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): no more ugly hack for "**", so that "-2**2" to be
+ parsed as "(-2)**2", whereas "- 2**2" or "-(2)**2" to be parsed
+ as "-(2**2)".
+
+ * parse.y (yylex): '-2' to be literal fixnum. [new]
+
+Tue May 28 12:13:37 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (scope_node): trick to keep the node has a scope.
+
+ * eval.c (rb_eval): NODE_EVSTR: write back local_tbl to the node.
+
+ * eval.c (rb_eval): NODE_SCOPE: hold the scope node in ruby_scope.
+
+ * eval.c (module_setup): ditto.
+
+ * eval.c (rb_call0): ditto.
+
+ * node.h (NEW_DASGN, NEW_DASGN_CURR): remove surplus semicolons.
+
+Fri May 24 09:06:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_arg): nil test against v[6] (usec).
+
+Thu May 23 16:39:21 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.c (proc_options): option parsing problem.
+ (ruby-bugs-ja:PR#233)
+
+Thu May 23 09:13:56 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): removed "-*-" support for #! line.
+
+ * io.c (rb_io_s_sysopen): new method to get a raw file
+ descriptor. [new]
+
+ * ext/socket/socket.c (tcp_sysaccept): new method to return an
+ accepted socket fd (integer). [new]
+
+ * ext/socket/socket.c (unix_sysaccept,sock_sysaccept): ditto.
+
+Wed May 22 21:26:47 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.c (proc_options): -T consumes digits only.
+
+Wed May 22 20:18:31 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: need not link vsnprintf.o on MinGW.
+
+Wed May 22 18:34:23 2002 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (yylex): Here-document label ate '-'.
+
+Tue May 21 13:25:18 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): symbols end with
+ '_'.
+
+Tue May 21 04:48:37 2002 Sean Chittenden <sean@chittenden.org>
+
+ * lib/cgi-lib.rb: Checking for constant MOD_RUBY instead of
+ environment variable. Remove a mod_ruby warning and use
+ Apache::request.headers_out[] instead.
+
+Tue May 21 01:16:46 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (bodystmt): ensure clause was executed on else clause
+ without rescue clause.
+
+Tue May 21 00:20:25 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl/ptr.c: rename PtrData::alloc to PtrData::malloc.
+
+ * ext/dl/lib/dl/struct.c: rename Struct#alloc to Struct#malloc.
+
+Mon May 20 14:29:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): should do exact match for Module#==.
+
+ * compar.c (cmp_eq): returns 'false' if <=> returns 'nil'.
+
+ * compar.c (cmp_gt,cmp_ge,cmp_lt,cmp_le,cmp_between): ditto.
+
+Mon May 20 13:28:52 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * io.c (rb_io_clone): writing stream was not copied properly.
+
+Sat May 18 21:38:11 2002 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb, lib/parsedate.rb:
+ updated to the new version (based on date2 3.2.1).
+
+Sat May 18 21:18:00 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): add VC++4/5 support about noreturn
+ directive.
+
+Sat May 18 02:16:41 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): should propagate taintedness.
+
+ * pack.c (pack_unpack): ditto.
+
+Fri May 17 16:16:19 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * sample/test.rb: use eval instead of './miniruby -c',
+ in order to check a syntax error.
+
+Thu May 16 14:46:34 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_select): cleanup conditional compilation.
+
+Wed May 15 06:13:35 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): need to preserve errno before
+ calling rb_trap_exec().
+
+ * regex.c (calculate_must_string): a bug in charset/charset_not
+ parsing.
+
+Tue May 14 18:17:44 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * win32/Makefile.sub: config.h inlined. and catch up with the
+ latest change.
+
+ * win32/config.h.in: no longer used.
+
+Tue May 14 14:49:05 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * gc.c (is_pointer_to_heap): avoid GCC 3.1 warnings.
+
+ * missing/strftime.c (timezone): it should take no argument on Cygwin.
+
+Tue May 14 03:07:35 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_clear_cache_by_class): new function.
+
+ * eval.c (set_method_visibility): should have clear cache for
+ updated visibility.
+
+Mon May 13 14:38:33 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * djgpp/config.hin, djgpp/config.sed: catch up with the latest change.
+
+Mon May 13 01:59:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_to_s): default format precision to be "%.16g".
+
+ * util.c (ruby_strtod): use own strtod(3) implementation to avoid
+ locale hell. Due to this change "0xff".to_f no longer returns 255.0
+
+Sun May 12 03:01:08 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * missing.h: add for missing/*.c.
+
+ * ruby.h: add `#include "missing.h"'.
+
+ * Makefile.in: add the dependency of missing.h by gcc -MM.
+
+ * MANIFEST: add missing.h
+
+Sat May 11 23:24:52 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: enable dl's stack emulation for constructing function call.
+
+Sat May 11 10:52:09 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * dir.c (glob_helper): remove escaping backslashes.
+
+Sat May 11 02:46:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (avalue_to_yvalue): new function to distinguish yvalue
+ (no-arg == Qundef) from svalue (no-arg == Qnil).
+
+ * eval.c (rb_yield_0): use avalue_to_yvalue().
+
+ * eval.c (assign): warn if val == Qundef where it means rhs is
+ void (e.g. yield without value or call without argument).
+
+Fri May 10 19:00:47 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * parse.y (here_document): preserve line number begins here
+ document.
+
+Fri May 10 01:55:44 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_thread_join): added an argument to limit time to wait
+ the thread.
+
+ * eval.c (rb_thread_join_m): new. and added optional argument.
+
+Wed May 8 23:48:40 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (value_expr): need not to warn for WHILE and UNTIL,
+ since they can have return value (via valued break).
+
+Tue May 7 17:13:40 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: forgot to add '-Wl,' to the gcc option on Cygwin/MinGW.
+
+Tue May 7 15:41:33 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/iconv/iconv.c (iconv_try): should initialize exceptions
+ properly. (ruby-bugs-ja:PR#232)
+
+Tue May 7 15:28:03 2002 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (rb_yield_0): The destination of the goto jump was wrong.
+
+Tue May 7 09:17:51 2002 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (superclass): undesirable "unexpected return" when the
+ superclass is not a Class.
+
+Sun May 5 06:53:45 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb: exclude topdir from the system configuration
+ section and prevent it from being overridden.
+
+Fri May 3 20:19:00 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: add #include <errno.h> in AC_CHECK_DECLS().
+
+ * win32/config.h.in: define HAVE_DECL_SYS_NERR.
+
+Thu May 2 23:42:40 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_s_quote): # also should be quoted.
+
+Thu May 2 18:27:13 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: use 'do...end' instead of '{}' for
+ Borland make.
+
+Thu May 2 08:01:56 2002 Chris Thomas <kenshin@apple.com>
+
+ * error.c: use HAVE_DECL_SYS_NERR instead of platform names.
+
+Tue Apr 30 09:23:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_step): better iteration condition for float
+ values; suggested by Masahiro TANAKA <masa@ir.isas.ac.jp>.
+
+Tue Apr 30 05:59:42 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * range.c (range_step): step (for Range#step method) <= 0 makes no
+ sense, thus ArgError will be raised.
+
+ * range.c (range_each): Range#each method is special case for
+ Range#step(1)
+
+Mon Apr 29 18:46:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_find_file): load must be done from an absolute path if
+ $SAFE >= 4.
+
+Sun Apr 28 17:01:56 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (insert): fix prototype for ANSI C.
+
+Fri Apr 26 13:47:15 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_partition): new method. [new]
+
+Fri Apr 26 13:41:00 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_s_quote): quote whitespaces for /x cases.
+
+Fri Apr 26 06:48:23 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl/ptr.c (cary2ary): missing break in switch statements.
+
+Fri Apr 26 09:35:47 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_proc_new): make Proc from C function. [new]
+
+ * intern.h (rb_proc_new): prototype.
+
+Wed Apr 24 14:56:46 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (proc_to_proc): return self. [new]
+
+ * eval.c (block_pass): no need to convert if block is Proc.
+
+Wed Apr 24 14:21:41 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set size of the initial stack from
+ 2MB to 32MB on MinGW/Cygwin.
+
+Wed Apr 24 14:06:35 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_step): try to reduce residual on Float operations.
+
+Wed Apr 24 06:48:31 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * io.c (rb_io_mode_flags): both 'r+b' and 'rb+' should be allowed.
+
+ * io.c (rb_io_mode_modenum): ditto.
+
+Wed Apr 24 01:16:14 2002 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_mark): must check if ptr is NULL
+ first. [ruby-talk:38873]
+
+ * lib/mkmf.rb (create_makefile): should print depend file when
+ make is other than nmake.
+
+Wed Apr 24 00:37:12 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb.in (create_makefile): use `{$(srcdir)}' directive instead
+ of `$(srcdir)/' when including depend file.
+
+ * lib/mkmf.rb (create_makefile): add `{$(srcdir)}' when including depend
+ file.
+
+Tue Apr 23 12:58:18 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_memerror): rename from mem_error, and exported.
+
+ * gc.c (Init_GC): pre-allocate NoMemoryError instance.
+
+ * object.c (convert_type): error message changed from "failed to
+ convert" to "cannot convert", since it does not try to convert
+ if an object does not respond to the converting method.
+
+Mon Apr 22 09:31:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): convert Method to Proc using
+ rb_check_convert_type().
+
+ * object.c (rb_check_convert_type): always convert T_DATA
+
+ * eval.c (rb_thread_cleanup): should not terminate main_thread by
+ Fatal error.
+
+ * regex.c (is_in_list): need to not exclude NUL and NEWLINE.
+
+Sat Apr 20 00:19:13 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): wrong backslash escapement.
+
+ * re.c (rb_reg_expr_str): do not escape embedded space
+ characters.
+
+Fri Apr 19 22:03:40 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: add -DNT to $CFLAGS instead of $CPPFLAGS.
+
+ * win32/setup.mak: ditto.
+
+Fri Apr 19 17:24:22 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): T_DATA process patch from Joel VanderWerf
+ <vjoel@PATH.Berkeley.EDU>. This is temporary hack; it remains
+ undocumented, and it will be removed when marshaling is
+ re-designed.
+
+ * marshal.c (r_object): ditto.
+
+Fri Apr 19 17:10:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_step): Integer#step is moved to Numeric#step;
+ Fixnum#step is merged into this method.
+
+ * numeric.c (int_dotimes): Fixnum#times is merged.
+
+ * numeric.c (int_upto): Fixnum#upto is merged.
+
+ * numeric.c (int_downto): Fixnum#downto is merged.
+
+Fri Apr 19 16:22:55 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/extconf.rb: include <windows.h>, <winsock.h> on _WIN32.
+
+ * win32/win32.c: include <mswsock.h> on __MINGW32__.
+
+ * configure.in: cleanup for autoconf 2.5x.
+
+ * configure.in: use gcc -shared instead of dllwrap on Cygwin/MinGW.
+
+ * ext/extmk.rb, lib/mkmf.rb: get rid of "--def=".
+
+Fri Apr 19 14:57:44 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * re.c (rb_reg_to_s): remove redundant shy group.
+
+Fri Apr 19 01:08:20 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_cleanup): current thread may be THREAD_STOPPED,
+ for example when terminated from signal handler.
+
+Thu Apr 18 19:03:15 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): remove /p support.
+
+ * regex.h: ditto.
+
+ * parse.y (parse_regx): ditto.
+
+Thu Apr 18 17:01:43 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl/ptr.c (rb_dlptr_cast): removed.
+
+Thu Apr 18 17:01:43 2002 Tanaka Akira <akr@m17n.org>
+
+ * re.c (rb_reg_to_s): new function for Regexp#to_s.
+
+Wed Apr 17 23:55:34 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Setup*, ext/bigfloat/*: Back out the import of BigFloat in
+ favor of its forthcoming successor, BigDecimal.
+
+Wed Apr 17 16:53:33 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): should treat backslash specially in
+ escaping.
+
+Wed Apr 17 08:16:41 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * io.c: complete off_t handling; missing argument for
+ fptr_finalize(); polished rb_scan_args call.
+
+Wed Apr 17 00:01:59 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * dir.c: wrap multi-statement macro by do { } while (0)
+
+ * eval.c, numeric,c, sprintf.c, util.c: ditto.
+
+Tue Apr 16 08:59:50 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (assign): convert mrhs to mvalue.
+
+Mon Apr 15 18:12:57 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_eq): check `y == x' if y is neither Fixnum,
+ Bignum, nor Float.
+
+Mon Apr 15 09:27:31 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): should treat 'U' in character unit, not in
+ byte unit.
+
+ * error.c (exc_initialize): should clear backtrace information.
+
+Sat Apr 13 23:42:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fptr_cleanup): should close IO created by IO.new(fd).
+
+ * rubyio.h: remove FMODE_FDOPEN
+
+Fri Apr 12 12:54:04 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: use missing/acosh.c.
+
+ * win32/config.h.in: define HAVE_COSH, HAVE_SINH, and HAVE_TANH.
+
+Fri Apr 12 02:58:55 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * struct.c (rb_struct_select): fix typo.
+
+Fri Apr 12 00:34:17 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * MANIFEST (missing/acosh.c): added.
+
+ * Makefile.in (missing/acosh.c): ditto.
+
+ * Makefile.in (missing/fileblocks.c): ditto.
+
+ * configure.in (AC_REPLACE_FUNCS): check acosh() on behalf of
+ inverse hyperbolic functions, asinh() and atanh().
+
+ * missing/acosh.c: added for acosh(), asinh() and atanh().
+
+Thu Apr 11 20:01:44 2002 Masahiro Tomita <tommy@tmtm.org>
+
+ * io.c (io_write): check error if written data is less than
+ specified size to detect EPIPE.
+
+Thu Apr 11 19:10:37 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (remain_size): IO#read returns "" if file.size == 0.
+
+ * random.c (rand_init): add check for initstate(3).
+
+ * configure.in: ditto.
+
+Thu Apr 11 09:31:19 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl/ptr.c: raise() -> rb_raise(). (Thanks Tetsuya Watanabe)
+
+ * ext/dl/sym.c: ditto.
+
+Thu Apr 11 07:57:48 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * eval.c (assign): ruby_verbose should be surrounded by RTEST().
+
+ * object.c (rb_str2cstr): ditto.
+
+ * parse.y (void_expr): ditto.
+
+ * parse.y (void_stmts): ditto.
+
+ * variable.c (rb_ivar_get): ditto.
+
+ * variable.c (rb_cvar_set): ditto.
+
+ * variable.c (rb_cvar_get): ditto.
+
+Thu Apr 11 07:02:31 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: Add dl.txt instead of README and README.html.
+
+Thu Apr 11 01:55:52 2002 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi/session.rb: support for multipart form.
+
+Wed Apr 10 18:42:23 2002 Tachino Nobuhiro <tachino@jp.fujitsu.com>
+
+ * dir.c (glob_helper): should have proceed link when link->path
+ was non existing symbolic link.
+
+Wed Apr 10 17:30:19 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_obj_remove_instance_variable): raise NameError if
+ specified instance variable is not defined.
+
+ * variable.c (generic_ivar_remove): modified to check ivar
+ existence.
+
+Wed Apr 10 14:16:45 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): fontify symbols for
+ unary operators and aset.
+
+Tue Apr 9 13:40:31 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb (try_link0): need expand macro in command, sync with
+ ext/extmk.rb.in.
+
+ * lib/mkmf.rb (try_cpp): ditto.
+
+ * lib/mkmf.rb (egrep_cpp): ditto.
+
+Tue Apr 9 12:44:59 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/stringio/stringio.c (check_modifiable): performance
+ improvement. avoid calling rb_str_modify() twice.
+
+ * ext/stringio/stringio.c (strio_ungetc): ditto.
+
+ * ext/stringio/stringio.c (strio_putc): ditto.
+
+ * ext/stringio/stringio.c (strio_write): ditto, and use
+ rb_str_cat() as possible.
+
+Tue Apr 9 05:17:48 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * re.c (match_select): fix index references and make
+ MatchData#select actually work.
+
+Tue Apr 9 00:20:52 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): new method based on the proposal
+ (and patch) from Mike Hall. [new]
+
+Mon Apr 8 04:50:51 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (error_handle): default to 1 unless status is set.
+
+ * eval.c (ruby_options): guard error_handle() with PROT_NONE.
+
+ * eval.c (ruby_stop): ditto.
+
+Mon Apr 8 01:22:24 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (math_acosh): added. [new]
+
+ * math.c (math_asinh): ditto.
+
+ * math.c (math_atanh): ditto.
+
+ * struct.c (rb_struct_each_pair): method added. [new]
+
+Sat Apr 6 02:04:49 2002 Guy Decoux <ts@moulon.inra.fr>
+
+ * class.c (rb_singleton_class): wrong condition; was creating
+ unnecessary singleton class.
+
+Sat Apr 6 01:09:41 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (remove_sign_bits): simplifies the condition.
+
+ * bignum.c (get2comp): calculate proper carry over.
+
+Fri Apr 5 05:07:28 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: Add dl/struct.rb.
+
+Thu Apr 4 14:08:52 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl/lib/dl/import.rb: Get rid of ineffective
+ encoding/decoding procedures.
+
+Thu Apr 4 01:08:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_step): step may be a float less than 1.
+
+Wed Apr 3 20:42:34 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: Merge Nakada's patch.
+
+ * ext/dl/dl.h: define StringValuePtr for ruby-1.6.
+
+Wed Apr 3 15:37:24 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: Add dl/types.rb.
+
+Wed Apr 3 01:54:10 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/extmk.rb.in (enable_config): follow lib/mkmf.rb.
+
+Tue Apr 2 19:59:13 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * ext/dl: Merge from rough.
+
+Tue Apr 2 15:17:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * Makefile.in (CPPFLAGS): remove @includedir@.
+
+ * lib/mkmf.rb (create_makefile): ditto.
+
+ * ext/extmk.rb.in (create_makefile): ditto.
+
+Tue Apr 2 15:09:05 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_addrinfo): should clear addrinfo hints.
+
+Mon Apr 1 23:48:12 2002 Takaaki Tateishi <ttate@kt.jaist.ac.jp>
+
+ * lib/mkmf.rb: install any files using $INSTALLFILES.
+ (see also [ruby-dev:16683])
+
+Mon Apr 1 17:25:50 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fptr_cleanup): need flush even when io will not be
+ closed.
+
+ * io.c (rb_io_initialize): was calling wrong function
+ rb_io_mode_flags().
+
+Mon Apr 1 16:52:00 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/sdbm/init.c (each_pair): moved prototype before the
+ definition.
+
+ * ext/racc/cparse/cparse.c (call_scaniter): ditto.
+
+Mon Apr 1 15:11:40 2002 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/racc/cparse/cparse.c: prototype; call_scaniter().
+
+ * ext/sdbm/init.c: prototype; each_pair().
+
+ * ext/tcltklib/tcltklib.c: prototypes; _timer_for_tcl() and ip_ruby(),
+ Nobu's patch at [ruby-dev:14483].
+
+Mon Apr 1 10:56:40 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (match_setter): it's OK to assign nil to $~.
+
+Mon Apr 1 03:55:46 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fptr_cleanup): do not close IO created by for_fd().
+
+ * io.c (rb_io_initialize): mark IO created by for_fd
+
+ * ext/socket/socket.c (bsock_s_for_fd): ditto.
+
+Fri Mar 29 20:21:58 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb (create_makefile): default FLAGS to empty strings.
+
+Fri Mar 29 16:36:52 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb (arg_config): should use Shellwords::shellwords like
+ ext/extmk.rb.in.
+
+ * lib/mkmf.rb (enable_config): default had priority over command
+ line options and configure_args.
+
+ * lib/mkmf.rb: support autoconf 2.53 style variables from
+ environment.
+
+ * lib/mkmf.rb: add directory options.
+
+Fri Mar 29 15:49:29 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/README.win32: follow recent changes.
+
+Fri Mar 29 14:44:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fflush): DRY patch from /Christoph applied.
+
+Thu Mar 28 18:58:13 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): reflect user defined $CC in
+ config.status.
+
+Thu Mar 28 18:03:51 2002 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: add taint check.
+
+ * ext/strscan/strscan.c: #getch/#get_byte should set regexp
+ registers.
+
+ * ext/strscan/strscan.c: remove useless #include directive.
+
+ * ext/strscan/strscan.c: refactor struct strscanner.
+
+Thu Mar 28 14:51:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_addrinfo): should specify socktype
+ from outside.
+
+Wed Mar 27 17:04:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_binmode): should call next_argv() to initialize ARGF.
+
+ * io.c (argf_filename): ditto.
+
+ * io.c (argf_file): ditto.
+
+Wed Mar 27 14:47:32 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (READ_DATA_PENDING): configure.in has supported for uClibc,
+ so remove uClibc stuff.
+
+Wed Mar 27 13:14:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_sysseek): new method based on a patch from Aristarkh
+ A Zagorodnikov <xm@bolotov-team.ru>. [new]
+
+ * io.c (READ_DATA_PENDING): use !feof(fp) for default behavior.
+
+Tue Mar 26 20:28:50 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: HTTP.get accepts URI.
+
+ * lib/net/http.rb: new method HTTP.get_uri.
+
+ * lib/net/http.rb: add some HTTP 1.1 response codes.
+
+Tue Mar 26 20:25:28 2002 Minero Aoki <aamine@loveruby.net>
+
+ * doc/net/protocol.rd.ja, smtp.rd.ja, pop.rd.ja: removed.
+
+ * MANIFEST: remove doc/net/* entries.
+
+Tue Mar 26 18:45:15 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (FILE_READPTR): check bufread instead of bufend
+ for uClibc.
+
+ * ext/extmk.rb.in (arg_config): should use Shellwords::shellwords.
+
+Tue Mar 26 01:56:33 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): while/until statement modifiers to "begin"
+ statement now work as "do .. while" even when begin statement
+ has "rescue" or "ensure" [new].
+
+ * parse.y (bodystmt): rescue/ensure is allowed at every bodies,
+ i.e. method bodies, begin bodies, class bodies[new], and module
+ bodies[new].
+
+Mon Mar 25 22:10:04 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_addrinfo): should specify ai_socktype
+ for getaddrinfo hints.
+
+Mon Mar 25 17:18:48 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * dir.c (rb_push_glob): local variable 'maxnest' was
+ uninitialized.
+
+Mon Mar 25 16:53:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_abort): embed aborting message into exception
+ object [new].
+
+ * eval.c (terminate_process): utility function for exit and abort.
+
+Tue Mar 26 14:04:47 2002 okabe katsuyuki <HGC02147@nifty.ne.jp>
+
+ * win32/mkexports.rb: support VC++.NET.
+
+Tue Mar 26 14:00:17 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/bigfloat/bigfloat.c: Fix the initializer's function name
+ according to the new library name. (pointed out by nobu)
+
+Tue Mar 26 11:12:01 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: new file.
+
+Tue Mar 26 03:23:50 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (pp): return nil like p.
+
+Tue Mar 26 01:48:01 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/bigfloat/extconf.rb: Downcase the library name. (BigFloat.so
+ -> bigfloat.so)
+
+ * ext/bigfloat/bigfloat.c (BigFloat_inspect): Alter the inspect
+ format not to look like an array. (pointed out by akr)
+
+ * ext/bigfloat/bigfloat.c (BigFloat_hash): Implement BigFloat#hash.
+
+ * ext/bigfloat/bigfloat.c (BigFloat_dump, BigFloat_load):
+ Support marshaling.
+
+Tue Mar 26 00:38:11 2002 Tanaka Akira <akr@m17n.org>
+
+ * configure.in (FILE_READPTR): check _p for 4.4BSD.
+
+Mon Mar 25 23:39:25 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * configure.in (FILE_READPTR): new. for IO#gets improvement.
+
+ * io.c (READ_DATA_PENDING_PTR): ditto.
+
+ * io.c (remain_size): separated from read_all().
+
+ * io.c (read_all): argument changed.
+
+ * io.c (appendline): new. get a line and append to string.
+
+ * io.c (swallow): new. swallow continuous line delimiters.
+
+ * io.c (rb_io_getline_fast): add delimiter argument.
+
+ * io.c (rb_io_getline): performance improvement.
+
+Mon Mar 25 19:30:25 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in (arg_config): get rid of single quotes
+ for autoconf 2.53.
+
+Mon Mar 25 17:49:41 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * regex.c (mbc_startpos_func): VC6 seems to be unable to
+ understand forward declaration for static variables.
+
+ * dir.c (rb_push_glob): local variable 'maxnest' was
+ uninitialized.
+
+Mon Mar 25 13:24:20 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (bsock_do_not_rev_lookup_set): should not be
+ allowed when $SAFE > 3.
+
+ * eval.c (rb_thread_ready): THREAD_TO_KILL threads should not turn
+ into THREAD_RUNNABLE on wakeup.
+
+ * eval.c (rb_thread_list): THREAD_TO_KILL threads should be in the
+ list.
+
+ * eval.c (thgroup_list): ditto; by moving gid clearance from
+ rb_thread_cleanup().
+
+Mon Mar 25 11:06:19 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * dln.c (dln_argv0): unused unless USE_DLN_A_OUT.
+
+ * regex.c (mbc_startpos_func): should be static.
+
+Sun Mar 24 12:19:09 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * dir.c (fnmatch): "*/bar" (with FNM_PATHNAME flag) does not
+ match "foo/bar".
+
+Sun Mar 24 00:46:05 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * util.c (push_element): avoid warning for djgpp.
+
+Sat Mar 23 01:50:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): files on /proc filesystem with zero stat size,
+ may have contents.
+
+Fri Mar 22 18:07:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (tcp_s_gethostbyname): refactored.
+
+ * ext/socket/socket.c (sock_s_gethostbyname): ditto.
+
+Fri Mar 22 16:46:54 2002 Minero Aoki <aamine@loveruby.net>
+
+ * ext/extmk.rb.in: replace mkdir with mkpath to compile racc/cparse.
+
+Fri Mar 22 16:22:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * the VMS support patch submitted by Akiyoshi, Masamichi
+ <Masamichi.Akiyoshi@jp.compaq.com> is merged.
+
+Fri Mar 22 16:27:24 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/racc/parser.rb: new file.
+
+ * ext/racc/MANIFEST, cparse.c, depend, extconf.rb: new files.
+
+ * lib/README: add racc/parser.rb.
+
+ * ext/Setup*: add racc/cparse.
+
+Fri Mar 22 15:04:03 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (exec_under): changing ruby_class is OK, but should not
+ alter cbase.
+
+ * eval.c (yield_under_i): ditto.
+
+Fri Mar 22 15:44:38 2002 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/MANIFEST, strscan.c, depend, extconf.rb: new files.
+
+ * ext/Setup*: add strscan entry.
+
+Fri Mar 22 14:32:14 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: Protocol#start should return self.
+
+Fri Mar 22 14:14:21 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb: fix arguments to create exceptions.
+ Patch from matt@lickey.com. (ruby-bugs:PR#278)
+
+Fri Mar 22 13:51:11 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/bigfloat/.cvsignore, ext/bigfloat/MANIFEST: BigFloat 1.1.8
+ has been imported. Add .cvsignore and MANIFEST.
+
+Fri Mar 22 04:07:55 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * sprintf.c (rb_f_printf): discard meaningless prefix ".." for '%u'.
+
+Thu Mar 21 01:11:37 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): fix install path (prefix).
+
+Thu Mar 21 01:03:05 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/configsub.rb: latest autoconf style support.
+
+Wed Mar 20 22:16:25 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * mkconfig.rb: close duplicated $stdout before renaming rbconfig.rb.
+
+Wed Mar 20 21:54:17 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/Makefile.sub: made variables configurable.
+
+ * win32/Makefile.sub (config.h): updates RUBY_PLATFORM from
+ Makefile.
+
+ * win32/Makefile.sub (config.status): ditto. and use recent
+ autoconf format.
+
+ * win32/Makefile.sub (clean): separate ext and local clean up.
+
+ * win32/Makefile.sub (distclean): ditto.
+
+ * win32/config.status.in: no longer used.
+
+Wed Mar 20 20:12:35 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * variable.c (rb_const_list): a temporary table must be freed.
+
+Wed Mar 20 19:44:09 2002 Tanaka Akira <akr@m17n.org>
+
+ * mkconfig.rb: don't touch rbconfig.rb if there is a trouble.
+
+Wed Mar 20 16:05:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): should check receiver only once.
+
+ * eval.c (is_defined): should handle NODE_NEWLINE.
+
+Wed Mar 20 11:29:25 2002 Aristarkh A Zagorodnikov <xm@xml-objects.com>
+
+ * file.c (rb_file_s_expand_path): memory leak fixed.
+
+Wed Mar 20 00:36:43 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * util.c (ruby_getcwd): the content of buf is uncertain and must
+ not be printed when getcwd(buf, size) has failed.
+
+Mon Mar 18 22:19:52 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/stringio/stringio.c (check_modifiable): wrong declaration.
+
+Mon Mar 18 18:04:05 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/digest: add depend file.
+
+ * ext/digest/md5: ditto.
+
+ * ext/digest/rmd160: ditto.
+
+ * ext/digest/sha1: ditto.
+
+ * ext/digest/sha2: ditto.
+
+ * ext/iconv/MANIFEST: ditto.
+
+ * ext/stringio/MANIFEST: ditto.
+
+ * ext/syslog: ditto.
+
+Mon Mar 18 17:18:06 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_f_abort): should not bypass cleanup.
+
+ * ext/stringio/stringio.c (check_modifiable): void function.
+
+Mon Mar 18 12:52:01 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/iconv/extconf.rb: workaround for GNU libiconv.
+
+Mon Mar 18 10:55:03 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (parse_string): part of multi-byte sequence must not
+ match to paren.
+
+ * parse.y (parse_qstring): ditto.
+
+ * parse.y (parse_quotedwords): ditto.
+
+ * parse.y (str_extend): handle multi-byte characters.
+
+Mon Mar 18 10:31:20 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * enum.c (enum_find): catch a value before recycle.
+
+ * enum.c (enum_all): ditto.
+
+ * enum.c (enum_any): ditto.
+
+ * enum.c (enum_min): ditto.
+
+ * enum.c (enum_max): ditto.
+
+Sun Mar 17 20:08:04 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/iconv/depend: added.
+
+ * ext/stringio/depend: added.
+
+Sat Mar 16 22:43:53 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * missing/fileblocks.c: add for autoconf.
+
+Sat Mar 16 15:30:40 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_search): should clear last_match if pos is out of
+ string range.
+
+ * string.c (rb_str_index_m): ditto.
+
+ * string.c (rb_str_rindex): ditto.
+
+Sat Mar 16 09:04:58 2002 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * enum.c (enum_inject): use the first iterated element as the
+ initial value when omitted.
+
+ * enum.c (inject_i): ditto.
+
+ * enum.c (Init_Enumerable): Enumerable#inject now takes variable
+ count arguments.
+
+Fri Mar 15 19:47:31 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/win32.c (StartSockets): remove duplicated lines.
+
+Fri Mar 15 17:44:08 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * bignum.c, intern.h (rb_ull2big, rb_ll2big, rb_ull2inum, rb_ll2inum,
+ big2ull, rb_big2ull, rb_big2ll): use LONG_LONG macro instead of
+ long long.
+
+ * numeric.c, intern.h, ruby.h (rb_num2ll, rb_num2ull): ditto.
+
+ * ruby.h: use _I64_MAX and _I64_MIN if they are defined (for VC++).
+
+Fri Mar 15 14:02:43 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/iconv/iconv.c: fixed document, Iconv#new is no longer an
+ iterator. thanks to Tanaka Akira <akr@m17n.org>.
+
+Thu Mar 14 22:17:45 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/iconv: imported.
+
+Thu Mar 14 16:42:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_define_class): should handle autoload.
+
+ * class.c (rb_define_module): ditto.
+
+Thu Mar 14 16:18:12 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: autoconf 2.53 support. use AC_LIBOBJ.
+
+Thu Mar 14 00:29:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_match): should clear $~ if operand is nil.
+
+ * re.c (rb_reg_match2): ditto.
+
+Thu Mar 14 12:32:59 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/stringio/stringio.c: fixed frozen string bug. ungetc no
+ longer raises on readonly stream unless modifies actually.
+
+Thu Mar 14 08:57:41 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * dir.c (rb_push_glob): avoid SEGV when a block given.
+
+Thu Mar 14 00:16:02 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * string.c (rb_str_subpat_set): must make str independent after
+ rb_reg_search() matched.
+
+Wed Mar 13 19:05:15 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * dir.c: FNM_PERIOD is obsoleted and FNM_DOTMATCH is introduced
+ instead, which has the opposite meaning of FNM_PERIOD.
+
+ * dir.c: Dir::glob now accepts optional FNM_* flags via the second
+ argument, whereas Dir::[] doesn't.
+
+Wed Mar 13 18:36:55 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/getopts.rb: single_options can be nil[*], and is not not
+ optional. ([*]Pointed out by gotoken)
+
+Wed Mar 13 17:23:46 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure: merge Jonathan Baker's large file support patch
+ [ruby-talk:35316], with read_all patch in [ruby-talk:35470].
+
+Wed Mar 13 04:06:48 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_abort): optional message argument that be printed
+ on termination.
+
+Tue Mar 12 17:12:06 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb: don't complete domains for absolute FQNs.
+
+Mon Mar 11 23:08:48 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/tsort.rb: new file.
+
+Mon Mar 11 21:03:37 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/stringio: new.
+
+Mon Mar 11 18:03:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): '\0111' should be '\011' plus '1',
+ since octal literals are formed by three digits at most.
+
+Mon Mar 11 14:44:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): module inclusion using extend() should
+ also be detected.
+
+ * eval.c (rb_eval_cmd): cbase should not be NULL; it should be
+ either ruby_wrapper or Object.
+
+Sun Mar 10 02:18:22 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * enum.c (enum_each_with_index): should return self.
+
+ * process.c (proc_setpgrp): should return value for non-void function.
+
+ * process.c (proc_getpgid): should raise exception if getpgid() return -1.
+
+ * string.c (rb_str_ljust): should return a duplicated string.
+
+ * string.c (rb_str_rjust): ditto.
+
+ * string.c (rb_str_center): ditto.
+
+Sat Mar 9 08:45:58 2002 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/extconf.rb (have_struct_member): don't print checked
+ result.
+
+Fri Mar 8 12:19:15 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb: use its own thread group for background threads.
+
+Fri Mar 8 02:21:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (cvar_cbase): utility function to find innermost non
+ singleton cbase.
+
+ * eval.c (is_defined): adopt new cvar behavior.
+
+ * eval.c (rb_eval): ditto.
+
+ * eval.c (assign): ditto.
+
+Thu Mar 7 20:08:25 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * gc.c (rb_source_filename): added. holds unique strings for file
+ names with GC space.
+
+ * gc.c (rb_gc_mark): mark source file name.
+
+ * gc.c (gc_sweep): ditto.
+
+ * gc.c (Init_GC): initialize source file name table.
+
+ * intern.h (rb_source_filename): added.
+
+ * eval.c (rb_eval_string): use rb_source_filename().
+
+ * parse.y (yycompile): ditto.
+
+ * ruby.c (proc_options): ditto.
+
+ * ruby.c (load_file): ditto.
+
+ * ruby.c (ruby_script): ditto.
+
+ * ruby.c (ruby_prog_init): ditto.
+
+Wed Mar 6 17:58:08 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c (dln_load): use LoadLibrary instead of LoadLibraryEx.
+
+Wed Mar 6 16:50:37 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_mod_clone): should not call rb_obj_clone(), since
+ Module does not provide "allocate".
+
+ * class.c (rb_singleton_class): should create new singleton class
+ if obj is a class or module and attached object is different,
+ which means metaclass of singleton class is sought.
+
+ * time.c (time_s_alloc): now follows allocation framework.
+
+Tue Mar 5 05:56:29 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/getopts.rb: Rewrite to fix some bugs and complete features.
+ - Accept options with the colon in the first argument;
+ getopts("a:bcd:") is equivalent to getopts("bc", "a:", "d:").
+ - Do not discard the argument that caused an error.
+ - Do not discard '-', which commonly stands for stdin or stdout.
+ - Allow specifying a long option with a value using '='.
+ (command --long-option=value)
+ - Stop reading options when it meets a non-option argument.
+
+Mon Mar 4 13:19:18 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in (dir_config): Sync with mkmf.rb: Fix a bug where
+ --with-xx-{include,lib} is ignored when --with-xx-dir is
+ specified.
+
+Mon Mar 4 00:09:55 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should initialize outer class variables from
+ methods in singleton class definitions.
+
+ * eval.c (assign): ditto.
+
+Fri Mar 1 11:29:10 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/{addinfo.h,getaddrinfo.c} (gai_strerror): add const
+ qualifier only for uClibc.
+
+Fri Mar 1 11:22:51 2002 Amos Gouaux <amos+ruby@utdallas.edu>
+
+ * lib/net/imap.rb: added document.
+
+ * lib/net/imap.rb (getquotaroot): new method.
+
+ * lib/net/imap.rb (setacl): remove the rights if the rights
+ parameter is nil.
+
+ * lib/net/imap.rb (getacl): return an array of MailboxACLItem.
+
+Fri Mar 1 06:25:49 2002 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/extconf.rb (have_struct_member): new method.
+ check msg_control and msg_accrights in struct msghdr. check
+ sys/uio.h.
+
+ * ext/socket/socket.c: include sys/uio.h if available.
+ (thread_read_select): new function.
+ (unix_send_io): ditto.
+ (unix_recv_io): ditto.
+ (unix_s_socketpair): ditto.
+ (Init_socket): define UNIXSocket#send_io, UNIXSocket#recv_io,
+ UNIXSocket.socketpair and UNIXSocket.pair.
+
+ * dln.c (dln_load): fix typo.
+
+Wed Feb 27 16:30:50 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_include): load modules in argument order.
+
+ * st.c (st_init_table_with_size): num_bins should be prime numbers
+ (no decrement).
+
+ * st.c (rehash): ditto.
+
+Wed Feb 27 13:18:49 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (READ_DATA_PENDING): uClibc support.
+
+ * random.c (rand_init): ditto.
+
+ * ext/socket/{addinfo.h,getaddrinfo.c} (gai_strerror): ditto.
+
+Wed Feb 27 07:05:17 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/sha2.c: Merge from rough. Fix a couple of
+ off-by-one errors in Aaron Gifford's code.
+
+ Obtained from: KAME via FreeBSD
+ KAME PR: 393
+ FreeBSD PR: kern/34242
+
+Wed Feb 27 03:36:47 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * ext/dbm/dbm.c (fdbm_select): 1.7 behavior.
+
+ * ext/gdbm/gdbm.c (fgdbm_select): ditto.
+
+ * ext/sdbm/sdbm.c (fsdbm_select): ditto.
+
+ * ext/dbm/dbm.c (fdbm_delete): adopt Hash#delete behavior.
+
+ * ext/sdbm/sdbm.c (fsdbm_delete): ditto.
+
+ * ext/gdbm/gdbm.c: need not to dup key to the block.
+
+ * ext/sdbm/sdbm.c : replace RuntimeError with SDBMError.
+
+Tue Feb 26 21:34:07 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * bignum.c (rb_big_2comp): void function cannot return any value.
+
+Tue Feb 26 16:52:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_missing): NoMethod error messages for true, false,
+ nil must respond visibility like for other objects.
+
+Tue Feb 26 15:41:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): call trace_func for if/while conditions.
+
+ * marshal.c (r_object): separate r_regist from proc calling.
+
+Tue Feb 26 11:25:50 2002 akira yamada <akira@arika.org>
+
+ * lib/uri/generic.rb: merge0 should return [oth, oth] if oth is
+ absolute URI.
+
+ * lib/uri/generic.rb: registry part must not be allowed for any
+ schemes for the Internet. (RFC2396, section 3.2.2 and 3.2.1.)
+
+Mon Feb 25 21:22:41 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c: Merge from rough. Use SafeStringValue().
+
+Mon Feb 25 21:12:08 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c: Merge from rough. Turn Syslog into a
+ module keeping backward compatibility intact.
+
+Mon Feb 25 19:35:48 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * sample/test.rb (system): test with scripts under the source
+ directory.
+
+Mon Feb 25 15:14:01 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_inspect): should not dump core for unbound
+ singleton methods.
+
+ * object.c (rb_mod_to_s): better description.
+
+Mon Feb 25 13:32:13 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/shell.rb (Shell::expand_path): relative to @cwd.
+
+Mon Feb 25 06:30:11 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * hash.c (env_select): should path the assoc list.
+
+Sun Feb 24 17:20:22 2002 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/*/*.h: Merge from rough.
+ - Avoid namespace pollution. (MD5_* -> rb_Digest_MD5_*, etc.)
+
+Sat Feb 23 21:12:13 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_syswait): thread kludge; should be fixed to
+ support native thread.
+
+Fri Feb 22 21:20:53 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: set read_timeout dynamically.
+
+ * lib/net/http.rb: @@newimpl is always true in the main trunk.
+
+ * lib/net/http.rb: HTTP.port -> default_port
+
+ * lib/net/http.rb: HTTPResponse.read_response_status ->
+ read_status_line
+
+Fri Feb 22 19:56:15 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/config.status.in: set LIBRUBY_SO.
+
+Fri Feb 22 03:34:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (get2comp): need to specify to carry or not.
+
+ * io.c (rb_io_inspect): embed path info.
+
+Fri Feb 22 11:30:01 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb: FillGroup implemented.
+
+Thu Feb 21 21:40:18 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/extmk.rb.in (create_makefile): remove unnecessary -L option from
+ LIBS macro.
+
+Thu Feb 21 02:49:12 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * pack.c (pack_pack): wrong # comment treatment.
+
+ * pack.c (pack_unpack): ditto.
+
+Wed Feb 20 15:15:03 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * intern.h: prototypes; rb_io_addstr(), rb_io_printf(),
+ rb_io_print(), rb_io_puts()
+
+ * io.c (rb_io_addstr): make extern.
+
+ * io.c (rb_io_printf): ditto.
+
+ * io.c (rb_io_print): ditto.
+
+ * io.c (rb_io_puts): ditto.
+
+Wed Feb 20 13:41:35 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * io.c (rb_io_close): return Qnil.
+
+Wed Feb 20 12:41:59 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_any_cmp): should handle Qundef in keys.
+
+ * eval.c (remove_method): should not remove a empty method to
+ implement "undef".
+
+ * eval.c (rb_eval): should allow singleton class def for
+ true/false/nil.
+
+Tue Feb 19 21:43:32 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: rename Protocol.port to default_port.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/http.rb: ditto.
+
+ * lib/net/protocol.rb: rename BufferedSocket class to
+ InternetMessageIO.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/http.rb: ditto.
+
+ * lib/net/protocol.rb: rename InternetMessageIO#write_pendstr to
+ write_message.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/protocol.rb: new method
+ InternetMessageIO#through_message.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/protocol.rb: rename InternetMessageIO#read_pendstr to
+ read_message_to.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/protocol.rb: rename InternetMessageIO#read_pendlist to
+ each_list_item
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/protocol.rb: Now block size is 1024.
+
+ * lib/net/smtp.rb: new methods SMTP#esmtp? and #esmtp=.
+
+ * lib/net/http.rb: Using singleton method syntax instead of
+ singleton class clause, to avoid behavior change of class
+ variables in ruby 1.7.
+
+ * lib/net/http.rb: HTTPResponse class does not inherit from
+ Net::Response.
+
+ * lib/net/http.rb: divide HTTP#connecting into
+ {begin,end}_transport.
+
+ * lib/net/http.rb: unused class Accumulator removed.
+
+ * lib/net/http.rb: Net::HTTP reads response. not HTTPRequest.
+
+ * lib/net/http.rb: proxy related class-instance-variables are not
+ initialized correctly.
+
+Tue Feb 19 20:20:12 2002 Ed Sinjiashvili <edsin@swes.saren.ru>
+
+ * parse.y (str_extend): backslash escape was done wrong.
+
+Tue Feb 19 17:10:25 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (path_check_1): do not fail on world writable *parent*
+ directories too.
+
+Tue Feb 19 15:51:41 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (path_check_1): do not warn on world writable *parent*
+ directories.
+
+ * class.c (rb_include_module): should preserve ancestor order in
+ the included class/module.
+
+Tue Feb 19 14:45:32 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (path_check_1): should check directory sticky bits.
+
+ * process.c (security): need not to warn twice.
+
+ * marshal.c (r_object): complete restoration before calling
+ r_regist().
+
+Tue Feb 19 14:24:36 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): operators in the "op" rule should make
+ lex_state EXPR_ARG on EXPR_FNAME and EXPR_DOT.
+
+Tue Feb 19 13:38:10 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval_string_wrap): should hide the toplevel local
+ variable bindings by PUSH_SCOPE().
+
+Tue Feb 19 13:21:51 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * regex.c: fix prototypes of xmalloc(), xcalloc() and xrealloc().
+
+Tue Feb 19 13:16:08 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * io.c (rb_io_ungetc): don't fail pushed EOF back.
+
+Mon Feb 18 20:48:40 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * pack.c (pack_pack): avoid infinite loop at comment.
+
+ * pack.c (pack_unpack): ditto.
+
+Mon Feb 18 14:06:28 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * misc/ruby-mode.el (ruby-block-hanging-re): rescue block was too
+ indented.
+
+Mon Feb 18 13:56:44 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (expr_value, arg_value, primary_value): value_expr()
+ check in place.
+
+ * eval.c (block_pass): "&nil" should clear block given.
+
+Mon Feb 18 02:05:56 2002 Wolfgang Jahrling <wolfgang@pro-linux.de>
+
+ * dir.c (push_braces): remove MAXPATHLEN dependency.
+
+ * dir.c (dir_s_globd): ditto.
+
+ * dln.c (init_funcname): ditto.
+
+ * dln.c (load_1): ditto.
+
+ * dln.c (dln_load): ditto.
+
+ * configure.in: add GNU/Hurd switches.
+
+Fri Feb 15 17:44:26 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): allows comment in template strings.
+
+ * pack.c (pack_unpack): ditto.
+
+Sun Feb 17 23:41:37 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * mkconfig.rb (Config::expand): expand ${} too.
+
+ * ext/extmk.rb.in (try_link0): expand command.
+
+ * ext/extmk.rb.in (try_cpp): ditto.
+
+ * ext/extmk.rb.in (extmake): default $LIBPATH to $libdir
+
+Sun Feb 17 21:39:24 2002 Tetsuya Watanabe <tetsuya.watanabe@nifty.com>
+
+ * ext/digest/md5/md5init.c (Init_md5): rb_cvar_declare() is
+ replaced by rb_cvar_set().
+
+ * ext/digest/rmd160/rmd160init.c (Init_rmd160): ditto.
+
+ * ext/digest/sha1/sha1init.c (Init_sha1): ditto.
+
+ * ext/digest/sha2/sha2init.c (Init_sha2): ditto.
+
+Sun Feb 17 18:10:09 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * class.c (rb_define_class): warn unless superclass is specified
+ explicitly.
+
+ * class.c (rb_define_class_under): ditto.
+
+Thu Feb 16 02:11:08 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): fontify
+ instance/class/global variables start with '_'.
+
+Fri Feb 15 14:40:38 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): replace rb_cvar_declare() by rb_cvar_set().
+
+ * eval.c (assign): ditto.
+
+ * variable.c (rb_cvar_set): 4th argument (warn) added; define new
+ class variable if it's not defined yet.
+
+ * variable.c (rb_cvar_declare): removed.
+
+Fri Feb 15 13:36:58 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_rshift): should properly convert the negative
+ value to 2's compliment.
+
+Thu Feb 14 17:38:35 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y: avoid SEGV at OP_ASIGN to pseudo variable.
+
+Thu Feb 14 14:13:16 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (Init_Struct): should undefine "allocate" for Struct
+ class (it's redefined in the subclasses).
+
+Wed Feb 13 17:58:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): local variable declaration order was changed
+ since 1.6
+
+ * parse.y (arg): ditto.
+
+ * pack.c (pack_pack): add templates 'q' and 'Q'.
+
+ * pack.c (pack_unpack): ditto.
+
+ * bignum.c (rb_quad_pack): new utility function.
+
+ * bignum.c (rb_quad_unpack): ditto.
+
+Tue Feb 12 01:21:34 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assignable): should emit CVASGN within the method
+ body.
+
+Mon Feb 11 06:13:53 2002 Matt Armstrong <matt@lickey.com>
+
+ * dir.c (dir_s_glob): should not warn even if no match found.
+
+Mon Feb 11 04:25:54 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): clean up class variable behavior.
+
+ * eval.c (assign): ditto.
+
+ * eval.c (is_defined): ditto.
+
+ * variable.c (rb_mod_class_variables): need not to call rb_cvar_singleton().
+
+ * variable.c (rb_cvar_singleton): removed.
+
+Mon Feb 11 00:10:41 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * regex.c (re_compile_fastmap): skip begpos.
+
+Sun Feb 10 16:52:53 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ruby.c (load_file): avoid SEGV on '#' only input.
+
+Fri Feb 8 23:07:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): singleton check should be moved from yycompile
+ to here.
+
+ * eval.c (is_defined): check should be added here too.
+
+Fri Feb 8 05:31:48 2002 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: HTTP.Proxy should use self for proxy-class's
+ super class.
+
+ * lib/net/http.rb: initialize HTTP.proxy_port by HTTP.port.
+
+Fri Feb 8 01:27:33 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yycompile): should inherit "in_single" if eval happened
+ in a singleton method.
+
+ * eval.c (rb_eval): class variables from singleton methods defined
+ within singleton class statement should work like ones defined
+ by singleton def statements.
+
+Thu Feb 7 13:44:08 2002 akira yamada <akira@arika.org>
+
+ * uri/common.rb (URI::join): new method.
+
+ * uri/generic.rb (Generic#merge): URI.parse("http://a/")+"b" should
+ return "http://a/b" but it returned "http://a//b".
+
+ * uri/generic.rb (Generic#check_path): corrected error message,
+ @path -> v
+
+Thu Feb 7 00:18:43 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_write): flag when buffered write is done.
+
+ * io.c (fptr_finalize): do not raise error on EBADF if write
+ buffer is empty.
+
+Wed Feb 6 17:18:54 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * configure.in: keep old config.h unless changed.
+
+Wed Feb 6 13:28:53 2002 Amos Gouaux <amos+ruby@utdallas.edu>
+
+ * lib/net/imap.rb: OpenSSL support.
+
+ * lib/net/imap.rb (setquota): unset quota if the second argument
+ is nil.
+
+Wed Feb 6 13:05:11 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_readlines): avoid calling GetOpenFile() repeatedly.
+
+ * io.c (rb_io_each_line): ditto.
+
+ * io.c (argf_getline): ditto.
+
+ * process.c: should include <time.h> to get proper CLK_TCK.
+
+Wed Feb 6 02:10:30 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * io.c (fptr_finalize): ignore EBADF when f and f2 use same
+ descriptor.
+
+Tue Feb 5 16:17:20 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (fptr_finalize): should raise error when fclose fails.
+
+ * eval.c (method_inspect): proper output format to distinguish
+ methods and singleton methods.
+
+Mon Feb 4 22:44:58 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_file_s_expand_path): should terminate.
+
+Mon Feb 4 15:38:29 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_class_real): should not follow ICLASS link
+
+ * variable.c (classname): should follow ICLASS link explicitly.
+
+ * eval.c (rb_call): ditto.
+
+Fri Feb 1 19:10:04 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * intern.h: prototypes for new functions; rb_cstr_to_inum(),
+ rb_str_to_inum(), rb_cstr_to_dbl(), rb_str_to_dbl()
+
+ * bignum.c (rb_cstr_to_inum): changed from rb_cstr2inum(), and
+ added argument badcheck to be consistent with parser. [new]
+
+ * bignum.c (rb_str_to_inum): ditto.
+
+ * bignum.c (rb_cstr2inum): wrapper of rb_cstr_to_inum() now.
+
+ * bignum.c (rb_str2inum): ditto.
+
+ * object.c (rb_cstr_to_dbl): float number parser. [new]
+
+ * object.c (rb_str_to_dbl): ditto.
+
+ * object.c (rb_Float): use rb_cstr_to_dbl() for strict check.
+
+ * object.c (rb_Integer): use rb_str_to_inum() for strict check.
+
+ * string.c (rb_str_to_f): use rb_str_to_dbl() with less check.
+
+ * string.c (rb_str_to_i): use rb_str_to_inum() with less check.
+
+ * string.c (rb_str_hex): ditto.
+
+ * string.c (rb_str_oct): ditto.
+
+ * sprintf.c (rb_f_sprintf): ditto.
+
+ * time.c (obj2long): ditto.
+
+ * parse.y (yylex): use rb_cstr_to_inum() for strict check.
+
+Fri Feb 1 17:46:39 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * regex.c (mbc_startpos): become macro.
+
+ * regex.c (euc_startpos): added for improvement.
+
+ * regex.c (sjis_startpos): ditto.
+
+ * regex.c (utf8_startpos): ditto.
+
+Fri Feb 1 00:03:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat_inspect): print dev, rdev in hexadecimal.
+
+Thu Jan 31 20:45:33 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb (dir_config): prior --with flag.
+
+ * lib/mkmf.rb (arg_config): avoid special variables for
+ font-lock-mode.
+
+Thu Jan 31 13:22:36 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (File::Stat#pretty_print): print rdev_major and rdev_minor.
+
+Wed Jan 30 15:58:04 2002 K.Kosako <kosako@sofnec.co.jp>
+
+ * regex.c (re_adjust_startpos): fix for SJIS and UTF-8.
+
+ * regex.c (mbc_startpos): ditto.
+
+Wed Jan 30 13:37:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_search): should set regs.allocated.
+
+Wed Jan 30 02:25:38 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * regex.c (re_adjust_startpos): search start of multibyte
+ backward.
+
+ * regex.c (mbc_startpos): ditto.
+
+Tue Jan 29 17:59:20 2002 Tanaka Akira <akr@m17n.org>
+
+ * file.c: `major' and `minor' macro needs sys/mkdev.h on SunOS 5.x.
+
+ * configure.in: add check for `sys/mkdev.h'.
+
+ * lib/pp.rb: don't print a mode File::Stat as decimal number.
+
+Mon Jan 28 19:16:58 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_ary_fill): shouldn't yield unless block given.
+
+Mon Jan 28 18:33:18 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (yylex): strict check for numbers.
+
+Mon Jan 28 18:01:01 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat_rdev_major): added. [new]
+
+ * file.c (rb_stat_rdev_minor): added. [new]
+
+ * file.c (rb_stat_inspect): print mode in octal.
+
+Mon Jan 28 13:29:41 2002 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (is_defined): defined?(Foo::Baz) should check constants
+ only, no methods.
+
+ * eval.c (is_defined): should not dump core on defined?(a::b)
+ where a is not a class nor a module.
+
+Mon Jan 28 02:50:12 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): remove dup and clone from TrueClass,
+ FalseClass, and NilClass.
+
+ * array.c (rb_ary_fill): Array#fill takes block to get the value to
+ fill.
+
+Sat Jan 26 20:05:18 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_to_i): to_i(0) auto-detects base radix.
+
+ * array.c (rb_ary_initialize): fill by the block evaluation value
+ if block is given.
+
+Fri Jan 25 17:48:43 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (solaris): add '-shared' only for GNU ld.
+
+Fri Jan 25 17:16:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): detect cyclic module inclusion.
+
+Fri Jan 25 02:17:56 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_cleanup): need not to free thread stacks at
+ process termination.
+
+ * array.c (rb_ary_fetch): use the block to get the default value
+ if the block is given.
+
+ * eval.c (rb_thread_schedule): should check time only if BOTH
+ WAIT_SELECT and WAIT_TIME.
+
+Thu Jan 24 11:49:05 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (umethod_bind): should update rklass field.
+
+ * hash.c (rb_hash_update): if a block is given, yields [key,
+ value1, value2] to the block to resolve conflict.
+
+Thu Jan 24 05:42:01 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * string.c (rb_str_split_m): no need to consider KANJI
+ characters, if the length of separator is 1 (byte).
+
+Wed Jan 23 16:07:31 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (Init_Array): remove Array#filter.
+
+Wed Jan 23 13:27:44 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_yield_0): restore source file/line after yield.
+
+Wed Jan 23 02:00:14 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_initialize): should accept zero argument.
+
+ * object.c (rb_mod_cmp): should raise ArgumentError if
+ inheritance/inclusion relation between two classes/modules is
+ not defined. [new]
+
+Tue Jan 22 17:45:23 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fsync): new method. [new]
+
+Mon Jan 21 22:57:18 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * signal.c (ruby_signal): must define sighandler_t for every
+ occasion.
+
+Mon Jan 21 08:25:30 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_stop): should not trace error handler.
+
+ * signal.c (install_sighandler): do not install sighandler unless
+ the old value is SIG_DFL.
+
+ * io.c (io_write): should not raise exception on O_NONBLOCK io.
+
+ * dir.c (dir_set_pos): seek should return dir, pos= should not.
+
+Sat Jan 19 02:31:45 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): need not to clear method cache for NODE_CLASS,
+ NODE_SCLASS.
+
+ * gc.c (obj_free): need not to clear method cache on class/module
+ finalization.
+
+Fri Jan 18 23:38:03 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fetch): index out of range raises exception
+ unless optional second argument is specified.
+
+Fri Jan 18 17:32:09 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_new): block check moved from initialize to this
+ method.
+
+ * io.c (rb_io_s_open): open should call initialize too. IO#for_fd
+ also calls initialize. [new]
+
+Fri Jan 18 10:26:33 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_sys_fail): replace INT2FIX() by INT2NUM() since
+ errno value may not fit in Fixnum size on Hurd.
+
+ * error.c (set_syserr): ditto.
+
+Fri Jan 18 10:12:00 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (tcp_svr_s_open): fix typo.
+
+Fri Jan 18 02:27:48 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_glob): returns nil if block given.
+
+ * io.c (rb_io_each_byte): should return self.
+
+ * io.c (rb_io_close_m): close check added.
+
+ * dir.c (dir_seek): should return pos.
+
+Fri Jan 18 01:21:53 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (fixpos): orig may be (NODE*)1, which should not be
+ dereferenced.
+
+Thu Jan 17 16:21:42 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): allow "retry" from within argument passed
+ block. [new]
+
+ * eval.c (localjump_error): should preserve exit status in the
+ exception object. [new]
+
+ * eval.c (proc_invoke): should raise exception for "break" if it's
+ yielding, not calling. [new]
+
+ * eval.c (block_pass): should NOT raise exception for "break". [new]
+
+ * eval.c (block_pass): should allow block argument relay even in
+ the tainted mode.
+
+Thu Jan 17 09:43:05 2002 TAKAHASHI Kaoru <kaoru@kaisei.org>
+
+ * misc/ruby-mode.el (ruby-add-log-current-method): New function
+ for `add-log-current-defun-function'.
+
+Thu Jan 17 04:51:48 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: support subclassing by proper "initialize"
+ calling convention. [new]
+
+Wed Jan 16 18:25:08 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c: primes should be primes.
+
+Wed Jan 16 12:29:14 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/timeout.rb (timeout): new optional argument to specify an
+ exception class.
+
+ * lib/resolv.rb: use Resolv::ResolvTimeout for internal timeout to
+ avoid problem with timeout of application.
+
+Wed Jan 16 11:12:30 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * object.c (rb_Float): remove underscores between digits.
+
+ * bignum.c (rb_cstr2inum): reject prefix followed by spaces only.
+
+ * class.c (rb_class_inherited): should use Object when no super
+ class.
+
+Tue Jan 15 01:11:44 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): method defined? check should honor
+ protected too.
+
+Mon Jan 14 13:06:02 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): should not pass tainted block, if $SAFE > 0.
+
+Sun Jan 13 09:31:41 2002 Koji Arai <jca02266@nifty.ne.jp>
+
+ * variable.c (rb_mod_remove_cvar): should pass the char*.
+
+Fri Jan 11 05:06:25 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * class.c (rb_make_metaclass): [new]
+
+ * class.c (rb_define_class_id): use rb_make_metaclass(), don't
+ call Class#inherited hook.
+
+ * class.c (rb_class_inherited): [new]
+
+ * class.c (rb_define_class): call Class#inherited hook here.
+
+ * class.c (rb_define_class_under): ditto after class path is set.
+
+ * class.c (rb_singleton_class): use rb_make_metaclass().
+
+ * eval.c (rb_eval): same as rb_define_class_under().
+
+ * intern.h: prototypes of rb_make_metaclass() and
+ rb_class_inherited().
+
+ * object.c (rb_class_s_new): use rb_make_metaclass() and
+ rb_class_inherited().
+
+ * object.c (Init_Object): use rb_make_metaclass().
+
+ * struct.c (make_struct): use rb_class_inherited().
+
+Thu Jan 10 19:15:15 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_add_method): should clear cache by id always.
+
+ * eval.c (rb_disable_super): no longer need to clear cache before
+ rb_add_method().
+
+ * eval.c (rb_export_method): ditto.
+
+ * eval.c (rb_attr): ditto.
+
+ * eval.c (rb_undef): ditto.
+
+ * eval.c (rb_eval): ditto.
+
+ * eval.c (rb_mod_modfunc): ditto.
+
+ * eval.c (rb_mod_define_method): ditto.
+
+Thu Jan 10 11:42:47 2002 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/resource.rb: Modify copyright in resource script.
+
+Thu Jan 10 07:15:44 2002 takuma ozawa <metal@mine.ne.jp>
+
+ * re.c (match_select): should propagate taintness.
+
+Thu Jan 10 00:54:57 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_set_default): Hash#default= should return the
+ new value.
+
+Wed Jan 9 20:21:09 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * misc/ruby-mode.el (ruby-calculate-indent): indentation after
+ comment at beginning of buffer failed.
+
+ * misc/ruby-mode.el (font-lock-defaults): unless XEmacs, set
+ font-lock variables in ruby-mode-hook.
+
+Tue Jan 8 15:56:20 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_to_i): accepts optional base argument. [new]
+
+ * numeric.c (rb_fix2str): should not handle negative fixnum values
+ int32 via calling sprintf() directly.
+
+Tue Jan 8 15:54:02 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_add_method): clear replaced method from the cache.
+
+Mon Jan 7 12:38:47 2002 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb (Time#xmlschema): new optional argument
+ fractional_seconds to specify a number of digits of
+ fractional part of the time.
+
+Sat Jan 5 13:18:11 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * range.c (range_member): beginning check was
+ wrong. [ruby-talk:30252]
+
+Sat Jan 5 03:07:34 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_new2): NULL pointer check added.
+
+Sat Jan 5 00:19:12 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (yycompile): strdup()'ed twice.
+
+Fri Jan 4 18:29:10 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * class.c (rb_define_module_under): should locate predefined
+ module using rb_const_defined_at().
+
+Fri Jan 4 17:23:49 2002 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * misc/ruby-mode.el (ruby-forward-string): forward a string. [new]
+
+ * misc/ruby-mode.el (ruby-parse-region): handle nested parentheses
+ in a string and terminators in #{}.
+
+ * misc/ruby-mode.el (ruby-calculate-indent): ditto.
+
+Wed Jan 2 23:34:25 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): add -I. to CPPFLAGS.
+
+ * lib/mkmf.rb (create_makefile): srcdir support(.def and depend file).
+
+Wed Jan 2 11:51:56 2002 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_system): abandon vfork.
+
+ * io.c (pipe_open): ditto.
+
+Tue Jan 1 02:16:48 2002 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/curses/extconf.rb: add dir_config.
+
+ * Makefile.in (fake.rb): set RUBY_VERSION.
+
+Mon Dec 31 14:20:46 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (yycompile): always store copy of filename.
+
+ * parse.y (rb_compile_file): no longer need to strdup() here.
+
+Mon Dec 31 05:26:40 2001 Ferris McCormick <fmccor@inforead.com>
+
+ * defines.h: sparc linux needs different FLUSH_REGISTER_WINDOWS
+
+Mon Dec 31 04:27:28 2001 Minero Aoki <aamine@mx.edit.ne.jp>
+
+ * lib/net/protocol.rb: Protocol#start returns the return value of
+ block.
+
+ * lib/net/protocol.rb: set timeout limit by default.
+
+ * lib/net/protocol.rb: new methods WriteAdapter#write, puts,
+ print, printf.
+
+ * lib/net/http.rb: rename HTTP#get2 to request_get, post2 to
+ request_post ...
+
+ * lib/net/smtp.rb: should not resolve HELO domain automatically.
+
+Sun Dec 30 00:59:16 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb (have_library): accept -lm
+ unconditionally on mswin32/mingw32.
+
+Sat Dec 29 01:55:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_search): abandon stclass optimization.
+
+Fri Dec 28 14:39:05 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_cmpint): fixed typo.
+
+Thu Dec 27 18:43:04 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * bignum.c (rb_cstr2inum): deny "0_".
+
+Thu Dec 27 01:54:02 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * bignum.c (rb_cstr2inum): allow "0\n" and so on.
+
+Wed Dec 26 19:24:21 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_invalid_str): utility function to show inspect()'ed
+ string.
+
+ * bignum.c (rb_cstr2inum): prints invalid strings in inspect()'ed
+ format.
+
+ * object.c (rb_Float): ditto.
+
+Wed Dec 26 02:41:29 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_convert_type): no longer use rb_rescue().
+
+Tue Dec 25 18:32:16 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * re.c (rb_reg_search): initialize taint status of match object.
+
+Tue Dec 25 02:37:49 2001 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb, lib/prettyprint.rb: new files.
+
+Tue Dec 25 02:11:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_convert_type): check method response check before
+ invoking rb_rescue().
+
+ * object.c (rb_check_convert_type): ditto.
+
+Mon Dec 24 02:37:40 2001 Le Wang <lewang@bigfoot.com>
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords):
+ fix font-lock problem [ruby-talk:29296].
+
+Sat Dec 22 22:52:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_timeval): wrong cast to time_t.
+
+ * time.c (time_plus): ditto.
+
+Fri Dec 21 20:33:34 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * parse.y (str_extend): make up "#$;" handling.
+
+Fri Dec 21 16:18:17 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * dln.h, ruby.h, util.h: enable prototypes in C++.
+
+Fri Dec 21 15:12:41 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_plus): result should not be negative unless
+ NEGATIVE_TIME_T is defined.
+
+ * time.c (time_new_internal): should check tv_sec overflow too.
+
+ * time.c (time_timeval): should check time_t range when time is
+ initialized from float.
+
+ * time.c (time_plus): uses modf(3).
+
+Fri Dec 21 03:15:52 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_mod_define_method): must not convert Method to Proc.
+
+Fri Dec 21 01:17:57 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb (with_destdir): new.
+
+ * lib/mkmf.rb: prefix target directories with $(DESTDIR) all.
+
+ * lib/mkmf.rb: no need to mkdir $(libdir)
+
+Thu Dec 20 14:08:20 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: rename Net::Socket to Net::BufferedSocket
+
+Thu Dec 20 13:51:52 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * variable.c (rb_cvar_set): add frozen class/module check.
+
+ * variable.c (rb_cvar_declare): add frozen class/module check.
+
+Thu Dec 20 01:01:50 2001 takuma ozawa <metal@mine.ne.jp>
+
+ * re.c (match_to_a): should propagate taint.
+
+ * re.c (rb_reg_s_quote): ditto.
+
+Wed Dec 19 16:58:29 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c: new methods
+ Readline::basic_word_break_characters,
+ Readline::basic_word_break_characters=,
+ Readline::completer_word_break_characters,
+ Readline::completer_word_break_characters=,
+ Readline::basic_quote_characters,
+ Readline::basic_quote_characters=,
+ Readline::completer_quote_characters,
+ Readline::completer_quote_characters=,
+ Readline::filename_quote_characters,
+ Readline::filename_quote_characters=.
+
+Wed Dec 19 14:05:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_define_method): define_method should follow
+ default method visibility.
+
+ * eval.c (rb_attr): should warn if the default method visibility
+ is "module_function" (can be error).
+
+ * eval.c (rb_mod_define_method): should define class/module method
+ also if the visibility is "module_function".
+
+ * eval.c (rb_mod_define_method): should call hook method
+ "method_added", and "singleton_method_added".
+
+Wed Dec 19 11:42:13 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * string.c: use RESIZE_CAPA for capacity change.
+
+Wed Dec 19 03:08:40 2001 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb: date.rb is not required anymore.
+
+ * lib/resolv.rb: fix document. refine IPv6 regex.
+
+Tue Dec 18 23:24:53 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (Init_socket): add listen method to
+ TCPServer and UNIXServer.
+
+Tue Dec 18 17:54:53 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * sample/test.rb: Hash#indexes -> Hash#select.
+
+Tue Dec 18 01:02:13 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): should not select a thread which is
+ not yet initialized.
+
+Mon Dec 17 18:53:49 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * string.c (rb_str_replace): swap arguments of OBJ_INFECT.
+
+Mon Dec 17 16:52:20 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * intern.h: add prototypes.
+ rb_gc_enable(), rb_gc_disable(), rb_gc_start(), rb_str_new5()
+ rb_str_buf_append(), rb_str_buf_cat(), rb_str_buf_cat2(),
+ rb_str_dup_frozen()
+
+ * ruby.h: added declaration.
+ rb_defout, rb_stdin, rb_stdout, rb_stderr, ruby_errinfo
+
+ * rubyio.h: changed double include guard macro to RUBYIO_H.
+
+ * array.c (inspect_call): make static.
+
+ * eval.c (dvar_asgn): ditto.
+
+ * io.c (rb_io_close_read): ditto.
+
+ * lex.c (rb_reserved_word): ditto.
+
+ * ruby.c: (req_list_head, req_list_last): ditto.
+
+ * ruby.c (require_libraries): ditto.
+
+Mon Dec 17 15:41:24 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_plus): wrong boundary check.
+
+ * time.c (time_minus): ditto.
+
+Mon Dec 17 15:19:32 2001 Tanaka Akira <akr@m17n.org>
+
+ * time.c: new method `gmtoff', `gmt_offset' and `utc_offset'.
+ (time_utc_offset): new function.
+ (Init_Time): bind above methods to `time_utc_offset'.
+
+ * time.c: 64bit time_t support.
+ (time_s_at): use NUM2LONG instead of NUM2INT for tv_sec.
+ (time_arg): initialize tm_isdst correctly.
+ use long to initialize tm_year.
+ (search_time_t): renamed from `make_time_t'.
+ (make_time_t): call `timegm' and `mktime' instead of `search_time_t'
+ if available.
+ (time_to_i): use LONG2NUM instead of INT2NUM.
+ (time_localtime): check localtime failure.
+ (time_gmtime): check gmtime failure.
+ (time_year): use LONG2NUM instead of INT2FIX.
+ (time_to_a): use long for tm_year.
+ (time_dump): check tm_year which is not representable with 17bit.
+ (time_load): initialize tm_isdst.
+
+ * configure.in: check existence of `mktime' and `timegm'.
+ check existence of tm_gmtoff field of struct tm.
+ fix negative time_t for 64bit time_t.
+
+ * missing/strftime.c: fix overflow by tm_year + 1900.
+
+ * lib/time.rb: use Time#utc_offset.
+
+Mon Dec 17 00:02:04 2001 Guy Decoux <ts@moulon.inra.fr>
+
+ * variable.c (find_class_path): should initialize iv_tbl if it's
+ NULL.
+
+Fri Dec 14 04:23:36 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: new method Net::POP3.APOP
+
+ * lib/net/http.rb: set default Content-Type to
+ x-www-form-urlencoded (causes warning)
+
+ * lib/net/protocol.rb: remove Net::NetPrivate module.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/http.rb: ditto.
+
+Fri Dec 14 00:16:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_define_class): should return the existing class if
+ the class is already defined and its superclass is identical to
+ the specified superclass.
+
+ * class.c (rb_define_class_under): ditto.
+
+ * class.c (rb_define_module): should return the existing module if
+ the module is already defined.
+
+Thu Dec 13 09:52:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_new_internal): avoid loop to calculate negative
+ div, mod.
+
+ * time.c (time_cmp): should handle Bignums.
+
+Tue Dec 11 17:39:16 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * array.c (rb_ary_pop): should ELTS_SHARED flag check before
+ REALLOC.
+
+Tue Dec 11 12:45:28 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_match_m): should convert an argument into
+ regexp if it's a string.
+
+Tue Dec 11 03:40:23 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_select): Array#select(n,m,...) now works like
+ Array#indexes(n,m,..). [new, experimental]
+
+ * hash.c (rb_hash_select): ditto.
+
+ * hash.c (env_select): ditto.
+
+ * re.c (match_select): ditto.
+
+ * struct.c (rb_struct_select): ditto.
+
+Tue Dec 11 03:17:19 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * object.c (rb_class_real): follow included modules.
+
+Mon Dec 10 23:37:51 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * util.h: change prototype of ruby_qsort() to accord with its
+ definition.
+
+Mon Dec 10 20:30:01 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * gc.c (STR_ASSOC): use FL_USER3 instead of FL_USER2.
+
+Mon Dec 10 17:40:02 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * parse.y (str_extend): make up pushback call.
+
+Mon Dec 10 02:09:28 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_modify): should copy the internal buffer if the
+ modifying buffer is shared.
+
+ * array.c (ary_make_shared): make an internal buffer of an array
+ to be shared.
+
+ * array.c (rb_ary_shift): avoid sliding an internal buffer by
+ using shared buffer.
+
+ * array.c (rb_ary_subseq): avoid copying the buffer.
+
+Mon Dec 10 01:06:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (gettable): should freeze __FILE__ string.
+
+Sun Dec 9 18:06:26 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: calls on_connect before conn_command
+
+Sat Dec 8 23:27:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_puts): old behavior restored. rationale: a) if you
+ want to call to_s for arrays, you can just call print a, "\n".
+ b) to_s wastes memory if array (and sum of its contents) is
+ huge. c) now any object that has to_ary is treated as an array,
+ using rb_check_convert_type().
+
+Sat Dec 8 22:40:38 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_initialize): now accepts a block to calculate
+ the default value. [new]
+
+ * hash.c (rb_hash_aref): call "default" method to get the value
+ corresponding to the non existing key.
+
+ * hash.c (rb_hash_default): get the default value based on the
+ block given to 'new'. Now it takes an optional "key" argument.
+ "default" became the method to get the value for non existing
+ key. Users may override "default" method to change the hash
+ behavior.
+
+ * hash.c (rb_hash_set_default): clear the flag if a block is given
+ to 'new'
+
+Sat Dec 8 02:29:54 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): undef Data.allocate, left Data.new.
+
+Fri Dec 7 19:12:14 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: SMTP.new requires at least one arg.
+
+ * lib/net/pop.rb: POP.new requires at least one arg.
+
+ * lib/net/pop.rb: uses "raise *Error.new" instead of simple raise.
+
+ * lib/net/http.rb: HTTP.new requires at least one arg.
+
+ * lib/net/http.rb: changes implicit start algorithm.
+
+Fri Dec 7 15:49:39 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/extmk.rb.in: ignore adding -Wl,-R to DLDFLAGS when the directory
+ is $topdir.
+
+Fri Dec 7 13:58:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (window_scrollok): use RTEST().
+
+ * ext/curses/curses.c (window_idlok): ditto.
+
+ * ext/curses/curses.c (window_keypad): ditto.
+
+ * ext/curses/curses.c (window_idlok): idlok() may return void on
+ some platforms; so don't use return value.
+
+ * ext/curses/curses.c (window_scrollok): ditto for consistency.
+
+ * ext/curses/curses.c: replace FIX2INT() by typechecking NUM2INT().
+
+Fri Dec 7 09:51:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (str_extend): should not process immature #$x and
+ #@x interpolation, e.g #@#@ etc.
+
+Fri Dec 7 03:21:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_sort_by): sort_by does not have to be stable always.
+
+ * enum.c (enum_sort_by): call qsort directly to gain performance.
+
+Thu Dec 6 18:52:28 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/extmk.rb.in: add -Wl,-R flags to DLDFLAGS on netbsdelf.
+
+ * lib/mkmf.rb: ditto.
+
+Thu Dec 6 09:15:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_qsort): ruby_qsort(qs6) is now native thread safe.
+
+ * error.c (rb_sys_fail): it must be a bug if it's called when
+ errno == 0.
+
+Wed Dec 5 23:36:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (WC2MBC1ST): should not pass through > 0x80 number in UTF-8.
+
+Wed Dec 5 20:05:18 2001 Florian Frank <flori@ping.de>
+
+ * ext/socket/socket.c (bsock_send): should raise EWOULDBLOCK
+ exception.
+
+ * ext/socket/socket.c (s_recvfrom): ditto.
+
+ * ext/socket/socket.c (s_accept): ditto.
+
+ * ext/socket/socket.c (udp_send): ditto.
+
+Tue Dec 4 17:43:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (DUPSETUP): new SETUP macro for duplication.
+
+ * time.c (time_dup): implement in Time class using DUPSETUP.
+
+ * time.c (time_getlocaltime): new method; probably requires
+ better name than getlocaltime. [new,experimental]
+
+ * time.c (time_getgmtime): ditto.
+
+ * array.c (rb_ary_dup): uses DUPSETUP.
+
+ * string.c (rb_str_dup): uses DUPSETUP. now properly copies
+ instance variables too.
+
+Tue Dec 4 03:49:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fread): EAGAIN/EWOULDBLOCK should not terminate and
+ throw away the input.
+
+ * time.c (time_new_internal): underflow adjustment must not use
+ negative div/mod.
+
+ * time.c (time_cmp): should consider tv_usec on non Fixnum number
+ comparison.
+Sun Dec 9 23:00:54 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * matrix.rb: Vector#* bug. reported from Massimiliano Mirra
+ <info@chromatic-harp.com>.
+
+Sun Dec 9 22:15:59 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * enum.c (enum_sort_by): should replace with last elements.
+
+Mon Dec 3 16:06:57 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/extconf.rb: remove -L/usr/local/lib.
+
+ * configure.in: add -Wl,-export-dynamic on NetBSD.
+
+Mon Dec 3 16:04:16 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * configure.in: not use X11BASE, since it's not always set.
+
+Mon Dec 3 13:53:49 2001 Tanaka Akira <akr@m17n.org>
+
+ * time.c (rb_strftime): buffer length condition was wrong.
+
+ * time.c (time_strftime): should backup buf to the original
+ buffer.
+
+Mon Dec 3 09:59:08 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_plus): must detect result overflow.
+
+ * time.c (time_minus): ditto.
+
+ * time.c (time_new_internal): round usec overflow and underflow
+ here.
+
+ * time.c (time_plus): move operand overflow/underflow check to
+ time_new_internal().
+
+ * time.c (time_minus): ditto.
+
+ * time.c (time_cmp): should consider tv_usec too.
+
+Mon Dec 3 03:32:22 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * configure.in: apply patch from NetBSD's pkgsrc (patch-aa).
+
+Sun Dec 2 22:01:52 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: use GCC, not without_gcc. remove without_gcc.
+
+ * ext/curses/extconf.rb: check for curses.h.
+
+ * ext/dbm/extconf.rb: check if $CFLAGS includes DBM_HDR.
+
+Sat Dec 1 12:13:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_gmtime): time_modify() should be called even if tm
+ struct is not calculated yet.
+
+Fri Nov 30 17:02:55 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set target_cpu to i386 on cygwin and mingw32.
+
+ * configure.in: default --enable-shared to yes on cygwin and mingw32.
+
+Fri Nov 30 00:25:28 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * README.EXT: Appendix B is duplicated.
+
+ * README.EXT.ja: ditto.
+
+Thu Nov 29 00:28:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_equal): object with to_str must be treated as a
+ string.
+
+Wed Nov 28 18:46:28 2001 Ville Mattila <mulperi@iki.fi>
+
+ * eval.c (rb_thread_select): should subtract timeofday() from
+ limit, not reverse.
+
+Wed Nov 28 16:03:28 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * util.c (scan_hex): x is not a hexadecimal digit.
+
+Wed Nov 28 13:38:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): should treat the case that
+ select(2) returns 0, if a thread is under both WAIT_SELECT and
+ WAIT_TIME. Jakub Travnik <J.Travnik@sh.cvut.cz> actually fixed
+ this bug.
+
+Tue Nov 27 02:15:25 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_float): must distinguish -0.0 from 0.0.
+
+Mon Nov 26 20:57:24 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Setup*, ext/syslog/*: import the "syslog" module from the
+ rough ruby project.
+
+Mon Nov 26 16:14:42 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * gc.c (gc_mark_all): tweak mark order for little bit better scan.
+
+ * gc.c (rb_gc_mark): ditto.
+
+ * gc.c (rb_gc): ditto.
+
+Mon Nov 26 16:54:59 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (mypopen): fixed that mypclose() didn't really close
+ pipe.
+
+ * win32/win32.c (CreateChild): set STARTF_USESTDHANDLES flag only
+ when some handles are passed.
+
+Mon Nov 26 16:31:28 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (sort_by_i): slight performance boost.
+
+Sun Nov 25 21:02:18 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * parse.y (str_extend): change types of second and third arguments
+ from char to int.
+
+Thu Nov 22 20:15:28 2001 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
+
+ * gc.c (gc_mark_rest): should call gc_mark_children(), not gc_mark().
+
+ * gc.c (rb_gc_mark): may cause infinite loop.
+
+Thu Nov 22 00:28:13 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (str_extend): should check nesting parentheses in #{}.
+
+Wed Nov 21 12:22:52 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi.rb: CGI#header: do not set Apache.request.status for
+ Location: if Apache.request.status is already set.
+
+Wed Nov 21 02:24:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (pst_wstopsig): returns nil unless WIFSTOPPED() is
+ non-zero.
+
+ * process.c (pst_wtermsig): returns nil unless WIFSIGNALED() is
+ non-zero.
+
+ * process.c (pst_wexitstatus): returns nil unless WIFEXITED() is
+ non-zero.
+
+Wed Nov 21 00:17:54 2001 Ville Mattila <mulperi@iki.fi>
+
+ * eval.c (rb_thread_select): tv_sec and tv_usec should not be
+ negative.
+
+ * signal.c (posix_signal): do not set SA_RESTART for SIGVTALRM.
+
+Tue Nov 20 21:09:22 2001 Guy Decoux <ts@moulon.inra.fr>
+
+ * parse.y (call_args2): block_arg may follow the first argument in
+ call_args2.
+
+Tue Nov 20 02:01:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (stack_check): should avoid stack length check during
+ raising SystemStackError exception.
+
+Tue Nov 20 01:07:13 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (str_extend): should not terminate string interpolation
+ with newlines in here-docs and newline terminated strings.
+
+Mon Nov 19 17:58:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_modfunc): should follow NODE_ZSUPER link; based
+ on Guy Decoux's patch in [ruby-talk:25478].
+
+Mon Nov 19 16:09:33 2001 Tanaka Akira <akr@m17n.org>
+
+ * string.c (rb_str_succ): there was buffer overrun.
+
+Mon Nov 19 14:14:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (str_extend): term can be any character.
+
+Mon Nov 19 04:58:42 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb (header): support for Apache. thanks to
+ Shugo Maeda <shugo@ruby-lang.org>.
+
+Sun Nov 18 19:37:55 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y: needless conditionals.
+
+ * parse.y (parse_regx): parse error at unterminated regex /#{.
+ (ruby-bugs-ja:PR#142)
+
+Sat Nov 17 12:37:39 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): should give length to utf8_to_uv().
+
+ * pack.c (utf8_to_uv): add length check.
+
+Sat Nov 17 01:41:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * massages: replace "wrong #" by "wrong number".
+
+ * marshal.c (w_float): output Infinity and NaN explicitly.
+
+ * marshal.c (r_object): support new explicit float format.
+
+ * eval.c (rb_thread_wait_for): select may cause ERESTART on
+ Solaris.
+
+ * eval.c (rb_thread_select): ditto.
+
+Thu Nov 15 15:29:39 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_ary_join): non-nil separator must be converted to
+ String. and separators' total length was wrong.
+
+Thu Nov 15 03:37:17 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * hash.c (ruby_setenv): remove USE_WIN32_RTL_ENV block since it's
+ obsoleted.
+
+ * win32/win32.c, win32/win32.h: sort out #if 0 - #endif or others.
+
+Thu Nov 15 00:07:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_to_s): if rb_output_fs is nil, insert newlines
+ between array elements (use rb_default_rs as newline literal)
+ [experimental].
+
+Wed Nov 14 15:16:23 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * gc.c (init_mark_stack): no need to clear mark_stack.
+
+ * gc.c (gc_mark_all): need to handle finalizer mark.
+
+ * gc.c (gc_mark_rest): use MEMCPY instead of memcpy.
+
+ * gc.c (rb_gc_mark): earlier const check to avoid pusing special
+ constants into mark stack.
+
+Wed Nov 14 01:12:07 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (waitpid): fix wait count.
+
+ * win32/win32.c (poll_child_status): rename from wait_child().
+
+Wed Nov 14 01:33:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_to_s): 'to_s' now takes optional argument to
+ specify radix. [new]
+
+ * bignum.c (rb_big_to_s): ditto. [new]
+
+Tue Nov 13 19:50:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: do not override CC if set.
+
+Tue Nov 13 16:49:16 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (mypopen): return error status instead of calling
+ rb_sys_fail().
+
+ * win32/win32.c (do_spawn): ditto.
+
+Tue Nov 13 14:39:11 2001 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * signal.c (sighandle): should not re-register sighandler if
+ POSIX_SIGNAL is defined.
+
+Tue Nov 13 12:55:59 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (do_spawn): use CreateChild() instead of calling
+ CreateProcess() directly. Original patches comes from Patrick Cheng.
+
+ * win32/win32.c (mypopen): ditto.
+
+ * win32/win32.c (mypclose): use rb_syswait() instead of waiting in this
+ function.
+
+ * win32/win32.c (waitpid): use wait_child() instead of _cwait().
+
+ * win32/win32.c (CreateChild): added. [new]
+
+ * win32/win32.c (wait_child): added. [new]
+
+ * win32/win32.c (FindFirstChildSlot): added. [new]
+
+ * win32/win32.c (FindChildSlot): added. [new]
+
+ * win32/win32.c (FindPipedChildSlot): added. [new]
+
+ * win32/win32.c (CloseChildHandle): added. [new]
+
+ * win32/win32.c (FindFreeChildSlot): added. [new]
+
+Tue Nov 13 12:38:12 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * hash.c (envix): use GET_ENVIRON and FREE_ENVIRON to get environment
+ variables list.
+
+ * hash.c (env_keys): ditto.
+
+ * hash.c (env_each_key): ditto.
+
+ * hash.c (env_values): ditto.
+
+ * hash.c (env_keys): ditto.
+
+ * hash.c (env_each_value): ditto.
+
+ * hash.c (env_each): ditto.
+
+ * hash.c (env_inspect): ditto.
+
+ * hash.c (env_to_a): ditto.
+
+ * hash.c (env_size): ditto.
+
+ * hash.c (env_empty_p): ditto.
+
+ * hash.c (env_has_value): ditto.
+
+ * hash.c (env_index): ditto.
+
+ * hash.c (env_to_hash): ditto.
+
+ * win32/win32.c (win32_getenv): use static buffer.
+
+ * win32/win32.c, win32/win32.h (win32_get_environ): get environment
+ variables list. [new]
+
+ * win32/win32.c, win32/win32.h (win32_free_environ): free environment
+ variables list. [new]
+
+Mon Nov 12 16:48:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_print): errat array may be empty.
+
+Mon Nov 12 01:30:37 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval_cmd): should not upgrade safe level unless
+ explicitly specified by argument newly added.
+
+ * signal.c (sig_trap): should not allow tainted trap closure.
+
+ * variable.c (rb_f_trace_var): should not allow trace_var on safe
+ level higher than 3.
+
+ * variable.c (rb_f_trace_var): should not allow tainted trace
+ closure.
+
+Sun Nov 11 00:12:23 2001 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
+
+ * gc.c: do not use static stack until system stack overflows.
+
+Sat Nov 10 03:57:09 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): should call Exception#exception instead of
+ calling rb_exc_new3() directly.
+
+ * error.c (exc_exception): set "mesg" directly to the clone. it
+ might be better to set mesg via some method for flexibility.
+
+Sat Nov 10 00:14:24 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (cvar_override_check): should print original module
+ name, if 'a' is T_ICLASS.
+
+ * parse.y (yylex): float '1_.0' should not be allowed.
+
+ * variable.c (var_getter): should care about var as Qfalse
+ (ruby-bugs#PR199).
+
+Fri Nov 9 13:50:06 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/config.status.in: make CFLAGS same as Makefile's one.
+
+Thu Nov 8 20:20:37 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_trap_eval): avoid annoying warning with signal.
+ [ruby-talk:23225]
+
+ * eval.c (rb_call0): adjust caller source file/line while
+ evaluating optional arguments.
+
+Thu Nov 8 18:41:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (cmpint): <=> or block for {min,max} may return bignum.
+
+ * array.c (sort_1): use rb_compint.
+
+ * array.c (sort_2): ditto.
+
+ * enum.c (min_ii): ditto.
+
+ * enum.c (min_ii): ditto.
+
+ * enum.c (max_i): ditto.
+
+ * enum.c (max_ii): ditto.
+
+Thu Nov 8 18:21:02 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (path_check_1): forgot to initialize 'p'.
+
+Thu Nov 8 14:52:15 2001 Tanaka Akira <akr@m17n.org>
+
+ * mkconfig.rb: use String#dump to generate Ruby string literal.
+
+Thu Nov 8 15:46:54 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eql): should override 'eql?'
+
+ * array.c (rb_ary_hash): should override 'hash' too.
+
+Tue Nov 6 14:38:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (security): always give warning for insecure PATH.
+
+ * dir.c (my_getcwd): do not rely on MAXPATHLEN.
+
+ * file.c (rb_file_s_readlink): ditto.
+
+ * file.c (path_check_1): ditto.
+
+Tue Nov 6 14:17:14 2001 Amos Gouaux <amos+ruby@utdallas.edu>
+
+ * lib/net/imap.rb (getquota_response): use astring for mailbox
+ names.
+
+ * lib/net/imap.rb (getacl_response): ditto.
+
+Mon Nov 5 17:09:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): should not call rb_f_block_given_p().
+
+Sat Nov 3 23:33:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): should terminate string by NUL.
+
+Sat Nov 3 22:28:51 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * matrix.rb (Matrix#column_vectors, Matrix#row_vectors): ditto bug.
+ this bug report and fix by tsutomu@nucba.ac.jp.
+
+ * forwardable.rb: change raise to Kernel::raise
+
+Sat Nov 3 10:11:57 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): better error message.
+
+Thu Nov 1 14:08:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_aref): idx may be a Bignum.
+
+ * numeric.c (fix_aref): negative index must return zero.
+
+Thu Nov 1 13:23:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark_children): should NOT treat last element of
+ structs and arrays specially.
+
+Wed Oct 31 16:59:25 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (exec_under): should initialize ruby_frame->self;
+
+Wed Oct 31 15:09:28 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (POP_VARS): should not set DVAR_DONT_RECYCLE if _old
+ ruby_vars is already force_recycled.
+
+Wed Oct 31 10:28:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc): handles mark stack overflow.
+
+ * gc.c (PUSH_MARK): use static mark stack, no more recursion.
+
+Wed Oct 31 02:44:06 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: CGI::Cookie::parse(): Ignore duplicate keys caused by
+ Netscape bug.
+
+Tue Oct 30 18:21:51 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/mkexports.rb: follow the change of rb_io_puts().
+
+Tue Oct 30 14:04:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): do smart chomp if $/ == '\n'. [new]
+
+ * io.c (rb_io_puts): don't treat Array specially.
+
+ * bignum.c (rb_big_cmp): should convert bignum to float.
+
+ * eval.c (rb_f_eval): can't modify untainted binding.
+
+Mon Oct 29 16:08:30 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should preserve p0 value.
+
+Mon Oct 29 14:56:44 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * intern.h (rb_protect_inspect): follow the change of array.c.
+
+ * eval.c (rb_exec_end_proc): follow the change of rb_protect().
+
+ * eval.c (method_proc, umethod_proc, rb_catch): cast the first
+ parameter of rb_iterate() to avoid VC++ warning.
+
+ * range.c (range_step): ditto.
+
+ * ext/sdbm/init.c (fsdbm_update, fsdbm_replace): ditto.
+
+Mon Oct 29 07:57:31 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (str_extend): should allow interpolation of $-x.
+
+ * variable.c (rb_cvar_set): empty iv_tbl may cause infinite loop.
+
+ * variable.c (rb_cvar_get): ditto.
+
+ * variable.c (cvar_override_check): ditto.
+
+Sat Oct 27 23:01:19 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_eq): convert Bignum to Float, instead of
+ reverse.
+
+Fri Oct 26 06:19:29 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_localtime): getting tm should not be prohibited for
+ frozen time objects.
+
+ * time.c (time_gmtime): ditto.
+
+ * version.c (Init_version): freeze RUBY_VERSION,
+ RUBY_RELEASE_DATE, and RUBY_PLATFORM.
+
+ * file.c (Init_File): freeze File::SEPARATOR, ALT_SEPARATOR and
+ PATH_SEPARATOR.
+
+ * file.c (rb_stat_cmp): should check operand type before calling
+ get_stat().
+
+Thu Oct 25 10:28:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval_cmd): should not invoke "call" with a block on
+ any occasion.
+
+Wed Oct 24 03:25:31 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_aref): idx may be a Bignum.
+
+Tue Oct 23 01:21:19 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (proc_invoke): fix self switching in Proc#call
+ (ruby-bugs-ja#PR108) and GC failure. use Qundef instead of 0
+ to direct not switching self.
+
+ * eval.c (call_trace_func): ditto.
+
+ * eval.c (call_end_proc): ditto.
+
+ * eval.c (proc_call): ditto.
+
+ * eval.c (proc_yield): ditto.
+
+Tue Oct 23 01:15:43 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * variable.c (rb_global_entry): reconstruct global variable
+ aliasing (sharing global_entry->var with other global_entry).
+
+ * variable.c (undef_getter): ditto.
+
+ * variable.c (undef_setter): ditto.
+
+ * variable.c (val_setter): ditto.
+
+ * variable.c (mark_global_entry): ditto.
+
+ * variable.c (rb_define_hooked_variable): ditto.
+
+ * variable.c (rb_f_trace_var): ditto.
+
+ * variable.c (remove_trace): ditto.
+
+ * variable.c (rb_f_untrace_var): ditto.
+
+ * variable.c (rb_gvar_get): ditto.
+
+ * variable.c (trace_en): ditto.
+
+ * variable.c (rb_gvar_set): ditto.
+
+ * variable.c (rb_gvar_defined): ditto.
+
+ * variable.c (rb_alias_variable): ditto.
+
+Mon Oct 22 18:53:55 2001 Masahiro Tanaka <masa@stars.gsfc.nasa.gov>
+
+ * numeric.c (num_remainder): a bug in Numeric#remainder.
+
+Mon Oct 22 15:21:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_exec_end_proc): END might be called within END
+ block.
+
+ * class.c (rb_mod_clone): should not copy class name, since clone
+ should remain anonymous.
+
+Fri Oct 19 23:40:37 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * variable.c (remove_trace): should not access already freed area.
+
+ * variable.c (rb_f_untrace_var): fix memory leak.
+
+Fri Oct 19 17:55:14 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * marshal.c (w_uclass): cloned class is not user
+ class. (ruby-bugs-ja#PR103)
+
+ * marshal.c (r_object): Struct subclass couldn't
+ load. (ruby-bugs-ja#PR104)
+
+Wed Oct 17 14:12:50 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * variable.c (alias_fixup): added. ad hoc support for ordinary
+ global variable aliasing. when original entry is set, make the
+ alias to refer directly as possible.
+
+ * variable.c (alias_getter, alias_setter): ditto.
+
+ * variable.c (rb_alias_variable): ditto. and no need to mark alias
+ variables.
+
+ * variable.c (rb_gvar_defined): refer the original entry of an alias.
+
+Tue Oct 16 23:29:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): self in a block given to define_method now be
+ switched to the receiver of the method.
+
+ * eval.c (proc_invoke): added new parameter to allow self
+ switching.
+
+Tue Oct 16 21:38:15 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_f_missing): check stack level with rb_stack_check().
+
+ * eval.c (rb_call0): ditto.
+
+ * eval.c, intern.h (rb_stack_check): added. [new]
+
+Tue Oct 16 13:18:47 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * object.c (rb_mod_initialize): optional block with
+ Module.new. [new] (from 2001-10-10)
+
+Tue Oct 16 00:07:06 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (yylex): disallow alpha-numeric and mbchar for
+ terminator of %string.
+
+Mon Oct 15 18:00:05 2001 Pit Capitain <pit@capitain.de>
+
+ * string.c (rb_str_index): wrong increment for non alphanumeric
+ string.
+
+Mon Oct 15 05:23:02 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * sprintf.c (rb_f_sprintf): support "%B".
+
+Wed Oct 10 03:11:47 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat_clone): should copy internal data too.
+
+ * numeric.c (num_clone): Numeric should not be copied by clone.
+
+ * object.c (rb_obj_clone): should check immediate values.
+
+ * parse.y (command): `yield' should take command_args.
+
+ * parse.y (parse_quotedwords): %w(...) is not a string.
+
+Tue Oct 9 18:40:35 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * process.c (Init_process): activate the case NT.
+
+Tue Oct 9 17:08:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (thread_status_name): separated from
+ rb_thread_inspect(). return string expression for thread status.
+
+ * eval.c (rb_thread_status, rb_thread_inspect): use
+ thread_status_name().
+
+ * eval.c (rb_thread_priority_set): return the priority not but
+ self.
+
+Sat Oct 6 23:07:08 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): NODE_MATCH3 was confusing left and right. sigh.
+
+Fri Oct 5 15:19:46 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_unique): should not dump anonymous class.
+
+Fri Oct 5 11:59:13 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (proc_s_new): revived.
+
+ * eval.c (Init_Proc): define Proc.new instead of Proc.allocate to
+ inhibit from creating uninitialized Proc.
+
+Thu Oct 4 14:11:03 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): EALREADY is the equivalent
+ for EINPROGRESS in ws2_32.lib.
+
+Wed Oct 3 20:11:06 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * re.c (rb_reg_s_alloc): avoid infinite recursion.
+
+Wed Oct 3 16:49:49 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/gdbm/gdbm.c (rb_gdbm_fetch): str is a VALUE now.
+
+Wed Oct 3 13:32:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object): better allocation type check for
+ TYPE_UCLASS. usage of allocation framework is disabled for now.
+
+ * variable.c (rb_class_path): Module may have subclass.
+
+ * string.c (rb_str_update): should maintain original negative
+ offset.
+
+ * string.c (rb_str_subpat_set): ditto
+
+ * string.c (rb_str_aset): ditto.
+
+ * re.c (rb_reg_nth_match): should check negative nth.
+
+ * re.c (rb_reg_nth_defined): ditto.
+
+Tue Oct 2 19:12:47 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftools.rb (catname): allow trailing '/' for the destination.
+
+Tue Oct 2 18:31:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should override existing class.
+
+Tue Oct 2 17:08:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_alloc): general instance allocation framework.
+ use of NEWOBJ() is deprecated except within 'allocate' method.
+
+Tue Oct 2 08:04:52 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * marshal.c (r_object): TYPE_UCLASS check should be inversed.
+
+Mon Oct 1 19:18:54 2001 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (unix_addr): getsockname(2) may result len = 0.
+
+ * ext/socket/socket.c (unix_peeraddr): getpeername(2) may result
+ len = 0.
+
+Mon Oct 1 09:59:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_subpat_set): support function for new argument
+ pattern String#[re,offset] = val. [new]
+
+Sat Sep 29 02:30:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (POP_BLOCK): rb_gc_force_recycle() was called too much.
+ Should not be called if SCOPE_DONT_RECYCLE is set.
+
+Wed Sep 26 22:21:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_aref_m): new argument pattern
+ String#[re,offset]. [new]
+
+Wed Sep 26 19:02:39 2001 Guy Decoux <ts@moulon.inra.fr>
+
+ * parse.y: allow 'primary[] = arg'
+
+Tue Sep 25 10:46:42 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (isInternalCmd): check return value of NtMakeCmdVector
+ (Tietew <tietew@tietew.net>'s patch).
+
+Mon Sep 24 00:55:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_substr): should return an instance of
+ receiver's class.
+
+ * string.c (rb_str_succ): ditto.
+
+ * array.c (rb_ary_subseq): ditto.
+
+ * array.c (rb_ary_initialize): Array.new([1,2,3]) => [1,2,3]. [new]
+
+Sat Sep 22 22:16:08 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_reverse): should return an instance of
+ receiver's class.
+
+ * string.c (rb_str_times): ditto.
+
+ * array.c (rb_ary_times): ditto
+
+ * string.c (str_gsub): ditto.
+
+ * string.c (rb_str_ljust): ditto.
+
+ * string.c (rb_str_rjust): ditto.
+
+ * string.c (rb_str_center): ditto.
+
+Sat Sep 22 12:13:39 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): retrieves file, line information from binding.
+
+Thu Sep 20 21:25:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (MATCH_DATA): access via rb_svar().
+
+Thu Sep 20 15:20:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c, intern.h (rb_svar): return reference to special variable
+ from local variable index. [new]
+
+ * eval.c (rb_eval): use rb_svar() for NODE_FLIP{2,3}.
+
+ * parse.y (rb_(backref|lastline)_(get|set)): access via rb_svar().
+
+ * eval.c (proc_invoke): push dynamic variables.
+
+ * eval.c (rb_thread_yield): push special variables as dynamic
+ variables($_, $~ and FLIP states).
+
+Thu Sep 20 15:20:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * intern.h, parse.y (rb_is_local_id): return true if the ID is
+ local symbol. [new]
+
+ * parse.y (internal_id): make new ID for internal use. [new]
+
+ * parse.y (cond0): allocate internal ID for NODE_FLIP{2,3}.
+
+ * eval.c (rb_f_local_variables): use rb_is_local_id() to select
+ visible local variables.
+
+Thu Sep 20 15:20:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_thread_start_0): SCOPE_SHARED is removed.
+
+ * eval.c, intern.h (rb_thread_scope_shared_p): removed. special
+ variables are no longer shared by threads.
+
+ * re.c (rb_reg_search): MATCHDATA is no longer shared by threads.
+
+Tue Sep 18 11:44:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_init): String.new() => "" [new]
+
+Tue Sep 11 20:53:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_path): new method.
+
+ * dir.c (dir_initialize): wrap DIR into struct, along with path
+ information.
+
+Sat Sep 8 07:13:42 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/net/telnet.rb: waitfor(): improvement. thanks to
+ nobu.nakada@nifty.ne.jp
+
+Sat Sep 8 04:34:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_restore_context): save current value of
+ lastline and lastmatch in the thread struct for later restore.
+
+ * eval.c (rb_thread_save_context): restore lastline and lastmatch.
+
+Fri Sep 7 11:27:56 2001 akira yamada <akira@ruby-lang.org>
+
+ * numeric.c (flo_to_s): should handle negative float value.
+
+Fri Sep 7 09:44:44 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/net/telnet.rb: waitfor(): bug fix.
+
+Fri Sep 7 07:11:34 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: CGI#doctype(): bug fix (html4Fr).
+
+ * lib/net/telnet.rb, lib/cgi.rb: remove VERSION, RELEASE_DATE,
+ VERSION_CODE, RELEASE_CODE. please use REVISION.
+
+ * lib/cgi.rb: CGI#header(): bug fix.
+
+ * lib/net/telnet.rb, lib/cgi.rb: concat --> +=
+
+Thu Sep 6 17:38:18 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * dir.c (dir_s_chdir): raise if environment variable HOME/LOGDIR
+ not set.
+
+ * dir.c (glob_helper): avoid infinite loop on a file name with
+ wildcard characters. (ruby-bugs#PR177)
+
+Thu Sep 6 14:25:15 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_s_hexdigest): remove a debug
+ print.
+
+Thu Sep 6 13:56:14 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_s_digest,
+ rb_digest_base_s_hexdigest): ensure that a string is given.
+
+Thu Sep 6 13:28:51 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/jcode.rb (_regexp_quote): fix quote handling, again.
+
+Thu Sep 6 07:28:56 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_find_file_ext): add const qualifiers to ext.
+
+ * intern.h (rb_find_file_ext): ditto.
+
+Thu Sep 6 07:16:14 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/socket/socket.c (Init_socket): remove duplicating constants.
+
+Thu Sep 6 03:15:24 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): should check whole ancestors to
+ avoid duplicate module inclusion.
+
+Wed Sep 5 20:02:27 2001 Shin'ya Adzumi <adzumi@denpa.org>
+
+ * string.c (trnext): should check backslash before updating "now"
+ position.
+
+Wed Sep 5 17:41:11 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/jcode.rb (_regexp_quote): fix quote handling.
+
+Tue Sep 4 01:03:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (Init_Regexp): to_s to be alias to inspect.
+
+Mon Sep 3 22:46:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): should support 'keyword='.
+
+Mon Sep 3 20:26:08 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * intern.h (rb_find_file_ext): changed from rb_find_file_noext().
+
+Mon Sep 3 15:12:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): should not adjust argc/argv if -e option
+ is supplied.
+
+Mon Sep 3 14:11:17 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * error.c: unbreak the build on *BSD with gcc 3.0.1 by removing
+ the conflicting declaration of sys_nerr for *BSD.
+
+Sat Sep 1 18:50:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): should not alter origargv[].
+
+ * ruby.c (set_arg0): long strings for $0 dumped core.
+
+Sat Sep 1 09:50:54 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ruby.c (set_arg0): prevent SEGV when val is longer than the
+ original arguments.
+
+ * ruby.c (ruby_process_options): initialize total length of
+ original arguments at first.
+
+Sat Sep 1 14:05:28 2001 Brian F. Feldman <green@FreeBSD.org>
+
+ * ruby.c (set_arg0): use setprogtitle() if it's available.
+
+Sat Sep 1 03:49:11 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_popen): accept integer flags as mode.
+
+Fri Aug 31 19:46:05 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_find_file_ext): extension table can be supplied from
+ outside. renamed.
+
+ * eval.c (rb_f_require): replace rb_find_file_noext by
+ rb_find_file_ext.
+
+Fri Aug 31 19:26:55 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_provided): should also check feature without
+ extension.
+
+Fri Aug 31 13:06:33 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_to_s): do not rely on decimal point to be '.'
+
+Wed Aug 29 02:18:53 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): ternary ? can be followed by newline.
+
+Tue Aug 28 00:40:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): should check static linked libraries
+ before raising exception.
+
+Fri Aug 24 15:17:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_equal): check identity equality first.
+
+ * string.c (rb_str_equal): ditto.
+
+ * struct.c (rb_struct_equal): ditto.
+
+Fri Aug 24 14:38:17 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * dln.c (dln_strerror): fix a bug that sometimes made null message on
+ win32 (Tietew <tietew@tietew.net>'s patch).
+
+ * win32/win32.c (mystrerror): ditto.
+
+Fri Aug 24 03:15:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): undef Integer::new.
+
+Fri Aug 24 00:46:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): NODE_WHILE should update result for each
+ conditional evaluation.
+
+ * eval.c (rb_eval): NODE_UNTIL should return last evaluated value
+ (or value given to break).
+
+Thu Aug 23 21:59:38 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * enum.c (sort_by_i): fix typo.
+
+Thu Aug 23 10:10:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): should not dump core for "defined?(())".
+
+ * eval.c (umethod_bind): recv can be an instance of descender of
+ oklass if oklass is a Module.
+
+Wed Aug 22 23:20:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_equal): check identity equality first.
+
+Wed Aug 22 19:58:59 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (intersect_fds): counts intersecting fds.
+
+ * eval.c (rb_thread_schedule): only fds requested by
+ each thread count as select_value.
+
+Tue Aug 21 22:28:09 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (group_member): should check real gid only.
+
+ * file.c (eaccess): do not cache euid, since effective euid may be
+ changed via Process.euid=().
+
+ * file.c (eaccess): return -1 unless every specified access mode
+ is permitted.
+
+Tue Aug 21 16:09:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): while/until returns the value which is given
+ to break.
+
+ * parse.y (value_expr): using while/until/class/def as an
+ expression is now gives a warning, not an error.
+
+Tue Aug 21 11:56:02 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eqq): should compare strings based on magical
+ increment (using String#upto), not dictionary order.
+
+Mon Aug 20 19:53:16 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/digest/sha2/extconf.rb: fix support for cross-compiling.
+
+ * mkconfig.rb: fix support for autoconf 2.52.
+
+Mon Aug 20 17:24:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_sort_by): new method for Schewartzian transformed
+ stable sort.
+
+Mon Aug 20 16:09:05 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (mod_av_set): detect constant overriding for built-in
+ classes/modules.
+
+Mon Aug 20 15:14:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (tokadd_escape): escaped backslashes too much.
+
+Mon Aug 20 13:24:08 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): 'iter' here should be an array.
+
+Mon Aug 20 12:43:08 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): should retrieve __member__ data from
+ non-singleton class.
+
+Sat Aug 18 23:11:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_get): class variable override check added.
+
+ * variable.c (rb_cvar_set): ditto
+
+ * variable.c (rb_cvar_declare): ditto.
+
+Fri Aug 17 12:13:48 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: Protocol.new requires at least one arg.
+
+ * lib/net/smtp.rb: ditto.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/http.rb: ditto.
+
+Fri Aug 17 00:49:51 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parse_regx): handle backslash escaping of delimiter here.
+
+Thu Aug 16 23:03:40 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * io.c: prevent recursive malloc calls on NEC UX/4800.
+
+ * ext/socket/socket.c: ditto.
+
+Thu Aug 16 13:54:04 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (s_recvfrom): fix typo.
+
+Thu Aug 16 09:53:28 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (s_recvfrom): avoid VC++6 warning.
+
+Thu Aug 16 03:50:33 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.c (NtCmdGlob): avoid VC++ warning.
+
+ * lib/mkmf.rb: add -I$(srcdir) to CPPFLAGS.
+
+Wed Aug 15 04:59:15 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/*/extconf.rb: really fix so that they build from any
+ directory.
+
+Wed Aug 15 04:04:02 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/extconf.rb: fix so that they build from any
+ directory.
+
+Wed Aug 15 01:59:19 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/defs.h: Define NO_UINT64_T instead of emitting an
+ error to fail.
+
+ * ext/digest/sha2/extconf.rb: Do not exit on error, and utilize
+ NO_UINT64_T to detect if the system has a 64bit integer type.
+
+Tue Aug 14 21:14:07 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/extconf.rb: do not create Makefile when no 64bit
+ integer type is detected.
+
+Tue Aug 14 17:09:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): new method.
+
+Tue Aug 14 11:49:00 2001 TOYOFUKU Chikanobu <toyofuku@juice.or.jp>
+
+ * string.c (rb_str_cmp): remove needless conditional.
+
+Tue Aug 14 03:23:25 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * string.c (rb_str_lstrip_bang) `return Qnil' was missing.
+
+Mon Aug 13 14:16:46 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * bignum.c, marshal.c: Detypo: s/SIZEOF_ING/SIZEOF_INT/.
+
+Sun Aug 12 15:01:58 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * string.c (rb_str_cat): fix buffer overflow.
+
+ * string.c (rb_str_append): nothing to append actually when `str2'
+ is empty.
+
+Sat Aug 11 14:43:47 2001 Tanaka Akira <akr@m17n.org>
+
+ * array.c (rb_inspecting_p): initialize inspect_key if it is
+ not initialized yet.
+
+Fri Aug 10 22:14:37 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (cond0): operands of logical operators are not treated
+ as conditional expression anymore, but propagate conditional
+ status if used in conditionals.
+
+Tue Aug 7 09:10:32 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * win32/win32.h: fix problems with BC++ (ruby-bugs#PR161).
+
+Mon Aug 6 23:47:46 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * pack.c (pack_pack): associates p/P strings once at last
+ (reverted to 1.26).
+
+ * string.c (rb_str_associate): associates an Array at once, not
+ but a String. realloc's when str_buf.
+
+Mon Aug 6 17:01:33 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_gc_mark_threads): should mark ruby_cref.
+
+Mon Aug 6 14:31:37 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * numeric.c (num_divmod): fix typo.
+
+Mon Aug 6 03:29:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lstrip_bang): new method.
+
+ * string.c (rb_str_rstrip_bang): new method.
+
+Mon Aug 6 00:35:03 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * struct.c (rb_struct_modify): should check frozen and taint
+ status.
+
+Sun Aug 5 19:28:39 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * string.c (rb_str_associate): should consider STR_ASSOC too.
+
+Sun Aug 5 07:46:18 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_undefined): do not recurse if method_missing is
+ undefined.
+
+Thu Aug 2 21:37:32 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_waitpid): now all arguments are optional.
+
+ * process.c (Init_process): waitpid is now alias to wait.
+
+ * process.c (Init_process): waitpid2 is now alias to wait2.
+
+ * process.c (rb_waitpid): made public.
+
+ * ext/pty/pty.c (pty_getpty): avoid disturbing SIGCHLD using
+ thread and rb_waitpid.
+
+Thu Aug 2 11:23:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_getpgrp): now takes no argument on all
+ platforms.
+
+ * process.c (proc_setpgrp): ditto.
+
+Thu Aug 2 01:29:42 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (strrdirsep): removed meaningless code.
+
+ * file.c (rb_file_s_expand_path): reverted to 1.66.
+
+Wed Aug 1 16:17:47 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_in): added
+ Socket::pack_sockaddr_in(). [new]
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): added
+ Socket::pack_sockaddr_un(). [new]
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_in): added
+ Socket::unpack_sockaddr_in(). [new]
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): added
+ Socket::unpack_sockaddr_un(). [new]
+
+Wed Aug 1 15:42:16 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * eval.c (ruby_run): avoid VC++ warning.
+
+Tue Jul 31 17:30:53 2001 Usaku Nakamura <usa@ruby-lang.org>
+
+ * marshal.c (Init_marshal): fix typos.
+
+Tue Jul 31 15:16:39 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * process.c (last_status_set): nothing returned, should be void.
+
+ * ext/socket/socket.c (load_addr_info): ditto.
+
+Tue Jul 31 12:11:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (Init_marshal): new constant Marshal::MAJOR_VERSION
+ and Marshal::MINOR_VERSION.
+
+Tue Jul 31 07:18:04 2001 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * file.c (rb_file_s_expand_path): scans per path element not per
+ byte/character, including fix of [ruby-talk:18152] and
+ multi-byte pathname support.
+
+Tue Jul 31 11:52:10 2001 akira yamada <akira@ruby-lang.org>
+
+ * marshal.c (marshal_load): ruby_verbose test should be wrapped by
+ RTEST().
+
+Mon Jul 30 17:54:23 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_index): should return nil (not the default
+ value) if value is not in the hash.
+
+Mon Jul 30 12:55:47 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_div): new method added. alias to '/' which
+ should be preserved even if '/' is redefined (e.g. by
+ mathn). [new]
+
+Mon Jul 30 11:12:14 2001 Amos Gouaux <amos+ruby@utdallas.edu>
+
+ * lib/net/imap.rb: added new commands for managing folder quotas
+ and folder ACLs.
+
+Mon Jul 30 03:19:53 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr2inum): "0 ff".hex should return 0, not 255.
+
+Fri Jul 27 22:29:41 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_file_s_expand_path): fixed using CharNext().
+
+Fri Jul 27 18:07:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_provided): extension should be guessed using
+ rb_find_file_noext().
+
+ * eval.c (rb_f_require): should call rb_feature_p() after
+ extension completion.
+
+Fri Jul 27 16:25:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): add CHECK_INTS before next, redo, retry to
+ avoid potential uninterruptable infinite loop.
+
+Thu Jul 26 11:27:12 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_find_file_noext, rb_find_file): fix tilde expansion
+ problem.
+
+Wed Jul 25 17:54:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): use CharNext() to expand.
+
+Wed Jul 25 17:16:26 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * intern.h: add some missing function prototypes.
+
+Wed Jul 25 15:50:05 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * file.c (rb_file_s_expand_path): should not expand "." and ".."
+ not following dirsep.
+
+Wed Jul 25 12:15:32 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_find_file_noext): should update f by expanded path.
+
+ * file.c (rb_find_file): ditto.
+
+Tue Jul 24 23:10:47 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (strrdirsep): multi-byte pathname and DOSish separator
+ support. originally comes from Patrick Cheng. [new]
+
+ * file.c (rb_file_s_basename, rb_file_s_dirname): use
+ strrdirsep(). comes from Patrick Cheng.
+
+ * file.c (is_absolute_path): restricted in DOSish absolute path
+ with drive letter, and UNC support. originally comes from
+ Patrick Cheng.
+
+ * file.c (getcwd): define macro using getwd() unless provided.
+
+Tue Jul 24 19:23:15 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: dig the target subdirectory for
+ lib/* files properly in case of create_makefile("dir/name").
+
+Mon Jul 23 00:26:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_provide_feature): should not tweak extension used for
+ loading.
+
+Sun Jul 22 21:16:43 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: introduce a couple of new make
+ variables: CLEANFILES and DISTCLEANFILES. They'd typically be
+ defined in a file "depend".
+
+Sat Jul 21 09:40:10 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * io.c (io_fread): use fread(3) if PENDING_COUNT is available.
+
+Fri Jul 20 22:55:01 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * gc.c (ruby_xrealloc): fix a dangling bug which led memory
+ reallocation to fail even though the second try after a GC
+ succeeds.
+
+Fri Jul 20 03:00:46 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * class.c (rb_mod_include_p): Module#include? added. [new]
+
+Fri Jul 20 01:05:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (ignorecase_setter): give warning on modifying $=.
+
+ * string.c (rb_str_casecmp): new method. [new]
+
+ * string.c (rb_str_eql): separated from rb_str_equal(), make it
+ always be case sensitive. [new]
+
+ * string.c (rb_str_hash): made it always be case sensitive.
+
+Thu Jul 19 13:03:15 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_f_require): should not include path in $" value
+
+ * file.c (rb_find_file): should return 0 explicitly on failure.
+
+Tue Jul 17 11:44:40 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * ruby.h: enable volatile directive with VC++.
+
+ * regex.c: ditto.
+
+Tue Jul 17 06:01:12 2001 Minero Aoki <aamine@loveruby.net>
+
+ * doc/net/smtp.rd.ja, pop.rd.ja, http.rd.ja: new files.
+
+ * MANIFEST: add doc/net/{http,pop,smtp}.rd.ja.
+
+Tue Jul 17 11:22:01 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (NUM_FAILURE_ITEMS): was confusing NUM_REG_ITEMS and
+ NUM_NONREG_ITEMS, which have happened to be same value.
+
+Tue Jul 17 11:08:34 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * ext/extmk.rb.in: modify RM macro because command.com/cmd.exe don't
+ recognize single quotation as quote character.
+
+ * lib/mkmf.rb: ditto.
+
+Tue Jul 17 01:38:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_class_new): subclass check moved to this function.
+
+ * class.c (rb_class_boot): check less version of rb_class_new().
+
+Man Jul 16 13:21:30 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * file.c (file_load_ok): fix typo.
+
+Mon Jul 16 12:58:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should preserve iter status for embedded
+ frame in the block.
+
+Mon Jul 16 00:04:39 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): may overrun buffer on stack.
+
+Sun Jul 15 01:38:28 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * string.c (rb_str_insert): forgot to call rb_str_modify().
+
+Sat Jul 14 12:26:30 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/digest/*/extconf.rb: fix so that they build from any
+ directory.
+
+Sat Jul 14 06:20:17 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/net/http.rb: HTTP#proxy? did not worked.
+
+Sat Jul 14 02:56:19 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in: support multi-level ext/ directories.
+ (e.g. you can have ext/foo, ext/foo/bar and ext/foo/baz)
+
+Sat Jul 14 02:55:02 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/.cvsignore: let cvs ignore extinit.c.
+
+Fri Jul 13 23:47:35 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_search): should consider reverse search.
+
+Fri Jul 13 22:26:09 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb: use File::split to split a target into a prefix and
+ a module name. This also works around a just found bug of
+ String#rindex.
+
+ * ext/extmk.rb.in: ditto.
+
+Fri Jul 13 02:36:10 2001 Minero Aoki <aamine@loveruby.net>
+
+ * dir.c (dir_s_chdir): warn only when invoked from multiple
+ threads or block is not given.
+
+Thu Jul 12 15:11:48 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): workaround for the setup of
+ Cygwin socket(EALREADY).
+
+Mon Jul 9 16:49:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in: modify RM macro.
+
+ * lib/mkmf.rb: ditto.
+
+Sun Jul 8 20:52:02 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.h: fix a wrong function name: rb_iglob() -> rb_globi().
+
+Sun Jul 8 16:04:35 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: rename HTTP#request_by_name to send_request.
+
+ * lib/net/protocol.rb (ProtoSocket#read): modify typo.
+
+Sat Jul 7 17:45:35 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_convert_type): should use rb_rescue(), not rb_rescue2().
+
+ * range.c (range_init): ditto.
+
+Fri Jul 6 18:01:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_dup): copies (actually does not free)
+ generic_ivar on dupif original owns them.
+
+Fri Jul 6 02:15:06 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb: a tempfile must be created with mode 0600.
+
+Thu Jul 5 20:28:53 2001 Tietew <tietew@tietew.net>
+
+ * string.c (rb_str_each_line): should propagate taint mark.
+
+ * ext/nkf/nkf.c (rb_nkf_kconv): ditto.
+
+Fri Jul 6 14:54:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): revamp for simpler implementation.
+
+ * file.c (rb_find_file_noext): use String object, instead of
+ passing char* around.
+
+ * file.c (rb_find_file): ditto.
+
+Thu Jul 5 22:01:02 2001 Mitsuhiro Kondo <kondo@nik-prt.co.jp>
+
+ * dln.c (dln_load): should use NSLINKMODULE_OPTION_BINDNOW.
+
+Thu Jul 5 13:44:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (load_file): local variables 'c' remain uninitialized on
+ xflag.
+
+Thu Jul 5 10:00:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_match): prefetched escaped character too early.
+
+Wed Jul 4 08:58:30 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): add argument check for attr_readers.
+
+Wed Jul 4 04:22:44 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTP#request_by_name): arg order changes.
+
+Wed Jul 4 04:07:36 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTP#request_by_name): bug fix.
+
+ * lib/net/http.rb: does not write Connection: by default.
+
+ * lib/net/protocol.rb: "start" for started protocol is an error.
+
+ * lib/net/protocol.rb: "finish" for finished protocol is an error.
+
+Wed Jul 4 03:17:31 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: new method HTTP#request_by_name (test)
+
+ * lib/net/http.rb: new class HTTPGenericRequest
+
+Tue Jul 3 23:58:29 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb: distclean should remove mkmf.log as well.
+
+Tue Jul 3 18:35:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval_string_wrap): should push frame (and adjust
+ cbase) before wrapped eval.
+
+ * eval.c (rb_eval_cmd): ditto.
+
+ * eval.c (eval): should update ruby_class always after all.
+
+Tue Jul 3 14:56:27 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (block_pass): do not change wrapper information.
+
+ * eval.c (rb_yield_0): preserve wrapper information.
+
+Tue Jul 3 08:59:50 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * error.c (rb_name_error): raise NameError instead of LoadError.
+
+Mon Jul 2 17:22:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_exception): clone the receiver exception instead of
+ creating brand new exception object of the receiver.
+
+Mon Jul 2 09:53:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval_string_wrap): extend new ruby_top_self, not
+ original self.
+
+ * eval.c (rb_eval_cmd): respect ruby_wrapper if set.
+
+ * eval.c (eval): do not update ruby_class unless scope is not
+ provided.
+
+Sun Jul 1 10:51:15 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (eval): preserve wrapper information.
+
+ * eval.c (proc_invoke): ditto.
+
+ * eval.c (block_pass): ditto.
+
+Sat Jun 30 02:55:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (void_expr): too much warnings for void context
+ (e.g. foo[1] that can be mere Proc call).
+
+Fri Jun 29 17:23:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_name_error): new function to raise NameError with
+ name attribute set.
+
+ * eval.c (rb_f_missing): set name and args in the exception
+ object. [new]
+
+ * error.c (name_name): NameError#name - new method.
+
+ * error.c (nometh_args): NoMethodError#args - new method.
+
+Fri Jun 29 15:29:31 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lex.c (rb_reserved_word): lex_state after tRESCUE should be
+ EXPR_MID.
+
+Thu Jun 28 00:21:28 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/matrix.rb: resolve 'ruby -w' warnings.
+
+ * lib/irb/locale.rb: resolve 'ruby -w' warnings.
+
+ * lib/irb/multi-irb.rb: resolve 'ruby -w' warnings.
+
+ * lib/irb/ruby-lex.rb: fix problem for "\\M-\\..." and "\\C-\\..."
+ and resolve 'ruby -w' warnings.
+
+ * lib/irb/ruby-token.rb: fix typo
+
+ * lib/shell/command-processor.rb: resolve 'ruby -w' warnings.
+
+Wed Jun 27 08:53:26 2001 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: new methods POP3.auth_only, POP3#auth_only
+
+ * lib/net/http.rb: HTTP.Proxy returns self if ADDRESS is nil.
+
+ * lib/net/protocol.rb: new method ProtocolError#response
+
+ * lib/net/protocol.rb,smtp.rb,pop.rb,http.rb: add document.
+
+Tue Jun 26 18:42:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (add_heap): allocation size of the heap unit is doubled for
+ each allocation.
+
+Mon Jun 25 09:54:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (isdelim): space, tab, and newline are no longer
+ delimiters for glob patterns.
+
+Sat Jun 23 22:28:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_avalue): new conversion scheme between single
+ value and array values.
+
+ * eval.c (avalue_to_svalue): ditto.
+
+ * eval.c (rb_eval): REXPAND now uses avalue_to_svalue(), return
+ and yield too.
+
+ * eval.c (rb_yield_0): use avalue_to_svalue().
+
+ * eval.c (proc_invoke): Proc#call gives avaules, whereas
+ Proc#yield gives mvalues.
+
+ * eval.c (bmcall): convert given value (svalue) to avalue.
+
+Sat Jun 23 18:28:52 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/readline/readline.c (readline_event): a non-void function
+ should return a value.
+
+Fri Jun 22 23:17:28 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): workaround for the setup of
+ Cygwin socket.
+
+Fri Jun 22 23:11:17 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/locale.rb: fix for require "kconv" problem
+
+Fri Jun 22 18:08:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): no mvalue_to_svalue conversion here.
+
+ * eval.c (massign): takes svalue, convert it to mvalue inside.
+
+ * eval.c (rb_eval): parameters for yield/return are always
+ svalues now.
+
+ * eval.c (svalue_to_mvalue): more strict conversion.
+
+ * eval.c (mvalue_to_svalue): ditto.
+
+Fri Jun 22 17:12:23 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (new_size): prime hash size enabled.
+
+ * ext/socket/socket.c (Init_socket): SO_* constants added.
+
+Tue Jun 19 22:24:07 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * gc.c (rb_setjmp): avoid GCC 3.0 warnings.
+
+Tue Jun 19 18:19:30 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/readline/readline.c: add new methods:
+ Readline::completion_append_character and
+ Readline::completion_append_character=.
+
+Tue Jun 19 16:29:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_mvalue): new function to convert from svalue
+ to mvalue. [experimental]
+
+ * eval.c (mvalue_to_svalue): new function to convert from mvalue
+ to svalue.
+
+ * eval.c (rb_eval): use mvalue_to_svalue().
+
+ * eval.c (rb_yield_0): use mvalue_to_svalue().
+
+ * eval.c (proc_invoke): proper mvalue handling.
+
+Mon Jun 18 17:38:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): searches ".rb" and ".so" at the same
+ time. previous behavior (search ".rb", then ".so") has a
+ security risk (ruby-bugs#PR140).
+
+ * array.c (rb_ary_to_ary): new function to replace internal
+ rb_Array(), which never calls to_a, but to_ary (rb_Array() might
+ call both). [new]
+
+Mon Jun 18 00:43:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (PUSH_FAILURE_POINT): push option status again.
+
+ * regex.c (re_compile_pattern): avoid pushing unnecessary
+ option_set.
+
+Sat Jun 16 10:58:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): tainted string is OK if wrapped *and*
+ $SAFE >= 4.
+
+Thu Jun 14 16:27:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): should not nail down higher blocks
+ before preserving original context (i.e. should not alter
+ original context).
+
+Wed Jun 13 19:34:59 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * dir.c (Init_Dir): add a new method File::fnmatch? along with
+ File::Constants::FNM_*. While I am here, FNM_NOCASE is renamed
+ to FNM_CASEFOLD which is commonly used by *BSD and GNU libc.
+
+Wed Jun 13 09:33:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_yield): new method equivalent to Proc#call but no
+ check for number of arguments. [new]
+
+Tue Jun 12 14:21:28 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * lib/mkmf.rb: target_prefix is only for installation, not for
+ build.
+
+Tue Jun 12 00:41:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_eq): new method Method#==. [new]
+
+Mon Jun 11 14:29:41 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * confgure.in: add RUBY_CANONICAL_BUILD.
+
+Sun Jun 10 17:31:47 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * gc.c (STR_NO_ORIG): STR_NO_ORIG value was different between
+ string.c and gc.c
+
+Sat Jun 9 22:10:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should convert *non-array at the end of
+ arguments by using Array().
+
+Sat Jun 9 17:04:30 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * hash.c (ruby_setenv): readline library leaves their environment
+ strings uncopied. "free" check revised.
+
+Sat Jun 9 16:31:03 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * ext/extmk.rb.in: Use -F and -T for mswin32 because cl.exe doesn't
+ support -o officially and cl.exe considers that *.cc and *.cxx are
+ OBJs.
+
+ * lib/mkmf.rb: ditto.
+
+ * win32/Makefile.sub: Use del instead of rm.
+ All these changes are derived from Nobuyoshi Nakada's patch.
+ Thanks.
+
+Fri Jun 8 22:37:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (Init_stack): avoid __builtin_frame_address(2) to retrieve
+ stack bottom line.
+
+Fri Jun 8 18:14:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (numhash): should shuffle bits by dividing by prime number.
+
+Fri Jun 8 17:05:21 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): multiple assignment behavior fixed, which
+ results "*a = nil" makes "a == []" now.
+
+Fri Jun 8 15:25:09 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): should set SCOPE_PUBLIC before calling
+ dln_load().
+
+Thu Jun 7 17:28:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): exclude kDO_BLOCK too much by false condition.
+
+Wed Jun 6 23:02:36 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/sync.rb: bug fix if obj.initialize has parameters when
+ obj.extend(Sync_m)
+
+ * lib/mutex_m.rb: modified bit
+
+Wed Jun 6 16:11:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): should check if tainted even when wrap is
+ specified.
+
+Wed Jun 6 14:34:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (mrhs_basic): "*arg" should always be expanded by REXPAND.
+
+ * regex.c (re_compile_pattern): too much optimization for the
+ cases like /(.|a)b/.
+
+Tue Jun 5 23:58:43 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (fc_i): removed vast string allocation.
+
+Tue Jun 5 16:45:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (Init_Exception): NameError went under StandardError,
+ and NoMethodError went under NameError.
+
+Tue Jun 5 16:40:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_intern): non identifier symbols should be
+ categorized as ID_JUNK. [new]
+
+Tue Jun 5 16:15:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_const_at): use hash table as internal
+ data. [new]
+
+ * variable.c (rb_mod_const_of): ditto.
+
+ * variable.c (rb_const_list): new function to convert internal
+ data (hash table) to array of strings.
+
+ * eval.c (rb_mod_s_constants): data handling scheme has changed.
+
+Tue Jun 5 15:16:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_add_method): should not call rb_secure(), for
+ last_func may not be set.
+
+ * io.c (rb_io_ctl): ioctl should accept any integer within C long
+ range.
+
+Tue Jun 5 13:41:13 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/etc/extconf.rb: use egrep_cpp.
+
+Tue Jun 5 12:44:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object): wrong type check for modules.
+
+ * marshal.c (w_object): should not dump anonymous classes/modules.
+
+Tue Jun 5 01:19:34 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_open_file): use rb_file_sysopen_internal() if the 3rd
+ argument (permission flags) is given. [new, should be backported?]
+
+ * io.c (rb_io_mode_binmode): mode string (e.g. "r+") to flags to
+ open(2).
+
+Mon Jun 4 23:55:54 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): NODE_REXPAND expand an array of 1 element as
+ the element itself. [new, should be backported?]
+
+ * parse.y (ret_args): should treat "*[a]" in rhs expression as
+ "a", not "[a]".
+
+Mon Jun 4 04:14:53 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/shellwords.rb: don't destroy argument.
+
+Sat Jun 2 23:23:05 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should push option modifier at the
+ right place.
+
+Sat Jun 2 23:05:20 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi/session.rb: don't use module_function for Class.
+
+Sat Jun 2 00:02:22 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * irb messages: fix typos.
+
+Fri Jun 1 17:26:24 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * hash.c (replace_i): ignore when key == Qundef.
+
+Fri Jun 1 16:50:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (call_args2): confusion with list_append() and
+ list_concat() was fixed.
+
+Fri Jun 1 15:01:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): fixed 'print CGI::bar() {}, "\n"' syntax
+ breakage, adding new lex_state status. sigh. [new]
+
+Fri Jun 1 11:21:04 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: use waitpid on mingw32.
+
+ * ext/dbm/extconf.rb: include <ndbm.h>, not <gdbm.h>.
+
+Thu May 31 18:34:57 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * file.c (rb_file_s_unlink): should not allow if $SAFE >= 2.
+
+Thu May 31 17:23:25 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (Init_Range): define "to_ary".
+
+Thu May 31 13:30:25 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * mkconfig.rb, ext/configsub.rb: VERSION -> RUBY_VERSION.
+
+Thu May 31 08:00:58 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/dir.h: re-add.
+
+Thu May 31 01:25:59 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in: default --with-libc_r to `no' until the problem is
+ fixed. (FreeBSD only)
+
+Tue May 29 17:24:23 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * ruby.c (proc_options): unexpected SecurityError happens when -T4.
+
+Tue May 29 18:46:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): * \1 .. \9 should be
+ backreferences always.
+
+ * regex.c (re_match): backreferences corresponding to
+ unclosed/unmatched parentheses should fail always.
+
+Tue May 29 16:35:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cat): use rb_str_buf_cat() if possible. [new]
+
+ * string.c (rb_str_append): ditto.
+
+ * string.c (rb_str_buf_cat): remove unnecessary check (type,
+ taint, modify) to gain performance.
+
+ * string.c (rb_str_buf_append): ditto.
+
+ * string.c (rb_str_buf_finish): removed.
+
+Tue May 29 02:05:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_buf_new): buffering string function. [new]
+
+ * string.c (rb_str_buf_append): ditto.
+
+ * string.c (rb_str_buf_cat): ditto.
+
+ * string.c (rb_str_buf_finish): ditto.
+
+Mon May 28 23:20:43 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: remove unnecessary AC_CANONICAL_BUILD
+
+ * defines.h: #define HAVE_SETITIMER on Cygwin(bug fixed).
+
+ * ruby.c: use relative path from LIBRUBY_SO.
+
+ * ruby.c: don't use -mwin32 option on Cygwin.
+
+ * cygwin/GNUmakefile.in: ditto.
+
+ * ext/sdbm/_sdbm: ditto.
+
+ * ext/tcltklib/extconf.rb: ditto.
+
+ * ext/tcltklib/stubs.c: ditto.
+
+Mon May 28 22:12:01 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/extconf.rb.in: make the priority of the make rule of .c
+ higher than .C .
+
+Mon May 28 13:22:19 2001 Tanaka Akira <akr@m17n.org>
+
+ * time.c (make_time_t): local time adjustment revised.
+
+Mon May 28 02:20:38 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * dir.c (glob_helper): teach has_magic() to handle flags and get
+ glob_helper to properly support FNM_NOESCAPE.
+
+ * dir.c (fnmatch): fix a bug when FNM_PATHNAME and FNM_PERIOD are
+ specified at the same time.
+
+Sat May 26 09:55:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: accomplish extended syntax described in [ruby-talk:14525]
+ using tSPC token. [new, experimental]
+
+Sat May 26 07:05:45 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * MANIFEST: add win32/dir.h .
+
+Fri May 25 20:03:51 2001 Pascal Rigaux <pixel@mandrakesoft.com>
+
+ * dln.c (dln_find_1): should exclude directories in executable
+ file lookup.
+
+Fri May 25 18:00:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_obj_singleton_methods): list methods in extended
+ modules if optional argument is true. [new]
+
+Fri May 25 14:19:25 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * string.c (rb_str_replace): add taint status infection
+ (OBJ_INFECT()).
+
+ * string.c (rb_str_crypt): ditto.
+
+ * string.c (rb_str_ljust): ditto.
+
+ * string.c (rb_str_rjust): ditto.
+
+ * string.c (rb_str_center): ditto.
+
+Fri May 25 05:39:03 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/sha1/sha1-ruby.c (sha1_hexdigest): fix buffer overflow. The
+ buffer for a SHA-1 hexdigest needs to be 41 bytes in length.
+
+Fri May 25 01:47:39 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * MANIFEST: update the entries I forgot to add or remove.
+
+Fri May 25 00:57:25 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/sha1/sha1-ruby.c (sha1_new): separate initialize() from
+ new().
+
+ * ext/md5/md5init.c (md5i_new): ditto.
+
+Fri May 25 00:53:41 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dbm/extconf.rb: fix support for *BSD and set $CFLAGS
+ properly.
+
+Thu May 24 16:10:33 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_member): check based on "<=>" comparison. [new]
+
+ * range.c (range_check): add "succ" check if first end is not a
+ numeric.
+
+ * range.c (range_eqq): comparison should based on "<=>".
+
+ * range.c (range_each): ditto.
+
+Thu May 24 16:08:21 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * mkconfig.rb: autoconf 2.50 support.
+
+Thu May 24 14:23:35 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): need argument adjustment for C defined
+ blocks too.
+
+Thu May 24 01:11:30 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/extconf.rb: header search added. [new]
+
+Wed May 23 02:58:21 2001 Tanaka Akira <akr@m17n.org>
+
+ * time.c (make_time_t): fix ad-hoc local time adjustment, using
+ binary tree search.
+
+Tue May 22 17:10:35 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * variable.c (rb_alias_variable): should not allow variable
+ aliasing if $SAFE >= 4.
+
+Tue May 22 02:37:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (expr): "break" and "next" to take optional expression,
+ which is used as a value for termination. [new, experimental]
+
+ * eval.c (rb_eval): "break" can give value to terminating method.
+
+ * eval.c (rb_eval): "break" and "next" to take optional expression.
+
+ * eval.c (rb_yield_0): "next" can give value to terminating "yield".
+
+ * eval.c (rb_iterate): "break" can give value to terminating method.
+
+ * eval.c (proc_call): ditto.
+
+Mon May 21 13:15:25 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2str): t should be protected from GC.
+
+Sat May 19 09:29:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_proc_times): need not to check return value from
+ times(2).
+
+Fri May 18 05:36:08 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in (xsystem): backout the previous fix which was
+ bogus.
+
+Fri May 18 05:19:55 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb (xsystem): make a temporary fix to get $(...) macros
+ properly expanded on a command execution.
+
+ * ext/extmk.rb.in (xsystem): ditto.
+
+Fri May 18 03:45:55 2001 Brian F. Feldman <green@FreeBSD.org>
+
+ * lib/mkmf.rb: unbreak "make install". lib/* must be installed
+ under $rubylibdir, not under $libdir.
+
+Fri May 18 01:28:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (expr): break, next, redo, retry are moved from primary.
+
+Fri May 18 01:11:02 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * ext/sha1/sha1-ruby.c (sha1_new): get rid of an unneeded
+ rb_obj_call_init() call.
+
+Fri May 18 01:03:55 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * ext/sha1/sha1.txt, ext/sha1/sha1.txt.jp: fix typos.
+
+Thu May 17 19:17:11 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shell.rb, lib/shell/process-controller.rb,
+ lib/shell/command-processor.rb: translate Japanese comments into
+ English.
+
+Thu May 17 19:07:14 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * doc/shell.rd.jp: RD'ify and make some fixes.
+
+ * doc/shell.rd: RD'ify, delete Japanese leftovers, make overall
+ English fixes, and sync with doc/shell.rd.jp.
+
+Thu May 17 17:35:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): address of local_vars might change during eval.
+
+Thu May 17 07:27:09 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/md5/md5.txt.jp, ext/sha1/sha1.txt.jp:
+ s/SuperClass/Superclass/.
+
+Thu May 17 07:21:44 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Setup.dj, ext/Setup.emx, ext/Setup.nt, ext/Setup.x68:
+ compile sha1 in as well as md5.
+
+ * ext/Setup: put sha1 in a comment.
+
+Thu May 17 07:16:38 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/sha1/sha1.txt.jp: add the Japanese version derived from
+ ext/md5/md5.txt.jp.
+
+ * ext/sha1/sha1.txt: revise the copyright info and reduce the
+ difference from ext/md5/md5.txt.
+
+ * ext/md5/md5.txt: reduce the difference from ext/sha1/sha1.txt.
+
+Thu May 17 07:11:35 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/sha1/extconf.rb, ext/sha1/sha1.c: use WORDS_BIGENDIAN to
+ detect the platform's endian.
+
+Thu May 17 06:31:30 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/md5/md5.txt: make wording fixes, and mention the newly added
+ method: "<<".
+
+ * ext/md5/md5.txt.jp: ditto.
+
+Wed May 16 18:05:52 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/md5/md5init.c: add an instance method "<<" as an alias for
+ "update". (inspired by Steve Coltrin's ruby-sha1)
+
+Tue May 15 17:46:37 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_and): should not push frozen key string.
+
+ * array.c (rb_ary_or): ditto.
+
+Tue May 15 02:18:23 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/thread.rb: rescue ThreadError in case the thread is dead
+ just before calling Thread#run.
+
+Mon May 14 13:50:22 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): should save context before raising
+ deadlock, saved context for current thread might be obsolete.
+
+ * time.c (make_time_t): non DST timezone shift supported (hopefully).
+
+ * time.c (make_time_t): strict range detection for negative time_t.
+
+Mon May 14 11:54:20 2001 Tanaka Akira <akr@m17n.org>
+
+ * signal.c: SIGINFO added.
+
+Mon May 14 08:57:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_ensure): should not SEGV when prot_tag is NULL.
+
+Sun May 13 23:51:14 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/resource.rb: Modify copyright in resource script.
+
+Sun May 13 14:03:33 2001 Okada Jun <yun@be-in.org>
+
+ * lib/thread.rb: fix Queue#pop and SizedQueue#max= to avoid
+ deadlock.
+
+Sat May 12 15:43:55 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/win32.c (kill): add support of signal 9 on mswin32/mingw32.
+
+Fri May 11 15:09:52 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.h (rb_string_value): add volatile to avoid compiler warning.
+
+ * string.c (rb_string_value): ditto.
+
+Fri May 11 03:35:33 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * README.EXT: Document find_library(), with_config() and
+ dir_config().
+
+Fri May 11 03:34:20 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * README.EXT.jp: Remove the description of find_header() because
+ such a function does not actually exist.
+
+ * README.EXT.jp: Update the description of dir_config().
+
+Fri May 11 02:42:05 2001 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * README, README.jp: Fix CVS access and mailing lists info.
+
+Fri May 11 02:00:44 2001 Ryo HAYASAKA <ryoh@jaist.ac.jp>
+
+ * bignum.c (bigdivrem): access boundary bug.
+
+Thu May 10 02:40:47 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): prohibit dumping out singleton classes.
+
+ * object.c (rb_mod_to_s): distinguish singleton classes.
+
+ * variable.c (rb_class2name): it's ok to reveal NilClass,
+ TrueClass, FalseClass.
+
+Wed May 9 14:38:33 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_yield_0): preserve and restore ruby_cref as well.
+
+Tue May 8 18:28:19 2001 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb.rb lib/irb/multi-irb.rb lib/irb/ruby-lex.rb
+ lib/irb/version.rb resolve ctrl-c problem
+
+Tue May 8 17:12:43 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (is_defined): core dumped during instance_eval for
+ special constants.
+
+ * eval.c (rb_eval): ditto.
+
+Tue May 8 08:52:57 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * doc/forwardable.rd, doc/forwardable.rd.jp: Hit `=begin' and
+ `=end' in proper places so rd2 can format them without a problem.
+
+ * doc/irb/irb-tools.rd.jp, doc/irb/irb.rd, doc/irb/irb.rd.jp:
+ ditto.
+
+Tue May 8 08:38:53 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * doc/forwardable.rd, doc/forwardable.rd.jp, lib/forwardable.rb:
+ Import forwardable 1.1.
+
+Tue May 8 08:34:33 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * doc/irb/irb-tools.rd.jp, doc/irb/irb.rd.jp: Convert from JIS to
+ EUC.
+
+Tue May 8 03:46:39 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * sample/rbc.rb: Obsoleted by IRB.
+
+Mon May 7 15:58:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): "||=" should not warn for uninitialized instance
+ variables.
+
+ * eval.c (rb_eval): ditto.
+
+ * eval.c (eval): preserve and restore ruby_cref as well.
+
+Mon May 7 15:45:48 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftools.rb (syscopy): chmod destination file only if
+ it does not exist.
+
+Mon May 7 14:35:57 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_is_instance_of): takes only class/module as an
+ argument.
+
+Sun May 6 16:27:29 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * eval.c (is_defined): rb_reg_nth_defined() may return Qnil.
+
+Thu May 3 03:15:06 2001 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * configure.in: get --enable-shared to work on MacOS X.
+
+ * Makefile.in: make $(LIBRUBY_SO) depend on miniruby properly.
+ Now `make -jN' should work without a problem.
+
+Thu May 3 02:07:45 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/config.h.in: add SIZEOF___INT64 definition.
+
+Wed May 2 20:39:35 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c (rb_glob, rb_globi): remove unnecessary FNM_PATHNAME.
+
+Wed May 2 11:46:13 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (block_pass): should not downgrade safe level.
+
+Wed May 2 03:07:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/extconf.rb: allow specifying dbm-type explicitly.
+
+ * ext/dbm/extconf.rb: avoid gdbm if possible, because it leaks
+ memory, whereas gdbm.so doesn't. potential incompatibility.
+
+Wed May 2 02:02:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_insert): new method.
+
+Tue May 1 17:55:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): lex_state after RESCUE_MOD should be EXPR_BEG.
+
+Tue May 1 16:23:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_insert): new method.
+
+ * array.c (rb_ary_update): new utility function.
+
+Tue May 1 03:24:05 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/irb/completion.rb, lib/irb/frame.rb, lib/irb/xmp.rb,
+ doc/irb/irb-tools.rd.jp: Merge from irb-tools 0.7.1.
+
+Tue May 1 03:07:17 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * sample/irb.rb, lib/irb.rb, lib/irb/*, doc/irb/*: Merge from irb
+ 0.7.3.
+
+ * instruby.rb: Install help-message's too.
+
+ * lib/irb/main.rb: This file is not needed anymore.
+
+Fri Apr 27 09:27:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (set_outfile): should check if closed before assignment.
+
+Thu Apr 26 22:36:11 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: don't use tzname on Cygwin 1.3.1+.
+
+ * configure.in: add -mieee/-ieee to CFLAGS on OSF1/Alpha
+ to disable "DIVISION BY ZERO" exception.
+
+Thu Apr 26 22:30:43 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should preserve value of ruby_errinfo.
+
+Thu Apr 26 10:36:09 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): infinite sleep should not cause
+ dead lock.
+
+Wed Apr 25 16:40:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_flatten_bang): proper recursive detection.
+
+Wed Apr 25 15:36:15 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (yield_under): need not to prohibit at safe level 4.
+
+Wed Apr 25 15:22:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): p/P packs nil into NULL.
+
+ * pack.c (pack_unpack): p/P unpacks NULL into nil.
+
+Tue Apr 24 15:35:32 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): size check for P template.
+
+ * ruby.c (set_arg0): wrong predicate when new $0 value is bigger
+ than original space.
+
+Tue Apr 24 15:18:49 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: (dir_config) do not add the
+ specified include directory if already included in $CPPFLAGS.
+
+ * ext/extmk.rb.in, lib/mkmf.rb: (dir_config) return a more useful
+ value, [include_dir, lib_dir].
+
+Mon Apr 23 14:43:59 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (id2ref): should use NUM2ULONG()
+
+ * object.c (rb_mod_const_get): check whether name is a class
+ variable name.
+
+ * object.c (rb_mod_const_set): ditto.
+
+ * object.c (rb_mod_const_defined): ditto.
+
+Sat Apr 21 22:33:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_float): precision changed to "%.16g"
+
+Sat Apr 21 22:07:58 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * eval.c (rb_call0): wrong retry behavior.
+
+Fri Apr 20 19:12:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_aref): a bug on long>int architecture.
+
+Fri Apr 20 14:57:15 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_eval_string_wrap): should restore ruby_wrapper.
+
+Sun Apr 22 17:44:37 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: add -mieee to CFLAGS on Linux/Alpha
+ to disable "DIVISION BY ZERO" exception.
+
+ * configure.in: remove -ansi on OSF/1.
+
+Wed Apr 18 04:37:51 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: CGI::Cookie: no use PATH_INFO.
+
+Wed Apr 18 00:24:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): char class at either edge of range
+ should be invalid.
+
+Tue Apr 17 17:33:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (handle_rescue): use === to compare exception match.
+
+ * error.c (syserr_eqq): comparison between SystemCallErrors should
+ based on their error numbers.
+
+Tue Apr 17 16:54:39 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (safe_getter): should use INT2NUM().
+
+Tue Apr 17 15:12:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2long): 2**31 cannot fit in 31 bit long.
+
+Sat Apr 14 22:46:43 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * regex.c (calculate_must_string): wrong length calculation.
+
+Sat Apr 14 13:37:32 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/config.status.in: no longer use missing/alloca.c.
+
+ * win32/Makefile.sub: ditto.
+
+Fri Apr 13 12:40:48 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_thread_start_0): fixed memory leak.
+
+Fri Apr 13 16:41:18 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (none): should clear cmdarg_stack too.
+
+Fri Apr 13 06:19:29 2001 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * io.c (rb_fopen): use setvbuf() to avoid recursive malloc() on
+ some platforms.
+
+Wed Apr 11 23:36:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_stat_dev): device functions should honor stat field
+ types (except long long such as dev_t).
+
+Wed Apr 11 18:07:53 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_mod_nesting): should not push nil for nesting array.
+
+ * eval.c (rb_mod_s_constants): should not search array by
+ rb_mod_const_at() for nil (happens for singleton class).
+
+Wed Apr 11 13:29:26 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_singleton_class_attached): should modify iv_tbl by
+ itself, no longer use rb_iv_set() to avoid freeze check error.
+
+ * variable.c (rb_const_get): error message "uninitialized constant
+ Foo at Bar::Baz" instead of "uninitialized constantBar::Baz::Foo".
+
+Tue Apr 10 17:52:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_included): new hook called from rb_mod_include().
+
+Tue Apr 10 02:24:40 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * io.c (opt_i_set): should strdup() inplace_edit string.
+
+Mon Apr 9 23:29:54 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (exec_under): need to push cref too.
+
+Mon Apr 9 15:20:21 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_missing): raise NameError for "undefined local
+ variable or method".
+
+ * error.c (Init_Exception): new exception NoMethodError.
+ NameError moved under ScriptError again.
+
+ * eval.c (rb_f_missing): use NoMethodError instead of NameError.
+
+Mon Apr 9 12:05:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (Init_File): should redefine "new" class method.
+
+Mon Apr 9 11:56:52 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: fix typo.
+
+Fri Apr 6 01:46:35 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (PUSH_CREF): sharing cref node was problematic. maintain
+ runtime cref list instead.
+
+ * eval.c (rb_eval): copy defn node before registering.
+
+ * eval.c (rb_load): clear ruby_cref before loading.
+
+Thu Apr 5 22:40:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get): no recursion to show full class path
+ for modules.
+
+ * eval.c (rb_set_safe_level): should set safe level in curr_thread
+ as well.
+
+ * eval.c (safe_setter): ditto.
+
+Thu Apr 5 13:46:06 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * object.c (rb_obj_is_instance_of): nil belongs to false, not true.
+
+Thu Apr 5 02:19:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (make_time_t): proper (I hope) daylight saving time
+ handling for both US and Europe. I HATE DST!
+
+ * eval.c (rb_thread_wait_for): non blocked signal interrupt should
+ stop the interval.
+
+Wed Apr 4 03:47:03 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_eq): class check added.
+
+ * eval.c (proc_eq): typo fixed ("return" was omitted).
+
+ * error.c (Init_Exception): move NameError under StandardError.
+
+ * class.c (rb_mod_clone): should copy method bodies too.
+
+ * bignum.c (bigdivrem): should trim trailing zero bdigits of
+ remainder, even if dd == 0.
+
+ * file.c (check3rdbyte): safe string check moved here.
+
+Tue Apr 3 09:56:20 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in (create_makefile): create def file only if
+ it does not yet exist.
+
+ * lib/mkmf.rb: ditto.
+
+Tue Apr 3 00:05:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (make_time_t): remove HAVE_TM_ZONE code since it
+ sometimes reports wrong time.
+
+ * time.c (make_time_t): remove unnecessary range check for
+ platforms where negative time_t is available.
+
+Mon Apr 2 16:52:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_waitall): should push Process::Status instead of
+ Fixnum status.
+
+ * process.c (waitall_each): should add all entries in pid_tbl.
+ these changes are inspired by Koji Arai. Thanks.
+
+ * process.c (proc_wait): should not iterate if pid_tbl is 0.
+
+ * process.c (proc_waitall): ditto.
+
+Mon Apr 2 14:25:49 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb (wait): ensure reentrance.
+
+ * lib/monitor.rb (wait): fix timeout support.
+
+Mon Apr 2 12:40:45 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (media_subtype): return subtype.
+
+Mon Apr 2 12:01:15 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (flag_list): capitalize flags.
+
+Mon Apr 2 01:32:38 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * Makefile.in: Introduce MAINLIBS.
+
+ * configure.in: Link libc_r against the ruby executable on
+ FreeBSD, which is the first attempt to work around a certain
+ problem regarding pthread on FreeBSD. It should make ruby/libruby
+ happy when it loads an extension to a library compiled and linked
+ with -pthread. Note, however, that libruby is _not_ linked with
+ libc_r so as not to mess up pthread unfriendly stuff including
+ apache+mod_ruby and vim6+ruby_interp.
+
+Mon Apr 2 01:16:24 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c: use ruby's opendir on mingw32.
+
+ * win32/dir.h, dir.c, Makefile: ditto.
+
+Sun Apr 1 23:26:14 2001 TOYOFUKU Chikanobu <toyofuku@juice.or.jp>
+
+ * numeric.c (flodivmod): a bug in no fmod case.
+
+Sun Apr 1 18:36:14 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * process.c (pst_wifsignaled): should apply WIFSIGNALED for status
+ (int), not st (VALUE).
+
+Sat Mar 31 04:47:55 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: add document and example code.
+
+Sat Mar 31 03:24:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (Init_IO): value of $/ and $\ are no longer restricted to
+ strings. type checks are done on demand.
+
+ * class.c (rb_include_module): module inclusion should be check
+ taints.
+
+ * ruby.h (STR2CSTR): replace to StringType() and StringTypePtr().
+
+ * ruby.h (rb_str2cstr): ditto.
+
+Fri Mar 30 23:37:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): should not copy toplevel local variables. It
+ cause variable/method ambiguity. Thanks to L. Peter Deutsch.
+
+Fri Mar 30 22:56:56 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: rename ContinueRequest to ContinuationRequest.
+
+Fri Mar 30 12:51:19 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): freeze check at first.
+
+Thu Mar 29 17:05:09 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_attr): sprintf() and rb_intern() moved into
+ conditional body.
+
+Wed Mar 28 23:43:00 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: add C++ rules in addition to C
+ rules for the mswin32 platforms.
+
+Wed Mar 28 19:29:21 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: move C++ rules to the right place.
+
+Wed Mar 28 17:39:04 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_str2cstr): warn if string contains \0 and length
+ value is ignored.
+
+Wed Mar 28 15:00:31 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * class.c (rb_singleton_class_clone): should copy class constant
+ table as well.
+
+Wed Mar 28 14:23:23 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): sometimes cache was mistakenly left
+ uncleared - based on the patch by K.Kosako.
+
+ * ruby.h: all Check_SafeStr()'s are replaced by SafeStr() to
+ ensure 'to_str' be always effective.
+
+Wed Mar 28 09:52:33 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/Makefile.sub: disable global optimization.
+
+Tue Mar 27 15:00:54 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (rb_mod_define_method): should have clear method cache.
+
+ * eval.c (rb_mod_define_method): should have raised exception for
+ type error.
+
+Tue Mar 27 14:48:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: changed "extern INLINE" to "static inline".
+
+Mon Mar 26 23:19:33 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * time.c (rb_strftime): check whether strftime returns empty string.
+
+Mon Mar 26 21:16:56 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: supports response handlers and multiple commands.
+
+Mon Mar 26 17:21:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: remove TMP_PROTECT_END to prevent C_ALLOCA crash.
+
+Mon Mar 26 14:04:41 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/Win32API/Win32API.c: remove Init_win32api().
+
+Sun Mar 25 16:52:48 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * file.c (rb_file_flock): do not trap EINTR.
+
+ * missing/flock.c (flock): returns the value from lockf(2)
+ directly.
+
+Sat Mar 24 23:44:50 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_defined): should ignore toplevel cbase (Object).
+
+ * eval.c (ev_const_get): ditto.
+
+Fri Mar 23 17:37:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/md5/md5.h: replace by independent md5 implementation
+ contributed by L. Peter Deutsch (thanks).
+
+ * ext/md5/md5init.c: adopted to Deutsch's md5 implementation.
+
+Fri Mar 23 17:26:19 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): string from P/p should be tainted.
+
+Fri Mar 23 12:18:44 2001 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * ext/curses/curses.c: curses on Mac OS X public beta does not
+ have _maxx etc.
+
+Fri Mar 23 10:50:31 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): should truncate trailing zero short for
+ bignums.
+
+Fri Mar 23 09:49:02 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (sym_intern): new method.
+
+Thu Mar 22 22:15:45 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/Win32API/extconf.rb: add -fno-omit-frame-pointer.
+
+Thu Mar 22 18:17:36 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_nesting): should not include Object at the
+ toplevel.
+
+Thu Mar 22 17:43:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: better inline function support.
+
+ * configure.in (NO_C_INLINE): check if inline is available for the
+ C compiler.
+
+Mon Mar 19 11:03:10 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * marshal.c (r_object): len calculation patch was wrong for
+ machines SIZEOF_BDIGITS == SIZEOF_SHORT.
+
+ * gc.c: alloca prototype reorganized for C_ALLOCA machine.
+
+Wed Mar 21 23:07:45 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (win32_stat): WinNT/2k "//host/share" support.
+
+Wed Mar 21 08:05:35 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/dir.h: replace missing/dir.h .
+
+ * win32/win32.h: ditto.
+
+ * win32/win32.c: ditto.
+
+Wed Mar 21 01:26:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (id2ref): sometimes confused symbol and reference.
+
+Tue Mar 20 23:09:33 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (win32_stat): UNC support.
+
+ * dir.c (extract_path): fix "./*" problem.
+
+Tue Mar 20 15:10:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (glob_helper): breaks loop after calling recursive
+ glob_helper; all wild cards should be consumed; no need for
+ further match.
+
+ * dir.c (dir_s_glob): gives warning if no match found.
+
+Tue Mar 20 14:13:45 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * object.c (sym_inspect): did allocate extra byte space.
+
+Mon Mar 19 19:14:47 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * marshal.c (shortlen): shortlen should return number of bytes
+ written.
+
+Mon Mar 19 16:52:23 2001 K.Kosako <kosako@sofnec.co.jp>
+
+ * eval.c (ev_const_defined): need not to check if cbase->nd_class
+ is rb_cObject.
+
+ * eval.c (ev_const_get): ditto.
+
+Mon Mar 19 17:11:20 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_zone): return "UTC" for UTC time objects.
+
+Mon Mar 19 16:27:32 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (THREAD_ALLOC): flags should be initialized.
+
+ * signal.c (rb_f_kill): should use FIX2INT, not FIX2UINT.
+
+Mon Mar 19 10:55:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (glob_helper): replace lstat() by stat() to follow symlink
+ in the case like 'symlink/*'.
+
+ * dir.c (glob_helper): gave warning too much.
+
+Sun Mar 18 08:58:18 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: // === '' --> //.match('')
+
+ * lib/cgi.rb: cgi#header(): improvement for mod_ruby.
+
+ * lib/cgi.rb: cgi#rfc1123date(): improvement.
+ thanks to TADA Tadashi <sho@spc.gr.jp>.
+
+ * lib/cgi.rb: cgi#rfc1123date(): document bug fix.
+ thanks to Kazuhiro NISHIYAMA <zn@mbf.nifty.com>.
+
+ * lib/cgi.rb: cgi#header(): bug fix.
+ thanks to IWATSUKI Hiroyuki <don@na.rim.or.jp>.
+
+Sat Mar 17 11:11:24 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (glob_helper): * should follow symlink, whereas ** should
+ not follow.
+
+Thu Mar 15 01:28:02 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_chdir): block form of Dir.chdir. (RCR#U016).
+
+Fri Mar 16 17:14:17 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in: Set SOLIBS properly for all ELF and
+ FreeBSD/NetBSD/OpenBSD a.out platforms so that the shlib
+ dependencies are recorded in the libruby shlib.
+
+Wed Mar 14 16:41:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_schedule): raise FATAL just once to
+ THREAD_TO_KILL.
+
+Wed Mar 14 10:41:34 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): 0 (= Qfalse) is a valid value, so that
+ default self should be checked by klass == 0.
+
+ * bignum.c (rb_cstr2inum): should disallow '++1', '+-1', etc.
+
+Tue Mar 13 17:51:09 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_defined): add new parameter self for special
+ const fallback.
+
+ * eval.c (ev_const_get): ditto.
+
+Tue Mar 13 16:39:45 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c (rb_glob_helper): fix drive letter handling on DOSISH.
+
+Tue Mar 13 14:54:39 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: add HTTPRequest#basic_auth.
+
+ * lib/net/smtp.rb: raise if only account or password is given.
+
+ * lib/net/protocol.rb: WriteAdapter#<< returns self.
+
+Tue Mar 13 14:41:16 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_seek_m): wrong calling sequence of rb_io_seek().
+
+Tue Mar 13 09:14:19 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (cond0): no special treatment of string literal in
+ condition.
+
+Mon Mar 12 18:59:38 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): save/restore $libs and $LIBPATH.
+
+Sun Mar 11 18:13:34 2001 Masahiro Tanaka <masa@stars.gsfc.nasa.gov>
+
+ * math.c: add acos, asin, atan, conh, sinh, tanh and hypot to Math.
+
+ * configure.in: check hypot availability.
+
+ * missing/hypot.c: public domain rewrite of hypot.
+
+Sun Mar 11 13:21:04 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * parse.y (warn_unless_e_option): warning condition was wrong.
+
+ * parse.y (warning_unless_e_option): ditto.
+
+Sun Mar 11 00:55:31 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (install_rb): fix handling of destination path.
+
+Sat Mar 10 22:56:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_all): new method 'all?', which returns true if
+ block returns true for all elements.
+
+ * enum.c (enum_any): new method 'any?', which returns true if
+ block returns true for any of elements.
+
+Sat Mar 10 02:34:18 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * math.c (math_log, math_log10): use nan() instead of 0.0/0.0 on Cygwin.
+
+Fri Mar 9 09:56:19 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (marshal_load): do not give warning unless explicitly
+ set to verbose.
+
+Fri Mar 9 02:07:53 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_exit): give string value "exit" to SystemExit.
+
+ * ruby.c (proc_options): -v should not print version if
+ proc_options called via moreswitches().
+
+Thu Mar 8 17:45:19 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: one write(2) per one line.
+
+Wed Mar 7 14:26:11 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * math.c (math_log, math_log10): should return NaN if x < 0.0
+ on Cygwin.
+
+Thu Mar 7 10:31:26 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (stmt): while/until modifier must work for empty body.
+
+Tue Mar 6 22:53:58 2001 Kazuhiro Yoshida <moriq.kazuhiro@nifty.ne.jp>
+
+ * ruby.c (ruby_set_argv): clear ARGV contents before adding args.
+
+Tue Mar 6 10:50:29 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): rescue and ensure clauses should be allowed
+ to appear in singleton method body.
+
+Mon Mar 5 17:25:13 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_eq): compare Procs using blocktag equality.
+
+ * eval.c (proc_to_s): stringify according to block tag address.
+
+Mon Mar 5 17:19:56 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (gettimeofday): use GetLocalTime() instead of ftime()
+ for high-resolution timing.
+
+Sun Mar 4 17:01:09 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * string.c (trnext): support backslash escape in String#tr.
+
+Sat Mar 3 16:15:16 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): push cbase if ruby_cbase != ruby_class, for
+ example in the case NODE_DEFN/NODE_DEFS are called within
+ module_eval.
+
+Wed Feb 28 11:02:41 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_delete_bang): delete! should take at least 1
+ argument.
+
+ * ruby.c (load_file): add rb_gc() after loading to avoid
+ extraordinary memory growth.
+
+Wed Feb 28 05:01:40 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * dir.c (rb_glob_helper): "./foo" should match "foo", not "./foo".
+
+Tue Feb 27 16:38:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_get): retrieve Object's constant if no current
+ class is available (e.g. defining singleton class for Fixnums).
+
+ * eval.c (ev_const_defined): check Object's constant if no current
+ class is available (e.g. defining singleton class for Fixnums).
+
+ * time.c (time_timeval): negative time interval should not be
+ allowed.
+
+ * eval.c (proc_call): ignore block to `call' always, despite of
+ being orphan or not.
+
+Wed Feb 27 10:16:32 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_yield_0): should check based on rb_block_given_p()
+ and rb_f_block_given_p().
+
+Tue Feb 27 04:13:45 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * configure.in (frame-address): --enable-frame-address to allow
+ __builtin_frame_address() to be used.
+
+ * eval.c (stack_length): use __builtin_frame_address() based on
+ the macro USE_BUILTIN_FRAME_ADDRESS.
+
+ * gc.c (rb_gc): ditto.
+
+ * gc.c (Init_stack): ditto.
+
+Mon Feb 26 16:20:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): call ruby_show_version() just once.
+
+ * dir.c (dir_s_open): returns the value from a block (if given).
+
+Mon Feb 26 14:29:04 2001 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: add C++ rules in addition to C
+ rules.
+
+Mon Feb 26 00:04:52 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_call): should not modify ruby_block->frame.iter
+ based on ruby_frame->iter altered by PUSH_ITER().
+
+Mon Feb 26 05:27:52 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/net/telnet.rb: #telnetmode(), #binmode(): bug fix.
+ thanks to nobu.nakada@nifty.ne.jp.
+
+Mon Feb 26 04:55:50 2001 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: CGI#form(): bug fix.
+ thanks to MoonWolf <moonwolf@moonwolf.com>.
+
+ * lib/cgi.rb: CGI#rfc1123_date(): improvement.
+ thanks to Tomoyasu Akita <genzo-@dm4lab.to>.
+
+ * lib/cgi.rb: CGI#header(): improvement for mod_ruby.
+ thanks to Shugo Maeda <shugo@ruby-lang.org>.
+
+Sun Feb 25 02:45:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_file_s_rename): avoid Cygwin's bug.
+
+Sat Feb 24 23:32:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_fd_close): should save current context before
+ raising exception.
+
+Sat Feb 24 22:14:00 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (myrename): fix error handling.
+
+Sat Feb 24 13:58:48 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: always close connection on request without
+ body.
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: change copyright.
+
+Sat Feb 24 03:15:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (set_stdin): preserve original stdin.
+
+ * io.c (set_outfile): preserve original stdout/stderr.
+
+Fri Feb 23 08:28:58 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: clear read buffer after reopen.
+
+ * lib/net/protocol.rb: refactoring.
+
+ * lib/net/http.rb: split module HTTPHeader from HTTPResponse.
+
+Tue Feb 20 23:45:35 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * process.c: add W* macro if not available.
+
+Tue Feb 20 16:37:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: add check for negative time_t for gmtime(3).
+
+ * time.c (time_new_internal): no positive check if gmtime(3) can
+ handle negative time_t.
+
+ * time.c (time_timeval): ditto.
+
+ * bignum.c (rb_big2long): should not raise RangeError for Bignum
+ LONG_MIN value.
+
+Mon Feb 19 17:46:37 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_substr): "a"[1,2] should return ""; need
+ rubicon upgrade.
+
+Mon Feb 19 12:10:36 2001 Triet H. Lai <thlai@mail.usyd.edu.au>
+
+ * error.c (rb_sys_warning): new function to give warning with
+ strerror() message.
+
+ * dir.c (rb_glob_helper): better error handling, along with
+ performance tune.
+
+Mon Feb 19 01:55:43 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (secure_visibility): visibility check for untainted modules.
+
+Mon Feb 19 00:29:29 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * signal.c (sigpipe): sighandler which does nothing.
+
+ * signal.c (trap): set sigpipe function for SIGPIPE.
+
+ * signal.c (Init_signal): default SIGPIPE handler should be
+ sigpipe function.
+
+Sun Feb 18 15:42:38 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/curses/extconf.rb: add dir_config.
+
+ * missing/flock.c: use fcntl(2) instead of lockf(2).
+
+Sun Feb 18 05:46:03 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: Response#range_length was not debugged.
+
+Sun Feb 18 04:02:03 2001 Yasushi Shoji <yashi@yashi.com>
+
+ * array.c (rb_ary_subseq): wrong boundary check.
+
+Sun Feb 18 00:09:50 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/win32.c: make file I/O faster on mswin32/mingw32.
+
+ * win32/win32.h: ditto.
+
+ * rubysig.h: ditto.
+
+Sat Feb 17 23:32:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (cond0): integer literal in condition should not be
+ compared to lineno ($.).
+
+Fri Feb 16 01:44:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (set_outfile): f should be the FILE* from the assigning value.
+
+ * ext/socket/socket.c (tcp_s_open): should not give default value
+ to local_host.
+
+ * time.c (time_s_times): move to Process::times.
+
+ * file.c (rb_file_s_lchmod): new method File::lchmod.
+
+ * file.c (rb_file_s_lchown): new method File::lchown.
+
+Thu Feb 15 11:33:49 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi/session.rb (close): fixed reversed condition.
+
+Thu Feb 15 08:34:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_waitall): new method based on a patch from Brian
+ Fundakowski Feldman <green@green.dyndns.org>.
+
+ * process.c (last_status_set): objectify $? value (Process::Status).
+
+Wed Feb 14 17:28:24 2001 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: supports unknown resp_text_code.
+
+Wed Feb 14 00:44:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_glob): support backslash escape of metacharacters
+ and delimiters.
+
+ * dir.c (remove_backslases): remove backslashes from path before
+ calling stat(2).
+
+ * dir.c (dir_s_glob): call rb_yield directly (via push_pattern) if
+ block is given to the method.
+
+ * dir.c (push_pattern): do not call rb_ary_push; yield directly.
+
+ * eval.c (blk_copy_prev): reduced ALLOC_N too much.
+
+ * eval.c (frame_dup): ditto.
+
+Tue Feb 13 23:05:38 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c (lstat): should use rb_sys_stat if lstat(2) is not
+ available.
+
+Tue Feb 13 08:43:10 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_ctl): do not call ioctl/fcntl for f2, if f and f2
+ have same fileno.
+
+Tue Feb 13 01:13:43 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): raise LocalJumpError if unexpected local jumps
+ appear during load.
+
+ * ext/socket/socket.c (bsock_close_read): don't call rb_thread_fd_close();
+ it's supposed to be called by io_io_close().
+
+ * ext/socket/socket.c (bsock_close_read): do not modify f and f2.
+
+ * ext/socket/socket.c (bsock_close_write): ditto.
+
+ * ext/socket/socket.c (sock_new): avoid dup(2) on sockets.
+
+ * parse.y (primary): preserve and clear in_single and in_def using
+ stack to prevent nested method errors in singleton class bodies.
+
+Sun Feb 11 16:00:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (stack_length): use __builtin_frame_address() only if
+ GCC and i386 CPU.
+
+ * gc.c (rb_gc, Init_stack): ditto.
+
+ * configure.in: add ac_cv_func_getpgrp_void=yes on DJGPP.
+
+Sat Feb 10 23:43:49 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * hash.c (rb_any_hash): dumped core on machines sizeof(int) != sizeof(long).
+
+Sat Feb 10 23:07:15 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_for_fd): IO::for_fd(fd) - new method.
+
+ * regex.c (PREV_IS_A_LETTER): should not treat c>0x7f as a word
+ character if -Kn.
+
+Sat Feb 10 00:00:30 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/win32.c (win32_stat): replace stat to enable when pathname
+ ends with '/' or '\' for mswin32 on Win9X / Win2k.
+
+ * win32/win32.h: ditto.
+
+ * ruby.h: ditto.
+
+ * dir.c (rb_glob_helper): ditto.
+
+ * file.c (rb_stat, rb_file_s_stat, eaccess, check3rdbyte): ditto.
+
+Fri Feb 9 22:54:57 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath): convert '\\' to '/'
+ before finding executable file path.
+
+Fri Feb 9 17:41:53 2001 Triet H. Lai <thlai@mail.usyd.edu.au>
+
+ * dir.c (rb_glob_helper): do not follow symbolic links.
+
+Thu Feb 8 21:27:24 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (install_rb): fix handling of relative path.
+
+ * lib/mkmf.rb (create_makefile): add srcdir.
+
+Thu Feb 8 02:22:09 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: join HTTPReadResponse into HTTPResponse again.
+
+ * lib/net/http.rb: move http_version() from HTTPRequest to
+ HTTPResponse.
+
+ * lib/net/protocol.rb: refactoring.
+
+Wed Feb 7 16:27:27 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: split HTTPResponse into HTTPReadResponse
+ module.
+
+ * lib/net/protocol.rb: add Net::net_private.
+
+ * lib/net/protocol.rb: Socket#reopen takes arg, open_timeout.
+
+Wed Feb 7 16:05:22 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (parse_quotedwords): %w should allow parenthesis escape.
+
+Wed Feb 7 00:57:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parse_qstring): %q should allow terminator escape.
+
+ * re.c (rb_reg_options): new method to give an option values.
+
+ * parse.y (cond0): disable special treating of integer literal in
+ conditional unless option -e is supplied. changes current
+ behavior. experimental.
+
+ * parse.y (cond0): give warning for string/integer literals and
+ dot operators in conditionals unless option -e is supplied.
+
+ * re.c (rb_reg_equal): all option flags should be same to be equal.
+
+Tue Feb 6 21:30:44 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: call on_connect() on re-opening socket.
+
+ * lib/net/pop.rb: also POP3 can use APOP auth.
+
+Tue Feb 6 20:19:10 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: add HTTP#request.
+
+ * lib/net/http.rb: take HTTP 1.0 server into account (incomplete).
+
+ * lib/net/protocol.rb: timeout for open/read.
+
+ * lib/net/protocol.rb: add Protocol#on_connect,on_disconnect.
+
+Mon Feb 5 23:15:46 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (Init_Exception): make Interrupt a subclass of
+ SignalException.
+
+Mon Feb 5 00:39:06 2001 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
+
+ * dir.c: use ISXXX() instead of isxxx().
+
+ * dln.c (aix_loaderror): ditto.
+
+ * file.c (rb_file_s_expand_path): ditto.
+
+ * string.c (rb_str_upcase_bang): ditto.
+
+ * win32/win32.c (do_spawn): ditto.
+
+ * win32/win32.c (NtMakeCmdVector): ditto.
+
+ * win32/win32.c (opendir): ditto.
+
+Sat Feb 3 14:44:53 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * configure.in (AC_C_INLINE): check inline attribute.
+
+ * gc.c (is_pointer_to_heap): use inline rather than __inline__.
+
+ * pack.c (hex2num): ditto.
+
+ * ruby.h (rb_class_of, rb_type, rb_special_const_p): ditto.
+
+ * util.c (rb_class_of, rb_type, rb_special_const_p): defined in
+ ruby.h.
+
+Fri Feb 2 16:14:51 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): returns self, even if its length is
+ less than 2.
+
+ * eval.c (POP_VARS): propagate DVAR_DONT_RECYCLE, if
+ SCOPE_DONT_RECYCLE of ruby_scope is set.
+
+Wed Jan 31 22:27:29 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: gcc-2.95.2-7(Cygwin) support.
+ add -mwin32 if available.
+
+ * cygwin/GNUmakefile: ditto.
+
+Tue Jan 30 17:56:48 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fetch): new method.
+
+Mon Jan 29 17:36:19 2001 TOYOFUKU Chikanobu <toyofuku@juice.or.jp>
+
+ * eval.c (rb_eval): nd_iter evaluation should be wrapped by
+ BEGIN_CALLARGS and END_CALLARGS.
+
+Mon Jan 29 14:25:39 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): return from block jumps directory to
+ block invoker.
+
+Mon Jan 29 01:40:27 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_independent): should not clear str->orig here.
+ it's too early.
+
+Fri Jan 26 01:42:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: clarify do ambiguity, bit more complex but natural
+ from my point of view.
+
+Wed Jan 24 14:58:08 2001 Akinori MUSHA <knu@ruby-lang.org>
+
+ * lib/cgi.rb: fix the problem that when running under mod_ruby
+ header() outputs only one Set-Cookie line.
+
+Wed Jan 24 01:45:49 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (POP_BLOCK_TAG): call rb_gc_force_recycle() if block has
+ not been objectified.
+
+ * eval.c (rb_callcc): should nail down block->tag history to avoid
+ rb_gc_force_recycle().
+
+Tue Jan 23 18:51:57 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): should finalize objects in
+ deferred_final_list too.
+
+Tue Jan 23 16:10:12 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (os_live_obj): do not list terminated object.
+
+ * gc.c (os_obj_of): ditto.
+
+ * gc.c (rb_gc_mark): support new T_BLKTAG tag.
+
+ * gc.c (obj_free): ditto.
+
+ * eval.c (new_blktag): creation of new block tag, which holds
+ destination of global jump and orphan status.
+
+ * eval.c (block_pass): break from orphan Proc object will raise a
+ LocalJumpError exception.
+
+Mon Jan 22 16:33:16 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * mkconfig.rb: autoconf 2.49 support.
+
+Mon Jan 22 00:32:44 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): behavior consistency with proc_call(). do
+ not propagate `break'.
+
+Sat Jan 20 03:54:00 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): fixed serious syntax misbehavior. do's
+ preceding was too high. a block in `foo bar do .. end' should
+ be passed to `foo', not `bar'.
+
+ * parse.y (block_call): syntax restructure.
+
+Thu Jan 18 04:28:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_read): new method to call IO#read from
+ pathname. In addition, it accepts third optional argument to
+ specify starting point.
+
+Wed Jan 17 13:28:26 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: remove DEFS definition.
+
+ * mkconfig.rb: ditto.
+
+ * win32/config.status.in: ditto.
+
+Tue Jan 16 17:00:50 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: ignore EOFError for read.
+
+ * lib/net/http.rb: user specified header was not used.
+
+Mon Jan 15 16:00:07 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): should check associated pointer packed by
+ pack("P"). Thus pointers can be retrieved only from pointer
+ packed strings. restriction added.
+
+Sun Jan 14 21:49:28 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * sprintf.c (rb_f_sprintf): simple typo. binary base should be 2,
+ not '2'.
+
+ * re.c (rb_reg_s_last_match): should explicitly return nth match.
+
+Sun Jan 14 18:21:30 2001 Usaku Nakamura <usa@osb.att.ne.jp>
+
+ * win32/config.status.in: add some field.
+
+ * win32/win32.c (isInternalCmd): ignore case for shell's internal
+ command.
+
+ * win32/win32.c (do_spawn): recognize quoted command line.
+
+Sun Jan 14 04:10:27 2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb (adding): too few "yield" in case of arg is
+ not String/File.
+
+ * lib/net/http.rb: add http request object.
+
+Sat Jan 13 19:39:30 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * re.c (rb_reg_desc): separate RE_OPTION_MULTILINE
+
+ * re.c (rb_reg_options): add RE_OPTION_{POSIXLINE,RE_OPTION_MULTILINE,
+ RE_OPTION_EXTENDED}
+
+Thu Jan 11 10:45:04 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.h, win32/config.h.in: move NORETURN from win32.h
+ to config.h.in.
+
+ * win32/config.h.in (inline): renamed from INLINE.
+
+ * djgpp/config.hin (INLINE): removed.
+
+Thu Jan 11 06:45:55 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_dup): should propagate FL_SINGLETON.
+
+ * object.c (inspect_obj): handles the case of no instance variable.
+
+Wed Jan 10 16:15:08 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.h: NORETURN macro is changed for VC++ 6.0.
+
+ * eval.c, intern.h: ditto.
+
+ * djgpp/config.hin, win32/win32.h: ditto.
+
+ * configure.in: ditto.
+
+Wed Jan 10 13:54:53 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * process.c (proc_setuid): use setresuid() if available.
+
+ * process.c (proc_setgid): use setresgid() if available.
+
+ * configure.in: ditto.
+
+Wed Jan 10 01:50:45 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in (AC_C_INLINE): check inline attribute.
+
+ * string.c (rb_str_reverse_bang): forgot to call rb_str_modify().
+
+Tue Jan 9 17:41:40 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_taint): check frozen status before modifying
+ taint status.
+
+ * object.c (rb_obj_untaint): ditto.
+
+Tue Jan 9 16:22:14 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): new method.
+
+Tue Jan 9 02:16:42 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): clear klass member of
+ terminating object.
+
+ * eval.c (rb_call): raise exception for terminated object.
+
+Mon Jan 8 21:24:37 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivrem): t2 might be too big for signed long; do
+ not use rb_int2big(), but rb_uint2big().
+
+Mon Jan 8 21:35:10 2001 Guy Decoux <decoux@moulon.inra.fr>
+
+ * file.c (path_check_1): should restore modified path.
+
+Mon Jan 8 03:09:58 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_load_fail): new func to report LoadError.
+
+ * ruby.c (load_file): use rb_load_fail.
+
+Sat Jan 6 00:17:18 2001 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * pack.c (pack_pack): avoid infinite loop(pack 'm2').
+
+Fri Jan 5 01:02:17 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_finalize): should enclosed by PUSH_TAG/POP_TAG.
+
+ * gc.c (rb_gc_mark): link 2 of NODE_IFUNC should not be explicitly
+ marked. it may contain non object pointer.
+
+Tue Jan 2 00:20:06 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (reg_s_last_match): Regexp::last_match(nth) returns nth
+ substring of the match (alternative for $& and $<digit>).
+
+Sun Dec 31 01:39:16 2000 Guy Decoux <decoux@moulon.inra.fr>
+
+ * eval.c (rb_mod_define_method): wrong comparison for blocks.
+
+Sat Dec 30 19:28:50 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (id2ref): should handle Symbol too.
+
+ * gc.c (id2ref): should print original ptr value
+
+Sat Dec 30 03:14:22 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_iterate): NODE_CFUNC does not protect its data
+ (nd_tval), so create new node NODE_IFUNC for iteration C
+ function.
+
+ * eval.c (rb_yield_0): use NODE_IFUNC.
+
+ * gc.c (rb_gc_mark): support NODE_IFUNC.
+
+Fri Dec 29 11:41:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (mem_error): prohibit recursive mem_error().
+ (ruby-bugs-ja:PR#36)
+
+Fri Dec 29 11:05:41 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_fd_writable): should not switch context if
+ rb_thread_critical is set.
+
+ * eval.c (rb_thread_wait_fd): ditto.
+
+ * eval.c (rb_thread_wait_for): ditto.
+
+ * eval.c (rb_thread_select): ditto.
+
+ * eval.c (rb_thread_join): join during critical section causes
+ deadlock.
+
+Fri Dec 29 00:38:46 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * m17n.c: new file - core functions of M17N.
+
+Tue Dec 26 18:46:41 2000 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * lib/debug.rb: Avoid thread deadlock in debugging stopped thread.
+
+ * lib/debug.rb: Uncleared 'finish' state.
+
+Tue Dec 26 16:53:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): remove dvar node by rb_gc_force_recycle()
+ more eagerly.
+
+ * eval.c (rb_f_binding): recycling should be stopped for outer
+ scope too.
+
+ * eval.c (proc_new): ditto.
+
+Tue Dec 26 15:45:35 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_inspect): should treat multibyte characters
+ properly.
+
+Mon Dec 25 17:49:08 2000 K.Kosako <kosako@sofnec.co.jp>
+
+ * string.c (rb_str_replace_m): unexpected string share happens if
+ replace is done for associated (STR_NO_ORIG) string.
+
+Tue Dec 26 15:01:53 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_p): should not call rb_io_flush() if rb_defout is not
+ a IO (T_FILE).
+
+Mon Dec 25 15:52:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.6.2 released.
+
+Mon Dec 25 05:11:04 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: version 2.1.2 (some bug fixes).
+
+ * lib/cgi.rb: Regexp::last_match[1] --> $1
+
+ * lib/net/telnet.rb: ditto.
+
+Mon Dec 25 04:43:02 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: does not send HEAD on closing socket.
+
+Mon Dec 25 00:44:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_any_cmp): should use rb_str_cmp() if TYPE == T_STRING
+ and CLASS_OF == rb_cString.
+
+ * string.c (rb_str_new4): should copy class of original too.
+
+Mon Dec 25 00:04:54 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_thread_schedule): initial value of `max' changed to -1.
+
+Mon Dec 25 00:16:14 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_replace_m): copy-on-write replace.
+
+ * parse.y (yylex): should handle => after identifier as well as ==
+ and =~.
+
+Sat Dec 23 23:55:57 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr2inum): Integer("") should not return 0.
+
+Sat Dec 23 11:55:57 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_and): Array#& should preserve original order.
+
+Sat Dec 23 03:44:16 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: set @closed false in Socket#reopen.
+
+ * lib/net/pop.rb: add POP3.foreach, delete_all.
+
+ * lib/net/pop.rb: add POP3#delete_all.
+
+ * lib/net/http.rb: add HTTP.version_1_1, version_1_2
+
+ * lib/net/http.rb: refactoring.
+
+Fri Dec 22 23:11:12 2000 Ueno Katsuhiro <unnie@blue.sky.or.jp>
+
+ * eval.c (rb_feature_p): ext might be null.
+
+Fri Dec 22 17:04:12 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * win32/win32.c (myselect): avoid busy loop by adjusting fd_count.
+
+Fri Dec 22 15:07:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr2inum): prefix like '0x' had removed too much.
+
+Thu Dec 21 13:01:46 2000 Tanaka Akira <akr@m17n.org>
+
+ * lib/net/ftp.rb (makeport): don't use TCPsocket.getaddress.
+
+Wed Dec 20 12:00:15 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_lshift): should cast up to BDIGIT_DBL.
+
+ * parse.y (yylex): disallow trailing '_' for numeric literals.
+
+ * bignum.c (rb_cstr2inum): allow `_' within converting string.
+
+ * eval.c (specific_eval): should take no argument if block is
+ supplied.
+
+Tue Dec 19 13:44:50 2000 K.Kosako <kosako@sofnec.co.jp>
+
+ * io.c (rb_f_p): should flush rb_defout, not stdout.
+
+Tue Dec 19 00:57:10 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_minus): usec might overflow. (ruby-bugs-ja:PR#35)
+
+ * eval.c (rb_obj_extend): Object#extend should take at least one
+ argument.
+
+ * parse.y (mrhs_basic): should check value_expr($3), not $1.
+
+Mon Dec 18 23:18:39 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * util.c (mblen, __crt0_glob_function): add for multibyte
+ on DJGPP 2.03.
+
+Mon Dec 18 18:10:30 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_plus): usec might underflow (ruby-bugs-ja:#PR33).
+
+Mon Dec 18 08:11:20 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_set_default): should call rb_hash_modify().
+
+Sat Dec 16 02:58:26 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * eval.c (rb_eval): should clear ruby_errinfo on retry.
+
+ * eval.c (rb_rescue2): ditto.
+
+Thu Dec 14 13:06:18 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * class.c (rb_include_module): prohibit frozen class/module.
+
+ * eval.c (rb_frozen_class_p): make external.
+
+ * intern.h (rb_frozen_class_p): prototyped.
+
+ * intern.h (rb_undef): prototyped not but rb_undef_method()
+ which is also in ruby.h.
+
+Thu Dec 14 09:20:26 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: support -T1 on ruby 1.6.2
+
+ * lib/cgi.rb: $1 --> Regexp::last_match[1]
+
+ * lib/net/telnet.rb: ditto.
+
+Wed Dec 13 23:27:06 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): handles case statement without expr, which
+ looks for any TRUE (non nil, non false) when expression.
+
+ * parse.y (primary): case expression should not be compstmt, but
+ mere expr.
+
+ * parse.y (primary): case without following expression is now
+ separated rule.
+
+Wed Dec 13 12:41:27 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.c (proc_options): accept "--^M" for DOS line endings.
+
+Tue Dec 12 15:45:42 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (newline_node): cancel newline unification.
+
+Mon Dec 11 23:01:57 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): supports cases `?' precedes EOF and newline.
+
+Mon Dec 11 12:11:25 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (call_end_proc): some frame members were left
+ uninitialized.
+
+Mon Dec 11 01:14:58 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fptr_finalize): do not fclose stdin, stdout and
+ stderr at exit.
+
+Sat Dec 9 17:34:48 2000 Tachino Nobuhiro <tachino@open.nm.fujitsu.co.jp>
+
+ * time.c (time_cmp): should check with kind_of?, not instance_of?
+
+ * time.c (time_eql): ditto.
+
+ * time.c (time_minus): ditto.
+
+Fri Dec 8 17:23:25 2000 Tachino Nobuhiro <tachino@open.nm.fujitsu.co.jp>
+
+ * sprintf.c (rb_f_sprintf): proper string precision treat.
+
+Fri Dec 8 10:44:05 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_remove_cvar): Module#remove_class_variable
+ added.
+
+Thu Dec 7 17:35:51 2000 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (stack_length): don't use __builtin_frame_address() on alpha.
+
+Wed Dec 6 18:07:13 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * djgpp/config.sed, win32/Makefile.sub: typo.
+
+ * eval.c (rb_mod_define_method): avoid VC4.0 warnings.
+
+Wed Dec 6 13:38:08 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_and): tuning, make hash from shorter operand.
+
+Wed Dec 6 01:28:50 2000 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * gc.c (rb_gc): __builtin_frame_address() should not be used on
+ MacOS X.
+
+ * gc.c (Init_stack): ditto.
+
+Mon Dec 4 13:44:01 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/jcode.rb: consider multibyte. not /n.
+
+Mon Dec 4 09:49:36 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_inspect): output whole string contents. no more `...'
+
+ * string.c (rb_str_dump): should propagate taintness.
+
+ * hash.c (env_inspect): hash like human readable output.
+
+ * variable.c (rb_ivar_get): prohibiting instance variable access
+ is too much restriction.
+
+ * class.c (method_list): retrieving information should not be
+ restricted where $SAFE=4.
+
+ * class.c (rb_obj_singleton_methods): ditto.
+
+ * eval.c (rb_thread_priority): ditto.
+
+ * eval.c (rb_thread_local_aref): ditto.
+
+ * variable.c (rb_obj_instance_variables): ditto.
+
+ * variable.c (rb_mod_const_at): ditto.
+
+ * variable.c (rb_mod_class_variables): ditto.
+
+ * eval.c (rb_exec_end_proc): end_proc should be preserved.
+
+Sat Dec 2 22:32:43 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): || should accept exactly zero argument.
+
+ * parse.y (stmt): multiple right hand side for single assignment
+ (e.g. a = 1,2) is allowed.
+
+Wed Nov 29 07:55:29 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_long): dumping long should be smaller than 32bit max.
+
+ * marshal.c (w_long): shorter long format for small integers(-123..122).
+
+ * marshal.c (r_long): ditto.
+
+Tue Nov 28 18:10:51 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_define_method): quick hack to implement
+ on-the-fly method definition. experimental.
+
+Mon Nov 27 17:00:35 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should not redefine builtin classes/modules
+ from within wrapped load.
+
+Mon Nov 27 08:57:33 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (call_end_proc): should be isolated from outer block.
+
+Mon Nov 27 00:10:08 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_ctl): call ioctl/fcntl for fptr->f2 too.
+
+ * process.c (rb_f_fork): call rb_thread_atfork() after creating
+ child process.
+
+ * eval.c (rb_thread_atfork): kill all other threads immediately,
+ then turn the current thread into the main thread.
+
+Sat Nov 25 23:12:22 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_run): move calling point of rb_trap_exit after
+ cleaning up threads.
+
+ * eval.c (ruby_finalize): new function to call EXIT trap, END
+ procs and GC finalizers.
+
+ * eval.c (rb_exec_end_proc): prevent recursion.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): ditto.
+
+ * signal.c (rb_trap_exit): ditto. made static.
+
+ * process.c (rb_f_fork): should swallow all exceptions from block
+ execution.
+
+ * process.c (fork_rescue): should call ruby_finalize().
+
+ * parse.y (yycompile): rb_gc() removed. I don't remember why I put
+ this here. test code?
+
+Fri Nov 24 22:03:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (EXCL): exclusive information is now stored in an
+ instance variable. this enables proper marshal dump.
+
+ * process.c (proc_waitpid): should clear rb_last_status ($?) if
+ no pid was given by waitpid(2).
+
+Thu Nov 23 01:35:38 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_waitpid2): returns nil if no pid found.
+
+Wed Nov 22 23:45:15 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eq): new method. Compares start and end of range
+ respectively.
+
+Wed Nov 22 11:01:32 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_class_variables): should honor singleton
+ class variable rule defined yesterday.
+
+Tue Nov 21 23:24:14 2000 Mitsuteru S Nakao <nakao@kuicr.kyoto-u.ac.jp>
+
+ * numeric.c (flodivmod): missing second operand (typo).
+
+Tue Nov 21 03:39:41 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (marshal_load): marshal format compatibility check
+ revised. greater minor revision is UPWARD compatible;
+ downward compatibility is not assured.
+
+ * eval.c (is_defined): clarify class variable behavior for
+ singleton classes. class variables within singleton class
+ should be treated like within singleton method.
+
+Mon Nov 20 13:45:21 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): set ruby_sourceline before evaluating
+ exceptions.
+
+ * gc.c (gc_sweep): defer finalization in GC during compilation or
+ interrupt prohibit section.
+
+ * gc.c (gc_sweep): mark all nodes before sweeping if GC happened
+ during compilation.
+
+ * eval.c (rb_eval): should treat class variables specially in a
+ method defined in the singleton class.
+
+Mon Nov 20 10:20:21 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c, win32/win32.c, ruby.h: add rb_iglob().
+
+Mon Nov 20 00:18:16 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_subseq): should return nil for outbound start
+ index.
+
+ * marshal.c (marshal_load): show format versions explicitly when
+ format version mismatch happens.
+
+Sun Nov 19 06:13:24 2000 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * marshal.c: use long for string/array length.
+
+ * pack.c (swaps): use bit-or(|) instead of plus(+).
+
+ * pack.c (swapl): ditto.
+
+Sat Nov 18 15:18:16 2000 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * array.c (rb_ary_replace): array size should be in long.
+
+ * array.c (rb_ary_concat): ditto.
+
+ * array.c (rb_ary_hash): ditto.
+
+Sat Nov 18 14:07:20 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: Socket#readline() reads until "\n", not "\r\n"
+
+Fri Nov 17 14:55:18 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * string.c (rb_str_succ): output should be NUL terminated.
+
+Fri Nov 17 02:54:15 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_close): need not to flush before closing.
+
+ * eval.c (rb_thread_join): should preserve last thread status when
+ THREAD_TO_KILL.
+
+ * eval.c (rb_thread_stop): ditto.
+
+ * io.c (io_fflush): wrap fflush by TRAP_BEG, TRAP_END.
+
+ * eval.c (rb_eval): method defined within singleton class
+ definition should behave like singleton method about class
+ variables.
+
+ * eval.c (is_defined): ditto.
+
+Thu Nov 16 23:06:07 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: can call {old,new}_implementation any times.
+
+ * lib/net/http.rb: HTTP#connecting, receive ->
+ common_oper, connecting.
+
+ * lib/net/http.rb: output warning if u_header includes
+ duplicated header.
+
+ * lib/net/http.rb: not check Connection:/Proxy-Connection;
+ always read until eof.
+
+ * lib/net/protocol.rb: detects and catches "break" from block.
+
+Thu Nov 16 16:32:45 2000 Masahiro Tanaka <masa@stars.gsfc.nasa.gov>
+
+ * bignum.c (bigdivrem): should have incremented ny first.
+
+Thu Nov 16 14:58:00 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/socket/socket.c (sock_new): duplicates file descriptor
+ with myfddup() on mswin32/mingw32.
+
+ * win32/win32.h: uses system original fdopen().
+
+ * win32/win32.c (myfddup): newly added instead of myfdopen().
+
+ * win32/win32.c (mybind, myconnect, mygetsockname, mygetsockopt,
+ mylisten, mysetsockopt): now accept file descriptor only, not
+ SOCKET.
+
+ * win32/win32.c (myaccept, mysocket): return file descriptor,
+ instead of SOCKET.
+
+Thu Nov 16 10:23:24 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (massign): too strict check for nameless rest argument.
+
+ * eval.c (method_arity): mere * should return -1.
+
+ * eval.c (intersect_fds): should check all FDs in the fd_set.
+
+Wed Nov 15 19:33:20 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_attr): should clear method cache before calling hook.
+
+ * eval.c (rb_eval): ditto.
+
+ * eval.c (rb_mod_modfunc): ditto.
+
+Mon Nov 13 22:44:52 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_bug): print version to stderr.
+
+Mon Nov 13 19:02:08 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c, io.c, process.c: the exit status of program must be
+ multiplied 256 on mswin32 and msdosdjgpp(system(), ``).
+
+Sat Nov 11 22:57:38 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): uniformed treatment of -a**b, where a is a
+ number literal; hacky but behavior appears more consistent.
+
+ * parse.y (newline_node): reduce newline node (one per line).
+
+ * random.c (rb_f_srand): should be prohibited in safe level
+ greater than 4.
+
+Sat Nov 11 22:37:36 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * rubysig.h: do not use rb_trap_immediate on win32.
+
+ * rubysig.h: new macros, ATOMIC_TEST, ATOMIC_SET, ATOMIC_INC,
+ ATOMIC_DEC, RUBY_CRITICAL and new definition of TRAP_BEG,
+ TRAP_END.
+
+ * gc.c (ruby_xmalloc): should wrap malloc() by RUBY_CRITICAL.
+
+ * signal.c (sighandle): better win32 sig handling.
+
+ * win32/win32.c (flock): better implementation.
+
+ * win32/win32.c (myselect): ditto.
+
+ * win32/win32.c (myaccept): ditto.
+
+ * win32/win32.c (waitpid): ditto.
+
+ * win32/win32.c (myrename): ditto.
+
+ * win32/win32.c (wait_events): support function for win32 signal
+ handling.
+
+Sat Nov 11 08:34:18 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.31.
+
+ * lib/net/http.rb: initializes header in HTTP, not HTTPCommand.
+
+ * lib/net/protocol.rb, http.rb: rewrites proxy code.
+
+Fri Nov 10 16:15:53 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (rb_num2long): use to_int, not to_i.
+
+ * error.c: T_SYMBOL was misplaced by T_UNDEF.
+
+ * parse.y (yylex): eval("^") caused infinite loop.
+
+Thu Nov 9 14:22:13 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_taint_check): should check IO taintness; no
+ operation for untainted IO should be allowed in the sandbox.
+
+ * rubyio.h (GetOpenFile): check IO taintness inside using
+ rb_io_taint_check().
+
+Wed Nov 8 03:08:53 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fflush): ensure fflush(3) would not block by calling
+ rb_thread_fd_writable().
+
+Tue Nov 7 20:29:56 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.30.
+
+ * lib/net/protocol.rb, smtp.rb: Command#critical_ok -> error_ok
+
+ * lib/net/http.rb: reads header when also "100 Continue".
+
+Tue Nov 7 04:32:19 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivrem): use bit shift to make y's MSB set.
+
+Mon Nov 6 1:22:49 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (warn_print): do not use err_append(), to ensure output
+ to stderr.
+
+ * error.c (rb_warn): use warn_print() instead of err_print().
+
+ * error.c (rb_warning): ditto.
+
+ * error.c (rb_bug): ditto.
+
+ * eval.c (rb_load): re-raise exceptions during load.
+
+ * time.c (make_time_t): remove useless adjust
+
+Thu Nov 2 18:01:16 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c (rb_f_rand): half-baked float support fixed. This fix
+ was originally proposed by K.Kosako <kosako@sofnec.co.jp>.
+
+Tue Oct 31 17:27:17 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c: change digit size to `long|int' if long long is
+ available.
+
+ * marshal.c (w_object): support `long|int' digits.
+
+ * marshal.c (r_object): ditto.
+
+Sat Oct 28 23:54:22 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): allow =end at the end of file (without a
+ newline at the end).
+
+Fri Oct 27 10:00:27 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr2inum): should ignore trailing white spaces.
+
+ * bignum.c (rb_str2inum): string may not have sentinel NUL.
+
+Fri Oct 27 02:37:22 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr2inum): wrongly assigned base to c before
+ badcheck check.
+
+Thu Oct 26 02:42:50 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: Command#critical_ok
+
+ * lib/net/smtp.rb: clear critical flag before go to SMTP
+
+Wed Oct 25 12:30:19 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_concat): replacing array might be the receiver
+ itself. do not call rb_ary_push_m.
+
+ * array.c (rb_ary_replace): replacing array might be the receiver
+ itself. use memmove.
+
+Fri Oct 20 07:56:23 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): ARGSPUSH should not modify args array.
+
+Thu Oct 19 14:58:17 2000 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * pack.c (NUM2U32): should use NUM2ULONG().
+
+Tue Oct 17 17:30:34 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (error_print): ruby_sourcefile may be NULL.
+
+Tue Oct 17 16:36:28 2000 Wes Nakamura <wknaka@pobox.com>
+
+ * pack.c (NATINT_U32): wrong use of sizeof.
+
+Tue Oct 17 12:48:20 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (rb_abort): nil check against ruby_errinfo.
+
+ * eval.c (rb_thread_schedule): use FOREACH_THREAD_FROM instead of
+ FOREACH_THREAD, since curr_thread may be removed from thread ring.
+
+ * eval.c (THREAD_ALLOC): errinfo should be Qnil.
+
+ * eval.c (rb_callcc): th->prev,th->next are now already
+ initialized in THREAD_ALLOC.
+
+Mon Oct 16 15:37:33 2000 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * eval.c (rb_thread_inspect): tag size was shorter than required.
+
+ * object.c (rb_obj_inspect): ditto.
+
+Mon Oct 16 14:25:18 2000 Shugo Maeda <shugo@ruby-lang.org>
+
+ * object.c (sym_inspect): used `name' before initialization.
+
+Mon Oct 16 14:06:00 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): use NATINT_U32 for 'l', 'L', and 'N'.
+
+ * pack.c (I32,U32): 32 bit sized integer.
+
+ * pack.c (OFF16,OFF32B): big endian offset for network byteorder.
+
+Mon Oct 16 06:39:32 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: hex-alpha is not [a-h] but [a-f].
+
+Mon Oct 16 01:02:02 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): should not abort on exception if
+ $SAFE >= 4.
+
+ * parse.y (sym): symbols for class variable names.
+
+Sun Oct 15 01:49:18 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_flock): should accept interrupt.
+
+ * process.c (rb_waitpid): ditto.
+
+ * process.c (rb_waitpid): ditto.
+
+ * process.c (proc_wait): ditto.
+
+ * process.c (proc_waitpid2): wrong recursion.
+
+Sat Oct 14 03:32:13 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_alloc): should not link a new thread in the
+ live thread ring before initialization.
+
+Fri Oct 13 17:08:09 2000 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: new file.
+
+Thu Oct 12 18:56:28 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/pop.rb: POP3#reset
+
+ * lib/net/http.rb: a code for "Switch Protocol" was wrongly 100.
+
+Thu Oct 12 01:23:38 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: bug fix: CGI::html(): PRETTY option didn't work.
+
+Thu Oct 12 00:03:02 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (sym_inspect): should adjust string length.
+
+ * struct.c (rb_struct_to_s): ditto.
+
+ * struct.c (rb_struct_inspect): ditto.
+
+Wed Oct 11 22:15:47 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (rb_thread_inspect): should adjust string length.
+
+ * object.c (rb_any_to_s): ditto.
+
+ * object.c (rb_obj_inspect): ditto.
+
+Wed Oct 11 18:13:50 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): should check insecure exit.
+
+Wed Oct 11 14:29:51 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb: 2nd arg for ProtocolError#initialize is
+ optional.
+
+ * lib/net/http.rb: code refining.
+
+Wed Oct 11 11:13:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): setter method (e.g. foo=) should always be
+ public.
+
+ * eval.c (rb_thread_raise): should not raise SecurityError if
+ exception raised by the interpreter.
+
+ * eval.c (rb_thread_cleanup): skip all THREAD_KILLED threads
+ before FOREACH_THREAD.
+
+Tue Oct 10 16:11:54 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c (dln_load): remove unused code for Cygwin.
+
+Tue Oct 10 09:49:23 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (Init_File): FileTest.size should return 0 (not nil) for
+ empty files.
+
+Sun Oct 8 13:20:26 2000 Guy Decoux <decoux@moulon.inra.fr>
+
+ * eval.c (POP_SCOPE): not just set SCOPE_DONT_RECYCLE, but do
+ scope_dup().
+
+Sat Oct 7 15:10:50 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_reverse_bang): unnecessary ALLOCA_N() was
+ removed.
+
+Fri Oct 6 14:50:24 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb.in, lib/mkmf.rb: remove "DESTDIR =".
+
+ * Makefile.in, win32/Makefile.sub, ruby.1: renamed -X to -C.
+
+Fri Oct 6 12:50:52 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_plus): use to_ary(), not Check_Type().
+
+ * array.c (rb_ary_concat): ditto.
+
+ * gc.c (rb_gc): use __builtin_frame_address() for gcc.
+
+ * eval.c (stack_length): ditto.
+
+ * parse.y (assign_in_cond): stop warning till some better warning
+ condition will be found.
+
+Thu Oct 5 18:02:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_dup): should have propagated taint flag.
+ (ruby-bugs:#PR64,65)
+
+Wed Oct 4 00:26:11 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_arity): proc{|a|}'s arity should be -1.
+
+Mon Oct 2 05:28:58 2000 akira yamada <akira@ruby-lang.org>
+
+ * string.c (trnext): minus at the end of pattern.
+
+Sun Oct 1 00:43:34 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: exp-name was wrong on cygwin and mingw32.
+
+Thu Sep 28 14:57:09 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should try must_string calculation
+ every time.
+
+Tue Sep 19 23:47:44 2000 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * configure.in, config.guess, config.sub: MacOS X support.
+
+Wed Sep 27 18:40:05 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.6.1 released.
+
+Wed Sep 27 16:13:05 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * mkconfig.rb: variables should be expanded only if /\$\{?\w+\}?/.
+
+Tue Sep 26 18:09:51 2000 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * string.c: include <math.h>
+
+Tue Sep 26 15:59:50 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_dup): metaclasses of class/module should not be
+ cleared by rb_obj_dup.
+
+Tue Sep 26 02:44:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (GC_MALLOC_LIMIT): size extended.
+
+ * regex.c (DOUBLE_STACK): use machine's stack region for regex
+ stack if its size is small enough.
+
+Mon Sep 25 18:13:07 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c: include <defines.h>.
+
+ * eval.c (rb_add_method): cache mismatch by method
+ definition. need to clear_cache_by_id every time.
+
+Mon Sep 25 13:31:45 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/win32.c (NtCmdGlob): substitute '\\' with '/'.
+
+Mon Sep 25 00:35:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * defines.h: #undef HAVE_SETITIMER on cygwin.
+
+Sun Sep 24 03:01:53 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, http.rb: typo.
+
+Sat Sep 23 07:33:20 2000 Aleksi Niemela <aleksi.niemela@cinnober.com>
+
+ * regex.c (re_compile_pattern): nicer regexp error messages for
+ invalid patterns.
+
+Sat Sep 23 03:06:25 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_autoload_load): should not require already
+ provided features.
+
+Fri Sep 22 15:46:21 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/http.rb: too early parameter expansion in string.
+
+Fri Sep 22 13:58:51 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb.in: don't use default $:
+
+Fri Sep 22 13:42:50 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * regex.c (PUSH_FAILURE_COUNT): avoid casting warning on alpha.
+
+ * regex.c (PUSH_FAILURE_POINT): ditto.
+
+Fri Sep 22 10:16:21 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/config.h.in: add HAVE_TELLDIR, HAVE_SEEKDIR
+
+Thu Sep 21 19:04:34 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb, lib/mkmf.rb (install_rb): check whether libdir is
+ directory or not.
+
+Thu Sep 21 17:23:05 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_symlink): use HAVE_SYMLINK.
+
+ * file.c (rb_file_s_readlink): use HAVE_READLINK.
+
+ * dir.c (dir_tell): use HAVE_TELLDIR.
+
+ * dir.c (dir_seek): use HAVE_SEEKDIR.
+
+ * configure.in (AC_CHECK_FUNCS): lstat, symlink, readlink,
+ telldir, seekdir checks added.
+
+ * file.c (lstat): should use stat(2) if lstat(2) is not
+ available.
+
+Thu Sep 21 15:59:23 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.29.
+
+ * lib/net/http.rb: HTTPReadAdapter -> HTTPResponseReceiver
+
+ * lib/net/http.rb (connecting): response is got in receive()
+
+Thu Sep 21 15:49:07 2000 Wayne Scott <wscott@ichips.intel.com>
+
+ * lib/find.rb (find): should not follow symbolic links;
+ tuned performance too.
+
+Wed Sep 20 23:21:38 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (load_file): two Ctrl-D was required to stop ruby at the
+ beginning of stdin script read.
+
+Wed Sep 20 14:01:45 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_provided): detect infinite load loop.
+
+ * eval.c (rb_provided): too weak filename comparison.
+
+ * eval.c (rb_thread_alloc): avoid recycling still referenced
+ dvar structures.
+
+ * eval.c (rb_callcc): ditto.
+
+ * eval.c (THREAD_ALLOC): fill dyna_vars field by ruby_dyna_vars.
+
+Tue Sep 19 17:47:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.6.0 released.
+
+Tue Sep 19 16:24:52 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (Init_marshal): provide marshal.so no more.
+
+Tue Sep 19 14:01:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in, win32/setup.mak: include version number
+ in RUBY_SO_NAME.
+
+Tue Sep 19 13:07:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): was confusing $~ and $_.
+
+Tue Sep 19 13:06:53 2000 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * signal.c (rb_f_kill): signum may be a negative number, should be
+ treated by signed number.
+
+Tue Sep 19 01:14:56 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_provide): better feature handling.
+
+ * eval.c (rb_f_require): loading ruby library may be partial
+ state. checks in rb_thread_loading is integrated.
+
+ * eval.c (rb_provided): better thread awareness.
+
+ * lib/irb/frame.rb: 6 (not 5) parameters for trace_func proc.
+
+ * eval.c (error_print): should print error position even if
+ get_backtrace() failed.
+
+Sat Sep 16 03:29:59 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): rb_provided() was called too early; does
+ not work well with threads.
+
+ * parse.y (ensure): should distinguish empty ensure and non
+ existing ensure.
+
+ * file.c (Init_File): extending File by class of FileTest was
+ serious mistake.
+
+Thu Sep 14 02:46:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_yield): array strip should be done in this
+ function.
+
+Wed Sep 13 17:01:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_eq): incomplete value comparison of bignums.
+
+Wed Sep 13 06:39:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_class_variables): Module#class_variables added.
+
+Wed Sep 13 06:09:26 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: bug fix: CGI::header(): output status header.
+
+Wed Sep 13 01:09:12 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): allow global variables like '$__a'.
+
+Tue Sep 12 22:28:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/socket/extconf.rb: avoid using terrible <netinet/tcp.h>
+ on cygwin 1.1.5.
+
+Tue Sep 12 16:01:58 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * array.c (rb_ary_unshift_m): typo.
+
+Tue Sep 12 15:37:55 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): stripped array too much, should remove just
+ for proc_call().
+
+Tue Sep 12 07:05:24 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: version 2.0.0: require ruby1.5.4 or later.
+
+ * lib/net/telnet.rb: version 1.6.0
+
+Tue Sep 12 03:26:07 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (massign): use to_ary to get an array if available.
+
+ * object.c (rb_Array): ditto.
+
+Mon Sep 11 14:24:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (ruby_setenv): should not free the element of
+ origenvironment.
+
+ * parse.y (command_call): kYIELD moved to this rule to allow
+ 'a = yield b'. (ruby-bugs-ja:#PR15)
+
+Mon Sep 11 01:27:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): proc#call([]) should pass single value to
+ the block.
+
+ * eval.c (callargs): reduce array allocation.
+
+ * eval.c (massign): precise check for argument number.
+
+Fri Sep 8 10:05:17 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (STR_NO_ORIG): should be FL_USER2.
+
+Thu Sep 7 14:17:51 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cat): should work even for concatenating same
+ string.
+
+Wed Sep 6 17:06:38 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_declare): should check superclass's class
+ variable first.
+
+Wed Sep 6 10:42:02 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-calculate-indent): shift continuing line
+ if previous line ends with modifier keyword.
+
+ * misc/ruby-mode.el (ruby-parse-region): should not give up if
+ modifiers are at the end of line.
+
+ * misc/ruby-mode.el (ruby-expr-beg): indented wrongly if modified
+ statement was size 1.
+
+Wed Sep 6 10:41:19 2000 Kenichi Komiya <kom@mail1.accsnet.ne.jp>
+
+ * misc/ruby-mode.el (ruby-parse-region): modifier was not handled
+ well on emacs19.
+
+Tue Sep 5 17:10:12 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_to_s): fixed zone string UTC for utc time object.
+
+Tue Sep 5 00:26:06 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_search): range worked wrongly on bm_search().
+
+Mon Sep 4 13:40:40 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: renamed libruby.a to libruby.{cygwin,mingw32}.a
+ on cygwin and mingw32.
+
+Sun Sep 3 23:44:04 2000 Noriaki Harada <tenmei@maoh.office.ne.jp>
+
+ * io.c (NO_SAFE_RENAME): for BeOS too.
+
+Sun Sep 3 11:31:53 2000 Takaaki Tateishi <ttate@jaist.ac.jp>
+
+ * parse.y (rescue): no assignment was done if rescue body was
+ empty.
+
+Sat Sep 2 10:52:21 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (call_args,aref_args): block_call can be the last
+ argument.
+
+ * parse.y (COND_PUSH,COND_POP): maintain condition stack to allow
+ kDO2 in parentheses in while/until/for conditions.
+
+ * parse.y (yylex): generate kDO2 for EXPR_ARG outside of
+ while/until/for condition.
+
+Fri Sep 1 10:36:29 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (aref_args,opt_call_args): add block_call to allow a
+ method without parentheses and with block as a last argument.
+
+ * hash.c (rb_hash_sort): should not return nil.
+
+ * re.c (match_aref): should use rb_reg_nth_match().
+
+ * eval.c (POP_SCOPE): recycled scopes too much
+
+ * eval.c (Init_eval): extend room for stack allowance.
+
+ * eval.c (POP_SCOPE): frees scope too much.
+
+Thu Aug 31 14:28:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_mark): T_SCOPE condition must be more precise.
+
+ * eval.c (scope_dup): should not make all duped scope orphan.
+
+Thu Aug 31 10:11:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): allow stmt_rhs to be right hand side of multiple
+ assignment.
+
+ * time.c (rb_time_timeval): type error should not mention the word
+ 'interval'.
+
+Wed Aug 30 23:21:20 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (rb_num2long): use rb_Integer() instead of independent
+ convert routine.
+
+ * eval.c (rb_rescue2): now takes arbitrary number of exception types.
+
+ * object.c (rb_convert_type): use rb_rescue2 now to handle NameError.
+
+ * object.c (rb_convert_type): better error message.
+
+Wed Aug 30 17:09:14 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): AlphaNT support.
+
+Wed Aug 30 14:19:07 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (node_assign): should support NODE_CVASGN2 too.
+
+Wed Aug 30 11:31:47 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): add the
+ arguments checking.
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): add taint
+ checking. allow String object in the third argument.
+
+Wed Aug 30 10:29:40 2000 Masahiro Tomita <tommy@tmtm.org>
+
+ * io.c (rb_f_p): flush output buffer.
+
+Tue Aug 29 16:29:15 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assignable): remove NODE_CVASGN3.
+
+ * parse.y (gettable): remove NODE_CVAR3.
+
+Tue Aug 29 02:02:14 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): handles create_makefile("a/b").
+
+ * ext/extmk.rb.in (create_makefile): ditto
+
+Mon Aug 28 18:43:54 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): now handles class variables.
+
+ * eval.c (rb_eval): class variable behavior revisited.
+
+ * parse.y (assignable): ditto.
+
+ * parse.y (gettable): ditto.
+
+ * regex.c (PUSH_FAILURE_COUNT): push/pop interval count on failure
+ stack. this fix is inspired by the Emacs21 patch from Stefan
+ Monnier <monnier@cs.yale.edu>.
+
+Fri Aug 25 15:24:39 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_get): should not follow __attached__.
+
+ * variable.c (rb_cvar_set): ditto.
+
+ * variable.c (rb_cvar_declare): ditto.
+
+ * variable.c (mod_av_set): second class variable assignment at the
+ toplevel should not give warning.
+
+Fri Aug 25 01:18:36 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (next_argv): prepare path for open file.
+
+ * string.c (rb_str_setter): moved from io.c.
+
+ * io.c (next_argv): filename should be "-" for refreshed ARGF.
+
+Thu Aug 24 15:27:39 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/socket/socketport.h: use `extern int h_errno' if needed.
+
+Sat Aug 19 01:34:02 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/sdbm/_sdbm.c (sdbm_prep): flags should be or-ed by O_BINARY on
+ Win32 too.
+
+ * ext/sdbm/_sdbm.c (makroom): fill hole with 0 on Win32 too.
+
+Fri Aug 18 13:23:59 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should preserve and clear $! value before
+ compilation.
+
+ * eval.c (eval): ditto.
+
+Fri Aug 18 11:06:19 2000 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/socket.c (s_accept): start GC on EMFILE/ENFILE.
+
+Thu Aug 17 16:04:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): should clear ruby_errinfo.
+
+Thu Aug 17 04:26:31 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.27.
+
+ * lib/net/protocol.rb: writing methods returns written byte size.
+
+ * lib/net/smtp.rb: send_mail accepts many destinations.
+
+Wed Aug 16 00:43:47 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_s_times): use CLK_TCK for HZ if it's defined.
+
+Tue Aug 15 17:30:59 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (frame_dup): should set flag FRAME_MALLOC after
+ argv allocation.
+
+ * eval.c (blk_free): should not free argv if GC was called before
+ frame_dup.
+
+Tue Aug 15 16:08:40 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: add ac_cv_func_times=yes for mingw32.
+
+ * win32/win32.c (mytimes): typo.
+
+Tue Aug 15 01:45:28 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_eof): should return true at the end of ARGF without
+ checking stdout if arguments are given.
+
+Mon Aug 14 10:34:32 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_status): status should return false for normal
+ termination, nil for termination by exception.
+
+Fri Aug 11 15:43:46 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_undef): give warning for undefining __id__, __send__.
+
+Thu Aug 10 08:05:03 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_callcc): returned current thread instead of
+ continuation wrongly.
+
+Thu Aug 10 05:40:28 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb.in: $CPPFLAGS should be initialized.
+
+ * ext/tcltklib/depend: add stubs.o.
+
+ * ext/tcltklib/extconf.rb: use $CPPFLAGS instead of $CFLAGS.
+
+Wed Aug 9 16:31:48 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_callcc): thread status for continuations must be
+ THREAD_KILLED, otherwise thread_free() breaks other threads.
+
+Wed Aug 9 13:24:25 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/win32.[ch]: emulate rename(2).
+
+Tue Aug 8 14:01:46 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/tcltklib/tcltklib.c: support --enable-tcltk_stubs
+
+ * ext/tcltklib/extconf.rb: ditto.
+
+ * ext/tcltklib/stubs.c: created. examine candidate shared libraries.
+
+Mon Aug 7 13:59:12 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (CLONESETUP): should copy flags before any potential
+ object allocation.
+
+ * regex.c (re_match): check for stack depth was needed.
+
+Sat Aug 5 16:43:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * djgpp/*: convert DOS line endings to UNIX style.
+
+ * djgpp/config.status: rename to config.sed for SFN.
+
+ * lib/ftools.rb (compare, safe_unlink, chmod): avoid warnings.
+
+ * lib/ftools.rb (move): typo. not `tpath', but `to'.
+
+Fri Aug 4 23:26:48 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (proc_call): gives warning if a block is supplied.
+
+ * eval.c (rb_eval): no warning for discarding if an alias for the
+ method is already made.
+
+Fri Aug 4 16:32:29 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_reject_bang): returns nil if no element removed.
+
+ * hash.c (rb_hash_reject_bang): returns nil if no element removed.
+
+Thu Aug 3 19:44:26 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_fd_writable): should return integer value.
+
+ * array.c (rb_ary_assoc): search array element whose length is
+ longer than 0 (not 1).
+
+Wed Aug 2 18:27:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_wait_fd): prohibit thread context switch
+ during compilation.
+
+ * eval.c (rb_cont_call): prohibit Continuation#call across threads.
+
+Wed Aug 2 08:22:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (rb_gc): clear malloc_memories to zero, to avoid potential
+ super frequent GC invocation. (ruby-bugs:#PR48)
+
+ * gc.c (rb_gc): only add_heap() if GC trigger condition is
+ satisfied.
+
+Tue Aug 1 16:41:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (proc_options): global load path setting moved from
+ ruby_prog_init().
+
+ * ruby.c (incpush): renamed. push path entry at the END of the
+ load path array. This makes -I directories sorted in order in
+ the arguments.
+
+Sat Jul 29 23:42:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (dir_each): should check whether dir is closed during the
+ block execution. (ruby-bugs:#PR47)
+
+Sat Jul 29 21:57:30 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ruby.c (rubylib_mangle): provide another buffer for the result.
+
+Wed Jul 26 10:09:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: set SOLIBS to LIBS on Cygwin.
+
+ * configure.in: LIBRUBY_SO='$(RUBY_INSTALL_NAME)'.$target_os.dll
+ on cygwin and mingw32. ruby-cygwin.dll is bad. why?
+
+Wed Jul 26 10:04:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (gc_sweep): avoid full scan during compilation.
+
+ * gc.c (rb_gc): add heap during no gc period (including
+ compilation).
+
+Tue Jul 25 19:03:04 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * cygwin/GNUmakefile: use puts instead of print, because
+ Cygwin DLL's behavior is changed(or bug?).
+
+ * configure.in: LIBRUBY_SO='$(RUBY_INSTALL_NAME)'-$target_os.dll
+ on cygwin and mingw32.
+
+ * cygwin/GNUmakefile: ditto.
+
+ * Makefile.in: $(SOLIBS) should be put after dmyext.@OBJEXT@.
+
+ * instruby.rb: install $(LIBRUBY) to libdir
+ if $(LIBRUBY) != $(LIBRUBY_A_).
+
+Tue Jul 25 15:16:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_p): redirect to $defout.
+
+Mon Jul 24 18:52:55 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/win32.c (win32_getenv): should remove `static'.
+
+ * ruby.c (rubylib_mangle): support "/hoge;/foo"
+
+Mon Jul 24 10:28:55 2000 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
+
+ * string.c (rb_str_count): raise exception if no argument is
+ given.
+
+Sun Jul 23 12:55:04 2000 Dave Thomas <Dave@Thomases.com>
+
+ * string.c (rb_str_rindex): Support negative end position.
+
+Fri Jul 21 17:35:01 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (aref_args): command_call now be permitted as
+ aref_args.
+
+ * process.c (proc_getpriority): getpriority(2) may return valid
+ negative number. use errno to detect error.
+
+ * marshal.c (dump_ensure): dumped string should be tainted if
+ any among target objects is tainted.
+
+ * marshal.c (r_regist): restored object should be tainted if and
+ only if the source is a file or a tainted string.
+
+Wed Jul 19 15:14:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (bigdivrem): should use rb_int2big(), not rb_uint2big().
+
+Tue Jul 18 14:58:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (ruby_options): should treat SystemExit etc. properly.
+
+ * parse.y (yycompile): should check compile_for_eval, not
+ ruby_in_eval.
+
+Mon Jul 17 04:29:50 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/mkmf.rb: converts extension of $objs into $OBJEXT.
+
+Sun Jul 16 03:02:34 2000 Dave Thomas <dave@thomases.com>
+
+ * lib/weakref.rb: Change to use new ObjectSpace calls.
+
+Sat Jul 15 21:59:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): should not redefine __id__ nor __send__.
+
+ * gc.c (define_final): integrate final.rb features into the
+ interpreter. define_finalizer and undefine_finalizer was
+ added to ObjectSpace. plus, add_finalizer, remove_finalizer,
+ and call_finalizer are deprecated now.
+
+Sat Jul 15 01:32:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_mod_method): implements unbound method.
+
+ * eval.c (Init_eval): should prohibit `module_function' for class
+ Class.
+
+Fri Jul 14 17:19:59 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * cygwin/GNUmakefile.in: use miniruby instead of sed.
+
+Fri Jul 14 12:49:50 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (argf_eof): need to check stdin, when next_p == -1.
+
+ * io.c (read_all): use io_fread() instead of fread(3).
+
+ * io.c (io_reopen): should clearerr FILE if fd < 3.
+
+ * re.c (rb_reg_match_m): the result is exported, so it should be
+ declared as busy.
+
+ * eval.c (rb_eval): should preserve errinfo even if return, break,
+ etc. is called in rescue clause.
+
+ * instruby.rb: install irb too.
+
+Wed Jul 12 15:32:57 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_const_get): constants for builtin classes must
+ have higher priority than constants from included modules at
+ Object class.
+
+ * bignum.c (bigdivrem): small embarrassing typo.
+
+Wed Jul 12 15:06:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): use rb_const_get_at().
+
+ * variable.c (top_const_get): retrieve toplevel constants only,
+ not ones of Object (and its included modules) in general.
+
+Wed Jul 12 15:04:11 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.26.
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb:
+ add module Net::NetPrivate and its inner classes
+ {Read,Write}Adapter, Command, Socket,
+ SMTPCommand, POP3Command, APOPCommand, HTTPCommand
+
+Wed Jul 12 13:10:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (bigdivrem): defer bignorm().
+
+ * bignum.c (bignorm): accepts accidental fixnums.
+
+Tue Jul 11 16:54:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): `@<digit>' is no longer a valid instance
+ variable name.
+
+Tue Jul 11 01:51:50 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (rb_big_divmod): should not use Integer(float) for
+ the right operand.
+
+ * bignum.c (rb_big_remainder): ditto.
+
+ * bignum.c (rb_big_modulo): ditto.
+
+Mon Jul 10 15:27:16 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c (pipe_finalize): should set rb_last_status when pclose().
+
+Mon Jul 10 09:07:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (rb_bug): print version number and such too.
+
+Sat Jul 8 23:08:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_start_0): should copy previous scopes to
+ prevent rb_gc_force_recycle().
+
+Fri Jul 7 23:36:36 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/addrinfo.h: move IN_EXPERIMENTAL and IN_LOOPBACKNET
+ definitions to ext/socket/sockport.h.
+
+ * ext/socket/extconf.rb: add getservbyport() and arpa/inet.h check.
+
+ * ext/socket/getaddrinfo.c (getaddrinfo): SOCK_RAW may not be
+ defined (ex. BeOS, Palm OS 2.x or before).
+
+ * ext/socket/getnameinfo.c (getnameinfo): getservbyport() may not
+ exist (ex. BeOS, Palm OS).
+
+ * ext/socket/sockport.h: add IN_EXPERIMENTAL, IN_CLASSA_NSHIFT,
+ IN_LOOPBACKNET, AF_UNSPEC, PF_UNSPEC and PF_INET.
+
+Fri Jul 7 03:30:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (aref_args): should allow Hash[:a=>2] etc.
+
+ * numeric.c (fix_aref): convert index by NUM2INT, not FIX2INT.
+ (ruby-bugs:#PR37)
+
+ * time.c (time_localtime): should prohibit for frozen time.
+
+ * time.c (time_gmtime): ditto.
+
+Thu Jul 6 19:12:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_file_s_open): should not terminate fptr; just clear it.
+
+ * ruby.c (proc_options): should not call require_libraries()
+ twice.
+
+ * ruby.c (require_libraries): clear req_list_head.next after
+ execution.
+
+Thu Jul 6 13:51:57 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * object.c (rb_to_id): name may not be symbol nor fixnum.
+
+ * struct.c (rb_struct_s_def): name may be nil.
+
+Thu Jul 6 02:09:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (bigdivrem): new function to return remainder.
+
+ * numeric.c (fixdivmod): now returns modulo, not remainder.
+
+ * numeric.c (flodivmod): ditto.
+
+ * bignum.c (bigdivmod): ditto.
+
+ * numeric.c (num_modulo): new method; alias to '%'.
+
+Thu Jul 6 00:51:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/win32.c (NtCmdGlob): patterns should be separated and
+ NUL terminated.
+
+Wed Jul 5 22:27:56 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * cygwin/GNUmakefile: use ruby.def to make rubycw.dll.
+
+ * ext/extmk.rb.in: create target.def.
+
+ * lib/mkmf.rb: ditto.
+
+Wed Jul 5 09:47:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_arg): Time::local, Time::gm now take 7th optional
+ argument for usec.
+
+ * numeric.c (num_ceil, etc): default ceil, floor, round, truncate
+ implementation for Numeric, using `to_f'.
+
+ * io.c (rb_io_reopen): clear fptr->path after free() to prevent
+ potential GC crash.
+
+ * io.c (rb_file_s_open): terminate fptr unless null.
+
+ * io.c (rb_file_initialize): ditto.
+
+ * lib/tempfile.rb: specify FILE::CREAT|File::EXCL to open for
+ better security.
+
+ * numeric.c (flo_truncate): new method.
+
+Wed Jul 5 01:02:53 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb.in: join ' ' -> join(' ').
+
+ * lib/mkmf.rb: ditto.
+
+Tue Jul 4 13:51:29 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/dbm/dbm.c: add methods added to Hash in 1.5.x.
+
+ * ext/gdbm/gdbm.c: ditto.
+
+ * ext/sdbm/init.c: ditto.
+
+ * eval.c (proc_call): args may be Qundef (means no argument), do
+ not call TYPE() for args.
+
+Tue Jul 4 13:20:56 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb.in: make command line must be single-quoted.
+ $(RUBY_INSTALL_NAME) is command substitution in the POSIX sh.
+
+Tue Jul 4 13:16:02 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * util.c (rb_type): should add T_UNDEF.
+
+Tue Jul 4 09:30:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (here_document): supports EOF right after terminator.
+
+ * random.c (rb_f_rand): argument is now optional (rand(max=0)).
+
+Tue Jul 4 01:50:49 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/ruby.def: remove ruby_mktemp.
+
+Tue Jul 4 01:27:13 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_rescue2): new function to rescue arbitrary exception.
+
+ * numeric.c (do_coerce): should catch NameError explicitly.
+
+Tue Jul 4 00:15:23 2000 Dave Thomas <Dave@thomases.com>
+
+ * numeric.c (Init_Numeric): forgot to register Numeric#remainder.
+
+Mon Jul 3 23:46:56 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (myselect, myaccept): disable interrupt while
+ executing accept() or select() to avoid Ctrl-C causes
+ "unknown software exception (0xc0000029)".
+
+Mon Jul 3 18:35:41 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * lib/mkmf.rb: use null device if it exists for cross-compiling.
+
+Mon Jul 3 18:19:51 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.26.
+
+ * lib/net/protocol.rb (finish): do nothing unless active.
+
+ * lib/net/http.rb: HTTP#{get,post}2 again (for new impl).
+
+Mon Jul 3 16:47:22 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * cygwin/GNUmakefile: librubys.a -> lib$(RUBY_INSTALL_NAME)s.a
+
+ * configure.in: use AC_CANONICAL_{HOST,TARGET,BUILD}.
+
+Mon Jul 3 13:15:02 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (fix_divmod): x * d + m = y where d, m = x.divmod(y).
+
+ * bignum.c (rb_big_divmod): ditto.
+
+ * numeric.c (fixdivmod): does not depend C's undefined %
+ behavior. adopt to fmod(3m) behavior.
+
+ * numeric.c (flo_mod): modulo now reserves fmod(3m) behavior.
+
+ * numeric.c (num_remainder): 'deprecated' warning.
+
+Mon Jul 3 10:27:28 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: use AC_CANONICAL_SYSTEM.
+
+Sun Jul 2 21:17:37 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: support without --enable-shared for cygwin/mingw32.
+
+ * cygwin/GNUmakefile: ditto.
+
+ * ext/extmk.rb.in: use null device if it exists for cross-compiling.
+
+ * lib/mkmf.rb: ditto.
+
+ * util.c (ruby_mktemp): remove unused ruby_mktemp().
+
+Sun Jul 2 14:18:04 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * eval.c (TMP_PROTECT_END): tmp__protect_tmp may be NULL.
+
+Sun Jul 2 03:37:50 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.25.
+
+ * lib/net/protocol.rb (each_crlf_line): beg = 0 is needed in adding{}
+
+ * lib/net/smtp.rb: allow String for to_addr of SMTP#sendmail
+
+Sat Jul 1 15:22:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (fix_rshift): should handle shift value more than
+ sizeof(long).
+
+Sat Jul 1 15:22:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): the value from RTEST() is not valid Ruby
+ object. result should be either true or false.
+
+Sat Jul 1 09:30:06 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * re.c (rb_reg_initialize): was freeing invalid pointer.
+
+Sat Jul 1 03:25:56 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (call_args): command_call can be the last argument of
+ call_args. It had to be the only argument.
+
+ * re.c (rb_reg_s_quote): should not dump core even for unsane mbc
+ string.
+
+Fri Jun 30 01:36:20 2000 Aleksi Niemela <aleksi.niemela@cinnober.com>
+
+ * parse.y (f_norm_arg): better, nicer error message.
+
+Thu Jun 29 07:45:33 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (udp_send): destination may be packed
+ struct sockaddr.
+
+ * object.c (rb_Integer): Integer(nil) should be invalid, on the
+ other hand, nil.to_i is OK.
+
+Wed Jun 28 17:26:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (ip_recvfrom): udp_recvfrom and tcp_recvfrom
+ is merged and moved to IPSocket#recvfrom.
+
+ * ext/socket/socket.c (sock_s_getaddrinfo): family can be a
+ strings such as "AF_INET" etc.
+
+ * ruby.c (require_libraries): . and RUBYLIB added to $load_path
+ just before -r procedure.
+
+ * ruby.c (proc_options): -e, - did not exec -r.
+
+Wed Jun 28 14:52:28 2000 Koga Youichirou <y-koga@mms.mt.nec.co.jp>
+
+ * config.sub: NetBSD/hpcmips support.
+
+Wed Jun 28 10:11:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c: gc trigger threshold changed; GC_NEWOBJ_LIMIT removed,
+ FREE_MIN is increased to 4096.
+
+Tue Jun 27 22:39:28 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.24.
+
+ * lib/net/protocol.rb: modified each_crlf_line again.
+
+ * lib/net/protocol.rb: do_write_beg,do_write_end -> writing{}
+ do_write_do -> do_write
+
+ * lib/net/http.rb: can make proxy connection by passing
+ addresses to HTTP.new, start.
+
+ * lib/net/http.rb: HTTP.new_implementation, old_implementation:
+ can use 1.2 implementation of head, get, post, put.
+ (see document)
+
+Tue Jun 27 12:05:10 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32.c (myfdclr): new function.
+
+ * win32.h: add FD_CLR.
+
+Mon Jun 26 23:41:41 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ruby.h: add cast for ANSI style.
+
+ * gc.c (rb_data_object_alloc): use RUBY_DATA_FUNC.
+
+Mon Jun 26 22:20:03 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (is_socket, extract_file_fd): New function.
+
+ * win32/win32.c (myfdopen): use is_socket().
+
+ * win32/win32.c (myselect): return non socket files immediately
+ if file and socket handles are mixed.
+
+Mon Jun 26 16:21:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_schedule): wait_for cleared too early.
+
+Mon Jun 26 09:15:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c: remove obsolete 'F', 'D' specifiers.
+
+Sun Jun 25 00:55:03 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/socket.c (sock_s_getnameinfo): `res' would not
+ be assigned if TYPE(sa) == T_STRING.
+
+Sat Jun 24 14:36:29 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * config*.dj, configure.bat, top.sed: move to djgpp/.
+
+Sat Jun 24 02:34:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (load_file): call require_libraries() here to let
+ debug.rb work properly.
+
+Fri Jun 23 22:34:51 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * bignum.c (rb_big_lshift): reorder xds assignment to avoid
+ reusing `x' as `len' by VC++ 6.0 SP3 compiler with -Ox switch.
+
+Fri Jun 23 01:11:27 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_substr): should return empty string (""),
+ if beg == str.size and len == zero, mostly for convenience and
+ backward compatibility.
+
+ * parse.y (new_super): should tweak block_pass node for super too.
+
+ * string.c (rb_str_split_m): last split element should not be nil,
+ but "" when limit is specified.
+
+Thu Jun 22 17:27:46 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_substr): str[n,m] now returns nil when n equals
+ to str.size.
+
+Thu Jun 22 13:49:02 2000 Uechi Yasumasa <uechi@ryucom.ne.jp>
+
+ * lib/net/ftp.rb: support resuming.
+
+Thu Jun 22 13:37:19 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * eval.c (rb_thread_sleep_forever): merge pause() macro.
+
+Wed Jun 21 08:49:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): should not raise exception just by defining
+ singleton class.
+
+Wed Jun 21 01:18:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h: two macros RUBY_DATA_FUNC and RUBY_METHOD_FUNC are added
+ to make writing C++ extensions easier.
+
+ * array.c (rb_ary_dup): internal classes should not be shared by dup.
+
+ * hash.c (rb_hash_dup): ditto.
+
+ * object.c (rb_obj_dup): ditto.
+
+ * string.c (rb_str_dup): ditto.
+
+ * error.c (Init_Exception): renamed NotImplementError to
+ NotImplementedError.
+
+Tue Jun 20 16:22:38 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (make_time_t): bug in DST boundary.
+
+Tue Jun 20 10:54:19 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: add eval sitedir.
+
+Tue Jun 20 06:14:43 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: change: version syntax. old: x.yz, now: x.y.z
+
+ * lib/net/telnet.rb: ditto.
+
+Tue Jun 20 00:37:45 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_kcode_m): Regexp#kcode returns nil for code unfixed
+ regexp object.
+
+ * bignum.c (bigdivmod): bignum zero check was wrong.
+
+Mon Jun 19 10:48:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_cvar_set): forgot to add security check for class
+ variable assignment.
+
+Sun Jun 18 22:49:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: single quoted sitedir.
+
+ * mkconfig.rb: add DESTDIR for cross-compiling.
+
+ * lib/mkmf.rb: add DESTDIR.
+
+ * ruby.c (load_file): force binmode if fname includes ".exe"
+ on DOSISH.
+
+Sat Jun 17 23:22:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (rb_f_sprintf): should ignore negative precision given
+ by <%.*>.
+
+ * sprintf.c (rb_f_sprintf): should allow zero precision.
+
+Sat Jun 17 03:13:29 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_localtime): avoid unnecessary call of localtime.
+
+ * time.c (time_gmtime): avoid unnecessary call of gmtime.
+
+ * process.c (proc_wait2): new method.
+
+ * process.c (proc_waitpid): second argument made optional.
+
+ * process.c (proc_waitpid2): new method.
+
+Sat Jun 17 00:05:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_clone): should initialize member fields.
+
+Fri Jun 16 22:49:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_rewind): set lineno to zero.
+
+Fri Jun 16 22:47:47 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.23.
+
+ * lib/net/protocol.rb: too many CRLF in last line.
+
+Fri Jun 16 21:23:59 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: add pause(2) checking.
+
+ * eval.c: define pause() if missing.
+
+Fri Jun 16 18:41:58 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * process.c (proc_setsid): BSD-style setpgrp() don't return
+ process group ID, but 0 or -1.
+
+Fri Jun 16 16:23:35 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * file.c (rb_stat_inspect): gives detailed information;
+ compatibility with ruby-1.4.x.
+
+Fri Jun 16 05:18:45 2000 Yasuhiro Fukuma <yasuf@bsdclub.org>
+
+ * configure.in: FreeBSD: do not link dummy libxpg4 which was
+ merged into libc.
+
+Fri Jun 16 03:17:36 2000 Satoshi Nojo <nojo@t-samukawa.or.jp>
+
+ * ext/dbm/dbm.c (fdbm_length): use GetDBM. empty?, [] too.
+
+ * ext/gdbm/gdbm.c (fgdbm_length): ditto.
+
+ * ext/sdbm/init.c (fsdbm_length): ditto.
+
+Fri Jun 16 01:57:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_sleep_forever): pause(2) instead of sleep(3).
+
+Thu Jun 15 10:46:36 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_sub_bang): should propagate taintness from
+ replacement string.
+
+Wed Jun 14 17:01:41 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * rubytest.rb: add CONFIG['EXEEXT'] to the executable file name.
+
+Wed Jun 14 14:50:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_f_sub): assign to $_ only if modification happens.
+
+ * string.c (rb_f_gsub): ditto.
+
+ * string.c (rb_f_chop): ditto.
+
+ * string.c (rb_f_chomp): ditto.
+
+ * io.c (io_reopen): preserve file position by ftell/fseek, if io
+ is a seekable.
+
+ * eval.c (method_arity): wrong arity number for the methods with
+ optional arguments.
+
+ * time.c (make_time_t): opposite timezone shift (should be negative).
+
+Wed Jun 14 14:07:38 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c: typo(ig/if).
+
+ * re.c: typo(re/reg). add rb_reg_check().
+
+ * time.c: remove unneeded declare(daylight, timezone).
+
+ * configure.in: add include <time.h> when daylight checking.
+
+Wed Jun 14 11:36:52 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * marshal.c (r_object): modified for symbols.
+
+ * marshal.c (w_object): ditto.
+
+Wed Jun 14 10:04:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_memcmp): should compare according to ruby_ignorecase.
+
+ * string.c (rb_str_cmp): use rb_memcmp.
+
+ * string.c (rb_str_index): ditto.
+
+ * string.c (rb_str_rindex): ditto.
+
+ * string.c (rb_str_each_line): ditto.
+
+Wed Jun 14 04:58:53 2000 Dave Thomas <dave@thomases.com>
+
+ * io.c (rb_io_set_lineno): should have returned VALUE, not
+ integer.
+
+Wed Jun 14 09:29:42 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_dup): dup should always propagate taintness.
+
+Wed Jun 14 00:50:14 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: read_multipart(): if no content body then raise EOFError.
+
+Tue Jun 13 11:46:17 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * process.c (proc_setsid): try implement it using setpgrp() and
+ ioctl(fd, TIOCNOTTY, NULL).
+
+ * re.c (rb_reg_prepare_re): magic variable $= should affect regex
+ pattern match.
+
+ * time.c (make_time_t): use tm.tm_gmtoff if possible.
+
+ * time.c (time_zone): use tm.tm_zone if available.
+
+Tue Jun 13 01:50:57 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.22.
+
+ * lib/net/http.rb: HTTPResponse#body returns body.
+
+Mon Jun 12 23:41:54 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in (daylight): avoid GCC optimization.
+
+Mon Jun 12 19:02:27 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: cygwin has strange timezone.
+
+ * time.c (time_zone): use tzname and daylight.
+
+Sat Jun 10 23:10:32 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_seek): whence is optional, default is SEEK_SET.
+
+Fri Jun 9 17:00:29 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.21.
+
+ * lib/net/http.rb: exception is raised with response object.
+
+Fri Jun 9 15:11:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (make_time_t): supports daylight saving time.
+
+ * eval.c (rb_thread_safe_level): should retrieve current $SAFE
+ value if a thread is the current thread.
+
+Thu Jun 8 14:25:45 2000 Hiroshi Igarashi <iga@ruby-lang.org>
+
+ * lib/mkmf.rb: add target `distclean' in Makefile for extlib.
+ target `clean' doesn't remove Makefile.
+
+Thu Jun 8 13:34:03 2000 Dave Thomas <dave@thomases.com>
+
+ * numeric.c: add nan?, infinite?, and finite? to Float
+
+Thu Jun 8 00:31:04 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * regex.h: export re_mbctab properly on cygwin.
+
+ * dln.c: use dlopen instead of LoadLibrary on cygwin.
+
+Thu Jun 8 13:41:34 2000 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * file.c (rb_file_s_basename): might dump core.
+
+Tue Jun 6 03:29:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (dir_foreach): now returns nil for consistency.
+
+ * bignum.c (bigdivmod): modulo by small numbers was wrong.
+
+Mon Jun 5 00:18:08 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * bignum.c: avoid conflict with USHORT on mingw32.
+
+Mon Jun 5 00:13:35 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * eval.c (rb_thread_schedule): =/== typo.
+
+Sun Jun 4 03:17:36 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: improve: CGI::pretty()
+
+Sun Jun 4 02:01:10 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * lib/mkmf.rb: do not need to add -L$(topdir) in --enable-shared case.
+
+Sat Jun 3 13:50:06 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (rb_id2name): should support constant attrset
+ identifiers.
+
+ * bignum.c (rb_big_eq): Bignum#== should not raise exception.
+
+Fri Jun 2 11:24:48 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_popen): open with a block returns the value from the
+ block. old behavior was back.
+
+Fri Jun 2 00:42:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+
+ * eval.c (rb_thread_cleanup): should clear priority for thread
+ termination.
+
+Thu Jun 1 22:39:41 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.20.
+
+ * lib/net/http.rb: wrongly closed the socket twice
+ when no Content-Length: was given.
+
+Thu Jun 1 00:59:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_yield_0): convert Qundef to [].
+
+Wed May 31 20:45:59 2000 Dave Thomas <Dave@Thomases.com>
+
+ * string.c (rb_str_slice_bang): wrong argument number.
+
+Wed May 31 12:37:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_exec_end_proc): print error message from END procs.
+
+Wed May 31 04:06:41 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: change: CGI#out() if "HEAD" == REQUEST_METHOD then
+ output only HTTP header.
+
+Wed May 31 01:54:21 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_schedule): set main_thread->status to
+ THREAD_TO_KILL, before raising deadlock error.
+
+ * eval.c (rb_thread_deadlock): if curr_thread == main_thread, do
+ not call rb_thread_restore_context()
+
+Tue May 30 23:33:41 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * lib/mkmf.rb (create_makefile): add $(TARGET).ilk and *.pdb
+ to cleanup files for mswin32.
+
+Mon May 29 10:41:10 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_file_s_basename): should propagate taintness.
+
+Sun May 28 21:37:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * eval.c: bug fix: DLEXT2.
+
+Sun May 28 19:21:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * win32/win32.c: use ruby's glob.
+
+ * dir.c: "glob" exported and renamed to "rb_glob".
+
+ * ruby.h: ditto.
+
+ * main.c: turn off command line mingw32's globbing.
+
+Wed May 25 22:25:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/extmk.rb.in: use "ftools" instead of "rm -f".
+
+ * lib/mkmf.rb: ditto.
+
+Thu May 25 22:01:32 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * defines.h: mswin32: remove obsolete USHORT definition.
+
+ * re.h: mswin32: use EXTERN instead of extern.
+
+ * regex.h: mswin32: export re_mbctab properly.
+
+ * win32/ruby.def: add ruby_ignorecase and regex.c's exports.
+
+Thu May 25 21:28:44 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * re.c (rb_reg_expr_str): escape un-printable character.
+
+Thu May 25 01:35:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (tokadd_escape): forgot to add `\x' to hexadecimal
+ escape sequences.
+
+ * object.c (rb_obj_dup): dup for normal object (T_OBJECT) copies
+ instance variables only.
+
+Wed May 24 23:49:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_mod_initialize): should provide initialize.
+
+Wed May 24 23:17:50 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/Makefile: remove unnecessary mv and rm command call.
+
+Wed May 24 21:01:04 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/pty/pty.c: use "" instead of <> to include ruby.h and rubyio.h
+ for BeOS (PowerPC).
+
+ * file.c (rb_find_file): should check dln_find_file() result.
+
+ * win32/ruby.def: add rb_block_given_p.
+
+Wed May 24 16:32:45 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_popen): popen does not take 3rd argument anymore.
+
+ * re.c (rb_reg_desc): re may be zero, check before dereferencing.
+
+Wed May 24 16:03:06 2000 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/cgi.rb: bug fix: CGI::escape(), CGI::Cookie::new()
+
+ * lib/net/telnet.rb: improve: binmode(), telnetmode() interface
+
+Wed May 24 13:12:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * misc/ruby-mode.el (ruby-parse-region): support `while .. do'
+ etc. But corresponding keywords must be at the beginning of
+ line.
+
+Tue May 23 23:50:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_initialize_m): wrong kcode value.
+
+ * re.c (rb_reg_s_new): forgot to initialize re->ptr.
+
+Tue May 23 08:36:24 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): forgot to restore old option
+ status by (?ix-ix).
+
+ * regex.c (re_compile_fastmap): anychar may match newline if
+ RE_OPTION_MULTILINE or RE_OPTION_POSIXLINE is set.
+
+Mon May 22 22:45:06 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.19.
+
+ * lib/net/http.rb: do not use Regexp "p" option.
+
+Mon May 22 21:56:43 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * struct.c (rb_struct_getmember): should use ID2SYM, not INT2NUM.
+
+Mon May 22 15:07:37 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (rb_find_file): should check if the file really exists.
+
+Mon May 22 09:08:12 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_popen): _exit(0) after processing block under the
+ child process.
+
+ * io.c (rb_io_popen): flush stdout/stderr before subprocess
+ termination.
+
+ * eval.c (rb_check_safe_str): insert rb_secure(4); operation
+ requires untainted string should be prohibited in level 4.
+
+Sun May 21 21:17:00 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: add Setup.dj for djgpp cross-compiling.
+
+ * Setup.dj: add readline.
+
+ * instruby.rb: copy win32/win32.h to archlibdir on mingw32.
+
+Sun May 21 20:58:08 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * pack.c: fix OFF16 and OFF32 definitions for Alpha and IRIX64.
+
+Sun May 21 17:31:37 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * instruby.rb: support "make install" for cross-compiling.
+
+ * ext/extmk.rb.in: ditto.
+
+Sun May 21 14:22:49 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * Makefile.in: rename prep.rb to fake.rb.
+
+ * configure.in: ditto.
+
+Sat May 20 23:29:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (dir_s_new): does not take block; "open" does.
+
+ * io.c (rb_io_s_new): ditto.
+
+Fri May 19 07:44:26 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (dir_s_open): Dir#open does not returns closed Dir if a
+ block is given to the method.
+
+ * re.c (rb_reg_initialize_m): Regexp::new calls initialize now.
+
+ * string.c (Init_String): String#delete_at removed.
+
+ * string.c (rb_str_aset_m): should have checked argc != 2.
+
+ * eval.c (rb_thread_schedule): select(2) was called too many.
+
+ * regex.c (re_compile_pattern): a bug in (?m) support. Pointed
+ out by Dave Thomas <Dave@thomases.com>.
+
+Thu May 18 23:55:26 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * dln.c (search_undef): st_lookup()'s 3rd parameter should be
+ a pointer of the variable which has the same size and alignment
+ as `char *'.
+
+ * marshal.c (w_symbol, w_object): ditto.
+
+ * parse.y (rb_intern): ditto.
+
+Thu May 18 18:00:35 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.18.
+
+ * lib/net/protocol.rb: Net::Version was removed.
+
+ * lib/net/smtp.rb: use Socket.gethostname to get local host name.
+
+Thu May 18 13:34:57 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (ruby_connect): should not have replaced
+ thread_write_select() by rb_thread_fd_writable().
+
+Thu May 18 09:01:25 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * configure.in, ext/extmk.rb.in, lib/mkmf.rb: remove BeOS R3 support.
+ Make a shared library (libruby.so) only if the --enable-shared
+ option is specified.
+
+ * instruby.rb: no longer use libruby.so.LIB and import.h.
+
+ * io.c: fix READ_DATA_PENDING definition for BeOS (PowerPC).
+
+Wed May 17 14:14:23 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_new_1): use /m instead of /p.
+
+Wed May 17 02:22:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_polling): wait 0.06 second to let other
+ processes run.
+
+ * process.c (rb_waitpid): avoid busy wait using rb_thread_polling.
+
+ * file.c (rb_thread_flock): ditto.
+
+ * parse.y (expr): avoid calling value_expr() twice.
+
+Wed May 17 00:45:57 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c (rb_io_binmode): should check PLATFORMs, not O_BINARY, sigh...
+
+Wed May 17 00:40:15 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/config.h: add DLEXT2, now DLEXT on mswin32 is "so".
+
+ * win32/config.status: ditto.
+
+ * win32/ruby.def: add symbol "rb_big_divmod".
+
+Tue May 16 19:45:32 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * intern.h: use EXTERN instead of extern.
+
+ * win32/ruby.def: add rb_defout, rb_stdout, ruby_errinfo,
+ ruby_sourceline, ruby_sourcefile to work with eruby
+ reported by Hiroshi Saito <HiroshiSaito@pob.org>.
+ Export both ruby_xmalloc and xmalloc etc.
+
+Tue May 16 17:00:05 2000 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * eval.c (rb_thread_select): should check whether fds are null.
+
+Tue May 16 11:51:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (pipe_open): synchronize subprocess stdout/stderr.
+
+Mon May 15 15:38:09 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h: exported symbols should be for xmalloc etc. are now
+ prefixed by 'ruby_', e.g. ruby_xmalloc().
+
+ * eval.c (rb_thread_select): remove busy wait for select.
+
+ * dir.c (glob): trailing path may be null, e.g. glob("**").
+
+Mon May 15 14:48:41 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * io.c (rb_io_pid): new method; returns nil if no process attached
+ to the IO.
+
+Mon May 15 01:18:20 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_s_popen): _exit after Proc execution.
+
+Sun May 14 18:05:59 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * Makefile.in: missing/nt.c -> win32/win32.c
+
+ * configure.in: bug fix; static linking on mingw32.
+
+ * cygwin/GNUmakefile.in: remove VPATH.
+
+ * ext/extmk.rb.in: Makefile set binmode with mingw32 on cygwin32.
+
+ * lib/mkmf.rb: ditto.
+
+ * win32/config.h: undef HAVE_SYS_FILE_H.
+
+Sun May 14 02:02:48 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * lib/irb/ruby-lex.rb: '/' should be escaped in character class.
+
+Sun May 14 00:54:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in, ...: support mingw32.
+
+ * defines.h: ditto. undef EXTERN for tcl/tk on cygwin.
+
+ * ext/*/extconf.rb: replace PLATFORM with RUBY_PLATFORM.
+
+ * ext/socket/sockport.h: define IN_MULTICAST for missing IN_MULTICAST.
+
+ * ext/tcltklib/tcltklib.c: remove declaration of rb_argv0.
+
+ * file.c: should check S_IXGRP, S_ISGID, not NT.
+
+ * io.c (rb_io_binmode): should check _IOBIN, O_BINARY, not PLATFORMs.
+
+Sat May 13 14:21:15 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * io.c (rb_io_s_popen): should check whether a block is given.
+
+Fri May 12 17:33:44 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): charset_not should not exclude
+ newline from matching set.
+
+Thu May 11 22:51:05 2000 Ryunosuke Ohshima <ryu@jaist.ac.jp>
+
+ * pack.c (pack_pack): Bignum support.
+
+ * pack.c (pack_unpack): ditto.
+
+Thu May 11 21:19:29 2000 Hiroshi Igarashi <iga@ruby-lang.org>
+
+ * intern.h: add missing declarations of ruby API functions.
+
+ * ruby.h: fix function name in declarations.
+
+Thu May 11 22:29:25 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/md5/depend: add $(topdir)/config.h dependency to md5c.o.
+
+ * ext/md5/extconf.rb: new file to add -DHAVE_CONFIG_H flag for Alpha.
+
+Thu May 11 10:55:52 2000 Ryunosuke Ohshima <ryu@jaist.ac.jp>
+
+ * pack.c (pack_pack): packing BER compressed integer by `w'.
+
+ * pack.c (pack_unpack): unpacking BER.
+
+Thu May 11 00:37:55 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_regx): remove in_brack.
+
+Wed May 10 12:51:18 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (proc_options): move adding RUBYLIB and "." to the load
+ path after #! line parsing.
+
+ * parse.y (parse_regx): should parse backslash escape like `\c['
+ here to avoid causing `unterminated regexp' error.
+
+Wed May 10 00:19:53 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * MANIFEST, beos/GNUmakefile.in, configure.in: no longer need
+ beos/GNUmakefile.in to support BeOS R4.5.2 (Intel) as a result
+ of eban's Makefile.in change.
+
+ * io.c: NOFILE is already defined on BeOS R4.5 (Intel) or later.
+
+ * lib/matrix.rb: remove debug print.
+
+ * regex.c: don't use nested comment.
+
+Tue May 9 17:08:43 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (massign): no longer convert nil into empty array.
+
+ * io.c (rb_io_s_popen): optional 3rd argument to give proc, which
+ will be executed in spawned child process.
+
+Mon May 8 23:47:39 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (rb_callcc): prev & next should be initialized to zero.
+
+Mon May 8 23:17:36 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dln.c (dln_init): remove possible buffer overrun. This is
+ suggested by Aleksi Niemela <aleksi.niemela@cinnober.com>.
+
+ * dln.c (init_funcname): ditto.
+
+Sat May 6 23:35:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (lhs): should allow `obj.Attr = 5' type expression.
+
+Sat May 6 15:46:08 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/socket/extconf.rb: add a new configure option to force use
+ of the WIDE Project's getaddrinfo(): --enbale-wide-getaddrinfo.
+
+Fri May 5 21:19:22 2000 MOROHOSHI Akihiko <moro@remus.dti.ne.jp>
+
+ * parse.y (yylex): allow '$1foo' and such.
+
+Fri May 5 17:57:24 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.17.
+
+ * lib/net/http.rb: write also port number in Host: field.
+
+ * lib/net/http.rb: see Proxy-Connection: to decide socket connection.
+
+Fri May 5 03:25:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_fastmap): charset_not for multibyte
+ characters excluded too many characters.
+
+Tue May 2 13:23:43 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_schedule): little bit more impartial context
+ switching.
+
+Tue May 2 09:50:03 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * configure.in: add DLDLIBS to set platform specific library
+ for extensions.
+
+ * ext/extmk.rb.in: use @DLDLIBS@ instead of RUBY_PLATFORM choice.
+
+ * lib/mkmf.rb: use CONFIG["DLDLIBS"] instead of RUBY_PLATFORM choice.
+
+ * config_s.dj: add @DLDLIBS@.
+
+ * win32/config.status: ditto.
+
+ * win32/ruby.def: regular maintenance.
+
+Mon May 1 23:42:44 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in, eval.c: add DLEXT2. now DLEXT on Cygwin is "so".
+
+ * defines.h: use dllimport, dllexport for Cygwin 1.1.x.
+
+ * ruby.h: ditto.
+
+ * cygwin/GNUmakefile.in: ditto.
+
+ * ext/Win32API/Win32API.c: directly "call" in asm statement for
+ gcc 2.95.x or newer.
+
+Sat Apr 29 04:58:12 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_ary_unshift_m): performance improvement.
+
+Fri Apr 28 00:19:22 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_ary_unshift_m): takes items to push.
+
+Wed Apr 26 15:23:02 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_succ): insert carrying character just before
+ the leftmost alpha numeric character.
+
+ * string.c (rb_str_succ): proper behavior for "".succ and "\377".succ.
+
+ * string.c (rb_str_succ): use realloc and memmove.
+
+Tue Apr 25 18:28:45 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.16.
+
+ * lib/net/smtp.rb: add SMTP AUTH
+
+Tue Apr 25 14:30:13 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_gets_internal): shortcut when rs == rb_default_rs.
+
+Sat Apr 22 23:14:41 2000 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * configure.in: MacOS X support.
+
+Sat Apr 22 16:37:10 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.15.
+
+ * lib/net/http.rb: closing socket by watching both
+ user header and server response
+
+Fri Apr 21 21:44:34 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c (rb_io_s_pipe): should set FMODE_SYNC.
+
+Thu Apr 20 16:59:22 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (massign): `*lvalue = false' should assign `[false]' to
+ lvalue.
+
+Wed Apr 19 08:35:08 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (rb_singleton_class): generate singleton class for
+ special constants: nil, true, false.
+
+Wed Apr 19 02:09:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (rb_singleton_class): singleton method for nil, true,
+ false is possible now.
+
+ * eval.c (rb_eval): ditto.
+
+Tue Apr 18 18:54:25 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.14.
+
+ * lib/net/http.rb: new method HTTP#head2.
+
+ * lib/net/http.rb: get2/post2 does not raise exceptions.
+
+Mon Apr 17 15:16:31 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_close): to detect some exceptional status, writable
+ IO should be flushed before close;
+
+Sat Apr 15 18:29:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_collect_bang): Array#filter renamed.
+
+Fri Apr 14 19:47:11 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.13.
+
+ * lib/net/pop.rb: accept illegal timestamp
+
+ * lib/net/http.rb: when body was chunked, does not set Content-Length:
+
+Tue Apr 11 21:14:42 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * config_s.dj: add @sitedir@.
+ * configure.in: add --with-sitedir=DIR option.
+ * instruby.rb: use CONFIG["sitedir"].
+ * lib/mkmf.rb: support 'make site-install'.
+ * win32/config.status: add @sitedir@.
+
+Tue Apr 11 16:25:15 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (rb_big_2comp): unnecessary lvalue cast removed.
+
+Tue Apr 11 02:25:53 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (env_fetch): new method.
+
+ * marshal.c (marshal_dump): accepts depth = nil for unlimited depth.
+
+Sun Apr 9 20:49:19 2000 Dave Thomas <Dave@Thomases.com>
+
+ * parse.y (str_extend): Allow class variables to be expanded.
+
+Fri Apr 7 02:03:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (rb_sys_fail): escape non-printable characters.
+
+Thu Apr 6 20:10:47 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/extmk.rb.in (create_makefile): BeOS --program-suffix support.
+ * lib/mkmf.rb (create_makefile): ditto.
+
+Thu Apr 6 09:55:26 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * error.c (rb_sys_fail): need rb_exc_new2() call on BeOS.
+
+Mon Apr 3 17:22:27 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_reopen): support tempfile.
+
+ * eval.c (catch_i): should supply argument.
+
+Sat Apr 1 22:50:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (r_object): wrong symbol restoration.
+
+Sat Apr 1 21:30:53 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c (rb_io_printf, rb_f_printf): should use rb_io_write.
+
+Sat Apr 1 00:16:05 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): should be clear flags
+ before calling finalizers.
+
+ * eval.c (specific_eval): can be called without SecurityError, if
+ $SAFE >= 4.
+
+ * object.c (sym_inspect): inspect gives ":sym", to_s gives "sym".
+
+Fri Mar 31 22:07:04 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.12.
+
+ * lib/net/protocol.rb: update Net::Protocol::Proxy#connect
+
+ * lib/net/protocol.rb: ReplyCode is not a class
+
+ * lib/net/http.rb: header value format was change:
+ values do not include header name
+
+ * lib/net/http.rb: header is not a Hash, but HTTPResponse
+
+Thu Mar 30 12:19:44 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * enum.c (enum_find): rb_eval_cmd() should be called with array.
+
+Tue Mar 28 13:57:05 2000 Clemens Hintze <c.hintze@gmx.net>
+
+ * ext/dbm/dbm.c (fdbm_invert): should return new hash.
+
+ * ext/gdbm/gdbm.c (fgdbm_invert): ditto.
+
+Tue Mar 28 00:58:03 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.11.
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: does not
+ dispatch any commands while dispatching command.
+
+ * lib/net/protocol.rb: failed to get error class of
+ inherited ReplyCode
+
+ * lib/net/http.rb: change feature of "get2", "post2"
+
+Mon Mar 27 01:34:58 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.10.
+
+ * lib/net/http.rb: return value of 'head' was wrong.
+
+Sun Mar 26 17:47:35 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.9.
+
+ * lib/net/smtp.rb: SMTP#do_ready wrongly took no arguments
+
+Sat Mar 25 23:21:10 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (w_object): symbols should be converted to ID before
+ dumping out.
+
+Fri Mar 24 18:26:51 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (test_check): should have checked exact number of arguments.
+
+Fri Mar 24 21:02:11 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * signal.c (trap): should treat some symbols as the signal.
+
+Fri Mar 24 06:58:03 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.8.
+
+ * lib/net/http.rb: post, get2, post2, get_body
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: separate
+ Command/Socket documentation.
+
+Thu Mar 23 02:26:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_fptr_finalize): fptr may be null.
+
+ * io.c (rb_io_s_new): now calls `initialize'.
+
+ * io.c (rb_io_initialize): actual open done in this method.
+
+ * io.c (rb_file_initialize): ditto.
+
+ * eval.c (rb_eval): class variables in singleton class definition
+ is now handled properly (I hope).
+
+Wed Mar 22 21:49:36 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * st.c (st_delete_safe): skip already deleted entry.
+
+ * hash.c (rb_hash_delete): modify brace miss.
+
+Wed Mar 22 08:53:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (exec_under): do not push cbase if ruby_cbase == under.
+
+ * node.h (NEW_CREF0): preserve cbase nesting.
+
+Tue Mar 21 12:57:50 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_class_s_new): Class::new should call `inherited'.
+
+Sat Mar 18 12:36:09 2000 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * eval.c (rb_backtrace, make_backtrace): removed unused variable
+ `lev'.
+
+ * eval.c (rb_attr): calls `method_added' at attribute definition.
+
+ * eval.c (rb_mod_modfunc): calls `singleton_method_added' while
+ `module_function'.
+
+ * eval.c (rb_eval): parameter to `method_added' and
+ `singleton_method_added' is Symbol.
+
+ * eval.c (Init_eval): caches IDs for `method_added' and
+ `singleton_method_added'.
+
+Sat Mar 18 11:25:10 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (rescue): allows `rescue Error in foo'. experimental.
+ which is better this or preparing alias `exception' for `$!'?
+
+Fri Mar 17 15:02:45 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_autoload_id): defining new autoload should be
+ prohibited for $SAFE > 4.
+
+ * variable.c (rb_autoload_load): autoload should be possible for
+ $SAFE > 4.
+
+ * eval.c (call_trace_func): should handle T_ICLASS properly.
+
+Fri Mar 17 14:34:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_gsub): forgot to initialize str->orig.
+
+Fri Mar 17 01:24:59 2000 Dave Thomas <Dave@thomases.com>
+
+ * string.c (rb_str_clone): forgot to copy str->orig if STR_NO_ORIG
+ is set by Array#pack.
+
+Wed Mar 15 21:25:04 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * array.c (rb_ary_join): 'result' is always duplicated
+ before concat string.
+
+Wed Mar 15 17:26:05 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_hash_s_create): unexpected recursive call removed.
+ this bug was found by Satoshi Nojo <nojo@t-samukawa.or.jp>.
+
+Wed Mar 15 13:12:39 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (Init_Thread): Thread.join removed finally.
+
+ * string.c (rb_str_chomp_bang): forgot to call rb_str_modify().
+
+Mon Mar 13 16:12:13 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (block_pass): distinguish real orphan block and still
+ on-stack block passed by block argument.
+
+Mon Mar 13 00:20:25 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (f_norm_arg): proper error message when constant comes
+ in formal argument list. this message is suggested by Muvaw
+ Pnazte <bugathlon@yahoo.com>.
+
+ * eval.c (rb_f_raise): proper error message when the first
+ argument is not an exception class/object.
+
+ * string.c (rb_str_dup): dup now postpone buffer copy as long as
+ possible. performance improved by lazy copying.
+
+Sun Mar 12 13:58:52 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * signal.c (rb_f_kill): should treat some symbols as the signal.
+
+Sat Mar 11 22:03:03 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_gsub): performance tune by avoiding buffer copy.
+
+ * eval.c (rb_f_missing): check if argv[0] is ID.
+
+Sat Mar 11 15:49:41 2000 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * struct.c (rb_struct_aref): struct aref by symbol.
+
+Sat Mar 11 05:07:11 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * process.c (proc_setpriority): should return 0, not nil.
+
+ * process.c (proc_setpgid): ditto.
+
+Fri Mar 10 18:14:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (path_check_1): confusing buf and path. this bug found
+ by <decoux@moulon.inra.fr>.
+
+Fri Mar 10 09:37:49 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * MANIFEST: add beos/GNUmakefile.in.
+ * configure.in: support BeOS R4.5.2 (Intel).
+ * beos/GNUmakefile.in: new file to support BeOS R4.5.2 (Intel).
+
+Thu Mar 9 11:13:32 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_fastmap): fixed embarrassing brace bug.
+
+Thu Mar 9 01:36:32 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * missing/flock.c: emulate missing flock() with fcntl().
+
+Thu Mar 9 00:29:35 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (sym_to_s): returns ":sym".
+
+ * object.c (sym_id2name): separated from to_s; returns "sym".
+
+Wed Mar 8 19:16:19 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.7.
+
+ * lib/net/http.rb (connecting): returns header
+
+Wed Mar 8 02:08:43 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y: escape expansion too early.
+
+ * string.c (rb_f_scan): Kernel#scan added.
+
+ * regex.c (re_compile_pattern): support \cX et al.
+
+Tue Mar 7 01:44:27 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (set_stdin): simplified procedure, allows $stdin = DATA;
+ experimental.
+
+ * io.c (set_outfile): ditto.
+
+ * re.c (Init_Regexp): new method Regexp#last_match added; it's an
+ alternative for $~.
+
+ * configure.in (DEFAULT_KCODE): KCODE_NONE should be the default.
+
+ * dir.c (dir_s_rmdir): should return 0 on success.
+
+ * signal.c: remove CWGUSI support.
+
+Mon Mar 6 12:28:37 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (w_symbol): support symbol object.
+
+ * util.c: make symbol as separated class.
+
+ * error.c (Init_Exception): new exception RangeError.
+
+ * ext/socket/socket.c (ip_addrsetup): should check length of hostname.
+
+ * ext/socket/socket.c (ip_addrsetup): check newline at the end of
+ hostname. These fixes suggested by Muvaw Pnazte <bugathlon@yahoo.com>.
+
+Sun Mar 5 20:35:45 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): should call
+ LoadLibrary() everytime and should assign the hdll to Win32API
+ object(protect the hdll from GC).
+
+Sun Mar 5 18:49:06 2000 Nakada.Nobuyoshi <nobu.nokada@softhome.net>
+
+ * misc/ruby-mode.el (ruby-parse-region): not treat method `begin'
+ and `end' as reserved words.
+
+ * misc/ruby-mode.el (ruby-font-lock-docs): ignore after `=begin'
+ and `=end'.
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords, hilit-set-mode-patterns):
+ added `yield' to keywords.
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords, hilit-set-mode-patterns):
+ matches keywords at end of buffer.
+
+Sun Mar 5 18:08:53 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.6.
+
+ * lib/net/http.rb: allow to omit 'start'
+
+Tue Feb 29 01:08:26 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * range.c (range_initialize): initialization done in `initialize';
+ `initialize' should not be called more than once.
+
+ * object.c (Init_Object): default `initialize' should take zero
+ argument.
+
+ * time.c (time_s_new): call `initialize' in Time::new.
+
+Sat Feb 26 22:39:31 2000 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * string.c (rb_str_times): fix String#* with huge string.
+
+Sat Feb 26 00:14:59 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (dir_s_new): call `initialize' in Dir::new.
+
+Fri Feb 25 23:01:49 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ruby.h: export ruby_safe_level by EXTERN for mswin32.
+ * win32/ruby.def: regular maintenance.
+
+Fri Feb 25 22:12:46 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_reopen): IO#reopen should accept path as well.
+
+ * string.c (rb_str_s_new): call `initialize' in String::new.
+
+ * hash.c (rb_hash_s_new): call `initialize' in Hash::new.
+
+ * array.c (rb_ary_s_new): call `initialize' in Array::new.
+
+Fri Feb 25 12:50:20 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_start_timer): interval changed to 10ms from 50ms.
+
+Fri Feb 25 06:42:26 2000 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/socket/socket.c (ip_addrsetup): hostp should remain NULL if
+ host is nil.
+
+Thu Feb 24 16:53:47 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_schedule): priority check for sleep expired
+ threads needed.
+
+Wed Feb 23 14:22:32 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_join): forgot to initialize a local variable
+ `taint'.
+
+Tue Feb 22 07:40:55 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (Init_Regexp): renamed to MatchData, old name MatchingData
+ remain as alias.
+
+Tue Feb 22 00:20:21 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.5.
+
+ * lib/net/session.rb: rename to protocol.rb
+
+ * lib/net/protocol.rb: ProtocolSocket -> Net::Socket
+
+ * lib/net/protocol.rb: Net::Socket#write, write_pendstr
+ can take block
+
+ * lib/net/smtp.rb: new methods SMTP#ready SMTPCommand#write_mail
+
+ * lib/net/pop.rb: POPMail#pop can take block
+
+Sat Feb 19 23:58:51 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): pop_loop should not pop at forward jump.
+
+Fri Feb 18 17:15:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (method_clone): method objects are now clonable.
+
+Fri Feb 18 00:27:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_shared_variable_declare): shared variable (aka
+ class/module variable) introduced. prefix `@@'. experimental.
+
+ * class.c (rb_scan_args): new format char '&'.
+
+Thu Feb 17 19:09:05 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (mypopen): don't close handle if it is not assigned.
+ * win32/win32.c (my_open_osfhandle): support O_NOINHERIT flag.
+ * win32/win32.c (win32_getcwd): rename getcwd to win32_getcwd
+ in order to avoid using the C/C++ runtime DLL's getcwd.
+ Use CharNext() to process directory name.
+ * win32/win32.h: map getcwd to win32_getcwd.
+
+Wed Feb 16 00:32:49 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (method_arity): nd_rest is -1 for no rest argument.
+
+ * process.c (proc_waitpid): returns nil when waitpid(2) returns 0.
+
+Tue Feb 15 01:47:00 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * process.c (rb_f_waitpid): pid_t should be signed.
+
+Mon Feb 14 13:59:01 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): yylex yields wrong tokens for `:foo=~expr'.
+
+ * ruby.c (load_file): exit if reading file is empty.
+
+Mon Feb 14 03:34:52 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): `foo.bar=1' should be <foo><.><bar><=><1>,
+ not <foo><.><bar=><1>.
+
+ * eval.c (rb_thread_restore_context): process according to
+ RESTORE_* is moved after longjmp().
+
+ * eval.c (thread_switch): new function to process RESTORE_*.
+
+Sun Feb 13 16:19:49 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ruby.c (require_libraries): don't access freed memory.
+
+ * ruby.c (add_modules): ditto.
+
+Fri Feb 11 12:06:22 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_quotedwords): %w() need to split not only by mere
+ spaces, but by all whitespaces.
+
+Thu Feb 10 02:12:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_index_m): did not support negative offset.
+
+Wed Feb 9 21:54:26 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/getaddrinfo.c: gcc --traditional support.
+ Rearrange headers to work AC_C_CONST.
+ * ext/socket/getnameinfo.c: ditto.
+ * ext/socket/socket.c: mswin32: use double instead of long long.
+
+Wed Feb 9 16:30:41 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (num_coerce): should return [y, x].
+
+Wed Feb 9 11:07:30 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (ruby_prog_init): loadpath structure changed.
+
+Tue Feb 8 02:07:33 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): optimize for \G at top.
+
+ * regex.c (re_compile_pattern): \G introduced.
+
+ * regex.c (re_match): ditto.
+
+ * string.c (str_sub_bang): old behavior restored: bang method
+ returns nil if string not changed.
+
+ * regex.c (re_compile_pattern): support independent subexpression
+ `(?>pattern)'.
+
+ * regex.c (re_match): ditto.
+
+Mon Feb 7 15:51:08 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): now understands interrupts under Ruby.
+
+Mon Feb 7 07:51:52 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_uniq_bang): always return an Array.
+
+ * array.c (rb_ary_compact_bang): ditto.
+
+ * array.c (rb_ary_flatten_bang): ditto.
+
+ * hash.c (rb_hash_reject): returns a Hash, not an Array.
+
+ * hash.c (env_reject): ditto.
+
+Fri Feb 4 10:20:25 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (scan_once): scan now leaves information about the last
+ successful pattern match in $&.
+
+ * io.c (rb_io_close): should not check closed IO.
+
+Fri Feb 4 05:44:01 2000 Kentaro Inagaki <inagaki@tg.rim.or.jp>
+
+ * ext/socket/socket.c (s_recv): TRAP_BEG after retry entry.
+
+Wed Feb 2 22:33:45 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (rb_thread_start): receives argument from outside, like
+ `Thread::start(1,2,3){|a,b,c| ... }'.
+
+Wed Feb 2 22:14:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_regsub): should check regs->num_regs.
+
+ * re.c (rb_reg_search): remove matchcache, use static struct
+ re_register instead.
+
+ * re.c (match_getter): avoid cloning match data.
+
+Wed Feb 2 17:12:15 2000 Dave Thomas <Dave@Thomases.com>
+
+ * samples/eval.rb: Rescue new ScriptError exception
+
+Wed Feb 2 02:06:07 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_gsub_bang): gsub! now leaves information about the
+ last successful pattern match in $&.
+
+Mon Jan 31 15:24:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_sub_bang): bang method returns string always.
+ experimental.
+
+Sun Jan 30 17:58:09 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * eval.c: arrange to use setitimer(2) for BOW, DJGPP
+
+ * defines.h: ditto. use random(3) on cygwin b20.1.
+
+Sun Jan 30 17:20:16 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * eval.c: use getrlimit(2) on DJGPP.
+
+Thu Jan 27 01:27:10 2000 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
+
+ * dir.c (glob): glob pattern "/*" did not match.
+
+Wed Jan 26 22:30:47 2000 Shigeo Kobayashi <shigeo@tinyforest.gr.jp>
+
+ * numeric.c (flo_modulo): wrong result for negative modulo.
+
+Wed Jan 26 02:01:57 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (test_c): should use S_ISCHR.
+
+ * file.c (rb_stat_c): ditto.
+
+ * string.c (rb_str_each_line): should propagate tainting.
+
+Tue Jan 25 04:01:34 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_obj_freeze): all objects made freezable.
+
+Tue Jan 25 00:37:01 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: use AC_CHECK_TOOL for cross compiling.
+
+Mon Jan 24 19:01:54 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * array.c (rb_protect_inspect): should be checked by id of
+ objects; not by object themselves.
+
+Mon Jan 24 18:48:08 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * eval.c (rb_eval): too many warnings; warned on every method
+ overriding. should be on method discarding.
+
+Mon Jan 24 02:56:44 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): -2.abs should be `(-2).abs' to accomplish the
+ principle of less surprise. `+2' too.
+
+ * eval.c (rb_eval): when defining class is already there, and
+ superclass differ, throw away the old class.
+
+ * variable.c (rb_const_set): gives warning again on constant
+ redefinition.
+
+ * error.c (Init_Exception): SyntaxError, NameError, LoadError and
+ NotImplementError are subclasses of ScriptError<Exception, not
+ StandardError. experimental.
+
+Sat Jan 22 00:00:41 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_quotedwords): no longer use `String#split'.
+ and enable space escape within quoted word list.
+ e.g. %w(a\ b\ c abc) => ["a b c", "abc"].
+
+ * string.c (rb_str_slice_bang): new method `slice!'.
+
+Fri Jan 21 21:56:08 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.4.
+
+ * lib/net/http.rb: can receive messages which have
+ no Content-Length:.
+
+Fri Jan 21 16:15:59 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thgroup_s_new): new class ThreadGroup.
+
+Tue Jan 18 12:24:28 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * struct.c (Init_Struct): remove Struct's own hash and eql?.
+
+Sat Jan 15 22:21:08 2000 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * eval.c (search_method): argument klass may be 0.
+
+Sat Jan 15 15:03:46 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * enum.c (enum_index): remove this method.
+
+ * enum.c: remove use of pointers to local variables. find,
+ find_all, min, max, index, member?, each_with_index,
+
+ * eval.c (massign): multiple assignment does not use to_a anymore.
+ experimental.
+
+Fri Jan 14 12:22:04 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_replace): use memmove instead of memcpy for
+ overwrapping strings (e.g. a[1] = a).
+
+Thu Jan 13 11:12:40 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (arg_add): use new node, ARGSPUSH.
+
+Mon Jan 10 18:32:28 2000 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * marshal.c (w_object): forgot an argument to call w_ivar().
+
+Sun Jan 9 18:13:51 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * random.c: first was not defined unless HAVE_RANDOM.
+
+Sat Jan 8 19:02:49 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_sysread): raise IOError for buffered IO.
+
+ * ext/socket/socket.c (s_recv): ditto.
+
+Fri Jan 7 00:59:29 2000 Masahiro Tomita <tommy@tmtm.org>
+
+ * io.c (io_fread): TRAP_BEG/TRAP_END added around getc().
+
+Thu Jan 6 00:39:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * random.c (rb_f_rand): should be initialized unless srand is
+ called before.
+
+Wed Jan 5 16:59:34 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.3.
+
+ * lib/net/session.rb: Session -> Protocol, ...
+
+ * lib/net/http.rb: HTTPCommand implementation was changed.
+
+Wed Jan 5 02:14:46 2000 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * parse.y: Fix SEGV on empty parens with UMINUS or UPLUS.
+
+Tue Jan 4 22:25:54 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (stmt): `() while cond' dumped core.
+
+Tue Jan 4 06:04:14 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * configure.in: modify for cross-compiling.
+ use target_* instead of host_*.
+ use AC_CANONICAL_TARGET.
+
+ * Makefile.in: ditto.
+
+ * cygwin/GNUmakefile.in: ditto.
+
+Sat Jan 1 13:26:14 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_yield_0): force_recycle ruby_dyna_vars to gain
+ performance.
+
+ * array.c (rb_ary_delete_at_m): takes same argument pattern with
+ rb_ary_aref.
+
+Sat Jan 1 10:12:26 2000 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ruby.h,util.c (rb_special_const_p): peep hole optimization.
+
+ * ruby.h,util.c (rb_test_false_or_nil): removed.
+
+ * ruby.h (RTEST, SPECIAL_CONST_P): peep hole optimization.
+
+ * ruby.h (FL_ABLE, FL_SET, FL_UNSET, FL_REVERSE): made expressions
+ not statements.
+
+ * ruby.h (OBJ_INFECT): newly added macro which copies taint from
+ `s' to `x'.
+
+Sat Jan 1 02:04:18 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_safe_level): new method.
+
+ * eval.c (rb_yield_0): recycle dyna_var_map to reduce object
+ allocation.
+
+Fri Dec 31 00:52:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c: thread independent trace_func not needed.
+
+Thu Dec 30 14:47:31 1999 akira yamada <akira@ruby-lang.org>
+
+ * configure.in: specifies -soname in LIBRUBY_DLDFLAGS on linux
+ platforms.
+
+Thu Dec 30 10:51:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c,io.c,hash,c,re.c,string.c: `_m' suffix instead of
+ `_method' for wrapper functions to implement method,
+ e.g. `rb_str_join_m()'.
+
+Thu Dec 30 02:08:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (rb_cstr2inum): non-numeric format check added.
+ currently it works only with base == 0 (i.e. Integer()).
+
+ * bignum.c (rb_str2inum): now takes VALUE to 1st argument. null
+ byte check added.
+
+ * array.c (rb_ary_replace): unless replacement is an array,
+ replacement shall be converted to array by `[replacement]', not
+ by `replacement.to_a'.
+
+ * array.c (rb_ary_plus): right operand must be an array.
+
+ * array.c (rb_ary_concat): argument must be an array.
+
+Mon Dec 27 12:35:47 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/socket.c (sock_finalize): mswin32: fix socket handle leak.
+
+ * win32/win32.c (myfdclose): ditto.
+
+Sun Dec 26 23:15:13 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (mypopen): raise catchable error instead of rb_fatal.
+ * win32/win32.c (mypclose): fix process handle leak.
+
+Sun Dec 26 16:17:11 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): use UINT2NUM
+ instead of INT2NUM to set __dll__ and __proc__.
+
+Sat Dec 25 00:08:59 1999 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
+
+ * ext/Win32API/Win32API.c (Win32API_Call): remove 'dword ptr'
+ from _asm.
+
+Fri Dec 24 10:26:47 1999 Koji Oda <oda@bsd1.qnes.nec.co.jp>
+
+ * win32/win32.h: use "C++" linkage.
+
+Fri Dec 24 02:00:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (THREAD_ALLOC): should initialize th->trace.
+
+Fri Dec 24 00:43:39 1999 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
+
+ * io.c (pipe_open): check for `fptr->f == NULL'.
+ * win32/win32.c (mypopen): STDERR does not work during ` function.
+
+Wed Dec 22 22:50:40 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.2.
+
+ * lib/net/http.rb: HTTP support is enhanced a little
+
+ * lib/net/http.rb: support proxy
+
+Tue Dec 21 17:21:28 1999 Koji Oda <oda@bsd1.qnes.nec.co.jp>
+
+ * ext/socket/socket.c (sock_finalize): mswin32: fix FILE* leak.
+
+Tue Dec 21 05:33:56 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.1.
+
+ * lib/net/http.rb: support HTTP chunk
+
+Mon Dec 20 19:08:12 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (rb_file_s_expand_path): handle dir separator correctly.
+
+Sun Dec 19 22:56:31 1999 KANEKO Naoshi <wbs01621@mail.wbs.ne.jp>
+
+ * lib/find.rb: support dosish root directory.
+ * win32/Makefile: ditto.
+ * win32/config.status: ditto.
+ * win32/win32.c (opendir): ditto.
+ * win32/win32.c (opendir): use CharPrev() to get last character
+ of the directory name.
+
+Sat Dec 18 03:00:01 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (path_check_1): check should be done by absolute path.
+
+ * marshal.c (r_ivar): should restore generic_ivar too.
+
+ * marshal.c (w_ivar): should dump generic_ivar too.
+
+Fri Dec 17 22:46:46 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb, http.rb: 1.1.0.
+
+ * lib/net/http.rb: test release
+
+ * lib/net/session.rb: support class swapping
+
+ * lib/net/session.rb: Socket#flush_rbuf
+
+ * lib/net/session.rb: doquote -> Net.quote
+
+Fri Dec 17 19:27:43 1999 IWAMURO Motonori <iwa@mmp.fujitsu.co.jp>
+
+ * eval.c (rb_load): should initialize ruby_frame->last_class.
+
+Wed Dec 15 01:35:29 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (proc_options): option to change directory changed to
+ `-C' like tar.
+
+ * ruby.c (proc_options): argv boundary check for `-X'.
+
+Mon Dec 13 15:15:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_adjust_startpos): separate startpos adjustment
+ because of major performance drawback.
+
+ * class.c (rb_singleton_class): tainted status of the singleton
+ class must be synchronized with the object.
+
+ * eval.c (rb_thread_schedule): implement thread priority.
+
+Sat Dec 11 03:34:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (mark_hashentry): key should be VALUE, not ID.
+
+ * io.c (argf_eof): should check next_p too.
+
+Thu Dec 9 18:09:13 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * error.c (exc_set_backtrace): forgot to declare a VALUE argument.
+
+Thu Dec 9 14:19:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_obj_taint): explicit tainting must be prohibited at
+ level 4 to prevent polluting trusted object by untrusted code.
+
+ * file.c: file operations (stat, lstat, chmod, chown, umask,
+ truncate, flock) are prohibited in level 2 (was level 4).
+
+Wed Dec 8 11:48:23 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_f_require): prohibiting require() in the secure mode
+ cause serious autoloading error.
+
+ * variable.c (rb_obj_instance_variables): don't need to prohibit
+ to get list of instance variable names of untainted objects.
+
+ * variable.c (rb_ivar_get): don't need to prohibit to get instance
+ variables of untainted objects.
+
+ * variable.c (rb_mod_remove_const): should prohibit constant
+ removals too.
+
+Wed Dec 8 09:23:01 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): should try autoloading before defining
+ class/module at the toplevel.
+
+Tue Dec 7 22:15:30 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * configure.in: Modified rb_cv_rshift_sign detect routine and
+ more simple/fast RSHIFT() for hpux-10.x.
+
+Tue Dec 7 11:16:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (Init_eval): calculate stack limit from rlimit where
+ getrlimit(2) is available.
+
+Tue Dec 7 09:57:33 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * file.c (rb_file_ftype): should have removed mode_t.
+
+Mon Dec 6 15:55:30 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * numeric.c (fix_rshift): Fix -1 >> 32 returned 0 (should be -1).
+
+ * numeric.c (fix_rshift): Fix 1 >> -1 returned 0 (should be 2).
+
+Mon Dec 6 11:47:23 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (rb_f_sprintf): formatted string must be tainted if
+ any of parameters is a tainted string.
+
+ * file.c (rb_file_s_expand_path): expanded file path need not to
+ be tainted always.
+
+Sun Dec 5 20:25:29 1999 Katsuhiro Ueno <unnie@blue.sky.or.jp>
+
+ * eval.c (Init_Proc): simple typo.
+
+ * gc.c (add_heap): sizeof(RVALUE*), not sizeof(RVALUE).
+
+Sat Dec 4 01:40:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): adjust startpos for multibyte match unless
+ the first pattern is forced byte match.
+
+ * bignum.c (rb_big_rand): should not use rand/random where drand48
+ may be available. RANDOM_NUMBER should be provided from outside.
+
+Fri Dec 3 09:54:59 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (moreswitches): there may be trailing garbage at #!
+ line.
+
+ * eval.c (rb_f_require): should check require 'feature.o' too.
+
+Thu Dec 2 11:58:15 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * eval.c (rb_thread_loading): should maintain loading_tbl.
+
+Thu Dec 2 10:21:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_loading_done): wrong parameter to st_delete().
+
+Wed Dec 1 11:24:06 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ruby.c (process_sflag): process -s properly (should not force `--').
+
+Wed Dec 1 09:47:33 1999 Kazunori NISHI <kazunori@swlab.csce.kyushu-u.ac.jp>
+
+ * string.c (rb_str_split_method): should increment end too.
+
+Tue Nov 30 18:00:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c: MARSHAL_MINOR incremented; format version is 4.2.
+
+ * marshal.c (w_object): distinguish class and module.
+
+ * marshal.c (w_object): save hash's default value.
+
+ * marshal.c (r_object): restore hash's default value.
+
+Tue Nov 30 01:46:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_source): generated source string must be tainted if
+ regex is tainted.
+
+ * file.c (rb_file_s_basename): basename should not be tainted
+ unless the original path is tainted.
+
+ * file.c (rb_file_s_dirname): ditto.
+
+Mon Nov 29 20:42:13 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c (stat_new): Struct::Stat -> File::Stat; Stat is no longer
+ a Struct.
+
+Mon Nov 29 15:28:52 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_path2class): evaluated value from path should be
+ module or class.
+
+Fri Nov 26 18:12:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_exec_end_proc): should remove only end_procs defined
+ within load wrapper.
+
+ * eval.c (rb_load): save and restore ruby_wrapper around loading.
+
+ * eval.c (rb_mark_end_proc): mark end procs registered by END{} or
+ at_exit{}.
+
+ * eval.c (rb_set_end_proc): should not call rb_global_variable()
+ on heap address; it crashed mod_ruby.
+
+Mon Nov 22 14:07:24 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ruby.c (proc_options): variable e_script should be visited by
+ garbage collector.
+
+Sat Nov 20 10:10:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (inspect_i): value may be nil, check revised.
+
+Fri Nov 19 18:06:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (glob): recursive wildcard match by `**' ala zsh.
+
+Fri Nov 19 11:44:26 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * variable.c: was returning void value.
+
+Fri Nov 19 03:57:22 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * file.c: add methods Stat struct class to reduce stat(2).
+
+Thu Nov 18 16:18:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/pstore.rb: mutual lock by flock(2).
+
+Thu Nov 18 11:44:13 1999 Masahiro Tomita <tommy@tmtm.org>
+
+ * io.c (read_all): should check bytes too.
+
+Wed Nov 17 02:40:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (Init_IO): $defout (alias of $>) added.
+
+Tue Nov 16 09:47:14 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/pstore.rb: add mutual lock using symlink.
+
+Mon Nov 15 16:50:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * enum.c (enum_grep): non matching grep returns an empty array, no
+ longer returns nil.
+
+ * enum.c (enum_grep): grep with block returns collection of
+ evaluated values of block over matched elements.
+
+Mon Nov 15 04:50:33 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * re.c (rb_reg_source): should not call rb_reg_expr_str()
+ everytime.
+
+Sat Nov 13 07:34:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_mod_constants): traverse superclasses to collect
+ constants.
+
+ * eval.c (assign): modified for shared variables.
+
+ * eval.c (rb_eval): search nested scope, then superclasses to
+ assign shared variables within methods.
+
+ * eval.c (rb_eval): remove warnings from constants modification,
+ because they are no longer constants.
+
+ * parse.y (node_assign): modified for shared variables.
+
+ * parse.y (assignable): allow constant assignment in methods;
+ constants should be called `shared variable'.
+
+Fri Nov 12 23:52:19 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * process.c (rb_f_system): argument check for NT, __EMX__, DJGPP.
+
+Wed Nov 10 21:54:11 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * hash.c (rb_any_cmp): Fixed return without value.
+
+Wed Nov 10 17:57:06 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c: incorporate <yasuf@big.or.jp>'s sprintf patch at
+ [ruby-dev:7754].
+
+Wed Nov 10 08:28:53 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_call0): supply class parameter for each invocation.
+
+Tue Nov 9 13:21:04 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * configure.in: AC_MINIX move to before AC_EXEEXT and AC_OBJEXT.
+
+Mon Nov 8 19:52:29 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * configure.in: Renamed AC_CHAR_UNSIGNED to AC_C_CHAR_UNSIGNED.
+
+ * configure.in: Added default to AC_CHECK_SIZEOF().
+
+Mon Nov 8 14:28:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (stmt): rescue modifier added to the syntax.
+
+ * keywords: kRESCUE_MOD added.
+
+ * eval.c (rb_f_eval): fake outer scope when eval() called without
+ bindings.
+
+ * eval.c (rb_f_binding): should copy last_class in the outer frame too.
+
+Sun Nov 7 18:31:04 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * eval.c (is_defined): last_class may be 0.
+
+Sat Nov 6 19:26:55 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * Makefile.in: Added depend entry make parse.@OBJEXT@ from parse.c
+ for UCB make
+
+Thu Nov 4 17:41:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): \< (wordbeg), \> (wordend) disabled.
+
+Wed Nov 3 08:52:57 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * io.c (Init_IO): forgot to use INT2FIX() around SEEK_SET, etc.
+
+Wed Nov 3 00:25:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_split_method): use mbclen2() to handle kcode
+ option of regexp objects.
+
+Mon Nov 1 14:22:15 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * eval.c (rb_eval): reduce recursive calls to rb_eval()
+ case of ||= and &&= .
+
+Sun Oct 31 13:12:42 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * regex.c (re_compile_pattern): wrong [\W] match.
+
+Fri Oct 29 16:57:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/nkf/lib/kconv.rb: new String methods (kconv, tojis, toeuc,
+ tosjis).
+
+ * time.c (time_s_at): now accepts optional second argument to
+ specify micro second.
+
+Thu Oct 28 13:35:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_split_method): should be mbchar aware with
+ single char separators.
+
+Wed Oct 27 12:57:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * random.c (rb_f_srand): random seed should be unsigned.
+
+Tue Oct 26 23:58:15 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_collect): collect for better performance.
+
+Tue Oct 26 19:20:54 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * marshal.c (r_object): should register class/module objects.
+
+Sat Oct 23 15:59:39 1999 Takaaki Tateishi <ttate@jaist.ac.jp>
+
+ * process.c (rb_f_system): should require at least one argument.
+
+Sat Oct 23 12:42:44 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * enum.c (enum_collect): collect without block will collect
+ elements in enumerable.
+
+Thu Oct 21 16:14:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (moreswitches): function to process string option;
+ the name is stolen from perl (not implementation).
+
+ * ruby.c (proc_options): use RUBYOPT environment variable to
+ retrieve the default options.
+
+ * dir.c (fnmatch): use eban's fnmatch; do not depend on system's
+ fnmatch (which may have portability problem) anymore.
+
+Wed Oct 20 15:14:24 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (marshal_load): should protect the generated object
+ table (arg->data) from GC.
+
+Mon Oct 18 16:15:52 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/nkf/nkf.c (rb_nkf_kconv): output should be NUL terminated.
+
+Mon Oct 18 09:03:01 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb: 1.0.3
+
+ * lib/net/pop.rb: new methods POP3Command#uidl, POPMail#uidl.
+
+Sun Oct 17 03:35:33 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * array.c (rb_ary_pop): forgot some freeze checks.
+
+Sat Oct 16 12:57:53 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * array.c (rb_ary_sort): always returns the copied array.
+
+Fri Oct 15 22:50:41 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * error.c (sys_nerr): on CYGWIN, it is _sys_nerr.
+
+Fri Oct 15 01:32:31 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * io.c (rb_io_ctl) :need to use NUM2ULONG, not NUM2INT.
+
+ * ext/Win32API/Win32API.c (Win32API_Call): need to use NUM2ULONG,
+ not NUM2INT.
+
+Fri Oct 15 00:22:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (Init_Regexp): super class of the MatchingData, which was
+ Data, to be Object.
+
+ * eval.c (ruby_run): evaluate required libraries before load &
+ compiling the script.
+
+ * parse.y (lex_getline): retrieve a line from the stream, saving
+ lines in the table in debug mode.
+
+ * eval.c (call_trace_func): treat the case ruby_sourcefile is null.
+
+Thu Oct 14 02:00:10 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (string): compile time string concatenation.
+
+Wed Oct 13 07:28:09 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb: 1.0.2
+
+ * lib/net/session.rb: new method Session#set_pipe.
+
+ * lib/net/session.rb, smtp.rb, pop.rb: add RD documentation.
+
+Wed Oct 13 02:17:05 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * array.c (rb_ary_plus): remove recursion.
+
+ * array.c (rb_ary_sort_bang): detect modify attempt.
+
+Wed Oct 13 02:17:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (block_pass): should copy block to prevent modifications.
+ tag in the structure should be updated from latest prot_tag.
+
+ * eval.c (proc_s_new): tag in struct BLOCK should not point into
+ unused stack.
+
+ * dir.c (dir_s_glob): iterate over generated matching filenames if
+ the block is given to the method.
+
+ * array.c (rb_ary_at): new methods; at, first, last.
+
+ * hash.c (rb_hash_fetch): raises exception unless the default
+ value is supplied.
+
+ * hash.c (rb_hash_s_create): need not remove nil from value.
+
+ * hash.c (rb_hash_aset): setting value to nil does not remove key
+ anymore.
+
+Tue Oct 12 22:29:04 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_read): length may be 0 or negative.
+
+Tue Oct 12 13:26:27 1999 Jun-ichiro itojun Hagino <itojun@itojun.org>
+
+ * signal.c (posix_signal): RETSIGTYPE may be void.
+
+Tue Oct 12 03:28:03 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * array.c (rb_ary_delete_at): allows negative position.
+
+Mon Oct 11 17:42:25 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (rb_intern): should generate distinct ID_ATTRSET symbols
+ for the name with multiple `='s at the end.
+
+ * Makefile.in (CPPFLAGS): separate cpp flags from CFLAGS.
+
+Mon Oct 11 07:27:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): should not execute the `else' clause on the
+ case the exceptions are handled by the `rescue' clause.
+
+ * signal.c (Init_signal): ignore SIGPIPE by default.
+
+Wed Oct 6 17:13:19 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * ruby.c (addpath): rubylib_mangled_path() modified.
+
+Mon Oct 4 12:42:32 1999 Kazuhiko Izawa <izawa@erec.che.tohoku.ac.jp>
+
+ * pack.c (pack_unpack): % in printf format should be %%.
+
+Mon Oct 4 10:01:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_obj_instance_variables): should always return
+ array for all object can have instance variables now.
+
+Mon Oct 4 00:08:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (OFF16): need to adjust pointer address to pack/unpack on
+ 64bit machines.
+
+Sun Oct 3 03:05:59 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * time.c (time_arg): mktime y2k problem.
+
+Sun Sep 26 16:54:45 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * parse.y (here_document): `\r' handling for here documents.
+
+Wed Sep 22 09:20:11 1999 Masahiro Tomita <tommy@tmtm.org>
+
+ * ext/socket/socket.c: SOCKS5 support.
+
+Wed Sep 22 07:33:23 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb: 1.0.1
+
+ * lib/net/pop.rb: APOP did not work.
+
+ * lib/net/pop.rb: modify the way to make APOP challenge.
+
+Wed Sep 22 00:35:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_include): should return boolean value.
+
+ * regex.c (re_compile_fastmap): wrong comparison with mbc.
+
+ * eval.c (specific_eval): default sourcefile name should be
+ "(eval)" for module_eval etc.
+
+Wed Sep 22 00:06:07 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/Makefile: update rules.
+
+ * io.c (io_fread): should not assign in char, it maybe -1.
+
+Tue Sep 21 23:57:54 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (call_trace_func): should not propagate retval in
+ trace_func.
+
+Mon Sep 20 21:35:39 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (myselect): assume non socket files are always
+ readable/writable.
+
+Mon Sep 20 01:08:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_fread): should not block other threads.
+
+ * io.c (rb_io_synchronized): renamed from rb_io_unbuffered(); do
+ not call setbuf(NULL) anymore.
+
+Sat Sep 18 13:45:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * stable version 1.4.2 released.
+
+Fri Sep 17 23:24:17 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (rb_f_missing): dumped core if no argument given.
+
+Fri Sep 17 23:21:06 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * win32/win32.c (myselect): translate WSAEINTR, WSAENOTSOCK into
+ UNIX errno constants.
+
+Fri Sep 17 00:52:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (arg): assignable() may return 0.
+
+Thu Sep 16 20:46:23 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * eval.c (rb_eval): was doubly evaluating the return expression.
+
+Thu Sep 16 18:40:08 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * stable version 1.4.1 released.
+
+Thu Sep 16 11:33:22 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (rb_str_match): should return nil.
+
+Wed Sep 15 22:46:37 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_s_quote): should quote `-' too.
+
+Tue Sep 14 15:23:22 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
+
+ * parse.y (yylex): no need to ignore `\r' here.
+
+ * parse.y (nextc): strip `\r' from text.
+
+ * parse.y (nextc): support `__END__\r\n' type terminator.
+
+Mon Sep 13 10:49:19 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * eval.c (rb_eval): needless RTEST(ruby_verbose) removed.
+
+Mon Sep 13 09:10:11 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/session.rb, smtp.rb, pop.rb: 1.0.0
+
+Wed Sep 8 11:37:38 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * time.c (make_time_t): bit more strict comparison.
+
+Tue Sep 7 00:50:56 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * range.c (range_each): use rb_str_upto() for strings.
+
+ * string.c (rb_str_upto): set upper limit by comparing curr <= end.
+
+ * range.c (range_each): should check equality to handle magic
+ increment.
+
+Mon Sep 6 22:43:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): break/next/redo available within -n/-p loop.
+
+Fri Sep 3 11:14:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * compar.c (cmp_equal): should not raise exception; protect by
+ rb_rescue().
+
+Thu Sep 2 05:23:05 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * file.c (rb_file_s_expand_path): use dirsep, instead of character
+ literal '/'.
+
+ * file.c (rb_file_s_expand_path): reduce multiple dirsep at the top.
+
+Wed Sep 1 00:28:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_call): call rb_undefined() if a method appears not to
+ be exist explicitly from cache.
+
+ * eval.c (rb_method_boundp): check method cache before calling
+ rb_get_method_body().
+
+ * eval.c (rb_get_method_body): store method non-existence
+ information in the cache.
+
+ * random.c (rb_f_srand): use getpid(2) to generate seed.
+
+ * regex.c (re_match): do not apply partial mbc match for
+ charset_not.
+
+ * regex.c (re_compile_pattern): put extended literal prefix (0xff)
+ only before numeric literals, not before all >0x80 char.
+
+ * regex.c (re_compile_pattern): put numeric literal in extended
+ charset region, not normal charset bits.
+
+ * regex.c (re_compile_fastmap): calculate fastmap for charset and
+ charset_not to treat numeric literal (e.g. \246) specially.
+
+Fri Aug 28 17:32:55 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * eval.c (rb_eval): should set return value (nil) explicitly if a
+ value is omitted for return statement.
+
+Sun Aug 26 20:26:40 2001 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ext/readline/readline.c: restore terminal mode
+ even if readline() interrupted.
+
+ * ext/readline/readline.c: returned string need to
+ be tainted.
+
+ * ext/readline/readline.c: fixed memory leak.
+
+ * ext/readline/readline.c: allow negative index.
+
+ * ext/readline/readline.c: added Readline::HISTORY.size
+ same as Readline::HISTORY.length
+
+ * ext/readline/readline.c: allow conditional parsing
+ of the ~/.inputrc file by `$if Ruby'.
+
+ * ext/readline/extconf.rb: check whether the
+ libreadline has the variable `rl_completion_append_character'
+ (this feature was implemented from GNU readline 2.1).
+
+Thu Aug 26 15:06:11 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * gc.c (rb_gc): local variables may be placed beyond stack_end, so
+ use an address from alloca(1) on non C_ALLOCA platforms.
+
+Thu Aug 26 01:24:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (rb_f_sprintf): "%%" is legal, but "%3.14%" is not.
+
+Mon Aug 23 00:00:54 1999 Tsukada Takuya <tsukada@fminn.nagano.nagano.jp>
+
+ * regex.c (re_compile_fastmap): wrong macro caused memory leak.
+
+Sat Aug 21 11:30:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (ADJ): should not adjust addresses to data on heap.
+
+Fri Aug 20 20:50:58 1999 Kenji Nagasawa <kenn@hma.att.ne.jp>
+
+ * defines.h (PATH_SEP): path separator is ";" for OS/2.
+
+Thu Aug 19 10:50:43 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * gc.c (rb_gc): add volatile to avoid GCC optimize bug(?).
+
+Wed Aug 18 23:48:10 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * due to disk trouble, some change records were lost. several
+ modification made to eval.c, gc.c, io.c, pack.c,
+ ext/extmk.rb.in, and lib/mkmf.rb.
+
+Fri Aug 13 15:41:39 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * stable version 1.4.0 released.
+
+Fri Aug 13 03:16:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (argf_forward): since $stdout may be non-IO, ARGF.file is
+ not guaranteed to be IO. check and forwarding added to every ARGF
+ method.
+
+ * io.c (set_outfile): $stdout/$stderr may not be IO now.
+
+ * io.c (set_stdin): $stdin may not be IO now.
+
+ * range.c (rb_range_beg_len): round `end' to length as documented.
+
+ * io.c (Init_IO): preserve original stdin/stdout/stderr.
+
+Thu Aug 12 13:44:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (Init_load): require receives 1 argument.
+
+ * eval.c (frame_dup): should clear tmp to avoid dangling
+ references.
+
+Wed Aug 11 13:33:13 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (rb_eval): no automatic aggregate initialization.
+
+ * eval.c (module_setup): ditto.
+
+Wed Aug 11 18:18:41 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * eval.c (yield_under_i): automatic aggregate initialization is an
+ ANSI feature.
+
+Wed Aug 11 10:10:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): parse `[].length==0' as `([].length)==0', not
+ `([].length=)=0'
+
+ * parse.y (yylex): parse `[].length!=0' as `([].length)!=0', not
+ `([].length!)=0'
+
+ * parse.y (peek): peek-in lexical buffer.
+
+Wed Aug 11 00:34:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): bug on backward jump adjustment concerning
+ stop_paren.
+
+Tue Aug 10 14:54:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/nkf/nkf.c (rb_nkf_guess): binary detection was wrong.
+
+Tue Aug 10 00:07:36 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_clone): should use CLONESETUP().
+
+Mon Aug 9 23:57:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h (CLONESETUP): should have copied generic instance
+ variables too.
+
+Mon Aug 9 10:46:54 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/extconf.rb: add check for <arpa/nameser.h> and
+ <resolv.h>.
+
+Sat Aug 7 13:19:06 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * numeric.c (flo_cmp): comparing NaN should not return value.
+ raises FloatDomainError.
+
+Sat Aug 7 03:09:08 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (blk_free): free copied frames too.
+
+ * eval.c (frame_dup): should copy previous frames from stack to
+ heap to preserve frame information.
+
+Fri Aug 6 15:01:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.7 - version 1.4 beta
+
+ * ext/socket/socket.c (s_recv): UDPsocket#recvfrom now returns
+ IPsocket#addr information.
+
+ * array.c (rb_ary_subary): ary[-3,3] should not return nil.
+
+Thu Aug 5 10:58:01 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_mark): protect old ruby_frame from GC during it
+ replaced by eval().
+
+ * eval.c (eval): do not modify frame.prev; binding should preserve
+ information about calling() too.
+
+ * eval.c (rb_yield_0): no arity check for mere yield; but only for
+ Proc#call.
+
+Tue Aug 3 22:07:13 1999 Kazuhiro HIWADA <hiwada@kuee.kyoto-u.ac.jp>
+
+ * object.c (rb_mod_clone): should check if iv_tbl, m_tbl are
+ initialized.
+
+Tue Aug 3 19:03:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_any_cmp): use rb_with_disable_interrupt() to ensure
+ clearance of rb_prohibit_interrupt even on failure.
+
+ * eval.c (rb_with_disable_interrupt): new function added.
+
+Sat Jul 31 23:23:44 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_create_0): set THREAD_RAISED flag on thread
+ termination by exception.
+
+ * eval.c (rb_thread_join): `$!' may not be nil for the threads
+ created in rescue clause.
+
+ * eval.c (rb_thread_status): ditto.
+
+ * eval.c (rb_thread_join): should re-raise exception for already
+ dead threads too.
+
+Fri Jul 30 17:56:54 1999 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
+
+ * object.c (rb_mod_ge): wrong comparison.
+
+Fri Jul 30 12:15:44 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/tcltklib/extconf.rb: win32 support.
+
+ * lib/mkmf.rb: use append_library().
+
+ * ext/extmk.rb.in: ditto.
+
+Fri Jul 30 02:11:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_delete): should return nil for deleting non
+ existing item.
+
+ * io.c (rb_io_close): call rb_sys_wait() on explicit close.
+
+ * io.c (rb_io_fptr_close): do not call rb_sys_wait() on finalize.
+
+ * eval.c (yield_under_i): cbase context should be maintained for
+ Module#module_eval(). suggested by <inaba@st.rim.or.jp>.
+
+Wed Jul 28 01:18:28 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * Makefile.in: add -I$(hdrdir)/lib to install using ftools.
+
+ * util.c: use HAVE_FCNTL_H, not HAVE_FCNTL
+
+Wed Jul 28 18:24:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.6 - version 1.4 alpha
+
+Tue Jul 27 09:38:08 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * eval.c (rb_eval): reduce recursive rb_eval() calls by
+ NODE_BLOCKs.
+
+Tue Jul 27 01:20:40 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * file.c (rb_file_s_expand_path): drive letter patch.
+
+Mon Jul 26 02:36:31 1999 Shugo Maeda <shugo@netlab.co.jp>
+
+ * eval.c (rb_load): should clear ruby_nerr.
+
+ * eval.c (rb_thread_join): oldbt should not be empty to unshift.
+
+Sun Jul 25 12:09:16 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * dir.c (push_braces): should treat nested braces.
+
+Fri Jul 23 02:49:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_hash_clear): dummy argument added; suggested by
+ <eguchi@shizuokanet.ne.jp>. thanks.
+
+Thu Jul 22 19:37:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_join): get_backtrace() may return Qnil.
+ typecheck added.
+
+Tue Jul 20 14:36:43 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * range.c (range_each): do not treat String specially (for future
+ override).
+
+Tue Jul 20 02:28:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_gets): $_ should be nil, when get returns nil.
+
+ * io.c (rb_f_gets): ditto.
+
+Mon Jul 19 17:13:09 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_fastmap): should continue fastmap compile
+ for anychar_repeat, for it's repeat anyway.
+
+Mon Jul 26 13:33:45 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * lib/jcode.rb: replaced by faster code.
+
+Mon Jul 19 01:57:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/mkmf.rb: no longer use install program.
+
+ * ext/extmk.rb.in: use miniruby to install programs.
+
+Sat Jul 17 00:06:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (ipaddr): don't do reverse lookup if
+ attribute do_not_reverse_lookup is set for socket classes.
+ Experimental. Note this is a global attribute.
+
+Fri Jul 16 22:18:29 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_eof): use feof() to check EOF already met.
+
+ * io.c (read_all): should return nil at EOF.
+
+Fri Jul 16 13:39:42 1999 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/telnet.rb: version 0.231.
+
+Fri Jul 16 10:58:22 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * regex.c (re_match): debug print removed.
+
+Fri Jul 16 09:58:15 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * many files: clean up unused variables found by gcc -Wall.
+
+ * lib/mkmf.rb: better cygwin support etc.
+
+ * ext/extmk.rb.in: ditto.
+
+ * instruby.rb: ditto.
+
+Fri Jul 16 01:37:50 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * string.c (rb_str_squeeze_bang): the type of local variable `c'
+ should be int, not char.
+
+ * string.c (rb_str_reverse): should always return copy.
+
+Thu Jul 15 23:25:57 1999 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * lib/debug.rb: better display & frame treatment.
+
+Thu Jul 15 21:16:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_each): returns self for normal termination;
+ returns nil for break.
+
+ * string.c: non bang methods (e.g. String#sub) should always
+ return copy of the receiver.
+
+Thu Jul 15 21:09:15 1999 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * eval.c (find_file): do not add empty string to the path.
+
+ * configure.in (with-search-path): should not add empty string if
+ the option is not supplied.
+
+Thu Jul 15 17:49:08 1999 Ryo HAYASAKA <hayasaka@univ21.u-aizu.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: move `#include "ruby.h"' forward.
+
+Thu Jul 15 16:54:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.5 - version 1.4 alpha
+
+Wed Jul 14 23:45:33 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * eval.c (ruby_init): initialize for the first time only.
+
+Tue Jul 13 00:15:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_hash_index): re-defined; method to retrieve a key
+ from the value.
+
+ * hash.c (Init_Hash): member? should be re-defined for Hash.
+
+Tue Jul 12 13:54:51 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * io.c (rb_file_sysopen): wrong number of argument.
+
+Mon Jul 12 11:52:35 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_f_missing): class name included in message.
+
+ * eval.c (print_undef): better error message.
+
+Sun Jul 11 05:36:17 1999 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * lib/debug.rb: patch to show proper position.
+
+Fri Jul 9 23:56:14 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * dln.c (dln_find_1): path conv. moved to conv_to_posix_path.
+
+ * dln.c (conv_to_posix_path): path conv. should be done.
+
+Fri Jul 9 10:26:47 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * random.c (RANDOM_NUMBER): should place parentheses.
+
+Fri Jul 8 11:00:51 1999 Shugo Maeda <shugo@netlab.co.jp>
+
+ * numeric.c (fix_div): division may be out of fixnum range.
+
+ * bignum.c (bigdivmod): proper sign calculation to result.
+
+Wed Jul 7 18:27:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * st.c (st_delete_safe): was modifying wrong slot.
+
+Mon Jul 5 13:17:46 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): close all files at exit.
+
+Fri Jul 2 18:00:21 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/Mail/README: Mail-0.3.0 added to the distribution.
+
+Fri Jul 2 01:45:32 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_fastmap): avoid allocation of register
+ variables for each invocation of re_match(). Suggested by
+ Zasukhin Ruslan <ruslan@paradigmasoft.com>. Thanks.
+
+Tue Jun 29 20:39:24 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ext/tk/lib/tk.rb (TkVariable): bug fix; should value type check
+ be added?
+
+ * string.c (rb_str_each_line): a bug in paragraph mode.
+
+ * ruby.c (load_file): shifted too much to skip #!.
+
+Tue Jun 29 06:50:21 1999 Wakou Aoyama <wakou@fsinet.or.jp>
+
+ * lib/CGI.rb: 0.30 - cleanup release, incompatible.
+
+ * lib/telnet.rb: 0.22 - timeout added.
+
+Tue Jun 29 10:49:25 1999 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * configure.in: better Rhapsody support.
+
+ * lib/mkmf.rb: Rhapsody/NEXTSTEP support.
+
+Tue Jun 29 01:42:13 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/pty/pty.c (chld_changed): should use POSIX.1 style wait.
+
+Mon Jun 28 21:07:36 1999 KIMURA Koichi <kbk@kt.rim.or.jp>
+
+ * ext/extmk.rb.nt: wrong result for have_library().
+
+Mon Jun 28 15:24:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * missing/isinf.c: OSF/1 raises SIGFPE on one()/zero().
+
+ * regex.c (re_search): should search til EOS, for patterns may
+ match beyond the end of range.
+
+Mon Jun 28 12:49:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_f_select): should not accept Time objects as an
+ argument for it is time interval.
+
+ * process.c (rb_f_sleep): ditto.
+
+ * file.c (test_s): should return nil for false condition.
+
+Mon Jun 28 12:23:52 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * bignum.c (rb_dbl2big): typo.
+
+ * file.c (rb_f_test): ditto.
+
+ * string.c (rb_str_crypt): wrong message.
+
+Sun Jun 27 19:50:11 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * eval.c (rb_f_exit): should have treat signed integer status, not
+ VALUE.
+
+ * process.c (rb_f_exit_bang): should work like exit().
+
+Sun Jun 27 16:21:32 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * string.c (rb_str_rindex): wrong position to search.
+
+Sat Jun 26 04:05:30 1999 Takaaki Tateishi <ttate@jaist.ac.jp>
+
+ * configure.in (configure_args): --with-search-path to specify
+ additional ruby search path.
+
+ * ruby.c (ruby_prog_init): additional search path.
+
+Fri Jun 25 13:09:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (pack_unpack): needed to initialize natint.
+
+ * regex.c (re_compile_pattern): add start_paren to avoid too much
+ finalization on maybe_finalize_jump.
+
+Fri Jun 25 13:07:20 1999 Koji Oda <oda@bsd1.qnes.nec.co.jp>
+
+ * missing/isinf.c: include "config.h" added.
+
+Fri Jun 25 07:25:05 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * lib/mkmf.rb: initialize $(topdir).
+
+ * ext/extmk.rb.in (install_rb): install lib/*.rb properly.
+
+ * configure.in (linux): specifies -rpath on --enable-shared.
+
+ * configure.in (aix): ruby.imp must reside in $(topdir).
+
+Thu Jun 24 19:11:29 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * parse.y (rb_str_extend): multi-byte identifier in expression
+ interpolation in strings.
+
+ * parse.y (yylex): support multi-byte char identifiers.
+
+Thu Jun 24 15:27:13 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (f_arg): check duplicate argument names.
+
+ * gc.c (rb_gc_mark): marking wrong member for NODE_ARGS.
+
+ * string.c (rb_str_rindex): POSITION specifies start point, not
+ end point.
+
+Thu Jun 24 13:00:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (print_mbc): wrong boundary.
+
+ * pack.c (uv_to_utf8): raises ArgError for too big value.
+
+Thu Jun 24 11:02:51 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * pack.c (uv_to_utf8): mask needed.
+
+Wed Jun 23 21:03:56 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * ruby.h (struct RFile): remove iv_tbl from struct. instance
+ variables are handled as generic ivs.
+
+Wed Jun 23 22:06:26 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * pack.c (utf8_to_uv): pack to 7 bytes sequence.
+
+ * pack.c (uv_to_utf8): wrong boundary.
+
+ * pack.c (pack_unpack): should treat as unsigned long.
+
+Wed Jun 23 15:10:11 1999 Inaba Hiroto <inaba@sdd.tokyo-sc.toshiba.co.jp>
+
+ * parse.y (parse_string): failed to parse nested braces.
+
+ * parse.y (parse_regx): nested braces within #{} available.
+
+Wed Jun 23 11:18:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (slow_search): wrong shift width for mbcs.
+
+ * eval.c (rb_thread_save_context): should not clear th->locals.
+
+Wed Jun 23 02:06:14 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): UMINUS binds too tight with digits. changed so
+ that -2**2 => -4.
+
+ * parse.y (close_paren): `do' for expr termination now works it
+ used to be.
+
+Wed Jun 22 18:26:42 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * pack.c (pack_pack): should initialize local variable `j'.
+
+Wed Jun 22 15:24:59 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * parse.y (here_document): a bug for multiline heredoc.
+
+Tue Jun 22 15:06:36 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/socket/socket.c (ruby_socket): forgot to return fd
+ explicitly.
+
+Tue Jun 22 13:34:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * rubyio.h (MakeOpenFile): should initialize member `iv_tbl'.
+
+Wed Jun 22 10:35:51 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * io.c (rb_io_gets_internal): getc(3) may not set errno on
+ interrupt.
+
+Mon Jun 21 22:39:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (call_required_libraries): ruby_sourceline should be
+ cleared before loading libraries.
+
+ * io.c (set_stdin): do not use reopen(), so that we don't need to
+ dup original stdin before assigning $stdin.
+
+Mon Jun 21 18:04:27 1999 Ryo HAYASAKA <hayasaka@univ21.u-aizu.ac.jp>
+
+ * ext/dbm/dbm.c: include <cdefs.h> for solaris 2.6.
+
+Mon Jun 21 15:59:47 1999 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * ext/socket/socket.c (ip_addrsetup): forgot to put `else'.
+
+Mon Jun 21 15:38:37 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (fptr_finalize): remove rb_syswait() invocation to avoid
+ wait4(2) within GC. rb_syswait() moved to rb_io_fptr_close().
+
+Mon Jun 21 12:05:59 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * dir.c (dir_s_glob): remove MAXPATHLEN restriction.
+
+ * ext/md5/md5init.c (md5_hexdigest): should have used "%02x".
+
+Sun Jun 20 19:50:38 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * string.c (rb_str_each_line): should have checked string
+ boundary.
+
+Sat Jun 19 22:24:12 1999 Kenji Nagasawa <kenn@hma.att.ne.jp>
+
+ * OS/2 patch improved.
+
+Fri Jun 18 08:30:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (r_byte): add data length check.
+
+ * ext/tcltklib/tcltklib.c (_timer_for_tcl): was doing busy-wait.
+
+Tue Jun 15 10:01:21 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * configure.in: remove trailing slash from interpreter embedded
+ shared library path.
+
+ * configure.in (INSTALL_DLLIB): install shared lib with 0555.
+
+ * instruby.rb: changed mode for shared library into 0555.
+
+Fri Jun 11 23:27:00 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * ext/etc/etc.c (etc_passwd): should return nil, not exception for
+ call after last passwd entry.
+
+Fri Jun 11 15:21:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (rb_gc_mark_locations): add safety margin 1.
+
+ * eval.c (ruby_run): should protect toplevel node tree.
+
+ * ext/etc/etc.c (etc_group): dumps core if there's no more group.
+
+Fri Jun 11 01:50:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (ruby_run): Init_stack() was called too late; local
+ variables happened to be higher (or lower) than stack_start.
+
+Thu Jun 10 16:41:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c: do not call `initialize' for IO objects. So with Array,
+ Hash, Range, and Time objects.
+
+ * ext/curses/curses.c (curses_getch): made thread aware using
+ rb_read_check().
+
+ * ext/curses/curses.c (window_getch): ditto.
+
+ * ext/curses/curses.c (curses_getstr): made (partially) thread
+ aware using rb_read_check().
+
+ * ext/curses/curses.c (window_getstr): ditto.
+
+ * io.c (rb_read_check): new function to help making something
+ (like extension libraries) thread aware.
+
+ * eval.c (is_defined): `defined? super' should be true even for
+ private superclass methods.
+
+Fri Jun 10 13:42:10 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * pack.c (pack_pack): template `Z' should be allowed.
+
+Wed Jun 9 13:26:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_loading): modified to avoid nested race
+ condition of require().
+
+ * ext/tcltklib/tcltklib.c (ip_invoke): queue invocation on non
+ main threads.
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop): flush invocation
+ queues periodically.
+
+ * version.c (ruby_show_version): now print the message to stdout.
+
+ * version.c (ruby_show_copyright): ditto.
+
+Tue Jun 8 00:00:34 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (pack_unpack): append sentinel (NUL) to the string.
+
+ * ext/md5/md5init.c (md5_hexdigest): new method to obtain
+ printable hash string.
+
+ * ext/md5/md5init.c (md5_update): should return self.
+
+ * pack.c (pack_pack): undocumented template 'U' for UTF8.
+
+ * pack.c (pack_unpack): ditto.
+
+ * marshal.c (r_byte): should replace getc() with rb_getc().
+
+ * io.c (rb_getc): getc() replacement uses READ_DATA_PENDING() and
+ rb_thread_wait_fd().
+
+Mon Jun 7 23:23:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_mod_clone): should call CLOSESETUP().
+
+ * eval.c (bind_clone): should call CLONESETUP() for new clone.
+
+Sat Jun 5 10:32:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_oct): binary (e.g. 0b10111) support.
+
+ * variable.c (rb_const_set): raise warning, not exception.
+
+ * parse.y (yycompile): initialize parser internal variables.
+
+ * parse.y (close_paren): set lex_state to EXPR_PAREN after closing
+ parenthesis.
+
+ * parse.y (yylex): returns kDO for `do' right after method_call.
+
+Thu Jun 3 11:05:30 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * regex.c (read_backslash): should decode \b within class.
+
+Thu Jun 3 01:06:18 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * dln.c (dln_load): AIX improvement (aix_findmain removed).
+
+Wed Jun 2 00:41:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (pack_unpack): new undocumented template Z which strips
+ stuff after first null.
+
+ * pack.c (pack_pack): should preserve specified length of the
+ resulting string.
+
+Tue Jun 1 15:29:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (ruby_socket): retry after GC, if socket(2)
+ failed on EMFILE or ENFILE.
+
+ * ext/socket/socket.c (sock_s_socketpair): ditto.
+
+ * eval.c (module_setup): need to add PUSH_VAR/POP_VAR to clear
+ dyna vars link list.
+
+ * version.h (RUBY_RELEASE_CODE): integer macro constant for source
+ version detection.
+
+Sun May 30 22:19:12 1999 Kenji Nagasawa <kenn@tcp-ip.or.jp>
+
+ * ext/socket/socket.c: emx/gcc 0.9d now fixes things about
+ AF_UNIX.
+
+ * process.c: OS/2 EMX kludge.
+
+ * Makefile.in (strncasecmp.o): added dependency.
+
+Mon May 31 16:06:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.4 - preliminary release for 1.4
+
+Mon May 31 15:57:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_fptr_close): close on IO which main_thread is
+ waiting cause serious exception, that vanishes the actual fd
+ closing. Invocation of rb_thread_fd_close() is deferred
+ a little.
+
+Sat May 29 18:27:13 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * regex.c (re_match): stack boundary check needed.
+
+Sat May 29 12:27:00 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_invoke): proper ref count management
+ to avoid leak. I HATE REF COUNTING!!
+
+ * eval.c (ruby_run): moved ruby_require_libraries() to handle `-r'
+ from ruby_options() to avoid stack corruption for threads
+ created in libraries.
+
+Sat May 29 02:22:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_yield_0): when `for' appeared in blocks, it
+ introduced new scope for local variables.
+
+Fri May 28 17:16:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_squeeze_bang): squeeze AND of the arguments.
+ UNDOCUMENTED.
+
+ * string.c (rb_str_count): new UNDOCUMENTED method.
+
+ * string.c (rb_str_delete_bang): delete AND of the arg ranges.
+ UNDOCUMENTED FEATURE for 1.3.x.
+
+ * ext/socket/socket.c (setipaddr): re-wrote using ip_addrsetup().
+
+ * ext/socket/socket.c (ip_addrsetup): decode symbolic address
+ <broadcast>.
+
+Thu May 27 12:27:42 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (tr_trans): should handle NUL (\0) within strings.
+
+Tue May 25 16:45:11 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_f_syscall): syscall may return values other than zero
+ on success.
+
+ * regex.c (re_match): handle empty loop properly (hopefully).
+
+ * regex.c (re_match): remove empty group check, because it does
+ not help non-grouping parentheses (?:..).
+
+ * regex.c (re_compile_fastmap): treating try_next, finalize_push
+ wrong way.
+
+ * regex.c: remove some obsolete functions such as
+ group_match_null_string_p().
+
+Mon May 24 14:47:54 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (read_backslash): read backslash by regex.
+
+Sun May 23 19:44:58 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ext/pty/pty.c (getDevice): portability patch.
+
+Fri May 21 23:01:26 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/getaddrinfo.c (GET_AI): should set error code.
+
+Thu May 20 03:43:44 1999 Jun-ichiro itojun Hagino <itojun@itojun.org>
+
+ * ext/socket/socket.c: you should use sockaddr_storage to handle
+ IPv6 addresses.
+
+ * ext/socket/getaddrinfo.c (getaddrinfo): prevent retrieving
+ AF_INET6 address if hints.ai_flags == AI_PASSIVE.
+
+Wed May 19 12:27:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (exec_end_proc): should protect exceptions.
+
+ * gc.c (run_final): ditto.
+
+ * parse.y (f_rest_arg): allow just * for rest arg.
+
+ * parse.y (mlhs_basic): allow * without formal argument.
+
+ * regex.c (re_match): the variable `part' should be initialized.
+
+Tue May 18 15:25:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): a bug in range adjustment.
+
+Tue May 18 11:35:59 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * dln.c (conv_to_posix_path): path_len argument added.
+
+Mon May 17 12:26:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (fix_rev): should treat Fixnum as signed long.
+
+ * eval.c (massign): add strict number check for yield (and call).
+
+ * eval.c (proc_arity): new method to return number of arguments.
+
+ * eval.c (method_arity): new method to return number of arguments.
+
+ * parse.y (read_escape): char may be unsigned.
+
+ * string.c (rb_str_succ): ditto.
+
+ * string.c (tr_trans): ditto.
+
+ * object.c (Init_Object): methods `&', `|', `^' are added to nil.
+
+ * range.c (rb_range_beg_len): it should be OK for [0..-len-1].
+
+ * regex.c (re_search): search for byte literal within mbcs.
+
+ * regex.c (is_in_list): parsh
+
+ * regex.c (re_compile_fastmap): should have not alter the loop
+ variable `j' if TRASLATE_P().
+
+ * regex.c (re_compile_pattern): escaped characters should be read
+ by PATFETCH_RAW(c).
+
+Sat May 15 11:23:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): endline2 (\Z) should not match at the point
+ between a newline and end-of-line, like endline ($).
+
+ * class.c (include_class_new): should initialize iv_tbl to share
+ between module and iclass.
+
+Fri May 14 08:50:27 1999 Akira Endo <akendo@t3.rim.or.jp>
+
+ * regex.c (re_compile_fastmap): it should be k != 0 to skip.
+
+Fri May 14 12:46:56 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_load): a bug in old marshal format support.
+
+ * instruby.rb: make site_ruby directory.
+
+Fri May 14 10:18:02 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * regex.c (re_match): a bug in inline `.*' etc.
+
+Fri May 14 09:58:46 1999 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * ruby.c (addpath): should have specified string length.
+
+Thu May 13 10:40:44 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval_string_wrap): new function.
+
+ * regex.c (re_compile_pattern): POSIX line match should alter
+ behavior for `^' and `$' to begbuf and endbuf2 respectively.
+
+ * ext/pty/pty.c: un-ANSI-fy function arguments.
+
+Wed May 12 14:19:38 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * struct.c (iv_get): in case of inheritance of generated struct
+ class, __member__ and __size__ should also be inherited.
+ Thanks for Pros Yeboah <yeboah@tu-harburg.de>.
+
+ * io.c (rb_f_gets_internal): should check number of arguments
+ before checking rb_rs == rb_default_rs. Thanks for Koji Arai
+ <JCA02266@nifty.ne.jp>.
+
+Tue May 11 08:29:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): .?, .+ did not work.
+
+Mon May 10 00:59:33 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/jcode.rb: forgot to squeeze on reverse (complement) case.
+
+ * string.c (tr_squeeze): should not set modify flag to be honest,
+ if the string is not modified.
+
+ * signal.c (Init_signal): SIGTERM should not be handled.
+
+ * regex.c (re_match): seeking for longest match is now optional,
+ which can be set using RE_OPTION_POSIXMATCH. This satisfies
+ POSIX longest match as much as Emacs's posix-* functions, which
+ are known to be incomplete.
+
+Sun May 9 13:04:01 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/socket.c (sock_s_getaddrinfo): conversion from
+ Fixnums to C integers needed.
+
+Sun May 9 11:51:43 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * range.c (range_eqq): reverse condition.
+
+ * range.c (range_s_new): default should be end inclusive.
+
+Sat May 8 03:27:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (thread_connect): replace nasty
+ rb_thread_fd_writable() with rb_thread_select().
+
+Fri May 7 20:49:00 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * ext/socket/getaddrinfo.c (inet_pton): wrong parameter to
+ inet_aton().
+
+ * ext/socket/addrinfo.h (__P): silly cut and paste typo.
+
+Fri May 7 17:03:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * dir.c (glob): removed GPL'ed glob.c completely.
+
+Fri May 7 08:17:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/sdbm/extconf.rb: sdbm extension added to the distribution.
+
+Fri May 7 01:42:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (tcp_s_gethostbyname): avoid using struct
+ sockaddr_storage.
+
+Thu May 6 13:21:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_indexes): should not use rb_ary_concat().
+
+Thu May 4 12:34:18 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * parse.y (parse_string): there should be newline escape by
+ backslashes in strings.
+
+ * parse.y (parse_qstring): ditto.
+
+Mon May 3 04:37:20 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ext/tcltklib/extconf.rb: better search for libX11.
+
+ * range.c (range_s_new): embarrassing =/== typo.
+
+ * re.c (Init_Regexp): failed to set default kcode.
+
+Mon May 3 02:39:55 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * ext/socket/socket.c (open_inet): typo (res and res0).
+
+Tue May 4 02:07:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * mkconfig.rb: leave undefined $(VARIABLE) unexpanded in the
+ Config::CONFIG hash table.
+
+Mon May 3 09:37:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): expand exactn{n} at compile time.
+ handles stop_paren specially.
+
+ * regex.c (re_compile_pattern): expand x{n} at compile time.
+
+ * regex.c (re_search): posix line match should be checked.
+
+ * regex.c (re_search): a bug in anchor condition.
+
+Fri Apr 30 18:57:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.3
+
+ * string.c (rb_str_rindex): position should be END point, not
+ START point.
+
+ * re.c (rb_reg_search): pos means end point on reverse now.
+
+ * array.c (rb_ary_s_create): should clear ary->ptr to avoid
+ potential gc crash.
+
+Fri Apr 30 15:24:58 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/addrinfo.h: compatibility hack for ipv4.
+
+ * ext/socket/socket.c: itojun's ipv6 patches applied.
+
+ * ext/socket/extconf.rb: detect ipv6 features based on itojun's
+ ipv6 patches.
+
+ * ext/extmk.rb.in (enable_config): can handle --enable-xxx now.
+
+ * lib/mkmf.rb (enable_config): ditto.
+
+Fri Apr 30 05:22:23 1999 Shugo Maeda <shugo@netlab.co.jp>
+
+ * string.c (rb_str_aset): last index should not append.
+
+Thu Apr 29 18:55:31 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * dln.c (conv_to_posix_path): remove const from args.
+
+ * ruby.c (rubylib_mangle): remove Fatal(), the obsolete function.
+
+Tue Apr 27 14:11:45 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (fname): lazy workaround for keywords did not work well.
+
+ * ext/extmk.rb.in: `--with-xxx=yyy' argument configuration.
+
+ * lib/mkmf.rb: ditto.
+
+ * misc/ruby-mode.el: forgot to handle $`.
+
+ * ext/extmk.rb.in: better AIX link support proposed by
+ <komatsu@sarion.co.jp>.
+
+Mon Apr 26 16:46:59 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/extmk.rb.in: AIX shared library support modified.
+
+ * ext/aix_mksym.rb: ditto.
+
+ * configure.in: ditto.
+
+ * sprintf.c (rb_f_sprintf): should allocate proper sized buffer
+ for float numbers.
+
+Sat Apr 24 00:00:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (operation): syntax like `a.[]=(1,2)' is allowed.
+
+Fri Apr 23 23:54:09 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (argf_binmode): binmode method added to ARGF.
+
+Fri Apr 23 13:55:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_f_chomp): should assign the result to $_. or maybe
+ sub/gsub/chop/chomp should NOT assign $_ altogether.
+
+Thu Apr 22 16:50:54 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_callcc): call scope_dup() for all scopes in
+ the interpreter stack.
+
+Tue Apr 20 11:24:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_dump): `#' should be escaped.
+
+Tue Apr 20 02:32:42 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_regx): option /p for posix match added.
+
+ * re.c (rb_reg_desc): did not print options properly.
+
+ * io.c (rb_file_s_open): initialize was called twice.
+
+Mon Apr 19 18:56:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * configure.in (DEFAULT_KCODE): can specify default code for
+ $KCODE by --with-default-kcode=(euc|sjis|utf8|none).
+
+ * regex.c (IS_A_LETTER): a byte sequence shorter than mbc should
+ not match with \w etc.
+
+Mon Apr 19 13:49:11 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (eval): should restore ruby_dyna_vars.
+
+Fri Apr 16 21:40:43 1999 Nobuyoshi Nakada <gea02117@nifty.ne.jp>
+
+ * io.c (f_backquote): pipe_open may return nil.
+
+ * io.c (f_open): rb_io_open may return nil.
+
+ * io.c (io_s_foreach): ditto.
+
+ * io.c (io_s_readlines): ditto.
+
+ * io.c (io_defset): wrong message.
+
+Fri Apr 16 15:09:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (rb_str2inum): strtoul() returns long, not int.
+
+ * eval.c (rb_load): size of VALUE and ID may be different.
+
+ * util.c (mmprepare): int is too small to cast from pointers.
+
+ * config.guess: avoid 'linux-gnu' for alpha-unknown-linux.
+
+Thu Apr 15 23:46:20 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ruby.c (rubylib_mangle): mangle path by RUBYLIB_PREFIX.
+
+Wed Apr 14 23:52:51 1999 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>
+
+ * node.h (NODE_LMASK): should be long to avoid overflow.
+
+Wed Apr 14 13:14:35 1999 Katsuyuki Komatsu <komatsu@sarion.co.jp>
+
+ * dln.c: AIX dynamic link.
+
+ * ext/aix_ld.rb: ditto.
+
+Wed Apr 14 12:19:09 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/thread.rb: Queue#{enq,deq} added.
+
+Tue Apr 13 17:43:56 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_hash_s_create): Hash::[] acts more like casting.
+
+Tue Apr 13 00:33:52 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_stdio_set): warning for assignment to the variables
+ $std{in,out,err}.
+
+Mon Apr 12 23:12:32 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_reopen): check for reopening same IO.
+
+Fri Apr 9 17:45:11 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (rb_compile_string): bug for nested eval().
+
+ * regex.c (re_match): should pop non-greedy stack items on
+ failure, after best_regs are fixed.
+
+Thu Apr 8 17:30:40 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (PACK_LENGTH_ADJUST): need to adjust for `*' length.
+
+Tue Apr 6 23:28:44 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (void_check): add void context checks.
+
+Mon Apr 5 12:23:42 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_s_at): should copy gmt-mode.
+
+ * eval.c (eval_node): preserve ruby_eval_tree.
+
+Fri Apr 2 14:00:34 1999 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
+
+ * lib/debug.rb: wrong command interpreting.
+
+Fri Apr 2 11:46:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.3.2
+
+Fri Apr 2 10:40:04 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_s_pipe): forgot to define IO::pipe.
+
+Thu Apr 1 14:40:46 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (assign): modified for rhs change.
+
+ * parse.y (stmt): unparenthesisized method calls can be right hand
+ side expression of the assignment.
+
+Sat Mar 27 22:42:47 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ext/nkf/nkf.c (rb_nkf_kconv): check size output_ctr before
+ decrement.
+
+Thu Mar 25 09:11:03 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_s_at): preserve gmt-mode for result.
+
+ * parse.y (rb_compile_string): do not use cur_mid, use
+ compile_for_eval instead.
+
+ * st.c (PTR_NOT_EQUAL): wrong logical condition.
+
+Wed Mar 24 13:06:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yycompile): should clear cur_mid after compilation.
+
+ * io.c (next_argv): need to check type for ARGV.shift.
+
+ * eval.c (blk_copy_prev): need to preserve outer scope as well as
+ outer frames.
+
+ * parse.y (rb_compile_string): return can appear within eval().
+
+Tue Mar 23 10:15:07 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * configure.in: AC_C_CONST check added.
+
+Tue Mar 23 02:07:35 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_plus): preserve gmt-mode for result.
+
+Mon Mar 22 01:32:37 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): adjust line numbers before expression
+ interpolation within strings.
+
+ * eval.c (rb_eval): defined? returns nil for false condition.
+
+ * numeric.c (num_nonzero_p): returns nil for false condition.
+
+Sat Mar 20 13:07:43 1999 Keiju Ishitsuka <keiju@rational.com>
+
+ * lib/weakref.rb: avoid leak for two weakrefs for one object.
+
+Fri Mar 19 11:26:45 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * eval.c (ruby_run): needed to eval END{} on exit.
+
+ * eval.c (rb_exit): ditto.
+
+Fri Mar 19 02:17:27 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * signal.c (Init_signal): handles terminating signals HUP, TERM,
+ QUIT, PIPE, etc.
+
+Thu Mar 18 15:47:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (rb_big_and): bug in sign calculation.
+
+ * bignum.c (rb_big_or): ditto.
+
+ * io.c (rb_f_select): forgot to use to_io to retrieve IO, after
+ calling select(2).
+
+Tue Mar 16 19:54:31 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/extmk.rb.in: static linking cause infinite make loop.
+
+Tue Mar 16 18:50:04 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * ext/socket/socket.c (tcp_s_gethostbyname): typo, not NUM2INT(),
+ but INT2NUM().
+
+ * ext/socket/socket.c (mkhostent): ditto.
+
+Tue Mar 16 12:31:44 1999 Ryo HAYASAKA <hayasaka@cheer.u-aizu.ac.jp>
+
+ * file.c (utime_internal): suppress warning by const.
+
+ * time.c (time_gmtime): ditto.
+
+Tue Mar 16 10:23:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_clone): Time object can be cloned.
+
+Tue Mar 16 03:13:10 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ruby.c (load_file): argv[argc] should be NULL.
+
+Mon Mar 15 22:12:08 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * sprintf.c (rb_f_sprintf): typo in arg_num check at exit.
+
+Mon Mar 15 16:42:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_dup): dup2 should copy class too.
+
+Mon Mar 15 15:12:53 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * lib/mkmf.rb: install program relative path check.
+
+Mon Mar 15 14:05:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_s_new): 2nd argument is now option.
+ Regexp::EXTENDED can be specified.
+
+Fri Mar 12 10:47:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_index): str.index("") should always match at
+ offset point.
+
+ * string.c (rb_str_upto): can specify end point exclusion.
+
+ * string.c (rb_str_index): negative offset.
+
+ * regex.c (re_match): begline should not match at the point
+ between a newline and end-of-string. endline neither.
+
+ * regex.c (re_compile_pattern): context_indep_anchors .
+
+ * parse.y (parse_regx): need not to push backslashes before
+ escaped characters.
+
+ * eval.c (rb_thread_join): re-raises exception within target.
+
+Fri Mar 12 01:09:36 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * ext/readline/readline.c (readline_s_vi_editing_mode): wrong
+ number of arguments.
+
+Fri Mar 12 02:12:50 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (PACK_ITEM_ADJUST): "a".unpack("C3") => [97, nil, nil]
+
+Thu Mar 11 18:23:50 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * ext/socket/socket.c (Init_socket): UDPsocket was omitted.
+
+Thu Mar 11 16:43:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (PACK_LENGTH_ADJUST): push fixed number of items per
+ template to result array.
+
+ * pack.c (pack_unpack): I/N/C etc. push nil in the array for "".
+
+Tue Mar 9 00:19:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (ruby_unsetenv): use ruby_setenv(name, 0).
+
+ * hash.c (env_delete): ditto.
+
+ * string.c (rb_str_upto): do not check `beg<end' to generate
+ strings for the pattern like "a".upto("#a").
+
+ * range.c (range_each): treat strings as special case.
+
+ * range.c (range_each): no longer use upto for generic cases.
+
+Sun Mar 7 14:21:32 1999 IKARASHI Akira <ikarashi@itlb.te.noda.sut.ac.jp>
+
+ * string.c (rb_str_index): wrong end point calculation.
+
+Sat Mar 6 02:19:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (match_index): MatchingData#index(n) added.
+
+ * array.c (rb_ary_subseq): ary[n..-1] returns an sub-array unless
+ n is too small negative index.
+
+ * re.c (rb_reg_match_method): Regexp#match(str) added.
+
+ * array.c (rb_ary_indexes): understands ranges as indexes.
+
+ * re.c (match_size): MatchingData#size added.
+
+Fri Mar 5 01:04:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_fill): modified for range.
+
+ * array.c (rb_ary_aset): a[n..m] revisited.
+
+Thu Mar 4 14:23:29 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_subseq): a[n..m] revisited.
+
+ * parse.y (method_call): allow Const::method{}.
+
+ * array.c (rb_ary_replace_method): should replace original array.
+
+Thu Mar 4 02:30:22 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * configure.in: remove --disable-thread, thread feature is no
+ longer optional.
+
+Thu Mar 4 00:32:17 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * parse.y (read_escape): wrong arguments for scan_oct,scan_hex.
+
+Wed Mar 3 11:51:53 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (Init_socket): rename class names as
+ TCPsocket -> TCPSocket etc.
+
+Tue Mar 2 19:46:42 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * configure.in (LDSHARED): use gcc -Wl,-G for solaris with gcc.
+
+Tue Mar 2 17:04:19 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): backslashes do not concatenate comment lines
+ anymore.
+
+Mon Mar 1 14:05:12 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_call0): adjust argv for optional arguments. super
+ without arguments emit superclass method with the value from
+ optional arguments. enabled as experiment.
+
+Sun Feb 28 14:04:07 1999 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * parse.y (nextc): backslash at the eof cause infinite loop
+
+Sun Feb 28 11:01:26 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * time.c (make_time_t): month range check added.
+
+Sat Feb 27 02:36:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (Init_Regexp): add escape as alias of quote.
+
+ * re.c (rb_reg_s_quote): char-code can be specified now.
+
+Fri Feb 26 18:45:36 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * eval.c (error_print): bug for error message with newlines.
+
+Fri Feb 26 12:00:04 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (make_time_t): future check modified to allow 1969-12-31
+ at certain timezone.
+
+ * time.c (time_arg): year >= 1000 should be past.
+
+ * version.c (Init_version): constant RELEASE_DATE added.
+
+Fri Feb 26 01:08:30 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_substr): returns nil for out-of-range access.
+
+ * array.c (rb_ary_subseq): returns nil for out-of-range access.
+
+ * array.c (rb_ary_store): negative index message has changed.
+
+ * string.c (rb_str_aset): reallocation needed.
+
+ * string.c (rb_str_aset): allow char append to the string.
+
+Thu Feb 25 23:30:17 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * time.c (time_load): tm_year should be packed in 17 bits, not 18.
+
+Thu Feb 25 12:50:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * missing/dup2.c: replaced by public domain version.
+
+ * time.c (make_time_t): add `future check' in loops.
+
+ * object.c (rb_num2dbl): forbid implicit conversion from nil, or
+ strings. thus `Time.now + str' should raise error.
+
+ * object.c (rb_Float): convert nil into 0.0.
+
+ * object.c (rb_Integer): conversion method improved.
+
+Thu Feb 25 03:27:50 1999 Shugo Maeda <shugo@netlab.co.jp>
+
+ * eval.c (rb_call): should handle T_ICLASS properly.
+
+Thu Feb 25 00:04:00 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (Init_Exception): global function Exception() removed.
+
+ * variable.c (rb_class2name): returns "nil"/"true"/"false" for them.
+
+ * time.c (time_dump): time marshaling format compressed size from
+ 11 bytes to 8 bytes. thanx to tadf@kt.rim.or.jp.
+
+ * eval.c (rb_obj_call_init): should specify arguments explicitly.
+
+Wed Feb 24 15:43:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): comment concatenation requires preceding space
+ before backslash at the end of line.
+
+ * io.c (rb_f_pipe): global pipe is obsolete now.
+
+ * object.c (Init_Object): remove true.to_i, false.to_i.
+
+Tue Feb 23 14:21:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): warn if identifier! immediately followed by `='.
+
+Tue Feb 23 12:32:41 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * eval.c (rb_load): tilde expansion moved to find_file.
+
+ * eval.c (find_file): tilde expansion added.
+
+Tue Feb 23 10:50:20 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (require_method): require can handle multiple fnames.
+
+ * hash.c (rb_hash_foreach_iter): hash key may be nil.
+
+Mon Feb 22 17:44:02 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): should not pop failure point on success for
+ non-greedy matches.
+
+ * io.c (Init_IO): remove global_functions getc, readchar, ungetc,
+ seek, tell, rewind.
+
+Sat Feb 20 22:54:26 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (rb_num2long): no implicit conversion from boolean.
+
+Sat Feb 20 09:58:42 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * numeric.c (flo_to_s): portable Infinity and NaN support.
+
+Sat Feb 20 07:13:31 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * io.c (rb_file_sysopen): forgot to initialize a local variable.
+
+Fri Feb 19 23:05:07 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_subseq): range check changed.
+
+ * marshal.c: increment MARSHAL_MINOR for Time format change.
+
+ * time.c (time_old_load): support old marshal format.
+
+ * time.c (time_load): changed for new format Y/M/D/h/m/s/usec.
+
+ * time.c (time_dump): marshal dump format has changed.
+
+Fri Feb 19 00:25:57 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_arg): should reject "sep\0" and such.
+
+ * time.c (time_plus): Time#+ should not receive Time object
+ operand.
+
+ * string.c (rb_str_substr): negative length raises exception now.
+
+ * array.c (beg_len): if end == -1, it points end of the array.
+
+ * array.c (rb_ary_subseq): negative length raises exception now.
+
+Thu Feb 18 20:57:04 1999 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * time.c (rb_strftime): strftime() may return 0 on success too.
+
+ * time.c (time_strftime): `\0' within format string should not be
+ omitted in the result.
+
+ * time.c (rb_strftime): zero length format.
+
+ * time.c (time_to_a): yday start with 1 now.
+
+ * time.c (time_zone): support for long timezone name.
+
+ * time.c (time_yday): yday start with 1 now.
+
+ * time.c (time_minus): minus calculation was wrong.
+
+ * time.c (time_minus): sec, usec should be at least `long', maybe
+ they should be `time_t'.
+
+ * time.c (time_plus): addition with float was wrong.
+
+ * time.c (time_to_s): support for long timezone name.
+
+ * time.c (time_gm_or_local): too far future check moved.
+
+ * time.c (time_arg): treat 2 digit year as 69-99 => 1969-1999,
+ 00-68 => 2000-2068
+
+Thu Feb 18 03:56:47 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * missing/fnmatch.c: moved to missing directory.
+
+Wed Feb 17 16:22:26 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * struct.c (rb_struct_alloc): actual initialization now be done in
+ `initialize'.
+
+Wed Feb 17 09:47:15 1999 okabe katsuyuki <hgc02147@nifty.ne.jp>
+
+ * regex.c (re_search): use mbclen() instead of ismbchar().
+
+ * re.c (rb_reg_s_quote): should handle mbchars properly.
+
+Wed Feb 17 01:25:26 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): stop comment concatenation by backslash follows
+ after >= 0x80 char. may cause problem with Latin chars.
+
+ * eval.c (error_print): exception in rb_obj_as_string() caused
+ SEGV. protect it by PUSH_TAG/POP_TAG.
+
+ * error.c (exc_exception): `Exception#exception' should return self.
+
+Wed Feb 17 01:12:22 1999 Hirotaka Ichikawa <hirotaka.ichikawa@tosmec.toshiba.co.jp>
+
+ * configure.in: BeOS patch.
+
+Tue Feb 16 14:25:00 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): should reallocate mbc space for
+ character class unless current_mbctype is ASCII.
+
+Mon Feb 15 15:48:30 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * configure.in: specify `-Wl,-E' only for GNU ld.
+
+Mon Feb 15 11:43:22 1999 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
+
+ * array.c (rb_inspecting_p): should return Qfalse.
+
+Sun Feb 14 22:36:40 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * sprintf.c (rb_f_sprintf): `%G' was omitted.
+
+Sun Feb 14 12:47:48 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * numeric.c (Init_Numeric): allow divide by zero on FreeBSD.
+
+ * numeric.c (Init_Numeric): FloatDomainError added.
+
+ * configure.in (AC_REPLACE_FUNCS): add checks for functions
+ isinf, isnan, and finite.
+
+Sat Feb 13 01:24:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_create_0): should protect th->thread.
+
+Fri Feb 12 16:16:47 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * string.c (rb_str_inspect): wrong mbc position.
+
+Fri Feb 12 16:21:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_fd_close):
+
+ * io.c (rb_io_fptr_close): tell scheduler that fd is closed.
+
+ * io.c (rb_io_reopen): ditto.
+
+ * io.c (READ_CHECK): check if closed after thread context switch.
+
+ * ext/socket/socket.c (bsock_close_read): do not check
+ the return value from shutdown(2).
+
+ * ext/socket/socket.c (bsock_close_write): ditto.
+
+ * ext/socket/socket.c (sock_new): need to dup(fd) for close_read
+ and close_write.
+
+ * parse.y (here_document): handle newlines within #{}.
+
+ * regex.h: should replace symbols for ruby.
+
+Fri Feb 12 00:46:28 1999 Shugo Maeda <shugo@netlab.co.jp>
+
+ * marshal.c (r_object): should update the method name in message.
+
+ * marshal.c (w_object): limit should be converted into Fixnum.
+
+Wed Feb 10 15:20:03 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): empty pattern should not cause infinite
+ pattern match loop.
+
+ * regex.c (re_compile_pattern): RE_OPTIMIZE_ANCHOR for /.*/, not
+ for /(.|\n)/.
+
+ * numeric.c (fix_pow): `fixnum**nil' should raise TypeError.
+
+ * bignum.c (rb_big_pow): need to normalize results.
+
+Wed Feb 10 01:42:41 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * numeric.c (fix_pow): `(5**1).type' should be Integer.
+
+Tue Feb 9 01:22:49 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): do not ignore newlines in mbchars.
+
+ * io.c (rb_file_s_open): mode can be specified by flags like
+ open(2), e.g. File::open(path, File::CREAT|File::WRONLY).
+
+ * io.c (rb_f_open): bit-wise mode flags for pipes
+
+ * io.c (Init_IO): bit flags for open.
+
+Sat Feb 6 22:56:21 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_sub_bang): should not overwrite match data by
+ regexp match within the block.
+
+ * string.c (rb_str_gsub_bang): ditto.
+
+Sat Feb 6 03:06:17 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (match_getter): accessing $~ without matching caused SEGV.
+
+Fri Feb 5 22:11:08 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * parse.y (yylex): binary literal support, like 0b01001.
+
+ * parse.y (yylex): octal numbers can contain `_'s.
+
+ * parse.y (yylex): warns if non-octal number follows immediately
+ after octal literal.
+
+ * parse.y (yylex): now need at least one digit after prefix such
+ as 0x, or 0b.
+
+ * bignum.c (rb_str2inum): recognize binary numbers like 0b0101.
+
+Fri Feb 5 03:26:56 1999 Yasuhiro Fukuma <yasuf@big.or.jp>
+
+ * ruby.c (proc_options): -e without program prints error.
+
+Fri Feb 5 00:01:50 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (terms): needed to clear heredoc_end.
+
+ * numeric.c (flo_div): allow float division by zero.
+
+Thu Feb 4 11:56:24 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * missing/strtod.c: for compatibility.
+
+ * configure.in (strtod): add strtod compatible check.
+
+ * numeric.c (rb_num2long): missing/vsnprintf.c does not support
+ floating points.
+
+ * numeric.c (flo_to_s): ditto.
+
+Wed Feb 3 23:02:12 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * regex.c (re_compile_pattern): use ismbchar() to get next char.
+
+ * regex.c (re_search): wrong mbchar shift.
+
+ * re.c (rb_reg_search): needed to reset $KCODE after match.
+
+ * regex.c (re_compile_fastmap): mbchars should match with \w.
+
+Wed Feb 3 22:35:12 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * parse.y (yylex): too big float raise warning, not error.
+
+Tue Feb 2 23:41:42 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * regex.c (re_match): wrong boundary.
+
+ * regex.c (IS_A_LETTER): re_mbctab[c] may not be 1 for mbc.
+
+ * regex.c (re_search): mbchar support for shifting ranges.
+
+ * regex.c (MBC2WC): wrong conversion.
+
+Wed Feb 3 15:03:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_regx): need to escape parens if terminators are
+ not any kind of parenthesis.
+
+ * parse.y (parse_qstring): ditto.
+
+ * parse.y (parse_string): ditto.
+
+Tue Feb 2 17:11:26 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * string.c (rb_str_gsub_bang): too small realloc condition.
+
+Mon Feb 1 10:01:17 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * parse.y (yylex): range check for the float literal.
+
+Sat Jan 30 18:34:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (usage): -h option to show brief command description.
+
+Sat Jan 30 08:45:16 1999 IKARASHI Akira <ikarashi@itlb.te.noda.sut.ac.jp>
+
+ * lib/cgi-lib.rb: cookie support added.
+
+Sat Jan 30 13:38:24 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): mbchars should match with \w
+ within character class. Was matching with \W.
+
+ * regex.c (re_match): \w should match with multi byte characters,
+ not its first byte.
+
+Sat Jan 30 10:06:41 1999 Yoshida Masato <yoshidam@yoshidam.net>
+
+ * re.c (rb_reg_s_new): UTF-8 flag handle (/u, /U).
+
+ * re.c (rb_kcode): $KCODE handle for UTF-8.
+
+Sat Jan 30 01:51:16 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_delete_if): RTEST() missing.
+
+ * hash.c (delete_if_i): ditto.
+
+ * enum.c (Init_Enumerable): select (=find_all), detect (=find)
+ added as aliases.
+
+Fri Jan 29 21:32:19 1999 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * hash.c (rb_f_setenv): SEGV caused by small typo.
+
+Fri Jan 29 00:15:58 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/parsedate.rb (parsedate): support date format like
+ 23-Feb-93, which is required by HTTP/1.1.
+
+ * variable.c (find_class_path): avoid calling rb_iv_set().
+
+ * eval.c (backtrace): do not need to modify $SAFE internally.
+
+ * variable.c (classname): inline __classid__ access.
+
+ * eval.c (THREAD_ALLOC): needed to initialize wrapper.
+
+ * lib/ftools.rb (makedirs): allows slash at the end of the path.
+
+ * numeric.c (rb_fix_induced_from): ensure result to be Fixnum.
+
+Thu Jan 28 17:31:43 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (flo_to_s): float format changed to "%16.10g".
+
+Thu Jan 28 02:13:11 1999 Yoshinori Toki <toki@freedom.ne.jp>
+
+ * array.c (rb_ary_store): expand allocated buffer by 3/2.
+
+Wed Jan 27 17:50:02 1999 Kazuhiro HIWADA <hiwada@kuee.kyoto-u.ac.jp>
+
+ * bignum.c (dbl2big): raised error if double is too big to cast
+ into long. check added.
+
+Wed Jan 27 03:16:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_mod_const_at): can't list constants of the
+ untainted objects in safe mode.
+
+ * class.c (method_list): can't list methods of untainted objects
+ in safe mode.
+
+Tue Jan 26 02:40:41 1999 GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp>
+
+ * prec.c: Precision support for numbers.
+
+Thu Jan 21 19:08:14 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_f_raise): calls `exception' method, not `new'.
+
+ * error.c (exc_exception): renamed from `new'.
+
+Wed Jan 20 03:39:48 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yycompile): rb_in_compile renamed to ruby_in_compile.
+
+ * ruby.c (load_file): define DATA if __END__ appeared in script.
+
+Tue Jan 19 14:57:51 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (here_document): need to protect lex_lastline.
+
+ * parse.y (yylex): disable %//, %'', %``.
+
+Tue Jan 19 05:01:16 1999 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * array.c (beg_len): round range value too much.
+
+Mon Jan 18 13:02:27 1999 Kuroda Jun <jkuro@dwe.co.jp>
+
+ * hash.c (env_keys): strchr() may return NULL.
+
+Mon Jan 18 17:51:47 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * instruby.rb (wdir): install libruby.a in archdir.
+
+ * lib/ftools.rb (install): removes file before installing.
+
+Mon Jan 18 16:55:31 1999 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * eval.c (rb_callcc): experimental continuation support.
+
+Sun Jan 17 19:45:37 1999 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * pack.c (pack_pack): nil packing caused SEGV.
+
+Sat Jan 16 13:18:03 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_concat): character (fixnum) can be append to
+ strings
+
+ * array.c (rb_ary_unshift): unshift returns array.
+
+Sat Jan 16 01:39:19 1999 Yoshida Masato <yoshidam@tau.bekkoame.ne.jp>
+
+ * string.c (rb_str_split_method): UTF-8 support.
+
+ * regex.c: UTF-8 support.
+
+Thu Jan 14 00:42:55 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_gsub_bang): forget to add offset for null match.
+
+ * eval.c (rb_thread_local_aset): can't modify in tainted mode.
+
+ * hash.c (env_each_key): avoid generating temporary array.
+
+Wed Jan 13 23:58:50 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_f_setenv): name and value can be tainted.
+
+Wed Jan 6 02:42:08 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (Init_Bignum): forgot to define Bignum#===.
+
+ * gc.c (gc_sweep): if add_heap() is called during GC, objects on
+ allocated heap page(s) are not marked, should not be recycled.
+
+ * gc.c (gc_sweep): should refer latest freelist.
+
+ * gc.c (id2ref): modified to support performance patch.
+
+ * object.c (rb_obj_id): performance patch (no bignum for id).
+
+Tue Jan 5 01:56:18 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * config.guess: merge up-to-date from autoconf 2.12.
+
+ * array.c (rb_ary_join): avoid calling rb_protect_inspect() till
+ it is really needed.
+
+ * object.c (rb_obj_inspect): show detailed information for the
+ instance variables (infinite loop can avoid now).
+
+ * struct.c (rb_struct_inspect): avoid infinite loop.
+
+Sun Jan 3 01:37:58 1999 Takao KAWAMURA <kawamura@ike.tottori-u.ac.jp>
+
+ * misc/ruby-mode.el (ruby-end-of-defun): moved too much.
+
+ * misc/ruby-mode.el (ruby-mode-variables): set paragraph-separator
+ for the mode.
+
+ * misc/ruby-mode.el: proper font-lock for `def' and `nil' etc.
+
+Sat Jan 2 17:09:06 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_jump_tag): new api to invoke JUMP_TAG. tag values
+ can obtained from rb_eval_string_protect()/rb_load_protect().
+
+ * eval.c (rb_rescue): now catches all exceptions but SystemExit.
+
+ * eval.c (rb_eval_string_protect): eval string with protection.
+
+ * eval.c (rb_load_protect): load file with protection.
+
+ * io.c (rb_io_puts): avoid infinite loop for cyclic arrays.
+
+ * eval.c (rb_thread_local_aref): thread local hash tables.
+
+ * object.c (rb_equal): check exact equal before calling `=='.
+
+Thu Dec 31 22:28:53 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * eval.c (rb_f_require): feature names should be provided with
+ DLEXT extension.
+
+ * marshal.c (Init_marshal): need to provide `marshal.so'.
+
+Wed Dec 30 02:29:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (classname): do not call rb_ivar_set().
+
+ * eval.c (ruby_run): finalizers were called too early.
+
+Fri Dec 25 12:19:30 1998 Fukuda Masaki <fukuda@wni.co.jp>
+
+ * gc.c (rb_gc_mark): should not return on FL_EXIVAR.
+
+Fri Dec 25 11:56:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (gc_mark): proper scanning for temporary region.
+
+ * eval.c (TMP_ALLOC): protection for C_ALLOCA was broken.
+
+Thu Dec 24 18:26:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * development version 1.3 released.
+
+Thu Dec 24 00:17:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_load): top self should be set properly.
+
+ * variable.c (classname): check __classpath__ if it is defined.
+
+ * variable.c (classname): invalid warning at -v with static linked
+ ruby interpreter.
+
+ * eval.c (is_defined): modified for expr::Const support.
+
+ * eval.c (rb_eval): invoke method expr::Const if expr is not class
+ nor module.
+
+ * parse.y (primary): enable expr::identifier as method
+ invocation.
+
+Wed Dec 23 03:04:36 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): avoid too many loop pops for (?:..).
+
+Tue Dec 22 18:01:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental version 1.1d1 released.
+
+Mon Dec 21 01:33:03 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (TMP_PROTECT): add volatile to ensure GC protection.
+
+ * string.c (rb_str_gsub_bang): calculate buffer size properly.
+
+ * parse.y (lex_get_str): needed to return Qnil at EOS.
+
+ * eval.c (find_file): check policy modified, raise exception
+ immediately for tainted load_path.
+
+ * hash.c (rb_f_setenv): do not depend on setenv() nor putenv().
+
+Thu Dec 17 06:29:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/tk/tkutil.c (tk_s_new): use rb_obj_instance_eval(), instead
+ of rb_yield_0().
+
+ * eval.c (rb_f_require): forgot to call find_file in some cases.
+
+ * eval.c (rb_f_require): `require "feature.so"' to load dynamic
+ libraries. old `require "feature.o"' is still OK.
+
+ * eval.c (rb_eval): yield without value dumped core.
+
+Wed Dec 16 16:28:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental version 1.1d0 (pre1.2) released.
+
+Wed Dec 16 10:43:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): bound check before calling re_match().
+
+Tue Dec 15 13:59:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (exc_to_s): returns class name for unset mesg.
+
+ * error.c (exc_initialize): do not initialize @mesg by "".
+
+ * parse.y (nextc): __END__ should handle CR+LF newlines.
+
+Wed Dec 9 13:37:12 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * pack.c (encodes): use buffering for B-encoding.
+
+ * pack.c (pack_pack): Q-encoding by 'M'.
+
+Tue Dec 8 14:10:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (generic_ivar_get): any object can have instance
+ variables now. great improvement.
+
+ * variable.c (rb_name_class): do not set __classpath__ by default,
+ use __classid__ instead.
+
+Mon Dec 7 22:08:22 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h (struct RFile): IO objects can have instance variables now.
+
+ * parse.y (primary): allows `def obj::foo; .. end'.
+
+Mon Dec 7 18:24:50 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * ruby.c (set_arg0): $0 support for HP-UX.
+
+Mon Dec 7 01:30:28 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * dln.c (dln_strerror): better error messages on win32.
+
+Sat Dec 5 23:27:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (here_document): indentable here-doc delimiter by
+ `<<-'. Proposed by Clemens <c.hintze@gmx.net>. Thanks.
+
+Thu Dec 3 16:50:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/extmk.rb.in (realclean): trouble on install.
+
+Sun Nov 29 22:25:39 1998 Takaaki Tateishi <ttate@jaist.ac.jp>
+
+ * process.c (f_exec): check number of argument.
+
+Thu Nov 26 17:27:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c9 released.
+
+Wed Nov 25 13:07:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_dup): do not copy additional data (STR_NO_ORIG).
+
+ * parse.y (yycompile): reduce known memory leak (hard to remove).
+
+Wed Nov 25 03:41:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * st.c (st_init_table_with_size): round size up to prime number.
+
+Sat Nov 21 23:27:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (rb_hash_aset): reduce copying key strings.
+
+ * gc.c (looks_pointerp): declare as inline function if possible.
+
+ * st.c (PTR_NOT_EQUAL): compare hash values first before calling
+ comparing function.
+
+ * st.c (ADD_DIRECT): save hash value in entries to reduce hash
+ calculation.
+
+ * string.c (rb_str_gsub_bang): avoid rb_scan_args() to speed-up.
+
+ * string.c (rb_str_sub_bang): ditto.
+
+Sat Nov 21 18:44:06 1998 Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
+
+ * time.c (time_s_now): had memory leak.
+
+ * ext/md5/md5init.c (md5_new): had memory leak.
+
+ * ext/md5/md5init.c (md5_clone): ditto.
+
+Fri Nov 20 23:23:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/delegate.rb: do not propagate hash and eql?.
+
+Thu Nov 19 01:40:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sample/ruby-mode.el (ruby-expr-beg): failed to find reserved
+ word boundary.
+
+ * eval.c (rb_eval): avoid calling `concat' method. calls
+ rb_ary_concat() directly for efficiency.
+
+ * eval.c (rb_eval): actual rest arguments extended arrays too much.
+
+Wed Nov 18 14:30:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (rb_define_global_function): global functions now be
+ module function of the Kernel.
+
+Wed Nov 18 10:48:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (read_all): SEGV on large files.
+
+Tue Nov 17 18:11:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c8 released.
+
+Tue Nov 17 16:58:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (arg): assignment to attribute name start with capital
+ should be allowed.
+
+ * eval.c (thread_alloc): needed to mark terminated threads too.
+
+Tue Nov 17 12:33:48 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
+
+ * ext/extmk.rb.in (create_makefile): Set `libdir' to `@libdir@',
+ Set `pkglibdir' to `$libdir/$(RUBY_INSTALL_NAME)'.
+
+Tue Nov 17 10:30:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (f_sprintf): %l%%c -> %%l%c
+
+Tue Nov 17 01:08:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (ret_args): distinguish `a' and `*a' for the arguments
+ of yield and return.
+
+ * eval.c (rb_eval): flip3 should work like sed.
+
+ * eval.c (rb_eval): flip{2,3} now have independent state for each
+ scope to work fine with thread.
+
+Mon Nov 16 23:26:29 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (primary): exec else clause if no exception raised.
+
+Sun Nov 15 15:44:07 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * ext/extmk.rb.in (install): bug in target.
+
+Sat Nov 14 11:02:05 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
+
+ * Makefile.in (install): Give the argument `$(DESTDIR)' to
+ `instruby.rb'.
+
+ * instruby.rb: Recognize ARG[0] as `destdir'.
+
+ * instruby.rb: Give the argument `destdir' to `extmk.rb'.
+
+ * ext/extmk.rb.in: Recognize ARG[1] as `$destdir'.
+
+ * instruby.rb: Create the installation directories (bindir, libdir,
+ archdir, pkglibdir, archdir, and mandir) under `destdir', and
+ install all files under there.
+
+ * ext/extmk.rb.in: Likewise.
+
+Sat Nov 14 10:56:55 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
+
+ * instruby.rb: Add the variable `pkglibdir'.
+
+ * instruby.rb: Set the variable `libdir' to `$(libdir)', not
+ `$(libdir)/$(ruby_install_name)'. `libruby.so' and `libruby.so.LIB'
+ are installed at `libdir'.
+
+ * instruby.rb: Set the variable `archdir' to `$(pkglibdir)/$(arch)'.
+
+Fri Nov 13 19:43:29 1998 KIMURA Koichi <kbk@kt.rim.or.jp>
+
+ * missing/nt.c (SafeFree): wrong free offset.
+
+Thu Nov 12 20:11:53 1998 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * sample/ruby-mode.el: wrong highlight.
+
+ * parse.y (parse_regx): newline in regexp was ignored.
+
+Wed Nov 11 10:54:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (here_document): <<'FOO' should not escape anything.
+
+ * parse.y (here_document): bare << here-doc available, even though
+ it's deprecated.
+
+ * file.c (rb_file_s_readlink): return value should be tainted.
+
+ * ext/etc/etc.c (setup_passwd): information (eg. GCOS name) should
+ be tainted (modified at Perl Conference).
+
+Tue Nov 10 00:22:11 1998 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * configure.in: elf support for FreeBSD 3.x
+
+Tue Nov 10 00:05:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): here document available in eval.
+
+Mon Nov 9 17:55:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c7 released.
+
+Fri Nov 6 19:25:27 1998 Takao KAWAMURA <kawamura@ike.tottori-u.ac.jp>
+
+ * sample/ruby-mode.el: font-lock patch.
+
+Thu Nov 5 15:42:22 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sample/README, lib/README: simple description for each file.
+
+Wed Nov 4 18:14:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (assign): attribute assignment should be called as public.
+
+Tue Nov 3 23:36:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_dump): dumps core for negative char value.
+
+ * regex.c (re_compile_pattern): out of boundary access for empty
+ regexp.
+
+Mon Nov 2 22:54:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_aset): `str[str]' replaces first match.
+
+Mon Nov 2 18:24:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_create): was accessing modified status.
+
+Sun Nov 1 01:18:52 1998 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * gc.c (xrealloc): size 0 needs round up to 1.
+
+Sat Oct 31 23:18:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_split_method): negative LIMIT means number of
+ split fields are unlimited, as in perl.
+
+ * string.c (rb_str_split_method): if LIMIT is unspecified,
+ trailing null fields are stripped.
+
+Sat Oct 31 04:16:14 1998 Inaba Hiroto <inaba@st.rim.or.jp>
+
+ * string.c (str_aref): regexp index SEGVed.
+
+Fri Oct 30 14:33:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_match): returns nil for unmatch.
+
+ * dir.c (dir_entries): new method.
+
+ * eval.c (block_pass): do not push block, substitute it.
+
+Fri Oct 30 01:28:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * range.c (range_check): avoid <=> check for Fixnums.
+
+ * array.c (rb_ary_aset): accept negative index.
+
+Wed Oct 28 22:00:54 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): access out of boundary fixed.
+
+Wed Oct 28 11:37:42 1998 TAMITO <tommy@valley.ne.jp>
+
+ * io.c (f_select): fd number comparison bug.
+
+Tue Oct 27 23:07:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sample/ruby-mode.el (ruby-parse-region): forgot to support %w()
+ style array literal.
+
+ * eval.c (rb_eval): unused block raises warning.
+
+Mon Oct 26 09:37:53 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (dvar_asgn_push): dvar pushed too many times if
+ variable-in-block first appear in loops.
+
+Sun Oct 25 22:59:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (set_list_bits): was using wrong offset.
+
+Thu Oct 22 00:07:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_obj_method): method retrieved from tainted object
+ should be tainted too.
+
+ * eval.c (method_call): safe_level should be restored during
+ Method#call.
+
+Wed Oct 21 14:21:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (Init_IO): new constants IO::SEEK_{SET,CUR,END}.
+
+ * io.c (rb_f_ungetc): ungetc pushes a char back into STDIN.
+
+Mon Oct 19 11:50:00 1998 Motoyuki Kasahara <m-kasahr@sra.co.jp>
+
+ * ext/extmk.rb: Load '@top_srcdir@/lib/find.rb', not
+ '../lib/find.rb'.
+
+ * ext/extmk.rb: Distinguish between `top_srcdir' and `topdir'.
+
+ * Makefile.in (CFLAGS): Add `-I.'.
+
+ * Makefile.in (lex.c): Give `@srcdir@/keywords' to gperf, not
+ `keywords'.
+
+ * instruby.rb: Use `CONFIG["bindir"]', instead of `prefix + "/bin"'.
+
+ * instruby.rb: Use `CONFIG["libdir"]', instead of `prefix + "/lib"'.
+
+ * instruby.rb Use `CONFIG["mandir"]', instead of `prefix + "/man"'.
+
+ * instruby.rb (wdir): Add the variable to preserve the current
+ working directory.
+
+ * instruby.rb: Chdir to wdir before install `config.h' and
+ `rbconfig.rb'.
+
+Mon Oct 19 10:07:01 1998 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
+
+ * eval.c (rb_eval): reduce recursive calls to rb_eval().
+
+Fri Oct 16 15:31:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_new_internal): timeval must be positive.
+
+Thu Oct 15 13:54:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (arg): local variables can be accessed within right side
+ expression in assignment, notably in blocks.
+
+Wed Oct 14 00:18:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (Init_Array): Array#=== is now for equal check, not
+ inclusion check.
+
+ * parse.y (when_args): `when a, *b' style new syntax for array
+ expansion in `case'.
+
+Tue Oct 13 14:30:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (rb_obj_untaint): taint marks can be unset.
+
+ * eval.c (rb_eval): taint propagation for embedded strings.
+
+Mon Oct 12 13:27:15 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_call0): check stack depth more frequently.
+
+Mon Oct 12 08:08:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_p): can print even in secure mode.
+
+Sun Oct 11 22:50:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (rb_const_set): taint check for modification.
+
+ * variable.c (rb_ivar_set): taint check for modification.
+
+ * string.c (rb_str_modify): taint check for modification.
+
+ * hash.c (rb_hash_modify): taint check for modification.
+
+ * array.c (rb_ary_modify): taint check for modification.
+
+ * ruby.h (FL_TAINT): taint for all objects, not only strings.
+
+Fri Oct 9 17:01:14 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (read_all): read() returns "" at immediate EOF.
+
+ * io.c (io_read): read(nil) read all until EOF.
+
+Thu Oct 8 13:32:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_dump): marshal can dump Time object now.
+
+ * marshal.c (Init_marshal): rename marshal methods `_dump_to' to
+ `_dump', `_load_from' to `_load'.
+
+ * parse.y (rb_intern): "+=".intern generates proper symbol.
+
+Mon Oct 5 18:31:53 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c6 released.
+
+Fri Oct 2 14:22:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): `/\s*(--)$/ =~ "- --"' did not match,
+ because of wrong optimize condition.
+
+Mon Oct 1 01:55:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (rb_intern): should not raise exceptions.
+
+ * parse.y (yylex): symbol like `:foo?=' should not be allowed.
+
+ * ext/extmk.rb.in: makes *.a for static link modules.
+
+Wed Sep 30 14:13:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_start): supports making a subclass of the
+ Thread class.
+
+Tue Sep 29 17:46:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_thread_join): join is now an instance method.
+
+Fri Sep 25 12:01:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): `@foo!' should be an error.
+
+Thu Sep 24 14:55:06 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * ext/etc/etc.c (Init_etc): wrong field definition.
+
+Thu Sep 17 17:09:05 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_reopen): was creating FILE* for wrong fd.
+
+Tue Sep 15 05:28:11 1998 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * regex.c (re_compile_pattern): forgot to fixup for the pattern
+ like (?=(A)|(B)).
+
+Tue Sep 15 01:06:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (rb_io_gets_internal): do not set $_ by default, only
+ gets/readline set the variable.
+
+ * eval.c (rb_f_load): load toplevel class is set to anonymous
+ module if safe_level >= 5, to encapsulate modification.
+
+ * eval.c (rb_f_load): set frame properly.
+
+ * string.c (rb_str_each_line): do not set $_.
+
+Mon Sep 14 14:42:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): beginning and end of the string, do not
+ automatically match `\b'.
+
+ * string.c (scan_once): consume at least on character.
+
+ * regex.c (re_search): wrong behavior for negative range.
+
+Sat Sep 12 21:21:26 1998 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * regex.c (re_search): range value should be maintained.
+
+Thu Sep 10 10:55:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (backref_error): yyerror does not understand formats.
+
+Tue Sep 8 18:05:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c5 released.
+
+Tue Sep 8 10:03:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_each_line): wrong line splitting with newline at
+ top of the string.
+
+ * string.c: non bang methods return copied string.
+
+ * eval.c (f_END): needed to initialize frame->argc;
+
+Fri Sep 4 11:27:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (bigadd): proper sign combination.
+
+ * regex.c (re_search): wrong return value for \A.
+
+Thu Sep 3 14:08:14 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c4 released.
+
+Tue Sep 1 10:47:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (slow_search): do not compare llen and blen. llen may
+ be longer than blen, if little contains 0xff.
+
+ * regex.c (mbctab_euc): set 0x8e as multibyte character.
+
+ * string.c (str_inspect): mask character for octal output.
+
+Mon Aug 31 15:32:41 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): use calculated offset if exactn is the
+ first opcode in the compiled regexp.
+
+ * regex.c (bm_search): use Boyer-Moore search for simple search.
+
+ * regex.c (must_instr): wrong length check if pattern includes
+ byte escape by 0xff.
+
+ * regex.c (re_compile_pattern): need not to check current_mbctype.
+
+Sat Aug 29 16:31:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_check_safe_str): avoid calling rb_id2name() in normal
+ cases to speed-up.
+
+ * eval.c (thread_raise): do not save context of terminated thread.
+
+ * regex.c (re_compile_pattern): mask \nnn over 256.
+
+Sat Aug 29 02:09:46 1998 Koji Arai <JCA02266@nifty.ne.jp>
+
+ * sprintf.c (f_sprintf): wrong buffer size check.
+
+Fri Aug 28 01:57:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): accepts (?ix-ix) and (?ix-ix:...).
+
+Fri Aug 28 12:25:33 1998 Hiroshi Igarashi <igarashi@ueda.info.waseda.ac.jp>
+
+ * ruby.c (ruby_require_modules): load modules in appearing order.
+
+Fri Aug 28 01:57:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): accepts (?ix-ix) and (?ix-ix:...).
+
+Thu Aug 27 12:54:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c3 released.
+
+Wed Aug 26 14:40:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): check whether ruby_class is properly set,
+ before accessing it.
+
+ * eval.c (rb_obj_instance_eval): ruby_class should be Qnil for
+ special objects like Fixnums.
+
+ * ext/tkutil/tkutil.c (Init_tkutil): removes calls to
+ rb_yield_0(). used instance_eval() instead in the tk.rb.
+
+Wed Aug 26 11:47:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): pop non-greedy stack elements on success.
+
+Wed Aug 26 09:25:35 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ruby.h: add #define environ for cygwin32.
+
+Tue Aug 25 08:57:41 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (rb_ary_sort_bang): temporarily freeze sorting array.
+
+Mon Aug 24 18:46:44 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * dln.c (dln_find_1): path check was too strict.
+
+Mon Aug 24 15:28:11 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * parse.y (f_arglist): opt_nl added after f_args.
+
+Fri Aug 21 01:06:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c: grand renaming on socket.c.
+
+ * ext/socket/socket.c (inet_aton): supply inet_aton for those
+ systems that do not have it.
+
+ * ext/socket/socket.c (setipaddr): use inet_aton instead of
+ inet_addr.
+
+ * ext/socket/socket.c (tcp_s_gethostbyname): new method: works
+ like Socket.gethostbyname but returning array contains ip-addrs
+ as octet decimal string format like "127.0.0.1".
+
+ * ext/socket/socket.c (mkhostent): return format changed to
+ [host, aliases, type, ipaddr..] as documented.
+
+Wed Aug 19 00:31:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_ctl): forgot to place TRAP_END at right position.
+
+Fri Aug 14 11:01:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (call_trace_func): save __FILE__, __LINE__ before
+ executing trace_func, since trace function should not corrupt
+ line number information.
+
+Thu Aug 13 15:09:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_s_new): was marking unallocated region on GC.
+
+Tue Aug 11 11:57:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c2 released.
+
+Mon Aug 10 14:05:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * process.c (f_system): removed fflush(stdin).
+
+Fri Aug 7 17:44:44 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (err_snprintf): replace sprintf for fixed sized buffer,
+ with snprintf to avoid buffer over-run. For systems which does
+ dot provide snprintf, missing/snprintf.c added.
+
+Wed Aug 5 00:47:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (rb_reg_search): recycle match object.
+
+Mon Aug 3 09:17:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (rb_str_gsub_bang): do not allocate temporary string.
+
+ * string.c (rb_str_sub_bang): use inline replace.
+
+Wed Jul 29 00:36:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (hash_s_new): the default value can be specified.
+
+ * hash.c (hash_default): method to set the default value.
+
+ * hash.c (hash_aref): now returns the default value.
+
+Tue Jul 28 13:03:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_s_new): argument to specify initial value is added.
+
+ * array.c (ary_s_new): specifies size, not capacity.
+
+Mon Jul 27 12:39:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_replace): zero fill for expansion gap.
+
+ * regex.c (mbctab_euc): set flags on for 0xA1-0xFE. suggested by
+ <inaba@st.rim.or.jp>.
+
+ * string.c (str_inspect): consider current_mbctype.
+
+Sun Jul 26 15:37:11 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * array.c (ary_s_new): Array.new(1<<30) dumps core.
+
+Fri Jul 24 13:40:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c1 released.
+
+Fri Jul 24 02:10:22 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (r_bytes2): allocated buffer size was too short.
+
+ * marshal.c (w_object): saves all options, not only casefold flag.
+
+ * re.c (reg_clone): now copies options properly.
+
+ * re.c (reg_get_kcode): code number was wrong.
+
+Thu Jul 23 13:11:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_attr): argument should be symbol or string.
+
+Wed Jul 22 11:59:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (calculate_must_string): wrong offset added.
+
+Wed Jul 22 11:59:59 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * st.c (rehash): still had a GC problem. fixed.
+
+Tue Jul 21 13:19:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (gc_mark_threads): crashed on GC before thread allocation.
+
+ * st.c (rehash): GC during rehash caused SEGV.
+
+Tue Jul 21 01:25:10 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (f_sprintf): integer formatter totally re-written.
+
+ * sprintf.c (remove_sign_bits): support uppercase hexadecimal.
+
+Sat Jul 18 00:14:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (f_sprintf): proper sign position for %X and %O.
+
+Fri Jul 17 14:10:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1c0 released.
+
+Fri Jul 17 08:01:49 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * process.c (f_exec): Check_SafeStr() added.
+
+ * process.c (f_system): Check_SafeStr() moved before fork().
+
+Thu Jul 16 22:58:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (scan_once): substrings to the block should not be
+ tainted. use reg_nth_match(), not str_substr().
+
+ * string.c (str_substr): needed to transfer taint.
+
+Thu Jul 16 16:15:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * gc.c (xmalloc): object allocation count added to GC trigger.
+
+ * eval.c (thread_save_context): avoid marking uninitialized stack
+ in thread_mark. GC may be triggered by REALLOC_N().
+
+Wed Jul 15 15:11:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_31.
+
+Wed Jul 15 15:05:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_create): exit() and abort() in threads now
+ forwarded to main_thread.
+
+Tue Jul 14 14:03:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (obj_instance_variables): list names that is not
+ instance variables.
+
+ * gc.c (GC_MALLOC_LIMIT): choose smaller limit value.
+
+Mon Jul 13 12:39:38 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (str2cstr): should not return NULL.
+
+Fri Jul 10 11:51:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (gettable): needed to add dyna_in_block() check.
+
+Thu Jul 9 17:38:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_30.
+
+Thu Jul 9 16:01:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sprintf.c (fmt_setup): format specifier for long needed.
+
+ * sprintf.c (f_sprintf): ditto.
+
+ * numeric.c (fix2str): ditto.
+
+ * eval.c (thread_create): no more ITIMER_REAL.
+
+ * eval.c (thread_create): thread finalization needed before
+ aborting thread if thread_abort is set.
+
+Wed Jul 8 18:17:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (big_pow): abandon power by bignum (too big).
+
+Tue Jul 7 13:58:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_catch): add C level catch/throw feature.
+
+Mon Jul 6 15:18:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (arg): proper return values for `||=' and `&&='.
+
+Fri Jul 3 16:05:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_29.
+
+Fri Jul 3 11:20:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (r_byte): byte should not extend sign bit.
+
+ * numeric.c (fix_mul): use FIX2LONG() instead of FIX2INT() for
+ 64bit architectures.
+
+ * marshal.c (r_bytes): remove weird casting between pointer and int.
+
+ * process.c (proc_setsid): new method Process#setsid().
+
+Thu Jul 2 12:49:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * marshal.c (w_object): remove `write_bignum' label for 64bit
+ architectures.
+
+ * marshal.c (r_bytes): needs int, not long.
+
+Wed Jul 1 14:21:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (flo_plus): should not allow addition with strings.
+
+Wed Jul 1 13:09:01 1998 Keiju ISHITSUKA <keiju@rational.com>
+
+ * numeric.c (num_uminus): wrong coerce direction.
+
+Tue Jun 30 10:13:44 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (f_p): accepts arbitrary number of arguments.
+
+ * eval.c (rb_yield_0): there's some case that iterator_p() returns
+ true even if the_block was not set. check added.
+
+Tue Jun 30 01:05:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (BEGIN_CALLARGS): adjust the_block before evaluating the
+ receiver's value and the arguments.
+
+Fri Jun 26 18:02:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_28.
+
+Fri Jun 26 11:01:26 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (str_aset_method): needed to convert to string.
+
+Thu Jun 25 02:05:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): optimize for `.*' at beginning of the
+ pattern.
+
+ * regex.c (re_search): optimize for character class repeat at
+ beginning of the pattern.
+
+ * regex.c (re_compile_pattern): detect optimization potential for
+ the compiled patterns.
+
+Thu Jun 25 00:02:26 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * re.c (reg_s_new): flag value was wrong.
+
+Wed Jun 24 23:45:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_search): wrong anchor handling for reverse search.
+
+Wed Jun 24 02:18:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (mlhs): `((a,b)),c = [[1,2]],3' assigns a=1,b=2,c=3.
+
+Tue Jun 23 11:46:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): `&&=' and `||=' added.
+
+Sat Jun 20 02:53:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (assignable): nesting local variables should have higher
+ priority than normal local variables for assignment too.
+
+Fri Jun 19 18:28:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_27.
+
+Fri Jun 19 14:34:49 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (assign): support hack for nested multiple assignment.
+
+ * parse.y (mlhs): nested multiple assignment.
+
+ * eval.c (rb_eval): in-block variables now honors static scope.
+
+ * configure.in: RSHIFT check moved to configure.
+
+Thu Jun 18 16:46:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_26.
+
+Thu Jun 18 13:37:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (file_s_ftype): uses lstat(2) instead of stat(2).
+
+ * dir.c (dir_s_glob): there can be buffer overrun, check added.
+
+ * eval.c (f_binding): handles in-block variables declared after
+ binding's generation.
+
+ * numeric.c (flo_floor): floor, ceil, round added to Float.
+
+Wed Jun 17 11:20:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (gettable): nesting local variables should have higher
+ priority than normal local variables.
+
+Tue Jun 16 12:30:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (str2inum): handles `+ddd'.
+
+ * struct.c (make_struct): name parameter can be nil for unnamed
+ structures.
+
+Mon Jun 15 16:30:10 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (class_s_inherited): prohibiting to make subclass of
+ class Class.
+
+ * object.c (module_s_new): support for making subclass of Module.
+
+ * parse.y (yycompile): clear eval_tree before compiling.
+
+Fri Jun 12 17:58:18 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (eval): write back the_dyna_var into the block.
+
+Thu Jun 11 18:19:18 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_25.
+
+ * eval.c (dvar_add_compiling): register dyna_var at compile time.
+
+ * regex.c (re_compile_pattern): RE_DUP_MAX iteration is too big.
+
+Wed Jun 10 15:12:04 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_eof): do not block other threads.
+
+ * signal.c (trap): reserve SIGALRM for thread.
+
+ * eval.c (thread_create): use ITIMER_REAL also to avoid system
+ call blocking.
+
+ * io.c (f_syscall): add TRAP_BEG, TRAP_END around system calls.
+
+ * io.c (io_ctl): add TRAP_BEG, TRAP_END around system calls.
+
+ * enum.c (enum_collect): did not collect false values.
+
+ * array.c (ary_new2): forgot to initialize capa field.
+
+Tue Jun 9 18:36:15 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (str_split_method): split dumped core for "\xff".
+
+Tue Jun 9 16:22:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_24.
+
+Tue Jun 9 16:04:07 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/kconv/kconv.c (kconv_guess): more precise decision for EUC,
+ using jless algorithm (3 sequential EUC hiragana characters).
+
+Tue Jun 9 15:12:44 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/kconv/kconv.c (kconv_guess): wrong guess for EUC as SJIS in
+ some cases (0xe0 - 0xef).
+
+ * gc.c (xmalloc): insert size check for big (negative in signed)
+ allocation size.
+
+Tue Jun 9 02:54:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/parsedate.rb: wday moved to the last in the return values.
+
+Mon Jun 8 10:40:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_split_method): split dumped core for "\0".
+
+Sat Jun 6 22:50:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (calculate_must_string): wrong condition for
+ {start,stop}_nowidth.
+
+ * regex.c (re_match): various features imported from GNU regex.c
+ 0.12, such as nested grouping, avoiding infinite loop with empty
+ match, etc.
+
+ * regex.c (register_info_type): now use union.
+
+ * regex.c (re_search): more precise anchor(^) check.
+
+Wed Jun 3 18:07:54 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_raise): check rb_in_compile, not rb_in_eval.
+
+Mon Jun 1 05:26:06 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * string.c (trnext): casting to signed char* needed.
+
+Tue Jun 2 16:00:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c (udp_addrsetup): error check enhanced.
+
+ * ext/socket/socket.c (sock_s_getservbyaname): use strtoul(), if
+ possible.
+
+Sat May 30 07:10:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_prepare_re): no more needless regular expression
+ recompile on casefold conditions.
+
+Thu May 28 18:02:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (nil_plus): no more `+' method for nil.
+
+Wed May 27 17:33:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (hash_fetch): new method.
+
+ * regex.c (re_search): check whether translate table is set.
+
+Tue May 26 11:39:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_23.
+
+ * parse.y (yylex): no UPLUS/UMINUS for 1st argument if
+ parenthesises are omitted.
+
+Tue May 26 01:09:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): (?XI) for turns off the
+ corresponding option.
+
+Mon May 25 12:38:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): inline i option (?i).
+
+ * regex.c (re_compile_pattern): inline x option (?x).
+
+ * regex.c (re_compile_pattern): x option for regexp.
+
+ * dir.c (dir_s_open): returns block's evaluated value.
+
+ * io.c (f_open): returns block's evaluated value.
+
+ * ext/curses/curses.c (curses_addstr): nil argument caused SEGV.
+
+Fri May 22 11:52:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): push mark on (?:), so that
+ laststart check for {a,b} can be done.
+
+Thu May 21 17:31:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_match): wrong match (too non-greedy) for `{a,b}?'.
+
+ * io.c (io_lineno): new method IO#lineno, IO#lineno=.
+
+Wed May 20 06:04:43 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * BeOS patch.
+
+Wed May 20 16:32:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (BIGDN): use RSHIFT(), instead of mere `>>'.
+
+Tue May 19 16:36:26 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_22.
+
+Tue May 19 16:31:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (assignable): specification changed for in-block
+ variable definition.
+
+ * eval.c (dyna_var_asgn): error in in-block variables' compile
+ time definition.
+
+ * parse.y (str_extend): wrong nesting detection.
+
+Tue May 19 09:47:55 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * numeric.c (num2int): re-defined (extensions may use this).
+
+Mon May 18 16:40:50 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * error.c (get_syserr): BeOS support.
+
+ * configure.in: modified for BeOS.
+
+ * string.c (str_dump): do not call isascii().
+
+ * sprintf.c (remove_sign_bits): forgot to initialize end pointer.
+
+ * glob.c: #include <alloca.h> added.
+
+Mon May 18 14:52:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_21.
+
+Mon May 18 03:27:57 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * file.c (file_s_expand_path): optional second argument
+ `default_directory' added.
+
+Sat May 16 22:06:52 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * error.c (RAISE_ERROR): wrong error message
+
+Fri May 15 14:43:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_20.
+
+Thu May 14 14:44:21 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * sun4 cc patches for intern.h and regex.h.
+
+Thu May 14 14:03:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * random.c (RANDOM_MAX): guessing proper maximum value for random
+ numbers.
+
+ * random.c (f_rand): use drand48 if possible.
+
+Wed May 13 19:05:20 1998 MAEDA shugo <shugo@aianet.ne.jp>
+
+ * BeOS patches for io.c, error.c and config.guess.
+
+Wed May 13 14:56:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_19.
+
+ * most of the Mac and BeOS patches merged, except path separators.
+
+ * error.c (err_append): generated SyntaxError was String.
+
+ * ruby.h: xxx2INT, xxx2UINT checks values as int, not long.
+
+ * ruby.h: remove typedef's. INT, UINT, UCHAR, USHORT.
+
+Tue May 12 17:38:00 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_18.
+
+Tue May 12 11:38:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * error.c (syserr_errno): returns errno of the SystemCallError.
+
+ * error.c (rb_sys_fail): saves errno in the Exception.
+
+ * error.c (set_syserr): no need to protect syserr_list.
+
+ * error.c (rb_sys_fail): no more bufsize limit.
+
+ * error.c (set_syserr): integer value of errno can be accessed by
+ Errno::EXXX::Errno.
+
+Sun May 10 03:10:33 1998 WATANABE Tetsuya <tetsu@jpn.hp.com>
+
+ * io.c (io_tell etc.): moved from File class to IO class.
+
+Fri May 8 12:26:37 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (pack_unpack): should be unsigned int (was signed int).
+
+Thu May 7 16:34:10 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * pack.c (pack_pack): `V', `N' uses newly created NUM2UINT().
+
+ * ruby.h (NUM2UINT): new macro.
+
+ * bignum.c (big2uint): try to convert bignum into UINT.
+
+ * re.c (reg_match): needed to return false for match with nil.
+
+ * gc.c (obj_free): wrong condition to free string.
+
+Wed May 6 21:08:08 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ruby.c (ruby_process_options): modified for DJGPP.
+
+Wed May 6 15:48:03 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_17.
+
+Wed May 6 01:37:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c: remove global variable `errat'.
+
+ * eval.c (rb_longjmp): embed error position information in the
+ exception object.
+
+Sat May 2 12:20:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_search): supports reverse search.
+
+ * string.c (str_index_method): does update $~ etc.
+
+ * eval.c (f_load): needed to clear the_dyna_vars.
+
+ * eval.c (dyna_var_asgn): do not push dyna_var, which is id == 0.
+
+ * error.c (Init_Exception): NotImplementError is no longer
+ StandardError, which is not handled by default rescue.
+
+Fri May 1 00:35:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (proc_options): `-d' turns on verbose flag too.
+
+ * error.c (exception): last argument may be the superclass of the
+ defining exception(s).
+
+ * io.c (Init_IO): EOFError is now subclass of the IOError.
+
+ * io.c (Init_IO): forgot to define IOError.
+
+ * error.c (Init_Exception): old Exception class renamed to
+ StandardError. Exception now replaces old GlobalExit.
+
+ * error.c (Init_Exception): Exception is now the root of the
+ Global Exits. There's no longer GlobalExit class.
+
+ * util.c (ruby_mktemp): check TMP, TMPDIR first.
+
+Thu Apr 30 01:08:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/tk.rb: call 'unknown', if proc not defined.
+
+ * eval.c (handle_rescue): default rescue handles `Exceptional' not
+ only the instance of the `Exception's.
+
+ * eval.c (f_raise): exception can be any object.
+
+ * time.c (time_gm_or_local): call time_gmtime or time_localtime.
+
+ * eval.c (f_raise): raises TypeError if the class which is not a
+ subclass of String is specified (checked in exc_new()).
+
+ * error.c (exc_new): need to check whether invalid class (not a
+ subclass of String) is specified.
+
+Wed Apr 29 21:05:44 1998 WATANABE Hirofumi <eban@os.rim.or.jp>
+
+ * ruby.c (proc_options): option '-e' via tempfile.
+
+Tue Apr 28 15:27:58 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_16.
+
+Tue Apr 28 00:07:38 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (obj_is_proc): type check predicate.
+
+ * eval.c (obj_is_block): ditto.
+
+Mon Apr 27 16:59:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/gtk/gtk.c (Init_gtk): use timeout, not idle to avoid
+ consuming CPU too much.
+
+ * lib/tk.rb: use tcltklib#_invoke instead of `_eval'.
+
+Mon Apr 27 16:59:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_sort): use dup, not clone.
+
+Mon Apr 27 13:46:27 1998 Tadahiro Maebashi <maebashi@iij.ad.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_invoke): invoke tcl command
+ directly. need not worry about escaping tcl characters.
+
+Mon Apr 27 12:04:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * random.c (f_rand): do not call srand() implicitly.
+
+Fri Apr 24 14:35:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_15.
+
+ * parse.y (assignable): dyna_var_asgn actually defines nested
+ local variables in outer context.
+
+ * random.c (f_rand): call srand(), if it has not called yet.
+
+ * random.c (f_srand): use tv_usec as the default seed.
+
+ * eval.c (rb_eval): values of nested local variables should be
+ independent.
+
+ * eval.c (rb_yield_0): local variables wrong nested conditions.
+
+Wed Apr 22 23:27:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (select_get_io): get IO object by `to_io'.
+
+ * io.c (io_to_io): method to retrieve IO object, from delegating
+ object for example.
+
+Wed Apr 22 16:52:37 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_14.
+
+ * string.c (str_modify): check for embedded pointer reference.
+
+ * gc.c (obj_free): ditto.
+
+ * pack.c (pack_pack): p/P template to embed pointers.
+
+Wed Apr 22 00:07:10 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * array.c (ary_rindex): embarrassing typo.
+
+Tue Apr 21 12:31:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_13.
+
+ * configure.in (RUBY_LIB): supports --program-{prefix,suffix}.
+
+ * array.c (ary_rindex): new method.
+
+ * io.c (io_binmode): should return self.
+
+Tue Apr 21 08:23:04 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * parse.y (here_document): calling parse_string with wrong
+ arguments.
+
+ * struct.c (struct_aset): problem member assignment with name.
+
+Mon Apr 20 14:47:49 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_12.
+
+ * time.c (time_arg): args may be string (support for reduced
+ implicit type conversion).
+
+ * lib/base64.rb: changed to use pack/unpack with `m' template.
+
+Mon Apr 20 06:23:20 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (mod_remove_const): new method.
+
+Sat Apr 18 03:53:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (hash_each_with_index): removed. use Enumerable's
+ each_with_index instead.
+
+ * class.c (rb_include_module): check for super modules, since
+ module's included modules may be changed.
+
+Fri Apr 17 21:50:47 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * marshal.c (r_long): r_byte() may return signed byte.
+
+Fri Apr 17 11:58:30 1998 NAGAI Hidetoshi <nagai@dumbo.ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop): thread and interrupt check.
+
+Fri Apr 17 11:06:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (find_file): try to fopen() to check whether file exists.
+
+ * ruby.c (load_file): ditto.
+
+ * struct.c (struct_aset): struct member can be set by member name.
+
+Fri Apr 17 00:47:19 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/extmk.rb.in: added m68k-human support
+
+ * file.c (LOCK_SH): defines moved.
+
+ * array.c (ary_flatten_bang): simplified loop.
+
+Thu Apr 16 16:52:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_11.
+
+ * lib/tk.rb: thread support (experimental - maybe slow).
+
+ * eval.c (rb_longjmp): trace event on exception in raising
+ context, just before raising exception.
+
+ * struct.c (struct_s_members): forgot to check singletons.
+
+ * struct.c (struct_aref): members can be accessed by names too.
+
+ * array.c (ary_flatten): new method.
+
+ * eval.c (rb_longjmp): prints exception information with `-d'.
+
+ * object.c (any_to_s): remove class name restriction.
+
+Thu Apr 16 01:38:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (thread_flock): do not block other threads.
+
+ * eval.c (thread_trap_eval): signals are now delivered to the
+ current thread again. In case that the current thread is dead,
+ signals are forwarded to the main thread.
+
+ * string.c (str_new4): need not to duplicate frozen strings.
+
+Wed Apr 15 08:33:47 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * struct.c (struct_inspect): remove restriction for struct names.
+
+Wed Apr 15 02:55:02 1998 Kazuya 'Sharl' Masuda <sharl@www.ufo.co.jp>
+
+ * x68 patches to config.sub, ext/extmk.rb.in
+
+Wed Apr 15 01:22:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_dup_frozen): do not duplicate frozen strings.
+
+ * parse.y (yylex): allow nested parenthesises.
+
+ * io.c (obj_displayln): prints newline after `display'ing the
+ receiver.
+
+ * io.c (io_puts): avoid generating "\n" each time. use RS_default
+ instead.
+
+ * io.c (f_p): ditto.
+
+Tue Apr 14 22:18:17 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * struct.c (struct_aref): should not subtract negative index.
+
+Tue Apr 14 11:34:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_10.
+
+ * parse.y: token names prefixed by `t'.
+
+ * struct.c (struct_s_def): supports subclassing of Struct.
+
+ * io.c (io_s_new): supports subclassing of IO.
+
+Mon Apr 13 11:07:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (f_binding): need to restore method name.
+
+ * eval.c (rb_call0): raises SystemStackError, not Fatal.
+
+ * io.c (obj_display): same as `print self'.
+
+ * io.c (f_p): can now be called in the method form.
+
+ * re.c (reg_regsub): needed to be mbchar aware.
+
+Mon Apr 13 13:18:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_trap_eval): all signals delivered to main_thread.
+
+Mon Apr 13 12:47:03 1998 TAKAHASHI Masayoshi <maki@inac.co.jp>
+
+ * re.c (kcode_set_option): did not set SJIS on SJIS condition.
+
+Sun Apr 12 22:14:07 1998 Kazunori NISHI <kazunori@swlab.csce.kyushu-u.ac.jp>
+
+ * array.c (ary_uniq_bang): should be `==', not `='. embarrassing.
+
+Sat Apr 11 02:13:30 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_subseq): SEGVed for `[][1,1]'.
+
+Fri Apr 10 21:29:06 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * array.c (ary_subseq): add check for beg larger than array length.
+
+Wed Apr 8 17:24:11 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * dir.c (dir_s_open): can be called with block (like IO#open).
+
+ * dir.c (dir_s_chdir): print directory path on error.
+
+ * dir.c (dir_s_chroot): ditto
+
+ * dir.c (Init_Dir): needed to override `new'.
+
+Thu Apr 9 18:24:58 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_09.
+
+ * string.c (str_cmp): do not depend on sentinel at the end of the
+ strings.
+
+ * string.c (str_chomp_bang): forgot to set the sentinel.
+
+Wed Apr 8 00:59:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * bignum.c (big2int): converted int may be too big to fit in
+ signed int.
+
+ * parse.y (arg): `foo += 1' should not cause an error.
+
+ * variable.c (rb_const_defined): returned false even if the
+ constant is defined at the top level.
+
+ * eval.c (f_local_variables): dyna_var->id may be null. should
+ have checked before calling str_new2().
+
+Tue Apr 7 01:15:15 1998 Kaneko Naoshi <wbs01621@mail.wbs.or.jp>
+
+ * re.c (reg_regsub): need to check string boundary.
+
+Tue Apr 7 19:19:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_cmp): returns either 1, 0, -1.
+
+ * array.c (ary_cmp): should check array length, too
+
+Tue Apr 7 18:50:16 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_08.
+
+Tue Apr 7 18:31:27 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * instruby.rb (mandir): dll installation for cygwin32
+
+Tue Apr 7 01:16:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * config.sub (maybe_os): TOWNS support?
+
+ * config.guess: too strict check for libc versions on linuxes.
+
+ * experimental release 1.1b9_07.
+
+ * array.c (ary_cmp): compare each element using `<=>'.
+
+ * hash.c (hash_each_with_index): yields [value, key] pair.
+
+ * class.c (class_protected_instance_methods): list protected
+ method names.
+
+ * class.c (ins_methods_i): exclude protected methods.
+
+ * eval.c (PUSH_BLOCK): dynamic variables can be accessed from
+ eval() with bindings.
+
+Mon Apr 6 14:49:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_yield): must return evaluated value.
+
+Fri Apr 3 13:07:29 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_schedule): context switch bypassed on wrong
+ conditions.
+
+ * variable.c (rb_name_class): set classname by id before String
+ class is initialized (1.0 behavior restored).
+
+Fri Apr 3 11:25:45 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (num2int): no implicit conversion from string.
+
+ * numeric.c (num2int): check whether `to_i' returns an Integer.
+
+ * numeric.c (num_zero_p): new method.
+
+ * numeric.c (num_nonzero_p): new method. returns the receiver if
+ it's not zero.
+
+ * eval.c (obj_instance_eval): the_class should be the object's
+ singleton class.
+
+ * error.c (exc_s_new): message is converted into a string.
+
+Thu Apr 2 18:31:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (obj_call_init): every object call `initialize'.
+
+Wed Apr 1 08:51:53 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * parse.y (stmt): UNTIL_MOD should be for stmt, not only for expr.
+
+Wed Apr 1 01:20:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (true_and): boolean operators &, | and ^.
+
+Tue Mar 31 13:23:58 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_compact_bang): returns nil, if it does not modify
+ the array like String's bang methods.
+
+ * array.c (ary_uniq_bang): new method to remove duplicate items.
+
+ * eval.c (bind_s_new): new method.
+
+ * numeric.c (num2int): raise exception if Fixnums too big to
+ convert into `int' in case that sizeof(int) < sizeof(INT).
+
+ * string.c (str_center): SEGV on negative width.
+
+ * eval.c (eval): forgot to set sourcefile.
+
+Mon Mar 30 11:12:29 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (f_test): raises exception for unknown command.
+
+ * eval.c (Init_eval): `class_eval': alias to the module_eval.
+
+Mon Mar 30 18:50:42 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * string.c (str_capitalize_bang): did not check string modification.
+
+ * string.c (str_delete_bang): wrong conversion.
+
+ * string.c (str_intern): typo in error message.
+
+Mon Mar 30 01:44:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (obj_instance_eval): accepts block as evaluation body.
+ No compilation needed each time.
+
+ * eval.c (mod_module_eval): ditto
+
+ * file.c (file_s_umask): umask did not return old values, if no
+ argument given.
+
+Sun Mar 29 00:54:23 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (f_throw): nil returned always.
+
+Sat Mar 28 20:40:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_06.
+
+Sat Mar 28 16:07:11 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (io_closed): should not cause exception for closed IO.
+
+ * string.c (str_tr): returned nil for success.
+
+Sat Mar 28 00:47:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (f_local_variables): new method to return an array of
+ local variable names.
+
+ * variable.c (obj_instance_variables): now returns an array of
+ variable names, as described in the reference.
+
+ * eval.c (rb_attr): honors default method visibility of the
+ current scope.
+
+Fri Mar 27 13:49:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_05.
+
+ * ruby.c (ruby_prog_init): `site_ruby' added to load_path.
+
+ * ruby.c (ruby_prog_init): load-path order changed. Paths in
+ the RUBYLIB environment variable comes first in non-tainted
+ mode.
+
+Thu Mar 26 11:51:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_call): new feature: `protected' methods.
+
+ * string.c (str_dump): new method.
+
+ * eval.c (block_pass): block argument can be nil, which means no
+ block is supplied for the method.
+
+Wed Mar 25 21:20:13 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * string.c (str_reverse_bang): string copied to wrong place.
+
+Wed Mar 25 08:12:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (flo_modulo): caused SEGV if left operand is not a
+ float value.
+
+ * eval.c (f_eval): optional third and fourth argument to specify
+ file-name and line-number.
+
+ * eval.c (eval): file-name and line-number set properly.
+
+ * parse.y (assign_in_cond): literal assignment is now warning, not
+ compile error.
+
+ * error.c (Warn): Warn() always print message, OTOH Waring()
+ prints when verbose flag is set.
+
+Tue Mar 24 12:50:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (ruby_prog_init): `.' should come last in the load-path.
+
+ * eval.c (Init_eval): `__send__', alias for `send'.
+
+Mon Mar 23 12:44:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_chomp_bang): now takes `rs' as an argument.
+
+ * eval.c (thread_free): main_thread should not be freed.
+
+Fri Mar 20 16:40:34 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_chomp_bang): chomp! (and other ! methods) returns
+ nil if it does not modify the string.
+
+ * string.c (str_sub_iter_s): should check last pattern since it
+ may be matched to null.
+
+Thu Mar 19 13:48:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_04.
+
+ * parse.y (yylex): `10e0.9' should cause syntax error.
+
+Wed Mar 18 17:46:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (load_file): new file object constant DATA. Only
+ available for the script from the file.
+
+ * regex.c (re_match): forwarding failure point popped too much.
+
+Tue Mar 17 18:23:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * math.c (math_frexp): newly added.
+
+ * math.c (math_ldexp): ditto.
+
+ * bignum.c (bigdivmod): calculates modulo.
+
+ * numeric.c (fix_remainder): returns reminder, formerly introduced
+ as modulo.
+
+ * numeric.c (fix_modulo): calculates proper `modulo'.
+
+ * bignum.c (bigdivmod): wrong sign for reminder.
+
+Mon Mar 16 17:07:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_03.
+
+Mon Mar 16 16:33:53 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (pipe_finalize): needed to add pipe_finalize to pipes on
+ cygwin32.
+
+Mon Mar 16 14:11:06 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (ins_methods_i): needed to consider NOEX_UNDEF.
+
+Mon Mar 16 13:23:53 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (io_check_closed): check for `fptr->f2 == NULL'.
+
+ * io.c (io_fptr_close): ditto.
+
+Mon Mar 16 11:49:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (pipe_atexit): free()ing referencing pipe_list.
+
+ * range.c (range_length): returns zero, if the first is greater
+ than the last.
+
+ * signal.c (trap_restore_mask): restore signal mask before raising
+ exceptions and throws.
+
+Fri Mar 13 13:49:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_02.
+
+ * object.c (mod_clone): need to dups constants and instance
+ variables.
+
+ * eval.c (rb_eval): forgot to initialize body for NODE_DEFS.
+
+ * eval.c (rb_eval): retrieve self from calling frame, since self
+ changes sometimes.
+
+ * env.h (FRAME): need to save self in the calling frame.
+
+ * io.c (f_gets_method): rs should be initialized by RS.
+
+Thu Mar 12 15:33:57 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * experimental release 1.1b9_01.
+
+ * range.c (range_s_new): check values by `first <= last'.
+
+ * parse.y (lastline_set): fixed offset for $_ and $~ in the local
+ variable space.
+
+Wed Mar 11 02:14:17 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_gets): handle normal case specially for speed.
+
+ * eval.c (rb_disable_super): function to disable superclass's
+ method explicitly.
+
+ * eval.c (rb_eval): inherits previous method definition's
+ NOEX_UNDEF-ness, if exists.
+
+ * class.c (rb_define_method): disables superclass's overriding
+ method by default.
+
+Wed Mar 11 01:40:48 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * numeric.c (flo_gt,etc.): do not depend on `<=>', to handle NaN.
+
+Tue Mar 10 00:03:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (load_file): understands multiple options in #! line.
+
+ * regex.c (re_compile_pattern): support for [:alpha:] etc.
+
+Mon Mar 9 16:53:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.h (GetOpenFile): embed io_check_closed in GetOpenFile.
+
+ * sprintf.c (f_sprintf): zero padding failed for negative
+ integers.
+
+ * sprintf.c (remove_sign_bits): failed to remove some bits.
+
+Sat Mar 7 21:51:46 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * class.c (ins_methods_i): body may be NULL for some case.
+
+Fri Mar 6 17:23:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (mbcinit): table driven mbchar detection.
+
+ * object.c (obj_alloc): check for allocating instance for the
+ primitive classes (mostly perfect).
+
+ * ext/curses/curses.c (curses_finalize): restore original state at
+ interpreter termination.
+
+ * ext/curses/curses.c (curses_addstr): forgot to check argument
+ type (caused SEGV). now uses STR2CSTR() macro.
+
+Thu Mar 5 13:47:39 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (block_pass): accepts method object as block args.
+
+ * eval.c (f_missing): use any_to_s() for stringify.
+
+Wed Mar 4 01:39:52 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (block_arg): new syntax - block argument in the
+ calling arglist.
+
+ * eval.c (rb_call): no module search. simplified a lot.
+
+ * eval.c (rb_eval): block arg support.
+
+ * parse.y (f_block_arg): new syntax - block argument in the
+ formal arglist.
+
+Tue Mar 3 14:20:15 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (obj_method): returns bound method object.
+
+ * eval.c (rb_call): argument check for empty methods.
+
+ * ruby.h (NUM2CHR): new macro, originally from curses module.
+
+Tue Mar 3 13:03:35 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * io.c (io_putc): new method.
+
+Tue Mar 3 11:21:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_inspect): more strict charcode detection.
+
+ * eval.c (thread_stop): stopping only thread raises ThreadError
+ exception.
+
+Tue Mar 3 08:04:56 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
+
+ * struct.c (struct_alloc): incomplete struct initialization made
+ GC to access unallocated addresses.
+
+Mon Mar 2 16:28:27 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (thread_stop_method): remove Thread#stop.
+
+Fri Feb 27 18:16:26 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b9 released.
+
+Fri Feb 27 09:36:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (hash_delete_nil): needed to compare value to nil, since
+ nil is the valid key for hashes.
+
+ * hash.c (hash_foreach_iter): rehashing causes IndexError.
+
+ * hash.c (hash_foreach_iter): rehash check by pointer comparison.
+
+Thu Feb 26 17:22:13 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (fname): convert reswords into symbols.
+
+ * parse.y (reswords): reserved words are now embedded in the
+ syntax (sigh).
+
+ * parse.y: now reserved words can be method names safely.
+
+Wed Feb 25 15:50:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (mod_module_eval): clear the_scope's PRIVATE flag before
+ calling eval().
+
+ * gc.c (gc_call_finalizer_at_exit): run finalizers before any data
+ object being freed.
+
+ * eval.c (rb_eval): needed to keep prot_tag->retval before
+ evaluating the ensure clause.
+
+Tue Feb 24 11:16:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): reserved words can be appear as method names at
+ right after 'def' and `.'(dot), like foo.next.
+
+ * eval.c (return_check): checks for return out of thread (formerly
+ done in return_value).
+
+ * eval.c (POP_TAG): copy retval to outer level.
+
+ * eval.c (return_value): just set retval, no check, no unwinding.
+
+ * parse.y (nextc): line continuation by backslash at end of line.
+
+ * regex.c (re_compile_pattern): forgot to clear pending_exact on
+ closing parentheses.
+
+ * parse.y (assignable): should not assign dyna_var to true, if it
+ is already defined.
+
+Mon Feb 23 14:35:03 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (obj_is_kind_of): no longer accepts true/false/nil.
+
+ * object.c ({true,false,nil}_to_i): can be converted into integers.
+
+Mon Feb 23 12:11:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_s_quote): needed to be mbchar aware.
+
+ * eval.c (proc_s_new): wrong iter mark.
+
+Sat Feb 21 22:59:30 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * io.c (f_syscall): no argument check.
+
+Fri Feb 20 10:17:51 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b8 released.
+
+ * ext/kconv/kconv.c (kconv_kconv): default output code now be
+ determined according to the value of $KCODE.
+
+ * re.c (rb_get_kcode): can retrieve $KCODE from C code.
+
+ * parse.y (stmt): if/unless modifiers returns nil, if condition is
+ not established.
+
+Thu Feb 19 11:06:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/kconv/kconv.c (kconv_kconv): charcode can be specified by
+ code name (JIS, SJIS, EUC like value of $KCODE).
+
+ * regex.c (re_compile_pattern): forgot to fixup_jump for (?:..).
+
+ * regex.c (re_compile_pattern): needed to clear pending_exact on
+ non-registering grouping (?:...).
+
+Wed Feb 18 19:54:21 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (here_document): needed to set lex_state to EXPR_END.
+
+Wed Feb 18 18:45:10 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * patches for cygwin32 applied.
+
+Wed Feb 18 00:41:31 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_sub_s): needed to be mbchar aware to increment one
+ character.
+
+ * regex.c (re_match): \Z matches newline just before the end of
+ the string.
+
+Tue Feb 17 00:04:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_arg): Time.gm and Time.local now understands
+ Time#to_a format.
+
+ * string.c (str_sub_s): replace happened twice for null pattern.
+
+ * regex.c (re_search): null pattern should not match after newline
+ at the end of string.
+
+ * time.c (time_isdst): now returns boolean value.
+
+ * error.c (rb_check_type): treat special constants in messages.
+
+ * parse.y (yylex): new form `::Const' to see toplevel constants.
+
+ * parse.y (cond): SEGV on `if ()'.
+
+ * gc.c (obj_free): some data needed explicit free().
+
+Mon Feb 16 23:55:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (blk_free): release duplicated block informations.
+
+ * eval.c (blk_copy_prev): duplicate outer block information into
+ the heap, when proc/binding created.
+
+Mon Feb 16 14:38:25 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_mon): now 1 for January and so on.
+
+ * time.c (time_year): year in 19xx (no + 1900 needed anymore).
+
+Mon Feb 16 13:28:33 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): need to fetch mbchar's second byte
+ without translation.
+
+Mon Feb 16 12:29:27 1998 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * eval.c (f_pass_block): pass iterator block to other method.
+
+Fri Feb 13 08:16:11 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (parse_regx): handle \s before read_escape().
+
+ * parse.y (read_escape): `\s' in strings as space.
+
+Tue Feb 10 17:29:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b7 released.
+
+ * string.c (str_aset): string insertion by `str[n] = str2'.
+
+ * string.c (str_oct): does recognize `0x'.
+
+ * sprintf.c (f_sprintf): use base 10 for conversion from string to
+ integer.
+
+Mon Feb 9 14:51:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * numeric.c (do_coerce): proper error message.
+
+ * string.c (str_sum): bug - masked by wrong value. (sigh..)
+
+Sat Feb 7 15:11:14 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_empty): new method
+
+Fri Feb 6 01:42:15 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c (time_asctime): use asctime(3), not strftime(3).
+
+Thu Feb 5 18:58:46 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_fptr_close): do not free path on close().
+
+ * array.c (ary_filter): new method.
+
+ * enum.c (enum_each_with_index): new method.
+
+Thu Feb 5 14:10:35 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (primary): singleton class def can be appeared inside
+ method bodies.
+
+ * hash.c (hash_replace): replace content.
+
+ * string.c (str_replace_method): replace content.
+
+ * array.c (ary_replace_method): replace elements.
+
+ * string.c (str_succ_bang): String#succ!
+
+Thu Feb 5 18:20:30 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (str_upcase_bang): multi byte character support.
+
+Wed Feb 4 13:55:26 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (ary_reverse): SEGV on empty array reverse.
+
+Tue Feb 3 12:24:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (match_to_a): non matching element should be nil.
+
+ * ruby.c (ruby_load_script): load script after all initialization.
+
+ * bignum.c (str2inum): need to interpret prefix `0' of `0x'.
+
+Tue Feb 3 10:00:18 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * numeric.c (fix_rshift): use `sizeof(INT)*8' instead of 32.
+
+Mon Feb 2 14:09:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (set_arg0): grab environment region too.
+
+Thu Jan 29 18:36:25 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * process.c (rb_proc_exec): check `sh' to be exist.
+
+Thu Jan 29 18:18:19 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_stdio_set): assignment to $stdin or $stdout does
+ reopen() as well as $stderr.
+
+Thu Jan 29 14:18:40 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (mod_ancestors): should not include singleton classes.
+
+ * object.c (obj_type): should not return internal class.
+
+ * io.c (io_reopen): unwillingly closes stdio streams.
+
+Thu Jan 29 11:50:35 1998 Toshihiko SHIMOKAWA <toshi@csce.kyushu-u.ac.jp>
+
+ * ext/socket/socket.c (udp_addrsetup): forgot to use htons().
+
+Tue Jan 27 23:15:24 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * keywords: __FILE__, __LINE__ are available again.
+
+Fri Jan 23 14:19:28 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b6 released.
+
+ * object.c (mod_to_s): need to duplicate classpath.
+
+ * error.c (exc_inspect): need to duplicate classpath.
+
+Thu Jan 22 00:37:47 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h (STR2CSTR): new macro to retrieve char*.
+
+ * class.c (rb_define_method): `initialize' should always be
+ private, even if it defined by C extensions.
+
+ * eval.c (rb_eval): `initialize' should always be private.
+
+Thu Jan 22 16:21:08 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): some singleton class def cause SEGV.
+
+ * eval.c (TMP_ALLOC): replace ALLOCA_N, where thread context
+ switch may happen.
+
+Wed Jan 21 01:43:42 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (PUSH_FRAME): do not use ALLOCA_N(). crash on some
+ platforms that use missing/alloca.c.
+
+ * regex.c (re_compile_pattern): too many pops for non register
+ subexpr.
+
+ * parse.y (yylex): open parentheses after identifiers are argument
+ list, even if whitespaces have seen.
+
+Tue Jan 20 15:19:59 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (terms): quoted word list by %w(a b c).
+
+ * ext/tcltklib/extconf.rb: more accurate check for tcl/tk libs.
+
+ * file.c (rb_stat): most of the FileTest methods (and function
+ `test') accept File objects as the argument.
+
+Tue Jan 19 18:19:24 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/extmk.rb.in (install): there should be no newline after install:
+
+ * re.c (MIN): renamed from min(). there's a local variable named
+ min in the file, so that some cpp will raise an error.
+
+Mon Jan 19 16:30:05 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b5 released.
+
+ * process.c (rb_syswait): no exception raised.
+
+Fri Jan 16 00:43:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.h (CLONESETUP): copies its singleton classes too.
+
+ * class.c (singleton_class_attached): saves binded object in the
+ singleton classes.
+
+ * eval.c (rb_eval): calls singleton_method_added even in the
+ singleton class clauses.
+
+Fri Jan 15 23:22:43 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ruby.c (proc_options): -S does not recognize PATH.
+
+Thu Jan 15 02:03:12 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_clear_cache_by_id): clear only affected cache
+ entries.
+
+Wed Jan 14 02:14:48 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c: new UDP/IP socket classes.
+
+Tue Jan 13 10:00:18 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_cmp): ignorecase($=) works wrong.
+
+Fri Jan 9 13:19:55 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b4 released.
+
+ * eval.c (f_missing): class name omitted from the error message.
+
+ * error.c (exc_inspect): description changed.
+
+ * string.c (Init_String): GlobalExit's superclass did not filled,
+ since GlobalExit created earlier than String.
+
+Thu Jan 8 12:10:09 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (aryset): expr in the brackets can be null.
+
+Wed Jan 7 21:13:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_reopen): keep stderr unclosed.
+
+ * io.c (io_errset): keep stderr unclosed.
+
+Tue Jan 6 00:27:43 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y: syntax modified for `while expr do .. end' etc.
+
+ * process.c (f_exec,f_system): can supply arbitrary name for the
+ new process.
+
+Mon Jan 5 16:59:13 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * file.c (file_s_basename): removes any extension by ".*".
+
+Sun Jan 4 19:36:22 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * parse.y (yylex): needed to update lex_p (reading point).
+
+Sat Jan 3 19:14:14 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * class.c,object.c: duplicate defines mKernel and cFinxnum.
+
+Fri Jan 2 20:38:59 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/curses/curses.c (NUM2CHAR): uses the first character for
+ string arguments.
+
+ * array.c (ary_fill): did not extend array for ranges.
+
+ * array.c (beg_len): did not return end pos bigger than size.
+
+Fri Jan 2 02:09:16 1998 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * dir.c (dir_s_chdir): bug in nil check.
+
+ * array.c (ary_fill): bug in nil check.
+
+Tue Dec 30 11:46:23 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * hash.c (env_path_tainted): checks directories in PATH
+ environment variable are not world writable.
+
+ * ruby.c (load_file): invoke specified interpreter if the #! line
+ does not contain the word `ruby'.
+
+Fri Dec 26 03:26:41 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (uscore_get): type information included in the error
+ message.
+
+ * variable.c (f_untrace_var): does not free trace-data within
+ trace procedure.
+
+Thu Dec 25 02:50:29 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b3 released.
+
+ * ruby.h: inlining some functions on gcc 2.x
+
+Tue Dec 23 02:47:33 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): public/private information kept in the current
+ scope, to remove undesired state from the class/module.
+
+ * time.c (time_strftime): remove hidden limit of 100 bytes of
+ result string, using malloc'ed buffer.
+
+ * hash.c (hash_update): merges the contents of another hash,
+ overriding existing keys.
+
+ * regex.c (must_instr): totally re-written.
+
+ * io.c (read_all): try to allocate proper sized buffer using
+ fstat(2) for speedup.
+
+Sat Dec 20 00:27:28 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (must_instr): need to skip 2 bytes for mbchars.
+
+Fri Dec 19 01:18:29 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b2 released.
+
+ * eval.c (check_errat): check and convert (if necessary) traceback
+ information before assigning to the variable $@.
+
+ * eval.c (f_raise): optional third argument to specify traceback
+ information.
+
+ * io.c (f_open): prevent infinite recursive call.
+
+Thu Dec 18 19:33:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_rindex): now accepts regexp as index.
+
+Thu Dec 18 18:42:50 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/socket/extconf.rb: modified to detect win32 socket lib.
+
+Thu Dec 18 00:25:03 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * re.c (reg_equal): checks for source and casefold and kcode matching.
+
+ * marshal.c: became built-in module.
+
+ * ext/marshal/marshal.c (r_object): displays struct name for
+ non-compatible struct.
+
+ * string.c (str_index_method): now searches character (fixnum) in
+ the string.
+
+ * string.c (str_include): redefine `include?'.
+
+ * regex.c (re_match): start_nowidth saves current stack position
+ to stop_nowidth.
+
+ * regex.c (re_compile_pattern): add space to stop_nowidth to save
+ runtime stack position.
+
+Tue Dec 16 14:57:43 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (scan_once): wrong exception for regexp that match with
+ null string (use substr instead of subseq).
+
+Sat Dec 13 00:13:32 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (expr): remove bare assocs from expr rule.
+
+ * rbconfig.rb: renamed from config.rb (it was too generic name).
+
+Fri Dec 12 00:50:25 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (expr): warns if BEGIN or END appear in the method
+ bodies.
+
+ * string.c (str_match): calls y =~ x if y is neither String nor
+ Regexp so that eregex.rb works.
+
+ * eval.c (f_at_exit): to register end proc.
+
+ * class.c (rb_define_module_function): define 'function' method
+ for the Module, not private method.
+
+ * class.c (rb_define_function): function to define `function' method.
+
+ * eval.c (rb_eval): inherit visibility from superclass's method
+ except when it is set to `function'
+
+ * eval.c (rb_eval): new visibility status `function'.
+
+ * parse.y (yycompile): do not clear eval_tree. thus enable multiple
+ command line script by option `-e'.
+
+ * eval.c (rb_eval): END execute just once.
+
+ * parse.y (expr): BEGIN/END built in the syntax.
+
+Thu Dec 11 13:14:35 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (mod_le): Module (or Class) comparison.
+
+ * eval.c (rb_remove_method): raises NameError if named method does
+ not exist.
+
+ * ext/curses/curses.c: remove CHECK macro for BSD curses.
+
+Thu Dec 11 12:44:01 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * pack.c: sun4 cc patch
+
+Wed Dec 10 15:21:36 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/marshal/marshal.c (marshal_load): can supply evolution proc
+ object as optional second argument.
+
+ * re.c (reg_source): get source string of the regular expression.
+
+Tue Dec 9 10:05:17 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b1 released.
+
+ * parse.y (tokadd): token buffer overrun.
+
+ * ruby.c (ruby_prog_init): forgot to protect rb_argv0 from gc.
+
+ * eval.c (ruby_run): call finalizers at process termination.
+
+ * gc.c (gc_call_finalizer_at_exit): call free proc for every Data
+ Wrapper, and finalizer for specified objects at termination.
+
+ * version.c (show_version): version format changed.
+
+ * regex.c (re_match): wrong match with non-greedy if they appear
+ more than once in regular expressions.
+
+ * sample/ruby-mode.el (ruby-expr-beg): forgot to handle modifiers.
+
+Mon Dec 8 19:00:15 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_puts): just put a newline if no argument given.
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop): thread-aware tk handle
+ when $tk_thread_safe is set.
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop): use Tcl_DoOneEvent()
+ instead of Tk_MainLoop().
+
+Mon Dec 6 07:11:16 1997 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * io.c (io_puts): core dumped without any argument.
+
+Fri Dec 5 18:17:17 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (mod_remove_method): remove (not undef) a method from the
+ class/module.
+
+ * variable.c (obj_remove_instance_variable): method to remove
+ instance variables.
+
+Thu Dec 4 13:50:29 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1b0 released.
+
+ * string.c (str_aref): called str_index for regexp.
+
+Mon Dec 1 15:24:41 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * compar.c (cmp_between): wrong comparison made.
+
+Wed Nov 26 18:18:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * lib/mkmf.rb: generate Makefile for extension modules out of ruby
+ source tree. use like `ruby -r mkmf extconf.rb'.
+
+ * numeric.c (fix2str): enlarge buffer to prevent overflow on some
+ machines.
+
+ * parse.y (here_document): wrong line number generated after here-doc.
+
+Fri Nov 21 13:17:12 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (yylex): skip multibyte characters in comments.
+
+Wed Nov 19 17:19:20 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (nil_to_a): nil.to_a => [].
+
+ * parse.y (call_args): wrong node generation.
+
+Tue Nov 18 10:13:08 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * array.c (Init_Array): Array#=== works as Array#include?
+
+ * regex.c (re_compile_pattern): insert initialize code for jump_n,
+ before entering loops.
+
+ * re.c (reg_search): does not save registers unless $& etc appear
+ in the script.
+
+Mon Nov 17 13:01:43 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (is_defined): add defined? check for receivers and
+ arguments for calls.
+
+ * re.c (reg_search): cache last match object.
+
+ * re.c (match_aref): $[0] etc. are available.
+
+Sat Nov 15 00:11:36 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (io_s_popen): "rb" detection
+
+Fri Nov 14 18:28:40 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (scan_once): returns whole match if the pattern does
+ not contain any parentheses.
+
+Thu Nov 13 14:39:06 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (str_sub): returns copy of the receiver string, even if
+ any substitution occurred.
+
+ * regex.c (re_compile_pattern): no-width match by (?=..), (?!..).
+
+Wed Nov 12 13:44:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * time.c: remove coerce from Time class.
+
+ * regex.c (re_match): non-greedy match by ??, *? +?, {n,m}?.
+
+Mon Nov 10 11:24:51 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): non-registering parens (?:..).
+
+ * regex.c (re_compile_pattern): new meta character \< (wordbeg)
+ and \> (wordend).
+
+ * regex.c (re_compile_pattern): embedded comment for regular
+ expression by (?#...).
+
+Fri Nov 7 16:58:24 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * regex.c (re_compile_pattern): perl5 regexp \A and \Z available.
+
+ * regex.c (re_compile_pattern): can expand compile stack dynamically.
+
+ * regex.c (PUSH_FAILURE_POINT): wrong compare condition.
+
+Wed Nov 2 16:00:00 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (str_sub_s): "".sub! "", "" => "\000"
+
+Fri Oct 31 15:52:10 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (assoc): keyword assoc like {fg->"black"}.
+
+Thu Oct 30 17:33:38 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_println): print with newline, which is not affected by
+ the values of $/ and $\.
+
+Thu Oct 30 16:54:01 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * string.c (str_chop_bang): "".chop caused SEGV.
+
+ * string.c (str_chomp_bang): method to chop out last newline.
+
+Mon Oct 27 13:49:13 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/extmk.rb.in: library may have pathname contains `.'
+
+ * eval.c (rb_rescue): should not protect SystemError.
+
+Fri Oct 24 10:58:53 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_s_with_open_stream): ensures to close stream.
+
+Thu Oct 23 11:17:44 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_errset): value of $stderr can be changed (to any IO
+ object).
+
+ * io.c (next_argv): $< can be anything that responds to `write'.
+
+ * file.c (file_s_with_open_file): ensures to close file.
+
+ * error.c (exception): create error under the current class/module.
+
+ * range.c (range_eqq): fixnum check for last needed too.
+
+Wed Oct 22 12:52:30 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/socket/socket.c: Socket::Constants added.
+
+ * file.c: File::Constants added for inclusion.
+
+ * array.c (ary_join): call ary_join() recursively for the 1st
+ array element.
+
+Mon Oct 20 12:18:29 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ruby.c (load_file): wrong condition for #! check with -x.
+
+ * file.c (file_s_dirname): did return "" for "/a".
+
+Fri Oct 17 14:29:09 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c: now works on alpha-linux.
+
+ * bignum.c (bigadd): some undefined side effect order assumed.
+
+Wed Oct 15 17:49:24 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * intern.h: function prototypes added.
+
+Mon Oct 13 16:54:18 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (rb_define_class_id): call superclass's `inherited'
+ method when making subclasses.
+
+ * parse.y (nextc): clear lex_lastline at the end of file.
+
+ * object.c (Init_Object): need to undef Class#append_features.
+
+ * eval.c (rb_eval): no warning on extending classes or modules.
+
+Thu Oct 9 11:17:50 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (error_print): the exception name follows after the error
+ message.
+
+ * eval.c (compile_error): error message slightly changed.
+
+ * parse.y (nextc): script parsing will be terminated by __END__ at
+ beginning of line.
+
+ * eval.c (compile_error): `__END__' is no longer a keyword.
+
+ * parse.y (nextc): protect lastline read from script stream.
+
+Tue Oct 7 14:06:06 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha9 released.
+
+ * eval.c (mod_append_features): renamed from extend_class.
+
+ * eval.c (rb_eval): defining method calls `method_added'.
+
+ * eval.c (ruby_options): exception while processing options must
+ terminate the interpreter.
+
+ * error.c (Init_Exception): wrong method configuration. `new'
+ should have been a singleton method.
+
+Mon Oct 6 18:55:38 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/kconv/kconv.c (kconv_guess): code to guess character code
+ from string.
+
+Mon Oct 6 18:38:17 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * pack.c: now encode/decode base64 by `m' template.
+
+Fri Oct 3 10:51:10 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * MANIFEST: needed to include lex.c in the distribution.
+
+ * eval.c (ruby_options): f_require() called too early.
+
+ * eval.c (rb_provide): module extensions should always be `.o'.
+
+Thu Oct 2 11:38:31 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha8 released.
+
+ * ext/marshal/marshal.c (r_object): remove temporal regist for
+ structs. (caused problem if structs form cycles.)
+
+ * parse.y (match_gen): static binding for match(=~) calls
+ with regexp literals.
+
+Wed Oct 1 15:26:55 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c: protect retval in struct tag from GC for C_ALLOCA.
+
+ * eval.c: no more pointer value from setjmp/longjmp.
+
+Wed Oct 1 14:01:49 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/marshal/marshal.c (w_byte): argument must be char.
+
+Wed Oct 1 10:30:22 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (mod_const_at): global constants now belongs to the
+ class Object.
+
+ * object.c (Init_Object): new global constant NIL.
+
+ * ext/marshal/marshal.c (marshal_dump): try to set binmode.
+
+ * ext/marshal/marshal.c (r_object): forgot to re-regist structs in
+ the object table.
+
+ * eval.c (ruby_options): call Init_ext() before any require()
+ calls by `-r'.
+
+Fri Sep 30 14:29:22 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/marshal/marshal.c (w_object): marshal dumped core.
+
+Tue Sep 30 10:27:39 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sample/test.rb: bignum test suits added.
+
+ * eval.c (rb_eval): new pseudo variable `true' and `false'.
+
+ * parse.y: new keywords `true' and `false' added.
+
+Mon Sep 29 13:37:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (forbid_setid): forbid some options in suid mode.
+
+ * ruby.h (NUM2DBL): new macro to convert into doubles.
+
+Mon Sep 27 09:53:48 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
+
+ * bignum.c: modified for speeding.
+
+Fri Sep 26 18:27:59 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * sample/from.rb: some extensions.
+
+Mon Sep 29 13:15:56 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (lhs): no more syntax error on `obj.CONSTANT = value'.
+
+Fri Sep 26 14:41:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (ruby_run): deferred calling Init_ext() just before eval_node.
+
+Fri Sep 26 13:27:24 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * io.c (io_isatty): forgot to return TRUE value.
+
+Fri Sep 25 11:10:58 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
+
+ * eval.c: use _setjmp/_longjmp instead of setjmp/longjmp on some
+ platforms.
+
+Wed Sep 24 17:43:13 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * string.c (Init_String): String#taint and String#taint? added.
+
+ * class.c (mod_ancestors): ancestors include the class itself.
+
+Wed Sep 24 00:57:00 1997 Katsuyuki Okabe <HGC02147@niftyserve.or.jp>
+
+ * X68000 patch.
+
+Tue Sep 23 20:42:30 1997 EGUCHI Osamu <eguchi@shizuokanet.or.jp>
+
+ * parse.y (node_newnode): SEGV on null node setup.
+
+Mon Sep 22 11:22:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (ruby_prog_init): wrong safe condition check.
+
+Sun Sep 21 14:46:02 1997 MAEDA shugo <shugo@po.aianet.ne.jp>
+
+ * error.c (exc_inspect): garbage added to classpath.
+
+Fri Sep 19 11:49:23 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (newtok): forgot to adjust buffer size when shrinking
+ the token buffer.
+
+ * enum.c (enum_find): rb_eval_cmd() does not return value.
+
+ * io.c (pipe_open): close fds on pipe exec. fcntl(fd, F_SETFD, 1)
+ no longer used.
+
+Tue Sep 16 17:54:25 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * file.c (f_test): problem if wrong command specified.
+
+ * ruby.c (ruby_prog_init): close stdaux and stdprn for MSDOS.
+
+ * ruby.c (ruby_prog_init): should not add path from environment
+ variable, if ruby is running under setuid.
+
+ * process.c (init_ids): check suid check for setuid/seteuid etc.
+
+Mon Sep 15 00:42:04 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * regex.c (re_compile_pattern): \w{3} and \W{3} did not work.
+
+Thu Sep 11 10:31:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha7 released.
+
+ * ext/socket/socket.c (sock_new): no setbuf() for NT.
+
+ * io.c (rb_fopen,rb_fdopen): set close-on-exec for every fd.
+
+Wed Sep 10 15:55:31 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ext/marshal/marshal.c (r_bytes0): extra big length check.
+
+Tue Sep 9 16:27:14 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (pipe_fptr_atexit): clean up popen()'ed fptr.
+
+ * error.c (set_syserr): some system has error code that is bigger
+ than sys_nerr. grrr.
+
+Mon Sep 8 18:33:33 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * io.c (io_s_new): dereferenced nil for optional mode.
+
+Fri Sep 5 10:26:03 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (class_instance_methods): do not include methods which
+ are changed to private in subclasses.
+
+Thu Sep 4 12:38:53 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * variable.c (f_global_variables): list name of the global
+ variables.
+
+ * object.c (obj_id): returns unique integer.
+
+Wed Sep 3 14:05:16 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha6 released.
+
+ * eval.c (mod_s_constants): context sensitive constant list.
+
+ * variable.c (mod_constants): no more `all' option.
+
+ * variable.c (mod_const_of): the values for autoload classes are
+ their name strings.
+
+ * class.c (class_instance_methods): no special treatment for
+ singleton classes.
+
+ * object.c (obj_singleton_methods): returns list of singleton
+ method names.
+
+ * parse.y (yylex): no here document after `class' keyword.
+
+ * eval.c (f_load): expand path if fname begins with `~'.
+
+Tue Sep 2 13:19:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (ins_methods_i): do not list undef'ed methods.
+
+Mon Sep 1 13:42:48 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha5 released.
+
+ * object.c (mod_attr_reader): create methods to define attribute
+ reader/write/accessor.
+
+ * class.c (rb_define_attr): always defines accessors.
+
+ * eval.c (rb_call): alias occurred in the module body caused SEGV.
+
+ * parse.y: did not generate here document strings properly.
+
+Mon Sep 1 11:43:57 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * parse.y (yylex): heredoc dropped an extra character.
+
+Fri Aug 29 11:10:21 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * class.c (class_instance_methods): same method names should not
+ appear more than once.
+
+ * parse.y (yylex): spaces can follow =begin/=end.
+
+ * variable.c (find_class_path): look for class_tbl also for
+ unnamed fundamental classes, such as Object, String, etc.
+
+ * variable.c (rb_name_class): can't name class before String class
+ is initialized.
+
+ * inits.c (rb_call_inits): unrecognized dependency from GC to
+ Array.
+
+ * variable.c (find_class_path): could not find class if Object's
+ iv_tbl is NULL.
+
+Thu Aug 28 13:12:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha4 released.
+
+ * variable.c (mod_constants): wrong condition for singleton
+ class.
+
+ * parse.y (yylex): revised `=begin' skip code.
+
+ * parse.y (here_document): forgot to free(eos).
+
+ * parse.y (yylex): spaces after `<<' prohibited for here
+ documents to avoid confusing with operator `<<'.
+
+ * eval.c (is_defined): separated from rb_eval().
+
+Wed Aug 27 11:32:42 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha3 released.
+
+ * variable.c (mod_name): returns name of the class/module.
+
+ * parse.y (here_document): finally here document available now.
+
+ * variable.c (fc_i): some classes/modules does not have iv_tbl.
+
+ * variable.c (find_class_path): avoid infinite loop.
+
+Tue Aug 26 13:43:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (rb_eval): undef'ing non-existing method will raise
+ NameError exception.
+
+ * object.c (class_s_new): needed to create metaclass too.
+
+ * eval.c (error_print): no class name print for anonymous class.
+
+ * eval.c (rb_longjmp): proper exception raised if raise() called
+ without arguments, with $! or $@ set.
+
+ * object.c (Init_Object): superclass()'s method argument setting
+ was wrong again.
+
+ * class.c (mod_ancestors): list superclasses and included modules
+ in priority order.
+
+Mon Aug 25 11:53:11 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha2 released.
+
+ * sample/ruby-mode.el (ruby-parse-region): auto-indent now
+ supports "\\" in the strings.
+
+ * struct.c (struct_getmember): new API to get member value from C
+ language side.
+
+Sat Aug 23 21:39:05 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * parse.y (assignable): remove unnecessary local variable
+ initialize by nil.
+
+Fri Aug 22 14:26:40 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (error_print): modified exception print format.
+
+Thu Aug 21 16:10:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * sample/ruby-mode.el (ruby-calculate-indent): wrong indent level
+ calculated with keyword operators.
+
+Thu Aug 21 11:36:58 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * parse.y (arg): ary[0] += 1 cause SEGV
+
+Wed Aug 20 17:28:50 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * ruby.c (ruby_process_options): require() all modules after
+ processing all options
+
+ * process.c (rb_proc_exec): more security checks added.
+
+ * process.c (rb_proc_exec): insecure path on exec.
+
+ * hash.c (f_getenv): PATH modification security check.
+
+Tue Aug 19 00:15:38 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha1 released.
+
+ * eval.c (mod_eval): work as normal eval() if second binding
+ argument given.
+
+ * eval.c (rb_call): did not raise ArgumentError if too many
+ arguments more than optional arguments (without rest arg).
+
+ * eval.c (rb_eval): did not work well for op_asgn2 (attribute
+ self assignment).
+
+ * eval.c (Init_Thread): returns main thread.
+
+Mon Aug 18 09:25:56 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * object.c (inspect_i): did not display T_DATA instance variables.
+
+ * parse.y: provides more accurate line number information.
+
+ * eval.c (thread_value): include value's backtrace information in
+ the variable `$@'.
+
+ * eval.c (f_abort): print backtrace and exit.
+
+Sat Aug 16 00:17:44 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (class_new_instance): do not make instance from virtual
+ classes.
+
+ * object.c (class_s_new): do not make subclass of singleton class.
+
+Fri Aug 15 15:49:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * eval.c (call_trace_func): block context switch in the trace
+ function.
+
+ * eval.c (rb_eval): clear method cache at class extension.
+
+ * object.c (obj_type): returns object's class even if it defines
+ singleton methods.
+
+Fri Aug 15 19:40:43 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
+
+ * ext/socket/socket.c (Init_socket): small typo caused SEGV.
+
+Wed Aug 13 17:51:46 1997 Yukihiro Matsumoto <matz@netlab.co.jp>
+
+ * version 1.1 alpha0 released.
+
+Local variables:
+add-log-time-format: (lambda ()
+ (let* ((time (current-time))
+ (diff (+ (cadr time) 32400))
+ (lo (% diff 65536))
+ (hi (+ (car time) (/ diff 65536))))
+ (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t)))
+indent-tabs-mode: t
+tab-width: 8
+end:
diff --git a/doc/ChangeLog-1.9.3 b/doc/ChangeLog-1.9.3
new file mode 100644
index 0000000000..b8e3162511
--- /dev/null
+++ b/doc/ChangeLog-1.9.3
@@ -0,0 +1,92772 @@
+Sun Jul 10 22:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal): fix
+ precision treatment errors.
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests for the above change.
+ fix precision treatment errors.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): precision argument
+ should be optional for its compatibility.
+
+Sun Jul 10 22:38:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (var_ref): distinguish vcall from local variable
+ references. based on a patch by Michael Edgar michael.j.edgar
+ AT dartmouth.edu. Bug #5002
+
+Sun Jul 10 21:51:29 2011 Koichi Sasada <ko1@atdot.net>
+
+ * internal.h: add comments (cautions).
+
+Sun Jul 10 20:59:38 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Add new class variable `@@testfile_prefix`.
+ This is for changing test name prefix. (For testing)
+
+ * test/testunit/tests_for_parallel/ptest_first.rb: Renamed from
+ test_first.rb
+
+ * test/testunit/tests_for_parallel/ptest_second.rb: Renamed from
+ test_second.rb
+
+ * test/testunit/tests_for_parallel/ptest_third.rb: Renamed from
+ test_third.rb
+
+ * test/testunit/tests_for_parallel/ptest_forth.rb: Renamed from
+ test_forth.rb
+
+ * test/testunit/tests_for_parallel/runner.rb: Remove misc.rb
+
+ * test/testunit/tests_for_parallel/ptest_first.rb: ditto.
+
+ * test/testunit/tests_for_parallel/ptest_second.rb: ditto.
+
+ * test/testunit/tests_for_parallel/ptest_third.rb: ditto.
+
+ * test/testunit/tests_for_parallel/ptest_forth.rb: ditto.
+
+ * test/testunit/tests_for_parallel/misc.rb: Removed because no longer
+ needed.
+
+ * test/testunit/test_parallel.rb: Fix assertions for above.
+
+Sun Jul 10 16:57:08 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_throw): check a class frame.
+ Fixes Bug #4648.
+ The patch is contributed by Kazuki Tsujimoto.
+
+ * bootstraptest/test_proc.rb: add tests for above.
+
+Sun Jul 10 17:28:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (mutex_debug): use exit(EXIT_FAILURE) instead of
+ exit(1).
+ * thread_pthread.c (add_signal_thread_list): ditto.
+ * thread.c (rb_thread_call_with_gvl): ditto.
+ * util.c (Bug): ditto.
+
+Sun Jul 10 15:58:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Merge json gem 1.5.4+ (f7f78896607b6f6226cd).
+ [Bug #4700]
+
+Sun Jul 10 16:41:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (typedef struct rb_vm_struct): create a new
+ 'inhibit_thread_creation' field.
+ * thread.c (rb_thread_terminate_all): set inhibit_thread_creation.
+ * thread.c (thread_s_new): don't permit to create new thread
+ if the VM is under destruction. Otherwise evil finalizer code
+ can make SEGV. [Bug #4992][ruby-core:37858]
+
+ * bootstraptest/test_objectspace.rb: new test for this fix.
+
+Sun Jul 10 16:06:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (sigsegv): use abort() instead of exit() when nested
+ SEGV was happen. Because unnested SEGV use abort().
+ [Bug #5013][ruby-dev:44078]
+
+Sun Jul 10 15:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * load.c (rb_f_autoload): prevent to autoload for singleton
+ classes. fixes [Bug #4886] [ruby-dev:43816]
+
+ * bootstraptest/test_autoload.rb: add tests for the above change.
+
+Sun Jul 10 15:09:17 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/assertions.rb: Import documentation patch by Justin
+ Collins. [ruby-core:37225] [Feature #4903]
+
+Sun Jul 10 14:57:36 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: canonicalizes nth and sf.
+
+Sun Jul 10 14:13:50 2011 Koichi Sasada <ko1@atdot.net>
+
+ * internal.h (rb_thread_call_with_gvl, rb_thread_call_without_gvl):
+ make them visible as experimental C APIs. fixes Feature #4328.
+
+Sun Jul 10 12:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): support non-integral
+ exponent. fixes [Bug #3271]
+
+ * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power_op): add a function to
+ only use for "**" operator.
+
+ * test/bigdecimal/test_bigdecimal.rb: add a bunch of tests for the
+ above changes.
+
+ * ext/bigdecimal/bigdecimal.c (is_integer): add an utility function.
+
+ * ext/bigdecimal/bigdecimal.c (is_negative): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (is_positive): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (is_zero): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (is_one): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (is_even): ditto.
+
+Sun Jul 10 12:08:39 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (when_vals): when a string literal is written on when
+ clause, skip string creation to make it faster. [ruby-dev:44068]
+ [Feature #5000]
+
+Sun Jul 10 11:35:29 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (reduce_nodes_gen): NODE_RETURN in rescue body must not be
+ reduced when there is an else clause. This caused bizarre behavior
+ in [Bug #4473] [ruby-core:35629] [ruby-core:37884].
+
+Sun Jul 10 09:46:14 2011 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * range.c (range_max): fix behavior with excluded end value.
+ [Bug #4591]
+
+Sun Jul 10 09:13:18 2011 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS: Fix RubyGems version. [Ruby 1.9 - Bug #5004]
+
+Sat Jul 9 20:01:59 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * internal.h: rb_rational_reciprocal is defined in rational.c.
+
+Sat Jul 9 19:48:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * internal.h: added declarations.
+ * complex.c: followed the above change.
+
+Sat Jul 9 17:24:41 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * NEWS: bigdecimal is not a builtin.
+
+Sat Jul 9 17:17:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: some improvements for performance.
+
+Sat Jul 9 16:56:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * atomic.h (ATOMIC_OR): _InterlockedOr is unavailable in VC6.
+
+ * numeric.c (ULLONG_MAX): fallback definition.
+
+Sat Jul 9 15:59:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_{read,write}): should be signed.
+ Bug #5001
+
+Sat Jul 9 14:02:20 2011 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb: fix multipart form parsing bug. [Bug #3866]
+
+Sat Jul 9 11:41:03 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Add Vector#normalize [ruby-dev:43829]
+
+Sat Jul 9 09:25:06 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enumerator.c: Remove "enumeration sequenced by".
+ [Ruby 1.9 - Bug #4757]
+
+Sat Jul 9 09:14:56 2011 Eric Hodel <drbrain@segment7.net>
+
+ * io.c: Note that methods other than IO#gets may increase IO#lineno.
+ [Ruby 1.9 - Bug #4902]
+
+Sat Jul 9 08:39:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUN_OPT): disable gems.
+
+Sat Jul 9 08:37:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_close): close(2) on a fd which is being read by
+ another thread causes deadlock on Mac OS X 10.5
+
+Fri Jul 8 21:20:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: use USE_ELF instead of __ELF__ because Solaris
+ doesn't define it. USE_ELF is already provided by configure.
+ patched by Naohisa Goto. [ruby-dev:44066] [Bug #4998]
+
+ * addr2line.h: ditto.
+
+ * vm_dump.c: ditto.
+
+Fri Jul 8 16:40:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/parser/parser.rl (convert_encoding): should not modify
+ the argument.
+
+ * ext/json/parser/parser.rl (convert_encoding): no needs to use
+ force_encoding.
+
+Fri Jul 8 15:53:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_bug): get rid of segfault after all threads
+ disposed.
+
+Fri Jul 8 15:01:06 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl.h: include openssl/e_os2.h before checking the
+ definition of OPENSSL_SYS_WIN32.
+
+Fri Jul 8 14:40:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (wunlink): reverted a part of r32426. it was mistakenly
+ mixed.
+
+Fri Jul 8 14:29:47 2011 Narihiro Nakamura <authornari@gmail.com>
+
+ * configure.in: can't subtract void *.
+
+Fri Jul 8 14:33:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): define GC_MARK_STACKFRAME_WORD.
+ fixed build problem of r32438. the value (30) is temporary value.
+ maybe it's enough by 20~24 according to my observation.
+
+Fri Jul 8 13:47:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_unlock_all): folded into
+ rb_threadptr_unlock_all_locking_mutexes.
+ * thread.c (rb_threadptr_unlock_all_locking_mutexes) ditto.
+
+Fri Jul 8 13:36:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_unlock_all_locking_mutexes): rename to
+ rb_threadptr_unlock_all_locking_mutexes and remove static.
+ * vm_core.h: add rb_threadptr_unlock_all_locking_mutexes declaration.
+ * thread.c (thread_start_func_2): adjust the above rename.
+
+ * eval.c (ruby_cleanup): call rb_threadptr_unlock_all_locking_mutexes
+ again after finalizer. [Bug #4988] [ruby-dev:44049]
+
+Fri Jul 8 13:06:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (FIBER_MACHINE_STACK_ALLOCATION_SIZE): Fiber stack size
+ don't need to keep multiple number of sizeof(VALUE).
+
+Fri Jul 8 11:39:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (sudo-precheck): true command is not standard on
+ Windows.
+
+Fri Jul 8 10:39:52 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (gvl_destroy): fix cond_t leak.
+
+Fri Jul 8 09:17:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * gc.c: Improve documentation
+
+Thu Jul 7 23:35:31 2011 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: change water_mark value that may call
+ gc_mark(lev <= GC_LEVEL_MAX) in gc_mark().
+ In ruby_stack_check(), water_mark is a value that may call some
+ C function. Fixes Bug #3781
+
+ * configure.in: define GC_MARK_STACKFRAME_WORD that approximate
+ size of gc_mark() and gc_mark_children() stackframes.
+
+Thu Jul 7 17:55:05 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/testunit/test_parallel.rb (TestParallelWorker#teardown): wait
+ the child process even if the communication pipe is broken.
+
+Thu Jul 7 15:44:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_set_index, rb_enc_associate_index): should
+ check if frozen.
+
+ * parse.y (rb_intern3), ruby.c (process_options, ruby_script):
+ defer freezing after associating encodings.
+
+Thu Jul 7 15:16:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_num2ull): use own switch sentence.
+ Current implementation can't convert 18446744073709551615.
+
+Thu Jul 7 06:56:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (FIBER_STACK_FLAGS): workaround fix for r32420 on FreeBSD.
+
+Thu Jul 7 06:46:12 2011 Eric Hodel <drbrain@segment7.net>
+
+ * benchmark/driver.rb: Add difference column to report that averages
+ across all runs of a benchmark. [Ruby 1.9 - Feature #4982]
+
+Thu Jul 7 06:19:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Reduce requires to improve `make benchmark`.
+ [#4962]
+ * lib/rubygems/specification.rb: Delay initialization of rubygems
+ until require is called.
+
+Thu Jul 7 04:31:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (arg): rescue_mod is in inverse order from other
+ modifiers. patched by michael.j.edgar AT dartmouth.edu at
+ [ruby-core:36248]. fixed #4716.
+
+Thu Jul 7 00:40:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (kill): check that the process exited or not before
+ terminating it. [Bug #4943]
+
+Wed Jul 6 23:13:19 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (opt_call_args): allow trailing comma after assoc
+ argument e.g. 'foo(bar:1,)'. fixed #3456
+
+Wed Jul 6 22:11:12 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Validate date in
+ "Date:" header
+
+Wed Jul 6 21:29:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_machine_stack_alloc): cleanup pointer arithmetic.
+ "size/sizeof(VALUE)" is ugly and easy confusing.
+ * cont.c (fiber_initialize_machine_stack_context): ditto.
+
+Wed Jul 6 21:24:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_machine_stack_alloc): fix mprotect misuse. A stack
+ guard page should have PROT_NONE.
+ * cont.c (fiber_initialize_machine_stack_context):
+ th->machine_stack_maxsize shouldn't be included guard pages size.
+ [Bug #4983][ruby-dev:44043]
+
+Wed Jul 6 21:23:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_machine_stack_alloc): use MAP_STACK if it's provided.
+
+Wed Jul 6 21:22:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_machine_stack_alloc): use MAP_FAILED instead of -1.
+
+Wed Jul 6 21:21:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_machine_stack_alloc): remove unnecessary cast.
+
+Wed Jul 6 18:10:13 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Adding space after
+ comma.
+
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Remove variable
+ `now`. Suppress warning.
+
+Wed Jul 6 12:18:09 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Fix bug depends to
+ time. The test fails if time past 1 second in line 136-145
+
+Tue Jul 5 15:28:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_here_document): should dispatch heredoc_end
+ scanner event on an empty here document. fixed Bug#4543.
+
+Tue Jul 5 13:49:26 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * addr2line.c: fix r32407 to check HAVE_ALLOCA_H.
+
+Tue Jul 5 14:05:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httpauth/digestauth.rb (_authenticate):
+ Literal texts in HTTP ABNF is case-insensitive (RFC2616 2.1),
+ and a sample implementation in RFC2617 also ignores the case
+ of algorithms. So now this ignores those cases.
+ [ruby-dev:43965] [Feature #4936]
+
+ * lib/webrick/httpauth/digestauth.rb (initialize):
+ Because of above, opera_hack is useless and removed.
+
+Tue Jul 5 01:30:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread_pthread.c (native_sleep): cut the waiting time up to
+ 100,000,000 because Solaris cond_timedwait() return EINVAL if an
+ argument is greater than current_time + 100,000,000. This is
+ considered as a kind of spurious wakeup. The caller to native_sleep
+ should care about spurious wakeup.
+
+Tue Jul 5 01:24:26 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c: disable FIBER_USE_NATIVE on Solaris because resuming any
+ Fiber caused SEGV. I haven't follow up the issue deeply, but it
+ works when disabling the feature.
+
+Tue Jul 5 01:22:46 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * addr2line.c: include <alloca.h> to fix a build issue on Solaris.
+
+Tue Jul 5 00:49:05 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/coverage/coverage.c: resurrect r32071 + add GC guard for
+ rb_coverages. [ruby-core:37352] [Bug #4927]
+ [ruby-core:36539] [Feature #4796]
+
+ * test/coverage/test_coverage.rb resurrect r32071.
+
+Mon Jul 4 22:24:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (get_stack): For NetBSD/FreeBSD, use
+ pthread_attr_getstack() if possible. and, remove an assumption
+ of stack growing direction.
+
+Mon Jul 4 20:42:31 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/coverage/coverage.c: revert r32071. The commit caused SEGV on
+ some minor nonfree OS. I have no means of debugging the bug. My
+ personal opinion is that such OS should be unsupported unless there
+ is an active maintainer. [ruby-core:37352]
+
+ * test/coverage/test_coverage.rb: ditto.
+
+Mon Jul 4 07:14:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (get_stack): the return address of get_stack
+ must be the highest address of the current thread's stack.
+
+Mon Jul 4 06:37:22 2011 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/intern.h, thread_pthread.c (rb_reserved_fd_p,
+ RB_RESERVED_FD_P): added. This C API is to limit to access
+ fds which are used by RubyVM internal. In this version of
+ CRuby, return 1 if fd is communication pipe.
+ If your application needs to close all file descriptors to
+ present resource leak, skip internal fds using this C API.
+ We also define a macro RB_RESERVED_FD_P(fd). So you can write
+ #ifndef RB_RESERVED_FD_P
+ #define RB_RESERVED_FD_P(fd) 0
+ #endif
+ for Ruby 1.9.2 or previous version to write compatible extensions.
+ See [ruby-core:37727]
+
+ * thread_win32.c (rb_reserved_fd_p): added (return 0 for any fds).
+
+ * io.c (rb_io_initialize): raise ArgumentError if given fd is reserved by Ruby.
+
+Sun Jul 3 23:43:56 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/extmk.rb (extmake): suppresses outputs from extconf.rb.
+ (extmake) warns a failure in extconf.rb.
+
+Sun Jul 3 13:44:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_reject_bang): should not remove elements which are
+ not yielded. [Bug #2545]
+
+Sun Jul 3 06:10:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (get_stack): pthread_attr_getstack() doesn't
+ return stack start address, but stack base address. Thus,
+ we need to add stack size for getting stack start address.
+ And, we don't have to decrease guard size twice.
+ * thread_pthread.c (thread_start_func_1): don't use inaccurate
+ stack start guess if native_thread_init_stack() can be used.
+ [Bug #1813] [ruby-core:24540]
+
+Sun Jul 3 04:50:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (get_stack): add to a care of guard page on Mac
+ OS X. [Bug #1813] [ruby-core:24540]
+ * signal.c (ruby_signal): SIGBUS use alternative stack too.
+ * signal.c (sigbus): On Mac, thread stack overflow makes SIGBUS
+ instead of SIGSEGV. thus, added stackoverflow check.
+ * signal.c (default_handler): get rid of compilation warning.
+ * signal.c (Init_signal): ditto.
+
+Sat Jul 02 08:59:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ocsp.rb
+ * test/openssl/test_x509_cert.rb: Perform SHA-256 tests only if
+ supported by the available OpenSSL version. Versions < 0.9.8 don't
+ support it. [ruby-core:37724]
+
+Sat Jul 2 07:17:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_reject_bang, rb_ary_delete_if): rejected
+ elements should be removed. fixed [Bug #2545]
+
+Sat Jul 2 01:57:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: remove a description of Kernel#respond_to? because it has
+ been reverted at revision 28564.
+
+Sat Jul 2 00:58:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: describe a change of multiplication of Bignum.
+
+Fri Jul 1 18:52:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_app_erb.rb: increase loop count. too short
+ measurement time makes less accuracy.
+ * benchmark/bm_app_factorial.rb: ditto.
+ * benchmark/bm_app_mandelbrot.rb: ditto.
+ * benchmark/bm_app_strconcat.rb: ditto.
+
+ * benchmark/bm_io_file_create.rb: ditto.
+ * benchmark/bm_io_file_read.rb: ditto.
+ * benchmark/bm_io_file_write.rb: ditto.
+
+ * benchmark/bm_so_concatenate.rb: ditto.
+ * benchmark/bm_so_lists.rb: ditto.
+ * benchmark/bm_so_matrix.rb: ditto.
+ * benchmark/bm_so_random.rb: ditto.
+ * benchmark/bm_so_sieve.rb: ditto.
+
+ * benchmark/bm_vm_thread_mutex1.rb: ditto.
+ * benchmark/bm_vm_thread_mutex2.rb: ditto.
+ * benchmark/bm_vm_thread_mutex3.rb: ditto.
+
+ * benchmark/bm_vm1_block.rb: cleanup.
+ * benchmark/bm_vm1_const.rb: cleanup.
+ * benchmark/bm_vm1_ensure.rb: cleanup.
+ * benchmark/bm_vm1_ivar.rb: cleanup.
+ * benchmark/bm_vm1_length.rb: cleanup.
+ * benchmark/bm_vm1_neq.rb: cleanup.
+ * benchmark/bm_vm1_not.rb: cleanup.
+ * benchmark/bm_vm1_rescue.rb: cleanup.
+ * benchmark/bm_vm1_simplereturn.rb: cleanup.
+ * benchmark/bm_vm1_swap.rb: cleanup.
+
+ * benchmark/bm_vm2_array.rb: cleanup.
+ * benchmark/bm_vm2_case.rb: cleanup.
+ * benchmark/bm_vm2_defined_method.rb: cleanup.
+ * benchmark/bm_vm2_eval.rb: cleanup.
+ * benchmark/bm_vm2_method.rb: cleanup.
+ * benchmark/bm_vm2_mutex.rb: cleanup.
+ * benchmark/bm_vm2_poly_method.rb: cleanup.
+ * benchmark/bm_vm2_poly_method_ov.rb: cleanup.
+ * benchmark/bm_vm2_proc.rb: cleanup.
+ * benchmark/bm_vm2_regexp.rb: cleanup.
+ * benchmark/bm_vm2_send.rb: cleanup.
+ * benchmark/bm_vm2_super.rb: cleanup.
+ * benchmark/bm_vm2_unif1.rb: cleanup.
+ * benchmark/bm_vm2_zsuper.rb: cleanup.
+
+ * benchmark/bm_vm_thread_alive_check1.rb: cleanup.
+
+Fri Jul 1 15:23:00 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix: Add LUP decomposition
+
+Fri Jul 1 15:21:14 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Allow non integer exponents for Matrix#**
+
+Fri Jul 1 15:13:25 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix: Add Eigenvalue Decomposition
+
+Fri Jul 1 15:10:22 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix: Add Matrix#round
+
+Fri Jul 1 11:41:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_trans): free heap ptr when the str is not embedded.
+ patched by Eric Wong. [Bug #4956] [ruby-core:37708]
+
+Fri Jul 1 11:07:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (do_select): fix memory leak.
+ Patch by Eric Wong. Thank you! [Bug #4953] [ruby-core:37702]
+
+Fri Jul 1 08:21:28 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_getivar): check vm state version
+ to invalidate inline cache (ivar index).
+ fixes Bug #4926.
+
+ * vm_insnhelper.c (vm_setivar): ditto.
+
+Fri Jul 1 08:03:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c, thread_pthread.c (WRITE_CONST): suppress warnings
+ `ignoring return value'.
+
+Fri Jul 1 06:41:36 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_threadptr_check_signal): only wake up main thread.
+
+ * thread.c (rb_threadptr_execute_interrupts_common): check signal
+ delivery if it is main thread.
+ fixes [ruby-dev:44005] [Ruby 1.9 - Bug #4950]
+
+ * bootstraptest/test_fork.rb: add a test for above.
+
+ * signal.c (rb_get_next_signal): skip if signal_buff is empty.
+ (check signal_buff.size first)
+
+ * vm_core.h: remove unused variable rb_thread_t::exec_signal.
+
+ * thread.c (rb_thread_check_trap_pending): check
+ rb_signal_buff_size() because rb_thread_t::exec_signal
+ is no longer available.
+
+Fri Jul 1 03:28:25 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (Init_class_hierarchy): should name BasicObject
+ explicitly.
+
+ * variable.c (rb_const_defined_0): should not check for
+ superclasses as const_get.
+
+Fri Jul 1 03:24:03 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: mathn is still alive (should die soon).
+
+Thu Jun 30 23:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * misc/ruby-mode.el (ruby-indent-beg-re): Fix broken regular
+ expression. Fixes #4546
+
+Thu Jun 30 23:43:30 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl.c/.h: Added ossl_x509_name_sk2ary.
+ * ext/openssl/ossl.c: Replaced ossl_x509_ary2k by generic macro to
+ simplify future conversions.
+ * ext/openssl/ossl_ssl.c: Implement SSLSocket#client_ca.
+ * test/openssl/test_ssl.rb: Add test for SSLSocket#client_ca.
+ Thanks to Ippei Obayashi for providing the patch!
+ [ Ruby 1.9 - Feature #4481 ] [ruby-core:35461]
+
+Thu Jun 30 22:38:58 2011 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm2_defined_method.rb: added to measure performance of
+ bmethod (method defined by define_method()).
+
+Thu Jun 30 22:17:04 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_bmethod): fix to hook call/return event
+ for methods defined by define_method(). fixes Bug #4613.
+
+ * thread.c (call_trace_proc): Fix to skip if class is not given (0).
+ Note that ID and Class object are passed for call/return event
+ if the called method was defined by define_method().
+ If you are author of tracer/profiler/debugger, this may be an
+ important change. You should check passed class as zero or
+ non-zero instead of checking the event type.
+
+ * test/ruby/test_settracefunc.rb: add a test for above.
+
+Thu Jun 30 21:18:35 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * configure.in: Add warnflags for XL/C on AIX during configure
+ to avoid [Bug #3971]. See [ruby-core:32859]
+
+Thu Jun 30 21:16:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (m_ajd): refers a constant.
+
+Thu Jun 30 20:54:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/io-console.gemspec: spin-off gem for 1.9.2.
+
+Thu Jun 30 20:36:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: trivial changes.
+
+Thu Jun 30 20:12:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_module.rb: tests for [Bug #3422] and [Bug #3423].
+
+Thu Jun 30 20:03:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: modified doc.
+
+Thu Jun 30 19:09:19 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (thread_timer): ignore unknown errno.
+ (we observed that select(2) was canceled by errno=514 on
+ boron == Linux/Xen environment)
+
+Thu Jun 30 17:33:25 2011 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects):
+ Fix rdoc. Fixes Bug #3892.
+
+ * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects):
+ Change key type if the klass of a object is zero (internal object).
+ Read rdoc for details.
+
+ * internal.h: export rb_objspace_data_type_name().
+
+Thu Jun 30 17:25:08 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (ping_signal_thread_list, thread_timer):
+ fix to keep polling state if there are any ping-tasks.
+
+Thu Jun 30 12:25:34 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): allocate
+ machine stack for the timer thread at least 12KB. FreeBSD 8.2
+ AMD64 causes machine stack overflow (SIGSEGV) only with
+ PTHREAD_STACK_MIN (maybe defined as 2KB).
+
+Thu Jun 30 09:36:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/weakref.rb: Attach documentation to WeakRef and add missing
+ documentation
+
+Thu Jun 30 09:30:14 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/yaml.rb: Document toplevel YAML and YAML::ENGINE to describe
+ Psych vs Syck engines.
+
+Thu Jun 30 09:21:52 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cmath.rb: Hide handle_no_method_error from RDoc.
+ * error.c: Document or hide undocumented error classes.
+
+Thu Jun 30 07:49:04 2011 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c: Document ENV
+
+Thu Jun 30 06:37:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): ensure RUBYLIB_PREFIX stored
+ before RUBYLIB, even if MANGLED_PATH is enabled. fixed #1679.
+ MANGLED_PATH is disabled by the default and will be removed
+ completely in the future.
+
+Thu Jun 30 06:32:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/drb/drb.rb: Hide deprecated toplevel DRb constants.
+
+Thu Jun 30 06:17:02 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cmath.rb (CMath.log): second argument: b can be nil.
+
+Thu Jun 30 06:23:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * thread.c (ruby_thread_s_pass): Fix typo.
+
+Thu Jun 30 06:16:53 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 3.8 which contains fixes for documentation
+ in trunk.
+
+Thu Jun 30 02:53:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_threadptr_execute_interrupts_common): remove
+ meaningless native_thread_yield(). It never close a race.
+
+Thu Jun 30 02:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_schedule_limits): minor optimization.
+ eliminate machine context saving when running time is enough small.
+
+Thu Jun 30 02:28:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_schedule_rec): move interrupt_flag check to
+ rb_thread_schedule().
+ And also rename to rb_thread_schedule_limits() and remove
+ sched_depth argument. It's no longer called recursive.
+ * thread.c (rb_thread_schedule): add to check interrupt_flag as
+ above explained.
+
+ * thread.c (rb_threadptr_execute_interrupts_rec): rename to
+ rb_threadptr_execute_interrupts_common() and remove sched_depth
+ argument. It's no longer called recursive.
+
+ * thread.c (rb_thread_sleep): adapt the renaming.
+ * thread.c (rb_threadptr_execute_interrupts): ditto.
+ * thread.c (rb_thread_execute_interrupts): ditto.
+
+Thu Jun 30 01:31:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_s_pass): change RDoc description and remove
+ a sample code. The actual implementation never behave as explained by
+ an example. It's a documentation bug.
+
+Thu Jun 30 00:54:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_stop): change RDoc sample code. The old
+ example is buggy and may cause deadlock. The patch is
+ suggested by Heesob Park <phasis@gmail.com>. Thank you!
+ [Bug #3606][ruby-core:31454]
+
+Thu Jun 30 00:49:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_wakeup): change RDoc sample code. The old
+ example is buggy and may not display anything by a race.
+ The patch is suggested by Heesob Park <phasis@gmail.com>.
+ Thank you! [Bug #3606][ruby-core:31454]
+
+Thu Jun 30 00:43:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_run): change RDoc. The old example is buggy
+ and may cause deadlock. The patch is suggested by Heesob Park
+ <phasis@gmail.com>. Thank you! [Bug #3606][ruby-core:31454]
+
+Thu Jun 30 00:30:15 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/cmath.rb: make same exception for Math. fix [Bug #3137].
+
+Thu Jun 30 00:03:20 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/completion.rb: complement correctly string literal. fix
+ [Bug #1145].
+
+Wed Jun 29 23:42:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: avoided using timev.
+ * ext/date/date_strftime.c: ditto.
+ * ext/date/date_tmx.h: ditto.
+
+Wed Jun 29 23:17:57 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/openssl/ossl.h (OPENSSL_SYS_WIN32): support for mingw(msys).
+
+Wed Jun 29 23:09:14 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tk/extconf.rb (intptr_t, uintptr_t): support for the latest ActiveTcl with mingw.
+
+Wed Jun 29 22:49:10 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/cmd/help.rb: support RDoc 3.7. fix [Bug #3760].
+
+Wed Jun 29 22:04:14 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/tracer.rb: Tracer.on only if required by -r command-line option.
+ and consider --disable-gems option.
+ * test/test_tracer.rb: add tests for it.
+
+Wed Jun 29 13:55:36 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get_0): should not look for superclasses if
+ the second optional argument is given for #const_get().
+ fix [Bug #3422] [Bug #3423]
+
+Wed Jun 29 12:07:27 2011 Eric Hodel <drbrain@segment7.net>
+
+ * math.c: Attach documentation for Math.
+ * object.c: Document NIL, TRUE, FALSE.
+ * io.c: Improve grammar in ARGF comment. Document STDIN/OUT/ERR.
+ Document ARGF global constant.
+ * lib/rake: Hide deprecated toplevel constants from RDoc (import from
+ rake trunk).
+ * lib/thwait.rb: Document ThWait.
+ * lib/mathn.rb: Hide Math redefinition from RDoc
+ * lib/sync.rb: Add a basic comment for Sync_m, Synchronizer_m, Sync,
+ Synchronizer.
+ * parse.y: Document SCRIPT_LINES__.
+ * hash.c: Document ENV class and global constant.
+ * vm.c: Document TOPLEVEL_BINDING.
+ * version.c: Document RUBY_* constants.
+ * ruby.c: Document DATA and ARGV.
+
+Wed Jun 29 10:13:12 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Matrix.zero can build rectangular matrices.
+ Vector#r should be called #magnitude
+
+Wed Jun 29 10:11:08 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Add Matrix#diagonal?, hermitian?, normal?,
+ orthogonal?
+ permutation?, symmetric?, {lower|upper}triangular?, unitary?, zero?
+
+Wed Jun 29 10:09:35 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Specialize Matrix#find_index to return [row, col]
+ and accept the same optional argument as #each
+
+Wed Jun 29 10:07:32 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Matrix#each{_with_index} can iterate over a subset
+ of the Matrix
+
+Wed Jun 29 06:21:02 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (native_stop_timer_thread): skip to close
+ communication pipe to avoid timing bug (process termination timing).
+ The communication pipe will closed by OS.
+
+Wed Jun 29 06:09:54 2011 Koichi Sasada <ko1@atdot.net>
+
+ * error.c (rb_async_bug_errno): async-safe bug report function.
+ In timer thread, signal handler should use it.
+ The patch is contributed by Eric Wong <normalperson@yhbt.net>.
+ Refs: [ruby-core:37644] and [ruby-core:37647]
+
+ * thread_pthread.c: use rb_async_bug_errno().
+ And replace all fprintf() to write().
+
+ * internal.h (rb_async_bug_errno): add decl. of above func.
+
+Tue Jun 28 23:46:08 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/tracer.rb: count only non-internal libraries in stack trace,
+ ignoring custom_require.
+
+Tue Jun 28 21:44:58 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: recognize '\char' in ruby statement.
+
+Tue Jun 28 20:39:29 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/debug.rb (var_list): Command 'var *' did not work on 1.9(!).
+ global_variables, local_variables, and instance_variables returns
+ Symbols from 1.9 and need to stringify before evaling it.
+ See #4931.
+
+Tue Jun 28 19:23:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c: Now, USE_TRAP_SIGMASK depend on HAVE_PTHREAD_SIGMASK.
+ The code have already depended on pthread_sigmask since r27464.
+
+Tue Jun 28 15:09:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/benchmark.rb: merge eregon/benchmark.
+ https://github.com/eregon/ruby/tree/benchmark
+ patched by Benoit Daloze. [ruby-core:37593] [Bug #4940]
+
+ * lib/benchmark (Benchmark#bmbm): bmbm should be consistent with bm
+ for the return value.
+
+ * test/benchmark: remove preemptive test instead of skipping
+ I removed the preemptive test I wrote for Feature #4197.
+ I'll add it back when the implementation will be able to satisfy it.
+
+ * lib/benchmark (Benchmark#bmbm): remove useless explicit call,
+ #format is an alias of #to_s test/benchmark: add a test for
+ format of long time.
+
+ * lib/benchmark: fix label width: always add 1 to ensure there is a
+ space delimiter even with times over 100s
+ When I asked for Feature #4197, I wanted to make delimiting spaces
+ consistent for #bm and #bmbm.
+ But with times over 100s, the output contains no space between the
+ label and the first time (user).
+ Now both ensure there is always a space, even if that means 3 spaces
+ with times under 10s (because it is formatted as %10.6f)
+
+ * test/benchmark: let labels be a constant
+ lib/benchmark (Benchmark#realtime): avoid creating an unused Proc
+ lib/benchmark (Benchmark#benchmark): use ensure clause to restore
+ STDOUT.sync, as in #bmbm
+
+Tue Jun 28 13:41:51 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (native_stop_timer_thread): fixed commit miss of
+ r32244. grep sources before changing the signature of a function.
+
+Tue Jun 28 11:49:14 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (consume_communication_pipe):
+ Make "buff" as static. (Maybe) "buff" can be shared between
+ any caller (any threads) because no one use the read values.
+ "buff" (1024 byte) on stack may cause stack overflow on
+ several environment (we found a crash on FreeBSD).
+ And remove const value "buff_size", and define CCP_READ_BUFF_SIZE
+ macro.
+
+Tue Jun 28 11:45:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake: Update rake to fix some bugs and hide deprecated features
+ from RDoc.
+ * lib/rake/version.rb: Bump version to 0.9.2.1 to distinguish it from
+ the released version.
+ * NEWS: ditto
+
+Tue Jun 28 11:17:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 3.7 (final)
+ * NEWS: ditto
+
+Tue Jun 28 10:18:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c (rb_daemon): fix wrong #endif position.
+
+Tue Jun 28 07:50:32 2011 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (Init_Object): Teach RDoc what Init_class_hierarchy does to
+ hook up ri for BasicObject, Object, Module and Class.
+
+Tue Jun 28 05:03:32 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * thread.c (rb_thread_local_aref): RDoc fix. Thread#[] example
+ had a race. See #4480.
+
+Tue Jun 28 01:22:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_log): move BigMath.log from
+ bigdecimal/math.rb.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb: move test for BigMath.log from
+ test/bigdecimal/test_bigmath.rb.
+
+ * test/bigdecimal/test_bigmath.rb: ditto.
+
+Tue Jun 28 01:19:52 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: fix [Bug #4232].
+
+Tue Jun 28 00:14:13 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: fix [Bug #4409]. add DRbServer#here?.
+
+ * test/drb/test_drb.rb: ditto.
+
+ * test/drb/drbtest.rb: ditto.
+
+ * test/drb/ut_eq.rb: ditto.
+
+Tue Jun 28 00:08:43 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/workspace.rb: fix BUG#4793.
+
+Mon Jun 27 22:06:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (consume_communication_pipe): don't use C99
+ style variable length array.
+
+Mon Jun 27 22:04:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (consume_communication_pipe): change return
+ type to void. caller doesn't use it.
+
+Mon Jun 27 21:29:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.h (rb_global_vm_lock_struct): add volatile to
+ gvl->waiting. now thread_timer() access it w/o lock.
+
+Mon Jun 27 21:16:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: s/__gvl_acquire/gvl_acquire_common/ and
+ s/__gvl_release/gvl_release_common/.
+
+Mon Jun 27 11:41:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (rb_thread_create_timer_thread):
+ the type of return value of write(2) is ssize_t.
+
+Mon Jun 27 09:57:02 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (rb_thread_create_timer_thread):
+ Fixes missing initialization of oflags.
+
+Mon Jun 27 09:07:42 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c: Stop polling in the timer thread when there are
+ no waiting thread. If there are 2 or more runnable threads,
+ the timer thread does polling. Avoid polling makes power save
+ for several computers (0.2W per a Ruby process, when I measured).
+ If outside-event such as signal or Thread#kill was occurred
+ when the timer thread does not do polling, then wake-up
+ the timer thread using communication-pipe (the timer thread
+ waits this communication-pipe with select(2)).
+ The discussion about this modification can be found from the post
+ [ruby-core:33456] and other related posts.
+ Note that Eric Wong and KOSAKI Motohiro give us the huge
+ contributions for this modification. Thanks.
+
+ * thread_pthread.c (rb_thread_wakeup_timer_thread): add a function.
+ This function wakes up the timer thread using communication-pipe.
+
+ * thread.c (rb_thread_stop_timer_thread): add a parameter which
+ specify closing communication-pipe or not.
+
+ * thread.c (rb_thread_terminate_all): do not stop timer thread here
+ (ruby_cleanup() terminate timer thread).
+
+ * signal.c: wake up timer thread using
+ rb_thread_wakeup_timer_thread() from signal handler.
+
+ * eval.c (ruby_cleanup): use rb_thread_stop_timer_thread(1).
+
+ * process.c: use rb_thread_stop_timer_thread(0)
+ (reuse communication-pipe).
+
+ * thread_win32.c (rb_thread_wakeup_timer_thread): add a dummy
+ function.
+
+ * vm_core.h: add and fix decl. of functions.
+
+Mon Jun 27 08:01:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c: should use ALLOCA_N.
+
+Mon Jun 27 01:34:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/etc/test_etc.rb (TestEtc#test_get{pw,gr}nam): skip entries
+ start with + sign, which means NIS. these are returned in the
+ case that passwd and group entries in /etc/nsswitch.conf are set
+ to use "nis" explicitly on Debian. fixed #3683
+
+Mon Jun 27 00:44:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (rb_parser_end_seen_p): fix documentation about return
+ value. patched by Sho Hashimoto. [Bug #4511]
+
+Mon Jun 27 00:40:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (rb_hash_reject): add documentation that Hash#reject
+ without block returns enumerator.
+ patched by Michael Edgar [Bug #4847] [ruby-core:36800]
+
+Sun Jun 26 23:49:21 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_switch_hitter.rb: added a test.
+
+ Sun Jun 26 22:21:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: refactoring.
+
+Sun Jun 26 18:03:30 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * parse.y: comma at the end of line is no longer allowed.
+ A patch from Yukihiro Matsumoto <matz AT ruby-lang.org>.
+ (fixed #3456).
+
+Sun Jun 26 13:35:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_dump.c (rb_vm_bugreport): change CrashReporter suggestion messages
+ on Mac. It should be placed after "-- C level backtrace" line.
+ Suggested by Endoh-san.
+
+ <before>
+ -- See Crash Report log file under ~/Library/Logs/CrashReporter or ---------
+ -- /Library/Logs/CrashReporter, for the more detail of ---------------------
+ -- C level backtrace information -------------------------------------------
+
+ <after>
+ -- C level backtrace information -------------------------------------------
+
+ See Crash Report log file under ~/Library/Logs/CrashReporter or
+ /Library/Logs/CrashReporter, for the more detail of.
+
+Sun Jun 26 10:08:28 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb
+ * ext/openssl/ossl_missing.h/.c: add ASN1_put_eoc if missing.
+
+ * ext/openssl/ossl_asn1.c: introduce ossl_asn1_object_size and
+ ossl_asn1_put_object to wrap functionality depending on OpenSSL
+ version in use.
+ Fixes [ Ruby 1.9 - Bug #4916 ] reported by Hiroshi Nakamura.
+ [ruby-core:37286]
+
+Sun Jun 26 01:00:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (date_strftime_internal): removed meaningless braces.
+ * ext/date/date_core.c (gengo): the value should be int.
+
+Sat Jun 25 23:45:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * vm_insnhelper.c (vm_search_superclass): avoid control frame
+ stack overrun. currently super() in Proc created in a method
+ defined by Module#define_method raise NoMethodError. [Bug #4881]
+ * test/ruby/test_method.rb t_super_in_proc_from_define_method):
+ add test for it.
+
+Sat Jun 25 23:23:14 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread.c (sleep_forever): now Kernel#sleep don't wakeup by
+ signal handler execution. [Bug #4072]
+
+Sat Jun 25 23:14:47 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread.c (rb_threadptr_check_signal): remove unnecessary th->status
+ backup. fix race condition which may results unexpected main thread's
+ status transition. see #4072
+
+Fri Jun 24 19:57:30 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (setup_forwarded_info): Parsing request
+ header failed when the request is from 2 or more Apache reverse
+ proxies. It's said that all X-Forwarded-* headers will contain more
+ than one (comma-separated) value if the original request already
+ contained one of these headers. Since we could use these values as
+ Host header, we choose the initial(first) value. See #4922.
+
+ * test/webrick/test_httprequest.rb (test_forwarded): Test it.
+
+Fri Jun 24 17:06:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_daemon): should not start timer thread
+ twice. fixed Bug#4920.
+
+Fri Jun 24 15:54:14 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): Try to shutdown SSL
+ connection more gracefully. Call SSL_shutdown() max 4 times until it
+ returns 1 (success). Bi-directional SSL close has several states but
+ SSL_shutdown() kicks only 1 transition per call. Max 4 is from
+ mod_ssl.c of Apache httpd that says 'max 2x pending + 2x data = 4'.
+ See #4237.
+
+Fri Jun 24 07:24:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake/version.rb: Fixed VERSION to work with tool/rbinstall.rb
+ * bin/rake: Import bin/rake from 0.9.2
+ * tool/rbinstall.rb (install): Rake::VERSION is now in
+ lib/rake/version.rb. Fixes `make install`
+
+Fri Jun 24 07:11:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake: Import Rake 0.9.2
+
+Fri Jun 24 00:44:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (c_valid_{julian,gregorian}_p): fixed the range of month.
+
+Fri Jun 24 00:14:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: trivial changes on text.
+
+Thu Jun 23 22:46:57 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_x509name.c: Add X509::Name#hash_old as a wrapper
+ for X509_NAME_hash_old in OpenSSL 1.0.0. See #4805
+
+ * test/openssl/test_x509name.rb (test_hash): Make test pass with
+ OpenSSL 1.0.0.
+
+ * NEWS: Add it.
+
+Thu Jun 23 19:30:53 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_set_time): Check
+ argument type with NUM2LONG if the arg is not a Time object.
+ See #4919.
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_set_timeout): Check
+ type with NUM2LONG. Time as an arg is not allowed. See #4919.
+
+ * test/openssl/test_ssl_session.rb (test_session_time,
+ test_session_timeout): Test it.
+
+Wed Jun 23 13:30:30 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * signal.c(ruby_atomic_exchange): Fix definition style.
+
+Wed Jun 22 22:34:05 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_session_new_cb): Return 0 to
+ OpenSSL from the callback for SSL_CTX_sess_set_get_cb().
+ Returning 0 means to OpenSSL that the session is still valid
+ (since we created Ruby Session object) and was not freed by us with
+ SSL_SESSION_free(). Call SSLContext#remove_session(sess) in
+ session_get_cb block if you don't want OpenSSL to cache the session
+ internally.
+ This potential issue was pointed by Ippei Obayashi. See #4416.
+
+ * test/openssl/test_ssl_session.rb (test_ctx_server_session_cb): Test
+ it.
+
+Wed Jun 22 22:21:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl_session.c: Respect T_BIGNUM time values. Patch by
+ Tomoyuki Chikanaga.
+ [ Ruby 1.9 - Bug #4919 ] [ruby-dev:43869]
+
+Wed Jun 22 21:29:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/depend (SOCK_HEADERS): use $(top_srcdir) instead of
+ $(topdir). sorry!
+
+Wed Jun 22 19:47:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (cont_capture): add volatile.
+ On clang -O, it is needed to avoid the optimization.
+ With this and llvm/clang's recent fix, clang 3.0 can
+ build ruby-trunk with -O option.
+
+ * cont.c (cont_capture): use for-loop.
+
+ * array.c (rb_ary_each): add volatile and use it.
+
+ * vm_insnhelper.c (vm_call_cfunc): ditto.
+
+Wed Jun 22 18:20:46 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_session_remove_cb):
+ OpenSSL::SSL::SSLContext#session_remove_cb was broken. It wrongly
+ tried to call the session_*new*_cb callback.
+
+ * test/openssl/test_ssl_session.rb (class OpenSSL): Test it.
+
+Wed Jun 22 17:37:49 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl.h: Introduced OSSL_BIO_reset macro for PEM/DER
+ fallback scenarios.
+
+ * ext/openssl/ossl_pkey_dsa.c
+ * ext/openssl/ossl_x509req.c
+ * ext/openssl/ossl_pkey_rsa.c
+ * ext/openssl/ossl_pkey_ec.c
+ * ext/openssl/ossl_ssl_session.c
+ * ext/openssl/ossl_x509crl.c
+ * ext/openssl/ossl_pkey.c
+ * ext/openssl/ossl_pkey_dh.c
+ * ext/openssl/ossl_x509cert.c
+ * ext/openssl/ossl_pkcs7.c: Use OSSL_BIO_reset.
+
+ * ext/openssl/ossl_ssl.c
+ * ext/openssl/ossl_cipher.c
+ * ext/openssl/ossl_pkey_ec.c
+ * ext/openssl/ossl_pkcs12.c
+ * ext/openssl/ossl_ssl_session.c: Replace rb_raise occurrences by
+ ossl_raise. This automatically flushes OpenSSL's error queue.
+
+ * ext/openssl/ossl_pkcs7.c: Raise error if DER fallback for parsing
+ fails.
+
+ * test/openssl/test_pkey_ec.rb
+ * test/openssl/test_pkey_dsa.rb
+ * test/openssl/test_pkey_rsa.rb: Add assertions that OpenSSL.errors is
+ empty.
+
+ * test/openssl/test_pkey_rsa.rb: Remove initial OpenSSL.errors call in
+ test_new.
+ [ Ruby 1.9 - Bug #4885 ] [ruby-core:37134]
+
+Wed Jun 22 15:01:24 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Use SSL_MODE_RELEASE_BUFFERS if available.
+ Thanks, Eric Wong, for providing the patch.
+ [ Ruby 1.9 - Feature #4672 ] [ruby-core:36127]
+
+Wed Jun 22 14:47:53 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_buffering.rb
+ * test/openssl/test_pkcs12.rb: Inherit from Test::Unit::TestCase
+ instead of MiniTest::Unit::TestCase. [ruby-core:37275]
+
+Wed Jun 22 12:41:03 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_to_der):
+ OpenSSL::SSL::Session#to_der was broken. Fix buffer handling.
+
+ * test/openssl/test_ssl_session.rb (test_session): Test it.
+
+Wed Jun 22 12:38:52 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/openssl/test_ssl_session.rb: Split out SSL::Session related
+ tests from test_ssl.rb
+
+Wed Jun 22 03:20:52 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Fix cyclic references of
+ objects. Thanks to CvX for reporting the bug and a test case.
+ * test/psych/test_object.rb: test for cyclic object references.
+
+Wed Jun 22 02:39:54 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP.post_form): Do not ignore query part of
+ the given URI to post. See #655.
+
+ * test/net/http/test_http.rb, test/net/http/utils.rb: Test it.
+
+Wed Jun 22 01:28:13 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/openssl/test_x509store.rb (test_set_errors): Redhat is
+ distributing a patched version of OpenSSL that allows multiple CRL
+ for a key (multi-crl.patch.) Make test pass on such env. See #4122,
+ #4554.
+
+Tue Jun 21 21:50:37 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/webrick/httpresponse.rb (HTTPResponse#setup_header): Close
+ HTTP/1.1 connection when returning an IO object as response body
+ without setting HTTPResponse#chunked to true. See #855 no.1.
+
+ * test/webrick/test_httpserver.rb: Test it.
+
+Tue Jun 21 21:27:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * internal.h: move rb_thread_io_blocking_region() declaration
+ from intern.h to internal.h. It's still experimental API and
+ need more discussion. [ruby-dev:43698]
+ * include/ruby/intern.h: ditto.
+
+ * ext/socket/rubysocket.h: include internal.h.
+ * ext/socket/depend: add internal.h dependency.
+ * ext/socket/extconf.rb: add $INCFLAGS to topdir.
+
+Tue Jun 21 20:38:47 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (datetime_s_*): canonicalize 24 o'clock.
+
+Tue Jun 21 19:46:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb (TestThread#test_priority): enable
+ this test again. Current GVL respect thread priority rather
+ than past.
+
+Tue Jun 21 13:25:35 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (readline_getc): applied a patch in
+ #3827 by by Akio Tajima <artonx AT yahoo.co.jp>. (see #3827)
+
+Tue Jun 21 13:16:31 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: fixed bug, specify --disable-libedit
+ then disable libedit, does not specify then check readline and
+ libedit if failed checking readline. (fixes #3375)
+
+Mon Jun 20 22:52:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (before_exec): use sig_do_nothing instead of SIG_DFL
+ for avoiding a race.
+ * process.c (sig_do_nothing): new function.
+
+Mon Jun 20 21:31:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (thread_timer): rename timeout_10ms to
+ time_quantum. it's no longer 10ms.
+
+Mon Jun 20 18:46:02 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_cipher.c, ext/openssl/lib/openssl/cipher.rb:
+ Documentation fix by Ippei Obayashi. See #4419.
+
+Mon Jun 20 15:41:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/webrick/cookie.rb (WEBrick::Cookie.parse): Revert r31228.
+ r31228 was for allowing the 'Cookie:' header which did not have no
+ SP after ';' for separating cookie-pairs but RFC6265 requires single
+ SP after ';' there. We allow multiple SPs here for compatibility
+ with older WEBrick version.
+
+ * test/webrick/test_cookie.rb: Test it.
+
+Sun Jun 19 13:31:26 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * NEWS: Introduce --hide-skip on test/unit.
+
+Sun Jun 19 10:05:16 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: Override Test::Unit::TestCase#on_parallel_worker?
+ only when $0 == __FILE__.
+
+ * lib/test/unit/parallel.rb: Run Test::Unit::Worker.run only when
+ $0 == __FILE__.
+
+Sat Jun 18 23:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (fill_cbuf): finish reading at EOF, and the readconv has
+ been cleared by another thread while io_fillbuf() is waiting at
+ select(). a patch in [ruby-core:37197] by Hiroshi Shirosaki
+ <h.shirosaki AT gmail.com>. fixed #3840
+
+Sat Jun 18 21:36:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: remove GVL_DEBUG
+
+Sat Jun 18 21:32:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm.c, vm_core.h (rb_vm_stack_to_heap): remove const.
+ It makes compilations warnings.
+
+Sat Jun 18 18:54:15 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_core.h (rb_vm_stack_to_heap): fix "const" place.
+
+Sat Jun 18 17:23:38 2011 Tanaka Akira <akr@fsij.org>
+
+ * eval.c, hash.c, load.c, proc.c, range.c, thread.c, time.c: don't
+ declare internal functions.
+
+ * internal.h, vm_core.h: declare internal functions.
+
+ * array.c: include internal.h.
+
+ * common.mk: update dependency for array.o.
+
+Sat Jun 18 13:39:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * internal.h: declarations declared in include/ruby/*.h removed.
+
+Sat Jun 18 12:42:17 2011 Tanaka Akira <akr@fsij.org>
+
+ * method.h, internal.h iseq.h: declare internal functions.
+
+ * compile.c, eval.c, iseq.c, object.c, parse.y, proc.c, process.c,
+ thread.c, vm.c, vm_eval.c, vm_insnhelper.c, vm_method.c: don't
+ declare internal functions.
+
+ Note that rb_method_entry_eq() is defined in vm_method.c but
+ there was a declaration in proc.c with different const-ness.
+ Now it is declared in method.h with same const-ness to the
+ definition.
+
+ * object.c (rb_mod_module_exec): don't declare functions declared in
+ include/ruby/intern.h.
+
+Sat Jun 18 12:05:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/backward/classext.h: for evil gems. fixed #4803
+
+Sat Jun 18 11:12:13 2011 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: update dependencies.
+
+Sat Jun 18 11:09:03 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c: suppress warnings.
+
+Sat Jun 18 10:22:39 2011 Tanaka Akira <akr@fsij.org>
+
+ * internal.h: declare more internal functions.
+
+ * iseq.h (rb_method_get_iseq): declared.
+
+ * compile.c, eval.c, eval_error.c, iseq.c, parse.y, proc.c, range.c,
+ ruby.c, time.c, util.c, vm.c: don't declare internal functions.
+
+ * eval.c, parse.y, thread_pthread.c: non-existing function declarations
+ removed.
+
+Sat Jun 18 08:12:54 2011 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: dependencies updated.
+
+ * tool/update-deps: new file to assist update dependencies in
+ common.mk.
+
+Sat Jun 18 07:27:27 2011 Tanaka Akira <akr@fsij.org>
+
+ * internal.h: declare internal functions here.
+
+ * node.h: declare NODE dependent internal functions here.
+
+ * iseq.h: declare rb_iseq_t dependent internal functions here.
+
+ * vm_core.h: declare rb_thread_t dependent internal functions here.
+
+ * bignum.c, class.c, compile.c, complex.c, cont.c, dir.c, encoding.c,
+ enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c, io.c,
+ iseq.c, load.c, marshal.c, math.c, numeric.c, object.c, parse.y,
+ proc.c, process.c, range.c, rational.c, re.c, ruby.c, string.c,
+ thread.c, time.c, transcode.c, variable.c, vm.c,
+ tool/compile_prelude.rb: don't declare internal functions declared
+ in above headers. include above headers if required.
+
+ Note that rb_thread_mark() was declared as
+ void rb_thread_mark(rb_thread_t *th) in cont.c but defined as
+ void rb_thread_mark(void *ptr) in vm.c. Now it is declared as
+ the later in internal.h.
+
+Sat Jun 18 02:36:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpNewRbClass): fix type of the 2nd
+ argument.
+
+ * ext/bigdecimal/bigdecimal.h: ditto.
+
+Sat Jun 18 02:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): move BigMath.exp from
+ bigdecimal/math.rb.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb: move test for BigMath.exp from
+ test/bigdecimal/test_bigmath.rb.
+
+ * test/bigdecimal/test_bigmath.rb: ditto.
+
+Sat Jun 18 00:20:54 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: do not define wnum[01].
+
+Fri Jun 17 18:57:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): fix return value of obj[a,*b]=c.
+
+Fri Jun 17 13:09:45 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c: Clean up documentation.
+
+Fri Jun 17 09:25:14 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c: Document curses constants. Patch by Vincent
+ Batts. [Ruby 1.9 - Bug #4880]
+
+Fri Jun 17 09:11:05 2011 Eric Hodel <drbrain@segment7.net>
+
+ * object.c: Document Module#method_added and #method_removed.
+ Patch by Bryce Kerley. [Ruby 1.9 - Feature #4867]
+
+Fri Jun 17 08:50:16 2011 Eric Hodel <drbrain@segment7.net>
+
+ * io.c: Improve documentation of IO and File open and new.
+ Patch by Roger Pack. [Ruby 1.9 - Bug #4790]
+
+Fri Jun 17 07:53:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/csv.rb: Document #raw_encoding. Patch by David Czarnecki.
+ [Ruby 1.9 - Bug #4874]
+
+Fri Jun 17 07:46:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/benchmark.rb: Document Benchmark::Tms#memberwise. Patch by
+ David Czarnecki. [Ruby 1.9 - Bug #4873]
+
+Fri Jun 17 07:38:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/prettyprint.rb: Improve documentation. Patch by Ysiad
+ Ferreiras. [#4834]
+
+Fri Jun 17 07:23:03 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_drop): Improve documentation. Patch by Caley Woods.
+ [Ruby 1.9 - Bug #4858]
+
+Fri Jun 17 06:11:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/log.rb: Improve documentation of BasicLog and Log.
+ Patch by Olivier Brisse. [Ruby 1.9 - Bug #4833]
+ * lib/webrick/httpstatus.rb: Improve documentation of
+ WEBrick::HTTPStatus. Patch by Olivier Brisse.
+ [Ruby 1.9 - Bug #4833]
+
+Fri Jun 17 04:48:22 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c, thread_pthread.h: remove unused variables.
+ (native_thread_data_t::gvl_cond, native_thread_data_t::gvl_next)
+
+Thu Jun 16 14:32:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * time.c (rb_time_new): prevent overflow by "* 1000".
+
+Fri Jun 17 03:07:36 2011 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm4_thread_create_join.rb,
+ benchmark/bm_vm4_thread_mutex[1-3].rb: renamed to
+ bm_thread_* (fix last rename).
+
+Fri Jun 17 02:26:47 2011 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (native_thread_create): fix debug message.
+ (add last newline)
+
+Thu Jun 16 23:40:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_schedule_rec): fix {UN,}LIKELY macro misuse.
+ * gc.c (rb_newobj): ditto.
+ * vm_insnhelper.c (vm_method_search): ditto.
+
+Thu Jun 16 20:06:15 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb: Fix Regexp for test.
+
+ * test/testunit/tests_for_parallel/test_third.rb: Use
+ Test::Unit::TestCase#on_parallel_worker? for detecting worker.
+
+ * lib/test/unit/testcase.rb(Test::Unit::TestCase#on_parallel_worker?):
+ New Method Test::Unit::TestCase#on_parallel_worker? returns true
+ when a testcase is running on parallel worker.
+ * lib/test/unit/parallel.rb(Test::Unit::TestCase#on_parallel_worker?):
+ ditto.
+
+Thu Jun 16 19:27:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/test_securerandom.rb: Add testcase. This testcase does NOT aim
+ to test cryptographically strongness and randomness. It includes
+ the test for PID recycle issue of OpenSSL described in #4579 but
+ it's disabled by default.
+
+Thu Jun 16 17:55:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (TestIO#test_copy_stream_socket): fix
+ test hanging up issue. Patch by CHIKANAGA Tomoyuki.
+
+Thu Jun 16 15:17:39 2011 Eric Hodel <drbrain@segment7.net>
+
+ * variable.c (const_missing): Add simple example of const_missing.
+ Patch by Anuj Dutta. [Ruby 1.9 - Bug #4794]
+
+Thu Jun 16 15:09:29 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/monitor.rb: Improve documentation. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4823]
+
+Thu Jun 16 14:54:09 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/utils.rb: Document WEBrick::Utils. Patch by Olivier
+ Brisse. [Ruby 1.9 - Bug #4819]
+
+Thu Jun 16 14:26:46 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/httpservlet/erbhandler.rb: Allow the ERB document to
+ alter the content-type of the response. [Ruby 1.9 - Bug #4685]
+
+Thu Jun 16 14:15:47 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/timeout.rb: Clarify timeout duration types. Patch by Alf Mikula.
+ [Ruby 1.9 - Bug #4791]
+ * lib/net/http.rb: ditto
+
+Thu Jun 16 13:25:25 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Import RDoc 3.7 release candidate
+
+Thu Jun 16 11:35:09 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (search_response): parses SEARCH responses from
+ the Yahoo IMAP server correctly. patched by Mark Nadig. [Bug #4509]
+
+Thu Jun 16 09:12:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * fix for build on solaris 10.
+
+Thu Jun 16 09:08:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/io/console/test_io_console.rb (TestIO_Console#test_sync):
+ fix for daemon process.
+
+Thu Jun 16 07:58:01 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb(test_ignore_tzero): Test for r32109.
+
+ * test/testunit/tests_for_parallel/test_third.rb: Use another way to
+ detect that test is running on worker. This fixes sometimes
+ TestParallel failing.
+
+Thu Jun 16 07:20:06 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb(Test::Unit::Runner#_run_parallel): Ignore -j0
+ because it makes blocking forever by IO.select.
+
+Thu Jun 16 03:08:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/testunit/test_parallel.rb (TestParallel::TestParallelWorker#
+ setup): now can run on Windows, probably.
+
+ * test/testunit/test_parallel.rb (TestParallel::TestParallel#setup):
+ ditto.
+
+Thu Jun 16 03:00:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (do_select): Windows: no need to poll if select(2) is
+ cancelable.
+
+ * thread_win32.c (native_fd_select): new function to make select(2)
+ cancelable.
+
+ * thread_win32.c (rb_w32_check_interrupt): new function for checking
+ interrupt.
+
+ * win32/win32.c (rb_w32_select_with_thread): new function. cancelable
+ select(2).
+
+ * win32/win32.c (rb_w32_select): use above function internally.
+
+Wed Jun 15 23:30:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * gc.c: fix a regression by r31690 on AIX because AIX malloc
+ return NULL if it's passed 0. But some caller don't expect it.
+ patch by Yutaka Kanemoto. [ruby-dev:43779]
+ (vm_malloc_prepare): return calculated size.
+ (vm_xmalloc): use above result.
+ (vm_xcalloc): ditto.
+
+Wed Jun 15 23:11:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c: remove BLOCKING_REGION_CORE() macro. It's no longer used
+ since r32022.
+
+Wed Jun 15 21:00:47 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_config.rb: execute based on the existence of the
+ OpenSSL module.
+
+Wed Jun 15 12:35:11 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb (test_copy_stream_socket): wait a child process
+ before SIGUSR1 handler is removed.
+
+ * test/pathname/test_pathname.rb (define_assertion): use line number
+ for test method names.
+
+Wed Jun 15 10:37:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (rb_stat_rdev): use DEVT2NUM.
+
+ * file.c (rb_stat_rdev_major): ditto.
+
+ * file.c (rb_stat_rdev_minor): ditto.
+
+Wed Jun 15 05:12:59 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (lib_eventloop_core): revert the last change (it's
+ the part for ruby_1_8), and use rb_thread_check_ints() when RUBY_VM
+ is defined.
+
+Wed Jun 15 04:42:47 2011 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm3_thread_*.rb: renamed bm_vm3_thread_*.rb to
+ benchmark/bm_vm_thread_*.rb.
+
+Wed Jun 15 04:28:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_vm4_thread_pass.rb: rename bm_vm4* to
+ bm_vm_thread_*. suggested by ko1.
+ * benchmark/bm_vm4_pipe.rb: ditto.
+ * benchmark/bm_vm4_alive_check1.rb: ditto.
+ * benchmark/bm_vm4_pass_flood.rb: ditto.
+
+Wed Jun 15 03:52:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_vm4_pass_flood.rb: new benchmark for GVL fairness.
+ * benchmark/bm_vm4_alive_check1.rb: ditto.
+
+Wed Jun 15 01:27:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (gvl_yield): fix live lock issue on 1-2 cpus
+ system. It's additional fix for r32021.
+ * thread_pthread.c (gvl_init): add switch_wait_cond.
+ * thread_pthread.h (typedef struct rb_global_vm_lock_struct): ditto.
+
+Tue Jun 14 23:16:22 2011 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (show_progress): refine verbose mode.
+ (exec_test): ditto.
+
+Tue Jun 14 23:02:36 2011 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (show_progress): extracted from assert_check.
+ (assert_check): use show_progress.
+ (assert_normal_exit): ditto.
+ (assert_finish): ditto.
+ (flunk): ditto.
+
+Tue Jun 14 22:51:42 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_*.rb: added tests.
+
+Tue Jun 14 22:09:58 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: renamed some functions.
+ * ext/date/date_core.c: modified doc.
+
+Tue Jun 14 21:26:01 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (cont_save_thread): add new utility function.
+ rb_context_t::saved_thread.machine_stack_start and
+ machine_stack_end should be cleared immediately after a snapshot of
+ current thread is stored to saved_thread. [ruby-dev:43680] [Bug #4855]
+ this change aims to get rid of unnecessary GC mark at machine stack.
+
+Tue Jun 14 19:50:49 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_autoload.rb: remove temporary directory.
+
+Tue Jun 14 11:05:03 2011 Narihiro Nakamura <narihiro@netlab.jp>
+
+ * gc.c (rb_gc_set_params): call initial_expand_heap if
+ initial_heap_min_slots is set.
+
+Tue Jun 14 11:02:08 2011 Narihiro Nakamura <narihiro@netlab.jp>
+
+ * gc.c: use size_t.
+
+Tue Jun 14 01:10:38 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/coverage/test_coverage.rb: add a test for restart. a patch
+ from Xavier Shay. [ruby-core:36745]
+
+Tue Jun 14 01:05:10 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/coverage/coverage.c: make it restartable. [ruby-core:36539]
+
+Mon Jun 13 23:55:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_schedule_rec): call gvl_yield() unconditionally.
+ * thread_pthread.c: remove HAVE_GVL_YIELD macro.
+ * thread_win32.c (gvl_yield): new. this fallback logic was moved from
+ rb_thread_schedule_rec().
+
+Mon Jun 13 23:50:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/io/console/console.c (console_dev): typo.
+
+Mon Jun 13 23:38:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_parse_string): flush delayed token. based on a
+ patch by Masaya Tarui in [ruby-dev:43762]. Bug #4544
+
+ * parse.y (yylex): revert r24557. delayed token at the end of
+ string should be flushed already by the above change.
+
+Mon Jun 13 23:33:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_dev): console should be
+ unbuffered.
+
+ * ext/io/console/console.c (console_dev): take care of no-ctty
+ case.
+
+Mon Jun 13 23:06:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: rewrite GVL completely. This fix improve some
+ benchmark dramatically (e.g. vm3_thread_mutex result changed
+ form 120.601sec to 3.426sec).
+ * thread_win32.c: ditto.
+ * thread_pthread.h: ditto.
+ * vm_core.h: ditto.
+ * thread.c: ditto.
+
+Mon Jun 13 23:11:52 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_unix.rb: don't use Thread.abort_on_exception.
+
+Mon Jun 13 23:05:01 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/unixsocket.c (unix_send_io): race condition fixed.
+ (unix_recv_io): ditto.
+ fixed by Eric Wong. [ruby-core:35574]
+
+ * test/socket/test_unix.rb: test added for above problem.
+
+Mon Jun 13 21:41:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_win32.c (native_cond_signal): remove unnecessary rb_bug().
+ It's additional fix for r32021. [Bug #4696]
+
+Mon Jun 13 20:50:49 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ec.rb
+ test/openssl/test_pkey_ec.rb: merge both files into test_pkey_ec.rb.
+ Removed redundant group instantiation from PKey tests.
+ * test/openssl/utils.rb: only create TEST_PKEY_EC_P256V1 if EC is
+ defined.
+
+Mon Jun 13 20:28:24 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/digest.rb: remove MDC2 from test, it is not available
+ by default in an OpenSSL installation.
+
+Mon Jun 13 20:18:55 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, vm_insnhelper.h: move decl. of
+ ruby_vm_global_state_version and related macros
+ from vm_core.h to vm_insnhelper.h.
+
+ * vm.c (vm_clear_all_cache): added. This function is called
+ when ruby_vm_global_state_version overflows.
+ TODO: vm_clear_all_inline_method_cache() is only place holder.
+ We need to implement it ASAP.
+
+ * vm_method.c (vm_clear_global_method_cache): added.
+
+Mon Jun 13 19:46:21 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/cmath.rb: add new method Object#real?. fix #3137
+
+Mon Jun 13 18:52:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (is_kind_of_BigDecimal): new function to
+ examine the whether the object is kind of BigDecimal.
+
+Mon Jun 13 18:49:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): use GetVpValueWithPrec
+ for Float and Rational arguments.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_new, test_cmp, test_power):
+ add and modify tests for the above change.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): modify coding style to
+ match ruby's standard.
+
+Mon Jun 13 18:33:04 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (SecureRandom.random_bytes): modify PRNG state
+ to prevent random number sequence repetition at forked child
+ process which has same pid.
+ reported by Eric Wong. [ruby-core:35765]
+
+Mon Jun 13 17:02:34 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#use_ssl?): require 'openssl' only when
+ https is needed. fixes r31933.
+
+Mon Jun 13 14:35:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * lib/cmath.rb (CMath.cbrt): returns the principal value of the cube
+ root of the argument. fix #3676
+
+ * test/test_cmath.rb (test_cbrt_returns_principal_value_of_cube_root):
+ test for the above change.
+
+Mon Jun 13 14:17:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * lib/test/unit.rb (Test::Unit::GlobOption#non_options): fix typo.
+
+Mon Jun 13 13:04:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c: fix error for digests that have no oid
+ (e.g. DSS1).
+ * test/openssl/test_digest.c: add tests for this.
+
+Mon Jun 13 12:51:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/yaml.rb: load psych only when syck is not loaded.
+
+Mon Jun 13 12:23:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+Mon Jun 13 12:23:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/psych/lib/psych/deprecated.rb (Object#to_yaml_properties):
+ undef to_yaml_properties before redefine it.
+
+ * ext/syck/lib/syck/rubytypes.rb: ditto.
+
+Mon Jun 13 11:30:10 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c: allow Digests to be created by sn, ln or
+ oid.
+ * test/openssl/test_digest.rb: add tests for this.
+ [Ruby 1.9 - Feature #4412] [ruby-core:35319]
+
+Mon Jun 13 10:54:03 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/pkey_dh.c: corrected documentation.
+ * test/openssl/utils.rb: add test key for DH.
+ * test/openssl/test_pkey_dh.rb: add tests.
+
+Mon Jun 13 10:13:08 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/pkey_dh.c: clarify difference between DH#public_key and
+ DH#pub_key in documentation.
+
+Mon Jun 13 05:50:43 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: introduce PKey.read.
+
+Mon Jun 13 05:17:29 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey.c: added PKey.read module function that allows
+ reading arbitrary public/private keys from DER-/PEM-encoded File or
+ string instances.
+ * ext/openssl/ossl_pkey_dh.c: improved documentation.
+ * test/openssl/utils.rb: added EC test key.
+ * test/openssl/test_pkey_rsa.rb
+ test/openssl/test_pkey_dsa.rb: Test PKey.read. Reuse keys from
+ OpenSSL::TestUtils.
+ * test/openssl/test_pkey_ec.rb: Created test file for EC tests.
+ Test PKey.read.
+ [Ruby 1.9 - Feature #4424] [ruby-core:35330]
+
+Mon Jun 13 04:42:24 2011 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (total_i): fix to skip no ruby objects.
+
+Mon Jun 13 03:07:38 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/benchmark/test_benchmark.rb (capture_output):
+ replace '-' as space. On NetBSD, subtract between two Process.times
+ after and before the short process may return negative value like:
+ t0=Process.times; yield; t1=Process.times; p t1.utime-t0.utime
+
+Mon Jun 13 02:40:23 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_dsa.rb: Test for DSA#syssign/sysverify.
+
+Mon Jun 13 01:59:19 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_dh.c: completed documentation.
+ * ext/openssl/ossl_pkey_dsa.c: corrected examples. Improved parameter
+ sections.
+
+Mon Jun 13 00:25:10 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_dsa.c: completed documentation.
+
+Sun Jun 12 23:36:46 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (kill_sub_thread): remove the method. [ruby-core:34185]
+
+Sun Jun 12 21:01:56 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (d_lite_marshal_load): should give converted value.
+
+Sun Jun 12 20:36:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: edited doc.
+
+Sun Jun 12 18:12:07 2011 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm3_clearmethodcache.rb: added.
+
+Sun Jun 12 17:40:29 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c (rb_clear_cache*): update only vm state version.
+
+ * vm_method.c (rb_method_entry_get_without_cache, rb_method_entry):
+ Fill method cache entry with vm state version, and
+ check current vm state version for method (cache) look up.
+ This modification speed-up invalidating of global method cache table.
+ [Ruby 1.9 - Feature #3905] [ruby-core:36908]
+
+Sun Jun 12 16:19:48 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: fail on Mac OS X. [Bug #4853][ruby-dev:43655]
+
+Sun Jun 12 15:56:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c: remove th->transition_for_lock. It's thread unsafe.
+ [Bug #4723][ruby-dev:43563]
+
+Sun Jun 12 15:47:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c: introduce spurious wakeup safe deadlock check.
+ [Bug #4696][ruby-dev:43554]
+
+Sun Jun 12 13:33:52 2011 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm3_thread_mutex.rb: remove it.
+
+ * benchmark/bm_vm3_thread_mutex[1-3].rb: added 3 benchmarks.
+ 1: one thread with one mutex (no contention).
+ 2: two threads with one mutex (contention).
+ 3: 1000 threads with one mutex (huge number of contention)
+ Above removed benchmark was type 3.
+ Therefore, this commit adds type 1 and 2 benchmark.
+
+Sun Jun 12 11:16:59 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c: use select() appropriately for sendfile().
+ Fixed by Eric Wong. [ruby-core:36150]
+ (maygvl_copy_stream_wait_readwrite): removed.
+ (nogvl_copy_stream_sendfile): use nogvl_copy_stream_wait_write and
+ maygvl_copy_stream_wait_read instead of
+ maygvl_copy_stream_wait_readwrite.
+
+Sun Jun 12 09:32:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * atomic.h (ATOMIC_OR): _InterlockedOr is not available on mingw.h
+ * gc.c (rb_gc_set_params): VM_OBJSPACE is disabled on mingw.
+
+Sun Jun 12 01:07:09 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: edited doc.
+
+Sat Jun 11 23:18:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (RUBY_VM_SET_TIMER_INTERRUPT, RUBY_VM_SET_INTERRUPT,
+ RUBY_VM_SET_FINALIZER_INTERRUPT): use atomic ops for preventing
+ interrupt_flag bit lost. [Bug #4770][ruby-dev:43467]
+ * thread.c (rb_threadptr_execute_interrupts_rec): ditto.
+ * vm_core.h (typedef struct rb_thread_struct): change type of
+ interrupt_flag to rb_atomic_t.
+ * atomic.h: move atomic ops definition from signal.c.
+ * signal.c: remove atomic ops definition.
+ * common.mk (gc, signal, thread, cont): add to dependency to atomic.h.
+
+Sat Jun 11 23:23:52 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: edited doc.
+
+Sat Jun 11 23:02:36 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (module OpenSSL):
+ Buffering#each_byte should return String in accordance with IO in
+ 1.9.
+
+ * test/openssl/test_buffering.rb (class OpenSSL): add tests for getc
+ and each_byte.
+
+Sat Jun 11 22:41:37 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * time.c: a correction of doc for strftime (%v).
+
+Sat Jun 11 22:30:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: replaced doc for strftime based on Time's one.
+
+Sat Jun 11 22:07:56 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (datetime_s_{iso8601,rfc3339,xmlschema,rfc2822,httpdate}):
+ do not take argument comp.
+
+Sat Jun 11 21:58:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: added examples.
+
+Sat Jun 11 19:40:45 2011 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: expand heap if initial_heap_min_slots is bigger than
+ HEAP_MIN_SLOTS.
+
+Sat Jun 11 19:42:50 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ChangeLog (vim): set shiftwidth to 2.
+
+Sat Jun 11 19:27:06 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_x509req.c: raise RequestError instead of
+ CertificateError when Request#to_der gets an error from OpenSSL.
+ Patch from Ippei Obayashi, see #4420. I cannot write a test for
+ this... Request does not allow to create broken bytes...
+
+Sat Jun 11 19:34:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (Date::(ABBR_)?(MONTH|DAY)NAMES): should be usascii.
+
+Sat Jun 11 19:24:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: rewrote doc.
+
+Sat Jun 11 19:04:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::GlobOption#non_options): should run
+ with 1.8.
+
+Sat Jun 11 18:05:57 2011 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * bootstraptest/runner.rb: should initialize $stress to avoid warnings.
+
+Sat Jun 11 18:02:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_getc): should be 7bit if ascii. fixes #4557
+
+Sat Jun 11 16:52:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (rb_enc_uint_chr): fix message format. Bug#4869
+
+Sat Jun 11 16:28:25 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/formatters/pretty.rb
+ (REXML::Formatters::Pretty#write_text),
+ test/rexml/test_core.rb
+ (Tester#test_pretty_format_long_text_finite): don't ignore
+ 'width' parameter in pretty formatter. fixes #4498
+ Reported by Michael Frasca. Thanks!!!
+
+Sat Jun 11 16:11:36 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_core.rb
+ (Tester#test_pretty_format_long_text_finite): remove needless
+ assert_nothing_raised.
+
+Sat Jun 11 16:04:03 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/xpathparser.rb
+ (REXML::Parsers::XPathParser#parse),
+ test/rexml/test_elements.rb
+ (ElementsTester#test_each_with_frozen_condition):
+ don't modify original XPath. fixes #4161
+ Reported by Pavel Shved. Thanks!!!
+
+Sat Jun 11 15:53:27 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_elements.rb (ElementsTester): remove needless
+ prefix from test name.
+
+Sat Jun 11 15:36:36 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
+ * common.mk: fixed a grammatical error
+
+Sat Jun 11 14:20:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm.c (thread_memsize): don't ignore size of th->local_storage.
+
+Sat Jun 11 10:32:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: should quote arch_hdrdir and libpath for the case
+ installed prefix contains spaces.
+
+Sat Jun 11 10:20:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (native_cond_timeout): wrap conditionally used
+ label.
+
+ * thread_pthread.c (native_sleep): remove unused variable.
+
+Sat Jun 11 10:15:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (rb_thread_execute_interrupts): use GetThreadPtr to extract
+ rb_thread_t from VALUE.
+ reported by Motohiro KOSAKI. [ruby-dev:43700]
+
+Sat Jun 11 10:00:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_process_options): add missing return type.
+
+Fri Jun 10 23:18:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/tk/tcltklib.c (lib_eventloop_core): replace CHECK_INTS with
+ rb_thread_check_ints(). Because current code can't be compiled.
+
+Fri Jun 10 16:38:13 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): When ruby process is run as Windows
+ Service the console codepage is not set, GetConsoleCP returns 0.
+ So on such environment, use GetACP().
+ http://blogs.msdn.com/b/michkap/archive/2005/02/08/369197.aspx
+ patched by Rafal Bigaj [ruby-core:36832] [Bug #4854]
+
+Fri Jun 10 14:34:24 2011 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: restore TESTRUN_SCRIPT to "$(srcdir)/test.rb".
+ TESTRUN_SCRIPT is used by "make run", "make gdb" and so on.
+
+Fri Jun 10 13:01:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_module.rb (TestModule#remove_rake_mixins): remove all
+ module related to Rake.
+
+Fri Jun 10 09:52:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * encoding.c: Mention that Encoding.compatible? can work with more
+ than just Strings.
+
+Fri Jun 10 02:25:53 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: updating version to match released gem.
+
+Fri Jun 10 01:06:29 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/bigdecimal (BigDecimal_to_i): Integer#** may return flonum.
+
+Fri Jun 10 00:35:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (string_to_c_internal): uses rb_reg_nth_match;
+ * rational.c (string_to_r_internal): ditto.
+
+Fri Jun 10 00:25:03 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c: remove an unused declaration.
+
+Fri Jun 10 00:24:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (string_to_r): Rational#** may return flonum.
+
+Thu Jun 9 23:57:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c: fix IO.copy_stream interrupt handling.
+ based on the patch by Eric Wong. [ruby-core:36156]
+
+ * vm_core.h (rb_thread_call_with_gvl): don't declare here.
+
+ * thread.c: include internal.h.
+ (rb_thread_execute_interrupts): new function.
+
+ * internal.h (rb_thread_execute_interrupts): declared.
+ (rb_thread_call_with_gvl): declared.
+
+Thu Jun 9 23:34:01 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (rb_objspace_call_finalizer): use rb_typeddata_is_kind_of() for
+ type check to get rid of a double free when main Thread has singleton
+ class. [ruby-core:36741] [Bug #4828]
+ * thread.c (rb_obj_is_mutex): add a new utility function.
+ * vm.c (rb_obj_is_thread): ditto.
+
+Thu Jun 9 22:53:49 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_thread.rb (TestThread#test_kill_thread_subclass):
+ add test for Thread.kill with Thread subclass instance.
+
+Thu Jun 9 22:31:47 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_thread.rb (TestThread#test_kill_wrong_argument):
+ test for [ruby-core:35086].
+ partially forward porting r31402 from ruby_1_9_2 branch.
+
+Thu Jun 9 18:36:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * string.c: Fix the ambiguous description of the behavior of
+ rb_str_aref_m with a range. It returns nil when the beginning of
+ the range is greater than the end of the string rather than the range.
+
+Thu Jun 9 10:57:03 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Hash subclasses can be read
+ from YAML files.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Hash subclasses can be
+ dumped to YAML files.
+ * test/psych/test_hash.rb: corresponding test.
+
+Thu Jun 9 09:18:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Ruby modules can be loaded
+ from YAML files.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Ruby modules can be
+ dumped to YAML files.
+ * test/psych/test_class.rb: corresponding test.
+
+Thu Jun 9 09:05:04 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Ruby classes can be loaded
+ from YAML files.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Ruby classes can be
+ dumped to YAML files.
+ * test/psych/test_class.rb: corresponding test.
+
+Wed Jun 8 21:38:57 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (root_fiber_alloc): set root fiber's status RUNNING.
+ in cont_mark() only RUNNING fiber's machine stack is marked.
+ root fiber's status should be RUNNING at the beginning regardless of
+ FIBER_USE_NATIVE. [ruby-core:36735] fixes #4827
+
+Tue Jun 7 20:50:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * doc/irb/irb.rd: fix typo. patch by Nobuhiro IMAI.
+ [Bug #4843] [ruby-dev:43639]
+ * doc/irb/irb.rd.ja: ditto.
+ * doc/ChangeLog-YARV: ditto.
+
+Tue Jun 7 18:52:55 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/user_interaction.rb (Gem::StreamUI#tty?): IO#tty? of
+ Windows has been fixed at r29969.
+
+ * test/rubygems/test_gem_stream_ui.rb: now can run tests.
+
+Tue Jun 7 18:36:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem.rb (TestGem#{test_self_user_home_userprofile,
+ test_self_user_home_user_drive_and_path}): should simply ignore
+ meaningless tests instead of skipping them.
+
+Tue Jun 7 18:15:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ should show some messages when skipping tests.
+
+Tue Jun 7 13:59:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/date/date_core.c (date_s_today, datetime_s_now): check the
+ result of localtime_r().
+
+Tue Jun 7 13:36:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/extconf.rb: use $defs not $CPPFLAGS to get rid of
+ command line escape issues on Windows. fixed #4835.
+
+Tue Jun 7 03:18:45 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_io.rb (TestIO#test_s_{,bin}write): do not create a
+ file under /tmp. [Bug #4846]
+
+Mon Jun 6 22:51:43 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c: use #if FIBER_USE_NATIVE instead of #ifdef.
+ you can suppress use of setcontext for Fiber with compile option
+ -DFIBER_USE_NATIVE=0
+
+Mon Jun 6 21:59:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_switch_hitter.rb: added a test.
+
+Mon Jun 6 21:37:45 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: added notes.
+
+Mon Jun 6 21:02:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: flattened format to strftimev.
+ * ext/date/date_core.c (date_strftime_internal): taints run.
+
+Mon Jun 6 15:10:17 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/{defines,missing}.h (rb_infinity, rb_nan): move from
+ defines.h to missing.h. (couldn't use RUBY_EXTERN there.)
+
+Mon Jun 6 14:35:48 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_markup_pre_process.rb (TestRDocMarkupPreProcess#
+ {test_include_file,test_include_file_encoding_incompatible}): no
+ need to write such workaround. don't hide the bug of ruby. (and the
+ bug is already fixed.)
+
+Mon Jun 6 14:11:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/date/date_core.c (valid_jd_sub): need to convert from VALUE to
+ double.
+
+ * ext/date/date_core.c (offset_to_sec): get rid of a compiler warning.
+
+Mon Jun 6 14:09:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/defines.h (rb_infinity, rb_nan): export for Windows.
+
+Mon Jun 6 10:54:45 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb(Test::Unit::Runner#puke):
+ Add overriding from MiniTest::Unit#puke. This reverts minitest's fix
+ that skip messages are hidden when not verbose mode (-v option).
+ To hide skip messages, use --hide-skip option instead.
+
+Mon Jun 6 10:52:13 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: don't use autoload.
+
+Mon Jun 6 09:39:43 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): release event objects to plug memory
+ leak. Thanks Mark J. Titorenko!
+
+Sun Jun 5 23:26:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * eval.c: remove rb_thread_stop_timer_thread function declaration.
+ Instead, include vm_core.h.
+ * process.c: ditto.
+
+Sun Jun 5 21:38:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (thread_timer): add to care a spurious wakeup.
+ When native_cond_timedwait() return 0 by spurious wakeup, we
+ don't have to neither 1) call timer_thread_function and 2)
+ exit the timer thread.
+
+Sun Jun 5 17:50:01 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (m_real_cwyear): new. derived from m_cwyear.
+ * ext/date/date_strftime.c: trivial changes.
+
+Sun Jun 5 17:22:01 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/config_list.in: add new options for tcltklib.
+
+Sun Jun 5 10:06:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_tmx.h: now does not place decoded data. allows to
+ access indirectly via functions on demand.
+ * ext/date/date_strftime.c: ditto.
+ * ext/date/date_core.c: ditto.
+ * ext/date/date_core.c ({d|dt}_lite_to_s): use strftime.
+
+Sun Jun 5 06:22:02 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * NEWS: wrote about changes of date.
+
+Sat Jun 4 16:59:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (d_lite_inspect): changed the format.
+ * ext/date/date_core.c: refactoring and fixing some bugs.
+
+Sat Jun 4 11:30:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (check_mix_method_i, do_mix_method_i): not mix methods
+ renamed as nil.
+
+Sat Jun 4 04:04:41 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rubygems/test_gem_commands_which_command.rb:
+ "missing" exists on ruby's top source directory. [Bug #4815]
+
+Fri Jun 3 21:48:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/test_case.rb: Refix for test-all in separate directory.
+ r31147 + r31151.
+
+Fri Jun 3 20:58:47 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/date/date_core.c (d_lite_plus): get rid of compiler warnings.
+
+Fri Jun 3 20:56:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/missing.h, numeric.c (round): moved prototype of round()
+ from numeric.c to missing.h. (note: round() is C99 feature, so ruby
+ provides it if not exist in C runtime.)
+
+Fri Jun 3 20:42:04 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: Keep $stdin, $stdout before run testcase
+ and restore after run. Because some test break $stdin, $stdout.
+ Fixes [Bug #4433] [ruby-core:35353]
+
+Fri Jun 3 19:58:14 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_fflush): windows -- call fsync() only when the FD is tied to
+ file, because if the FD is pipe, it blocks.
+
+Fri Jun 3 09:27:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (URI::HTTP#request_uri): return nil when the uri
+ is path-rootless form. Bug #4759
+
+Thu Jun 2 23:51:03 2011 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Improve the line ending detection algorithm
+ patch by Alexey).
+
+Thu Jun 2 20:05:57 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_s_write, rb_io_s_binwrite): return!!!
+
+Thu Jun 2 16:29:34 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * io.c: Add File.write, File.binwrite. [Feature #1081] [ruby-core:21701]
+
+ * test/ruby/test_io.rb: Test for File.write, File.binwrite.
+
+ * NEWS: News for above.
+
+Thu Jun 2 12:33:09 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_fflush, rb_io_flush): need to fsync() when ruby calls
+ internal flush. [ruby-core:36670] [Bug #4813]
+
+Thu Jun 2 07:56:24 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: reduce CPU power required by an eventloop.
+
+Tue May 31 21:28:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring):
+ redirect stderr to null device.
+
+Thu Jun 2 00:45:26 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: fix for uninitialized global variables.
+ [Ruby 1.9 - Bug #4811]
+
+Wed Jun 1 21:57:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_sleep): fix 1000times calculation error.
+ this is a regression since r31457. [Bug #4808] [ruby-dev:43606]
+
+Wed Jun 1 17:19:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: remove unused macro.
+
+Wed Jun 1 15:42:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (peek_n): new macro to see next nth char.
+
+Wed Jun 1 15:40:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (gem): fix for rubygems change.
+
+Wed Jun 1 14:07:57 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.2.2 (r6281)
+ * test/minitest/*: ditto
+
+Wed Jun 1 12:35:50 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rubygems*: Import rubygems 1.8.5 (released @ 137c80f)
+ * test/rubygems: Ditto
+
+Wed Jun 1 12:34:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: add new features of bigdecimal.
+
+Wed Jun 1 09:41:14 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cgi/util.rb: Improve documentation. Patch by Kuba Fietkiewicz.
+ [Ruby 1.9 - Bug #4775]
+ * lib/cgi/core.rb: ditto
+
+Wed Jun 1 09:26:05 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mathn.rb: Improve documentation and attach it to Numeric.
+ Modified from patch by Anil V. [Ruby 1.9 - Bug #4762]
+
+Wed Jun 1 09:21:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/prime.rb: Indent examples enough to appear as code sections.
+ Note that Prime is Enumerable. [#4762]
+
+Wed Jun 1 07:34:57 2011 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c (key_i): Change rdoc from "the first occurrence" to "an
+ occurrence" since first occurrence is not a specification of
+ Hash#key. [Ruby 1.9 - Bug #4760]
+
+Wed Jun 1 07:26:19 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/pty/pty.c (pty_check): Restore "not reached" comment.
+ [Ruby 1.9 - Bug #4756]
+
+Wed Jun 1 07:21:40 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Fix document-method declarations for set_sync and
+ set_comment. [Ruby 1.9 - Bug #4695]
+
+Wed Jun 1 06:43:13 2011 Masaya Tarui <tarui@ruby-lang.org>
+
+ * load.c (loaded_feature_path): cut nonsense loop execution to fix
+ performance bug.
+
+Wed Jun 1 01:16:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_mix_module): implement Module#mix.
+
+Wed Jun 1 01:15:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_encoding_set): should honor already set ecflags since it
+ might be set by mode option. fixed #4804
+
+Wed Jun 1 00:34:04 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): remove unused
+ variable.
+
+Wed Jun 1 00:32:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): support instantiation from
+ a Float through Rational.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_global_new_float): add a test for
+ the above changes.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_new_with_float): ditto.
+
+Wed Jun 1 00:07:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_coerce): support coerce with a
+ Rational. The precision used for instantiate a BigDecimal from the
+ given Rational is obtained from the receiver BigDecimal.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_coerce): add a test for the
+ above change.
+
+Tue May 31 23:49:08 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (offset_to_sec): fixed invalid validation.
+
+Tue May 31 23:43:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): replace the algorithm for
+ coercing from a Rational to stop requiring "bigdecimal/util.rb".
+ [ruby-core:34318]
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValue): refactoring.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): support instantiation from a
+ Rational.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_global_new_with_rational): add a
+ test for the above change.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_new_with_rational): ditto.
+
+Tue May 31 22:44:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): support instantiation a
+ BigDecimal object from an Integer.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_new_with_integer):
+ add for testing the above change.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_global_new): replace its body
+ with a BigDecimal_new call.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_global_new_with_integer):
+ add for testing the above change.
+
+Tue May 31 22:24:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: use simple/complex mode instead of light/right mode.
+ * test/date/*.rb: followed the above changes.
+
+Tue May 31 21:28:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring):
+ initialize SIGINT handler.
+
+Tue May 31 17:03:24 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/net/http.rb, lib/net/protocol.rb: Allow to configure to wait
+ server returning '100 continue' response before sending HTTP request
+ body. See NEWS for more detail. See #3622.
+ Original patch is made by Eric Hodel <drbrain@segment7.net>.
+
+ * test/net/http/test_http.rb: test it.
+
+ * NEWS: Add new feature.
+
+Tue May 31 14:17:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_s_pipe): potential bug. the mode of read IO is set as
+ DEFAULT_TEXTMODE in call of io_set_encoding(), and of write IO is
+ also set as it in call of io_new_instance() via rb_protect().
+ so, if DEFAULT_TEXTMODE is not 0, we should check the result of
+ extract_binmode() and avoid crush of default IO mode and the result.
+
+Tue May 31 13:00:17 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * strftime.c (rb_strftime_with_timespec): improved style consistency.
+ constified some variables.
+
+ * test/test_time.rb (TestTime#test_huge_precision): test for #4456.
+
+Tue May 31 12:53:10 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/io/wait/test_io_wait.rb (TestIOWait#{test_nread,test_ready?,
+ test_wait}: give system some time to process the written data.
+
+Tue May 31 12:40:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_open_mode): MUST release resources
+ explicitly. fix problem of r31671
+
+Tue May 31 10:49:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_exec.c: remove conditions for clang
+ because clang version 3.0 (trunk 132165) doesn't need them.
+
+Mon May 30 22:19:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring): don't
+ close stderr.
+
+Mon May 30 20:22:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring): small
+ but critical typo of r31642. sorry...
+ [Bug #4798] [ruby-core:36550]
+
+Mon May 30 15:44:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * insns.def (opt_mult): as r31805, volatile it.
+ Without this, clang -O fails calculation.
+
+ * numeric.c (fix_mul): ditto.
+
+ * rational.c (f_imul): ditto.
+
+Mon May 30 10:26:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (int_pow): make sure to assign the result of x * z.
+ If xz is optimized out, the value won't overflow.
+
+Sun May 29 23:17:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_match): fix rdoc of Regexp#=~.
+ patched by Tsuyoshi Sawada. [Bug #4781]
+
+Sun May 29 23:10:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/https.rb (WEBrick::HTTPRequest#parse_uri):
+ keep parse_uri as private. patched by okkez. [Bug #4773]
+
+Sun May 29 17:53:03 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * numeric.c: add #include "internal.h" for rb_big_uminus() prototype.
+
+Sun May 29 15:09:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_round): fix for negative value.
+
+Sun May 29 02:16:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/net/http/utils.rb (TestNetHTTPUtils#teardown): add nil check.
+
+Sun May 29 00:22:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (before_exec, after_exec): change from macro to function.
+
+Sat May 28 19:30:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (before_exec, after_exec): change SIGPIPE handler to SIG_DFL
+ before calling execve(). Because r31760 reintroduced an issue that
+ system() may hang up (i.e. [ruby-dev:12261]).
+ * process.c (save_sigpipe, restore_sigpipe): new.
+
+Sat May 28 16:08:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (Init_signal, default_handler): change default SIGPIPE handler
+ from empty function to SIG_IGN. [ruby-dev:43215]
+ * signal.c (sigpipe): removed.
+
+Sat May 28 03:04:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (fill_cbuf): return MORE_CHAR_SUSPENDED when cbuf is not empty.
+
+Sat May 28 02:22:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * string.c (rb_str_bytesize): rb_str_bytesize() should use LONG2NUM().
+ Patch by Nikolai Weibull. [Bug #4789] [ruby-core:36511]
+
+Sat May 28 02:06:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (fill_cbuf): Fix test-all crash.
+
+Sat May 28 00:58:40 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/ostruct.rb (method_missing): Handle [] and []= correctly.
+ Based on a patch by Caius Durling, bug #4179 [ruby-core:33792]
+
+Fri May 27 23:56:54 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_core.rb (Tester::test_text_frozen): split frozen
+ string test. refs #4783
+
+Fri May 27 22:46:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (gem): install gemspec of json. fixed #4784
+
+Fri May 27 22:45:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (validate_enc_binmode): do not clear textmode flag if
+ default. fixed #4732
+
+ * io.c (fill_cbuf): finish reading at EOF.
+
+Fri May 27 11:31:51 2011 misfo <tedwardo2@gmail.com>
+
+ * lib/rexml/text.rb (REXML::Text#initialize): prevent an error
+ when passing a frozen string to REXML::Text.new
+
+ dup the string passed in instead of cloning so that it's frozen
+ state is ignored
+
+Fri May 27 08:47:26 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * thread.c (ppoll): typo bug fix.
+
+Fri May 27 08:35:04 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: hang-up at exit before calling Tk.mainloop.
+
+ * ext/tk/lib/tk/extconf.rb: cannot make on MinGW [Ruby 1.9 - Bug #4141].
+
+Thu May 27 00:34:07 2011 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Enhance each() to support Enumerator.
+
+Thu May 26 10:32:11 2011 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Documentation improvements from Ysiad Ferreiras.
+ [Ruby 1.9 - Bug #4785]
+
+Thu May 26 15:42:02 2011 Cezary Baginski <cezary.baginski@gmail.com>
+
+ * lib/xmlrpc/parser.rb (FaultException): fix to_s and inspect
+
+ * test/xmlrpc/parser.rb: test for the above
+
+Wed May 25 11:54:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c: Remove color constants block.
+ [Ruby 1.9 - Bug #4748]
+
+Wed May 25 09:56:45 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c: Add missing documentation for button state, MIN
+ and MAX comments. Add Curses. to TABSIZE= and ESCDELAY= methods.
+ [Ruby 1.9 - Bug #4747]
+
+Wed May 25 09:35:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/benchmark.rb: Restore nodoc for Benchmark::Job and
+ Benchmark::Report. [Ruby 1.9 - Bug #4726]
+
+Wed May 25 09:29:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/pop.rb: Hide implementation details from RDoc.
+ [Ruby 1.9 - Bug #4711]
+
+Wed May 25 09:26:29 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/ftp.rb: Add :nodoc: for private methods.
+ [Ruby 1.9 - Bug #4710]
+
+Wed May 25 09:19:17 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Fix Document-method declarations. Improve
+ Zlib::GzipFile's method catalog. [Ruby 1.9 - Bug #4695]
+
+Wed May 25 08:22:12 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/erb.rb: Hide documentation for implementation details of ERB.
+ [Ruby 1.9 - Bug #4694]
+
+Wed May 25 07:58:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile.{mkdir,rmdir}): revert for backward
+ compatibility.
+
+Wed May 25 07:13:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * spec/README: update the description.
+
+Wed May 25 07:12:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile.{lock,unlock}_tempfile): refactor.
+
+Tue May 24 17:30:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * spec/README: fix typo.
+ patched by bowsersenior. https://github.com/ruby/ruby/pull/24
+
+Tue May 24 07:06:34 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fail to start Tk.mainloop (exit immediately) on
+ some environment (reported on [ruby-talk:381444]).
+
+ * ext/tk/lib/tk/canvas.rb: support creating a canvas item object from
+ an item ID number.
+
+ * ext/tk/lib/tk/image.rb: import documents which are pull-requested.
+ [Ruby 1.9 - Feature #4595]
+
+ * ext/tk/lib/tk/extconf.rb: search directories for 64bit library (e.g.
+ /usr/lib64), add some new configure options (see README.tcltklib),
+ and bug fix.
+
+ * ext/tk/lib/tk/README.tcltklib: modify docs for some new configure
+ options.
+
+Tue May 24 04:01:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/yaml.rb: switch default YAML engine to Psych, old syck engine
+ may be enabled via YAML::ENGINE.yamler = "syck". [ruby-core:36374]
+
+Mon May 23 09:45:26 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * include/ruby/defines.h (CASEFOLD_FILESYSTEM): Revert r30508. Forgot to
+ include this file in the commit r31692. __APPLE__ is not
+ CASEFOLD_FILESYSTEM again, from this time.
+
+Mon May 23 10:01:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Do not parse zero-tagged values as EOC. Do
+ not let current length become negative for infinite length constructed
+ values. Support constructed values of length zero. Added tests.
+
+Mon May 23 09:19:53 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/smtp.rb: Document Net::SMTP::Response. Patch by J.R. Garcia.
+ [Ruby 1.9 - Bug #4768]
+
+Mon May 23 09:03:52 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: Never Ignore SIGINT. When received
+ Interrupt, immediately puts result and exit. [ruby-dev:43571]
+
+ * lib/test/unit.rb: When received Interrupt, wait results from workers
+ and collect them. [ruby-dev:43571]
+
+Mon May 23 09:08:07 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mathn.rb: Improve documentation. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4767]
+
+Mon May 23 08:45:55 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/ostruct.rb: Improve documentation. Patch by Franklin Webber.
+ [Ruby 1.9 - Bug #4761]
+
+Mon May 23 08:35:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c: Improve documentation of Hash#key. Patch by Utkarsh
+ Kukreti. [Ruby 1.9 - Bug #4760]
+
+Mon May 23 08:32:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enumerator.c: Improve documentation. Patch by Dave Copeland.
+ [Ruby 1.9 - Bug #4757]
+
+Mon May 23 07:19:45 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS (openssl): Infinite length support. Different behavior of
+ Constructive and Primitive constructors.
+
+Mon May 23 06:58:33 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Forbid Constructives whose value is not an
+ Array to prevent segfault. Added test.
+
+Mon May 23 06:33:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Forbid Constructive without infinite
+ length. This also prevents a segfault. Added test and improved
+ documentation.
+
+Mon May 23 05:58:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Fix decoding of infinite length values.
+ Simplified ossl_asn1_decode0 by splitting it into three separate
+ functions. Add tests.
+ [Ruby 1.9 - Bug #4374][ruby-core:35123]
+
+Mon May 23 04:03:46 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_initialize): Allow creation of
+ Constructives with an explicit tag_class parameter without
+ automatically setting tagging to :EXPLICIT. Fixes a bug when encoding
+ infinite length primitive values.
+
+Mon May 23 04:03:46 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_cons_to_der): Add an additional
+ EOC for infinite length Constructives that are supposed to be encoded
+ with explicit tagging. Also tabify method correctly.
+
+Mon May 23 03:44:39 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1data_to_der): Remove redundant
+ flag tmp_cons.
+
+Mon May 23 00:35:00 2001 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c (dump_bignum, bigmul1_balance, big_split, biglsh_bang),
+ (bigrsh_bang, big_split3, bigmul1_toom3, bigmul0): implement Toom3 (Toom-Cook)
+ multiplication.
+
+ * include/ruby/defines.h: add format prefixes for BDIGIT and BDIGIT_DBL.
+
+Sun May 22 23:24:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Instead of rb_intern use static symbols to
+ improve performance.
+
+Sun May 22 21:56:51 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Use OpenSSL constants V_ASN1_xxx instead of
+ hardcoded numbers for initializing class_tag_map.
+
+Sun May 22 21:29:29 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * include/ruby/defines.h (CASEFOLD_FILESYSTEM): Revert r30508. See #4255.
+ Now __APPLE__ is not CASEFOLD_FILESYSTEM again.
+
+ * load.c (loaded_feature_path, rb_feature_p, load_lock): Revert r30508.
+ See #4255. Make $LOADED_FEATURES scanning case-sensitive again.
+
+Sun May 22 18:59:27 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_asn1.c(ossl_asn1_default_tag): avoid using RCLASS_SUPER
+ to make it compilable. Plus, tabify and change variable definition style.
+
+Sun May 22 18:26:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (vm_xcalloc): use calloc provided by platforms.
+ fixes #4754
+
+Sun May 22 11:44:53 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/pty/pty.c: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4756]
+
+Sun May 22 11:26:39 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/timeout.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4755]
+
+Sun May 22 11:21:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/ipaddr.rb: Improve documentation. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4753]
+
+Sun May 22 11:14:40 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/forwardable.rb: Document def_delegator. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4752]
+
+Sun May 22 11:11:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/fileutils.rb: Document block behavior of FileUtils.cd. Patch by
+ Bil Kleb. [Ruby 1.9 - Bug #4751]
+
+Sun May 22 11:07:47 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c: Complete documentation. Patch by Vincent
+ Batts. [Ruby 1.9 - Bug #4748]
+
+Sun May 22 09:29:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ use spawn. it prevent that other tests inherit renamed $0.
+
+Sun May 22 08:57:13 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Default tag lookup in constant time via hash
+ instead of previous linear algorithm.
+ [Ruby 1.9 - Feature #4309][ruby-core:34813]
+
+Sun May 22 07:54:16 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c: Explain DSS and DSS1 in documentation.
+
+Sun May 22 07:10:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_dsa.rb: Add tests for sign/verify.
+
+Sun May 22 06:07:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_x509cert.rb: Merge DSA-related tests from ruby_1_8
+ branch.
+
+Sun May 22 04:11:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (Init_Thread): add a code comment why the meaningless
+ line is necessary.
+
+Sun May 22 01:35:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: modified documentation.
+
+Sat May 21 22:46:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime(date_strftime_with_tmx): "%v" means "%e-%b-%Y".
+
+Sat May 21 22:14:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_extract_modeenc): accept combination hash and
+ File::Constants. (eg. File.open('yo', :mode => File::WRONLY))
+ [Feature #4742][ruby-core:36338]
+ * test/ruby/test_io.rb (TestIO#test_open_mode): new test.
+
+Sat May 21 21:44:14 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_switch_hitter.rb: new.
+
+Sat May 21 21:18:29 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_{core,parse}.c: moved nearly all core code from ext/date/lib.
+ * ext/date/lib/{date,date/format}.rb: removed nearly all code.
+
+Sat May 21 02:58:46 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/.document: Add curses to documented extensions.
+ * ext/curses/curses.c: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4747]
+
+Sat May 21 02:51:01 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb: Improve documentation. Patch
+ by Pete Higgins. [Ruby 1.9 - Bug #4746]
+
+Sat May 21 02:44:10 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/bigdecimal/lib/bigdecimal/jacobian.rb: Document isEqual. Patch
+ by Kuba Fietkiewicz. [Ruby 1.9 - Bug #4744]
+
+Sat May 21 02:22:34 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/date/lib/date/format.rb: Document date formats. Patch by
+ Clinton Nixon. [Ruby 1.9 - Bug #4743]
+
+Fri May 20 05:15:19 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+ * gc.c: Fix build on m68k by 'error: too few arguments to
+ function 'mark_locations_array''.
+
+Fri May 20 04:23:42 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/scanf.rb: Improve documentation. Patch by Gabe McArthur.
+ [Ruby 1.9 - Bug #4735]
+
+Fri May 20 00:58:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/ibm737-tbl.rb: greek code page. fixes #4738
+
+Thu May 19 14:44:05 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_signal.rb (test_signal_requiring): skip on Windows.
+ we can send SIGINT only to pid 0 and the process itself.
+
+Thu May 19 09:07:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib: revert r31635-r31638 and untabify with expand(1).
+
+Thu May 19 07:47:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_rsa.rb: Add tests for sign/verify.
+
+Thu May 19 07:19:16 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey.c: Add documentation.
+
+Thu May 19 07:06:56 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/benchmark.rb: Fix indentation.
+ * lib/net/imap.rb: Fix indentation of regular expressions.
+
+Thu May 19 06:36:11 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/imap.rb: Fix indentation of EOF for heredoc.
+ * lib/debug.rb (Commands): Fix indentation of EOHELP for heredoc.
+
+Thu May 19 06:30:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Fix indentation of EOM for heredoc.
+
+Thu May 19 06:16:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib: Convert tabs to spaces for ruby files per
+ http://bugs.ruby-lang.org/projects/ruby/wiki/DeveloperHowto#coding-style
+ Patch by Steve Klabnik [Ruby 1.9 - Bug #4730]
+ Patch by Jason Dew [Ruby 1.9 - Feature #4718]
+
+Thu May 19 06:06:07 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cgi/util.rb: Improve documentation. Patch by Clinton Nixon.
+ [Ruby 1.9 - Bug #4733]
+ * lib/cgi/core.rb: ditto
+ * lib/cgi/cookie.rb: ditto
+
+Thu May 19 06:02:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/tempfile.rb: Document Dir.mkdir and Dir.rmdir. Patch by Clinton
+ Nixon. [Ruby 1.9 - Bug #4728]
+
+Thu May 19 05:57:52 2011 Eric Hodel <drbrain@segment7.net>
+
+ * encoding.c: Improve documentation for Encoding#default_external and
+ Encoding#default_internal.
+
+Wed May 18 22:45:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/lib/console/size.rb (IO#console_size): new
+ method. (EXPERIMENTAL)
+
+Wed May 18 22:41:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h: add for internal use only.
+
+Wed May 18 22:36:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (setup_exception): internal exception should be hidden
+
+Wed May 18 20:25:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/timeout.rb (Timeout#timeout): don't leak "execution expired"
+ exception. [Bug #4283] [ruby-core:34534].
+
+Wed May 18 06:09:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cmath.rb: Add some examples and improve documentation. Patch by
+ Sandor Szucs. [Ruby 1.9 - Bug #4727]
+
+Wed May 18 05:40:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/benchmark.rb: Remove nodoc from Benchmark::Job and
+ Benchmark::Report. Patch by Sandor Szucs. [Ruby 1.9 - Bug #4726]
+
+Wed May 18 05:29:26 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/compat.rb: Improve documentation. Patch by Sandor
+ Szucs. [Ruby 1.9 - Bug #4725]
+
+Wed May 18 05:10:35 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/tracer.rb: Improve documentation. Patch by Richard Ramsden.
+ [Ruby 1.9 - Feature #4720]
+
+Wed May 18 04:53:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cmath.rb: Improve documentation. Patch by Jason Dew.
+ [Ruby 1.9 - Feature #4717]
+
+Wed May 18 04:50:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/ftp.rb: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4710]
+
+Wed May 18 03:14:49 2011 Eric Hodel <drbrain@segment7.net>
+
+ * test/test_singleton.rb: Add tests from lib/singleton.rb. Patch by
+ Pete Higgins. [Ruby 1.9 - Bug #4715]
+
+Wed May 18 03:03:07 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/singleton.rb: Improve documentation. Patch by Pete Higgins.
+ [Ruby 1.9 - Bug #4709]
+
+Tue May 17 21:24:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_lock): remove remove_signal_thread_list() call.
+ It's meaningless because lock_interrupt doesn't call
+ add_signal_thread_list().
+
+Tue May 17 20:20:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (rb_thread_struct): add volatile to
+ transition_for_lock because it is not protected by lock.
+
+Tue May 17 20:08:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * LEGAL (missing/{elf,tgamma,lgamma_r}.c): they've been replaced by
+ public domain implementations.
+
+ * LEGAL (vsnprintf.c): it has moved to srcdir from missing/.
+
+ * LEGAL (missing/crypt.c): list its original license.
+
+Tue May 17 19:54:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * LEGAL (configure): add missing/setproctitle.c
+
+Tue May 17 19:35:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ Fix FreeBSD test failure.
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ use ps -o command instead of ps -o cmd. FreeBSD doesn't support
+ -o cmd option.
+
+Tue May 17 08:04:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c: Add documentation.
+
+Tue May 17 07:14:58 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Improve documentation of proxy configuration
+ methods. Patch by Alf Mikula. [Ruby 1.9 - Bug #4714]
+
+Tue May 17 07:09:01 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/pop.rb: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4711]
+ * lib/net/telnet.rb: ditto
+
+Tue May 17 07:00:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Fix nodoc for Net::HTTP::version_1_1?. Patch by
+ Alf Mikula. [Ruby 1.9 - Bug #4713]
+
+Tue May 17 06:56:26 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/optparse.rb: Add link to make_switch to improve documentation.
+ Patch by David Copeland. [Ruby 1.9 - Bug #4708]
+
+Tue May 17 06:50:40 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/observer.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4707]
+
+Tue May 17 06:42:53 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/logger.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4706]
+
+Tue May 17 06:28:14 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/gserver.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4705]
+
+Tue May 17 06:21:15 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/cgi.rb: Add toplevel documentation to class CGI
+ * lib/cgi/session.rb: Add overview documentation to CGI::Cookie
+ * lib/cgi/html.rb: Don't add CGI::TagMaker documentation to CGI.
+ Patch by David Copeland. [Ruby 1.9 - Bug #4704]
+ * lib/cgi/core.rb: Clean up CGI documentation. Patch by David
+ Copeland. [Ruby 1.9 - Bug #4704]
+ * lib/cgi/cookie.rb: Clean up CGI::Cookie documentation. Patch by
+ David Copeland. [Ruby 1.9 - Bug #4704]
+
+Tue May 17 05:52:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/digest: Improve documentation of Digest, Digest::HMAC and
+ Digest::SHA2. Patch by Pete Higgins. [Ruby 1.9 - Bug #4702]
+
+Tue May 17 03:51:42 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/abbrev.rb: Hide copyright and revision information from RDoc.
+ Inspired by patch from David Copeland, bug #4703.
+
+Tue May 17 03:33:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/timeout.rb (module Timeout): Hide internal constants. Patch by
+ Pete Higgins. [Ruby 1.9 - Bug #4701]
+
+Mon May 16 11:21:09 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (RUBY_SO_NAME): add CPU as prefix
+ of RUBY_SO_NAME on x64/ia64 mswin/mingw.
+ [Feature #4602]
+
+Mon May 16 08:00:05 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc.rb: Update to RDoc 3.6.1, allows OpenSSL::Digest to be
+ found.
+
+Mon May 16 05:49:54 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/drb/acl.rb: Add documentation.
+
+Mon May 16 05:13:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Add documentation.
+
+Mon May 16 00:32:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signal_process_group):
+ skip if the platform doesn't have :pgroup capability. (i.e. skip
+ if mswin32)
+
+Sun May 15 23:53:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/intern.h: resurrect old rb_fd_copy().
+ * thread.c (rb_fd_copy): ditto.
+
+Sun May 15 23:45:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/intern.h: remove rb_fd_copy() to rb_fd_dup() and
+ rb_w32_fdcopy() to rb_w32_fd_dup().
+ * win32/win32.c: ditto.
+ * thread.c: ditto.
+
+Sun May 15 22:26:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * signal.c (rb_f_kill): accept '-SIGXXX' style signal with Symbol or
+ implicit convertion with #to_str. [ruby-dev:43169] fixes #4362
+ * test/ruby/test_signal.rb (test_signal_process_group): add a test
+ for send signal to process group.
+
+Sun May 15 21:22:35 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (cont_init): clear macihne_stack_start/end of saved thread to
+ prevent mark machine stack of GC'ed Thread. root Fiber is not
+ initialized by fiber_init().
+ based on a patch by Serge Balyuk [ruby-core:35891] fixes #4612
+ * test/ruby/test_fiber.rb (test_gc_root_fiber): add test for it.
+
+Sun May 15 21:04:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (econv_init): revert r31353. [ruby-dev:43512]
+
+Sun May 15 03:39:35 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4695]
+
+Sun May 15 03:23:46 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/erb.rb: Document ERB::Compiler. Patch by Simon Chiang.
+ [Ruby 1.9 - Bug #4694]
+
+Sun May 15 00:58:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix mswin32 build error.
+
+ * missing/setproctitle.c: add #ifdef HAVE_UNISTD_H.
+ * win32/Makefile.sub (MISSING): add setproctitle.obj
+
+Sat May 14 22:45:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * missing/setproctitle.c: add to include "ruby/util.h".
+
+Sat May 14 19:52:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ add for $0 test.
+
+Sat May 14 19:50:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * missing/setproctitle.c (compat_init_setproctitle): use
+ ruby_strdup() instead of strdup().
+
+Sat May 14 19:37:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/missing.h: add setproctitle() declaration.
+ * missing/setproctitle.c: added.
+ * configure.in: add check for missing/setproctitle.c.
+
+ * ruby.c (ruby_process_options): add to call compat_init_setproctitle().
+ * ruby.c (set_arg0): remove all platform specific code. it's
+ moved to missing/setproctitle.c.
+ * ruby.c (origarg): remove len field. It's no longer used.
+ * ruby.c (get_arglen): removed.
+
+ This patch makes a lot of cleanup set_arg0 related code and fixes
+ [Feature #4689].
+
+Sat May 14 17:42:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * process.c (rb_proc_times): improve documentation.
+ [ruby-core:35785] fixes #4581, reported by Andrew Grimm.
+
+Sat May 14 12:12:54 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_dsa.rb: Add basic tests and tests that
+ ensure new public key PEM encoding behavior and ensure backward
+ compatibility.
+ [Ruby 1.9 - Bug #4422] [ruby-core:35328]
+ * test/openssl/test_pkey_rsa.rb: Remove line with 'puts'.
+
+Sat May 14 12:06:49 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/context.rb (class RDoc): Fix infinite loop caused by
+ re-encountering BasicObject.
+
+Sat May 14 10:32:36 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_rsa.rb: Add tests that ensure new public key
+ encoding behavior and also ensure backward compatibility.
+ [Ruby 1.9 - Bug #4421] [ruby-core:35327]
+
+Sat May 14 09:50:10 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/yaml/dbm.rb: Add documentation. Patch by Justin Collins.
+ [Ruby 1.9 - Bug #4693]
+ * lib/yaml/store.rb: ditto
+
+Sat May 14 09:31:43 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc.rb: Updated to RDoc 3.6
+
+Sat May 14 07:30:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: released a new gem, so increasing version.
+
+Sat May 14 05:08:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c
+ * ext/openssl/ossl_pkey.c
+ * ext/openssl/ossl_pkey.h
+ * test/openssl/pkey/test_pkey_rsa.rb
+ Reverted premature commit. Sorry for the noise!
+
+Sat May 14 05:02:58 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri.rb: Add toplevel documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4690]
+
+Sat May 14 04:19:06 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: Describe altered behaviour for RSA and DSA public key
+ encoding. [Ruby 1.9 - Bug #4421, Bug #4422]
+ [ruby-core:35327,35328]
+
+Sat May 14 02:57:52 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/ipaddr.rb (unless Socket): Document valid*? methods. Patch by
+ Sebastian Martinez. [Ruby 1.9 - Feature #4687]
+
+Sat May 14 02:54:04 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rexml/functions.rb: Add some documentation for REXML::Functions.
+ Patch by Sebastian Martinez. [Ruby 1.9 - Feature #4688]
+
+Sat May 14 02:51:42 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/resolv.rb: Hide private method and state-tracking constants from
+ RDoc. Patch by Mark Turner. [Ruby 1.9 - Feature #4691]
+
+Fri May 13 19:23:21 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * numeric.c (flo_coerce): Add #flo_coerce documentation.
+ Patch by Sebastian Martinez.
+ https://github.com/ruby/ruby/pull/21
+
+Fri May 13 18:42:22 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * README.EXT: fix typo. Patch by William Blackerby.
+ https://github.com/ruby/ruby/pull/19
+
+ * README.EXT.ja: ditto.
+
+Fri May 13 15:22:34 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_select): check invalid handle before doing
+ select operations. see [ruby-dev:43513], [ruby-dev:43535]
+
+Fri May 13 08:34:00 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/rdoc.rb: Output summary after documentation report.
+ * lib/rdoc/stats/normal.rb: Don't output information for users when
+ we're not on a TTY
+
+Fri May 13 07:49:02 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/fileutils.rb: Hide internal methods from RDoc. Patch by Darragh
+ Curran. [Ruby 1.9 - Bug #4684]
+
+Fri May 13 07:36:23 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/httpservlet/erbhandler.rb: Add documentation.
+
+Fri May 13 07:04:33 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mathn.rb: Fix indentation. Patch by Jason Dew.
+ [Ruby 1.9 - Feature #4682]
+
+Fri May 13 06:50:43 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mathn.rb: Add documentation. Patch by Jason Dew. [Ruby 1.9 -
+ Feature #4667]
+
+Fri May 13 05:44:19 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/logger.rb (class Logger): Document Logger#datetime_format.
+ Patch by Sergio Gil Perez de la Manga. [Ruby 1.9 - Bug #4678]
+
+Fri May 13 05:39:11 2011 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (Init_Regexp): Document option constants. Patch by Vincent
+ Batts. [Ruby 1.9 - Bug #4677]
+ * lib/uri/common.rb (module URI): Documentation for URI. Patch by
+ Vincent Batts. [Ruby 1.9- Bug #4677]
+ * lib/uri/ftp.rb (module URI): ditto
+ * lib/uri/generic.rb (module URI): ditto
+ * lib/uri/http.rb (module URI): ditto
+ * lib/uri/https.rb (module URI): ditto
+ * lib/uri/ldap.rb (module URI): ditto
+ * lib/uri/ldaps.rb (module URI): ditto
+ * lib/uri/mailto.rb (module URI): ditto
+ * process.c (Init_process): Document Process constants. Patch by
+ Vincent Batts. [Ruby 1.9- Bug #4677]
+
+Fri May 13 05:16:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rss/atom.rb (module RSS): Document URIs. Patch by Mark Turner.
+ [Ruby 1.9 - #4671]
+ * lib/rss/rss.rb (module RSS): Document exception classes. Patch by
+ Mark Turner. [Ruby 1.9 - #4671]
+
+Fri May 13 02:15:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (select_internal): remove unused variable (interrupt_flag).
+
+Thu May 12 18:24:34 2011 Kouhei Sutou <kou@clear-code.com>
+
+ * configure.in: limit to "T" type for prefix of external symbols
+ because x86_64-w64-mingw32-gcc on Debian GNU/Linux generates the
+ following symbol:
+ 0000000068483390 D _GLOBAL__F__conftest_external
+
+ Approved by nobu.
+
+Thu May 12 14:50:52 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/dl/test_base.rb (Fiddle::LIBC_SO): its always msvc*.dll on
+ mswin/mingw.
+
+Thu May 12 14:47:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (Logging.postpone): copy only when temporary logfile
+ exists.
+
+Thu May 12 12:24:22 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+ * ext/openssl/ossl_ssl.c: By trunk@31346, function check of SSLv2 is
+ executed.
+ However, the problem is not revised in this.
+ This adds the control of using function of SSLv2 in made macro by
+ function check.
+
+Thu May 12 08:10:46 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/set.rb (class Set): Add nodoc to internal-use methods. Patch
+ by Pete Higgins. [Ruby 1.9 - Bug #4665]
+
+Thu May 12 08:01:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_ec.c: Allow encryption when PEM-encoding
+ Elliptic Curve private keys.
+ [ruby-core:35329] [Bug #4423]
+
+Thu May 12 07:54:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (rb_obj_equal): Add documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4664]
+ * lib/rexml: ditto
+ * lib/mkmf.rb: ditto
+ * ext/socket/lib/socket.rb: ditto
+
+Thu May 12 07:30:08 2011 Eric Hodel <drbrain@segment7.net>
+
+ * Various .document files: Update .document files to match files which
+ have documentation.
+
+Thu May 12 07:18:45 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_dsa.c: Use generic X.509 SubjectPublicKeyInfo
+ format for PEM-encoding DSA public keys.
+ [ruby-core:35328] [Bug #4422]
+
+Thu May 12 06:27:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_rsa.c: Use generic X.509 SubjectPublicKeyInfo
+ format for encoding RSA public keys.
+ [ruby-core:35327] [Bug #4421]
+
+Wed May 11 19:45:27 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/forwardable.rb: support 'delegate :foo => :bar' for to meet
+ by specification of RDOC.
+
+Wed May 11 08:36:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick: Add documentation for WEBrick::HTTPAuth
+
+Wed May 11 03:06:35 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rss.rb: Add documentation for RSS. Patch by Steve Klabnik.
+ [Ruby 1.9 - Bug #4663]
+
+Tue May 10 14:50:32 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Add option for hiding skip messages when test
+ ends. #4657
+
+ * test/testunit/test_hideskip.rb, test/testunit/test4test_hideskip.rb:
+ test for above.
+
+Tue May 10 10:53:04 2011 Eric Hodel <drbrain@segment7.net>
+
+ * common.mk (rdoc): Add rdoc-coverage rule
+
+Tue May 10 09:13:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick: Add Documentation
+
+Tue May 10 04:22:09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/log.rb: Hide copyright info from ri
+ * lib/webrick/httpstatus.rb: ditto
+ * lib/webrick/htmlutils.rb: ditto
+ * lib/webrick/httpversion.rb: ditto
+ * lib/webrick/version.rb: ditto
+ * lib/webrick/httpauth/userdb.rb: ditto
+ * lib/webrick/httpauth/authenticator.rb: ditto
+ * lib/webrick/accesslog.rb: ditto
+
+Mon May 9 20:57:13 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_{complex,rational}.rb: added tests.
+
+Mon May 9 20:29:44 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (string_to_c_internal): a refactoring.
+
+Mon May 9 18:33:05 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c: Improve documentation for String#start_with? and
+ String#end_with?. fixes #4652
+ patched by Andrew Grimm <andrew.j.grimm at gmail.com>
+
+Mon May 9 13:49:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * complex.c (string_to_c_internal): support scientific notation.
+ patched by Tinco Andringa. https://github.com/ruby/ruby/pull/16
+ [ruby-core:36046][Bug #4655]
+
+Mon May 9 11:52:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (int_ord): remove K&R style.
+ patched by Daehyub Kim. https://github.com/ruby/ruby/pull/17
+
+Sun May 8 22:17:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_{complex2,complexrational}.rb: use skip.
+ * test/date/*.rb: ditto.
+
+Sun May 8 21:02:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_{complex2,complexrational}.rb: NEVER SKIP.
+
+Sun May 8 21:01:21 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_date_base.rb: fixed.
+
+Sun May 8 20:54:11 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: NEVER SKIP.
+
+Sun May 8 20:37:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: reverted 31432.
+
+Sun May 8 20:32:43 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: reverted 31483.
+
+Sun May 8 19:39:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_cond_timedwait): add to care EINTR.
+ * thread_pthread.c (thread_timer): remove EINTR check.
+
+Sun May 8 19:04:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/time.rb (xmlschema): avoid passing any negative numbers.
+
+Sun May 8 18:40:03 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_{parse,strptime}.c: introduced some macros.
+
+Sun May 8 17:17:13 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: use skip /w messages.
+
+Sun May 8 17:04:55 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb (_httpdate): omitted to call zone_to_diff.
+
+Sun May 8 16:56:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (date_s_test_*): use macros.
+
+Sun May 8 10:24:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: cleanup signal_thread_list related ifdef.
+ 1) we don't have to use #ifdef FOO-PLATFORM directly 2) About
+ half #ifdef didn't care symbian properly.
+
+Sun May 8 05:19:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/io/wait/test_io_wait.rb: Linux socketpair(2) only support
+ AF_UNIX, but windows socketpair doesn't support it. we can't
+ avoid platform check. sigh!
+
+Sun May 8 00:13:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/io/wait/test_io_wait.rb: use Socket.pair instead of pipe.
+ Windows can only treat a socket.
+
+Sat May 7 22:43:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_zero): remove redundant zero fill.
+
+Sat May 7 22:38:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_init): remove volatile qualifier.
+
+Sat May 7 22:34:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_init_copy): new internal api. It provide efficient
+ copy constructor semantics.
+ * thread.c (do_select): use rb_fd_init_copy().
+
+Sat May 7 15:18:06 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix incorrect native_cond_signal call when deadlock was detected.
+
+ * thread.c (lock_func): decrement cond_waiting if timeout was happen.
+
+Sat May 7 18:28:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (USE_MONOTONIC_COND): check the availability
+ more strictly.
+
+ * thread_pthread.h (rb_thread_cond_t): ditto.
+
+Sat May 7 15:15:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ fix win32 native_cond_timedwait() makes SIGSEGV.
+
+ * thread_win32.h (rb_thread_cond_struct): add prev field instead of
+ last. (ie cond_event_entry is now using double linked list instead of
+ single)
+ * thread_win32.c (cond_event_entry): add prev field.
+
+ * thread_win32.c (__cond_timedwait): remove entry properly if timeout
+ was happen.
+
+ * thread_win32.c (native_cond_signal): change for double linked list.
+ * thread_win32.c (native_cond_broadcast): ditto.
+ * thread_win32.c (native_cond_initialize): ditto.
+
+Sat May 7 12:41:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix mutex deadlock test hang-up.
+
+ * thread_win32.c (abs_timespec_to_timeout_ms): fix 1000x calculation
+ mistake. (ie fix hang-up native_cond_timedwait())
+
+Sat May 7 03:14:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ sleep_cond use monotonic time if possible.
+
+ * thread_pthread.c (native_thread_init): change sleep_cond
+ attribute to monotonic.
+ * thread_pthread.c (native_sleep): use native_cond_timeout().
+
+ * thread_pthread.c (native_cond_timeout): add overflow care.
+ * thread_win32.c (native_cond_timeout): ditto.
+
+Sat May 7 02:49:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix win32 compile error.
+
+ * thread_win32.c (RB_CONDATTR_CLOCK_MONOTONIC): define
+ RB_CONDATTR_CLOCK_MONOTONIC always.
+ * thread_pthread.c (RB_CONDATTR_CLOCK_MONOTONIC): ditto.
+
+Sat May 7 02:29:41 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ mutex: deadlock check timeout use monotonic time.
+
+ * thread_pthread.c (native_cond_timeout): new internal api.
+ it calculate a proper time for argument of native_cond_timedwait().
+ * thread_win32.c (native_cond_timeout): ditto.
+
+ * thread_pthread.c (thread_timer): use native_cond_timeout()
+ instead of get_ts.
+ * thread.c (lock_func): ditto.
+
+ * thread_pthread.c (get_ts): removed. use native_cond_timeout().
+ * thread.c (init_lock_timeout): ditto.
+
+Sat May 7 01:54:21 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (get_ts): add monotonic clock capability.
+ * thread_pthread.c (rb_thread_create_timer_thread): use monotonic
+ clock if possible.
+
+Sat May 7 01:43:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.h (rb_thread_cond_t): add clockid field. it's
+ no longer an alias of pthread_cond_t.
+ * thread_pthread.c: adapt new rb_thread_cond_t type.
+ * thread.c (mutex_alloc): ditto.
+ * thread_win32.c (native_cond_initialize): ditto.
+ * configure.in: add check for pthread_cond_attr_setclock() and
+ clockid_t type.
+
+Fri May 6 23:29:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_wait_for_single_fd): use ppoll() instead of poll()
+ if possible. based on a patch from Eric Wong. [ruby-core:36003].
+
+Fri May 6 23:13:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: remove nanosleep check. we no longer use it.
+ r20124 removed last usage.
+
+Fri May 6 22:35:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (mktime_do): extra digits are not used.
+
+Fri May 6 17:43:07 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/syck/rubyext.c (mktime_do): remove unused variable offset.
+
+ * ext/syck/syck.h: use #ifdef instead of #if DEBUG.
+
+Fri May 6 16:27:33 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_core.c (DAY_IN_NANOSECONDS): refix: 31438.
+ check with LONG_MAX and cast as long; without this the calculation
+ will be done as int and overflow.
+
+Fri May 6 15:01:11 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * ext/syck/rubyext.c (mktime_do): avoid buffer overrun, by
+ silently ignoring lesser significant digits. Required buffer
+ length can be computable so you might at first think of
+ allocating enough memory space on the fly using alloca(). That
+ is a wrong idea because when using alloca there is always risk
+ of integer overflow. A function that accepts outer-process
+ resources like this should not blindly trust its inputs. In
+ this particular case we just want to generate milliseconds
+ resolution by strtod() so the string in question needs no more
+ length than what we originally have. Ignoring lesser
+ significant digits should suffice I believe.
+
+Fri May 6 14:25:53 2011 Tinco Andringa <mail@tinco.nl>
+
+ * ext/syck/rubyext.c (mktime_do): YAML.load time correctly parse
+ usecs smaller than 1 fixes #4571
+
+Thu May 5 22:23:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_mutex_reinitialize_atfork): removed
+ unused macro.
+ * thread_win32.c (native_mutex_reinitialize_atfork): ditto.
+
+Thu May 5 22:09:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/date/date_core.c (DAY_IN_NANOSECONDS): long long int is not
+ available on all platforms.
+
+Thu May 5 17:36:31 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * eval.c (frame_func_id): store result of method_entry_of_iseq() to
+ cfp->me because method_entry_of_iseq() might become expensive.
+
+Thu May 5 15:03:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * eval.c (frame_func_id): __method__ return different name from
+ methods defined by Module#define_method with a same block.
+ [ruby-core:35386] fixes #4606
+ * eval.c (method_entry_of_iseq): new helper function. search control
+ frame stack for a method entry which has given iseq.
+ * test/ruby/test_method.rb: add tests for #4606
+
+Wed May 4 22:13:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_vm4_pipe.rb: Reduced iterations. Too slow benchmark
+ is bad.
+ * benchmark/bm_vm4_thread_pass.rb: ditto.
+
+Wed May 4 22:08:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/date/test_date_base.rb: don't use no message skip().
+
+Wed May 4 21:11:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_io_select2.rb: reduce number of using file
+ descriptors. because gdb need some fds.
+
+Wed May 4 19:00:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_wait_for_single_fd): Fix wrong return value.
+ * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb
+ (TestWaitForSingleFD#test_wait_for_closed_pipe): test for it.
+
+Wed May 4 18:46:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/-test-/wait_for_single_fd: New. for testing
+ rb_wait_for_single_fd() internal function.
+ The patch was written by Eric Wong. [ruby-core:35991]
+
+ * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb: ditto.
+
+Wed May 4 12:46:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_wait_for_single_fd): Added POLLNVAL check.
+ based on a patch from Eric Wong at [ruby-core:35991].
+
+Wed May 4 11:51:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_f_select): remove useless ifdef.
+
+Wed May 4 11:42:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/init.c (wait_connectable): fix error handling code.
+ RB_WAITFD_OUT is turned on even though an error occur.
+
+Wed May 4 10:12:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/readline/readline.c (readline_event): use rb_wait_for_single_fd().
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+
+Wed May 4 10:10:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/init.c (wait_connectable): use rb_wait_for_single_fd().
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+
+ * ext/socket/init.c (try_wait_connectable, wait_connectable_ensure):
+ removed.
+
+Wed May 4 10:07:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/io/wait/wait.c (io_wait): use rb_wait_for_single_fd().
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+
+Wed May 4 10:01:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_wait_for_single_fd): new. poll(2) based backend for
+ rb_wait_for_single_fd().
+ Now only Linux uses it.
+
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+
+Wed May 4 09:56:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_wait_for_single_fd): new.
+ * thread.c (select_single): select(2) based backend for
+ rb_wait_for_single_fd().
+
+ * io.c (make_writeconv): use rb_wait_for_single_fd() instead of
+ rb_thread_fd_select().
+ * io.c (rb_io_wait_readable): ditto.
+ * thread.c (rb_thread_wait_fd_rw): ditto.
+
+ * io.c (wait_readable): removed.
+ * thread.c (init_set_fd): new helper function.
+ * include/ruby/io.h (RB_WAITFD_IN, RB_WAITFD_PRI, RB_WAITFD_OUT):
+ new constant for rb_single_wait_fd().
+
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
+
+Wed May 4 08:04:59 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: fix time dumping so that
+ Syck can load UTC times that Psych dumps.
+
+Wed May 4 07:33:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_copy): fix wrong argument.This issue was pointed
+ out by Eric Wong. [ruby-core:35982]
+
+Tue May 3 20:29:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_symbol_mode):
+ Skip sticky bit test if the platform is FreeBSD. It doesn't allow to
+ change sticky bit if a target is regular file.
+
+Tue May 3 18:23:57 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/date/test_date.rb (TestDate#test_coerce):
+ test for [ruby-core:35127].
+
+Tue May 3 04:27:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_select): preserve errno if no error
+ occurred.
+
+Tue May 3 03:57:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_w32_fdcopy): add prototype. fixes
+ #4640
+
+Mon May 2 01:02:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/fileutils.rb (FileUtils#chmod): accept symbolic mode argument.
+ The patch was written by takkanm. [ruby-core:26029][Feature #2190]
+
+ * lib/fileutils.rb (FileUtils#fu_mode): new helper function.
+ * lib/fileutils.rb (FileUtils#symbolic_modes_to_i): ditto.
+ * lib/fileutils.rb (FileUtils#mode_mask): ditto.
+ * lib/fileutils.rb (FileUtils#user_mask): ditto.
+
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_symbol_mode):
+ new test for the above symbolic mode.
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_R): ditto.
+
+Mon May 2 00:36:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/init.c (rsock_connect): add to care EINTR. based
+ on a patch from Eric Wong at [ruby-core:35621][Bug #4555]
+
+Sun May 1 01:06:24 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_select): release GVL while waiting select().
+
+Sat Apr 30 23:10:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (rb_w32_fdcopy): New. This can copy even though
+ fdset size exceed FD_SETSIZE.
+ * include/ruby/intern.h (rb_fd_copy): use rb_w32_fdcopy()
+
+Sat Apr 30 20:18:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (do_select): Change argument type to rb_fdset_t.
+ Now do_select() is free from unexpected hangup if
+ HAVE_RB_FD_INIT=1 [Bug #4636]
+
+ * thread.c (rb_thread_fd_select, rb_thread_wait_fd_rw):
+ adapt new argument type.
+
+ * thread.c (rb_thread_select): make dummy implementation.
+
+Sat Apr 30 20:16:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_copy): Change function argument. Now
+ rb_fd_copy() has fully copy semantics.
+ * include/ruby/intern.h: ditto.
+
+Sat Apr 30 20:11:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/intern.h (rb_thread_select): mark as deprecated.
+
+ * ext/io/wait/wait.c (wait_readable): use rb_thread_fd_select
+ instead of rb_thread_select.
+ * ext/socket/init.c (wait_connectable0): ditto.
+ * ext/readline/readline.c (readline_event): ditto.
+ * io.c (rb_io_wait_readable, wait_readable, rb_io_wait_writable,
+ wait_writable): ditto.
+
+Sat Apr 30 20:06:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (do_select): remove useless ifdef. time calculation
+ is not heavy weight.
+
+Sat Apr 30 16:48:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_io_select3.rb: New.
+
+Sat Apr 30 16:27:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (copy_stream_body, rb_io_s_copy_stream): move rb_fd_init()
+ from copy_stream_body to rb_io_s_copy_stream. fds of passing
+ rb_fd_term() have to be guaranteed initialized.
+
+Sat Apr 30 16:13:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_io_select.rb, benchmark/bm_io_select2.rb: New.
+ based on a patch from Eric Wong at [Feature #4531]
+
+Sat Apr 30 03:25:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/io/wait/test_io_wait.rb: New. for testing ext/io/wait.
+ the patch was written by Eric Wong. [Feature #4531]
+
+Sat Apr 30 00:34:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/win32.h: remove redundant declaration of
+ rb_w32_time_subtract().
+
+Sat Apr 30 00:16:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (gvl_init): fix hangup if GVL_SIMPLE_LOCK=1.
+ We don't have to call mutex_unlock() before initialize it!
+
+Fri Apr 29 13:15:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_win32.c (native_cond_timedwait): New. r31373 caused
+ win32 build failure.
+
+ * thread_win32.c (__cond_timedwait, abs_timespec_to_timeout_ms):
+ New helper functions.
+
+ * win32/win32.c (rb_w32_time_subtract): rename from subtract and
+ remove static.
+
+Fri Apr 29 10:43:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/bm_vm4_pipe.rb: Add two new benchmark for GVL
+ performance. They was written by Koichi Sasada.
+ * benchmark/bm_vm4_thread_pass.rb: ditto.
+
+Fri Apr 29 10:25:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_method.c (rb_clear_cache_by_class): Revert r29673. It made
+ a segmentation fault regression. [Bug #4289][ruby-core:34554].
+
+Fri Apr 29 10:24:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (make_writeconv): do not add textmode newline decorator if any
+ newline decorator is set already. fixes #4618, fixes #4619
+
+Fri Apr 29 10:17:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (lock_func): small cleanup.
+
+Fri Apr 29 10:07:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_lock, lock_func): Avoid busy loop and
+ performance regression. bm_vm3_thread_mutex.rb performance
+ change from 109.064sec to 16.331sec. [Feature #4607]
+
+ * thread.c (init_lock_timeout): New helper function.
+
+Thu Apr 28 16:15:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{win32.c,dir.h} (rb_w32_uopendir): new API to pass UTF-8 path.
+
+ * win32/win32.c (opendir_internal, rb_w32_opendir): extract and merge
+ common part of rb_w32_opendir() and rb_w32_uopendir().
+
+ * dir.c (do_opendir, glob_helper): encoding.
+
+ * dir.c (dir_initialize, do_opendir): convert path to UTF-8 and call
+ rb_w32_uopendir() instead of rb_w32_opendir() on Windows.
+ fixes #4491, reported by Joey Zhou.
+
+Thu Apr 28 15:32:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/dl/test_base.rb (DL::LIBC_SO): its always msvc*.dll on
+ mswin/mingw.
+
+Thu Apr 28 06:07:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/csv.rb (CSV::open): suppress universal newline decorator.
+ fixes #4603
+
+ * lib/csv.rb (CSV.read): no mode is needed.
+
+Thu Apr 28 06:06:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc, rb_f_backquote): set default text
+ mode. fixes #4619
+
+ * io.c (pipe_open): set universal newline decorator if needed.
+
+Wed Apr 27 11:33:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/emoji_iso2022_kddi.trans: ISO-2022-JP-KDDI doesn't have
+ CP932 UDA. Another reason is emacs-mule: the implementation of
+ stateless-iso-2022-jp doesn't support beyond 94x94 (0x7fxx);
+ but CP932 UDA is in 7Fxx-92xx.
+
+Wed Apr 27 07:42:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (STRIP): use proper toolchain. based on a patch
+ from Jon Forums at [ruby-core:35909]. fixes #4617
+
+Wed Apr 27 01:20:59 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (date_zone_to_diff): renamed.
+ * ext/date/date_parse.c: ditto.
+ * ext/date/date_strptime.c: ditto.
+
+Wed Apr 27 01:16:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_find): accept Encoding objects.
+
+Wed Apr 27 00:55:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (econv_opts): add newline option.
+
+ * io.c (validate_enc_binmode, rb_io_extract_modeenc): set newline
+ decorator according to open mode.
+
+ * transcode.c (rb_econv_prepare_options): new function, to prepare
+ econv options with newline flags.
+
+ * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_MASK): add.
+
+Wed Apr 27 00:51:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_truncate): fix function.
+
+ * include/ruby/win32.h (ftruncate, truncate, ftello, fseeko): non-64
+ versions on mingw are useless because they use int32_t. fixes #4564
+
+Wed Apr 27 00:50:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: modified validation methods.
+ * ext/date/lib/date.rb: ditto.
+
+Wed Apr 27 00:00:37 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (dt_lite_set_tmx): should get df value.
+
+Tue Apr 26 22:34:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb (_iso8601): allowed day only civil
+ date. disallowed separatorless day only ordinal date.
+
+Mon Apr 25 21:31:36 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+
+ * ext/openssl/extconf.rb: Should check SSLv2_*method.
+ openssl compiled with "no-ssl2" the extconf don't fail
+ when running `make' having this compilation errors.
+ Patched by Laurent Arnoud. fixes #4562, #4556
+
+Mon Apr 25 20:53:32 2011 Tajima, Akio <artonx@yahoo.co.jp>
+
+ * win32/win32.c (kill): accept 0 only sig is SIGINT #4596
+
+Mon Apr 25 19:59:47 2011 Tajima, Akio <artonx@yahoo.co.jp>
+
+ * win32/win32.c (kill): accept 0 as pid, fixes #4596
+
+Mon Apr 25 16:43:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (random_rand): remove unused variables.
+
+ * struct.c (rb_struct_define_without_accessor): ditto.
+
+ * strftime.c (rb_strftime_with_timespec): ditto.
+
+ * sprintf.c: ditto.
+
+ * time.c (time_asctime): remove useless GetTimeval().
+
+ * thread_pthread.c: cast to (void *) for %p.
+
+Mon Apr 25 11:02:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/ripper/lib/ripper/sexp.rb: fix rdoc around sexp.
+ patched by Sho Hashimoto. fixes #4599
+
+Mon Apr 25 08:24:04 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * random.c (rb_f_rand, random_s_rand): RDocs for them.
+
+Mon Apr 25 07:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * random.c (random_s_rand, Init_Random): Random.rand should behave as
+ Random::DEFAULT.rand rather than Kernel#rand.
+
+ * random.c (rand_range, random_rand): rand_range function extracted
+ from random_rand function.
+
+ * random.c (rb_f_rand): accept a Range argument as Random#rand
+ [ruby-dev:43427] #4605
+
+Mon Apr 25 03:31:06 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/time.rb: require 'date'.
+ * ext/date/lib/date/format.rb: removed require line.
+
+Mon Apr 25 03:08:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb: require 'date'.
+
+Mon Apr 25 03:04:16 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb (_iso8601): added a pattern.
+
+Mon Apr 25 02:51:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/lib/date/format.rb: require 'date_core.so'.
+ date/format needs methods which are now in date_core.so.
+ This breaks make rdoc which uses Date._parse from time.rb.
+
+Mon Apr 25 02:47:46 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb (_iso8601): fixed a bug of regex.
+
+Mon Apr 25 02:12:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb: an adjustment of regex.
+
+Mon Apr 25 01:58:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib/date/format.rb: omitted to call _parse.
+
+Mon Apr 25 01:03:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * string.c (rb_to_id): remove unused variable.
+
+Sun Apr 24 22:19:05 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c, rational.c: omitted some method calls.
+
+Sun Apr 24 02:57:27 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (n2i): takes long.
+
+Sun Apr 24 02:51:06 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c: reverted.
+
+Sun Apr 24 02:25:23 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/intern.h: pcc can't use __builtin_constant_p.
+
+ * vm_exec.c: change condition.
+
+Sun Apr 24 01:58:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_core.c (leap_p): suppress warning: parentheses.
+
+ * ext/date/date_core.c (date_s__parse_internal): remove unused
+ variable "str".
+
+ * ext/date/date_parse.c (parse_ddd_cb): use RSTRING_LENINT.
+
+ * ext/date/date_strftime.c (date_strftime_with_tmx): remove unused
+ variable.
+
+Sun Apr 24 00:34:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c: removed some unused macros. use strchr()
+ instead of index().
+
+Sat Apr 23 21:29:42 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: replacement of implementation of
+ _parse. [experimental]
+ * ext/date/date_parse.c: new.
+ * ext/date/lib/date/format.rb: removed ruby version of _parse.
+
+Fri Apr 22 12:04:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): fix rdoc.
+ patched by burningTyger. https://github.com/ruby/ruby/pull/11
+
+Fri Apr 22 11:49:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
+ XML-RPC's int is 32bit int, and Fixnum also may be beyond 32bit.
+
+ * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
+ XML-RPC doesn't allow Infinity and NaN.
+ http://www.xmlrpc.com/spec
+
+Fri Apr 22 04:16:14 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): strings from psych have proper taint
+ markings.
+
+ * test/psych/test_tainted.rb: test for string taint
+
+Thu Apr 21 01:30:02 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (rb_f_srand): fix rdoc: srand(0)'s 0 is a seed.
+ [ruby-core:35833] fixes #4590
+
+Thu Apr 21 01:01:28 2011 Masaya Tarui <tarui@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): maximum length of lpCommandLine is
+ 32,768 characters, including the Unicode terminating null character.
+
+Wed Apr 20 21:32:11 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strptime.c (date__strptime_internal): do not
+ overwrite local variables.
+
+Wed Apr 20 14:41:28 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_each_line): check string's length when compare
+ separator and string. [ruby-core:35815] fixes #4586
+
+Wed Apr 20 00:02:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): use position of open paren.
+
+Tue Apr 19 01:00:21 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * test/ruby/test_io.rb (TestIO#test_cross_thread_close_fd):
+ skip cross thread pipe close if windows
+
+Mon Apr 18 12:15:46 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_range.rb (TestRange#test_step_ruby_core_35753):
+ avoid float error. [ruby-core:35804]
+
+Sun Apr 17 00:20:14 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_{core,strftime}.c: use struct tmx instead of vtm.
+ * ext/date/date_tmx.h: new.
+
+Sat Apr 16 22:23:52 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c (date_strftime_wo_timespec): changed
+ the way of validation of locale modifiers.
+
+Sat Apr 16 21:55:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: replacement of implementation of
+ _strptime. [experimental]
+ * ext/date/date_strptime.c: new.
+ * ext/date/lib/date/format.rb: removed ruby version of _strptime.
+
+Sat Apr 16 10:18:30 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * vm.c (Init_VM): suppress warning: "OPT_BASIC_OPERATIONS" is not
+ defined.
+
+Fri Apr 15 23:41:18 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ruby.c (proc_options): suppress warning:
+ "ALLOW_DEFAULT_SOURCE_ENCODING" is not defined.
+
+Fri Apr 15 15:10:29 2011 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/uri/generic.rb (#route_from_path): Fix a bug where
+ URI('http://h/b/').route_to('http://h/b') wrongly returned './'
+ (should be '../b'). [Bug #4476]
+
+Fri Apr 15 14:58:06 2011 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/fileutils.rb (FileUtils#touch): Fix corrupted output when
+ mtime is specified in addition to nocreate (and verbose).
+ ref [ruby-dev:43401]
+
+Thu Apr 14 23:43:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (ruby_float_step): wrong loop condition.
+ fixes [ruby-core:35753], reported by Joey Zhou.
+
+ * test/ruby/test_range.rb (TestRange#test_step_ruby_core_35753):
+ test above change.
+
+Thu Apr 14 22:48:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Options#setup_options): set possible
+ values for completion. no conversion is needed.
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#initialize): use
+ positional arguments instead of keyword arguments.
+
+ * lib/test/unit.rb (Test::Unit::Runner#jobs_status): io/console may
+ not be available. use 80 as the last resort if IO#winsize and
+ COLUMNS are unavailable.
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#died): rename using a
+ verb.
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): check if worker
+ is signaled and use its exit status.
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#dead): no longer @in
+ and @out are separated.
+
+Thu Apr 14 21:23:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_autoload_p): search superclasses as same as actual
+ loading. fixes [ruby-core:35679]
+
+Thu Apr 14 21:21:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (frexp, modf): wrongly declared as pure in
+ mingw math.h.
+
+ * include/ruby/win32.h (ftruncate, truncate): mingw64 misses
+ prototypes.
+
+ * win32/win32.c (rb_w32_read): suppress warning.
+
+Thu Apr 14 19:55:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/fileutils.rb (FileUtils#touch): fix corrupted output when
+ FileUtils.touch(:nocreate => true, :verbose => true) case.
+ The patch was written by Hiroyuki Iwatsuki. [ruby-dev:43401]
+
+Thu Apr 14 16:01:45 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (rb_f_syscall): suppress warning: "HAVE___SYSCALL" is not
+ defined.
+
+Thu Apr 14 00:41:09 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread.c (thread_fd_close_i): IOError exception should be assigned
+ to rb_thread_t::thrown_errinfo.
+
+Wed Apr 13 20:12:26 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (rb_io_fdatasync): remove unused variable.
+
+Tue Apr 12 20:54:12 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/st.h: parenthesize macro arguments.
+
+Tue Apr 12 19:19:50 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb: avoid race condition. fixes #4572
+
+Tue Apr 12 18:07:13 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: --disable-libedit to disable
+ libedit. fixes #4550
+
+Tue Apr 12 10:37:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: VC doesn't have ftruncate() and others, but
+ ruby needs HAVE_ macros to use our emulation functions.
+ (fix the problem of 31262)
+
+Tue Apr 12 01:33:00 2011 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in: properly evaluate existence of truncate, ftruncate
+ and ftello for MinGW. [ruby-core:35678]
+ * win32/win32.c: rename truncate, ftruncate and ftello to avoid
+ redefinitions.
+ * win32/win32.h: ditto.
+
+Mon Apr 11 21:51:52 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c: revert r31230. Because it made a regression.
+ [ruby-core:35631]
+
+Mon Apr 11 21:49:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb: Added TestIO#test_cross_thread_close_stdio
+ and TestIO#test_cross_thread_close_fd.
+ The patch was written by Eric Wong. [ruby-core:35669]
+
+Mon Apr 11 21:15:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * file.c (rb_group_member): kill 256K of stack usage.
+ the patch was written by Eric Wong. [ruby-core:35699]
+
+Mon Apr 11 07:24:13 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl.c: Fix typo, document version constants.
+
+Sun Apr 10 22:23:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h: parenthesize macro arguments.
+
+Sat Apr 9 23:31:47 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * ext/stringio/stringio.c (strio_each, strio_readlines):
+ Use `NUM2LONG` instead of `FIX2INT`. Fixes [ruby-dev:43395].
+
+Sat Apr 9 23:22:27 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * ext/stringio/stringio.c (strio_each):
+ Fix exception message and don't raise immediately if block is not
+ given.
+ Fixes [ruby-dev:43394].
+
+ * test/stringio/test_stringio.rb (test_each_line_limit_0):
+ Fix test for above.
+
+Sat Apr 9 21:54:15 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * ext/stringio/stringio.c (strio_each, strio_readlines):
+ limit must not be zero. Fixes [ruby-dev:43392].
+
+ * test/stringio/test_stringio.rb: Add tests for above.
+
+Sat Apr 9 18:01:36 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/util.h: parenthesize macro arguments.
+
+Fri Apr 8 16:01:56 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_getline): check whether str is
+ a string when str and lim are given.
+ https://twitter.com/watson1978/status/56225052152168449
+
+Thu Apr 7 20:03:52 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h: parenthesize macro arguments.
+
+Wed Apr 6 21:08:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h: parenthesize macro arguments.
+
+Wed Apr 6 15:12:40 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_dh.c (ossl_dh_initialize):
+ pop pushed error after each try of reading. fixes #4550
+
+ * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_initialize): ditto.
+
+Wed Apr 6 11:36:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize):
+ pop pushed error after each try of reading. fixes #4550
+
+Tue Apr 5 20:33:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h: parenthesize macro arguments.
+
+Mon Apr 4 22:02:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/io/nonblock/nonblock.c (io_nonblock_set): Avoid F_SETFL if
+ we're not changing the O_NONBLOCK bit. F_SETFL is an expensive
+ operation since it needs to affect all processes with the same
+ file object.
+ The patch is written by Eric Wong. [ruby-core:35556]
+
+Mon Apr 4 21:41:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_syswrite): While local FS writes are usually
+ buffered, the buffers can be full or the file opened with
+ O_SYNC. IO#syswrite can also be used on blocking IOs
+ (pipe/socket) just like IO#write.
+ The patch is written by Eric Wong. [ruby-core:35554]
+
+Mon Apr 4 11:50:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/test_tempfile.rb: simply ignore platform dependent testcases
+ instead of skipping.
+
+Sun Apr 3 22:52:22 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/syslog/syslog.c: improve rdoc.
+ a patch by Jonas Pfenniger. [ruby-core:35592] fixes #4545
+
+Sun Apr 3 22:10:09 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/zlib/zlib.c: parenthesize macro arguments.
+
+Sun Apr 3 21:33:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: disable fdatasync again on Mac OS X.
+ [ruby-core:35493][Bug #4500]
+
+Sun Apr 3 21:16:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_reopen): IO#close releases GVL if possible.
+ close() may block for certain file types (NFS, SO_LINGER
+ sockets, inotify), so let other threads run. The patch was
+ created by Eric Wong [ruby-core:35555][Bug #4527]
+
+ * io.c (fptr_finalize): ditto.
+
+ * io.c (maygvl_fclose): new.
+ * io.c (nogvl_fclose): ditto.
+ * io.c (maygvl_close): ditto.
+ * io.c (nogvl_close): ditto.
+
+Fri Apr 1 22:25:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/syslog/syslog.c: parenthesize macro arguments.
+
+Fri Apr 1 18:53:06 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/cookie.rb (WEBrick::Cookie.parse): 'white space is
+ permitted between tokens' according to RFC2965. Though 'Netscape
+ spec' does not define the syntax clearly, make it tolerant as a
+ server. As a real-world example, rest-client gem sends
+ 'Cookie: foo=1;bar=2'
+
+ * test/webrick/test_cookie.rb (test_parse_non_whitespace): test it.
+
+Fri Apr 1 13:19:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (RUBY_VM_CHECK_INTS_TH): merge a patch by ko1
+ in [ruby-dev:43373].
+
+Thu Mar 31 23:15:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-brace-to-do-end, ruby-do-end-to-brace):
+ adjust space between block beginning and block arguments
+
+Thu Mar 31 20:42:05 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/strscan/strscan.c: parenthesize macro arguments.
+
+Thu Mar 31 18:06:12 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_ev_const): should ignore crefs with
+ the NODE_FL_CREF_PUSHED_BY_EVAL flag.
+
+Thu Mar 31 16:49:56 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_ev_const): search root cref properly.
+ [ruby-dev:43365]
+
+Thu Mar 31 14:50:25 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_s_constants): should ignore crefs with
+ the NODE_FL_CREF_PUSHED_BY_EVAL flag.
+
+Wed Mar 30 22:55:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-toggle-block): toggle do/end and {}.
+
+ * misc/ruby-mode.el (ruby-move-to-block): move to opening of
+ block.
+
+Wed Mar 30 14:35:15 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.h (COPY_CREF): should copy
+ the NODE_FL_CREF_PUSHED_BY_EVAL flag to hide constants from
+ methods defined by class_eval. [ruby-dev:43365]
+
+Wed Mar 30 00:24:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/stringio/stringio.c: parenthesize macro arguments.
+
+Tue Mar 29 21:51:31 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * object.c (rb_String): Kernel#String should call to_str before to_s.
+
+Tue Mar 29 10:28:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/webrick/test_filehandler.rb
+ (WEBrick::TestFileHandler#test_short_filename): the cgi doesn't exist
+ on current directory.
+
+Tue Mar 29 05:19:57 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c: parenthesize macro arguments.
+
+Tue Mar 29 00:03:51 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * test/webrick/test_filehandler.rb (test_short_filename):
+ read real short filename by cmd because smb mounted files
+ have different naming convention.
+
+Mon Mar 28 11:38:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_core.c (date_s_today): use int for year.
+
+ * ext/date/date_core.c (datetime_s_now): ditto.
+
+Mon Mar 28 11:07:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb: set MFLAGS from MAKEFLAGS when using nmake.
+
+Mon Mar 28 11:07:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (love): all you need is love.
+
+Sun Mar 27 23:16:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c: parenthesize macro arguments.
+
+Sun Mar 27 16:55:34 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-map): remove unnecessary
+ binding. fixes
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468952
+
+ * misc/ruby-mode.el: suppress warnings at byte compile. fixes
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502926
+
+Sun Mar 27 11:18:35 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: removed unused variables.
+
+Sat Mar 26 15:16:09 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/getaddrinfo.c: parenthesize macro arguments.
+
+Sat Mar 26 05:27:34 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/lib/date/format.rb (DateTime#strftime): removed because
+ date_core defines it.
+
+Fri Mar 25 21:59:45 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: should not force cast with macros.
+
+Fri Mar 25 21:56:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/init.c: parenthesize macro arguments.
+
+Fri Mar 25 19:39:40 2011 Ben Walton <bwalton@artsci.utoronto.ca>
+
+ * test/test_syslog.rb:
+ Skip syslog tests that rely on LOG_PERROR unless it's defined
+
+ Instead of checking looking at the platform to determine if the tests
+ relying on LOG_PERROR should be run, look for the definition of the
+ constant as this will be robust against all platforms as long as the
+ underlying syslog.c code sets it up correctly.
+
+ This specifically addresses failures on Solaris 9.
+
+ Use LOG_PID instead of LOG_PERROR in Syslog.open test
+
+ LOG_PERROR isn't a POSIX option for syslog, so it fails on platforms
+ that don't define it. Solaris 9 and 10 are examples of this.
+
+ Use LOG_PID instead.
+
+Fri Mar 25 15:42:17 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/sdbm/_sdbm.c (sdbm_open): use size_t.
+
+ * ext/syck/bytecode.c: ditto.
+
+ * ext/sdbm/_sdbm.c (delpair): use ptrdiff_t.
+
+ * ext/sdbm/init.c: use RSTRING_LENINT.
+
+ * ext/dl/handle.c: suppress warning: shorten-64-to-32.
+
+ * ext/strscan/strscan.c: ditto.
+
+ * ext/syck/emitter.c: ditto.
+
+ * ext/syck/implicit.c: ditto.
+
+ * ext/syck/syck.c: ditto.
+
+ * ext/syck/token.c: ditto.
+
+Fri Mar 25 12:14:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: import nkf 7f18e30.
+
+Fri Mar 25 11:49:29 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess#test_no_curdir): skip silently
+ on Windows, because this tests a platform specific feature and it'll
+ never be supported on ruby on Windows.
+
+ * test/ruby/test_dir_m17n.rb
+ (TestDir_M17N#test_filename_extutf8_invalid,
+ TestDir_M17N#test_filename_as_bytes_extutf8): ditto.
+
+ * test/open-uri/test_open-uri.rb
+ (TestOpenURI#test_find_proxy_case_sensitive_env): ditto.
+
+ * test/dl/test_handle.rb (DL::TestHandle#test_NEXT,
+ DL::TestHandle#test_DEFAULT): ditto.
+
+Thu Mar 24 23:06:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_ev_const): should not autoload in
+ defined? mode.
+
+ * variable.c (rb_const_defined_0): fix autoloading base.
+ [ruby-core:35509]
+
+Thu Mar 24 22:48:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c: parenthesize macro arguments.
+
+Thu Mar 24 14:45:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl.c: suppress warning: shorten-64-to-32.
+
+ * ext/openssl/ossl.h: ditto.
+
+ * ext/openssl/ossl_asn1.c: ditto.
+
+ * ext/openssl/ossl_bio.c: ditto.
+
+ * ext/openssl/ossl_bn.c: ditto.
+
+ * ext/openssl/ossl_cipher.c: ditto.
+
+ * ext/openssl/ossl_hmac.c: ditto.
+
+ * ext/openssl/ossl_ns_spki.c: ditto.
+
+ * ext/openssl/ossl_ocsp.c: ditto.
+
+ * ext/openssl/ossl_pkcs5.c: ditto.
+
+ * ext/openssl/ossl_pkey.c: ditto.
+
+ * ext/openssl/ossl_pkey_dh.c: ditto.
+
+ * ext/openssl/ossl_pkey_dsa.c: ditto.
+
+ * ext/openssl/ossl_pkey_ec.c: ditto.
+
+ * ext/openssl/ossl_pkey_rsa.c: ditto.
+
+ * ext/openssl/ossl_rand.c: ditto.
+
+ * ext/openssl/ossl_ssl.c: ditto.
+
+ * ext/openssl/ossl_x509ext.c: ditto.
+
+ * ext/openssl/ossl_x509name.c: ditto.
+
+Thu Mar 24 11:48:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_rand.c (ossl_rand_egd_bytes): use NUM2INT because
+ the result is used with functions whose argument is int.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): ditto.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_purpose): ditto.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_trust): ditto.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_purpose): ditto.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_trust): ditto.
+
+Thu Mar 24 11:36:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_x509name.c: id_aref's type is ID.
+
+Thu Mar 24 10:04:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/io/console/console.c (console_set_winsize):
+ suppress warning: shorten-64-to-32.
+
+Thu Mar 24 09:56:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspreq_verify): flags is VALUE,
+ so it should use NUM2INT.
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspbres_verify): ditto.
+
+Wed Mar 23 21:09:29 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/readline/readline.c: parenthesize macro arguments.
+
+Wed Mar 23 08:07:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_round): fix inaccurate results.
+
+Wed Mar 23 00:12:16 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * win32/win32.c: wait process real termination after reading
+ exit code. fixes #4518
+
+Tue Mar 22 21:20:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/test_case.rb: save current dir to @current_dir
+ before Dir.chdir.
+
+Tue Mar 22 20:10:04 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/psych/parser.c: parenthesize macro arguments.
+
+Tue Mar 22 20:10:01 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ruby_missing.h: parenthesize macro arguments.
+
+Tue Mar 22 13:33:22 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/buffering.rb: removed circular require of
+ openssl.rb.
+
+ * ext/openssl/lib/openssl/*: removed following comment for transition
+ measures of avoiding circular require. No one claimed about this as
+ far as I know.
+ ##
+ # Should we care what if somebody require this file directly?
+ # require "openssl"
+
+Tue Mar 22 10:57:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/runner.rb: set Gem::TestCase's @@project_dir.
+
+ * lib/rubygems/test_case.rb: set Gem::TestCase's @@project_dir only
+ when it is not defined.
+
+Tue Mar 22 09:38:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (flo_round): use pow instead of while-loop. fixes #4510
+ patched by Alex Young [ruby-core:35526]
+
+Tue Mar 22 06:47:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_strftime.c (date_strftime_wo_timespec):
+ suppress warning: shorten-64-to-32.
+
+Tue Mar 22 06:42:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_core.c: suppress warning: shorten-64-to-32.
+
+Tue Mar 22 06:41:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit/parallel.rb: remove unused variable.
+
+Tue Mar 22 06:19:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_16le.c: suppress warning: shorten-64-to-32.
+
+ * ext/dbm/dbm.c: ditto.
+
+ * ext/gdbm/gdbm.c: ditto.
+
+ * parse.y (Init_ripper): suppress warning: unused value.
+
+Mon Mar 21 11:21:32 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Refactoring. Unified if and elsif.
+
+Sun Mar 20 23:09:34 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: checks duplicated modifiers.
+
+Sun Mar 20 22:32:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: removed unused code and arguments.
+
+Sun Mar 20 21:34:49 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: replacement of implementation of
+ strftime. It has some limitations that is same as Time's
+ one. [experimental]
+ * ext/date/date_strftime.c: new.
+ * ext/date/lib/date/format.rb: removed ruby version of strftime.
+
+Sun Mar 20 12:43:12 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509store.c: parenthesize macro arguments.
+
+Sun Mar 20 01:39:48 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * hash.c (ruby_setenv): check env process block size with OS ver.
+ * win32/win32.c: export rb_w32_osver for above patch.
+ * include/ruby/win32.h: declare rb_w32_osver for Win32 Libs.
+
+Sat Mar 19 18:35:05 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * hash.c (ruby_setenv): calculate total env block size for win32.
+ * test/ruby/test_env.rb: add test for above patch.
+
+Sat Mar 19 17:14:46 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * hash.c (ruby_setenv): checking with max process environment
+ block size for Win32. 32767 for 2000/XP, 2003. if failed to
+ read the block, then checking with 5120 for earlier Windows.
+
+Sat Mar 19 12:30:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509revoked.c: parenthesize macro arguments.
+
+Fri Mar 18 20:44:36 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509req.c: parenthesize macro arguments.
+
+Fri Mar 18 08:48:06 2011 Oleg Shaldybin <oleg.shaldybin@gmail.com>
+
+ * lib/fileutils.rb (FileUtils::Entry_#copy_file): updated FileUtils.cp
+ to still copy file permissions when :preserve is false (as cp does
+ this even when -p isn't set).
+
+Fri Mar 18 00:59:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/extconf.rb (create_docfile): removed. should not
+ modify source directory unnecessarily, platform dependent
+ documentation should be dealt with by rdoc. [ruby-core:35495]
+
+Fri Mar 18 00:54:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_funcall_passing_block): add prototype.
+ a patch by James M. Lawrence at [ruby-core:35501]
+
+Wed Mar 17 06:23:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509name.c: parenthesize macro arguments.
+
+Wed Mar 16 20:36:56 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal): raise an error on
+ listen(2) failure.
+ reported by Xavier Shay. [ruby-core:35505]
+
+Wed Mar 16 15:06:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/lib/openssl/buffering.rb (module OpenSSL): #flush should
+ not change sync mode on exception.
+ * test/openssl/test_buffering.rb: added
+
+Wed Mar 16 13:45:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/lib/openssl/buffering.rb: de-nest Buffering module
+
+ * ext/openssl/lib/openssl/buffering.rb: add RDoc
+
+Wed Mar 16 08:40:39 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509ext.c: parenthesize macro arguments.
+
+Tue Mar 15 18:34:27 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509crl.c: parenthesize macro arguments.
+
+Tue Mar 15 09:49:03 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/misc/test_ruby_mode.rb (test_singleton_class): Skip for Pending.
+
+Mon Mar 14 21:20:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_require.rb (test_require_too_long_filename):
+ increase path length, because MAXPATHLEN is defined as 4096 on linux.
+
+ * test/ruby/test_require.rb (test_require_path_home_1): ditto.
+
+ * test/ruby/test_require.rb (test_require_path_home_2): ditto.
+
+Mon Mar 14 19:54:37 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509cert.c: parenthesize macro arguments.
+
+Sun Mar 13 18:11:28 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509attr.c: parenthesize macro arguments.
+
+Sun Mar 13 16:07:58 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/pstore.rb: Fix don't raise "nested transaction" when thread_safe
+ is true. Patch by Masaki Matsushita (Glass_saga). [ruby-dev:43337]
+
+ * test/test_pstore.rb: Test for above.
+ Patch by Masaki Matsushita (Glass_saga) [ruby-dev:43337]
+
+Sat Mar 12 04:12:41 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl_session.c: parenthesize macro arguments.
+
+Sat Mar 12 02:27:07 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c ({d,dt}_lite_marshal_load): checks the given
+ argument.
+
+Sat Mar 12 01:26:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: changed some directives.
+
+Sat Mar 12 01:16:02 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c, ext/date/lib/*: moved rdoc descriptions.
+
+Sat Mar 12 00:06:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/lib: moved from lib.
+
+Fri Mar 11 23:32:38 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/delta*: removed undocumented delta.
+
+Fri Mar 11 18:42:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (find_executable0): should exclude directories.
+
+Fri Mar 11 01:40:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_getmaxgroups, proc_setmaxgroups): Process#maxgroups
+ and Process#maxgroups= now raise NotImplementedError if the
+ platform don't support supplementary groups concept.
+
+Fri Mar 11 01:25:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (get_sc_ngroups_max): return -1 if platform don't
+ support NGROUPS_MAX.
+
+Thu Mar 10 22:28:15 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl.h: parenthesize macro arguments.
+
+Thu Mar 10 21:59:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (parser_encode_length): add exception as UTF8-MAC for
+ magic comment's emacs newline specifier
+ patched by James M. Lawrence [ruby-core:35476] fixes #4489
+
+Thu Mar 10 16:00:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (parser_encode_length): fix typo: the length of
+ "-dos" and "-mac" is not 5 but 4.
+ patched by James M. Lawrence [ruby-core:35476] fixes #4489
+
+Thu Mar 10 10:52:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_require.rb: setting too long string to ENV causes
+ Errno::EINVAL on Windows. long path name errors may causes over
+ about 1024 bytes, then limit it about 4000 bytes.
+
+Thu Mar 10 10:09:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#read): fix for the case
+ when IO#read or IO#gets returns nil.
+
+Thu Mar 10 07:12:03 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rubygems*: Import rubygems 1.6.2 (release candidate @ 2026fbb5)
+ * test/rubygems: Ditto
+ * test/runner.rb: Added test to load path to fix test requires.
+
+Thu Mar 10 03:00:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl.c: parenthesize macro arguments.
+
+Wed Mar 9 23:51:26 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_io_m17n.rb (test_io_new_enc): "sjis" is now an alias
+ of Windows-31J.
+
+Wed Mar 9 23:06:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): fix indent after aref.
+
+Wed Mar 9 12:50:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Rescue exceptions when
+ people implement the method method. Thanks Lin Jen-Shin.
+ [ruby-core:35255]
+
+ * test/psych/visitors/test_yaml_tree.rb: test for implementation of
+ method method.
+
+Wed Mar 9 11:53:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/shift_jis.c: Change SJIS as an alias of Windows-31J.
+ [ruby-dev:43027] fixes #4280
+
+ * enc/shift_jis.c: Add PCK as an alias of Windows-31J.
+
+Wed Mar 9 00:45:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: nmake substitutes all occurrences in macro.
+
+ * ext/extmk.rb: workaround for nmake.
+
+Tue Mar 8 23:49:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_setgroups): cleanup.
+
+Tue Mar 8 23:40:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/misc/test_ruby_mode.rb: test for ruby-mode.el.
+
+Tue Mar 8 23:27:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (get_sc_ngroups_max): try to use NGROUPS_MAX at first if
+ _SC_NGROUP_MAX is not defined.
+
+Tue Mar 8 23:10:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): fix for array in block.
+
+Tue Mar 8 21:44:49 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_rand.c: parenthesize macro arguments.
+
+Tue Mar 8 16:45:31 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (ruby_setenv): MSDN says that Windows XP or earlier limits
+ the total size of environment block to 5,120 chars. and on such
+ OS, putenv() causes SEGV. So, ruby should limit the size of an
+ environment variable to 5,120 bytes for workaround.
+
+Tue Mar 8 15:57:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_spec_fetcher.rb
+ (TestGemSpecFetcher#test_cache_dir_escapes_windows_paths): cache_dir
+ may have driveletter and `:' for base of cache_dir itself, so need
+ to skip it for checking.
+
+Tue Mar 8 12:30:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-deep-indent-paren-p, ruby-calculate-indent):
+ do not apply deep-indent inside parens at the beginning of
+ expressions.
+
+Tue Mar 8 09:32:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (configure-ext, build-ext), ext/extmk.rb (extmake):
+ support parallel-make under ext.
+
+Tue Mar 8 09:25:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_setgroups): use getgrnam() if getgrnam_r() is
+ not available.
+
+ * process.c: RARRAY_LEN() returns long int.
+
+Tue Mar 8 09:07:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_REPLACE_TYPE): enclose in quotes for multiple
+ type names.
+
+Tue Mar 8 01:43:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c (get_sc_ngroups_max): define to wrap sysconf(3).
+ this also supports Windows which doesn't have sysconf(3).
+
+ * process.c (maxgroups): use get_sc_ngroups_max.
+
+ * process.c (proc_setmaxgroups): ditto.
+
+Tue Mar 8 01:16:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (rb_objspace): an initializer must be a constant.
+
+Tue Mar 8 01:11:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c (maxgroups): cast because sysconf(3)'s return value is long.
+
+ * process.c (proc_setmaxgroups): ditto.
+
+ * process.c (proc_setgroups): cast because RARRAY_LEN() is long.
+
+Tue Mar 8 00:02:47 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey_rsa.c: parenthesize macro arguments.
+
+Mon Mar 7 22:59:39 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/pstore.rb: Delete variable @transaction and fix #4474. Patch by
+ Masaki Matsushita (Glass_saga).
+
+ * test/test_pstore.rb(test_thread_safe): Add test for #4474.
+
+Mon Mar 7 21:31:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_setgroups): replace getgrnam() with getgrnam_r()
+ because getgrnam() isn't thread safe.
+
+Mon Mar 7 20:49:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_getmaxgroups, proc_setmaxgroups): reflect
+ platform maxgroups limitation by default instead hardcoded 65536.
+
+Mon Mar 7 17:13:00 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_set_params): allow GC parameter configuration by
+ environment variables. based on a patch from funny-falcon at
+ https://gist.github.com/856296, but honors safe level.
+
+Mon Mar 7 09:05:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c: NUM2RLIM is defined but no getrlimit and setrlimit on
+ mingw.
+
+Mon Mar 7 08:38:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/date/date_core.c (DateTimeData): should not use bare 'long long'
+ and 'long double', which are not defined by C89.
+
+ * ext/date/date_core.c (dt_lite_plus): get rid of overflow at casting
+ down double to integer.
+
+Mon Mar 7 00:21:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_getgroups): get rid of maxgroups dependency.
+ ngroups can be calculated dynamically.
+
+Sun Mar 6 23:45:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: rlim_t use standard RUBY_REPLACE_TYPE mechanism.
+
+Sun Mar 6 23:26:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_setmaxgroups): added negative value check.
+ This was suggested by Daniel Berger. Thanks Daniel!
+ [ruby-core:35426][Bug#4467]
+
+Sun Mar 6 23:18:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (maxgroups, proc_setmaxgroups): increase max groups
+ limitation up to 65536.
+
+Sun Mar 6 22:20:59 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey_ec.c: parenthesize macro arguments.
+
+Sun Mar 6 21:49:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * sample/list.rb (MyElem#initialize): initialize @head
+ explicitly. Otherwise -W2 option makes following warning.
+ "warning: instance variable @head not initialized".
+ This issue was founded by Andrew Grimm. Thanks Andrew!
+ [ruby-core:35435][Bug#4471]
+
+Sun Mar 6 05:21:41 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * class.c: fix camelCase to snake_case in documentation code examples.
+ patched by Andrew Grimm. fixes Bug #4469
+
+ * marshal.c: ditto.
+
+ * proc.c: ditto.
+
+ * sample/biorhythm.rb: ditto.
+
+ * vm_eval.c: ditto.
+
+ * vm_method.c: ditto.
+
+
+Sun Mar 6 03:22:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_cntl): use rb_thread_io_blocking_region() instead
+ rb_thread_blocking_region().
+
+Sat Mar 5 22:54:36 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * include/ruby/intern.h: fix a typo of prototype declaration.
+ rb_mutex_try_lock -> rb_mutex_trylock [ruby-dev:43213]
+
+Sat Mar 5 19:44:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (TestIO#test_fcntl_lock): small clean up.
+
+Sat Mar 5 01:33:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_cntl, nogvl_io_cntl): IO.fcntl() and IO.ioctl()
+ release GVL during calling kernel interface.
+ Suggested by Eric Wong. [ruby-core:35417][Bug #4463]
+
+ * test/ruby/test_io.rb (TestIO#test_fcntl_lock): add new test for
+ IO.fcntl().
+
+Fri Mar 4 23:09:12 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/testunit/test_parallel.rb
+ (test_should_run_all_without_any_leaks): consider that the order of
+ testcase could change. [ruby-dev:43300] [Bug #4466]
+
+Fri Mar 4 22:01:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_cntl): change 'cmd' type to int. ioctl and fcntl need to
+ be passed int.
+ * io.c (rb_io_ctl): ditto.
+
+Fri Mar 4 21:10:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: save warnflags. the patch is created by Eric Wong.
+ [Bug #4465]
+
+Wed Mar 2 21:15:00 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey_dsa.c: parenthesize macro arguments.
+
+Thu Mar 3 22:10:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (check_exec_redirect_fd, check_exec_redirect): raise
+ ArgumentError if fd >= 3 on Windows because the feature is not
+ supported.
+
+ * test/ruby/test_process.rb (test_execopts_redirect): remove meaningless
+ argument.
+
+Thu Mar 3 21:21:42 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (test_execopts_redirect): redirecting fd
+ >= 3 is not supported on Windows, so should not specify such options
+ when calling spawn or others.
+
+Thu Mar 3 18:59:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_slice_bang): raise error when the string is frozen.
+
+Thu Mar 3 14:25:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * strftime.c (STRFTIME): return 0 and ERANGE when precision is too
+ large. [ruby-dev:43284] fixes #4456
+
+Thu Mar 3 00:46:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c (uleb128): cast the value to unsigned long.
+
+ * addr2line.c (fill_lines): print error when lseek fails.
+
+Thu Mar 3 00:36:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/encoding.rb (REXML::Encoding#encoding=): store @encoding
+ a String which means the name of the encoding.
+ this partially revert r29646.
+
+ * lib/rexml/document.rb: follow above.
+
+ * lib/rexml/output.rb: ditto.
+
+ * lib/rexml/parsers/baseparser.rb: ditto.
+
+ * lib/rexml/source.rb: ditto.
+
+ * lib/rexml/xmldecl.rb: ditto.
+
+Wed Mar 2 23:19:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_byte_substr): return nil for negative length.
+
+Wed Mar 2 21:15:00 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey_dh.c: parenthesize macro arguments.
+
+Wed Mar 2 14:24:04 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: Fix name from `inclement_io` to
+ `increment_io`.
+
+Wed Mar 2 14:06:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_slice_bang): move treatments which is only needed
+ when the result is not nil.
+
+Wed Mar 2 14:02:29 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb(TestParallel#spawn_runner):
+ Fix outputing empty line in running test.
+
+ * test/testunit/tests_for_parallel/test_third.rb: Remove `sleep`
+
+Tue Mar 1 22:29:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey.h: parenthesize macro arguments.
+
+Tue Mar 1 22:02:35 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: Fix number.
+
+Tue Mar 1 21:48:22 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: For Windows.
+
+ * test/testunit/test_parallel.rb(TestParallelWorker#test_quit_in_test):
+ Fix for above specification change.
+ * test/testunit/test_parallel.rb(TestParallel#spawn_runner):
+ Fix outputing empty line in running test.
+
+Tue Mar 1 20:51:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_system.rb (TestSystem#test_system_at):
+ remove tests for [bug#4396]. because we decided to reject this
+ ticket.
+
+Tue Mar 1 19:46:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/{test_date.rb,test_date_attr.rb}: [ruby-dev:43280]
+
+Tue Mar 1 18:40:38 2011 Ryan Davis <ryan@YPCMC09457>
+
+ * lib/rubygems*: Import rubygems 1.6.0 (released version @ 58d8a0b9)
+ * test/rubygems: Ditto
+
+Tue Mar 1 16:22:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c: revert r30987 because it causes some failures in
+ test-all, especially webrick.
+
+Tue Mar 1 15:59:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_byteslice): the resulted encoding should keep
+ original encoding. this also fixes the encoding when the result
+ shares internal string. [ruby-core:35376]
+
+Tue Mar 1 13:25:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpMemAlloc): CVE-2011-0188.
+ Fixes a bug reported by Drew Yao <ayao at apple.com>
+
+Tue Mar 1 10:34:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_byteslice): Add String#byteslice. [ruby-core:35376]
+
+Tue Mar 1 00:12:49 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * include/ruby/win32.h: define WIN32 if neither _WIN64 nor WIN32
+ defined. it forces to use push/pop for pack(4) pragma.
+
+Mon Feb 28 23:52:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/testunit/test_rake_integration.rb (test_with_rake_runner):
+ use assert_in_out_err for suppress messages.
+
+Mon Feb 28 22:48:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (rb_w32_spawn): use shell if a commandline contain
+ double-quote character.
+ * win32/win32.c (is_internal_cmd): similar, use shell if a commandline
+ contain caret character.
+
+ * test/ruby/test_system.rb (TestSystem#test_system_at): fix
+ wrong test case. if system() invoke a command by using shell,
+ system() never return nil. Also, "" quotation must not appear
+ twice in a command line.
+
+Mon Feb 28 17:36:57 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkcs7.c: parenthesize macro arguments.
+
+Mon Feb 28 16:48:42 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkcs12.c: parenthesize macro arguments.
+
+Mon Feb 28 16:28:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_trans): when the hash for multibyte repl is empty,
+ tr is inverse mode, and a character doesn't much the table, the
+ character should be replaced by last replacement. Bug #4449
+
+Mon Feb 28 16:38:56 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ocsp.c: parenthesize macro arguments.
+
+Mon Feb 28 13:02:15 2011 Danial Pearce <github@tigris.id.au>
+
+ * lib/tempfile.rb: Fix example file paths in docs for tempfile.
+ https://github.com/ruby/ruby/pull/5
+
+Mon Feb 28 12:56:18 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_init): typo fix.
+ https://github.com/ruby/ruby/pull/8
+
+Mon Feb 28 12:28:13 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/date/date_core.c (datetime_s_now): localtime() and localtime_r()
+ required time_t pointer as 1st parameter, and tv_sec member of struct
+ timeval is long.
+
+Mon Feb 28 11:57:40 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb: Temporally disable test on Windows.
+
+Mon Feb 28 07:28:35 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb(Test::Unit::Runner#after_worker_quit):
+ method name more be natural English.
+
+ * lib/test/unit.rb(Test::Unit::Runner::Worker.launch):
+ IO.sync doesn't need. Should use "b" for mode.
+
+Sun Feb 27 21:59:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_system.rb (TestSystem#test_system_redirect_win):
+ add test for system().
+
+Sun Feb 27 18:00:09 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Refactoring; Worker never use Hash for internal
+ storage.
+
+ * lib/test/unit.rb: Never use Kernel#spawn. Use IO.popen instead.
+
+Sun Feb 27 13:16:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ns_spki.c: parenthesize macro arguments.
+
+Sat Feb 26 17:07:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: [Feature #4257]
+
+ * ext/date/extconf.rb: new
+
+ * ext/date/date_core.c: new
+
+Sat Feb 26 16:10:23 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: --jobs-status won't puts over 2 lines.
+
+ * test/testunit/test_parallel.rb: Fix test for above.
+
+ * lib/test/*: refactoring.
+
+Sat Feb 26 07:10:05 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: fix parsing timezone's whose
+ whose format is (+/-)hhmm. Thanks Goncalo Silva!
+
+ * test/psych/test_scalar_scanner.rb: test for bug.
+
+Thu Feb 24 23:02:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_hmac.c: parenthesize macro arguments.
+
+Thu Feb 24 22:53:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (love): for the birthday.
+
+Thu Feb 24 22:51:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (ruby_vm_destruct): run vm exit hooks after all objects are
+ destructed.
+
+Thu Feb 24 14:40:33 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * ChangeLog (vim): Modeline for vim
+
+Thu Feb 24 13:39:25 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * common.mk: Use $RUNRUBY for worker process.
+
+ * lib/test/unit.rb: Fix bug.
+
+ * lib/test/unit.rb: @options[:ruby](@opts[:ruby]) is now Array.
+
+ * test/testunit/parallel.rb: Fix for above.
+
+Thu Feb 24 10:05:55 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/tests_for_parallel/misc.rb: Fix bug in r30947.
+
+ * lib/test/unit.rb, lib/test/unit/assertions.rb: For this test.
+
+Wed Feb 23 23:07:38 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb, test/testunit/parallel/*:
+ Test for r30939.
+
+ * lib/test/unit.rb: For test.
+
+ * lib/test/parallel.rb: For test.
+
+ * lib/test/unit/testcase.rb: For test.
+
+Wed Feb 23 22:05:13 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_engine.c: parenthesize macro arguments.
+
+Tue Feb 22 23:15:17 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Fix --ruby option doesn't effect.
+
+ * lib/test/unit.rb: Fix typo.
+
+Tue Feb 22 21:39:28 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_digest.c: parenthesize macro arguments.
+
+Tue Feb 22 14:34:26 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Fix merging miss.
+
+Tue Feb 22 12:27:26 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Add new options; --jobs,-j,--ruby,--jobs-status,
+ --no-retry.
+ [Feature #4415] [ruby-dev:43226],[ruby-dev:43222],[ruby-core:35294]
+
+ * lib/test/unit/parallel.rb: Used at test/unit --jobs(-j) option.
+
+ * test/csv/test_serialization.rb: test/unit parallel running ready.
+
+ * test/rake/test_file_task.rb: test/unit parallel running ready.
+
+Tue Feb 22 06:09:10 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/syslog/syslog.c: Apply documentation patch from mathew murphy.
+ [Bug #4149]
+
+Tue Feb 22 03:09:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: increase Psych to 1.1.0 for help with
+ debugging.
+
+Tue Feb 22 03:04:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/streaming.rb: refactor streaming methods to a
+ module.
+ * ext/psych/lib/psych/stream.rb: extracted streaming specific methods
+ to a module.
+ * ext/psych/lib/psych/json/stream.rb: JSON stream inherits from
+ JSONTree and includes streaming methods.
+ * ext/psych/lib/psych/visitors/json_tree.rb: JSON does not support
+ object references, so remove object reference testing when building
+ JSON trees.
+
+Tue Feb 22 02:41:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb (accept): use Hash#key?
+ when looking up object references to err on the side of cache
+ misses.
+
+Mon Feb 21 10:58:39 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/yaml_events.rb: refactoring JSON event
+ handling methods to a module for reuse.
+ * ext/psych/lib/psych/json/tree_builder.rb: AST builder uses JSON
+ event methods.
+ * ext/psych/lib/psych/json/stream.rb: stream emitter uses JSON event
+ methods.
+
+Mon Feb 21 10:54:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/stream.rb: do not emit custom tags in maps
+ or sequences when emitting JSON.
+ * ext/psych/lib/psych/json/tree_builder.rb: do not emit custom tags in
+ sequences when emitting JSON.
+ * test/psych/json/test_stream.rb: tests for custom stream emits.
+ * test/psych/test_json_tree.rb: tests for JSON emits.
+
+Mon Feb 21 10:05:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/ruby_events.rb: DRY up ruby event handling
+ for JSON.
+ * ext/psych/lib/psych/visitors/json_tree.rb: use ruby events module
+ * ext/psych/lib/psych/json/stream.rb: ditto
+
+Mon Feb 21 10:01:01 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/stream.rb: fix JSON stream emits to use
+ double quotes during stream.
+ * test/psych/json/test_stream.rb: tests to reflect changes.
+
+Mon Feb 21 00:38:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_system.rb (TestSystem#test_system_at):
+ add testcase for bug4396.
+
+Sun Feb 20 19:59:32 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_cipher.c: parenthesize macro arguments.
+
+Sun Feb 20 16:26:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (exec_recursive): prevent temporary objects from GC.
+
+ * prevent temporary objects from GC, and should not use
+ RSTRING_PTR() for function calls since it evaluates the argument
+ a couple of times.
+
+Sun Feb 20 16:22:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_flock): use rb_thread_io_blocking_region for the
+ time being.
+
+Sun Feb 20 05:33:17 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 2.0.2 r6207.
+ * test/minitest/*: ditto
+
+Sun Feb 20 02:14:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (sig_trap): avoid pthread_sigmask(xx, &mask, &mask) usage
+ because FreeBSD don't permit it. If it's used, it behave as
+ pthread_sigmask(xx, NULL, &mask).
+
+ * signal.c (init_sigchld): ditto.
+
+Sun Feb 20 00:46:51 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_bn.c: parenthesize macro arguments.
+
+Sat Feb 19 22:37:42 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * vm_insnhelper.c (vm_check_if_namespace): guard temporary object
+ from GC.
+
+Sat Feb 19 06:36:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/test/unit.rb: partial revert of r30849. [ruby-core:32864]
+
+ * test/testunit/test_rake_integration.rb: adding an integration test
+ with the rake loader to prevent regressions.
+
+Fri Feb 18 19:31:31 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::remove_entry_secure): there is a
+ race condition in the case where the given path is a directory,
+ and some other user can move that directory, and create a
+ symlink while this method is executing.
+ Reported by: Nicholas Jefferson <nicholas at pythonic.com.au>
+
+Fri Feb 18 00:28:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * compile.c (get_exception_sym2type): guard temporary object from GC.
+
+Thu Feb 17 23:54:29 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * iseq.c (prepare_iseq_build): initialize iseq_compile_data::err_info
+ with nil. this fix exception in rb_iseq_load().
+
+Thu Feb 17 22:32:35 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_marshal.rb (test_marshal_dump_extra_iv):
+ fix a typo of local variable. [Bug #3720] [ruby-dev:42083]
+
+Thu Feb 17 21:32:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl.h: parenthesize macro arguments.
+
+Wed Feb 16 20:37:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * eval_jump.c (rb_exec_end_proc): changed at_exit and END proc
+ evaluation order. [Bug #4400] [ruby-core:35237]
+ * eval_jump.c (rb_mark_end_proc): ditto.
+
+ * test/ruby/test_beginendblock.rb (TestBeginEndBlock#test_nested_at_exit):
+ added a test for nested at_exit.
+ * test/ruby/test_beginendblock.rb (TestBeginEndBlock#test_beginendblock):
+ changed the test to adopt new spec.
+
+Wed Feb 16 20:17:06 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/openssl_missing.h: parenthesize macro arguments.
+
+Tue Feb 15 21:37:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/gdbm/gdbm.c: parenthesize macro arguments.
+
+Tue Feb 15 20:34:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * array.c (ary_join_1): fix array size.
+
+Tue Feb 15 19:43:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: fix and resubmit r30621. [ruby-dev:43203]
+
+Tue Feb 15 15:41:30 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (array_join): copy the encoding of the first element as
+ an initial encoding.
+
+ * array.c (array_join_0): ditto.
+
+ * array.c (array_join_1): ditto.
+
+ * array.c (inspect_ary): ditto.
+
+ * array.c (array_join_1): add an argument to check the appending is
+ first one or not.
+
+Tue Feb 15 15:40:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (inspect_i): copy the encoding of the first key as
+ an initial encoding.
+
+Mon Feb 14 15:00:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (inspect_ary): don't taint the inspected result of a
+ recursive array.
+
+Tue Feb 15 15:43:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): change the rule for empty strings:
+ remove the special treatment of the US-ASCII encoded empty string.
+ Now Encoding.compatible? usually respect the encoding of the
+ receiver.
+
+Tue Feb 15 15:39:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): remove special treatment of
+ ASCII-8BIT receivers.
+
+ * string.c (str_gsub): set initial encoding of the buffer as the
+ same of the receiver. [ruby-core:35141]
+
+Tue Feb 15 09:49:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_system.rb (TestSystem#test_system_at): use findstr
+ command instead of find command, because the latter is confusing
+ another famous Unix command.
+
+Mon Feb 14 23:01:19 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread.c (rb_thread_io_blocking_region): reset th->waiting_fd
+ after blocking region, because remaining waiting_fd might
+ cause unnecessary IOError.
+
+Mon Feb 14 21:06:50 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: revert r30621. That revision introduced mkmf test
+ failures and it turned out to be OK to revert. [ruby-dev:43203]
+
+Mon Feb 14 21:04:01 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/fiddle/conversions.h: parenthesize macro arguments.
+
+Mon Feb 14 18:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/setup.mak (USE_RUBYGEMS): fixed r30835. It didn't work on
+ mswin32 port. If you changed win32/configure.bat, you should change
+ setup.mak too.
+
+Mon Feb 14 17:28:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_system.rb (TestSystem#test_system_at):
+ added test. [ruby-core:35218] (#4393)
+
+Mon Feb 14 13:15:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (is_internal_cmd): if the first char of prog is '@',
+ execute it via shell. [ruby-core:35218] (#4393)
+
+Mon Feb 14 10:33:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb: revert r30863, because it causes too many noise.
+
+Mon Feb 14 07:34:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c: parenthesize macro arguments.
+
+Sun Feb 13 19:41:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): skip
+ test suites failed to load instead of mere messages.
+
+Sun Feb 13 09:56:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/openssl/test_config.rb (OpenSSL#test_freeze): fix error
+ message assertion.
+
+ * test/io/nonblock/test_flush.rb (TestIONonblock#flush_test):
+ return true to finish the test.
+
+ * test/syck/test_string.rb (Syck::TestString#test_non_binary_string):
+ use assert_not instead of refute, unless required minitest
+ explicitly.
+
+ * test/test_prime.rb (TestPrime::sieve.Integer): ditto.
+
+ * test/xmlrpc/webrick_testing.rb (WEBrick_Testing#start_server):
+ catch IOError when server socket was closed.
+
+Sun Feb 13 07:39:51 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): typo fixed. a patch from Gaku Ueda in
+ [ruby-core:35216].
+
+Sun Feb 13 00:48:47 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (Date#===): [ruby-core:35127]
+
+Sun Feb 13 00:29:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Options#process_args): always
+ return options.
+
+ * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): return
+ if any test case get loaded.
+
+ * lib/test/unit.rb (Test::Unit::AutoRunner#initialize): do not add
+ default directory if it is nil.
+
+ * lib/test/unit.rb (Test::Unit::AutoRunner#process_args): return
+ true if any test cases to run.
+
+Sat Feb 12 23:17:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (assert_include): add alias.
+
+Sat Feb 12 14:44:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_io_blocking_region): new function to run
+ blocking region with GIL released, for fd.
+
+ * thread.c (rb_thread_fd_close): implement. [ruby-core:35203]
+
+ * vm.c (th_init): rename from th_init2.
+
+Sat Feb 12 14:41:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::AutoRunner#initialize): use
+ default_dir if no test case given.
+
+ * lib/test/unit.rb (Test::Unit::Runner): rename from Test::Unit::Mini.
+
+ * lib/test/unit.rb (Test::Unit::GlobOption#non_options): run tests
+ under base directory if no argument given.
+
+Sat Feb 12 08:03:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb (TestSetTraceFunc): ensure to use
+ method_added hook defined in Module.
+
+Sat Feb 12 01:04:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): enable rubygems if --gem option is given.
+
+ * ruby.c (process_options): load rubygems if it is disabled but
+ --gem option is given.
+
+Fri Feb 11 23:27:50 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ruby.c (proc_options): add --gem=enabled as an alias of
+ --enable=gems and --gem=disabled as an alias of --disable=gems.
+ Gem named "enabled" or "disabled" has already been reserved
+ legitimately for this purpose.
+
+Fri Feb 11 23:17:04 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/cfunc.c: parenthesize macro arguments.
+
+Fri Feb 11 21:41:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bin/testrb, test/runner.rb, lib/test/unit.rb: improve backward
+ compatibility.
+
+Fri Feb 11 19:45:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): use rb_ary_free to free internal object.
+
+ * gc.h (RUBY_FREE_UNLESS_NULL): get rid of double free.
+ [ruby-core:35192]
+
+Fri Feb 11 16:57:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_transcode.rb (test_from_cp50221): fix wrong
+ assertion and move back.
+
+Fri Feb 11 14:33:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_no_match): alias for
+ backward compatibility.
+
+Fri Feb 11 12:06:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (add_gems, require_libraries, proc_options): add
+ --require and --gem options.
+
+Fri Feb 11 12:03:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rubygems): add --disable-rubygems option.
+
+Fri Feb 11 11:39:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in (CROSS_COMPILING): get rid of NameError.
+
+Thu Feb 10 23:12:34 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/dl.h: parenthesize macro arguments.
+
+Wed Feb 9 23:11:27 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c: parenthesize macro arguments.
+
+Tue Feb 8 11:47:11 2011 Loren Sands-Ramshaw <lorensr@gmail.com>
+
+ * array.c: documentation clarification in rotate, rotate!,
+ index, and rindex. [ruby-core:35144]
+
+Wed Feb 9 09:45:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_encoding.rb: remove unnecessary (and wrong)
+ platform-dependent hacks.
+
+Wed Feb 9 00:47:18 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/etc/etc.c: parenthesize macro arguments.
+
+Tue Feb 8 19:38:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg): fix for invalid nest errors.
+
+Tue Feb 8 19:22:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in (AC_MSG_CHECKING): fixed typo. the patch is
+ created by Benoit Daloze. Thanks a lot. [Bug #4384][ruby-core:35148]
+
+Tue Feb 8 16:04:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_s_sysopen): use NUM2MODET() instead NUM2UINT().
+
+Tue Feb 8 15:59:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (rb_run_exec_options_err): use MODET2NUM() instead
+ LONG2NUM().
+
+Tue Feb 8 13:59:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: revert r30725. Now we have proper runtime fallback.
+ Therefore, no need compile time disabling. (see r30762).
+
+Tue Feb 8 01:00:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * process.c (proc_setgroups): add GC guard to prevent intermediate
+ variable from GC.
+
+Tue Feb 8 00:56:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg, ruby-in-here-doc-p): tell
+ singleton class definitions from here documents.
+
+ * misc/ruby-mode.el (ruby-expr-beg, ruby-parse-partial): keyword
+ followed by colon is label.
+
+Mon Feb 7 22:56:16 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/benchmark.rb (Benchmark#bmbm): use ensure clause instead of
+ Object#tap to restore STDOUT.sync.
+
+Mon Feb 7 22:34:20 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/net/http.rb (Net::HTTP#connect): support SNI (Server Name
+ Indication) for HTTPS. [ruby-dev:43164]
+ http://stackoverflow.com/questions/4685736/openssl-server-name-indication-support-in-ruby
+
+Mon Feb 7 16:05:32 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Upgrade to RDoc 3.5.3 Fixes [Bug #4376]
+
+Mon Feb 7 11:46:59 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (rdoc): add --encoding=UTF-8; ruby's rdoc must be UTF-8.
+
+Mon Feb 7 10:21:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_options.rb (TestRDocOptions#test_check_files):
+ there is no easy way to create owner unreadable file on Windows.
+ So, skip the test.
+
+Sun Feb 6 13:48:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/lib/json/common.rb (JSON::MissingUnicodeSupport.iconv):
+ should not drop rest of the result. use Iconv.conv instead.
+
+Sun Feb 6 12:46:02 2011 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (gsub): Ensure result encoding is the same as input
+ encoding. [Bug #4340].
+
+Sun Feb 6 12:18:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (words, qwords): dispatch array events. based on a
+ patch from Michael Edgar. [Bug #4365].
+
+Sun Feb 6 12:12:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/fileutils/fileasserts.rb (FileAssertions): separate module.
+
+Sun Feb 6 11:29:23 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c: parenthesize macro arguments.
+
+Sat Feb 5 22:01:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ revert r30796. r30797 and r30798 are an alternative fix.
+ [ruby-dev:43174]
+
+Sat Feb 5 21:47:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (mlhs_basic): include mlhs_post for ripper. a patch
+ from Michael Edgar at [ruby-core:35078].
+
+Sat Feb 5 21:22:21 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_block): move from
+ test/fileutils/fileasserts.rb.
+
+ * test/fileutils/fileasserts.rb (assert_block): pass arguments
+ as-is. [ruby-dev:43174]
+
+Sat Feb 5 16:47:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ msg can be passed nil. [Bug #4371] [ruby-dev:43174]
+
+Sat Feb 5 15:18:25 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Upgrade to RDoc 3.5.2
+
+Sat Feb 5 12:05:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_node_init_copy): SyckNode is not
+ copiable. [ruby-core:35094]
+
+Sat Feb 5 11:48:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_alloc): leave data ptr
+ NULL.
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_new, ossl_cipher_initialize):
+ allocate internal structure. [ruby-core:35094]
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_copy): ditto.
+
+Sat Feb 5 11:29:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/parser/parser.h (GET_PARSER): raise TypeError.
+
+ * ext/json/parser/parser.rl (cParser_initialize): ditto.
+
+ * ext/json/parser/parser.h (GET_PARSER): check if initialized.
+ [ruby-core:35079]
+
+ * ext/json/parser/parser.rl (cParser_initialize): ditto.
+
+Sat Feb 5 10:09:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_get_expanded_load_path): always expand load paths.
+
+Sat Feb 5 09:38:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (encoded_dup): extract.
+
+Sat Feb 5 03:37:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::LowMethods): make low level methods
+ in NoWrite and DryRun to do nothing. [ruby-dev:43129]
+
+ * test/fileutils/fileasserts.rb: add message arguments.
+
+ * test/fileutils/fileasserts.rb (Test::Unit::Assertions#assert_block):
+ show the given message.
+
+Sat Feb 5 02:09:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lex_getline, parser_set_encode): set encoding of lines
+ in SCRIPT_LINES__ as source encoding. [ruby-dev:43168]
+
+Sat Feb 5 02:08:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (ruby_thread_data_type): add prefix.
+
+Sat Feb 5 00:59:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (GetThreadPtr): use TypedData_Get_Struct() instead
+ CoreDataFromValue() because we need type check. Otherwise,
+ type mismatch can cause segmentation fault crash.
+ [ruby-core:35086] [Ruby 1.9-Bug#4367]
+
+ * vm.c (thread_data_type): remove static.
+
+Fri Feb 4 19:14:27 2011 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/utf8_mac.trans: parenthesize macro arguments.
+
+Fri Feb 4 12:11:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * string.c (str_utf8_nth): fixed a condition of optimized lead
+ byte counting. [Bug #4366][ruby-dev:43170]
+
+Fri Feb 4 01:50:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * string.c (count_utf8_lead_bytes_with_word): wrote function
+ comments.
+
+Fri Feb 4 00:14:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_reader_get_unused): no need to dup
+ before rb_str_resurrect.
+
+Thu Feb 3 20:04:44 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c (CHECK): unused macro removed.
+
+Thu Feb 3 18:33:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_reader_get_unused): use rb_str_resurrect
+ because gz->z.input is hidden string. [ruby-core:35057]
+
+Thu Feb 3 16:34:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/shift_jis.c (code_to_mbc): cast as int from the subtraction of
+ pointers.
+
+ * enc/utf_16le.c (utf16le_mbc_enc_len): use ptrdiff_t.
+
+ * enc/utf_32be.c (utf32be_left_adjust_char_head): ditto.
+
+ * enc/utf_32le.c (utf32le_left_adjust_char_head): ditto.
+
+Thu Feb 3 16:31:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/missing.h: don't use HAVE_STDDEF_H because it never
+ defined by configure though configure.bat defines it.
+
+ * include/ruby/ruby.h: move include stddef.h to defines.h
+
+ * include/ruby/defines.h: ditto.
+
+Wed Feb 2 20:25:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_step_back): cast 4th argument 'n'
+ as int because Ruby usually treats length value as long but
+ onigenc_step_back's 4th argument is int.
+
+Thu Feb 3 07:20:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: use Regexp::NOENCODING
+ rather than magic number.
+
+ * ext/syck/lib/syck/rubytypes.rb: ditto
+
+Thu Feb 3 07:16:11 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * re.c (Init_Regexp): added a constant for ARG_ENCODING_NONE
+ [ruby-core:35054]
+
+ * test/ruby/test_regexp.rb: corresponding test.
+
+Thu Feb 3 07:02:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: ARG_ENCODING_NONE regular
+ expressions can round trip. [ruby-core:34969]
+
+ * test/psych/test_yaml.rb: test for ARG_ENCODING_NONE regex
+
+ * ext/sych/lib/syck/rubytypes.rb: ARG_ENCODING_NONE regular
+ expressions can round trip.
+
+ * test/syck/test_yaml.rb: test for ARG_ENCODING_NONE regex
+
+Wed Feb 2 17:09:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_fdatasync): Use fsync(2) if the underlying
+ operating system does not support fdatasync(2).
+
+Wed Feb 2 14:51:08 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/to_tt_only.rb: commit miss
+ * test/rdoc/test_rdoc_markup_to_tt_only.rb: ditto
+ * test/rdoc/test_rdoc_single_class.rb: ditto
+
+Wed Feb 2 09:27:53 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Upgrade to RDoc 3.5.1
+
+Wed Feb 2 00:30:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/st.h (st_table): Added comment why we need __extension__.
+
+Tue Feb 1 20:45:44 2011 Tanaka Akira <akr@fsij.org>
+
+ * enc/encdb.c: parenthesize macro arguments.
+
+Tue Feb 1 15:12:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_require.rb (TestRequire#test_require_with_unc):
+ use ``127.0.0.1'' instead of ``localhost'' as host name, because
+ XP or earlier cannot resolv it as NBT hostname.
+
+Tue Feb 1 13:20:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/benchmark/test_benchmark.rb (#capture_bench_output):
+ Added explicit sleep. Windows have imprecise time support.
+ Thus Tms.new.Add!{} may be or may be not equal 0. The
+ test failure started since r30747.
+
+Tue Feb 1 11:03:47 2011 Ryan Davis <ryan@lust.local>
+
+ * lib/rubygems*: Import rubygems 1.5.0 (released version @ 1fb59d0)
+ * test/rubygems: Ditto
+
+Tue Feb 1 08:01:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_set_winsize): new method to set
+ console size. [EXPERIMENTAL]
+
+ * ext/io/console/console.c (console_winsize): use GetWriteFD.
+
+Tue Feb 1 02:28:14 2011 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * include/ruby/win32.h, win32/win32.c: add rb_w32_inet_ntop.
+ inet_ntop's minimum supported client is Vista.
+
+Tue Feb 1 00:10:30 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/benchmark.rb: fix benchmark to work with current ruby.
+ patched by Benoit Daloze [ruby-core:33846] [ruby-dev:43143]
+ merged from https://github.com/eregon/ruby/commits/benchmark
+
+ * lib/benchmark (Report#width): update documentation
+ * lib/benchmark: document the return value of #benchmark and the
+ :list attribute in Report
+ * lib/benchmark (Tms#format): rename variables, use String#%
+ instead of Kernel.format
+ * lib/benchmark: remove undocumented Benchmark::times (an alias
+ of Process::times used twice)
+ * lib/benchmark (#benchmark): use label_width for the caption
+ * lib/benchmark (Tms#initialize): rename variables
+ * lib/benchmark: allow title to not be a String and call #to_s
+ * lib/benchmark (Benchmark#bm): return an Array of the times with
+ the labels
+ * lib/benchmark: correct output for Benchmark#bmbm
+ (remove the extra space)
+ * lib/benchmark: add a few tests for Benchmark::Tms output
+ * lib/benchmark: improve style (enumerators, ljust, unused vars)
+ * lib/benchmark: add spec about output and return value
+ * lib/benchmark: improve basic style and consistency
+ no parenthesis for print and use interpolation instead of printf
+ * lib/benchmark: remove unnecessary conversions and variables
+ * lib/benchmark: correct indentation
+ * lib/benchmark: rename the FMTSTR constant and variable to FORMAT
+ * lib/benchmark: remove useless exception
+
+ * test/benchmark: remove unused variable warnings
+
+Mon Jan 31 23:27:23 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * node.c (add_id): remove duplicated rb_id2str() call.
+
+Sun Jan 30 17:19:46 2011 Tanaka Akira <akr@fsij.org>
+
+ * missing/langinfo.c: parenthesize macro arguments.
+
+Mon Jan 31 21:57:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: revert r30698.
+
+Mon Jan 31 21:32:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread.c (thread_start_func_2): check deadlock condition before
+ release thread stack. fix memory violation when deadlock detected.
+ reported by Max Aller. [Bug #4009] [ruby-core:32982]
+
+Mon Jan 31 14:45:47 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/locale.rb (IRB::Locale::#search_file):
+ Gem might be undefined if --disable-gems. [ruby-core:34990]
+
+Mon Jan 31 12:26:14 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: suppressed shorten-64-to-32 warnings.
+ * regcomp.c: ditto.
+ * regexec.c: ditto.
+ * regint.h: ditto.
+ * regparse.c: ditto.
+ * regparse.h: ditto.
+ * time.c: ditto.
+ * variable.c: ditto.
+
+Mon Jan 31 04:45:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_uniq_bang): call ARY_SET_LEN(ary, 0) before
+ ary_resize_capa because ary_resize_capa expects resized length is
+ smaller than current array length. call rb_ary_unshare before
+ ary_resize_capa because ary_resize_capa lost the reference to
+ original shared array. [ruby-core:34997]
+
+Sun Jan 30 17:19:46 2011 Tanaka Akira <akr@fsij.org>
+
+ * missing/crypt.c: parenthesize macro arguments.
+
+Sun Jan 30 16:40:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rubygems/test_gem_security.rb (TestGemSecurity): valid only
+ if OpenSSL is available.
+
+ * test/dl/test_dl2.rb (TestDL#test_sin): math functions do not
+ work on x86_64 due to the design of DL2.
+
+ * test/dl/test_func.rb (DL::TestFunc#test_{sinf,sin): ditto.
+
+Sun Jan 30 16:09:22 2011 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime_with_timespec): %G produces 4 digits.
+
+Sun Jan 30 15:13:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/emacs_mule.c (emacsmule_islead): 7bit range is also leading
+ byte.
+
+Sun Jan 30 13:03:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_fetch_m): use useful message for longer key, not a
+ nonsense id value.
+
+ * string.c (rb_str_ellipsize): new function to ellipsize a string.
+
+ * include/ruby/encoding.h (rb_enc_step_back): new function to step
+ back n characters.
+
+Sun Jan 30 12:53:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/emacs_mule.c (emacsmule_islead): fix inverse condition.
+
+Sun Jan 30 09:37:25 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * io.c (struct argf): char behaves like an unsigned char
+ by default on AIX.
+
+Sun Jan 30 08:02:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: Mac OS X wrongly reports it has fdatasync(3).
+
+Sun Jan 30 03:29:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_bn.c (GetBNPtr): add missing nil case.
+ patched by Martin Bosslet. [ruby-core:34987]
+
+Sun Jan 30 01:02:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h: Added NUM2MODET() and MODET2NUM() default
+ definition.
+ Because r30686 introduced win32 build failure.
+
+Sat Jan 29 22:16:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_join): [].join.encoding must be US-ASCII.
+ [ruby-list:47790]
+
+Sat Jan 29 20:22:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * benchmark/driver.rb (BenchmarkDriver#measure): Show command line
+ when abnormal exiting occur.
+
+Sat Jan 29 10:53:16 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_get_ev_const): no-scope reference to toplevel
+ private constant has been prohibited incorrectly.
+
+ * test/ruby/test_module.rb (test_toplevel_private_constant): add a
+ test for above.
+
+Sat Jan 29 08:43:23 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rubygems*: Import rubygems 1.5.0 (release candidate @ 09893d9)
+ * test/rubygems: Ditto
+
+Sat Jan 29 02:02:37 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (rb_mod_const_of, sv_i): Module#constant should exclude
+ private constants. see [ruby-core:32912].
+
+ * test/ruby/test_module.rb (test_constants_with_private_constant): add
+ a test for above.
+
+Sat Jan 29 01:36:41 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (rb_const_set): const_set should preserve constant
+ visibility. see [ruby-core:32912].
+
+ * test/ruby/test_module.rb: add a test for above.
+
+Sat Jan 29 01:24:57 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (NODE_CLASS, NODE_MODULE), insns.def (defineclass): raise
+ an exception when "class Foo::Bar" is evaluated and Foo::Bar is
+ private. To implement this, define_type of "defineclass" is added
+ so that the instruction can distinguish whether the class definition
+ is scoped (class Foo::Bar) or not (class Bar).
+
+ * test/ruby/test_class.rb (test_redefine_private_class),
+ test/ruby/test_module.rb
+ (test_define_module_under_private_constant): add tests for above.
+
+Sat Jan 29 01:19:17 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * constant.h, variable.c: to ensure compatibility, rb_const_get_* must
+ not raise an exception even when the constant is private. Instead,
+ rb_public_const_get_* and rb_public_const_defined_* are introduced,
+ which raise an exception when the referring constant is private.
+ see [ruby-core:32912].
+
+ * vm_insnhelper.c (vm_get_ev_const): use rb_public_const_get_* instead
+ of rb_const_get_* to follow the constant visibility when user code
+ refers a constant.
+
+ * test/ruby/test_marshal.rb (test_marshal_private_class): add a test.
+ This test had failed because of incompatibility of rb_const_get.
+
+Sat Jan 29 00:30:44 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (set_const_visibility): fix typo. a patch from Tomoyuki
+ Chikanaga in [ruby-core:32919].
+
+Fri Jan 28 23:20:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create,
+ TestGDBM2#test_writer_open_notexist): We only need to skip libgdbm
+ 1.8.0, not all 1.8.x. 1.8.1 or later don't have GDBM_WRITER sickness.
+
+Fri Jan 28 21:56:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/dbm/extconf.rb: Added new header places for Fedora13.
+
+Fri Jan 28 21:49:30 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/zlib/zlib.c: parenthesize macro arguments.
+
+Fri Jan 28 17:47:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/gdbm/test_gdbm.rb (TestGDBM2#test_writer_open_notexist):
+ gdbm 1.8.x changed GDBM::WRITER behavior. Thus our testcase need
+ to be changed too.
+
+Fri Jan 28 17:33:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create): skip
+ the test if gdbm version is 1.8.x.
+
+Fri Jan 28 16:30:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_require.rb (TestRequire#test_require_too_long_filename):
+ Added -w option because too long path error don't output a message
+ by default since r30660. [Bug #4336] [ruby-dev:43134]
+
+Fri Jan 28 16:19:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_require.rb (TestRequire#test_require_path_home_{1,2}):
+ Added -w option because too long path error don't output a message
+ by default since r30660. [Bug #4336] [ruby-dev:43134]
+
+Fri Jan 28 16:04:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_require.rb (TestRequire#test_require_path_home_{1,2,3}):
+ split from test_require_path_home.
+
+Fri Jan 28 13:04:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in (--with-valgrind): Fixed r29683. Now this option
+ is really default on.
+
+Fri Jan 28 12:05:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Add #include<sys/stat.h> when struct stat is
+ tested. Otherwise, incomplete type dereference error will occur.
+
+Fri Jan 28 11:53:19 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: redundant variable names made strange conftest
+ error. Fixed it.
+
+Fri Jan 28 11:47:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess#test_too_long_path{,2}):
+ should handle Errno::E2BIG, because this test checks crash of ruby,
+ not the error type system.
+
+Fri Jan 28 11:23:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_open): Use NUM2MODET() instead NUM2UINT().
+ * io.c (rb_scan_open_args): ditto.
+
+Fri Jan 28 10:58:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Added mode_t type checking.
+ * process.c (rb_exec_arg_addopt): Use NUM2MODET() instead
+ NUM2LONG because clang makes compile error by this narrowing
+ conversion.
+ * process.c (rb_run_exec_options_err): ditto.
+
+Fri Jan 28 02:37:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * re.c (rb_reg_raise): add GC guard to prevent intermediate
+ variable from GC.
+
+Fri Jan 28 02:35:41 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * hash.c (rb_hash_fetch_m): add GC guard to prevent intermediate
+ variable from GC.
+
+Fri Jan 28 01:33:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_process.rb (TestProcess#test_too_long_path)
+ TestProcess#test_too_long_path): Reduced string size from 100MB
+ to 10MB. 100MB may cause no memory error. It isn't intended.
+
+Fri Jan 28 01:27:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_process.rb (TestProcess#test_too_long_path2):
+ Factored out from test_too_long_path. A test should only do
+ one test.
+
+Thu Jan 27 23:29:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_foreach): check if unpacked.
+
+Thu Jan 27 23:14:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-map): remove deprecated binding.
+ use M-; instead.
+
+Thu Jan 27 21:58:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c (rb_str_to_inum): get rid of too huge alloca().
+
+Thu Jan 27 21:43:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * object.c (rb_str_to_dbl): rewrite again. use ALLOCV instead
+ rb_str_tmp_new().
+
+Thu Jan 27 21:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c: get rid of STRNDUPA(). It's dangerous API.
+
+Thu Jan 27 21:31:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (rb_w32_aspawn): get rid of too huge alloca().
+ [Bug #4330] [ruby-core:34898]
+
+Thu Jan 27 20:30:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (rb_w32_spawn): get rid of too huge alloca().
+
+Thu Jan 27 18:49:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (open_dir_handle): get rid of too huge alloca().
+
+Thu Jan 27 18:34:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * file.c (w32_io_info): get rid of too huge alloca().
+ [Bug #4313] [ruby-core:34830]
+
+Thu Jan 27 18:19:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/win32.c (wstati64): get rid of too huge alloca().
+ [Bug #4316] [ruby-core:34834]
+
+Thu Jan 27 15:11:52 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): get rid of too huge
+ alloca(). this is the real fix of [ruby-core:34833].
+
+Thu Jan 27 12:46:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (ALLOC_ARGV_WITH_STR): fix void pointer arithmetic.
+
+Thu Jan 27 08:41:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_exec_v, rb_proc_exec_n, rb_proc_exec)
+ (proc_spawn_n, proc_spawn): get rid of too huge alloca().
+ [ruby-core:34827], [ruby-core:34833]
+
+Thu Jan 27 08:32:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (ALLOCV): new API for exception-safe
+ temporary buffer. [ruby-core:34844]
+
+ * string.c (rb_alloc_tmp_buffer, rb_free_tmp_buffer):
+ implementation of the API.
+
+Thu Jan 27 08:22:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln_find.c (dln_find_1): use rb_warning and return immediately
+ if fname is longer than buffer.
+
+Wed Jan 26 22:57:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * class.c (clone_method): add GC guard to prevent intermediate
+ variable from GC. [Bug #4321] [ruby-dev:43107]
+
+Wed Jan 26 22:45:16 2011 Tanaka Akira <akr@fsij.org>
+
+ * template/id.h.tmpl: parenthesize macro arguments.
+
+Wed Jan 26 22:28:49 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * vm_eval.c (rb_throw_obj): add GC guard to prevent intermediate
+ variable from GC. [Bug #4322] [ruby-dev:43108]
+
+Wed Jan 26 17:08:59 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): OpenSSL::ASN1.decode
+ should reject indefinite length primitive encodings as that is
+ illegal. Patch by Martin Bosslet. See #4324.
+
+Wed Jan 26 10:36:28 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (=~): documentation fix; the return value is nil when
+ it doesn't match. patched by Andrei Kulakov [ruby-core:34562]
+
+Tue Jan 25 08:41:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln_find.c (dln_find_1): omit too long pathnames.
+
+Tue Jan 25 08:28:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_resize): get rid of out-of-bound access.
+
+Tue Jan 25 07:48:22 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_thread.rb: remove unused variables.
+
+Tue Jan 25 07:45:44 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_thread.rb (TestThread#test_condvar_nolock_2): get
+ rid of method redefined.
+
+Tue Jan 25 07:00:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_string_value_cstr): rb_str_modify can change
+ RSTRING_PTR.
+
+Tue Jan 25 03:24:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb: Added various ConditionVariable tests.
+
+Mon Jan 24 22:26:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * object.c (rb_str_to_dbl): Fix again. use rb_str_tmp_new()
+ instead ALLOC_N.
+
+Mon Jan 24 21:50:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_insnhelper.h: parenthesize macro arguments.
+
+Mon Jan 24 21:28:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * object.c (rb_str_to_dbl): use ALLOC_N instead ALLOCA_N because
+ ALLOC_N may cause stack overflow.
+
+Mon Jan 24 21:04:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_invalid_str): prevent intermediate variable from GC.
+ [ruby-core:34820]
+
+Sun Jan 23 23:01:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/io/console/test_io_console.rb: Don't run test if the system
+ don't support io/console.
+
+Sun Jan 23 22:17:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/fiddle/test_fiddle.rb: Don't run test if the system don't support
+ fiddle.
+
+ * test/fiddle/test_function.rb: ditto.
+ * test/fiddle/test_closure.rb: ditto.
+
+Sun Jan 23 11:39:18 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_exec.h: parenthesize macro arguments.
+
+Sun Jan 23 10:33:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in (ruby): suppress warnings.
+
+Sun Jan 23 08:00:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_nth_len, str_utf8_nth): return the rest length together.
+
+ * string.c (rb_str_substr): get rid of measure the length always
+ to improve performance for huge string. [ruby-core:34648]
+
+Sun Jan 23 00:40:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/test_syslog.rb: Fix to make a lot of test failure if
+ the platform doesn't support syslog.
+
+Sat Jan 22 11:49:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: fixing merge key support
+ when multiple merge keys are specified.
+
+ * test/psych/test_merge_keys.rb: tests for multi-merge key support
+
+Sat Jan 22 11:33:04 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: merge keys are actually
+ part of YAML 1.1, so they should be supported. Remove warning and
+ merge keys to parent. [ruby-core:34679]
+
+ * test/psych/test_merge_keys.rb: test for merge keys
+
+Sat Jan 22 10:25:19 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): add the file name to the exception when
+ parse errors occur.
+
+ * test/psych/test_parser.rb: test for parse error file name
+
+Sat Jan 22 10:12:30 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): fix assertion error when reusing a
+ parser after an exception has been raised
+
+ * test/psych/test_parser.rb: test for assertion error
+
+Sat Jan 22 04:09:22 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/nodes/node.rb: Make Psych::Nodes::Node
+ enumerable.
+
+ * ext/psych/lib/psych/visitors/depth_first.rb: Add a depth-first
+ visitor to enumerate over a YAML AST in a depth-first fashion
+
+ * test/psych/nodes/test_enumerable.rb: test for enumerating nodes
+
+ * test/psych/visitors/test_depth_first.rb: test for depth-first
+ visitor
+
+Sat Jan 22 00:53:42 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_core.h: parenthesize macro arguments.
+
+Fri Jan 21 18:15:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: should not use -Werror=* flags while conftests.
+
+Fri Jan 21 09:17:00 2011 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in: Fix incorrectly detected x86_64-w64-mingw32 due
+ canonalization of target_os. Bug #3889 [ruby-core:32634]
+
+Thu Jan 20 23:44:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Fix rb_cv_va_args_macro was broken. We are using
+ -Werror=implicit-function-declaration compile option. therefore
+ we need a function declaration explicitly.
+
+Thu Jan 20 23:58:02 2011 Tanaka Akira <akr@fsij.org>
+
+ * node.h: parenthesize macro arguments.
+
+Thu Jan 20 23:25:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Add '#include <stdlib.h>' to
+ rb_cv_localtime_overflow test too. It's reported by Tomoyuki
+ Chikanaga. Thanks.
+
+Thu Jan 20 16:11:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * README.EXT, README.EXT.ja: You shouldn't choose ``conftest.c'' as a
+ name of a source file.
+
+Thu Jan 20 12:15:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Add stdlib.h inclusion into rb_cv_negative_time_t
+ test because it's required for exit(3). The patch is
+ created by Tomoyuki Chikanaga. [Bug #4287] [ruby-dev:43060]
+
+Thu Jan 20 11:39:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/webrick/utils.rb (TestWEBrick::RubyBin): test CGI does not need
+ to load rubygems. if it activated, ruby raises LoadError about
+ rbconfig.rb.
+
+Thu Jan 20 09:19:42 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/json_tree.rb: Fix JSON emit for
+ DateTime and Time classes.
+
+ * test/psych/test_json_tree.rb: test for JSON emit
+
+Thu Jan 20 08:02:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/coder.rb (represent_object): arbitrary objects
+ may be passed to the Psych::Coder object.
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: support for visiting
+ arbitrary objects set on the coder.
+
+ * test/psych/test_coder.rb: supporting test case.
+
+Thu Jan 20 06:03:17 2011 Tanaka Akira <akr@fsij.org>
+
+ * method.h: parenthesize macro arguments.
+
+Wed Jan 19 13:16:05 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/sources_command.rb: Finish removing code,
+ (fixes sources command test).
+
+Wed Jan 19 13:04:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * proc.c (proc_call): Add gc guard to avoid segfault. The fix
+ is created by Tomoyuki Chikanaga. [Bug #4238][ruby-dev:42963]
+
+Wed Jan 19 12:31:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Since gem_prelude requires rubygems, enable
+ custom_require always.
+
+Wed Jan 19 12:08:08 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/dependency_command.rb: Remove require of
+ deleted file.
+ * lib/rubygems/commands/fetch_command.rb: ditto
+ * lib/rubygems/commands/setup_command.rb: ditto
+ * lib/rubygems/commands/sources_command.rb: ditto
+ * lib/rubygems/commands/specification_command.rb: ditto
+
+Wed Jan 19 08:13:59 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rubygems*: Import rubygems 1.5.0 (release candidate)
+ * test/rubygems: Ditto
+
+Tue Jan 18 23:31:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y: avoid NULL reference. [ruby-dev:43067]
+
+Wed Jan 19 02:54:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (cvt): set first byte of buf to NUL for the case when
+ no bytes are written to the buf. [ruby-dev:43062]
+
+Tue Jan 18 23:04:51 2011 Tanaka Akira <akr@fsij.org>
+
+ * gc.h: parenthesize macro arguments.
+
+Tue Jan 18 18:31:14 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/completion.rb: Irb tab completion support for XX::method
+ forms.
+
+Tue Jan 18 15:05:55 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: added RDoc document for logging message escape
+ by Hal Brodigan. See #3869
+
+Tue Jan 18 07:53:52 2011 Tanaka Akira <akr@fsij.org>
+
+ * eval_intern.h: parenthesize macro arguments.
+
+Tue Jan 18 04:42:44 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/parser.rb (Mark): Adding a class to wrap
+ marker information
+
+ * ext/psych/parser.c (mark): Add a method to return the mark object
+ for the parser
+
+ * test/psych/test_parser.rb: tests for the Mark class.
+
+Tue Jan 18 02:46:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/json_tree.rb (visit_String): JSON
+ strings should be dumped with double quotes. [ruby-core:34186]
+
+ * test/psych/test_json_tree.rb: test for double quotes
+
+Mon Jan 17 23:36:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * array.c (rb_ary_times): less MEMCPY calls.
+
+Mon Jan 17 22:54:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * debug.h: parenthesize macro arguments.
+
+Mon Jan 17 21:40:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): revert r30549.
+
+Sun Jan 16 20:55:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * vsnprintf.c: parenthesize macro arguments.
+
+Sat Jan 15 11:57:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags): add -Werror=implicit-function-declaration
+ if available.
+
+ * lib/mkmf.rb (init_mkmf): ignore warnings in mkmf tests.
+
+ * test/mkmf/base.rb (setup, teardown): restore config values.
+
+ * test/mkmf/test_flags.rb: split from test_find_executable.rb.
+
+Sat Jan 15 10:04:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): autoload rubygems.
+
+ * tool/compile_prelude.rb (Prelude#initialize): ignore empty
+ preludes.
+
+ * ruby.c (ruby_init_prelude): get rid of global namespace
+ pollution.
+
+Sat Jan 15 09:42:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h: missing prototypes.
+
+Fri Jan 14 23:25:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_method.c: parenthesize macro arguments.
+
+Fri Jan 14 15:32:29 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb: call neither logout nor disconnect
+ unless connected. patch by Kazuhiro NISHIYAMA. [ruby-dev:42860]
+
+Fri Jan 14 14:56:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/imap.rb: use bytesize for binary strings.
+ patched by Yoshimasa Niwa. [ruby-core:34222]
+
+Fri Jan 14 14:01:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_unpack): the resulted string of unpack('M') must have
+ ASCII-8BIT encoding (and ENC_CODERANGE_VALID). [ruby-core:34482]
+
+Fri Jan 14 13:38:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_check_footer): ISIZE (Input SIZE) in
+ gzip's header is the size of uncompressed input data modulo 2^32.
+ [ruby-core:34481] http://www.ietf.org/rfc/rfc1952.txt
+
+Fri Jan 14 11:36:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (RUNRUBY): require path should
+ include "." because rbconfig.rb is there.
+
+Fri Jan 14 10:40:11 2011 Ryan Davis <ryan@lust.local>
+
+ * gem_prelude.rb: Just require rubygems. Fixes rubygems 1.4.
+ * lib/rubygems.rb: removed all Gem::Quickloader code.
+ * ruby.c: renamed ruby_init_gems to ruby_init_prelude. Set
+ $disable_rubygems since there is no fine grained mechanism to
+ skip parts of the prelude. Open to suggestions on how to do this
+ better.
+ * test/*.rb: Load path isn't set up correctly, so add
+ --disable-gems as needed to failing tests that are explicitly
+ testing stderr w/ ==.
+
+Fri Jan 14 07:30:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_next_argv): go advance when the next file cannot be
+ read. [ruby-core:34446]
+
+Thu Jan 13 20:49:19 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_insnhelper.c: parenthesize macro arguments.
+
+Thu Jan 13 13:21:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * vm_dump.c: delete dashes to make lines 80 chars, Patched by
+ Shota Fukumori (sora_h). [Bug #4275] [ruby-dev:43021]
+
+Thu Jan 13 13:21:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * vm_dump.c: fix misspelling of CrashReporter, Patched by Shota
+ Fukumori (sora_h). [Bug #4275] [ruby-dev:43021]
+
+Thu Jan 13 06:27:29 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * error.c: Exception#to_s should actually call to_s.
+
+Thu Jan 13 00:32:54 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c (get_nth_dirname): decrement the directory index
+ because the index specifies the index of given included_directories
+ which is separated by NUL and its index is begun from 1.
+ Note that 0 specifies the current directory of the compilation.
+ see also http://www.dwarfstd.org/doc/dwarf-2.0.0.pdf
+
+Thu Jan 13 00:06:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_f_syscall): Add warning messages. [ruby-core:34062]
+
+Thu Jan 13 00:00:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_f_syscall): Some syscall return unsigned or pointer value.
+ Therefore we should only check the result is -1 or not.
+ [ruby-core:34062]
+
+Wed Jan 12 23:55:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_f_syscall): Add 64bit Linux support. Some syscall takes
+ long type arguments.
+
+Wed Jan 12 19:37:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm_dump.c: parenthesize macro arguments.
+
+Wed Jan 12 19:28:23 2011 Tanaka Akira <akr@fsij.org>
+
+ * vm.c (thread_free): reset ruby_current_thread if it points the
+ thread to free.
+ * gc.c (slot_sweep): don't call RUBY_VM_SET_FINALIZER_INTERRUPT if
+ there is no current thread.
+ [ruby-dev:43000]
+
+Wed Jan 12 19:09:29 2011 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (sort_by_i): reenter check more strictly.
+ (sort_by_cmp): ditto.
+ [ruby-dev:43003] reported by Usaku NAKAMURA.
+
+Wed Jan 12 16:25:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/net/http.rb (Net::HTTP#connect): makes it timeout during
+ SSL handshake too. [ruby-core:34203]
+ Patch by Marc Slemko.
+
+ * test/net/http/test_http.rb (TestNetHTTP_v1_2#test_timeout_during_HTTP_session):
+ test for [ruby-core:34203]
+
+ * test/net/http/test_https.rb (TestNetHTTPS#test_timeout_during_SSL_handshake):
+ ditto.
+
+Wed Jan 12 16:24:53 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/readline/extconf.rb: new checks for RL_PROMPT_START_IGNORE
+ and RL_PROMPT_END_IGNORE. [ruby-core:34331]
+
+ * ext/readline/readline.c: enables USE_INSERT_IGNORE_ESCAPE only if
+ RL_PROMPT_{START,END}_IGNORE are available to get rid of compilation
+ error with libedit.
+
+Wed Jan 12 15:53:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT.ja (rb_ensure): typo.
+
+Wed Jan 12 11:33:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: OpenBSD uses the elf_abi.h header file instead of the
+ elf.h header file. patched by Jeremy Evans [ruby-core:34384]
+
+Wed Jan 12 03:59:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/webrick/test_cgi.rb: Removes usage of deprecated
+ :RequestHandler option.
+ patched by Peter Weldon [ruby-core:34010]
+
+ * test/webrick/test_httpproxy.rb: ditto.
+
+ * test/webrick/test_httpserver.rb: Add a test of the deprecation
+ behaviour.
+
+Wed Jan 12 08:37:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (hash_i): return different values for inverse hash.
+ [ruby-core:34334]
+
+Tue Jan 11 20:32:59 2011 Tanaka Akira <akr@fsij.org>
+
+ * variable.c: parenthesize macro arguments.
+
+Tue Jan 11 13:06:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (rb_ary_resize): should care of embeded array when extending
+ the array.
+
+ * array.c (rb_ary_resize): need to set capa when changing the real
+ size of the array.
+ these are latent bugs.
+
+Mon Jan 10 22:46:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/defines.h (CASEFOLD_FILESYSTEM): HFS+ is case
+ insensitive.
+
+ * load.c (loaded_feature_path, rb_feature_p, load_lock): on a
+ case-insensitive filesystem, loaded features search should
+ ignore case. [ruby-core:34297]
+
+Mon Jan 10 21:34:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (showflags): show LD commands.
+
+Mon Jan 10 14:32:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_method.rb (TestMethod#test_define_method): method
+ transplanting between class and module is impossible.
+
+Mon Jan 10 13:51:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/rdoc-mode.el (rdoc-mode): show trailing whitespace.
+
+Mon Jan 10 11:22:02 2011 Tanaka Akira <akr@fsij.org>
+
+ * util.c: parenthesize macro arguments.
+
+Mon Jan 10 07:41:31 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * misc/README: mention rdoc-mode.el and ruby-style.el.
+
+Sun Jan 9 20:37:21 2011 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c: parenthesize macro arguments.
+
+Sun Jan 9 16:31:53 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * io.c (Kernel.#syscall): implemented on LP64/LLP64 environments too.
+ also uses __syscall if available for *BSD on 64bit architecture.
+ [ruby-core:34062]
+
+Sun Jan 9 16:31:34 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/locale.rb (IRB::Locale::LOCALE_NAME_RE):
+ some platform has a locale without territory but with
+ encoding.
+ (#each_sub_locale): ditto.
+
+Sun Jan 9 14:47:50 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c: apply a patch from Nobuyoshi Nakada.
+ fixed #3616 [ruby-core:31484] IRB + readline incorrectly counts
+ non-printing characters in prompt
+
+Sat Jan 8 21:47:26 2011 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_sort_by): use rb_ary_resize.
+ (ary_cutoff): removed.
+
+Sat Jan 8 21:24:17 2011 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (swapf): compilation condition simplified.
+ (swapd): ditto.
+
+Sat Jan 8 20:51:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (swapd): remove duplicated code.
+
+Sat Jan 8 19:28:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * thread.c: parenthesize macro arguments.
+
+Fri Jan 7 23:07:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): backref needs to capture.
+
+Fri Jan 7 21:57:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-variables), misc/ruby-style.el:
+ show trailing whitespace.
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): highlight
+ regexp after open bracket. [ruby-core:34183]
+
+Fri Jan 7 00:37:35 2011 Tanaka Akira <akr@fsij.org>
+
+ * string.c: parenthesize macro arguments.
+
+Thu Jan 6 22:42:02 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigmul1_karatsuba): avoid overflow that make assertion
+ fail in certain case. this patch is contributed from Ray Chason
+ <chasonr at gmail.com> in personal communication.
+
+Thu Jan 6 20:55:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): ignore rest from first dot from
+ TARGET to generate init function name.
+ this is followup of r30464.
+
+Thu Jan 6 11:27:01 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/tree_builder.rb (start_mapping): tags
+ should not be included in JSON mapping
+
+Thu Jan 6 09:23:33 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/net/protocol.rb (eof?): BufferedIO should proxy eof? to the
+ underlying IO object.
+
+Thu Jan 6 09:12:31 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/mkmf.rb (configuration): fixing gsub when multiple error flags
+ are passed to GCC.
+
+Thu Jan 6 05:25:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_modify): export.
+
+Thu Jan 6 05:14:41 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (get_strio, strio_set_string)
+ (strio_reopen): check if frozen. [ruby-core:33648]
+
+Thu Jan 6 05:10:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_resize): new utility function. [ruby-dev:42912]
+
+Thu Jan 6 05:03:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (init_funcname_len): ignore rest from first dot.
+ [ruby-dev:41774]
+
+Thu Jan 6 02:55:48 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: use YAML 1.0 output
+ format for serializing nil values. Thanks Eric Hodel!
+
+ * test/psych/test_nil.rb: test for nil values
+
+Wed Jan 5 14:21:34 2011 Mark Dodwell <hi@mkdynamic.co.uk>
+
+ * string.c: fix rdoc typo.
+ https://github.com/shyouhei/ruby/pull/3
+
+Wed Jan 5 14:06:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_options.rb (TestRDocOptions#test_check_files):
+ skip on Windows because chmod 0 doesn't mean unreadable by owner.
+
+Wed Jan 5 13:56:54 2011 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/net/http.rb (Net::HTTP#get): A header hash given should not
+ be modified.
+
+Wed Jan 5 12:10:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/dl/{cfunc.c,dl.h,handle.c}, ext/fiddle/fiddle.{h,c}: Use _WIN32
+ rather than checking for windows.h. Thanks Jon Forums!
+ [ruby-core:33977]
+
+Sat Jan 1 17:02:50 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/locale.rb (IRB::Locale#search_file): make it possible
+ to load a localization from a gem.
+ (IRB::Locale#lc_path): obsoleted because of the change of #search_file
+ (IRB::Locale#each_localized_path): new private method, based on
+ lc_path
+ (IRB::Locale#find): follows the change of #search_file.
+ (IRB::Locale#load): removed duplicate with #find.
+
+Sat Jan 1 11:44:42 2011 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c: parenthesize macro arguments.
+
+Sat Jan 1 11:10:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c: take care of platforms where long is bigger
+ than int.
+
+Sat Jan 1 11:03:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS (optparse): shell completion support.
+
+ * misc/README (rb_optparse.{bash,zsh}): for shell completion.
+
+ * include/ruby/intern.h (VALUE rb_ary_print_on): I have never seen
+ this function anywhere.
+
+Sat Jan 1 04:20:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_write_console): don't raise exception when
+ the conversion is for writing to console.
+ Patched by Heesob Park [ruby-core:33999]
+
+Fri Dec 31 12:02:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_sort_by): use less temporary objects.
+
+Fri Dec 31 11:46:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags), lib/mkmf.rb (configuration): turn
+ warnings into errors only for bundled extensions.
+ [ruby-core:33815]
+
+Fri Dec 31 11:15:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (sizeof): zlib.h mistakenly assumes the result
+ of sizeof to be int, not size_t.
+
+Fri Dec 31 10:27:34 2010 Tanaka Akira <akr@fsij.org>
+
+ * st.c: parenthesize macro arguments.
+
+Fri Dec 31 03:23:26 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD__uqtoa): Fix overflow when long != quad_t.
+ patched by Peter Weldon <peter.weldon AT null.net>
+ [ruby-core:33985]
+
+Fri Dec 31 03:00:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * Makefile.in: remove unnecessary semicolons.
+
+Thu Dec 30 23:09:47 2010 wanabe <s.wanabe@gmail.com>
+
+ * vm.c (vm_define_method): guard iseq from GC while method definition.
+ [ruby-dev:42832]
+
+Thu Dec 30 20:18:32 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/Makefile.sub: ditto.
+
+Thu Dec 30 20:57:09 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * Makefile.in: Check V=1 argument if run "make clean" or similar.
+
+Thu Dec 30 20:41:50 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * Makefile.in: Kill ugly line continuation.
+
+Thu Dec 30 11:49:40 2010 Tanaka Akira <akr@fsij.org>
+
+ * sprintf.c: parenthesize macro arguments.
+
+Wed Dec 29 21:20:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (maygvl_copy_stream_wait_readwrite): define if USE_SENDFILE
+
+Wed Dec 29 20:37:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: strip current directory prefix.
+
+ * enc/depend (clean): remove name2ctype.h when out-of-place build.
+
+ * win32/Makefile.sub (clean-enc): pass V to inferior make.
+
+Wed Dec 29 18:23:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): need to escape if the coderange is invalid.
+
+Wed Dec 29 10:06:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * signal.c: parenthesize macro arguments.
+
+Wed Dec 29 07:22:15 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake/rdoctask.rb: Deprecate in favor of rdoc/task.
+
+Wed Dec 29 07:07:06 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 3.1
+
+Tue Dec 28 18:36:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c, include/ruby/intern.h (rb_compile_error_with_enc): new
+ function to raise syntax error, with source encoding'ed message.
+
+ * parse.y (compile_error): use above function.
+ [ruby-core:33951] (#4217)
+
+Tue Dec 28 07:37:38 2010 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c: parenthesize macro arguments.
+
+Tue Dec 28 07:17:11 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add ARGF.write and so on.
+
+Tue Dec 28 07:12:38 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add new magic-comment. (warn-indent) [ruby-core:25442]
+
+Tue Dec 28 04:32:37 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/extconf.rb: check for windows.h while building fiddle.
+ Thanks Jon Forums! [ruby-core:33923]
+
+Tue Dec 28 01:45:12 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: Add Zlib.deflate and Zlib.inflate.
+ [ruby-dev:42833]
+
+Mon Dec 27 21:22:33 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/configure.bat: Remove obsoleted coding rule. Now, we
+ don't support to build on Windows 95/98 and Me.
+
+Mon Dec 27 18:27:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * re.c: parenthesize macro arguments.
+
+Mon Dec 27 15:22:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/README.win32: note to need NT based OS to build ruby.
+
+Mon Dec 27 12:14:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (EXTMK_ARGS): specify to pass macro V, because nmake
+ doesn't pass it via MAKEFLAGS.
+
+Mon Dec 27 10:33:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/zlib/zlib.c (Init_zlib): Add Zlib.deflate and Zlib.inflate.
+ [ruby-dev:42833]
+
+Mon Dec 27 07:38:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * misc/rb_optparse.zsh: add compdef for generator.
+
+Mon Dec 27 07:32:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/optparse.rb (OptionParser#compsys): escape brackets too.
+ [ruby-dev:42754]
+
+Mon Dec 27 01:30:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: add IF_NAMESIZE.
+ add a default for INET6_ADDRSTRLEN.
+
+Sun Dec 26 23:49:47 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * win32/Makefile.sub: suppress a strange error message when RMALL
+ found no such file.
+ * win32/rmall.bat: new.
+
+Sun Dec 26 21:23:23 2010 <kosaki.motohiro@gmail.com>
+
+ * win32/Makefile.sub: fix 'nmake clean-enc' breakage since r28322.
+
+Sun Dec 26 22:25:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/depend (ripper.y): fix messages with nmake.
+ [ruby-dev:42896]
+
+Sun Dec 26 22:24:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): get rid of warnings caused by
+ -Wdeclaration-after-statement on cygwin.
+
+Sun Dec 26 20:28:34 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (before_exec): add small comment.
+
+Sun Dec 26 20:52:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: define INET_ADDRSTRLEN as 16 if not
+ available. fix compilation error on mswin32-60. reported by nobu.
+
+Sun Dec 26 19:37:37 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c: define IFNAMSIZ if not available.
+ fix compilation error on mingw32. reported by nobu.
+
+Sun Dec 26 12:16:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths::HOMEDIR): no exception if
+ HOME is not set. [ruby-core:33867]
+
+Sun Dec 26 11:39:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): missing ripper rule. i.e., `a::B ||= c 1'.
+ http://twitter.com/#!/wannabe53/status/18797576396472321
+ http://twitter.com/#!/wannabe53/status/18798416150663168
+
+Sun Dec 26 11:15:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/with_different_ofs.rb (DifferentOFS): should not affect
+ original classes.
+
+Sun Dec 26 09:35:07 2010 Tanaka Akira <akr@fsij.org>
+
+ * rational.c: parenthesize macro arguments.
+
+Sun Dec 26 09:22:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (rb_if_indextoname): new function to abstract
+ environments without if_indextoname.
+ (inspect_ipv6_multicast_if): new function to inspect
+ IPV6_MULTICAST_IF.
+ Socket::Option.new(:INET6, :IPV6, :MULTICAST_IF,
+ [2].pack("I!")).inspect is
+ "#<Socket::Option: INET6 IPV6 MULTICAST_IF eth0>".
+
+Sun Dec 26 04:31:15 2010 Luis Lavena <luislavena@gmail.com>
+
+ * ext/dl/win32/registry.rb: Corrected RegCreateKeyExA signature.
+ Patch by Rafal Michalski [ruby-core:33874] [Ruby 1.9-Bug#4203]
+
+Sun Dec 26 02:31:58 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (advice_arg_check): Change argument check.
+ Now, an unsupported advice makes NotImplementedError.
+ [ruby-dev:42887] [Ruby 1.9-Feature#4204]
+
+Sun Dec 26 03:00:53 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/extconf.rb: Fix build error which was introduced r30372.
+
+Sun Dec 26 01:37:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: check the existence of if_indextoname().
+
+ * ext/socket/option.c: yesterday's akr's commits destroyed the build of
+ some unrelated platforms (such as Windows).
+
+Sat Dec 25 23:29:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_ipv4_add_drop_membership): new function
+ to inspect struct ip_mreq and struct ip_mreqn for
+ IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
+ Socket::Option.new(:INET, :IP, :ADD_MEMBERSHIP,
+ [239,255,99,81, 0,0,0,0].pack("CCCCCCCC")).inspect is now
+ "#<Socket::Option: INET IP ADD_MEMBERSHIP 239.255.99.81 0.0.0.0>".
+ (inspect_ipv4_multicast_if): new function to inspect struct in_addr
+ and struct ip_mreqn for IP_MULTICAST_IF.
+ Socket::Option.new(:INET, :IP, :MULTICAST_IF,
+ [192,168,0,7].pack("CCCC")).inspect is now
+ "#<Socket::Option: INET IP MULTICAST_IF 192.168.0.7>".
+
+ * ext/socket/extconf.rb: check struct ip_mreq and struct ip_mreqn.
+
+Sat Dec 25 22:49:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/csv: DifferentOFS needs to be include in each classes.
+
+ * test/digest/test_digest_extend.rb (TestDigestExtend#setup):
+ should not depend on the result of previous tests
+
+ * test/with_different_ofs.rb (DifferentOFS::WithDifferentOFS): give
+ name.
+
+ * test/with_different_ofs.rb (DifferentOFS): test suite for test
+ suites affected by $,.
+
+ * test/digest/test_digest_extend.rb (TestDigestExtend): should not
+ assume $, invariant.
+
+ * test/csv/test_data_converters.rb, test/csv/test_table.rb: don't
+ call setup within tests.
+
+Sat Dec 25 20:01:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (pipe_open): Added rb_thread_atfork(). We must reinitialize
+ GVL at new process creation.
+
+Sat Dec 25 18:26:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_ipv6_mreq): new function to inspect
+ struct ipv6_mreq for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP.
+ Socket::Option.new(:INET6, :IPV6, :JOIN_GROUP,
+ [0xff12,0,0,0,0,0,0,1, 2].pack("nnnnnnnnI!")).inspect is now
+ "#<Socket::Option: INET6 IPV6 JOIN_GROUP ff12::1 eth0>".
+
+ * ext/socket/extconf.rb: check struct ipv6_mreq.
+
+Sat Dec 25 18:04:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/csv.rb (CSV.foreach): 'rb' mode is defaulted in open.
+
+ * lib/csv.rb (CSV#init_separators): cannonicalize encoding options
+ as Encoding objects.
+
+Sat Dec 25 18:30:34 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_atfork): Add small comment why we need
+ reset random seed.
+
+Sat Dec 25 17:33:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/csv/base.rb (TestCSV.with_different_ofs): give name to
+ anonymous classes.
+
+ * lib/csv.rb (CSV#init_separators): use IO#gets with length
+ parameter to get rid of wrong convertion.
+
+ * lib/csv.rb (CSV::foreach, CSV#initialize): directly use encoding
+
+ * lib/csv.rb, test/csv: should not assume $, invariant.
+
+Sat Dec 25 16:08:06 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c: change rb_atomic_t definition from uchar to uint.
+
+Sat Dec 25 15:04:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/csv/test_encodings.rb (TestEncodings#setup): fix evil test
+ suite writing to the source directory.
+
+Sat Dec 25 15:08:08 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/pty/pty.c (chfunc): Added rb_thread_atfork_before_exec().
+ We must reinitialize GVL at new process creation. Otherwise
+ we may meet an insane deadlock. [Bug#4121][ruby-dev:42686]
+
+Sat Dec 25 14:27:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_extract_encoding_option): accept Encoding object as
+ encoding: optional argument. [ruby-dev:42884]
+
+Sat Dec 25 13:37:55 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 2.0.2 r6093.
+
+Sat Dec 25 13:05:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * random.c: parenthesize macro arguments.
+
+Sat Dec 25 12:48:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_f_require_relative): don't omit return type.
+
+Sat Dec 25 11:06:00 2010 Eric Hodel <drbrain@segment7.net>
+
+ * load.c (rb_f_require_relative): Add documentation.
+
+Sat Dec 25 11:02:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzreader_gets): support optional length
+ parameter.
+
+ * ext/zlib/zlib.c (gzfile_read, gzfile_readpartial): length should
+ be long.
+
+Sat Dec 25 10:51:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/generator/generator.{c,h} (fbuffer_free_only_buffer):
+ unused.
+
+ * ext/openssl/ossl_pkcs5.c (ossl_pkcs5_pbkdf2_hmac): add casts.
+
+Fri Dec 24 08:46:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * process.c: parenthesize macro arguments.
+
+Thu Dec 23 19:17:14 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/net/imap/cacert.pem: updated because it has been expired.
+
+ * test/net/imap/server.crt: signed again because CA cert was expired.
+
+Thu Dec 23 11:16:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * parse.y: parenthesize macro arguments.
+
+Thu Dec 23 11:00:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_type): check for type from extensions for ruby
+ 1.8. see [ruby-core:33797].
+
+Thu Dec 23 08:12:59 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/net/smtp.rb: refactoring Net::SMTP#esmtp= to use an
+ attr_accessor
+
+Thu Dec 23 06:35:41 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/net/smtp.rb: Net::SMTP should close the SSL connection if the
+ connection verification fails.
+
+Thu Dec 23 01:47:58 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: remove #object_id. [ruby-dev:42840]
+
+Wed Dec 22 08:56:39 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add Module#private_constant and Module#public_constant.
+ [ruby-dev:39685][ruby-core:32698]
+
+Wed Dec 22 07:59:23 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add IO#advise. [ruby-core:33110] [Ruby 1.9-Feature#4038]
+
+Tue Dec 21 23:45:31 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (Init_GC): move back object_id to Kernel. [ruby-dev:42840]
+
+Tue Dec 21 12:45:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (target_archs): remove temporary objects.
+
+ * enc/Makefile.in, enc/depend (clean): remove work directories.
+
+Tue Dec 21 07:39:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: parenthesize macro arguments.
+
+Tue Dec 21 06:25:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rexml/test_contrib.rb (ContribTester#test_pos): should not
+ use fixed path name for tests. [ruby-dev:42827]
+
+ * test/rexml/test_sax.rb (SAX2Tester#test_socket): should not use
+ fixed port for tests. [ruby-dev:42828]
+
+Tue Dec 21 06:10:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (setup_args), vm.c (invoke_block_from_c),
+ vm_insnhelper.c (caller_setup_args): reverted r30241 and r30243
+ except for the test.
+
+Tue Dec 21 01:41:42 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * io.c : add an extra byte to buffer for the specification of read
+ in Windows. see [ruby-core:33460] and r29980. and, we have to
+ discuss how to do this one byte.
+
+Tue Dec 21 01:18:06 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * error.c: Fix build error for win32. This regression was
+ introduced by r30271.
+
+Tue Dec 21 00:59:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_cleanup_func): Moved interrupted_lock
+ destroying code from native_thread_destroy() to
+ thread_cleanup_func() because it's platform independent logic.
+
+ * thread_win32.c (native_thread_destroy): ditto.
+ * thread_pthread.c (native_thread_destroy): ditto.
+
+Tue Dec 21 00:46:20 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_cleanup_func): Don't touch native threading
+ resource at fork. Sadly this is purely bandaid. We need to
+ implement proper fix later. [Bug #4169] [ruby-core:33767]
+
+Tue Dec 21 00:22:44 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * error.c (exit_success_p): Check status code more carefully.
+ status code may have garbage in upper bit.
+
+Mon Dec 20 23:12:37 2010 Tanaka Akira <akr@fsij.org>
+
+ * node.c: parenthesize macro arguments.
+
+Mon Dec 20 20:04:41 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add #__id__ and #object_id. [ruby-dev:42778]
+
+Mon Dec 20 20:03:21 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_thread_destroy): Fixed gvl_cond leak.
+
+Mon Dec 20 13:49:05 2010 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS: Add item for RDoc 3.0.1
+
+ * lib/rdoc: Import RDoc 3.0.1, remove require for perl parser.
+
+Mon Dec 20 12:15:32 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 3.0.
+
+Mon Dec 20 01:55:03 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (Init_IO): Added O_DIRECT. This feature was proposed by
+ Run Paint Run Run.
+ [Feature #4015] [ruby-core:33018]
+
+Sun Dec 19 19:15:23 2010 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c: parenthesize macro arguments.
+
+Sat Dec 18 21:52:37 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * vsnprintf.c (BSD_vfprintf): suppress warning: "_WIN32" is not
+ defined.
+
+Sat Dec 18 16:02:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (setup_args), vm.c (invoke_block_from_c),
+ vm_insnhelper.c (caller_setup_args): fix of r30241. lambda block
+ should check argument number.
+
+Sat Dec 18 14:42:29 2010 Tanaka Akira <akr@fsij.org>
+
+ * load.c: parenthesize macro arguments.
+
+Sat Dec 18 10:07:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (setup_args, iseq_compile_each): optimize AMPER LAMBDA
+ combination as block.
+
+Fri Dec 17 22:07:16 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (Init_GC): move #__id__ and #object_id to BasicObject.
+ [ruby-dev:42778]
+
+Fri Dec 17 19:35:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/base.rb (TestMkmf::FakeLog): capture output from mkmf.
+
+ * test/mkmf/test_find_executable.rb (test_find_executable):
+ suppress meaningless differences for chkbuild.
+
+Fri Dec 17 13:26:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak (BASERUBY): quit with an error when BASERUBY was not
+ able to set, just like configure.in does. [ruby-dev:42782]
+
+Fri Dec 17 07:04:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * iseq.c: parenthesize macro arguments.
+
+Fri Dec 17 04:18:37 2010 Eric Hodel <drbrain@segment7.net>
+
+ * transcode.c (str_encode): Alter comment for better wording and ri
+ output.
+
+Fri Dec 17 00:05:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_advise): New API. IO#advise() allows to tell the
+ ruby runtime how it expects to use a file handle. This feature
+ can be improved a performance some situations.
+ Note: This feature is mainly developed by Run Paint Run Run.
+ Thank you! [ruby-core:33110] [Ruby 1.9-Feature#4038]
+
+ * io.c (do_io_advise): Helper function.
+ * io.c (io_advise_sym_to_const): ditto.
+
+Thu Dec 16 23:29:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (bin-comm): use transformed name.
+ [ruby-dev:42777]
+
+Thu Dec 16 21:52:07 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c: parenthesize macro arguments.
+
+Thu Dec 16 21:46:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb (RbConfig): honor ARCHFLAGS and RC_ARCHS to
+ override embedded ARCH_FLAG value on universal-darwin.
+
+Thu Dec 16 19:50:12 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{configure.bat,setup.mak,Makefile.sub} (PROGRAM_PREFIX,
+ PROGRAM_SUFFIX): unite the differences of the names of macros of
+ prefix and suffix.
+ reported by HANEDA Norikatsu. [ruby-dev:42775]
+
+Thu Dec 16 08:04:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (RNode): match the type of flags to RBasic, and renamed
+ nd_file as nd_reserved.
+
+ * iseq.c (set_relation), vm_insnhelper.c (vm_cref_push): nd_file
+ is always zero-cleared.
+
+Thu Dec 16 07:22:30 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/unit.rb: Imported minitest 2.0.1 r6079.
+
+Wed Dec 15 20:45:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (process_args): need to setup @help to print options.
+
+Wed Dec 15 11:19:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/zlib/test_zlib.rb (test_to_io): forgotten to fix with r30201.
+
+Wed Dec 15 11:07:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (simple_sendfile): enable on Mac OS X.
+
+ * io.c (nogvl_copy_stream_sendfile): moved precheck of copy length.
+
+ * io.c (nogvl_copy_stream_sendfile): should wait for both of
+ read/write fds.
+
+Wed Dec 15 07:11:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * hash.c: parenthesize macro arguments.
+
+Wed Dec 15 04:02:00 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_set_config):
+ fix compile error when !HAVE_X509V3_SET_NCONF. Thanks
+ Chikanaga-san. [ruby-dev:42761] [Ruby 1.9-Bug#4158]
+
+Wed Dec 15 03:41:31 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ripper/test_parser_events.rb (TestRipper#test_block_variables):
+ Limit address space 100MB instead 100KB. Quite frankly, This
+ margin is too narrow to contain ruby. [ruby-dev:42763] [Bug#4159]
+
+Tue Dec 14 23:53:52 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (simple_sendfile): improve linux compatibility on FreeBSD,
+ and now it works. But without cpuset -l 0, it still gets stuck.
+
+Tue Dec 14 20:31:33 2010 Tanaka Akira <akr@fsij.org>
+
+ * gc.c: parenthesize macro arguments.
+
+Tue Dec 14 18:31:48 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb: help messages.
+
+Tue Dec 14 18:19:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (help): there is no reason to use the abbreviation for here.
+
+Tue Dec 14 15:03:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (test_reopen, test_reinitialize): should close
+ the temporary files.
+
+Tue Dec 14 14:24:15 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (make_tempfile): change the prefix from 'foo'
+ to 'test_io' because the old one is meaningless and inconvenient.
+
+ * test/ruby/test_io.rb (test_binmode_after_closed): the temporary file
+ maked by make_temfile is already closed.
+
+Tue Dec 14 13:52:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (test_flush_in_finalizer[12]): should close
+ temporary file because it's only used for taking pathname and
+ unlinking the file after the end of the test (in GC phase).
+
+Tue Dec 14 13:34:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_s_open): should close the IO if some error
+ occurs in initializing.
+
+Tue Dec 14 13:04:16 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPRequest#send_request_body_data):
+ set binmode to tempfile.
+
+Tue Dec 14 12:55:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/zlib/test_zlib.rb (*): should close files associated with zlib.
+
+Tue Dec 14 11:30:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_argf.rb (test_inplace_rename_impossible): unlink
+ the renamed temporary file on no_safe_rename platforms.
+
+ * test/ruby/test_argf.rb (test_readlines_limit_0,
+ test_each_line_limit_0): should close argf because the associated
+ Tempfile object cannot unlink the temporary file when it's gc'ed
+ on some platforms (Windows, etc.)
+
+Tue Dec 14 11:27:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/minitest/unit.rb (Minitest::Unit#_run_suite): split test
+ name and its time. Thiw allows to know test's name when you are
+ running tests and meet a test which spends long time at realtime.
+
+Tue Dec 14 11:25:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: Add -Werror=declaration-after-statement to default
+ warning flag. If you are using GCC, this flag is useful to
+ prevent breaking VC build.
+
+Tue Dec 14 10:25:57 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): how many gcc-c99isms
+ must a man mend; before he can build with VC? r30178
+
+Mon Dec 13 21:26:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (simple_sendfile): disable the use of sendfile(2) on
+ FreeBSD. It blocks on TestIO#test_copy_stream_socket.
+
+Mon Dec 13 18:35:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c: define USE_SENDFILE on FreeBSD or DragonFly BSD.
+ Remove Mac OS X because its argument is different from them.
+
+Mon Dec 13 12:00:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c: parenthesize macro arguments.
+
+Mon Dec 13 11:21:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (simple_sendfile): added for BSD version of sendfile(2).
+
+Mon Dec 13 09:50:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPRequest#set_form): Added to support
+ both application/x-www-form-urlencoded and multipart/form-data.
+ There is a similar API, Net::HTTPRequest#set_form_data, but
+ to keep its compatibility this is newly added. [ruby-dev:42729]
+
+Sun Dec 12 23:45:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): fix for __goto__ and __label__
+ where were totally broken.
+
+Sun Dec 12 22:45:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ID_H_INCLUDES): now id.h depends on vm_opts.h.
+
+Sun Dec 12 20:42:47 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * template/id.h.tmpl: suppress all warning: "SUPPORT_JOKE" is not
+ defined. [ruby-dev:42730]
+
+Sun Dec 12 20:35:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * misc/rb_optparse.zsh: update how to install.
+
+ * misc/rb_optparse.zsh: avoid error when setopt noclobber.
+
+ * lib/optparse.rb: fix typo. pointed out at
+ <http://d.hatena.ne.jp/nagachika/20101207>.
+
+Sun Dec 12 13:27:35 2010 Tanaka Akira <akr@fsij.org>
+
+ * eval_error.c: parenthesize macro arguments.
+
+Sun Dec 12 11:53:24 2010 Tanaka Akira <akr@fsij.org>
+
+ * error.c: parenthesize macro arguments.
+
+Sun Dec 12 04:01:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): fix: extra back slash is added when
+ the string is dummy encoding and includes \x22 or \x5C.
+
+Sun Dec 12 02:42:24 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/openssl/ossl_asn1.c: indefinite length BER to DER encoding is
+ properly supported. Thanks Martin Bosslet! [ruby-core:33082]
+
+Sat Dec 11 17:43:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/bigdecimal/bigdecimal.h: suppress "warning: 'VPrint' declared
+ 'static' but never defined".
+
+Sat Dec 11 09:24:57 2010 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c: parenthesize macro arguments.
+
+Sat Dec 11 08:12:48 2010 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl.c, ext/openssl/ossl_pkey_rsa.c: Document RSA, RSA
+ encryption/decryption and PKCS #5 encryption/decryption.
+
+Sat Dec 11 06:23:41 2010 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_x509name.c: include Comparable to provide #==.
+ Document OpenSSL::X509::Name#<=>. [Ruby 1.9-Feature#4116]
+
+Sat Dec 11 05:48:28 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: infinite loop on method_missing at loading.
+ [ruby-dev:42716] [Ruby 1.9-Bug#4129]
+
+ * ext/tk/lib/multi-tk.rb: when no eventloop is running, ruby freezes at
+ exit.
+
+Sat Dec 11 02:23:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/openssl/extconf.rb: try pkgconfig first, then fall back to
+ normal have_library, etc. Thanks Erik Hollensbe. [ruby-core:32406]
+
+Fri Dec 10 22:33:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * dln_find.c: parenthesize macro arguments.
+
+Fri Dec 10 20:05:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl (ruby_method_ids): suppress warnings.
+ [ruby-dev:42730]
+
+Fri Dec 10 18:29:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): relatively called non-shared
+ binary cannot be found in PATH, so use given pathname.
+
+Fri Dec 10 18:28:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (SCRIPTPROGRAMS): ignore backup files and etc.
+
+ * cygwin/GNUmakefile.in (scriptbin): set executable bit.
+
+ * tool/rbinstall.rb (install_recursive): always skip default ignored
+ files. if block is given, call it instead of calling install.
+
+ * tool/rbinstall.rb (bin-comm): use install_recursive.
+
+Fri Dec 10 18:12:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/base.rb (TestMkmf#config_value): extract macro value from
+ config.h.
+
+ * test/mkmf/test_sizeof.rb (TestMkmf::TestSizeof#test_sizeof_builtin),
+ (TestMkmf::TestSizeof#test_sizeof_struct): more tests.
+
+ * lib/mkmf.rb (check_signedness): should use the prelude code.
+ [ruby-dev:42731]
+
+ * lib/mkmf.rb (Logging.log_close): separate from Logging.logfile.
+
+ * test/mkmf/base.rb (TestMkmf::MKMFLOG): show mkmf.log at failures.
+
+ * test/mkmf/base.rb (TestMkmf#teardown): close log file for each tests.
+
+Fri Dec 10 11:36:43 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * compile.c (enum): remove a comma at end of enumerator list.
+
+ * constant.h (rb_const_flag_t): ditto.
+
+ * iseq.h (enum catch_type): ditto.
+
+ * iseq.h (enum defined_type): ditto.
+
+ * vm_core.h (enum iseq_type): ditto.
+
+ * vm_core.h (enum vm_special_object_type): ditto.
+
+Fri Dec 10 10:47:53 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c (_HAVE_SANE_QUAD_): Don't forget LP64, r30156.
+
+Fri Dec 10 10:37:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (_HAVE_SANE_QUAD_): if a certain platform has LONG_LONG in
+ 8 byte, it might be sane quad. [ruby-core:33634]
+
+Fri Dec 10 10:07:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: remove version 1.1 features.
+
+Fri Dec 10 02:18:02 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_cleanup): removing C
+ implementation of `cleanup`.
+
+ * ext/openssl/lib/openssl/x509.rb: adding ruby implementation of
+ `cleanup`. OpenSSL::X509::StoreContext#cleanup is deprecated since
+ reusing the underlying struct doesn't make sense. [ruby-dev:42546]
+
+Thu Dec 9 20:14:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lvar_defined_gen, shadowing_lvar_gen, dvar_defined): no
+ warnings for unused method and block arguments.
+ [ruby-dev:42718] [ruby-dev:42724]
+
+Thu Dec 9 19:25:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * dln.c: parenthesize macro arguments.
+
+Thu Dec 9 18:51:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/webrick/accesslog.rb (WEBrick::AccessLog#format): support
+ %{remote}p for logging remote (client) port number.
+ [ruby-dev:42670]
+
+Thu Dec 9 11:00:30 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_dup): should copy contents only. no instance
+ variable, no class would be copied. it would affect methods
+ #sort, #reject, #transpose, #uniq, #compact, and #shuffle.
+ [ruby-core:33640]
+
+ * array.c (rb_ary_reverse_m): ditto.
+
+ * array.c (rb_ary_rotate_m): ditto.
+
+Wed Dec 8 21:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl/lib/dl/struct.rb: clean a warning: assigned but unused
+ variable. patched by Kouhei Yanagita. [ruby-dev:42722]
+
+ * ext/dl/lib/dl/import.rb: ditto.
+
+Wed Dec 8 21:36:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (shadowing_lvar_gen): fix line number. [ruby-dev:42718]
+
+Wed Dec 8 20:37:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * dir.c: parenthesize macro arguments.
+
+Tue Dec 7 22:37:15 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * io.c (io_read): duplicate string if shared. [ruby-dev:42719]
+
+Tue Dec 7 22:31:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Officious): separate completion
+ options from --help. [ruby-dev:42690]
+
+ * lib/optparse.rb (OptionParser::Completion#candidate),
+ (OptionParser::Switch#compsys): remove unused variables.
+
+Tue Dec 7 22:05:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_loop): call default handler of the given
+ hash, method, proc or [] method as fallback. [ruby-dev:42692]
+
+Tue Dec 7 21:59:37 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/light/node.rb: remove circular require.
+
+Tue Dec 7 21:56:01 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_light.rb: really suppress a warning.
+
+Tue Dec 7 21:51:57 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_light.rb: suppress a warning.
+
+Tue Dec 7 21:14:03 2010 Tanaka Akira <akr@fsij.org>
+
+ * debug.c: parenthesize macro arguments.
+
+Tue Dec 7 21:06:38 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/doctype.rb, test/rexml/test_doctype.rb: suppress warnings.
+ [ruby-core:33305]
+ Reported by Aaron Patterson. Thanks!!!
+
+Tue Dec 7 18:56:52 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (String#kconv): fix typo and update rdoc.
+ patched by Kouhei Yanagita [ruby-dev:42696]
+
+Tue Dec 7 20:32:11 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_doctype.rb: add Accessor to test case name.
+
+Tue Dec 7 20:31:02 2010 Kouhei Sutou <kou@clear-code.com>
+
+ * test/rexml/test_doctype.rb: Doctype -> DocType.
+
+Tue Dec 7 20:29:23 2010 Kouhei Sutou <kou@clear-code.com>
+
+ * test/rexml/test_doctype_mixin.rb: rename to ...
+ * test/rexml/test_doctype.rb: ... this to remove needless name.
+
+Tue Dec 7 17:03:16 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (xlist): supported the XLIST command, which is an
+ extension by Apple and Google. patch by Geoff Youngs.
+ [ruby-core:33521]
+
+Tue Dec 7 08:00:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (WERRORFLAG): flag to treat
+ warnings as errors.
+
+ * lib/mkmf.rb (Logging.postpone): yield log file object.
+
+ * lib/mkmf.rb (xsystem): add options, :werror only right now.
+
+ * lib/mkmf.rb (with_werror): check as if warnings are errors.
+
+ * lib/mkmf.rb (convertible_int): make declaration conflict
+ warnings errors not to pass wrong type. [ruby-dev:42684]
+
+ * lib/mkmf.rb (COMMON_MACROS): get rid of conflicts.
+
+ * win32/Makefile.sub (WARNFLAGS): make declaration conflict
+ warnings errors if possible.
+
+Sun Dec 7 21:16:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * cont.c: parenthesize macro arguments.
+
+Tue Dec 7 00:27:14 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * win32/win32.c (rb_w32_read): fixed more for readline,
+ and so on. [ruby-core:33511]
+
+Mon Dec 6 23:18:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/base.rb (TestMkmf#setup): run quietly.
+
+ * test/mkmf/test_find_executable.rb (test_find_executable): use
+ configured results.
+
+ * common.mk (test-build): test for build process.
+
+Mon Dec 6 22:47:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#candidate): skip separators.
+
+ * sample/optparse/opttest.rb: should not override --help.
+ [ruby-dev:42690]
+
+Mon Dec 6 19:00:48 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * misc/rb_optparse.zsh: fix typos.
+
+Mon Dec 6 18:59:04 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add new encodings.
+
+Mon Dec 6 18:56:42 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_string.rb (TestString#test_scan): add a test for
+ [ruby-core:33338] #4087.
+
+Mon Dec 6 18:55:36 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/uri/test_common.rb (TestCommon#test_encode_www_form): add
+ tests for r30015.
+
+Mon Dec 6 10:39:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::Parser#initialize_pattern):
+ refix for restrict the pattern.
+
+Mon Dec 6 09:45:11 2010 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl (OpenSSL): add toplevel documentation
+ * ext/openssl/ossl_ssl.c (SSLContext, SSLSocket: add additional
+ documentation
+ * ext/openssl: move "let rdoc know about mOSSL" comments so they don't
+ show up in output
+
+Mon Dec 6 09:16:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::Parser#initialize_pattern):
+ workaround fix pattern of hostname for RFC 3986. [ruby-dev:42672]
+
+Mon Dec 6 09:14:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/mkmf.rb (check_signedness): rename unused variable prelude.
+
+Sun Dec 5 17:56:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (make_metaclass): fix probable typo. builtin type flag
+ cannot be used with FL_TEST.
+
+Sun Dec 5 12:09:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/init.rb (IRB.parse_opts): fix typo. [ruby-core:33574]
+
+Sun Dec 5 11:27:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): decrement for ungotten line.
+ [ruby-dev:42680]
+
+Sun Dec 5 10:32:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * complex.c: parenthesize macro arguments.
+
+Sat Dec 4 11:39:17 2010 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_x509ext.c (initialize): add documentation.
+
+Sat Dec 4 11:21:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_update_by): new API for Hash#update.
+
+Sat Dec 4 11:18:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * class.c: parenthesize macro arguments.
+
+Sat Dec 4 11:07:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_vm_inc_const_missing_count): missing prototype.
+
+Sat Dec 4 08:50:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (Init_iconv): no warnings if $VERBOSE is nil.
+
+Sat Dec 4 08:25:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): revert r30064 and r30071,
+ because of [ruby-core:26761]. Bug#4106 rejected.
+
+Sat Dec 4 07:46:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (String#tr_cpp): substitute * with P like as
+ autoconf.
+
+Fri Dec 3 22:36:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): protected methods should be
+ checked against the real class.
+
+Fri Dec 3 20:23:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (convertible_int): define printf format prefix too.
+
+ * lib/mkmf.rb (convertible_int): detect convertible integer type.
+ port RUBY_REPLACE_INT from configure.in.
+
+ * lib/mkmf.rb (check_sizeof): should return integer always.
+
+Fri Dec 3 12:54:48 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (RCFLAGS): VC10 and after only. fixed the problem
+ of r30015. [ruby-core:33530]
+
+Fri Dec 3 12:41:52 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * gc.c (rb_objspace_free): With our "lazy-sweep" GC engine, it is
+ possible for an object to survive until its surrounding object
+ space is about to be freed. Those objects, if any, remains
+ leaked for the rest of a process life. This is problematic
+ because for instance a T_DATA object may have its own destructor
+ to terminate something.
+
+ * vm.c (ruby_vm_destruct): ruby_current_vm termination should be
+ somewhere after rb_objspace_free for above reason.
+
+Fri Dec 3 12:17:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): protected singleton methods should
+ be visible from same real class methods. [ruby-core:33506]
+
+Fri Dec 3 07:08:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_getline): round upto next char
+ boundary. [ruby-dev:42674]
+
+Fri Dec 3 06:52:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * compile.c: parenthesize macro arguments.
+
+Fri Dec 3 04:08:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_alias_internal): use st_insert2 and change return
+ value to int.
+
+ * encoding.c (enc_alias): follow enc_alias_internal.
+
+Fri Dec 3 01:52:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_alias_internal): use xfree instead of free.
+
+Thu Dec 2 23:52:26 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * NEWS: entry for ruby_vm_at_exit().
+
+ * eval.c (ruby_cleanup): bug fix around at_exit (1) timing was
+ wrong. (2) execution order was opposite.
+
+Thu Dec 2 23:05:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (RCFLAGS): -nologo switch is only available in
+ newer versions of rc.exe. fixed the problem of r30012.
+
+Thu Dec 2 21:28:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/add/rails.rb: removed.
+
+Thu Dec 2 21:22:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_alias_internal): free the copied key and
+ return NULL when given key is already registered.
+
+ * encoding.c (enc_alias): call set_encoding_const only when the
+ alias is not registered yet.
+
+Thu Dec 2 19:58:24 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm.c (ruby_vm_at_exit): new API. This enables extension libs to
+ hook a VM termination. Right now, because the VM we have is
+ process global, most extensions do not deallocate resources and
+ leave them to Operating System's reaping userland processes. But
+ in a future we plan to have multiple VMs to run simultaneously in
+ a single process (MVM project). At that stage we can no longer
+ rely on OSes and have to manage every resources to be reclaimed
+ properly. So it is. For a forward-compatibility reason this API
+ is introduced now, encouraging you to be as gentle as you can for
+ your resources; that is, tidy up your room.
+
+ * include/ruby/vm.h: ditto.
+
+ * vm_core.h (rb_vm_struct): new field.
+
+ * vm.c (vm_init2): initialize above new field.
+
+ * eval.c (ruby_cleanup): trigger those hooks.
+
+Thu Dec 2 17:00:44 2010 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: parenthesize macro arguments.
+
+Thu Dec 2 15:31:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): more fix. [ruby-core:33513]
+
+Thu Dec 2 13:41:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): workaround for console reading troubles.
+ fixed [ruby-core:33511]
+
+Thu Dec 2 13:10:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_form):
+ split key-value when the value is Array like object.
+
+Thu Dec 2 10:39:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#set_form_data):
+ use URI.encode_www_form for application/x-www-form-urlencoded.
+
+Thu Dec 2 10:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/extmk.rb: remove $makeflags.defined?, it should be $mflags.
+
+Thu Dec 2 10:19:47 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (rc): suppress meaningless message.
+
+Thu Dec 2 10:09:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/generator/extconf.rb: remove the lines which set -O3
+ when -O option is not set.
+ Note that -O3 doesn't always exist.
+
+ * ext/json/parser/extconf.rb: ditto.
+
+Thu Dec 2 10:01:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/extmk.rb: define $makeflags.defined? like $mflags.
+
+Thu Dec 2 07:20:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::GCStressOption): --gc-stress
+ option.
+
+ * lib/test/unit.rb (Test::Unit::Mini#_run_suites): show the result
+ even when interrupted on the way.
+
+Thu Dec 2 07:08:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (setattr): should retry on EINTR.
+ [ruby-dev:42666]
+
+Thu Dec 2 02:30:50 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: fixed positional wording to match revised order.
+
+Thu Dec 2 01:24:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/common.rb: don't use iconv on 1.9.
+ patched by Shota Fukumori [ruby-core:33164]
+
+Thu Dec 2 01:02:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Update github/flori/json from 1.4.2+ to
+ e22b2f2bdfe6a9b0. this fixes some bugs.
+
+Thu Dec 2 00:05:44 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: improve rdoc.
+ This change the order of chapter because such overview should
+ begin with simple examples.
+ patched by Eric Hodel [ruby-core:33469]
+
+Wed Dec 1 22:01:49 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): fixed a potential bug when using bccwin32
+ ruby with Microsoft's dll, though we already gave up of supporting
+ bccwin32. [ruby-core:33503]
+
+Wed Dec 1 21:43:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * array.c: parenthesize macro arguments.
+
+Wed Dec 1 21:41:57 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_addrinfo.rb: extract Errno::EADDRINUSE as a method.
+
+ * test/socket/test_socket.rb: ditto.
+
+Wed Dec 1 15:08:32 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/openssl/test_ssl.rb (test_not_started_session): non socket
+ argument of SSLSocket.new is not supported on Windows.
+
+Wed Dec 1 14:36:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_memhash): zero-filled strings should return
+ different values. [ruby-core:33500]
+
+Wed Dec 1 14:27:49 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 2.0.0 r5952.
+ * test/minitest/*.rb: ditto.
+ * lib/test/unit.rb: Compatibility fix for minitest changes.
+
+Wed Dec 1 10:16:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): fix typo (not 0xFD but 0xFE).
+
+Wed Dec 1 09:28:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: Follow .gnu_debuglink section.
+ A user of distribution provided ruby will see line
+ info if s/he has a debug package for ruby.
+ patched by Shinichiro Hamaji [ruby-dev:42655]
+
+Wed Dec 1 01:29:15 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): inspect as a dummy encoding string
+ when a UTF-16/32 (not BE/LE) string does not have a BOM.
+ Unicode and some RFCs say that a string labeled as UTF-16/32
+ doesn't have a BOM, it should be considered big endian.
+ But many Windows programs generates little endian UTF-16
+ strings without a BOM. So String#inspect treats a string
+ labeled UTF-16/32 without a BOM as a dummy encoding string.
+ patched by Martin Duerst. [ruby-core:33461]
+
+Tue Nov 30 17:04:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c (parse_debug_line_cu): ignore DW_LNE_set_discriminator.
+ To ignore, it needs to read a single unsigned LEB128 integer.
+
+Tue Nov 30 16:29:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_dump.c: undef HAVE_BACKTRACE when the OS is FreeBSD (in other
+ words backtrace() is libexecinfo) and it is optimized.
+ This temporary hack may be also applied to other libexecinfo
+ environments.
+
+Tue Nov 30 16:23:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: improve rdoc.
+ patched by Eric Hodel ref #4100
+
+Tue Nov 30 12:23:52 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): read only 1 byte at once on console.
+ workaround of Windows bug. see [ruby-core:33460].
+ this is not the final solution.
+
+Tue Nov 30 11:39:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: improve rdoc.
+ patched by mathew murphy [ruby-core:33472] ref #4100
+
+Tue Nov 30 05:03:44 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri/common.rb (encode_www_form, encode_www_form_component):
+ Improve English in documentation.
+
+ * ext/openssl/ossl_ssl.c (ssl_version=, ciphers=): Document
+ #ssl_version=, add documentation for #ciphers=.
+
+Mon Nov 29 22:55:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::WFKV_): get rid of backtrack explosion
+ by nested repeat operators. [ruby-core:33464]
+
+Mon Nov 29 22:53:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (scriptbin.mk): fix generated rules.
+
+ * win32/win32.c (rb_w32_write_console): fix argument type.
+
+Mon Nov 29 21:12:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-forward-sexp): stop after literal hash
+ key labels.
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords): highlight literal
+ hash key labels as symbols.
+
+Mon Nov 29 18:31:31 2010 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb (test_unicode_public_review_issue_121):
+ - Removed commented-out options that are no longer under discussion.
+ - Added two more tests for forthcomming clarifications.
+
+Mon Nov 29 14:31:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_isatty): use GetConsoleMode() to determine the
+ fd is console or not, just like rb_w32_write_console(). [experimental]
+
+Mon Nov 29 14:19:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (rb_w32_write_console): wrong prototype.
+
+Mon Nov 29 14:10:55 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_write_console): fixed indentation.
+
+Sun Nov 28 22:13:39 2010 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (NATIVE_MUTEX_LOCK_DEBUG): move and use it.
+
+ * ChangeLog: fix my timezone.
+
+Mon Nov 28 21:58:58 2010 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c: remove pthread_atfork().
+
+Mon Nov 28 21:54:22 2010 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (native_cond_*): Check return code.
+ (Some OSes except Linux return error code).
+
+Sun Nov 28 21:46:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (thread_start_func_1): initialize native thread
+ data immediately before starting.
+
+Sun Nov 28 14:56:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (struct argf): make lineno long, and reorder members.
+
+Sun Nov 28 14:55:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_win32.c (gvl_release, gvl_init): suppress warnings.
+
+Sun Nov 28 14:48:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (gvl_release, gvl_init): suppress warnings.
+
+ * vm_core.h (rb_vm_gvl_destroy): add prototype.
+
+Sun Nov 28 14:46:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (gvl_reinit): register atfork handler only in
+ the parent process, to get rid of dead lock.
+
+Sun Nov 28 12:23:57 2010 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, vm_core.h: make gvl_acquire/release/init/destruct
+ APIs to modularize GVL implementation.
+
+ * thread_pthread.c, thread_pthread.h: Two GVL implementations.
+ (1) Simple locking GVL which is same as existing GVL.
+ (2) Wake-up queued threads. The wake-up order is simple FIFO.
+ (We can make several queues to support exact priorities, however
+ this causes some issues such as priority inversion and so on.)
+ This impl. prevents spin-loop (*1) caused on SMP environments.
+ *1: Only one Ruby thread acquires GVL again and again.
+ Bug #2359 [ruby-core:26694]
+
+ * thread_win32.c, thread_win32.h: Using simple lock
+ not by CRITICAL_SECTION but by Mutex.
+ Bug #3890 [ruby-dev:42315]
+
+ * vm.c (ruby_vm_destruct): ditto.
+
+Sun Nov 28 04:40:00 2010 Luis Lavena <luislavena@gmail.com>
+
+ * io.c (io_fwrite): use rb_w32_write_console under Windows.
+
+ * win32/win32.c (rb_w32_write_console): added to write to write
+ Unicode using WriteConsoleW for stdout/stderr. [ruby-core:33166]
+
+Sun Nov 28 03:58:47 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: improve rdoc.
+ patched by Mike Perham [ruby-core:33433]
+
+Sat Nov 27 19:12:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: parenthesize macro arguments.
+
+Sat Nov 27 18:08:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (leap_year_v_p): fixed typo. [ruby-dev:42631]
+
+Sat Nov 27 17:57:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * resolv.rb (Resolv::DNS): use the same DNS server when retry using
+ TCP. reported by Julian Mehnle. [ruby-core:32970]
+
+Sat Nov 27 15:45:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): see CrashReport log on Mac OS X.
+
+ * configure.in: link addr2line only for ELF.
+
+Sat Nov 27 13:58:55 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#candidate): : was missing. Thanks,
+ Shota Fukumori. [ruby-dev:42634]
+
+Sat Nov 27 12:07:05 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * man/ruby.1: Ruby man page from Arthur Gunn in [ruby-core:33412]
+
+Sat Nov 27 11:29:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#candidate): get rid of 1.9 syntax
+ so that BASERUBY can be 1.8.
+
+Sat Nov 27 08:16:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * addr2line.c (rb_dump_backtrace_with_lines): should close fd on
+ edge case.
+
+Fri Nov 26 13:33:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: apply a patch from shinichiro.h.
+
+Fri Nov 26 12:21:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: added to show source filename and line number of
+ functions in backtrace. [ruby-dev:42625]
+ a patch from shinichiro.h <shinichiro.hamaji AT gmail.com>
+
+ * addr2line.h: ditto.
+
+ * common.mk: add addr2line.$(OBJEXT).
+
+ * configure.in: check dl_iterate_phdr.
+
+ * vm_dump.c (rb_vm_bugreport): use rb_dump_backtrace_with_lines in
+ addr2line.c when the binary is ELF.
+
+Fri Nov 26 12:12:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (setup_tree): restart setup_tree() for a node whose
+ AnchorNode's type is ANCHOR_PREC_BEHIND or ANCHOR_PREC_BEHIND_NOT
+ and divide_look_behind_alternatives() divided it to NT_ALT or
+ NT_LIST. [ruby-core:33370]
+
+Fri Nov 26 11:40:11 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): get only required rights of the target
+ thread because THREAD_ALL_ACCESS causes an access error on XP.
+ reported by Masaya TARUI via IRC.
+
+Fri Nov 26 11:09:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): show the displacement from the beginning
+ of the symbol.
+
+Fri Nov 26 10:48:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): follow the output of glibc.
+ see [ruby-dev:42627]
+
+Fri Nov 26 09:48:45 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_str): should succeed the taint status from
+ the origin. [ruby-core:33338]
+
+Fri Nov 26 09:32:37 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): seems to be necessary the 3rd argument of
+ SymGetLineFromAddr64(), even though MSDN says it can be zero.
+
+Fri Nov 26 09:03:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (onig_is_prelude): added to check whether ruby is still
+ in prelude (or other boot processes) or not.
+
+ * regcomp.c (optimize_node_left): use onig_is_prelude for printing.
+
+ * regcomp.c (set_optimize_info_from_tree): ditto.
+
+ * regcomp.c (onig_compile): ditto.
+
+ * regcomp.c (print_compiled_byte_code_list): print its address.
+
+ * regcomp.c (print_indent_tree): print its contents tree of
+ ANCHOR_PREC_READ(_NOT) and ANCHOR_PREC_BEHIND(_NOT).
+
+Thu Nov 25 23:10:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (print_distance_range): use PRIuSIZE.
+
+ * regcomp.c (print_optimize_info): use %ld because the type of
+ calculated value of integers is long.
+
+ * regexec.c (onig_print_compiled_byte_code): add prototype.
+
+ * regexec.c (match_at): add 2nd argument.
+
+Thu Nov 25 10:29:55 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/callback/mkcallback.rb (gencallback): shouldn't assume that
+ VALUE is the same size with long.
+
+Thu Nov 25 10:03:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/win32ole/test_err_in_callback.rb (teardown): remove tmp file
+ only when it exists.
+
+Thu Nov 25 01:38:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/big5-hkscs-tbl.rb: Update table as HKSCS-2008.
+ patched by oCameLo oTnTh [ruby-core:33256]
+
+ * enc/big5.c: add alias Big5-HKSCS:2008 to Big5-HKSCS.
+
+Wed Nov 24 15:18:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vsnprintf (BSD_vfprintf): use QUADINT macro only when _HAVE_SANE_QUAD_
+ macro is defined.
+
+Wed Nov 24 12:47:16 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vsnprintf (BSD_vfprintf): added VC++ compatible size specifications
+ (I, I32, I64).
+
+Wed Nov 24 11:19:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): treat UTF-16 and UTF-32 as BE or LE.
+
+Wed Nov 24 06:35:32 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf_16_32.trans: add the UTF-32 converter.
+
+Wed Nov 24 05:40:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+Wed Nov 24 06:13:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (filecp, wstr_to_mbstr, mbstr_to_wstr):
+ refactored.
+
+Wed Nov 24 05:40:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf_16_32.trans: add a converter from UTF-8 to UTF-16.
+
+Wed Nov 24 03:21:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf_16_32.trans: raise error on unpaired upper
+ surrogates.
+
+Wed Nov 24 01:40:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_16_32.h: add UTF-16 and UTF-32 as a dummy encoding.
+
+ * enc/trans/utf_16_32.trans: add a converter from UTF-16 to UTF-8.
+
+Tue Nov 23 21:59:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (wlink, rb_w32_getppid): use typedef instead of
+ repeating complicated function prototypes.
+
+Tue Nov 23 18:54:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_mark): should mark self in control
+ frames. [ruby-core:33289]
+
+Tue Nov 23 07:57:31 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/delta/parser.{ry,rb}: fixed a bug of token scanner.
+
+Tue Nov 23 07:29:24 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c, rational.c ({nucomp,nurat}_expt): added a check.
+
+Tue Nov 23 07:27:27 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (daynum): should be private.
+
+Tue Nov 23 07:22:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ChangeLog (change-log-indent-text): hanging indent.
+
+Tue Nov 23 06:30:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (SITE_DIR, VENDOR_DIR),
+ version.c (ruby_initial_load_paths): exclude directories that
+ are configured without them from $LOAD_PATH. [ruby-core:33267]
+
+ * configure.in (rubylibprefix): No ruby, No libprefix.
+
+Tue Nov 23 01:05:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): don't output floating point
+ when the precision is 0. [ruby-dev:42615]
+
+Mon Nov 22 21:30:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_inspect): fix for ascii-compatible external
+ encoding and different encoding string. [ruby-core:33283]
+
+Mon Nov 22 18:45:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): should not duplicate rules.
+ bug fix of r29842.
+
+Mon Nov 22 18:04:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/big5.c: split CP950 from Big5.
+
+ * enc/big5.c: split CP951 from Big5-HKSCS.
+
+ * enc/trans/big5.trans: import conversion table of Big5, Big5-HKSCS,
+ CP950, and CP951 from ICU. they need fallback conversions.
+ ref [ruby-core:33256]
+ http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/
+
+ * tool/transcode-tblgen.rb (import_ucm): add to import ucm files.
+
+Mon Nov 22 18:33:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_inspect): append for each chars instead of bulk
+ copy if encoding conversion is needed. [ruby-core:33283]
+
+Mon Nov 22 14:22:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * time.c (time_zone): use rb_locale_str_new_cstr to set encoding
+ as locale and convert its content to internal encoding.
+ [ruby-core:33278]
+
+Mon Nov 22 11:58:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_concat): set ENC_CODERANGE_VALID when the
+ receiver is 7BIT and the argument is non ASCII.
+
+Mon Nov 22 01:48:58 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: some improvements for performance.
+
+Sat Nov 20 07:45:50 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/mkmf.rb: adding compilation support for ObjC/ObjC++ extensions.
+ Thanks Scott Gonyea! [ruby-core:33260]
+
+Sat Nov 20 01:57:55 2010 Akio Tajima <artonx@yahoo.co.jp>
+
+ * common.mk: add dependency(insns.inc) to compile.obj
+
+Fri Nov 19 23:05:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (insns_rules.mk): remove extra backslash.
+
+ * cygwin/GNUmakefile.in, win32/Makefile.sub (clean): rc files are
+ made at compile time, so should be removed by clean.
+
+Fri Nov 19 22:09:46 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_core.rb
+ (Tester#test_pretty_format_long_text_finite): skip a test that
+ uses long string on small memory system. [ruby-dev:42599]
+
+Fri Nov 19 21:07:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb: shell completion support for zsh. based on
+ <http://d.hatena.ne.jp/rubikitch/20071002/zshcomplete>
+
+ * lib/optparse.rb: shell completion support for bash.
+
+Fri Nov 19 00:00:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (SCRIPTPROGRAMS): no needs on cygwin.
+
+ * win32/Makefile.sub (scriptbin): create script binaries.
+
+Thu Nov 18 23:21:23 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/formatters/pretty.rb (REXML::Formatters::Pretty#wrap):
+ REXML::Formatters::Pretty#wrap used a recursive method call to
+ format text. This switches it to use an iterative approach.
+ [ruby-core:33245]
+ Patch by Jeremy Evans. Thanks!!!
+
+ * test/rexml/test_core.rb: add a test for it.
+
+Thu Nov 18 22:58:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h (rb_io_buffer_t): extract from rb_io_t.
+
+Thu Nov 18 07:37:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (reconfig): force reconfigure with previous options.
+
+ * common.mk (showconfig): show configure flags, like as
+ `config.status --config' generated by recent autoconf.
+
+Thu Nov 18 07:16:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/langinfo.c (strncasecmp): get rid of redefinition.
+
+Thu Nov 18 00:02:17 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Upgrading output encoding with ASCII content
+ as needed. [ruby-core:33229]
+
+Wed Nov 17 23:19:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/configure.bat: remove quotes from arguments to be quoted.
+
+ * lib/mkmf.rb (create_makefile): use forward slashes in messages.
+
+ * lib/mkmf.rb (create_makefile): make extension libraries messages
+ brief.
+
+ * win32/Makefile.sub (MAKEDIRS): should not include silent flag.
+
+ * common.mk (ext/ripper/ripper.c, ext/json/parser/parser.c): pass
+ Q and ECHO. [ruby-core:33226]
+
+Wed Nov 17 16:09:52 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/test_tracer.rb: new test case.
+ minimal regression test for r29280.
+
+Wed Nov 17 16:04:23 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/envutil.rb (Test::Unit::Assersions#assert_warn):
+ new assertion to assert that a particular warning message is
+ displayed.
+ forward port from branches/ruby_1_9_2@29795.
+
+Wed Nov 17 15:16:48 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regint.h (OnigOpInfoType): constify name.
+
+ * regcomp.c (op2name): constify return value.
+
+ * regcomp.c (onig_print_compiled_byte_code): use PRIuPTR and
+ uintptr_t to clean warnings.
+
+ * regcomp.c (print_indent_tree): use PRIxPTR and intptr_t.
+
+ * regexec.c (match_at): use PRIdPTR and intptr_t.
+
+Wed Nov 17 09:49:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/shift_jis.c (property_name_to_ctype): fix memory leak.
+
+ * enc/euc_jp.c (property_name_to_ctype): ditto.
+
+Wed Nov 17 08:54:04 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Upgrading output encoding as needed. [ruby-core:33135]
+
+Tue Nov 16 22:30:39 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_throw): remove fear of undefined behavior :-)
+ Coverity Scan found this bug.
+
+Tue Nov 16 09:33:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (to_digits): avoid unused
+ variables warning, reported by Aaron Patterson.
+
+Tue Nov 16 06:39:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (PACK_ITEM_ADJUST): return nil not result array and yield
+ values if block is given. [ruby-core:33193]
+
+Tue Nov 16 00:21:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regparse.c (and_cclass, or_cclass): fix memory leak. Coverity Scan
+ found this bug. [ruby-dev:42579]
+
+Tue Nov 16 00:07:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (assign_heap_slot): fix fear of memory leak and memory
+ violation. Coverity Scan found this bug.
+
+Mon Nov 15 23:54:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval_intern.h (CHECK_STACK_OVERFLOW): it was not intended to add
+ size_t to a pointer typed VALUE*. Coverity Scan found this defect.
+
+Mon Nov 15 23:41:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_set_exception_local_table, iseq_set_local_table,
+ rb_iseq_build_from_ary): fix type inconsistency (which is benign
+ because sizeof(ID) == sizeof(ID*), though). Coverity Scan found
+ these bugs.
+
+Mon Nov 15 22:47:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_funcall): ensure va_end after va_init_list. Coverity
+ Scan found this bug.
+
+Mon Nov 15 08:36:12 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/racc/parser.rb (do_parse, yyparse): using class eval to define
+ method and avoid __send__.
+
+Mon Nov 15 06:43:48 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * etc/openssl/ossl_ssl.c (ossl_ssl_get_cert): raise exception if
+ pointer is invalid. Thanks Ippei Obayashi! [ruby-dev:42573]
+
+Sun Nov 14 17:57:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (distclean): should not remove sources which are
+ distributed in tarball.
+
+Sun Nov 14 16:48:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_set_token_info): turn on/off with directives.
+ [ruby-core:25442]
+
+Sun Nov 14 12:05:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_readlines): forward to current_file for arguments
+ check. http://twitter.com/nagachika/status/3634254856589312
+
+Sun Nov 14 08:48:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/setup.mak (-basic-vars-, -runtime-): suppress trailing
+ space and compiler command line.
+
+Sun Nov 14 04:22:32 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (config.h): Added HAVE_LABS and HAVE_LLABS to config.h.
+
+ * symbian/configure.bat: Changed packaging version in line with API
+ style 3 versioning.
+
+Sat Nov 13 16:37:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (showflags, help): emit messages at once.
+
+ * win32/Makefile.sub (MSG, EOM): remove surrounding quotes by %~I.
+
+Sat Nov 13 01:31:30 2010 Akio Tajima <artonx@yahoo.co.jp>
+
+ * win32/Makefile.sub: reorder variable End Of Message (don't display it)
+
+Fri Nov 12 20:52:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (showflags, help): use caret to quote leading spaces on
+ Windows.
+
+ * Makefile.in, common.mk, cygwin/GNUmakefile.in, enc/depend,
+ ext/ripper/depend, lib/mkmf.rb, win32/Makefile.sub: caddle up.
+
+Fri Nov 12 16:35:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: support C level backtrace information on FreeBSD.
+ When devel/libexecinfo is installed on FreeBSD, now ruby
+ can show C level backtrace information.
+ http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/libexecinfo/
+
+Fri Nov 12 09:58:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak: use findstr.exe instead of find.exe, because all
+ target build platforms should have findstr.exe, and, find.exe often
+ means another command such as cygwin's.
+
+Fri Nov 12 00:30:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): need PRI_LL_PREFIX.
+
+Thu Nov 11 23:38:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: ANSI C-conforming const and volatile are mandatory
+
+ * configure.in (AC_C_CONST, AC_C_INLINE, AC_C_VOLATILE): check
+ before used in other checks.
+
+ * configure.in (RUBY_CHECK_PRINTF_PREFIX): should not break from
+ RUBY_WERROR_FLAG, so that ac_c_werror_flag gets restored.
+
+Thu Nov 11 23:04:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (warn_deprecated): show caller position.
+
+Thu Nov 11 23:03:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_close): untie tied io before closing.
+
+ * io.c (argf_write): add ARGF.write and so on.
+
+ * io.c (argf_read_nonblock): add ARGF.read_nonblock.
+
+Thu Nov 11 21:49:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/stats.rb (RDoc#print): get rid of NaN.
+
+Thu Nov 11 21:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (SHOWFLAGS): show compile flags.
+
+ * common.mk: hide long command lines by default. verbose-mode is
+ turned on by V=1 as before.
+ http://jarp.does.notwork.org/diary/200605b.html#200605121
+
+Thu Nov 11 21:32:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_func): accept variable address.
+
+ * ext/win32ole/extconf.rb: libuuid is needed on cygwin.
+
+Thu Nov 11 21:24:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): use cygwin_conv_path on cygwin 1.7 or
+ later.
+
+ * ruby.c (push_include_cygwin): ditto.
+
+Thu Nov 11 20:49:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRI_LL_PREFIX): format type specifier for
+ LONG_LONG may vary on platforms.
+
+Thu Nov 11 20:45:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (SYMBOL_PREFIX): separate from EXPORT_PREFIX.
+
+ * win32/mkexports.rb (Exports#each_export): use SYMBOL_PREFIX.
+
+Wed Nov 10 07:20:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (scriptbin): make executable file from
+ scripts with stub.
+
+ * ruby.c (load_file_internal): assume xflag for exe file as well
+ as no-shebang file.
+
+ * tool/rbinstall.rb: install script programs.
+
+ * win32/mkexports.rb (Exports#initialize): alias ruby_sysinit for
+ stub.
+
+ * win32/stub.c: stub for scripts. [EXPERIMENTAL]
+
+Tue Nov 9 21:57:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (init_funcname): allocate and build initialization
+ funciton name at once.
+
+Tue Nov 9 21:14:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (AC_FUNC_GETPGRP, AC_FUNC_SETPGRP): no need when
+ not used.
+
+ * configure.in (EXPORT_PREFIX): check generic prefix.
+
+Tue Nov 9 13:24:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regenc.c (onigenc_minimum_property_name_to_ctype):
+ \p{...} should be case insensitive. [ruby-core:33000]
+
+ * regenc.c (onigenc_property_list_add_property):
+ ditto.
+
+ * enc/euc_jp.c (init_property_list, property_name_to_ctype):
+ to lowercase property names.
+
+ * enc/shift_jis.c (init_property_list, property_name_to_ctype):
+ ditto.
+
+Tue Nov 9 13:29:36 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (overlapped_socket_io): get rid of a warning of 64bit
+ mingw.
+
+Tue Nov 9 10:44:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): this code uses FPU's rounding system.
+ But x86's FPU calculates double precision floating-point
+ numbers in 80bit precision, so it fails to round the value.
+ So ensure the value is assigned a variable. [ruby-dev:42551]
+ see also [ruby-math:00802]
+ http://www.shudo.net/java-grandprix99/strictfp/
+
+Tue Nov 9 07:30:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_syserr_new): new function to make SystemCallError
+ instance without errno. [EXPERIMENTAL]
+
+ * error.c (rb_syserr_fail, rb_mod_syserr_fail): ditto.
+
+Tue Nov 9 05:54:57 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/*.rb: Remove unused variable warnings.
+ Patch by Run Paint [ruby-core:30991]
+
+ * lib/rubygems/*, lib/rdoc/*.rb, lib/rake/*.rb: ditto
+
+Mon Nov 8 18:26:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_hdtoa): fix type cast and bufsize.
+
+Mon Nov 8 15:40:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): fix precision specifier doesn't
+ work well on %f. [ruby-dev:42552]
+
+Mon Nov 8 14:41:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (get_wsa_extension_function): typos.
+
+Mon Nov 8 13:41:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Add Age property to regexp. [ruby-core:33019]
+ patched by Ammar Ali, tested by Run Paint Run Run
+
+Mon Nov 8 12:16:39 2010 Ben Walton <bwalton@artsci.utoronto.ca>
+
+ * configure.in: support -h for solaris linker when gcc not used
+
+Mon Nov 8 11:47:39 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (finish_overlapped_socket): refactoring.
+
+Mon Nov 8 11:02:21 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (get_proc_address): refactoring.
+
+ * win32/win32.c (get_wsa_exetinsion_function): refactoring.
+
+Mon Nov 8 09:45:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/gbk-tbl.rb: Add euro sign. [ruby-core:33094]
+ CP936, which is de facto definition of GBK, has it.
+ http://msdn.microsoft.com/en-us/goglobal/cc305153.aspx
+
+Mon Nov 8 07:26:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check only the first symbol to get rid of
+ duplication. [ruby-core:33084] #4031
+
+Sun Nov 7 10:13:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (NM): check on all platforms. #4031
+
+Sun Nov 7 06:16:33 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/openssl/test_ocsp.rb: adding test for r29699. Thanks Elise
+ Huard! [ruby-core:32460]
+
+Sat Nov 6 07:33:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_export_prefix): check for prefixed
+ underscore of exported symbols
+
+ * tool/rbinstall.rb (bin-comm): prepend prolog shell script if
+ necessary.
+
+ * configure.in (LIBRUBY_RELATIVE): use rpath token expansion.
+
+Sat Nov 6 07:24:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/ruby.pc.in (arch, sitearch): reordered.
+
+ * configure.in: keep failed file.
+
+Sat Nov 6 07:03:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork_err): save errinfo before fdopen.
+
+Sat Nov 6 00:43:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspcid_initialize): an optional
+ parameter may be used to specify the OpenSSL::OCSP::CertificateId on
+ initialization. Thanks Elise Huard! [ruby-core:32460]
+
+Fri Nov 5 12:23:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_{process,system}.rb (test_fallback_to_sh):
+ meaningless and wrong tests where /bin/sh does not exist.
+
+ * process.c (proc_spawn_v): should spawn, not exec.
+
+Fri Nov 5 01:21:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_exec_v, proc_spawn_v): try to execute with sh if
+ no shebang. [ruby-core:32745] [EXPERIMENTAL]
+
+Fri Nov 5 00:39:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_readlines, rb_io_each_line): limit must not be zero.
+ a patch from Tomoyuki Chikanaga at [ruby-dev:42538]. #4024
+
+Fri Nov 5 00:14:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/extconf.rb: fixing ffi library location on windows.
+ Thanks Usa! [ruby-core:32930]
+
+Thu Nov 4 20:04:44 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_newobj): force garbage_collect() if GC.stress == true.
+
+Thu Nov 4 19:48:22 2010 Koichi Sasada <ko1@atdot.net>
+
+ * ChangeLog: missed to write a last ChangeLog.
+
+ * gc.c (gc_finalize_deferred): removed.
+
+ * gc.c (rb_gc_finalize_deferred): Do not invoke a free_unused_heaps().
+
+Thu Nov 4 19:45:27 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (run_final): do not need argument obj.
+
+Thu Nov 4 19:26:10 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (before_gc_sweep): fix commit miss.
+
+Thu Nov 4 19:20:46 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (after_gc_sweep, before_gc_sweep):
+ invoke rb_sweep_method_entry() as soon as possible.
+
+Thu Nov 4 19:13:58 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (after_gc_sweep, slot_sweep): finalizers should be invoked
+ as soon as possible.
+
+Thu Nov 4 10:30:40 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in (--with-valgrind): Now this option is default on.
+ You can still explicitly disable this feature by specifying
+ --without-valgrind.
+
+Thu Nov 4 02:06:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (fiber_t_alloc): raise an error when fiber is going to be
+ initialized twice. [ruby-dev:42524]
+
+Thu Nov 4 02:04:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (rb_fiber_resume): raise an "double resume" error when root
+ fiber is going to be resumed. [ruby-dev:42523]
+
+Wed Nov 3 14:17:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct#delete_field): also undefine
+ accessor methods. [ruby-core:33010]
+
+Wed Nov 3 14:13:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): concatenation of valid
+ encoding string and invalid encoding string should result
+ invalid encoding. [ruby-core:33027]
+
+Wed Nov 3 08:58:59 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, vm.c, vm_core.h: remove USE_VALUE_CACHE option.
+
+Wed Nov 3 07:47:25 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex#identify_string): parse multiple
+ regex options. a patch from Heesob Park in [ruby-core:32988].
+
+Wed Nov 3 07:33:57 2010 Tanaka Akira <akr@fsij.org>
+
+ * vm_method.c (rb_clear_cache_by_class): just return if the class has
+ no method. reported by Eric Wong. [ruby-core:32689]
+
+Tue Nov 2 22:50:25 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/visitor.rb (initialize): push accessor
+ methods to subclass that actually uses them.
+
+Tue Nov 2 22:47:08 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/visitor.rb (accept): switch to
+ a dispatch cache rather than case / when statement.
+
+Tue Nov 2 21:46:52 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS: fix a typo.
+
+Tue Nov 2 20:10:32 2010 Tajima Akio <artonx@yahoo.co.jp>
+
+ * test/rake/test_tasks.rb: clear env var which is used by the test.
+ [ruby-dev:42508]
+
+Tue Nov 2 00:25:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: win64 is just same with win32 about socket.
+ notice: but wince is not same.
+
+Mon Nov 1 21:25:57 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * main.c: <stdlib.h> is needed, to introduce the getenv(3)
+ prototype declaration. Without it a C compiler shall infer
+ the getenv type as "int getenv(...);", but this is totally
+ wrong, especially when your machine's sizeof(int) and
+ sizeof(char*) differs. On such environment a return value
+ of getenv(3), which is in fact a char*, might first casted
+ into a int (loses data here), and then casted back to char*
+ by automatic integral promotion to fit to the prototype of
+ ruby_set_debug_option().
+
+Sun Oct 31 23:27:09 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (finalizer_table, objspace->final.table):
+ Create finalizer_table at Init_heap().
+ Remove all null checks of finalizer_table.
+
+ * gc.c (mark_tbl): skip if no table entries.
+
+ * gc.c (slot_swee): remove useless need_call_final check.
+
+Sun Oct 31 22:32:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_objspace_free): finalizers should be called separately
+ from freeing objspace. [ruby-dev:42479]
+
+Sun Oct 31 22:24:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): free current VM and its objspace even
+ when exiting by SystemExit.
+
+Sun Oct 31 22:10:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (new_child_iseq): adjust argument types.
+
+ * iseq.c (prepare_iseq_build, rb_iseq_new),
+ (rb_iseq_new_with_bopt_and_opt, rb_iseq_new_with_opt),
+ (rb_iseq_new_with_bopt): ditto.
+
+ * compile.c (iseq_set_exception_table): suppress warnings.
+
+ * insns.def (putspecialobject, defined): ditto.
+
+ * iseq.c (iseq_load): ditto.
+
+Sun Oct 31 09:30:51 2010 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: some refactoring.
+ - move decl. of rb_compile_option_struct to iseq.h.
+ - define enum iseq_type.
+ - define enum vm_special_object_type.
+
+ * compile.c: some refactoring.
+ - apply above changes.
+ - (struct iseq_link_element): change value of type.
+ - remove unused decl.
+ - fix comment.
+ - rename iseq_build_body and iseq_build_exception to
+ iseq_build_from_ary_body and iseq_build_from_ary_exception.
+
+ * iseq.h: define enum catch_type and enum defined_type.
+
+ * insns.def: apply above changes.
+
+ * iseq.c: define ISEQ_MAJOR_VERSION and ISEQ_MINOR_VERSION.
+
+Sat Oct 30 23:38:59 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/encoding.rb: untabify.
+
+Sat Oct 30 21:06:37 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/encoding.rb: use Ruby native encoding mechanism.
+ [ruby-dev:42464]
+ * lib/rexml/encodings/: remove.
+
+ * lib/rexml/document.rb, lib/rexml/formatters/default.rb,
+ lib/rexml/output.rb, lib/rexml/parseexception.rb,
+ lib/rexml/parsers/baseparser.rb, lib/rexml/source.rb,
+ lib/rexml/xmldecl.rb: use Ruby's native Encoding object.
+
+ * test/rexml/, test/rss/: follow the above encoding changes.
+
+ * NEWS: add REXML's incompatible change about encoding.
+
+Sat Oct 30 17:23:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod): get rid of overflow/underflow as possible.
+
+Sat Oct 30 14:37:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_pc): erase runtime-defined variables and
+ check if generated pc file is valid.
+
+ * template/ruby.pc.in (DEFFILE): need for mingw.
+
+ * template/ruby.pc.in (LIBRUBY): fix the order.
+
+Sat Oct 30 11:33:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (ruby_pc): ignore missing variables.
+
+ * template/ruby.pc.in: add missing variables for mswin.
+
+Sat Oct 30 10:24:35 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * object.c: Make BasicObject.new accept no parameter.
+ Revert of r26135 [ruby-core:27080], as per [ruby-core:32952].
+
+Sat Oct 30 09:40:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c: use constants in id.h.
+
+Sat Oct 30 09:08:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/fiddle/closure.c (fiddle_closure): embed cif not reference
+ so that the content surely get initialized. [ruby-dev:42480]
+
+Sat Oct 30 07:01:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv-replace.rb: suppress warning.
+
+ * lib/open-uri.rb: ditto.
+
+Sat Oct 30 06:32:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/pathname/test_pathname.rb (TestPathname#test_grpowned?): the
+ group of the created file is inherited from the parent
+ directory on BSDs and MacOS X. Linux also inherit the group if
+ the setgid bit of the directory is set. It causes the test fail.
+ fixed by Shota Fukumori. [ruby-dev:42458]
+
+Sat Oct 30 05:58:54 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: retry via TCP if UDP reply is truncated.
+ fixed by Julian Mehnle. [ruby-core:32407]
+
+Sat Oct 30 00:35:13 2010 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_s_compile): fix optional argument.
+ a patch from Yutaka HARA [ruby-core:32953] [Ruby 1.9-Bug#4001]
+
+Sat Oct 30 00:24:42 2010 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (memsize_of): take care of
+ T_CLASS/const_tbl.
+ a patch from nagachika <nagachika00@gmail.com> [ruby-dev:42490]
+
+Fri Oct 29 23:32:36 2010 Koichi Sasada <ko1@atdot.net>
+
+ * test/profile_test_all.rb: added.
+ You can use test-all profiler with the following command:
+ RUBY_TEST_ALL_PROFILE=true make test-all
+ This command generates ./test_all_profile and you can analyze
+ which tests consume memories.
+
+ * test/runner.rb: ditto.
+
+Fri Oct 29 10:02:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Add 'Unknown' Script.
+ patched by Run Paint Run Run. [ruby-core:32937] #3998
+
+Fri Oct 29 05:13:34 2010 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (ObjectSpace.memsize_of_all): rename
+ ObjectSpace.total_memsize_of_all_objects() to
+ ObjectSpace.memsize_of_all([klass]).
+ Accept Class object to filter the objects.
+
+ * test/objspace/test_objspace.rb: fix test for above change.
+
+Fri Oct 29 03:04:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_dump): fix expected length. [ruby-core:32935]
+
+Thu Oct 28 23:31:39 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (before_gc_sweep, run_final): fix decrement timing of final_num.
+
+Thu Oct 28 20:11:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Update Oniguruma for Unicode 6.
+ patched by Run Paint Run Run. [ruby-core:32923] #3989
+
+Thu Oct 28 20:06:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (ONIGENC_CTYPE_SPECIAL_MASK):
+ change mask from 128 to 256. [ruby-core:32931]
+
+Thu Oct 28 12:06:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (read_request_line): extend max
+ length to 2083. This is from Internet Explorer's max uri
+ length. http://support.microsoft.com/kb/208427 [ruby-core:32924]
+
+Thu Oct 28 04:00:08 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (GC.stat): added. [ruby-dev:38607]
+
+ * test/ruby/test_gc.rb: add a test for above.
+
+Thu Oct 28 03:13:06 2010 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (memsize_of): fix rdoc.
+
+ * ext/objspace/objspace.c (total_memsize_of_all_objects): added.
+
+ * test/objspace/test_objspace.rb:
+ - add a test for ObjectSpace.total_memsize_of_all_objects.
+ - add two tests for ObjectSpace.memsize_of (for nil and Fixnum).
+
+Wed Oct 27 23:55:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (Init_iconv): warn deprecated use.
+
+Wed Oct 27 18:50:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2long, rb_big2ulong): rb2ulong() returns VALUE, but
+ its real range is ulong. So, if the size of VALUE is bigger than
+ ulong, upper bits are always zero even if the actual value is
+ negative.
+ fixed #3490
+
+Wed Oct 27 18:27:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#pipe): should close write end of pipe
+ before closing read end, to get rid of timing problem.
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
+
+Wed Oct 27 18:14:27 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getppid): support Win64.
+
+Wed Oct 27 15:07:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (w32_error): should get error no only once, because
+ the result of the second getting will indicate the error of the
+ first FormatMessage() call.
+
+Wed Oct 27 13:51:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#pipe): need to propagate exceptions
+ in read/write thread. fix r29541.
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
+
+Wed Oct 27 12:05:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * class.c (clone_const): need to return value. fix r29602.
+
+Wed Oct 27 11:58:58 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (NUM2LONG_internal): add cast to get rid of a
+ non GCC compiler warning. this is intentional type conversion.
+
+Wed Oct 27 09:25:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c: apply documentation patch by Run Paint Run Run.
+ [ruby-core:32915]
+
+Wed Oct 27 02:12:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * object.c (Init_Object), constant.h, variable.c
+ (rb_mod_private_constant, rb_mod_public_constant,
+ set_const_visibility, rb_const_get_0): add Module#public_constant
+ and private_constant. [ruby-dev:39685][ruby-core:32698]
+
+ * test/ruby/test_module.rb: add tests for above.
+
+Wed Oct 27 02:02:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * class.c, constant.h, gc.c, method.h, object.c, variable.c,
+ vm_insnhelper.c: use struct rb_constant_entry_t as entry of
+ RCLASS_CONST_TBL. RCLASS_CONST_TBL has contained VALUE of constant
+ directly. Now instead rb_const_entry_t is contained in
+ RCLASS_CONST_TBL, rb_const_entry_t is managed by malloc, and
+ have not only the value itself but also visibility flag.
+ This is another preparation for private constant (see
+ [ruby-dev:39685][ruby-core:32698]).
+
+Wed Oct 27 01:56:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * class.c, gc.c, object.c, variable.c, vm_insnhelper.c,
+ include/ruby/ruby.h: separate RCLASS_CONST_TBL from RCLASS_IV_TBL.
+ RCLASS_IV_TBL has contained not only instance variable table but
+ also constant table. Now the two table are separated to
+ RCLASS_CONST_TBL and RCLASS_IV_TBL. This is a preparation for
+ private constant (see [ruby-dev:39685][ruby-core:32698]).
+
+Tue Oct 26 18:51:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/scanf.rb (extract_float): allow 2.e+2 style.
+ [ruby-dev:42452] #3978
+
+Tue Oct 26 18:09:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (ASFLAGS): needs INCFLAGS.
+
+ * configure.in (rb_cv_dynamic_alloca): check if extra source for
+ dynamic size alloca.
+
+ * missing/x86_64-chkstk.s (___chkstk): necessary for alloca of
+ amd64-mingw32msvc-gcc on Ubuntu.
+
+ * thread_win32.c (ruby_alloca_chkstk): check stack overflow
+
+Tue Oct 26 18:04:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/ruby.pc.in (Libs): needs DLDFLAGS.
+
+Tue Oct 26 12:47:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (pkgconfig-data): moved from Makefile.in.
+
+ * tool/rbinstall.rb: install pc file only if non-empty.
+ [ruby-core:32901] #3983
+
+ * win32/Makefile.sub (ruby_pc): create pc file.
+
+Tue Oct 26 09:13:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_gcc_atomic_builtins): check for atomic
+ builtins, all are not available in Apple derivative gcc.
+
+Tue Oct 26 00:29:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (pkgconfig-data): create pkg-config metadata file.
+
+ * tool/rbinstall.rb: install pkg-config metadata file.
+
+ * template/ruby.pc.in: template of pkg-config metadata file.
+
+Mon Oct 25 16:38:07 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * signal.c (rb_atomic_t): GCC (of at least recent versions)
+ has ubiquitous support for atomic operations. On that
+ compiler a C program can issue a memory barrier using these
+ dedicated instructions. According to the GCC manual they
+ cargo culted this feature form the Itanium ABI so chances
+ are that other compilers could also support this feature.
+ But so far GCC is the only compiler that I know to have it.
+ Also note that this works on non-Itanium machines.
+
+Mon Oct 25 06:21:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): prec digits fractal part should be
+ appended to 0 if prec is given. [ruby-dev:42453] #3979
+
+Mon Oct 25 02:57:21 2010 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk (run.gdb): Quit gdb on 'make gdb' when
+ no signals are received.
+
+Mon Oct 25 00:25:23 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: some corrections of documentation.
+
+Sun Oct 24 17:14:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c, gc.c, hash.c, object.c, string.c, struct.c,
+ transcode.c, variable.c, vm.c, vm_insnhelper.c, vm_method.c:
+ replace calls to rb_error_frozen() with rb_check_frozen(). a
+ patch from Run Paint Run Run at [ruby-core:32014]
+
+ * include/ruby/intern.h (rb_check_frozen): optimize.
+ [ruby-core:32878]
+
+Sun Oct 24 15:16:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Mini#run): abort if interrupted.
+
+ * lib/test/unit.rb (Test::Unit::Mini#run_test_suites): show the
+ result even when interrupted on the way.
+
+ * lib/test/unit.rb (Test::Unit::Mini#run_test_suites): ensure
+ output sync mode to be restored.
+
+Sun Oct 24 14:11:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_define_method): defined method is run with the default
+ public visibility regardless the visibility context of definition.
+ [ruby-core:30638]
+
+Sun Oct 24 12:08:54 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/test/unit.rb: make test/unit play nicely with the rake test
+ loader. [ruby-core:32864]
+
+Sun Oct 24 00:25:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (test_segv_test): follow up the
+ change at r29556.
+
+Sat Oct 23 14:39:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: $extmk should be true for test/runner.
+
+Sat Oct 23 10:55:37 2010 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c (rb_vm_bugreport): fix to add bug outputs.
+ - loaded script ($0)
+ - loaded features ($")
+ - process memory map on Linux (/proc/self/maps)
+
+ * vm_dump.c (rb_vmdebug_stack_dump_raw): fix header message.
+
+Fri Oct 22 14:50:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ assertion message must not be nil.
+
+Fri Oct 22 13:59:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ treat nil case. Please run test-all before commit such change.
+
+Thu Oct 21 23:58:14 2010 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_lazy_sweep): Variable declarations should be at
+ the head of block.
+
+Thu Oct 21 23:56:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (objspace_each_objects, rb_objspace_each_objects): use
+ struct.
+
+ * gc.c (objspace_each_objects): fix return with no value.
+
+Thu Oct 21 23:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_initialize): remove useless intermediate variable.
+
+Thu Oct 21 16:07:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_f_select): change rdoc.
+ patched by Eito Katagiri [ruby-core:31805]
+
+Thu Oct 21 15:55:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httpauth/digestauth.rb
+ (WEBrick::HTTPAuth::ProxyDigestAuth#check_uri): privated.
+ [ruby-dev:42344]
+
+Thu Oct 21 15:50:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_f_select): add correct rdoc.
+ patched by Dave Thomas [ruby-core:32467]
+
+Thu Oct 21 15:42:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/telnet.rb (Net::Telnet#close): added.
+ patched by Erik Hollensbe [ruby-dev:42260] #3830
+
+Thu Oct 21 13:08:00 2010 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (rb_objspace_each_objects): don't lazy sweep in
+ rb_objspace_each_objects. [Bug #3940] [ruby-dev:42369]
+
+Thu Oct 21 00:05:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#pipe): get rid of deadlock on pipe.
+ a patch from Tomoyuki Chikanaga at [ruby-dev:42435]. #3970
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
+
+Wed Oct 20 23:54:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dbm/dbm.c: rdoc based on a patch by mathew meta AT
+ pobox.com, at [ruby-core:32853].
+
+Wed Oct 20 10:47:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): reject 0x1.p+0. [ruby-dev:42432] #3966
+
+Wed Oct 20 10:00:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): print floating point on "%#a".
+ [ruby-dev:42431] Bug#3965
+
+Tue Oct 19 19:30:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): clear ALT flag for %a.
+ [ruby-core:32841] [ruby-core:32848]
+
+Tue Oct 19 12:19:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): fix over-count of field size.
+
+Tue Oct 19 03:08:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): use HEXPREFIX flag for prefix of %a.
+ [ruby-core:32841]
+
+Mon Oct 18 13:18:01 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_class_init): Define
+ Digest::Class.new(). [Feature #3954]
+
+Mon Oct 18 12:58:40 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_pack): refine the document. [ruby-dev:42397]
+ (pack_unpack): ditto.
+
+Mon Oct 18 10:19:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (transport_request): @socket may be nil.
+ patched by Egbert Eich [ruby-core:32829]
+
+Mon Oct 18 09:57:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c (BSD_vfprintf): wrong padding around prefix and
+ floating point with %a. [ruby-dev:42403] Bug #3956
+
+Sun Oct 17 22:36:33 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/delta.rb: added an rdoc tag.
+
+Sun Oct 17 10:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_mod_remove_const): update rdoc.
+ [ruby-core:31957]
+
+Sun Oct 17 10:40:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_define_{class,module}_id_under): register to be
+ marked, which probably are defined and used internally.
+
+Sat Oct 16 11:10:55 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_encoding2cp): set codepage 20936
+ according to GB2312. [Bug #3937] [ruby-core:32758]
+
+Sat Oct 16 10:54:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (CPP): already used in .c.i rule.
+
+ * cygwin/GNUmakefile.in (DLLWRAP, WINDRES): add --driver-name and
+ --preprocessor options explicitly. [ruby-core:32776]
+
+Sat Oct 16 10:06:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/sdbm/_sdbm.c (SEEDUPS, BADMESS): make settable using command
+ line options.
+
+ * ext/sdbm/_sdbm.c (makroom): suppress unused result warning.
+
+ * ext/sdbm/extconf.rb: disable BADMESS, a library should not emit
+ messages directly.
+
+Sat Oct 16 08:39:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_strerror): get English message first, instead of
+ system default. see [ruby-dev:42358].
+
+Sat Oct 16 00:08:00 2010 Koichi Sasada <ko1@atdot.net>
+
+ * hash.c (rb_hash_aref): skip calling "default" method
+ if it is not needed, for speed-up.
+
+Fri Oct 15 23:36:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (NUM2DEVT, DEVT2NUM, PRI_DEVT_PREFIX): fallback to
+ unsigned int.
+
+Fri Oct 15 22:54:46 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_hresult2msg): get English message first,
+ instead of system default. [ruby-core:32765]
+
+Fri Oct 15 22:47:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (VALUE): prefer long over uintptr_t,
+ FIX2LONG expects VALUE to be long at least.
+
+ * include/ruby/ruby.h (FIX2LONG): parenthesize the argument.
+
+Fri Oct 15 20:30:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (dev_t): use RUBY_REPLACE_TYPE.
+
+ * file.c (rb_stat_inspect): use PRI_DEVT_PREFIX.
+
+Fri Oct 15 17:26:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_pack): simplify comparison of explicit_endian
+ as pointed by nobu.
+
+ * pack.c (pack_unpack): ditto.
+
+Fri Oct 15 16:40:37 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_pack): fix more than one modifiers appear in the
+ format string. [ruby-core:32793]
+
+ * pack.c (pack_unpack): ditto.
+
+Thu Oct 14 23:20:42 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_folderitem2_invokeverb.rb: refactoring.
+
+Thu Oct 14 22:18:29 2010 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, iseq.c, vm_insnhelper.c: rename variable name
+ (ip -> iseq).
+
+Thu Oct 14 20:41:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_pack): support endian modifiers: < and >.
+ [ruby-dev:42376] Feature #3491
+
+ * pack.c (pack_unpack): ditto.
+
+Thu Oct 14 20:50:51 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (reg_get_val): expand environment in
+ the pathname. [Bug #3907]
+
+Thu Oct 14 07:35:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (DEVT2NUM): added. Size of dev_t is depend on the
+ environment even if POSIX defines dev_t as unsigned integer.
+ For example, OpenVMS, 64bit Solaris 9, and NetBSD 6 defines
+ dev_t as 64bit unsigned integer.
+
+ * file.c (rb_stat_dev): use DEVT2NUM.
+
+ * file.c (rb_stat_dev_major): dev_t is not long. major(3)'s return
+ value is int.
+
+ * file.c (rb_stat_dev_minor): dev_t is not long. minor(3)'s return
+ value is int.
+
+ * configure.in: check size of dev_t.
+
+Thu Oct 14 07:22:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_and, rb_ary_or), class.c (rb_mod_init_copy),
+ gc.c (undefine_final), time.c (time_mload): get rid of
+ type-punning casts.
+
+Thu Oct 14 04:16:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (ruby_float_step): fix Numeric#step with infinity unit
+ doesn't works well. [ruby-core:32779]
+
+Wed Oct 13 23:16:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/enc-unicode.rb: get rid of lots of warnings.
+
+ * iseq.c (insn_operand_intern, rb_iseq_disasm): fix format specifiers.
+
+ * vm.c (thread_free): ditto.
+
+ * numeric.c (check_uint): get rid of overflow on LLP64 platforms.
+
+ * insns.def (opt_case_dispatch): use st_data_t.
+
+Wed Oct 13 22:32:34 2010 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI::unescape): bugfix to unescape the multibyte
+ string. Thanks nobu and tDiary dev members. [Bug #3909]
+
+Wed Oct 13 21:13:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (int_chr): raise error when the value is negative.
+
+Wed Oct 13 19:24:08 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm.c (ruby_vm_destruct): This function type was wrong; correct to the prototype.
+
+Wed Oct 13 14:58:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_num_to_uint): fix 32bit logic.
+
+Wed Oct 13 12:53:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_num_to_uint): added to check the range of arguments.
+ Mainly for negative value with NUM2UINT on 32bit environment.
+
+ * string.c (rb_str_concat): use rb_num_to_uint.
+
+Wed Oct 13 12:10:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (w32_error): get English message first, instead
+ of system default. see [ruby-core:32765].
+ [experimental]
+
+Wed Oct 13 11:04:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c (ruby_set_debug_option): define always for binary
+ compatibility with debug env enabled binary.
+
+ * signal.c (ruby_enable_coredump): ditto.
+
+Wed Oct 13 10:52:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (ruby_executable_node): missing prototype.
+
+Wed Oct 13 05:23:04 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * missing/strchr.c: add strlen's prototype.
+
+ * missing/strstr.c: ditto.
+
+Wed Oct 13 00:21:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (struct mktime_arg): constified.
+
+ * ext/syck/rubyext.c (mktime_do, mktime_r, rb_syck_mktime): fix
+ function signatures.
+
+Wed Oct 13 00:18:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (MurmurMagic): get rid of literal overflow.
+
+ * configure.in (RUBY_CHECK_PRINTF_PREFIX): check for printf format
+ specifier if possible.
+
+Tue Oct 12 23:58:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_open_osfhandle, rb_w32_wopen, rb_w32_pipe):
+ use uintptr_t instead of long for win64.
+
+ * win32/win32.c (socketpair_internal): suppress warnings.
+
+ * win32/win32.c (ftruncate): use HANDLE instead of long for win64.
+
+ * vsnprintf.c (BSD_vfprintf): fix cast.
+
+ * numeric.c (rb_num2fix): result of rb_num2long is SIGNED_VALUE.
+
+ * compile.c (iseq_build_body), error.c (set_syserr, get_syserr),
+ (syserr_initialize), gc.c (define_final, rb_gc_copy_finalizer),
+ (run_final), hash.c (rb_hash_aref, rb_hash_lookup2),
+ (rb_hash_fetch_m, rb_hash_clear, rb_hash_aset, eql_i),
+ iseq.c (iseq_load, iseq_data_to_ary), marshal.c (r_symlink),
+ thread.c (rb_thread_local_aref),
+ variable.c (generic_ivar_remove, ivar_get, rb_const_get_0),
+ (rb_cvar_get), vm.c (rb_vm_check_redefinition_opt_method),
+ vm_insnhelper.c (vm_get_ev_const), vm_method.c (remove_method),
+ ext/iconv/iconv.c (map_charset): use st_data_t.
+
+ * compile.c (iseq_build_body), insns.def (getglobal, setglobal),
+ iseq.c (iseq_load, iseq_data_to_ary), util.c (valid_filename):
+ use VALUE.
+
+ * gc.c (obj_free, rb_objspace_call_finalizer): fix truncating
+ cast.
+
+ * gc.c (mark_current_machine_context): suppress warnings.
+
+ * compile.c (iseq_compile_each): fix truncating cast.
+
+ * cont.c (fiber_setcontext): missing variable definition.
+
+Tue Oct 12 19:25:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (exc_to_s): use OBJ_INFECT.
+
+ * error.c (name_err_to_s): ditto.
+
+ * error.c (name_err_mesg_to_str): ditto.
+
+ * error.c (syserr_initialize): ditto.
+
+Tue Oct 12 19:07:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (syserr_initialize): taint message if mesg is given
+ and it is tainted.
+
+Tue Oct 12 18:25:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_ungetc): always see Bignum. On 32bit valid value
+ may be a Bignum. On 64bit for errors. [ruby-dev:42366]
+
+Tue Oct 12 18:25:04 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_concat): use unsigned int for GB18030.
+
+Tue Oct 12 17:53:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric (check_uint): the mask must refer to VALUE.
+
+Tue Oct 12 17:47:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric (check_uint): set MSB for negative value.
+
+ * numeric (rb_num2uint): return value's type of rb_num2ulong
+ is VALUE.
+
+ * numeric (int_chr): variable i can't be negative.
+
+Tue Oct 12 16:04:37 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_strerror): get English message first, instead
+ of system default. see [ruby-dev:42358].
+ [experimental]
+
+Tue Oct 12 15:52:35 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_strerror): unmap some range of errno for
+ workaround of VC10's strerror() and sys_nerr problem.
+ based on a patch from Akio Tajima, [ruby-dev:42355].
+
+Tue Oct 12 15:36:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_ungetc): use unsigned int for GB18030.
+
+Tue Oct 12 15:14:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_putc): support multibyte characters.
+ [ruby-core:30697]
+
+Tue Oct 12 15:10:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_enc_uint_chr): split from int_chr.
+
+ * numeric.c (int_chr): use rb_enc_uint_chr.
+
+ * include/ruby/encoding.h (rb_enc_uint_chr): added.
+
+Tue Oct 12 14:04:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (int_chr): a codepoint of Ruby M17N must be 32bit
+ unsigned int; GB18030 uses MSB. Also note that OnigCodePoint
+ is defined as unsigned int.
+
+Tue Oct 12 12:20:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): foolish mistake.
+
+Tue Oct 12 10:39:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_MINGW32): canonicalize only on mingw.
+
+Mon Oct 11 20:20:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (HTTP.get): specify ASCII-8BIT as the result
+ encoding of Zlib::GzipReader.
+ http://hibari.2ch.net/test/read.cgi/tech/1281473294/271
+
+Mon Oct 11 17:42:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (syserr_initialize): use mesg's encoding when locale
+ encoding is US-ASCII. If locale encoding is not US-ASCII,
+ assume err has non ASCII characters. [ruby-dev:42358]
+
+Mon Oct 11 14:03:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (syserr_initialize): set the encoding of Errno::*#message
+ as locale. [ruby-dev:42358]
+
+Mon Oct 11 06:38:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_set_encoding):
+ StringIO#set_encoding can get 2nd argument and optional hash
+ for API compatibility to IO. [ruby-dev:42356]
+
+Mon Oct 11 06:11:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_set_encoding): use rb_funcall2 when the io is not
+ a T_FILE. [ruby-dev:42356]
+
+Sun Oct 10 18:42:23 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#replace): Apply a bit of optimization.
+
+Sun Oct 10 10:20:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_MINGW32): canonicalize as like mswin version.
+
+Sun Oct 10 05:33:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_signal_buff_size, rb_signal_exec): moved
+ declarations from thread.c.
+
+Sat Oct 9 16:54:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RSHIFT): quote to get rid of argument expansion
+ for autoconf 2.68.
+
+Sat Oct 9 11:00:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_reset_event_flags, exec_event_hooks): ignore
+ hooks marked as removed.
+
+ * thread.c (thread_exec_event_hooks): remove hooks to be removed.
+
+ * thread.c (rb_threadptr_remove_event_hook, rb_remove_event_hook):
+ defer removing hooks if running the hooks. [ruby-dev:42350]
+
+Sat Oct 9 10:51:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_threadptr_exec_event_hooks): suppress each event
+ hooks separately.
+
+ * thread.c (thread_suppress_tracing): split from
+ ruby_suppress_tracing, accepting thread pointer and event mask.
+
+Sat Oct 9 08:16:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_threadptr_remove_event_hook): fix typo.
+
+Fri Oct 8 10:52:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RBCONFIG): depends on version.h due to
+ RUBY_PATCHLEVEL. [ruby-core:32709]
+
+Fri Oct 8 00:24:54 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Fixing documentation typos. [ruby-core:32712]
+
+Thu Oct 7 09:14:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_exec.c (vm_exec_core): Treat clang as non gcc on this
+ context: It has __asm__ but doesn't works well.
+
+Wed Oct 6 12:28:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/uri/generic.rb (URI::Generic#hostname): new method.
+ (URI::Generic#hostname=): ditto.
+
+ * lib/open-uri.rb: use URI#hostname
+
+ * lib/net/http.rb: ditto.
+
+ reported by Adam Majer. [ruby-core:32056]
+
+Wed Oct 6 11:52:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (fptr_finalize): write_mutex might have been destroyed
+ already in finalization phase, as the order of finalizers is not
+ guaranteed. rb_mutex_t should be used in place of Mutex object
+ in the future.
+
+Tue Oct 5 22:17:02 2010 wanabe <s.wanabe@gmail.com>
+
+ * win32/mkexports.rb: revert r29320 and r29402.
+
+Mon Oct 4 12:43:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (regexp): dregexp has literal string only at the head
+ and successors are array. [ruby-core:32682]
+
+Mon Oct 4 10:22:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (rand_init): This checks the value is in 32bit or not,
+ so use int32_t, not int.
+
+Mon Oct 4 09:47:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (rand_init): remove useless assignment.
+
+ * re.c (update_char_offset): remove unused variable.
+
+ * re.c (read_escaped_byte): ditto.
+
+Mon Oct 4 09:30:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/bn.rb (Integer#to_bn): OpenSSL::BN.new
+ accepts only Strings, so call Integer#to_s(16).
+ 16 is for an optimization. [ruby-dev:42336]
+
+Mon Oct 4 07:57:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (fiber_memsize): Return size.
+ Before this change, fiber_memsize always returns 0.
+
+Mon Oct 4 07:16:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/unicode.c (onigenc_unicode_property_name_to_ctype):
+ remove useless assignment.
+
+ * vm.c (vm_make_proc_from_block): ditto.
+
+ * variable.c (rb_ivar_count): ditto.
+
+Mon Oct 4 06:40:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (clean-rdoc): Don't use \ in variable expansion.
+ BSD make treats it as an escape character.
+
+Mon Oct 4 00:01:53 2010 wanabe <s.wanabe@gmail.com>
+
+ * tool/config.sub: revert r29320, r29324, r29347, r29354, r29365
+ to automake-1.11.1. [ruby-core:32634]
+
+ * win32/mkexports.rb: no longer use 'mingw64'. a patch from Luis Lavena
+ at [ruby-core:32678].
+
+Sun Oct 3 20:36:37 2010 Akio Tajima (arton) <artonx@yahoo.co.jp>
+
+ * test/win32ole/test_folderitem2_invokeverb.rb: Change creating
+ shortcut verb to 'Link' [Bug #3339]
+
+Sun Oct 3 19:44:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): get rid of duplicated ruby target when
+ already there it was.
+
+Sat Oct 2 22:59:32 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_thread.rb: add for win32ole with Thread.
+
+Fri Oct 1 17:03:00 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/webrick/test_httpproxy.rb (TestWEBrickHTTPProxy::test_upstream_proxy):
+ My machine fails this test at this line, saying 503 service unavailable.
+
+Thu Sep 30 16:11:08 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getenv): should return NULL if specified name
+ is empty. a patch from Heesob Park at [ruby-core:32650]
+
+Thu Sep 30 15:18:23 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (command_asgn): allow command_call to be right hand side
+ expression of chained assignment. [ruby-dev:42313]
+
+Thu Sep 30 10:55:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (ruby_setenv): workaround for old Windows. a patch from
+ Heesob Park. [ruby-core:32353]
+
+Thu Sep 30 09:29:06 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_form): change treatment of
+ undefined value in given array as latest internet draft for
+ application/www-form-urlencoded.
+ http://tools.ietf.org/html/draft-hoehrmann-urlencoded-01
+
+Thu Sep 30 09:34:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): fixed wrong type of return value of
+ SymGetModuleBase64(). [ruby-dev:42306]
+
+Wed Sep 29 21:04:05 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions::test_script_from_stdin):
+ As usual, PTY is not always available.
+
+Wed Sep 29 18:38:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.sub (x64): regularize only for pc vendor, and strip
+ useless 64 suffix.
+
+Wed Sep 29 17:53:02 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BIGDECIMAL_ENABLE_VPRINT):
+ VPrint is usually disabled. It's only used in debugging.
+
+Wed Sep 29 17:41:34 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_limit):
+ return the result of a block.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_save_limit):
+ add a test for the above change.
+
+Wed Sep 29 16:18:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (dump_thread): remove unused optional arguments.
+
+Wed Sep 29 13:26:30 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_rounding_mode):
+ return the result of a block.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_save_rounding_mode):
+ add a test for the above change.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_save_exception_mode):
+ add a test for the return value of BigDecimal.save_exception_mode.
+
+Wed Sep 29 12:45:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div2, BigDecimal_add2,
+ BigDecimal_sub2, BigDecimal_mult2, VpLimitRound): remove meaningless
+ casts to get rid of compiler warnings.
+
+Wed Sep 29 12:35:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VPrint, VpToString): fix format.
+
+Wed Sep 29 12:31:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/known_classes.rb (RDoc::KNOWN_CLASSES): add Encoding.
+
+Tue Sep 28 20:50:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.sub (x64): regularize same as mswin.
+
+Tue Sep 28 20:06:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): add windows support.
+ based on patches from Peter Weldon at [ruby-core:32551]
+
+Mon Sep 27 23:30:34 2010 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_case_dispatch), vm_insnhelper.c:
+ execute the procedures of "when" clauses by bytecode
+ instead of st_foreach() when the object does not hit
+ prepared hash. [ruby-dev:42304]
+
+Mon Sep 27 15:54:03 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/net/http/test_https.rb: As always, localhost is not
+ guaranteed to be resolved as 127.0.0.1. But a SSL
+ certificate needs a socket to listen on a specific address
+ where a CN resolves to. On situations where localhost is
+ not 127.0.0.1, these tests are not possible.
+
+Mon Sep 27 15:25:05 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb: resurrection of r29259.
+ this change depends on minitest 1.7.1.
+
+ * lib/test/unit/assertions.rb: ditto.
+
+Sun Sep 26 22:59:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.sub (x86_64-pc-mingw64): regularize.
+
+Sun Sep 26 22:21:07 2010 wanabe <s.wanabe@gmail.com>
+
+ * ext/openssl/ossl_hmac.c (ossl_hmac_hexdigest, ossl_hmac_s_hexdigest),
+ ext/openssl/ossl_pkey_ec.c (ossl_ec_group_set_seed),
+ ext/openssl/ossl_ssl_session.c (ossl_ssl_session_to_der),
+ ext/openssl/ossl_pkcs7.c (numberof): suppress warnings.
+ [ruby-core:31932]
+
+Sun Sep 26 10:25:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.{guess,sub}: updated to automake-1.11.1.
+
+Sat Sep 25 22:48:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_DLDFLAGS): fix quoting.
+
+Sat Sep 25 10:30:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_DLDFLAGS): use -unexported_symbol only
+ when available. http://trac.macports.org/ticket/26341
+
+Sat Sep 25 10:05:49 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Always add -mieee for Renesas SH4.
+ Thanks, Nobuhiro Iwamatsu. [Feature #3874] [ruby-core:32548]
+
+Sat Sep 25 01:34:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (install-cross): target to install cross-compiling
+ stuff.
+
+Fri Sep 24 23:44:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_call), vm.c (invoke_block_from_c),
+ vm_insnhelper.c (vm_yield_with_cfunc): pass given block.
+ [ruby-core:32075]
+
+ * vm_eval.c (rb_funcall_passing_block): new function to call
+ method with passing given block.
+
+Fri Sep 24 15:50:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_to_i): fix rdoc: String#to_i raises an
+ exception when base is invalid. [ruby-core:31685]
+
+Fri Sep 24 15:28:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_rindex): use rb_enc_prev_char instead of repeated
+ str_nth.
+ patched by Michael Selig [ruby-core:32498]
+
+Fri Sep 24 14:19:12 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/test_pty.rb: Same as 229281; existence of PTY class do not
+ guarantee a successful pty operation.
+
+Fri Sep 24 06:25:55 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.7.2 r5879.
+ * test/minitest/*.rb: ditto.
+
+Thu Sep 23 23:09:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_cref0): cref is stacked only in normal
+ iseqs, so check if it is the case first.
+
+Thu Sep 23 23:08:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.sub: mingw64 should use x86_64. [ruby-core:32514]
+
+Thu Sep 23 21:40:40 2010 wanabe <s.wanabe@gmail.com>
+
+ * ext/socket/raddrinfo.c (init_addrinfo, inspect_sockaddr): suppress
+ warnings. see [ruby-core:31932].
+
+Thu Sep 23 19:27:57 2010 wanabe <s.wanabe@gmail.com>
+
+ * thread_win32.c (w32_wait_events, w32_close_handle): suppress warnings.
+ see [ruby-core:31932].
+
+Thu Sep 23 18:54:39 2010 wanabe <s.wanabe@gmail.com>
+
+ * tool/config.sub: add mingw64.
+
+ * win32/mkexports.rb (Exports::Mingw64): added.
+
+ * win32/mkexports.rb (Exports::Mingw32): renamed from Exports::Mingw.
+
+Thu Sep 23 09:01:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_cref_push): no outer cref is needed for proc
+ from method. Bug #3786, Bug #3860, [ruby-core:32501]
+
+Wed Sep 22 17:12:01 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/openssl/utils.rb (OpenSSL#silent): always restore $VERBOSE.
+ [ruby-dev:42285]
+
+Wed Sep 22 16:59:40 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/test_prime.rb (TestPrime#test_new): the warning expected have
+ not been displayed when $VERBOSE == nil. Patch by Shota Fukumori
+ a.k.a. sora_h. [ruby-dev:42272]
+ Recovers $stderr even if StringIO.new fails. Reported by unak.
+
+Wed Sep 22 01:55:48 2010 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_method.rb: fix last commit.
+
+Wed Sep 22 01:49:52 2010 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_method.rb: add a test for [ruby-core:30534].
+
+Wed Sep 22 00:52:44 2010 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/rdoc/ri/store.rb (save_cache): remove duplicate entries.
+
+Wed Sep 22 00:00:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_f_pathname): Pathname() translated
+ from pathname.rb.
+
+Tue Sep 21 22:18:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/mkconfig.rb: fixed build problem on mswin64 introduced in r29278.
+
+Tue Sep 21 02:42:35 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/pathname/test_pathname.rb (TestPathname#test_mkdir): fix typo.
+
+Mon Sep 20 23:23:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (bracket): get rid of scanning at the end of the pattern
+ string, not to raise an exception while globbing command line.
+ [ruby-core:32478]
+
+Mon Sep 20 11:25:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (Init_pathname): Pathname#=~ undefinition
+ translated from pathname.rb.
+
+Mon Sep 20 02:34:11 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (check_rounding_mode, BigDecimal_mode):
+ raise ArgumentError instead of TypeError passing invalid modes.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_mode, test_round):
+ change against the above modifications.
+
+Sun Sep 19 22:08:39 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/mkmf.rb (try_link): rdoc
+ (try_compile): ditto
+ (try_cpp): ditto
+ (try_func): ditto
+ (try_var): ditto
+ (try_run): ditto
+ (egrep_cpp): ditto
+
+Sun Sep 19 20:43:33 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in (--disable-install-doc): disables capi too, in addition
+ to rdoc.
+ (--disable-install-rdoc): a new option for disabling only rdoc.
+ (--disable-install-capi): a new option for disabling only capi.
+
+Sun Sep 19 20:37:45 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (clean): removes all documents on cleaning.o
+ (CAPIOUT): new variable.
+ (clean-capi, distclean-capi, realclean-capi): new targets
+
+ * Makefile.in (clean-capi, distclean-capi, realclean-capi): ditto.
+
+ * win32/Makefile.sub (clean-capi, distclean-capi, realclean-capi):
+ ditto.
+
+Sun Sep 19 13:44:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_SO): fix an oversight of replace
+ RUBY_INSTALL_NAME with RUBY_SO_NAME. a patch from Jeremy Evans
+ at [ruby-core:32474].
+
+Sun Sep 19 07:48:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_unlink): Pathname#unlink and
+ Pathname#delete translated from pathname.rb.
+
+Sun Sep 19 06:06:07 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (check_rounding_mode): added for
+ converting symbol to rounding mode number.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mode, BigDecimal_round):
+ support to specify rounding mode by symbol.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_mode, test_round):
+ add tests for above changes.
+
+Sun Sep 19 05:14:35 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c: fix rounding algorithms for half-down
+ and half-even. This change is based on the patch created by Matthew
+ Willson, the reporter of this bug. [Bug #3803] [ruby-core:32136]
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests for above changes.
+
+Sat Sep 18 20:09:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_each_entry): Pathname#each_entry
+ translated from pathname.rb.
+
+Fri Sep 17 23:44:07 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/xpath_parser.rb, test/rexml/test_xpath.rb:
+ add missing method availability check. [ruby-core:32447]
+ Reported by Wiebe Cazemier. Thanks!!!
+
+Fri Sep 17 23:23:26 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_sax.rb: don't use thread and sleep to avoid slow test.
+
+Fri Sep 17 23:10:44 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_core.rb: enable.
+
+Fri Sep 17 22:46:02 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/: untabify.
+
+Fri Sep 17 22:29:56 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/: fix fixture data path. All REXML tests are worked.
+
+Fri Sep 17 22:15:15 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_listener.rb: remove needless codes.
+
+Fri Sep 17 22:12:23 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/: import REXML tests from
+ http://www.germane-software.com/repos/rexml/trunk/test/.
+ Many tests are failed temporary. I'll fix them quickly. Sorry.
+
+Fri Sep 17 16:48:49 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/io/console/test_io_console.rb (TestIO_Console::helper):
+ PTY.open is not guaranteed to work. On my machine opening a
+ pty is prohibited via process control group. On those cases
+ exceptions shall occur, and that doesn't mean our fault.
+ Skip those tests on such situations.
+
+Fri Sep 17 08:30:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tracer.rb: count only non-internal libraries in stack trace,
+ ignoring custom_require. [ruby-core:31858]
+
+Fri Sep 17 02:18:41 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * tool/mkconfig.rb: Fix build with m4 1.4.15 generating duplicate
+ lines in config.status. According to nobu, the mswin32 port may
+ depend on the piece of code in question, so the behavior is left
+ unchanged on mswin32.
+
+Thu Sep 16 23:47:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_opendir): Pathname#opendir translated
+ from pathname.rb.
+
+Thu Sep 16 21:40:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::GlobOption): merged RejectOption.
+
+ * test/runner.rb: utilize GlobOption.
+
+Thu Sep 16 21:31:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/driver.rb (RDoc::RI::Driver.setup_options)
+ (RDoc::RI::Driver.fixup_options): split from process_args.
+ libraries should not parse ARGV inside, since it's a task of
+ applications, not libraries.
+
+Thu Sep 16 21:02:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths.each): HOMEDIR can be nil
+ if $HOME is unset.
+
+Thu Sep 16 14:50:42 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/ruby/test_file_exhaustive.rb (TestFileExhaustive::test_expand_path):
+ ENV["HOME"] might not be set. On those cases without it an
+ exception raises here, which effectively disables later
+ tests on this method.
+
+Thu Sep 16 08:30:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): fix rdoc. pointed out by Tomoyuki
+ Chikanaga at [ruby-core:32395], and a patch from Daniel
+ Bovensiepen at [ruby-core:32403].
+
+Thu Sep 16 08:27:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/extconf.rb: use expanded sysconfdir with empty DESTDIR.
+ [ruby-core:32394]
+
+Thu Sep 16 06:07:24 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_rmdir): Pathname#rmdir translated
+ from pathname.rb.
+
+Thu Sep 16 00:36:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/extconf.rb: Remove Readline 6 check because
+ Ruby's license is now GPLv3 compatible. [ruby-core:28736]
+
+Thu Sep 16 00:26:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * COPYING: change Ruby's License from a dual license with GPLv2
+ to a dual license with 2-clause BSDL.
+ [ruby-dev:42166] [ruby-core:31971]
+ [ruby-dev:39167] [ruby-core:25272]
+
+ * COPYING.ja: ditto.
+
+ * BSDL: added. this is from The FreeBSD License.
+
+Wed Sep 15 21:07:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_mkdir): Pathname#mkdir translated
+ from pathname.rb.
+
+Wed Sep 15 13:37:00 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb: "localhost" not guaranteed to
+ resolve to "127.0.0.1". On my machine it is "::1" instead.
+ The problem is, you have to connect to the imaps server via
+ the canonical name written in a server certificate, and that
+ of the server.cert is "localhost". So you have to listen to
+ the address of what "localhost" resolves to. I think this
+ situation cannot be resolved in a handy manner because the
+ test "test_imaps_post_connection_check" is actually
+ expecting to connect to a server via an address other than
+ the CN. On my machine several assertions won't pass because
+ the test cannot connect to the server.
+
+Wed Sep 15 09:12:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_puts): fix for wide char encoding strings.
+ [ruby-dev:42212]
+
+Wed Sep 15 07:27:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_format_m): mentioned about Hash argument. a patch
+ from Daniel Bovensiepen at [ruby-core:32386].
+
+ * sprintf.c (get_hash): ditto, and fix typo.
+
+Wed Sep 15 07:22:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_entries): Pathname#entries translated
+ from pathname.rb.
+
+Wed Sep 15 02:13:44 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/closure.c : Don't use FFI closure alloc on OpenBSD.
+ Thanks Jeremy Evans! [ruby-core:32384]
+
+Tue Sep 14 20:17:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_s_getwd): Pathname.getwd and
+ Pathname.pwd translated from pathname.rb.
+
+Tue Sep 14 05:13:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_s_glob): Pathname.glob translated
+ from pathname.rb.
+
+Tue Sep 14 01:24:51 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (ruby_getaddrinfo__aix): suppress a
+ warning.
+
+Mon Sep 13 20:48:30 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_zero_p): Pathname#zero? translated
+ from pathname.rb.
+
+Mon Sep 13 19:56:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/rubysocket.h (__DARWIN_ALIGNBYTES): workaround of a
+ bug in system header of darwin 9. [ruby-core:32341]
+
+Mon Sep 13 18:11:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_do): fix typo. a patch from Peter Weldon
+ at [ruby-core:32327].
+
+Mon Sep 13 10:12:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): reject Float('0x0.').
+ [ruby-dev:42239] Bug #3820
+
+Mon Sep 13 09:23:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_bn.c (ossl_bn_is_prime): fix comparison
+ with rb_scan_args. Before this fix, OpenSSL::BN#prime?
+ is fully broken. [ruby-dev:42225]
+
+Mon Sep 13 06:45:24 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_writable_real_p):
+ Pathname#writable_real? translated from pathname.rb.
+
+Sun Sep 12 21:21:50 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: [ruby-core:32096] Thanks Colin Bartlett.
+
+Sun Sep 12 19:30:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_world_writable_p):
+ Pathname#world_writable? translated from pathname.rb.
+
+Sun Sep 12 09:16:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_writable_p): Pathname#writable?
+ translated from pathname.rb.
+
+Sun Sep 12 08:36:15 2010 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rlimit_resource_name2int): support more limits:
+ RLIMIT_MSGQUEUE, RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_RTTIME and
+ RLIMIT_SIGPENDING.
+ (Init_process): ditto.
+ patch by Run Paint Run Run. [ruby-core:32262]
+
+Sun Sep 12 04:27:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rlimit_resource_name2int): use STRCASECMP to avoid
+ ALLOCA_N.
+
+Sat Sep 11 16:47:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (ruby_setenv): raise if putenv and SetEnvironmentVariable
+ failed, because of the restriction of the size on Windows.
+ based on a patch from Peter Weldon at [ruby-core:32304]. fix:
+ Bug#3812, [ruby-core:32250]
+
+Sat Sep 11 15:19:57 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/httpauth/digestauth.rb (WEBrick::Config::DigestAuth):
+ Add documentation
+
+ * lib/webrick/config.rb (WEBrick::Config::DigestAuth): Add
+ documentation
+
+Sat Sep 11 12:32:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_set_kcode, rb_get_kcode): removed
+ zombie prototype declarations. a patch from Eric Hodel
+ at [ruby-core:32305].
+
+Sat Sep 11 06:53:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_symlink_p): Pathname#symlink?
+ translated from pathname.rb.
+
+Fri Sep 10 23:03:43 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_sticky_p): Pathname#sticky? translated
+ from pathname.rb.
+
+Fri Sep 10 19:11:13 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#continue): add
+ method for generating HTTP/1.1 100 continue response if the client
+ expects it, otherwise does nothing. Patch by Brian Candler.
+ ref #855.
+
+ * test/webrick/test_httprequest.rb: test added.
+
+Fri Sep 10 17:49:34 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/x509-internal.rb: removed unused local
+ variable.
+
+ * test/openssl/*: less warnings while test running with -w.
+
+Fri Sep 10 16:49:20 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * class.c (rb_scan_args): Add support for optional keyword
+ argument hash. [ruby-dev:42221] [ruby-dev:38048]
+
+ * README.EXT, README.EXT.ja: Update documentation accordingly.
+
+ * dir.c (dir_initialize): Make use of the new rb_scan_args()
+ feature.
+
+ * io.c (rb_io_s_popen, rb_scan_open_args, rb_io_initialize)
+ (rb_io_s_pipe, open_key_args, io_s_foreach, io_s_readlines)
+ (rb_io_s_read, rb_io_set_encoding): Ditto.
+
+ * transcode.c (str_transcode, econv_args)
+ (econv_primitive_convert): Ditto.
+
+ * ext/zlib/zlib.c (rb_gzreader_initialize): Ditto.
+
+Fri Sep 10 10:33:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (rb_genrand_ulong_limited): renamed from
+ rb_rand_internal and now this is public API.
+
+ * include/ruby/ruby.h (rb_genrand_ulong_limited): added.
+
+ * bignum.c (big_sparse_p): use rb_genrand_ulong_limited.
+
+Fri Sep 10 13:07:22 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/digest/lib/digest.rb: removed unused exception variable
+ assignment to avoid a warning.
+
+Fri Sep 10 07:29:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_systmpdir): assume system default tmpdir
+ safe. [ruby-dev:42089]
+
+Fri Sep 10 07:03:23 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_size_p): Pathname#size? translated from
+ pathname.rb.
+
+Fri Sep 10 02:15:29 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_peercred): support OpenBSD-current.
+ patch by Jeremy Evans. [ruby-core:32240]
+
+Thu Sep 9 23:25:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): skip allocator frames which have no
+ name. [ruby-core:32231]
+
+Thu Sep 9 22:39:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_size): Pathname#size translated from
+ pathname.rb.
+
+Thu Sep 9 22:34:48 2010 wanabe <s.wanabe@gmail.com>
+
+ * compile.c (case_when_optimizable_literal): When float value can be
+ treated as integer, add to table hash of case that way.
+ based on a patch from Ikuo KOBORI. [ruby-dev:42038]
+
+ * insns.def (opt_case_dispatch): ditto.
+
+ * test/ruby/test_case.rb: add tests.
+
+Thu Sep 9 17:15:15 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/net/http/test_https.rb (test_identity_verify_failure): follows
+ the SSL hostname check error message of openssl.
+
+Thu Sep 9 10:44:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_env.rb (test_aset): OpenBSD acts like NetBSD in
+ that it ignores characters after = in ENV.
+ patched by Jeremy Evans [ruby-core:32184]
+
+Thu Sep 9 09:02:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/rbinstall.rb (install?): gemspec filename should include
+ its version. patched by Luis Lavena [ruby-core:32165]
+
+Wed Sep 8 22:46:31 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ssl_get_error): Thread context switch was
+ blocked on Windows while blocking call for SSLSocket. Need to
+ convert errno for letting rb_io_wait_readable detect EWOULDBLOCK.
+ Patch by arton. ref #3794.
+
+Wed Sep 8 20:56:57 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_setgid_p): Pathname#setgid? translated
+ from pathname.rb.
+
+Wed Sep 8 06:25:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_setuid_p): Pathname#setuid? translated
+ from pathname.rb.
+
+Tue Sep 7 21:03:35 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_readable_real_p):
+ Pathname#readable_real? translated from pathname.rb.
+
+Mon Sep 6 23:07:25 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_world_readable_p):
+ Pathname#world_readable? translated from pathname.rb.
+
+Mon Sep 6 11:03:13 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * Fixed wrong check of missing functions. Patch by Adrian Quark.
+ ref #3400
+ The patch contains following comment:
+ This patch should avoid unnecessary incompatibility with future
+ versions of Openssl. Changes suggested by bmaher_at_amazon.com.
+
+Mon Sep 6 10:46:55 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * Fixed exception message for SSL post connection check failure. Patch
+ by Paul Betteridge. ref [Bug #3704]
+
+Mon Sep 6 10:31:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_s_get_line_buffer):
+ Readline.line_buffer should return locale string.
+ [ruby-dev:42184] #3791
+
+Mon Sep 6 09:47:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): check there is at least 1 digit after
+ "0x" before ".". [ruby-dev:42183] #3790
+
+Mon Sep 6 09:44:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): check integer overflow.
+ [ruby-dev:42180] #3789
+
+Mon Sep 6 06:17:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_readable_p): Pathname#readable?
+ translated from pathname.rb.
+
+Sun Sep 5 23:02:34 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_owned_p): Pathname#owned?
+ translated from pathname.rb.
+
+Sat Sep 4 23:48:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_readlink): symlink target should be in
+ filesystem encoding.
+
+Sat Sep 4 10:40:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (ruby_init_ext): export for golfers.
+
+ * vm_core.h (rb_iseq_eval, rb_iseq_compile_with_option): ditto.
+
+Sun May 23 17:29:41 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (capi): uses a timestamp file to get rid of
+ generating twice.
+
+Fri Jun 18 01:33:21 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * enc/Makefile.in (realclean): has been missing. necessary
+ for make realclean-enc.
+
+Fri Sep 3 23:51:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_socket_p): Pathname#socket?
+ translated from pathname.rb.
+
+Fri Sep 3 06:40:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (chfunc): pass through exceptions.
+
+ * io.c (rb_io_bufwrite, rb_io_bufread): added.
+
+ * process.c (rb_fork_err): protect from exceptions.
+
+Fri Sep 3 06:16:07 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_pipe_p): Pathname#pipe?
+ translated from pathname.rb.
+
+Fri Sep 3 06:14:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (chfunc): restore errno from SystemCallError and
+ propagate proper exception to the parent. [ruby-dev:41965]
+
+Thu Sep 2 22:10:38 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_file_p): Pathname#file?
+ translated from pathname.rb.
+
+Thu Sep 2 09:12:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): don't forget to free
+ memory.
+
+Thu Sep 2 09:01:13 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): unicodize.
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): convert arguments of
+ CreateChild() from ACP to WideChar.
+
+Thu Sep 2 06:53:43 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_directory_p): Pathname#directory?
+ translated from pathname.rb.
+
+Wed Sep 1 22:03:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_grpowned_p): Pathname#grpowned?
+ translated from pathname.rb.
+
+Wed Sep 1 17:39:02 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.7.1 r5835.
+ * test/minitest/*.rb: ditto.
+
+Wed Sep 1 16:50:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_setup_table): optimized. don't create hash objects
+ when given pattern is ASCII only.
+
+ * string.c (tr_find): ditto.
+
+Wed Sep 1 14:35:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_rotate_m): fix typo of rdoc.
+ patched by Andrei Kulakov [ruby-core:31975]
+
+Wed Sep 1 14:33:36 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enum.c (enum_zip): fix typo of rdoc.
+ patched by Andrei Kulakov [ruby-core:31974]
+
+Wed Sep 1 12:56:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (ruby_suppress_tracing): restore the state and invoke
+ the func with normal state. a patch from Satoshi Shiba <shiba
+ AT rvm.jp> at [ruby-dev:42162]. [ruby-core:31783]
+
+Tue Aug 31 21:10:23 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_exist_p): Pathname#exist? translated
+ from pathname.rb.
+
+Tue Aug 31 17:32:34 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/stubs.c: fix [Bug #3771] "VC++ can't make ext/tk with enabling
+ stubs". Thanks, Akio Tajima [ruby-dev:42159].
+
+Tue Aug 31 03:42:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_setup_table): fix bug in r29146.
+ Initialize table even if cflag is 0; tr_find see whether
+ del is empty or not.
+
+ * string.c (tr_find): nodel can't be NULL; if NULL, it means
+ it is not specified.
+
+Mon Aug 30 21:29:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_executable_real_p):
+ Pathname#executable_real? translated from pathname.rb.
+
+Mon Aug 30 15:00:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_setup_table): initialize negating table when
+ negating string is given. [ruby-core:31851]
+
+ * string.c (tr_find): add a sentence for the time when
+ target characters include negating one.
+
+ * string.c (rb_str_count): move definition.
+
+Mon Aug 30 07:32:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_executable_p): Pathname#executable?
+ translated from pathname.rb.
+
+Sun Aug 29 23:54:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser/ruby.rb (RDoc#parse_call_parameters): don't
+ include assignment. [Bug #3759], [ruby-dev:42154]
+
+ * lib/rdoc/parser/ruby.rb (RDoc#parse_class): ignore non-constant
+ name singleton class. [Bug #3759], [ruby-dev:42154]
+
+Sun Aug 29 23:25:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_get_path_check): clarify error message for
+ ASCII-incompatible path name.
+
+Sun Aug 29 16:02:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (node_name.inc): remove command option -n and give
+ file as stdin, because IronRuby 1.1 still doesn't support it.
+ So now we can use ir.exe as BASERUBY.
+
+ * tool/node_name.rb: read stdin with while gets.
+
+Sun Aug 29 13:22:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_method_id_and_class): curried proc has no
+ method. [ruby-core:31871]
+
+Sun Aug 29 12:51:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_provide_feature): clarify error message for frozen
+ $LOADED_FEATURES. based on a patch from Run Paint Run Run at
+ [ruby-core:31913].
+
+Sun Aug 29 12:19:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_failed): should honor encoding. [ruby-core:31915]
+
+Sun Aug 29 09:35:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (clean): exclude *.inc. [ruby-dev:41931]
+
+ * common.mk (distclean): include *.inc.
+
+ * common.mk (help): change description about clean and distclean.
+
+Sat Aug 29 06:34:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_chardev_p): Pathname#chardev?
+ translated from pathname.rb.
+
+Sat Aug 28 17:39:33 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_exception_mode,
+ BigDecimal_save_rounding_mode, BigDecimal_save_limit): added.
+
+ * test/bigdecimal/test_bigdecimal.rb: added tests for the above
+ features.
+
+Sat Aug 28 08:11:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_blockdev_p): Pathname#blockdev?
+ translated from pathname.rb.
+
+Fri Aug 27 16:20:01 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * string.c (rb_str_prepend): new method by Shota Fukumori (sora_h)
+ [Feature #3765]
+
+Fri Aug 27 15:24:20 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * math.c (math_atan2): you should know that M_PI is not the feature
+ of C90.
+ fixed build failure caused by r29115.
+
+Fri Aug 27 15:26:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (null_device): move from io.c.
+
+Fri Aug 27 12:47:44 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * math.c (math_atan2): change the behavior when x and y are zero.
+ [ruby-dev:42090] [Bug #3736] [ruby-dev:42116]
+
+ * test/ruby/test_math.rb (test_atan2): add tests for the above
+ changes.
+
+Fri Aug 27 12:26:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * object.c (rb_obj_class): remove mention of obsolete method.
+ a patch from Run Paint Run Run at [ruby-core:31842].
+
+Fri Aug 27 12:25:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (null_device): the name of null device. [ruby-dev:41791]
+
+Fri Aug 27 07:57:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle_bang): bail out from modification during
+ shuffle.
+
+ * array.c (rb_ary_sample): ditto.
+
+Fri Aug 27 05:11:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_sysopen): Pathname#sysopen translated
+ from pathname.rb.
+
+Thu Aug 26 22:53:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle): rdoc fix. argument name was missing.
+ a patch from Run Paint Run Run at [ruby-core:31848].
+
+Thu Aug 26 21:49:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_readlines): Pathname#readlines
+ translated from pathname.rb.
+
+Thu Aug 26 10:37:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regint.h (OnigStackIndex): the type should be intptr_t.
+ Original Oniguruma assumes the size of long and that of void *
+ are equal, but it's not true on LLP64 platform: mswin64.
+ originally patched by shintaro kuwamoto [ruby-dev:42133]
+
+Thu Aug 26 10:38:11 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * test/dl/test_base.rb: AIX does not have dynamically loadable lib[cm].
+
+ * test/fiddle/helper.rb: AIX does not have dynamically loadable lib[cm].
+
+Thu Aug 26 09:49:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle_bang): check number of argument.
+
+Tue Aug 26 09:11:40 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
+ rmpd_set_thread_local_exception_mode, VpGetException,
+ VpSetException): thread-local exception mode.
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
+ rmpd_set_thread_local_precision_limit, VpGetPrecLimit,
+ VpSetPrecLimit): thread-local precision limit.
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
+ rmpd_set_thread_local_rounding_mode, VpGetRoundMode,
+ VpSetRoundMode, VpException, VpInternalRound):
+ thread-local rounding mode.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mode, BigDecimal_round,
+ VpIsRoundMode, VpGetRoundMode, VpSetRoundMode, VpActiveRound,
+ VpMidRound, VpLeftRound), ext/bigdecimal/bigdecimal.h:
+ use unsigned short for rounding mode.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_mode): add test for
+ setting rounding mode.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_thread_local_mode):
+ add test for setting mode thread-locally.
+
+Thu Aug 26 07:29:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_{shuffle_bang,sample}): use Random class object.
+
+ * random.c (try_get_rnd): use default_rand for Random as same as
+ singleton methods.
+
+ * random.c (rb_random_real): check the range of result.
+
+Wed Aug 25 22:11:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_binread): Pathname#binread translated
+ from pathname.rb.
+
+Wed Aug 25 03:42:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): workaround for VC9 for x64.
+ reported by kuwamoto shintaro in [ruby-dev:42125].
+
+Tue Aug 24 23:28:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * .gitignore: updated.
+
+Tue Aug 24 22:07:28 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_read): Pathname#read translated from
+ pathname.rb.
+
+Tue Aug 24 10:11:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: read API version from include/ruby/version.h.
+
+ * {bcc,win}32/setup.mak (-version-): ditto.
+
+ * version.h (RUBY_LIB_VERSION): use API version numbers.
+
+Tue Aug 24 07:07:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle_bang, rb_ary_sample): add optional
+ argument random. [ruby-dev:41923] [EXPERIMENTAL]
+
+ * random.c (rb_random_{int32,real,bytes}): fallback to normal
+ method invocation.
+
+Tue Aug 24 06:08:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/version.h (RUBY_API_VERSION_*): renamed and moved
+ from version.h. [ruby-dev:42103]
+
+Tue Aug 24 05:58:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ChangeLog: flushed. [ruby-dev:42050]
+
+Tue Aug 24 01:14:58 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): to_f must underflow
+ when the exponent is less than DBL_MIN_10_EXP - BASE_FIG.
+
+ * test/bigdecimal/test_bigdecimal.rb (test_to_f): added test for the above changes.
+
+Mon Aug 23 23:14:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_each_line): Pathname#each_line
+ translated from pathname.rb.
+
+Mon Aug 23 22:30:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (version.o): depends on both of version.h and
+ include/ruby/version.h. [ruby-dev:42063]
+
+Mon Aug 23 13:09:27 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * backport r29071 from ruby_1_8;
+
+ * ext/openssl/ossl_asn1.c (obj_to_asn1bool): fixed ASN1::Boolean
+ encoding issue for OpenSSL 1.0.0 compatibility.
+ ASN1::Boolean.new(false).to_der wrongly generated "\1\1\377" which
+ means 'true'.
+
+ ASN1_TYPE_set of OpenSSL <= 0.9.8 treats value 0x100 as 'false'
+ but OpenSSL >= 1.0.0 treats it as 'true'. ruby-ossl was using
+ 0x100 for 'false' for backward compatibility. Just use 0x0 for
+ the case OpenSSL >= OpenSSL 0.9.7.
+
+ * test/openssl/test_asn1.rb: test added.
+
+Mon Aug 23 12:28:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_search): fix: 4th argument should be regexp
+ object. patched by shintaro kuwamoto [ruby-dev:41667] #3459
+
+Mon Aug 23 02:23:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): make sure to have digit-sequence after 'p'
+ for hexadecimal-floating-constant. [ruby-dev:42105]
+
+Mon Aug 23 00:23:07 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: [ruby-core:31695]
+
+Sun Aug 22 09:08:02 2010 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (UINT2NUM): fix ifdef condition for LLP64.
+ reported by Daniel Gutmanas. [ruby-core:31778]
+
+Sun Aug 22 06:46:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (RAND_UPTO): macro for random number.
+
+Sun Aug 22 05:55:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: fix typo. a patch from Eric Wong at
+ [ruby-core:31810].
+
+Sat Aug 21 20:09:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm.c: add missing prototype of rb_iseq_clone for r29063.
+
+Sat Aug 21 18:54:56 2010 wanabe <s.wanabe@gmail.com>
+
+ * vm.c (vm_define_method): copy iseq to avoid overwriting iseq->klass.
+ #2502, #3136. see #2420.
+
+Sat Aug 21 17:36:42 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_split): Pathname#split translated from
+ pathname.rb.
+
+Fri Aug 20 10:40:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_expand_path): Pathname#expand_path
+ translated from pathname.rb.
+
+Thu Aug 19 22:44:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (usage): add usage.
+
+ * tool/make-snapshot (package): accept revision as BRANCH@REV.
+
+Thu Aug 19 19:53:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_timestamp): fix a constant type.
+
+ * ext/socket/raddrinfo.c (get_afamily): suppress a warning.
+
+Thu Aug 19 19:28:47 2010 Tanaka Akira <akr@fsij.org>
+
+ * thread_pthread.c (native_sleep): suppress a warning for platforms
+ which time_t is int.
+
+Thu Aug 19 18:15:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: Add a tool to merge commits between branches.
+ developed by URABE Shyouhei
+
+Thu Aug 19 17:19:09 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * backport r28621 and r28632 from ruby_1_8;
+
+ * ext/openssl/ossl_config.c, ext/openssl/lib/openssl/config.rb,
+ ext/openssl/lib/openssl.rb: reimplement OpenSSL::Config in Ruby.
+ Now it should work on windows.
+
+ * test/openssl/test_config.rb: added tests for OpenSSL::Config#dup.
+
+ * test/openssl/test_config.rb: added tests for Config#clone.
+
+Thu Aug 19 12:04:39 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * array.c (rb_ary_permutation, rb_ary_repeated_permutation,
+ rb_ary_repeated_combination, rb_ary_product):
+ use ary_make_shared_copy instead of ary_make_substitution.
+ [ruby-dev:42067] [Bug #3708]
+
+ * test/ruby/test_array.rb (test_product, test_repeated_permutation,
+ test_repeated_combination): append assertions against [Bug #3708].
+
+Thu Aug 19 11:11:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enum.c (enum_inject): fix typo of rdoc.
+ patched by Andrei Kulakov [ruby-core:31768]
+
+Thu Aug 19 10:06:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_extname): Pathname#extname translated
+ from pathname.rb.
+
+Thu Aug 19 06:03:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_push_frame): initialize block_iseq. a patch
+ from Peter Weldon at [ruby-core:31757].
+
+Wed Aug 18 19:08:17 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * array.c (ary_make_shared): revert r29037, it occurs SEGV some
+ situations.
+
+Wed Aug 18 18:36:32 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * array.c (ary_make_shared),
+ test/ruby/test_array.rb (test_permutation):
+ always return the original array when it is shared.
+ [ruby-dev:42067] [Bug #3708]
+
+Wed Aug 18 01:37:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c: revert r26701; it introduces Bug #3681.
+ [ruby-core:31677]
+
+Tue Aug 17 20:05:29 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb (test_threaded_flush): test "hi" is not output
+ twice.
+
+Tue Aug 17 15:13:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/date.rb: Re-revert the part of r28950.
+ It reverted the part of r28619.
+
+Tue Aug 17 13:00:07 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_dirname): Pathname#dirname translated
+ from pathname.rb.
+
+Tue Aug 17 07:50:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/extconf.rb: check functions more.
+ [ruby-core:31722]
+
+Tue Aug 17 07:42:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_make_independent_expand): set capacity properly. a
+ patch from Peter Weldon at [ruby-core:31734]. [ruby-core:31653]
+
+Tue Aug 17 07:38:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb, lib/rubygems.rb (Gem.suffixes): include empty
+ suffix. [ruby-core:31730]
+
+Mon Aug 16 22:16:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_basename): unused variable removed.
+
+Mon Aug 16 21:39:33 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_basename): Pathname#basename translated
+ from pathname.rb.
+
+Mon Aug 16 20:26:13 2010 Narihiro Nakamura <narihiro@netlab.jp>
+
+ * gc.c (gc_profile_result): Index begins with 1.
+
+Mon Aug 16 20:21:17 2010 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_profile_result): use size_t. based on patches from
+ Tomoaki NISHIYAMA <tomoakin@kenroku.kanazawa-u.ac.jp> at
+ [ruby-dev:42042].
+
+Mon Aug 16 19:23:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_dtoa, ruby_hdtoa): use same representations for
+ Infinity and NaN. a part of a patch from Peter Weldon at
+ [ruby-core:31725].
+
+ * util.c (ruby_hdtoa): fixed buffer overrun. based on a patch
+ from Peter Weldon at [ruby-core:31725].
+
+Mon Aug 16 17:44:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * common.mk (capi): use -b option for doxygen. It disables stdout
+ buffering and prevents wrong reordering between stdout and stderr
+ even when the output of "make" is redirected.
+
+Sun Aug 15 19:59:58 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#set_error):
+ Fix for possible cross-site scripting (CVE-2010-0541).
+ Found by Apple, reported by Hideki Yamane.
+ Patch by Hirokazu Nishio <nishio.hirokazu AT gmail.com>.
+
+Mon Aug 16 12:29:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (test-rubyspec-precheck): split
+ from test-rubyspec.
+
+ * common.mk (test-rubyspec): moved from Makefile.in.
+
+Mon Aug 16 10:00:45 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.h (llabs): never never never never never
+ use "long long".
+
+ * ext/bigdecimal.bigdecimal.c (BigDecimal_to_i): get rid of a warning.
+
+Sun Aug 15 18:14:20 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_dump, BigDecimal_inspect,
+ VPrint, VpToString, VpVarCheck): use PRIuSIZE, PRIdSIZE, PRIdVALUE,
+ and PRIxVALUE.
+
+Sun Aug 15 16:14:31 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (Logging.postpone): close @log only when it's available.
+
+Sun Aug 15 13:30:35 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.h (VpVtoD): fix a type of e.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_dump, BigDecimal_inspect):
+ fix format for size_t.
+
+Sun Aug 15 00:22:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/extconf.rb, ext/bigdecimal/bigdecimal.h
+ (labs, llabs): support environments missing labs and llabs.
+
+ * ext/bigdecimal/bigdecimal.h (vabs): added.
+
+ * ext/bigdecimal/extconf.rb, ext/bigdecimal/bigdecimal.h,
+ ext/bigdecimal/bigdecimal.c, test/bigdecimal/test_bigdecimal.rb
+ (TestBigDecimal#test_new): replace U_LONG, S_LONG, S_INT, and U_INT
+ with appropriate standard or ruby-provided types.
+
+Sun Aug 15 00:15:45 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_utime): Pathname#utime translated
+ from pathname.rb.
+
+Sat Aug 14 21:04:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_gc_mark_threads): deprecated.
+
+Sat Aug 14 19:12:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/{coverage,objspace}/extconf.rb ($INCFLAGS): explicitly add
+ topdir and top_srcdir. [ruby-dev:42031]
+
+Sat Aug 14 17:48:41 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * test/objspace/test_objspace.rb: added test for objspace.
+
+ * ext/objspace/objspace.c: considers T_ZOMBIE by lazy sweep GC.
+
+ * gc.c: considers that dsize was 0. [ruby-dev:42022]
+
+Sat Aug 14 15:33:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, include/ruby/defines.h (RUBY_FUNC_EXPORTED): macro
+ to declare exported function.
+
+ * array.c (rb_ary_memsize), string.c (rb_str_memsize),
+ variable.c (rb_objspace_data_type_memsize): used in
+ objspace. [ruby-dev:42022]
+
+ * io.c (rb_io_memsize): constified.
+
+ * regcomp.c (onig_memsize): constified.
+
+ * gc.h (rb_objspace_each_objects): used in objspace.
+
+ * vm_core.h (rb_{get,set,reset}_coverages): used in coverage.
+
+ * include/ruby/intern.h (rb_time_interval): used in io/wait.
+
+ * include/ruby/intern.h (rb_make_backtrace, rb_make_exception):
+ used in ripper.
+
+ * node.h (rb_parser_{malloc,realloc,calloc,free}): ditto.
+
+Fri Aug 13 22:48:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_truncate): Pathname#truncate translated
+ from pathname.rb.
+
+Fri Aug 13 16:11:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (MiniTest::Unit.new): extend before initialize.
+ [ruby-dev:41970]
+
+ * lib/test/unit.rb (MiniTest::Unit.autorun): use Test::Unit::Mini.
+
+Thu Aug 12 23:39:02 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_make_symlink): Pathname#make_symlink
+ translated from pathname.rb.
+
+Thu Aug 12 21:18:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_lstat): Pathname#lstat translated
+ from pathname.rb.
+
+Thu Aug 12 05:58:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_char_to_option_kcode): used in
+ ripper.
+
+ * node.h (rb_reserved_word): ditto.
+
+Thu Aug 12 00:19:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_rubyoptions.rb (test_script_from_stdin): disable
+ echo. [ruby-dev:41966]
+
+Wed Aug 11 23:28:22 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * lib/cmath.rb (CMath.sqrt): use floating-point value.
+ [ruby-core:31672] [Bug #3678]
+
+ * test/test_cmath.rb: added for testing lib/cmath.rb.
+
+Wed Aug 11 20:57:25 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: merge from branches/ruby_1_9_2, and move io/console.
+ [ruby-dev:41924]
+
+Wed Aug 11 11:01:15 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c: don't use // comment.
+
+Wed Aug 11 06:18:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_stat): Pathname#stat translated
+ from pathname.rb.
+
+Tue Aug 10 21:18:04 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_to_[ifr]): don't allow complex with in-exact
+ imaginary zero to be converted.
+
+Tue Aug 10 20:56:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/optparse.rb: suppress a warning.
+
+ * test/test_mutex_m.rb: ditto.
+
+Tue Aug 10 20:56:13 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (Date::Format::Bag): use Struct.
+ as an experimental.
+
+Tue Aug 10 20:45:35 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_rename): Pathname#rename translated
+ from pathname.rb.
+
+Tue Aug 10 20:16:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/resolv.rb (get_info): get rid of a warning.
+
+Tue Aug 10 19:56:13 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: [ruby-core:31658]
+
+Tue Aug 10 17:24:56 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT.ja: rb_tainted_str_new_cstr() is an alias of
+ rb_tainted_str_new2().
+
+Tue Aug 10 15:24:30 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c, ext/bigdecimal/bigdecimal.h,
+ ext/bigdecimal/extconf.rb: BASE and BASE_FIG are defined
+ based on the size of BDIGIT.
+
+ * ext/bigdecimal/bigdecimal.c, ext/bigdecimal/bigdecimal.h:
+ use BDIGIT for Real#frac.
+
+Tue Aug 10 15:19:45 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.h, ext/bigdecimal/bigdecimal.c:
+ add extern declaration of rb_cBigDecimal.
+
+Tue Aug 10 14:09:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest::parse_uri):
+ rollup leading slashes. [ruby-core:31657]
+ patched by Jamison Wilde
+ NOTE: //authority/path is valid relative URI both RFC2396 and
+ RFC3986. So when give a relative URI-like string to URI lib,
+ users must care leading slashes.
+
+Tue Aug 10 11:26:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/un.rb (httpd): SIGQUIT and SIGHUP are not guaranteed to exist.
+
+Tue Aug 10 06:26:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_readlink): Pathname#readlink translated
+ from pathname.rb.
+
+Mon Aug 9 22:15:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_open): Pathname#open translated from
+ pathname.rb.
+
+Mon Aug 9 22:11:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_signal.rb (TestSignal#test_exit_action): use
+ Process.spawn instead of Process.fork.
+
+Mon Aug 9 15:59:02 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/source_index.rb: rename unused variable.
+
+ * lib/rubygems/specification.rb: rename unused variable.
+
+ * lib/rubygems/specification.rb: remove unused variable.
+
+Mon Aug 9 14:10:06 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Fix type of mimeout_state.buf.
+ [nkf-bug:20079]
+
+Mon Aug 9 06:52:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (sys_warning_1): show error message.
+
+Mon Aug 9 06:50:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_require.rb (test_require_too_long_filename):
+ clear -w option.
+
+Mon Aug 9 00:18:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb ($ignore_error): initialize after $nmake.
+
+Sun Aug 8 19:16:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_make_link): Pathname#make_link
+ translated from pathname.rb.
+
+Sun Aug 8 16:42:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems.rb (Gem.find_files): reverted to use globbing.
+
+ * lib/rubygems.rb (Gem.find_files): fixed search order same as
+ default behavior.
+
+ * gem_prelude.rb, lib/rubygems.rb (Gem.suffixes): return truly
+ require-able suffixes only.
+
+Sun Aug 8 13:20:57 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_ftype): Pathname#ftype translated
+ from pathname.rb.
+
+Sun Aug 8 12:41:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_escape): no similar messages twice.
+ [ruby-core:31048]
+
+Sun Aug 8 10:07:45 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime_with_timespec): suppress warnings.
+
+Sun Aug 8 08:58:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUBY_H_INCLUDES): add subst.h.
+
+Sun Aug 8 08:55:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (ruby_snprintf): printf attribute.
+
+Sun Aug 8 07:47:29 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/rbconfig/obsolete.rb: show the location which use Config.
+
+Sun Aug 8 07:29:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_fnmatch): Pathname#fnmatch and
+ Pathname#fnmatch? translated from pathname.rb.
+
+Sun Aug 8 07:18:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/subst.h (snprintf): redefinition moved from ruby.h.
+ (vsnprintf): ditto.
+
+Sun Aug 8 00:41:42 2010 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/subst.h: new file for substitute standard functions.
+
+ * include/ruby/missing.h: don't substitute "close", etc. here.
+
+ * include/ruby/ruby.h: include ruby/subst.h at last.
+ This prevents substituting "close" in unistd.h.
+
+Sat Aug 7 19:51:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (EnvUtil.invoke_ruby): merge stdout and stderr
+ if capture_stderr is :merge_to_stdout.
+ (assert_normal_exit): print abnormal output properly.
+
+Sat Aug 7 19:04:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * missing/close.c: undef the macros "getpeername", "getsockname" and
+ "shutdown" to prevent infinite recursion.
+
+Sat Aug 7 18:37:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * missing/close.c: undef the macro "close" to prevent infinite
+ recursion.
+
+Sat Aug 7 18:20:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_lchown): Pathname#lchown translated
+ from pathname.rb.
+
+Sat Aug 7 17:49:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/missing.h: moved BROKEN_CLOSE replacements from
+ include/ruby/ruby.h.
+
+Sat Aug 7 17:40:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb, lib/rbconfig/obsolete.rb: warn obsolete and
+ deprecated Config.
+
+Sat Aug 7 17:18:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): follow the change of
+ install-rb-default line format at r28850, which causes second
+ run to create dummy makefiles.
+
+Sat Aug 7 14:08:44 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/mkmf.rb: change instance variable to global.
+
+Sat Aug 7 13:59:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pathname/pathname.c (path_sub_ext): don't clobber shared string.
+ [ruby-core:31640]
+
+Sat Aug 7 13:33:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (vm_call0): fix for VM_METHOD_TYPE_NOTIMPLEMENTED.
+ [ruby-dev:41953]
+
+Sat Aug 7 09:47:06 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: fix checking version of GCC.
+
+Sat Aug 7 09:31:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (Init_pathname): fix number of arguments for
+ Pathname#chown.
+
+Sat Aug 7 09:28:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): use assert. fix
+ faildesc.
+
+ * test/pathname/test_pathname.rb (test_lchmod): test Pathname#lchmod
+ using assert_normal_exit.
+
+Sat Aug 7 08:26:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_chown): Pathname#chown translated
+ from pathname.rb.
+
+Sat Aug 7 02:09:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_lchmod): Pathname#lchmod translated
+ from pathname.rb.
+
+Fri Aug 6 21:30:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_chmod): Pathname#chmod translated from
+ pathname.rb.
+
+Fri Aug 6 20:13:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * rational.c (nurat_div): divided by infinity should be zero.
+
+ * rational.c (nurat_div): divided by float zero should be
+ infinity. [ruby-core:31626]
+
+Fri Aug 6 18:59:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (realpath_rec): rb_str_modify depends on the length, so
+ resize instead.
+
+Fri Aug 6 18:56:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (clean-ext): fixed directories to be removed.
+
+Fri Aug 6 17:42:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/depend: add space at the beginning of @ignore_error.
+
+ * lib/mkmf.rb: ditto.
+
+Fri Aug 6 17:38:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (clean): add prelude.c, config.log, and rbconfig.rb.
+
+ * common.mk (distclean): remove encdb.h, config.log, and rbconfig.rb.
+
+Fri Aug 6 17:35:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in: ignore error from RMDIRS.
+
+ * enc/depend: ditto.
+
+ * lib/mkmf.rb: ditto.
+
+Fri Aug 6 05:53:32 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_mtime): Pathname#mtime translated from
+ pathname.rb.
+
+Thu Aug 5 22:09:30 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_ctime): Pathname#ctime translated from
+ pathname.rb.
+
+Thu Aug 5 21:20:31 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (NODE_ARGSCAT, NODE_ARGSPUSH): drop unused ARGSCAT
+ results when poped is true. [ruby-dev:41933], [Bug #3658]
+ This is retry of r28870 and r28873 which were reverted.
+
+Thu Aug 5 20:13:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (String functions): mention
+ rb_str_resize and rb_str_set_len.
+
+Thu Aug 5 19:59:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_set_len): bail out when buffer overflowed
+ probably.
+
+Thu Aug 5 18:36:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (nucomp_marshal_load): should check the argument.
+ [ruby-core:31622]
+
+ * rational.c (nurat_marshal_load): ditto
+
+ * marshal.c (w_float): should not append a dot if no fractal part
+ exists. [ruby-dev:41936]
+
+Thu Aug 5 17:11:43 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (void_expr_gen): add 'possibly' to warning message.
+ [ruby-core:31611]
+
+Thu Aug 5 16:57:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_make_pattern): fold continuous PLAINs to get rid of
+ snail at too deep path. [ruby-dev:41871]
+
+Thu Aug 5 16:42:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_set_len): should fail to modify shared string.
+
+Thu Aug 5 14:12:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): ensure sopath to be modifiable
+
+Thu Aug 5 12:39:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_make_independent_expand): fix buffer overflow
+ while shrinking.
+
+Thu Aug 5 06:42:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c (realpath_rec): call rb_str_modify before rb_str_set_len.
+
+Wed Aug 4 19:37:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_set_len): rb_str_modify cannot work before the
+ length is set, which is a precondition for rb_str_modify.
+
+Wed Aug 4 15:47:21 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): no need to create the directory
+ at each library file. this change makes making ext faster.
+
+Wed Aug 4 06:25:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_atime): Pathname#atime translated from
+ pathname.rb.
+
+Tue Aug 3 21:16:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (Init_Random): add Random::DEFAULT.
+
+Tue Aug 3 21:01:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_check_hash_type): added.
+
+Tue Aug 3 20:30:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_eq): never equal to infinity.
+ [ruby-core:31603]
+
+ * rational.c (nurat_div): hack for integral float divisor.
+
+Tue Aug 3 14:42:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/extmk.rb: remove purelib, fixes a bug in r28440, r28441.
+
+ * spec/default.mspec: ditto.
+
+ * template/Doxyfile.tmpl: ditto.
+
+Tue Aug 3 14:19:42 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/driver.rb (setup_pager): no need to check the existence
+ of pagers. the following code checks whether they are executable or
+ not.
+
+Tue Aug 3 12:03:57 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * tool/runruby.rb: no purelib.
+
+Tue Aug 3 07:52:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/purelib.rb: no longer used since the default load path of
+ miniruby is empty.
+
+Tue Aug 3 00:53:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def, vm_core.h: fixed typo. reported by Rocky Bernstein
+ <rockyb AT rubyforge.org> at [ruby-core:31596].
+
+Mon Aug 2 21:51:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): rb_str_set_len modifies ptr
+ since r26303.
+
+Mon Aug 2 21:16:03 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: NONAMELESSUNION defined only if gcc
+ version is older than 3.4.4. [ruby-core:31567] [Bug #3637]
+ * ext/win32ole/extconf.rb: ditto.
+
+Mon Aug 2 16:34:32 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (native_thread_join): need to wait thread, of course.
+ [ruby-dev:41911]
+
+Mon Aug 2 12:22:22 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (file_expand_path): wrong condition. [ruby-core:31591]
+
+Mon Aug 2 05:34:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_realdirpath): Pathname#realdirpath
+ translated from pathname.rb.
+
+Sun Aug 1 23:04:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb: describe superclasses explicitly.
+
+Sun Aug 1 23:04:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_modify_expand, rb_str_resize): get rid of
+ repeating malloc and realloc.
+
+Sun Aug 1 22:16:30 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_hash): use rb_memhash and
+ take care of negative finite numbers properly.
+ [ruby-core:31582][Bug #3640]
+
+Sun Aug 1 20:57:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_realpath): Pathname#realpath translated
+ from pathname.rb.
+
+Sun Aug 1 17:27:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub: needs stddef.h for size_t. a patch from
+ Akio Tajima at [ruby-dev:41905].
+
+Sun Aug 1 14:59:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_sub_ext): Pathname#sub_ext translated
+ from pathname.rb.
+
+Sun Aug 1 10:23:48 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/init.rb (IRB.parse_opts): set VERBOSE to true when debug
+ switch called in irb. a patch from Andrew Grimm in
+ [ruby-core:31558].
+
+Sun Aug 1 09:35:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (big_op): comparison of bignum and infinity has returned 1
+ or -1, but it must return boolean.
+
+Sun Aug 1 09:44:25 2010 Tanaka Akira <akr@fsij.org>
+
+ * class.c (rb_include_module): don't clear the method cache if the
+ included module has no method.
+ reported by Eric Wong. [ruby-core:31559]
+
+Sun Aug 1 09:21:32 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_sub): Pathname#sub translated
+ from pathname.rb.
+
+Sun Aug 1 09:12:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h: latest x86_64 mingw defines stati64.
+ [ruby-core:27516]
+
+Sun Aug 1 08:51:52 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: fix typo. [ruby-core:31564][Bug #3636]
+
+Sat Jul 31 23:15:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_inspect): Pathname#inspect translated
+ from pathname.rb.
+
+Sat Jul 31 15:50:03 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (Init_pathname): The alias,
+ Pathname#to_path, is translated from pathname.rb.
+
+Sat Jul 31 09:12:36 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_to_s): Pathname#to_s translated
+ from pathname.rb.
+
+Sat Jul 31 08:20:07 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/ssl.rb (WEBrick::Utils.create_self_signed_cert):
+ merged r28784 from ruby_1_8: wrongly created dummy SSL certificate
+ with version == 3 (no such version) and serial == 0 (must be >0).
+
+Fri Jul 30 21:43:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_hash): Pathname#hash translated
+ from pathname.rb.
+
+Fri Jul 30 12:42:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/imap.rb (example): use IO#noecho to read password if
+ possible, and defer until needed. [ruby-dev:41889]
+
+ * lib/net/imap.rb (example): support starttls option.
+ [ruby-dev:41888]
+
+Fri Jul 30 08:51:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): home directory must be absolute.
+ [ruby-core:31537]
+
+Fri Jul 30 08:33:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): should check if could find user.
+ [ruby-core:31538]
+
+Fri Jul 30 07:59:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_add_suffix): fixed a bug returning uninitialized
+ value.
+
+Fri Jul 30 07:48:04 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: use TK_XINCLUDES on tkConfig.sh when not empty,
+ even if MacOS X Aqua version [ruby-dev:41883].
+
+Thu Jul 29 22:28:35 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_cmp): Pathname#<=> translated
+ from pathname.rb.
+
+Thu Jul 29 06:51:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (EXT_SRCS): add ext/json/parser/parser.c.
+
+Thu Jul 29 05:52:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): pass baselen to rmext.
+
+Thu Jul 29 02:38:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: not [freebsd] but [freebsd*] for AS_CASE.
+
+Wed Jul 28 22:23:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_eq): Pathname#{==,===,eql?} translated
+ from pathname.rb.
+
+Wed Jul 28 19:37:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): VC6 or later have stddef.h.
+
+ * include/ruby/missing.h: need to include stddef.h for size_t.
+
+ * include/ruby/missing.h: shouldn't declare as dllimport when building
+ ruby itself (for Windows).
+
+Wed Jul 28 17:11:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/*.c: include missing.h
+
+Wed Jul 28 09:38:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * cont.c: typos.
+
+Wed Jul 28 09:24:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c: (RB_PAGE_SIZE): renamed from PAGE_SIZE. [ruby-dev:41870]
+
+ * cont.c: (RB_PAGE_MASK): renamed from PAGE_MASK.
+
+Tue Jul 27 23:09:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_taint): use rb_obj_taint.
+ (path_untaint): Pathname#untaint translated from
+ pathname.rb.
+
+Tue Jul 27 18:59:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_framework): added.
+
+Tue Jul 27 18:33:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * defines.h, intern.h, missing.h, ruby.h, st.h, util.h: include
+ config.h and defines.h for autoconf macros.
+
+Tue Jul 27 16:27:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (flo_cmp): typo.
+
+Tue Jul 27 16:09:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * class.c, compile.c, dir.c, file.c, iseq.c, parse.y, random.c:
+ clean unused-value warnings.
+
+ * cont.c, process.c, vm_exec.h: clean cast warnings.
+
+Mon Jul 26 22:34:37 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_taint): Pathname#taint translated from
+ pathname.rb.
+
+Mon Jul 26 18:18:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (config.h): add include guard.
+
+ * win32/Makefile.sub, bcc32/Makefile.sub (config.h): ditto.
+
+Mon Jul 26 14:38:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XCFLAGS): missing.h needs config.h.
+
+Mon Jul 26 14:08:47 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/missing.h: revert a part of r28727. config.h is expected
+ to include only once, before including defines.h.
+ including it here breaks some macro definitions.
+
+Mon Jul 26 13:52:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: define BROKEN_CLOSE only on FreeBSD.
+ This needs to merge to 1.9.2.
+
+Mon Jul 26 13:01:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_mark): should mark iseq itself other than normal
+ iseq. [ruby-dev:41880]
+
+Mon Jul 26 11:51:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: define BROKEN_CLOSE on FreeBSD.
+ This fixes build failure on MSVC. [ruby-core:31481]
+
+ * include/ruby/ruby.h, include/ruby/missing.h:
+ use BROKEN_CLOSE for replacing close(2).
+
+Mon Jul 26 09:51:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_mark): mark only self of normal iseqs, not
+ nodes. [ruby-dev:41874]
+
+Sun Jul 25 05:37:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_cmp): honor the result of infinite? method of the
+ other. [ruby-core:31470]
+
+ * test/ruby/envutil.rb (EnvUtil#.suppress_warning): added.
+
+ * test/ruby/test_float.rb (TestFloat#test_Float): suppress
+ warnings under --verbose.
+
+Fri Jul 23 16:07:32 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/mutex_m.rb (sleep): added Mutex_m#sleep to support
+ ConditionVariable.
+
+Fri Jul 23 15:09:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_MINGW32): ignore msvc suffix.
+
+ * configure.in (RUBY_TRY_CFLAGS): try with werror turned on.
+
+Fri Jul 23 09:02:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): fixed out-of-boundary access at invalid
+ multibyte characters.
+
+Fri Jul 23 09:00:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XCFLAGS): reverted mistakenly removed option.
+ [ruby-dev:41872]
+
+ * include/ruby/missing.h: needs ruby/config.h.
+
+Thu Jul 22 20:58:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_EXTERN): unnecessary after all.
+
+Thu Jul 22 17:33:47 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * complex.c (nucomp_to_i): allow complex with imaginary zero to be
+ converted.
+
+ * complex.c (nucomp_to_f, nucomp_to_r): ditto.
+
+Thu Jul 22 20:12:56 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread_pthread.c (get_stack): fix memory leak; pthread_attr_destroy
+ must be called even when pthread_getattr_np is used.
+ [ruby-core:31269]
+
+Thu Jul 22 16:27:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): fix broken Regexp#inspect when it
+ is ASCII-8BIT and non-ASCII character.
+ The length of character should be from original byte string.
+ [ruby-core:31431]
+
+Thu Jul 22 14:30:17 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/missing.h: add prototype for ruby_close().
+
+Thu Jul 22 12:58:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_EXTERN): ignore invalid attribute.
+
+ * configure.in: fix for older autoconf.
+
+Thu Jul 22 12:02:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/{intern,io}.h: add missing prototypes.
+
+Thu Jul 22 06:38:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XCFLAGS): use -fvisibility=hidden if possible.
+
+ * configure.in (RMDIR): use --ignore-fail-on-non-empty if possible.
+
+ * configure.in (RUBY_EXTERN): FUNCTION-BODY was missing.
+
+Thu Jul 22 03:02:55 2010 Eric Hodel <drbrain@segment7.net>
+
+ * README.EXT: fix signature of rb_ensure and rb_rescue to match
+ implementation.
+
+Wed Jul 21 23:07:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in: get rid of embedding an absolute path.
+
+Wed Jul 21 15:22:17 2010 Evan Phoenix <evan@fallingsnow.net>
+
+ * lib/rubygems/custom_require.rb, gem_prelude.rb: Load code from
+ from gems properly.
+
+Wed Jul 21 15:15:02 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c: add short documentation about named reference.
+ [ruby-core:31294]
+
+Wed Jul 21 15:00:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (local_push_gen): disable unused variable warnings in
+ eval. [ruby-dev:41869]
+
+Wed Jul 21 13:57:37 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_method.c (rb_method_boundp): revert r28543, r28564.
+ They may be merged in Ruby 2.0. [ruby-core:31217]
+
+Wed Jul 21 13:37:35 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/uri/common.rb: Have URI#route_to, URI#route_from accept
+ string-like arguments [ruby-core:30961]
+
+ * lib/uri/generic.rb: ditto for URI.join, URI#merge
+
+Wed Jul 21 12:39:15 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/cmath.rb (CMath#cbrt): cbrt should accept a negative real
+ numbers. [ruby-core:31234]
+
+Wed Jul 21 12:31:30 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/uri/common.rb: Have URI() and URI.join accept URI objects in
+ addition to strings. [ruby-core:30960]
+
+Wed Jul 21 11:55:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_hdtoa): renamed from BSD__hdtoa.
+
+Tue Jul 20 11:35:11 2010 Evan Phoenix <evan@ruby-lang.org>
+
+ * lib/rubygems.rb: Load the custom require if --disable-rubygems
+ was used.
+
+Tue Jul 20 11:27:18 2010 Evan Phoenix <evan@ruby-lang.org>
+
+ * gem_prelude.rb: Pull in rubygem's custom require
+
+ * lib/rubygems.rb: Handle always having custom require available
+
+Tue Jul 20 18:39:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RSTRING_GETMEM): new macro to get ptr and
+ len at once.
+
+ * string.c (rb_str_cmp, str_eql, rb_str_eql): trivial improvements.
+
+Tue Jul 20 18:23:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/fiddle/closure.c (closure_data_type),
+ ext/fiddle/function.c (function_data_type): rb_data_type_t has
+ changed.
+
+Tue Jul 20 14:21:38 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: don't call after_gc_sweep() after when garbage_collect()
+ was called, because rb_sweep_method_entry() free live unlinked
+ method entries. [ruby-core:31169]
+
+Tue Jul 20 12:42:06 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (rb_getaddrinfo): according to my
+ valgrind output this variable should be initialized beforehand.
+
+Tue Jul 20 12:50:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_flush_buffer): write and buffer operations should be
+ monolithic. [ruby-core:31348]
+
+Tue Jul 20 12:27:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#copy): check file name
+ separator boundary. [ruby-core:31360]
+
+Mon Jul 19 18:34:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (get_strpath): check the type.
+ (path_initialize): bypass to_path call for T_STRING.
+ (path_freeze): implemented.
+
+ * ext/pathname/lib/pathname.rb (Pathname#freeze): removed.
+
+Mon Jul 19 12:33:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_clear): should not unshare embedded array, and
+ should make unshared array embedded.
+
+Mon Jul 19 09:00:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS (Kernel#instance_eval): add an incompatible change since
+ the 1.9.1 release. [ruby-core:31336]
+
+Mon Jul 19 05:46:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_data_type_t): add new feature macros.
+
+Sun Jul 18 21:20:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_clear): no need to duplicate buffer just before
+ clearing.
+
+Sun Jul 18 16:31:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_data_type_t): restructured. [ruby-dev:41862]
+ add parent member.
+
+ * error.c (rb_typeddata_inherited_p): new function.
+
+Sun Jul 18 01:09:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_initialize): return a value.
+
+Sun Jul 18 00:02:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/lib/pathname.rb (Pathname#initialize): removed.
+
+ * ext/pathname/pathname.c (path_initialize): implemented.
+ (get_strpath): new function.
+ (set_strpath): ditto.
+
+Sat Jul 17 19:01:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (MiniTest::Unit#process_args): refactored.
+
+Sat Jul 17 18:30:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/file2lastrev.rb: don't depend on pathname.rb if File.realpath
+ is available.
+
+Sat Jul 17 14:10:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_add_suffix): fixed type warnings.
+
+Sat Jul 17 13:48:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/lib/pathname.rb: moved from lib/pathname.rb.
+ require pathname.so.
+
+ * ext/pathname/pathname.c: new file to define empty Pathname class.
+
+ * ext/pathname/extconf.rb: new file.
+
+Sat Jul 17 13:04:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_wakeup_alive): split from rb_thread_wakeup.
+ merged from r13476. c.f. [ruby-core:31320]
+
+Sat Jul 17 10:07:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb: MiniTest::Unit is different class from
+ Test::Unit, and install runner before loading test/minitest.
+
+Fri Jul 16 14:58:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): run tests only when
+ any tests have not run.
+
+ * bin/testrb, test/runner.rb: use Test::Unit.start.
+
+Fri Jul 16 12:06:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (ext-arch): prune directories start with '-'.
+
+Thu Jul 15 21:43:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * numeric.c (fix_divide): must not use rb_rational_new1 for coercion
+ because it returns an argument itself when canonical mode is set.
+ [ruby-core:31279]
+
+Thu Jul 15 21:38:31 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (bm_free): fix memory leak. [ruby-core:30869] [Bug #3466]
+
+Thu Jul 15 15:47:32 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regexec.c (onig_search): don't skip non-ANYCHARs when
+ .* fails to match. This causes to fail matching
+ ANYCHAR_STAR with LOOK_BEHIND. This fix is workaround
+ and disable the optimization. [ruby-dev:41851]
+
+Thu Jul 15 06:11:29 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/rdoc/markup/attribute_manager.rb: fixing ri output when special
+ characters are inside html tags. Thanks Tomo Kazahaya! [Bug #3512]
+
+Thu Jul 15 06:01:42 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (guess_local_offset): use the UTC offset of an older date on
+ 64bit time_t environment.
+
+Thu Jul 15 02:42:51 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/test/unit.rb (setup_argv): convert to using optparse, adding
+ --help and -I. [ruby-core:30154]
+
+Thu Jul 15 00:35:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (localtime_with_gmtoff_zone): renamed from
+ localtime_with_gmtoff and return the timezone abbreviation name.
+ (guess_local_offset): return the isdst and timezone abbreviation name.
+ (localtimew): use the returned isdst and timezone abbreviation name.
+ [ruby-core:31275]
+
+Wed Jul 14 20:23:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (frame_func_id), vm_eval.c (rb_iterate),
+ vm_insnhelper.c (vm_yield_with_cfunc): as the name of a C-level
+ block, use the current method ID at the creation point.
+ [ruby-dev:41852]
+
+Wed Jul 14 18:18:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regexec.c (match_at): add end point to enclen's argument.
+ This only effect on compiling with -DONIG_DEBUG_MATCH.
+
+Tue Jul 13 21:34:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c: libedit is missing declaration of
+ rl_getc.
+
+Tue Jul 13 21:31:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_daemon): split from proc_daemon.
+
+ * process.c (rb_fork_err): suppress gcc 4.4 warnings.
+
+ * random.c (fill_random_seed): ditto.
+
+Tue Jul 13 21:01:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (establishShell): chfunc must not raise any
+ exceptions.
+
+Tue Jul 13 20:58:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_DEFAULT_ARCH): adjust for target
+ cpu. [ruby-core:31243]
+
+Tue Jul 13 20:46:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (rb_dlhandle_close): should not pass a dynamic
+ string to rb_raise directly.
+
+Tue Jul 13 12:04:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * missing/close.c: keep original errno.
+
+Mon Jul 12 01:58:56 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/csv.rb: Fix unused variable warnings.
+ Patch by Run Paint [ruby-core:30991]
+
+ * lib/date.rb: ditto
+
+ * lib/debug.rb: ditto
+
+ * lib/drb/drb.rb: ditto
+
+ * lib/drb/invokemethod.rb: ditto
+
+ * lib/irb/ruby-lex.rb: ditto
+
+ * lib/irb/slex.rb: ditto
+
+ * lib/logger.rb: ditto
+
+ * lib/pathname.rb: ditto
+
+Sun Jul 11 21:20:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT{,.ja} (rb_block_call): fixed about third/fourth
+ arguments to the block. based on [ruby-core:31192] by Asher
+ Haig. [Bug #3558]
+
+Sun Jul 11 17:01:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in ({,dist-,real-}clean-ext): should also omit
+ semicolon when omitting "in WORDS" of FOR-statement.
+
+ * tool/rmdirs: ditto.
+
+Sun Jul 11 11:07:42 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rdoc/test_rdoc_ri_driver.rb (test_formatter): add a test. a
+ patch from caleb clausen in [ruby-core:31182].
+
+Sat Jul 10 21:43:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime_with_timespec): fix precision handling for
+ %:z and %::z.
+
+Fri Jul 9 22:32:54 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c: unused declarations removed.
+
+Fri Jul 9 21:20:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime_with_timespec): clear colons at unknown
+ directive.
+
+Fri Jul 9 21:04:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c: don't call tzset. strftime.c doesn't depend on
+ the global timezone.
+
+Fri Jul 9 20:30:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): 24:00 should be the beginning of the next
+ day even if the leap second, 23:59:60, exists.
+
+Fri Jul 9 01:08:46 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/emitter.rb (initialize): line_width is
+ a valid option passed to the emitter.
+
+ * test/psych/test_psych.rb: corresponding tests.
+
+Fri Jul 9 00:49:46 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/emitter.c (line_width, set_line_width): preferred line may
+ be set on the emitter.
+
+ * test/psych/test_emitter.rb: corresponding tests.
+
+Thu Jul 8 15:47:34 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_conv_enc_opts): fix infinite loop because
+ of ISO-2022-JP conversion with empty string.
+ patched by Brian Buchanan [ruby-core:31107]
+
+Thu Jul 8 08:16:57 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb (push): adding version
+ and header emit options.
+
+ * test/psych/test_psych.rb: corresponding test.
+
+Thu Jul 8 08:01:03 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/emitter.c: updating documentation about emit options
+
+ * ext/psych/lib/psych/core_ext.rb: ditto
+
+ * ext/psych/lib/psych.rb (dump): passing emit options to emitter.
+
+ * ext/psych/lib/psych/nodes/node.rb: ditto
+
+ * ext/psych/lib/psych/visitors/emitter.rb: sending emit options to
+ YAML emitter. [ruby-core:28318]
+
+Thu Jul 8 06:05:58 2010 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime_with_timespec): support %:z and %::z.
+ [ruby-dev:41841]
+
+Thu Jul 8 00:15:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gem_prelude.rb: provide workaround for gem activation. Currently,
+ gem activation does not work by default. Now it can be worked
+ around by requiring "rubygems" first. [ruby-core:29486]
+ a patch from Evan Phoenix in [ruby-core:31096].
+
+ * lib/rubygems.rb: ditto.
+
+Wed Jul 7 10:01:34 2010 Adrian Bloomer <adrian.bloomer@gmail.com>
+
+ * numeric.c (fix_rev): Replaced fix_rev with '~num | FIXNUM_FLAG'.
+
+Wed Jul 7 13:22:20 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (ruby_find_basename): set correct baselen.
+
+Wed Jul 7 13:02:59 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * vm_method.c (rb_method_boundp): respond_to?(:protected_method,
+ true) should return true. Pointed out by Marc-Andre Lafortune.
+ [ruby-dev:41837]
+
+Wed Jul 7 12:00:24 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (ruby_find_basename): should initialize f.
+
+Wed Jul 7 11:44:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_raise): add invalid header to
+ exceptions.
+
+Wed Jul 7 10:26:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * missing/close.c: ignore ECONNRESET.
+ FreeBSD wrongly sets ECONNRESET on close(2) and
+ it causes false-negative exceptions. [ruby-dev:41778]
+
+ * configure.in: ditto.
+Tue Jul 6 22:57:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c (nogvl_copy_stream_sendfile): jump to retry_sendfile directly
+ to avoid select() on a socket which TCP state is CLOSED.
+ patch by Eric Wong. [ruby-core:31053]
+
+Tue Jul 6 21:45:34 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io/console/console.c (winsize_row): should return actual screen
+ size, not buffer size.
+
+Tue Jul 6 08:35:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/dl/lib/dl/import.rb (handler): add a more helpful error message
+ when calling import_symbol or import_function without calling
+ dlload. Thanks nobu! [ruby-core:30996]
+
+Tue Jul 6 00:34:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (thread_free): free altstack to prevent memory leak. a patch
+ from Tomoyuki Chikanaga in [ruby-dev:41815]. [Bug #3537]
+
+Tue Jul 6 00:29:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (NONASCII_MASK): NONASCII_MASK must be unsigned.
+ [ruby-dev:41782]
+
+Mon Jul 5 16:05:39 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * vm_method.c (rb_method_boundp): Return false for protected
+ methods when called from Kernel#respond_to?. [ruby-dev:40461]
+
+Mon Jul 5 12:32:01 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb (parse_string): support
+ timezones that are not one hour off. [ruby-core:31023]
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
+
+Sun Jul 4 22:49:54 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_syntax.rb: split test_syntax from test_system.rb.
+
+Sun Jul 4 22:02:02 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_system.rb (test_syntax): unified with test_syntax2.
+
+Sun Jul 4 21:00:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_system.rb (test_syntax2): moved from sample/test.rb
+ [ruby-dev:41721]
+
+Sun Jul 4 17:13:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (swallow, prepare_getline_args, rb_io_getline_1): fix for
+ paragraph mode reading in non-ascii-compatible encoding.
+ [ruby-dev:41803]
+
+Sat Jul 3 16:14:10 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): add two new constants
+ BigDecimal::INFINITY and BigDecimal::NAN.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (BigMath.exp): modify the
+ behaviors for infinity arguments as same as Math.exp.
+
+Sat Jul 3 09:47:26 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb(visit_Psych_Nodes_Scalar):
+ teaching Psych to deserialize DateTime objects. [Bug #1390]
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb(visit_DateTime): added a
+ method for serializing DateTime objects.
+
+ * ext/psych/lib/psych/scalar_scanner.rb(parse_time): add method for
+ parsing times objects from a string.
+
+ * test/psych/test_date_time.rb: tests for dumping DateTime objects.
+
+Sat Jul 3 09:13:55 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb (visit_Time): use
+ Time#nsec to accurately serialize time objects. [ruby-core:29233]
+
+Fri Jul 2 23:30:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (argf_inplace_mode_set): prohibits an assignment of a tainted
+ value.
+
+ * file.c (ruby_find_basename, ruby_find_extname): split from
+ rb_file_s_basename() and rb_file_s_extname().
+
+ * util.c (ruby_add_suffix): support arbitrary length of the suffix
+ to get rid of the potential buffer overflow.
+ reported by tarui.
+
+Fri Jul 2 05:31:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (rb_num2long): accept LONG_MAX < x < LONG_MAX+1 and
+ LONG_MIN-1 < x < LONG_MIN as well because they are converted
+ into the valid range of long by truncation.
+ (rb_num2ulong): accept ULONG_MAX < x < ULONG_MAX+1 and
+ LONG_MIN-1 < x < LONG_MIN as well.
+ (rb_num2ll): accept LLONG_MAX < x < LLONG_MAX+1 and
+ LLONG_MIN-1 < x < LLONG_MIN.
+
+Thu Jul 1 23:10:25 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Improving documentation.
+
+Thu Jul 1 22:15:01 2010 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (rb_num2ulong): fix the lower limit for float.
+ [ruby-dev:41361]
+
+Thu Jul 1 21:37:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): integrated with
+ runexec.
+
+Thu Jul 1 16:19:53 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (thread_start_func_1): don't call
+ native_thread_init_stack(th) on cygwin to avoid the segv
+ introduced by r27789. Cygwin's signal implementation is half
+ baked so USE_SIGNALSTACK is not defined and it needs another
+ treatment.
+
+Thu Jul 1 13:00:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (test-knownbug): ignore known bugs.
+
+Thu Jul 1 08:40:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object): suppress empty instance variable entry on
+ compatible dump objects.
+
+Wed Jun 30 07:29:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (test_script_from_stdin): by using
+ a pipe, get rid of not-well-defined behavior after the child
+ process terminated in pty.
+
+Wed Jun 30 02:30:26 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * thread_pthread.c (get_stack): use pthread_getthrds_np() for AIX.
+
+ * configure.in: ditto.
+
+Tue Jun 29 21:11:15 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * ext/stringio/stringio.c (strio_write): add RB_GC_GUARD.
+
+Tue Jun 29 19:39:59 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_method.rb (is_ruby64): check
+ ruby binary is mswin64 or mingw64. [ruby-dev:41756]
+
+Tue Jun 29 14:18:21 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_realpath_internal, realpath_rec): skip UNC share root
+ on DOSISH platforms.
+ http://pc12.2ch.net/test/read.cgi/tech/1272248179/600
+
+Tue Jun 29 11:52:33 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (unlink_heap_slot, slot_sweep): unlink heaps_slot of
+ heaps_slot linked list if heaps_slot is empty at slot_sweep.
+ fixed [ruby-dev:41543], [ruby-core:24894].
+
+Tue Jun 29 01:22:08 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/fiddle.h: added FFI type detection to avoid bug in ffi
+ header files. Thanks Yugui! [ruby-core:30917]
+
+Mon Jun 28 22:14:22 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rdoc/test_rdoc_ri_driver.rb (TestRDocRIDriver#test_formatter):
+ fix a test accordingly to r28455.
+
+Mon Jun 28 21:56:14 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_fd_resize, rb_fd_copy): avoid NULL dereference upon
+ failed realloc by using xrealloc instead of not realloc. a patch
+ from Jim Meyering <meyering at redhat.com> in [ruby-core:30920]
+ [Bug #3489]
+
+Mon Jun 28 20:32:33 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_method.rb (test_offset_vtbl): check
+ that Ruby is 32bit or 64bit binary in order to get correct offset
+ value. [ruby-dev:41741]
+
+Mon Jun 28 05:32:51 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rdoc/ri/driver.rb (RDoc::RI::Driver#formatter): should use bs
+ format when stdout is piped. [ruby-core:30734]
+
+Mon Jun 28 03:12:03 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_class.rb: add a test for [ruby-core:30843].
+
+Mon Jun 28 02:43:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * class.c (rb_mod_init_copy): when class is dup'ed, a metaclass of the
+ class should be attached to the dup'ed class, not the original
+ class. [ruby-core:30843] [Bug #3461]
+
+Sun Jun 27 23:31:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h, io.c: reverted r21709.
+
+ * ruby.c (load_file_internal): nothing to read if EOF reached
+ while reading shebang. [ruby-core:30910]
+
+Sun Jun 27 13:25:07 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c (simple_sendfile): don't try to send data more than SSIZE_MAX
+ with single sendfile call..
+ based on the patch by Eric Wong. [ruby-core:30908]
+
+Sun Jun 27 10:41:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/require_paths_builder.rb (write_require_paths_file_if_needed):
+ no reason that bin directory should be included in $LOAD_PATH.
+ it is for executable files, but not libraries. [ruby-core:25936]
+
+Sat Jun 26 13:07:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (enable-debug-env): option for RUBY_DEBUG env.
+
+Sat Jun 26 11:56:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (clear-installed-list): put redirection before set
+ command, since it seems to be handled by nmake in special way.
+ [ruby-dev:41711]
+
+Sat Jun 26 10:08:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): no needs to copy the
+ original ENV, since it's done in spawn automatically.
+ [ruby-dev:41733]
+
+Sat Jun 26 08:44:22 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * NEWS (zlib): new methods. [ruby-dev:41706] [Bug #3472]
+
+Sat Jun 26 07:59:18 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_method.rb (test_offset_vtbl): check
+ that OS is Windows 32bit or Windows 64bit in order to get
+ correct offset value.
+
+Sat Jun 26 04:39:12 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * ext/dl/lib/dl/func.rb (call): don't overwrite original arguments
+ to defend from GC.
+ * test/dl/test_func.rb (test_string): add test for above.
+
+Fri Jun 25 11:45:36 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Fixing a bug that prevented CSV from parsing
+ all multi-line fields correctly. Patch by Rob Biedenharn.
+
+Fri Jun 25 10:07:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err):
+ return the exit status.
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): change the
+ environment of spawned process only.
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): get rid of possible
+ deadlock.
+
+Fri Jun 25 06:24:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/un.rb (httpd): MaxClients also should be integer.
+ [ruby-dev:41724] [Bug #3477]
+
+ * lib/un.rb (setup): fix of word splitting. [ruby-dev:41723]
+ [Bug #3476]
+
+Fri Jun 25 01:07:17 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * include/ruby/ruby.h (static inline rb_gc_guarded_ptr): prevent
+ RB_GC_GUARD_PTR being removed by optimization.
+
+Thu Jun 24 06:22:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (ruby_getaddrinfo__darwin): the workaround
+ for Mac OS X moved from rsock_getaddrinfo.
+
+Thu Jun 24 05:44:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (struct dump_arg, struct load_arg): merge taint and
+ untrust flags into infection as bit flags.
+
+ * marshal.c (w_nbyte, clear_dump_arg): infect the buffer as soon
+ as appending, because it might have been finalized already at
+ exit. based on a patch by Tomoyuki Chikanaga
+ at [ruby-dev:41672]. [Bug #3463]
+
+Wed Jun 23 23:49:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (str_is_number): renamed from str_isnumber to
+ avoid confusion to str_isnumber in ext/socket/getaddrinfo.c.
+
+Wed Jun 23 23:45:31 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * NEWS (stringio): new methods. [ruby-dev:41687] [Bug #3469]
+
+Wed Jun 23 22:52:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c: don't use __P.
+
+Wed Jun 23 21:32:08 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (reg_get_typelib_file_path): try win64
+ registry entry at first. [ruby-dev:41674] [Bug #3464]
+
+Wed Jun 23 21:17:32 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (ruby_getaddrinfo__darwin): new workaround for
+ getaddrinfo problem on Mac OS X Snow Leopard. [ruby-core:29427]
+ patch by Wataru Kimura. [ruby-core:30842]
+
+Wed Jun 23 17:12:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS (ptr): new method and deprecated methods. [ruby-dev:41681]
+
+ * ext/pty/{README,README.ja}: ditto.
+
+ * ext/pty/pty.c (pty_check): add rdoc.
+
+Wed Jun 23 12:44:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_regexp.rb (test_dup_warn): read in UTF-8
+ encoding regardless environment.
+
+ * test/ruby/envutil.rb (invoke_ruby): add encoding option.
+
+Wed Jun 23 06:44:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (fchown): need to check. a patch by Eric Wong
+ at [ruby-core:30818].
+
+ * io.c (argf_next_argv): check for setting owner/group.
+
+Tue Jun 22 23:10:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (num_exact): fix for mathn. [ruby-dev:41599]
+
+Tue Jun 22 22:00:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb: suppress warnings.
+
+Tue Jun 22 21:33:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/optparse/test_summary.rb: fixed superclass so that it run
+ solely.
+
+Tue Jun 22 19:57:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (shadowing_lvar_gen): should add lvar to vars and
+ used. [ruby-dev:41666]
+
+Tue Jun 22 13:23:13 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/delegate.rb: Forward #trust, #untrust, #taint and #untaint
+ to both the delegator and __getobj__ [ruby-core:26138]
+
+Mon Jun 21 23:41:08 2010 wanabe <s.wanabe@gmail.com>
+
+ * eval_error.c (error_print): clear raised_flag while error-printing
+ to avoid hang. [ruby-core:27608]
+
+ * test/ruby/test_beginendblock.rb (test_endblock_raise): add test for
+ above.
+
+Sun Jun 20 16:17:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * id.c (Init_id): add underscore name.
+
+ * parse.y (warn_unused_var): ignore underscore name.
+
+ * parse.y (warn_unused_var): use same format as shadowing local
+ variable.
+
+ * parse.y (shadowing_lvar_gen): get rid of adding extra name for
+ shadowing local variable. [ruby-dev:41628]
+
+Sat Jun 19 11:11:37 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb.rb: remove double exclamation marks. a patch from Diego
+ Viola. [ruby-core:30589]
+
+Sat Jun 19 03:35:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb (resolve_klass): fix the
+ exception message when attempting to load an unknown class. Thanks
+ nobu! [ruby-dev:41399]
+
+ * test/psych/test_psych.rb: test for the exception message
+
+Fri Jun 18 10:37:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (gc_lazy_sweep): clean a warning.
+ "suggest parentheses around assignment used as truth value"
+
+ * transcode_data.h (getGB4bt1): clean a warning.
+ "suggest parentheses around arithmetic in operand of |"
+
+ * transcode_data.h (getGB4bt3): ditto.
+
+ * vm.c (thread_free): clean a warning. "format 'p' expects type
+ 'void *', but argument 3 has type 'struct rb_mutex_struct *'"
+
+Fri Jun 18 10:15:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c: add prototype of rb_realpath_internal.
+
+ * load.c: ditto.
+
+Fri Jun 18 01:50:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * object.c: Object#public_methods, private_methods, etc. returns
+ method ids that belong to the class or the singleton class(es) of
+ the object. [ruby-dev:41613]
+
+ * class.c: on the other hand, Module#public_instance_methods, etc.
+ returns method ids that belong to the module itself (even if the
+ module is singleton, it does not return method ids of super
+ class(es); see [ruby-core:28837]).
+
+Fri Jun 18 01:22:55 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (prevent_directory_traversal): apply filesystem encoding to path
+ only during calling File.expand_path. [ruby-dev:41423]
+
+Thu Jun 17 23:20:14 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * load.c (rb_load_internal): remove call to rb_realpath_internal
+ within rb_load_internal which caused big performance degradation.
+ Instead, call rb_realpath_internal in the caller of
+ rb_load_internal. [ruby-dev:41502] [ruby-dev:41610]
+
+ * vm.c (rb_vm_call_cfunc): ditto.
+
+ * eval_intern.h (rb_vm_call_cfunc): ditto.
+
+ * ruby.c (process_options): ditto.
+
+Thu Jun 17 18:37:47 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_str_encode_ospath): when the encoding of the parameter
+ is ASCII-8BIT, should recognize as filesystem encoding, and convert
+ to UTF-8 on Windows.
+
+ * file.c (realpath_rec): should convert to ospath encoding before
+ calling lstat().
+
+ * file.c (rb_realpath_internal): resolved string should take over
+ the encoding of base string.
+
+ * transcode.c (rb_str_encode): should return new string always.
+ fixed #3444.
+
+Wed Jun 16 18:34:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y: ripper needs warn_unused_var(), too.
+
+Wed Jun 16 18:20:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (warn_unused_var): warn unused variables.
+ [ruby-dev:41620]
+
+Wed Jun 16 15:40:53 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c (rb_bug): existence of _set_abort_behavior() depends on
+ runtime version, not compiler version.
+
+Wed Jun 16 01:38:40 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/fiddle/extconf.rb: check ffi.h even when pkg-config succeeded.
+ On Debian/lenny, which is a "supported" platform, ffi.h is installed
+ in /usr/include/i486-linux-gnu/. This causes build error when using
+ gcc whose target is not i486-linux-gnu.
+
+Wed Jun 16 00:04:38 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_io.rb (safe_4): does not use Timeout because
+ Timeout.timeout uses Thread#kill which raises SecurityError when
+ $SAFE == 4. based on a patch from Tomoyuki Chikanaga.
+ [ruby-dev:41484]
+
+ * test/ruby/test_io.rb (test_print_separators): use pipe (test helper
+ method) instead of IO.pipe. [ruby-dev:41484]
+
+Tue Jun 15 17:14:58 2010 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/fiddle/extconf.rb: De Morgan's laws.
+
+Tue Jun 15 12:09:00 2010 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/fiddle/extconf.rb: use pkg_config to find ffi.h.
+
+Tue Jun 15 02:31:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk (clean-ext, clean-enc): clean up cleaning
+ targets.
+
+Mon Jun 14 22:36:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_socket.rb (test_udp_server): rescue Errno::ENOSYS
+ for Windows.
+
+ * test/socket/test_nonblock.rb (test_sendmsg_nonblock_error): ditto.
+
+ [ruby-dev:41597] reported by Masaya Tarui.
+
+Mon Jun 14 17:44:39 2010 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: raise DRbConnError instead of ArgumentError if too
+ many arguments. [ruby-dev:41481]
+
+ * test/drb/test_drb.rb: ditto.
+
+ * test/drb/drbtest.rb: ditto.
+
+Mon Jun 14 04:03:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/fiddle/closure.c (dealloc): refix workaround r28300.
+ don't use ffi_closure_alloc, ffi_prep_closure_loc and
+ ffi_closure_free on MACOSX and __linux__.
+ [ruby-dev:41483] [ruby-dev:41214]
+
+Sun Jun 13 15:46:07 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rubyoptions.rb: add a simple test for __END__ and
+ DATA.
+
+Sun Jun 13 04:24:18 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/delegate.rb: Delegate !=, eql? and hash [ruby-core:26139]
+
+Sun Jun 13 02:12:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac.trans (buf_apply): fix for patterns
+ whose result is 2 bytes. [ruby-core:30751]
+
+Sun Jun 13 01:38:17 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * time.c (rb_localtime_r2): fix mixed declarations and code.
+
+Sun Jun 13 00:27:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl/lib/dl.rb: don't require when already loaded.
+
+Sun Jun 13 00:02:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/fiddle/closure.c (dealloc): workaround fix for libffi's
+ ffi_closure_free. [ruby-dev:41483] [ruby-dev:41214]
+
+Sat Jun 12 10:02:26 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_syscall): should check argument string taint before
+ invoking system calls.
+
+Sat Jun 12 09:18:31 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (uninitialized_constant): process through
+ rb_class_real() to remove "Object::" from error message.
+ [ruby-dev:40951]
+
+Sat Jun 12 00:38:37 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/dbm/extconf.rb: accept Berkley DB version 3, 4 and 5.
+ a patch from Takahiro Kambe. [ruby-dev:41531]
+
+Fri Jun 11 23:21:35 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (init_leap_second_info): check the result of
+ gmtime_with_leapsecond.
+
+Fri Jun 11 23:04:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_get_ciphers):
+ use sk_SSL_CIPHER_num and sk_SSL_CIPHER_value instead of cast.
+ patched by Takahiro Kambe [ruby-dev:41530]
+
+Fri Jun 11 22:59:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/missing.h (isnan): fix compilation error on OpenBSD.
+
+Fri Jun 11 22:39:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rubygems/install_update_options.rb
+ (Gem::InstallUpdateOptions#add_install_update_options): deprecate
+ --test option which has not worked. [ruby-core:21714]
+
+ * test/rubygems/test_gem_command_manager.rb: ditto.
+
+Fri Jun 11 07:34:25 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): test the result of LOCALTIME.
+
+Fri Jun 11 00:42:45 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_localtime_r2): fix localtime overflow check.
+
+Thu Jun 10 23:05:44 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_localtime_r2): refine localtime overflow check for
+ FreeBSD 6.4.
+
+Thu Jun 10 09:10:08 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_putc): documentation updated to mention putc would
+ not work well with multi-byte characters. [ruby-core:30697]
+
+ * io.c (rb_f_putc): ditto.
+
+Wed Jun 9 22:51:50 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): always extrapolate from past.
+ [ruby-core:30672] reported by Benoit Daloze.
+
+Wed Jun 9 22:13:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (calc_tm_yday): extracted from timegmw_noleapsecond.
+
+Tue Jun 8 06:27:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb: load full rubygems at LoadError for activation
+ check. [ruby-core:29486]
+
+Tue Jun 8 06:04:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (parse_mode_enc): set set_by_bom bit. [ruby-core:30641]
+
+Sun Jun 6 22:37:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_buf_cat_escaped_char): get rid of buffer
+ overflow on platforms int is bigger than 32bit, and warnings.
+
+Sun Jun 6 19:55:21 2010 Tanaka Akira <akr@fsij.org>
+
+ * array.c (rb_ary_product): clear uninitialized elements in temporary
+ array.
+
+Sun Jun 6 12:31:57 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: set_heaps_increment is not
+ called before gc_marks of lazy sweeping because live_num not
+ contain finalize objects. So call set_heaps_increment after lazy
+ sweeping if free_num are not enough. And move free_min to struct
+ rb_objspace for above. [ruby-dev:41499]
+
+Sun Jun 6 10:44:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_product): need to set the length in order to get
+ the entries marked. [ruby-dev:41540]
+
+Sun Jun 6 08:26:01 2010 Tanaka Akira <akr@fsij.org>
+
+ * vm.c (Init_BareVM): call Init_native_thread here.
+
+ * thread.c (Init_Thread): don't call Init_native_thread.
+
+ * thread_pthread.c (Init_native_thread): exported.
+
+ * thread_win32.c (Init_native_thread): ditto.
+
+ [ruby-dev:41536]
+
+Sun Jun 6 08:21:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS: Enumerable#join has been reverted. [ruby-core:30604]
+
+Sat Jun 5 20:30:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_expr_str): ASCII incompatible strings
+ must always escape or converted.
+
+ * re.c (rb_reg_expr_str): use rb_str_buf_cat_escaped_char
+ when resenc is given: for Regexp#inspect or error message.
+
+ * re.c (rb_reg_desc): add 'n' for ENCODING_NONE.
+
+Sat Jun 5 01:20:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (sym_inspect): Escape when the symbol is not
+ resulted encoding and not ascii_only. It had escaped
+ ascii-incompatible string, but it is wrong.
+
+Sat Jun 5 01:10:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_buf_cat_escaped_char): defined.
+ Splited from rb_str_inspect.
+
+Sat Jun 5 16:39:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * .gdbinit (rp): show type name for RTypedData.
+
+Sat Jun 5 15:59:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options, load_file_internal): $0 seen from
+ required libraries by -r option should be the main script.
+ [ruby-core:23717]
+
+Sat Jun 5 15:15:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): support for child
+ process env.
+
+Sat Jun 5 14:11:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb (test_exception_during_shutdown):
+ need to raise always.
+
+Sat Jun 5 13:13:30 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (eql?, ==, minor): Fix bugs when comparing/returning
+ some empty matrices.
+
+Sat Jun 5 11:00:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * error.c (rb_name_err_mesg_new): guard mesg, recv and method.
+ The problem in [ruby-dev:41464] is caused because mesg is collected.
+
+Sat Jun 5 10:03:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * .gdbinit (rp): detect and show RTypedData.
+
+Sat Jun 5 08:30:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_f_test): 'W' should test writable by real uid/git,
+ not world writable. [ruby-core:30587]
+
+Sat Jun 5 06:20:57 2010 Eric Hodel <drbrain@segment7.net>
+
+ * dir.c: Clarification of what '*' matches. Patch by John Wells
+ <john.wells at greatworx.com>
+
+Fri Jun 4 10:46:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_inspect): should taint the result.
+ [ruby-dev:41533]
+
+Fri Jun 4 09:37:15 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (gc_sweep): suppress a warning on VC, again.
+
+Thu Jun 3 23:34:55 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Emit a deprecation warning in
+ verbose mode and add a caution to the overview section of the
+ document. [ruby-dev:41525]
+
+Thu Jun 3 19:33:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_inspect): suppress warnings by
+ rb_sprintf.
+
+ * ext/dl/cptr.c (rb_dlptr_s_malloc): suppress warnings.
+
+Thu Jun 3 18:58:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (ruby_init_ext): statically linked extensions have no
+ real path. [ruby-dev:41526]
+
+ * vm.c (rb_vm_call_cfunc): add filepath argument.
+
+Thu Jun 3 18:17:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rake/test_win32.rb (Rake::TestWin32): update tests.
+ [ruby-core:30309]
+
+ * test/io/nonblock/test_flush.rb (test_flush): try pipe and
+ socketpair. [ruby-dev:41517]
+
+Thu Jun 3 09:36:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/dl.h (DLSTACK_TYPE): type of stack is same as VALUE.
+ reported by sakiyama shin in [ruby-dev:41514]
+
+Thu Jun 3 06:30:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_path.rb (test_path): workaround for drive
+ letter.
+
+ * test/ruby/test_path.rb (test_path): get rid of blocking on
+ access to non-existent host.
+
+Thu Jun 3 05:37:46 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * tool/rbinstall.rb (install-bin): Allow bin/* install from dot-dirs.
+ Fixes rvm and multiruby installations.
+
+Thu Jun 3 01:22:45 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fix typo and race condition.
+
+Thu Jun 3 00:58:45 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/dl/lib/dl/cparser.rb (parse_ctype): add backwards compatibility
+ by supporting "uint" types in the c parser. [ruby-core:29750]
+ * test/dl/test_cparser.rb: adding a test for "uint" changes.
+
+Wed Jun 2 11:40:02 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): should consider block on stack,
+ if block argument is passed. [ruby-core:30534]
+
+ * parse.c (arg_concat_gen): should append to nd_head, not to
+ nd_iter for NODE_BLOCK_PASS.
+
+Tue Jun 1 23:12:06 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (unescape_nonascii): \P{FOO} is also Unicode property in
+ regexp. [ruby-core:30540]
+
+Tue Jun 1 21:29:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: adding support to rfc5789 patch verb.
+ Added a Net::HTTP::Patch class which expects a message body
+ and response body. It recycles the post method into a patch one,
+ that will send the encoded representation to the server.
+ Summarizing, a new class has been created, the post method
+ extracted into send_entity, including a new argument,
+ which defines which class to use (Post or Patch) and
+ finally a patch method was created. [ruby-core:30426]
+ Patched by Guilherme Silveira
+ <guilherme.silveira AT caelum.com.br>
+
+Tue Jun 1 03:46:08 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/extconf.rb: reject GPLv3 readline. [ruby-dev:39172]
+ [ruby-core:25272] [ruby-dev:39167] [ruby-core:28736]
+
+Tue Jun 1 01:14:31 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * io.c (pipe_open): add RB_GC_GUARD.
+ This caused failure when test/ruby/test_argf.rb is executed with
+ GC.stress = true in mswin32_90
+
+Mon May 31 23:44:22 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: use tclConfig.sh/tkConfig.sh when frameworks
+ are enabled on MacOS X.
+
+ * ext/tk/stubs.c: dirty hack for frameworks and stubs on MacOS X.
+
+ * ext/tk/lib/tk.rb: stop creating a dummy Tcl/Tk interpreter.
+ And hide a root window before starting eventloop. (for ruby 1.9)
+
+ * ext/tk/tcltklib.c: add codes to support Ruby/Tk-Kit (Rubykit).
+
+Mon May 31 21:49:42 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS::Requester#request): rescue ECONNRESET
+ for Windows. reported by U.Nakamura. [ruby-dev:41477]
+
+Mon May 31 19:25:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (onig_syntax_warn): do not use external strings as
+ printf format.
+
+Mon May 31 18:22:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-set-encoding): skip shebang line
+ always regardless of ruby.
+
+Mon May 31 15:07:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): Refix r28102: this breaks
+ r28039. test for [ruby-dev:41429] is added. [ruby-core:30516]
+
+Mon May 31 14:47:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): inspect as ASCII when the codepoint
+ of a character in Unicode string is ASCII printable one.
+
+Mon May 31 13:44:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_unicode_p): check the encoding is Unicode
+ or not by the name; not function's pointer. [ruby-dev:41479]
+
+Mon May 31 04:03:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): check if expanded dname encoding is
+ compatible with fname, not just copying. [ruby-core:30516]
+
+ * test/ruby/test_beginendblock.rb (test_endblockwarn): needs
+ encoding comment.
+
+Mon May 31 02:17:54 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (defined): respond_to_missing? may not be available
+ (for BasicObject instances).
+
+Mon May 31 01:43:42 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/delegate: Delegator: combine (public|protected) methods with
+ those of the delegated object. [ruby-core:27224]
+ DelegateClass: combine (public|protected) instance methods
+ with those of the delegated superclass.
+
+Sun May 30 22:18:49 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/set.rb (keep_if, select!): New methods [ruby-core:29749]
+
+Sun May 30 21:51:59 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rake/test_application.rb: update a test because of r28089.
+
+Sun May 30 21:48:07 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/tempfile.rb (Tempfile#unlink): leave @data. Assigning nil to
+ @data caused double closing error of the same IO in finalizer. a
+ patch from Simon Nicholls. [ruby-core:29395]
+
+Sun May 30 18:47:15 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: updated to b856dd07.
+ this cleans warnings.
+
+Sun May 30 18:25:55 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * load.c (load_failed): use more accurate error message.
+ [ruby-core:23851]
+
+Sun May 30 16:54:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * file.c (rb_file_directory_p): update rdoc. a patch from Ilkka
+ Laukkanen. [ruby-core:30016]
+
+Sun May 30 14:59:13 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_mark_all_clear): don't call obj_free() in
+ gc_mark_all_clear(), because obj_free() may make T_ZOMBIE
+ objects.
+
+ * gc.c (gc_clear_mark_on_sweep_slots): renamed.
+
+ * gc.c (rb_objspace_call_finalizer): call
+ gc_clear_mark_on_sweep_slots() before calling mark_tbl().
+ [ruby-dev:41459]
+
+Sun May 30 03:40:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_utf8, parser_tokadd_string): allow NUL
+ containing symbol literals, as well as String#to_sym.
+ [ruby-dev:41447]
+
+Sun May 30 03:03:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/generator/template/darkfish/classpage.rhtml:
+ fix encoding value of XML declaration. [ruby-dev:41452]
+
+Sun May 30 02:20:26 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * thread.c (RB_GC_SAVE_MACHINE_CONTEXT), gc.c (ruby_gc_stress_start):
+ revert r28078.
+
+Sun May 30 02:21:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/zlib/zlib.c (zstream_append_input2): add RB_GC_GUARD.
+ This caused failure when test/csv is executed with GC.stress = true.
+
+Sun May 30 01:25:48 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * thread.c (RB_GC_SAVE_MACHINE_CONTEXT): start GC
+ by switching the thread if gc_stress == true
+
+ * gc.c (ruby_gc_stress_start): ditto.
+
+Sun May 30 00:02:39 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (force_chain_object, rb_objspace_call_finalizer): delete
+ finalizer entry after corresponding finalizer is executed.
+ This caused SEGV when test/cgi is executed with GC.stress = true.
+
+Sat May 29 23:30:33 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (str_replace_shared): change embedded state atomically.
+ [ruby-core:29953] [ruby-dev:41456]
+
+Sat May 29 12:56:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encindex): avoid infinite require
+ loop. [ruby-core:30467]
+
+Sat May 29 12:05:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc#read_file_contents): take care of BOM.
+ [ruby-dev:41452]
+
+Sat May 29 10:12:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (GC_PROF_TIMER_STOP): regularize `marked' to suppress
+ warnings.
+
+Sat May 29 09:34:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb: fix for --disable-gems.
+
+Sat May 29 09:04:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS::Requester#request): rescue ECONNREFUSED.
+
+Sat May 29 08:46:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (allocate_sorted_heaps, before_gc_sweep, gc_sweep): removed
+ unused variables.
+
+Fri May 28 20:35:21 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (blocking_region_begin): avoid RUBY_VM_CHECK_INTS()
+ call during GVL state transition. [Bug#3354] [ruby-dev:41435]
+
+Fri May 28 19:37:47 2010 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: use simple lazy sweep algorithm for response performance
+ gain. See [ruby-dev:41067].
+
+ * object.c: FL_MARK of some objects by lazy sweep is copied when
+ RVALUE is cloned. These objects are not marked in the mark phase.
+ So delete FL_MARK.
+
+ * class.c: ditto.
+
+Fri May 28 18:39:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_inspect): escape ASCII-compatible strings.
+
+ * string.c (rb_str_inspect): escape ASCII-compatible strings.
+
+Fri May 28 17:34:48 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * array.c (rb_ary_product): Use tmpary instead, to ensure marking
+ arrays by GC.
+
+Fri May 28 11:40:07 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * array.c (rb_ary_product): Do not rely on GC, t0 should be
+ checked explicitly.
+
+Fri May 28 10:40:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (checking_for): ignore toplevel.
+
+Fri May 28 00:47:16 2010 Masaya Tarui <tarui@ruby-lnag.org>
+
+ * error.c (rb_bug): suppress the error report dialog if report_bug()
+ is finished successfully.
+
+Fri May 28 00:32:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * insns.def (invokesuper): check consistency between class of self and
+ class of method being invoked by super. This is temporary measure
+ for YARV. See [ruby-core:30313] in detail. See [ruby-dev:40959]
+ [ruby-dev:39772] [ruby-core:27000] [ruby-core:27230]
+
+ * vm_insnhelper.c (vm_search_superclass): ditto.
+
+Thu May 27 23:38:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (rb_home_dir): set filesystem encoding.
+
+Thu May 27 23:29:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): set encoding as the same of fname
+ when _result_ is not filesystem encoding. [ruby-dev:41429]
+
+Thu May 27 23:07:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): use rb_enc_associate_index and
+ rb_filesystem_encindex. Strings related FileSystem should
+ have filesystem_encoding.
+
+ * file.c (SET_EXTERNAL_ENCODING): removed.
+
+Thu May 27 23:03:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_filesystem_encindex): defined.
+
+ * include/ruby/encoding.h (rb_locale_encindex): ditto.
+
+ * encoding.c (rb_filesystem_encindex): remove static.
+
+ * encoding.c (rb_locale_encindex): ditto.
+
+Thu May 27 22:34:27 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): call ReadFile() with len = 0 before
+ reading really on console, because the first ReadFile() call after
+ PeekConsoleInput() always returns broken data. (Windows's bug).
+ [ruby-core:29018]
+
+Thu May 27 12:42:23 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * LGPL: Removed. We no longer have LGPL'd source files in our
+ tree.
+
+Wed May 26 20:19:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): add the result of random to the
+ beginning of range, not the opposite. [ruby-dev:41415]
+
+Wed May 26 19:55:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (file_expand_path): revert a part of r22392. it's commit miss.
+
+Wed May 26 18:40:23 2010 Masaya Tarui <tarui@ruby-lang.org>
+
+ * test/rinda/test_rinda.rb (TupleSpaceTest, TupleSpaceProxyTest):
+ kill a used thread at teardown. [ruby-dev:41397]
+
+Wed May 26 12:08:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): subtraction method of non-numeric can
+ return Float. [ruby-dev:41410]
+
+Wed May 26 11:50:09 2010 Eric Hodel <drbrain@segment7.net>
+
+ * marshal.c (Init_marshal): document marshal_dump and marshal_load.
+
+Wed May 26 10:35:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_large_fd_select): needed on mingw, even
+ though fd_mask is not available. [ruby-core:30401]
+
+Tue May 25 14:00:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (add_code_range_to_buf0): fix false negative
+ warning when given range is just before previous range.
+ [ruby-dev:41406]
+
+Tue May 25 16:37:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-version): take revision if
+ keyword is expanded. [ruby-dev:41408]
+
+Tue May 25 13:26:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/vm.h, include/ruby/encoding.h: add external
+ linkage.
+
+Tue May 25 01:46:49 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_f_caller): update rdoc. a patch from Nobuhiro IMAI
+ <nov at yo.rim.or.jp> in [ruby-dev:41387].
+
+Mon May 24 23:04:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * error.c: fix wrong exception class name in rdoc.
+
+Mon May 24 19:00:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (warn_balanced, parser_yylex): no warnings after closing
+ parens.
+
+Mon May 24 12:52:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (change), tool/change_maker.rb: make a brief template
+ for ChangeLog.
+
+Mon May 24 09:19:59 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (gc_sweep): suppress a warning on VC.
+
+Mon May 24 08:16:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_f_spawn): use correct command name for the error
+ message. [ruby-dev:41395]
+
+Sun May 23 17:48:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/x509-internal.rb, lib/forwardable.rb,
+ lib/irb/cmd/fork.rb, lib/mutex_m.rb,
+ lib/shell/process-controller.rb, lib/sync.rb, object.c:
+ suppress warnings patched by Benoit Daloze at [ruby-core:30366].
+
+ * parse.y (warn_balanced): no warning for singleton class.
+ [ruby-core:30366]
+
+Sun May 23 16:56:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (CONST_ID_CACHE, rb_intern_const): suppress
+ warnings with -Wconversion.
+
+Sun May 23 07:08:34 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/stream.rb: adding a JSON streaming API
+
+ * ext/psych/lib/psych/stream.rb: ditto
+
+ * ext/psych/lib/psych.rb: using autoload
+
+ * ext/psych/lib/psych/json.rb: ditto
+
+ * ext/psych/lib/psych/json/tree_builder.rb: refactor
+
+ * ext/psych/lib/psych/visitors/json_tree.rb: refactor
+
+Sat May 22 03:53:05 2010 Satoshi Shiba <shiba@rvm.jp>
+
+ * cont.c (fiber_setcontext): Use swapcontext() instead longjmp().
+ [ruby-dev:41316] [Bug #3295]
+
+Fri May 21 19:11:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_convert, rb_nkf_guess): check too huge
+ string.
+
+Fri May 21 18:12:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_intern): C90 needs nonempty macro
+ arguments.
+
+Fri May 21 13:55:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBYARG_SHARED): shared library will not be
+ created unless enable-shared.
+
+ * ruby.c (ruby_init_loadpath_safe): use real path for non-shared
+ build.
+
+Fri May 21 12:25:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_float): use dtoa directly instead of stripping
+ needless trailing .0.
+
+ * numeric.c (flo_to_s): reverted. [ruby-dev:41341]
+
+Fri May 21 01:06:05 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (subtract_tv): if the rest is zero, should finish waiting
+ immediately.
+
+ * win32/win32.c (subtract): ditto.
+ based on a patch from Roger Pack in [ruby-core:27957].
+
+Thu May 20 22:49:04 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * re.c (rb_reg_s_union_m): update rdoc. [ruby-dev:41354]
+
+Thu May 20 22:08:28 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_f_caller): update rdoc. a patch from Nobuhiro IMAI
+ <nov at yo.rim.or.jp> in [ruby-dev:41348].
+
+Thu May 20 22:04:05 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (vm_backtrace_each): now takes an init function to distinguish
+ an empty stack from out of stack. [ruby-dev:41366]
+
+ * vm_eval.c (print_backtrace, rb_thread_backtrace): ditto.
+
+Thu May 20 20:47:46 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke): raise NoMethodError
+ when COM method is not found. [ruby-core:30160] [Bug #3277]
+
+ * test/win32ole/test_win32ole.rb (test_no_method_error): ditto.
+
+Thu May 20 16:17:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/psych/emitter: C99(gcc)-ism.
+
+Thu May 20 12:59:49 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/stream.rb: adding YAML streaming API for
+ infinite length streams.
+
+ * ext/psych/lib/psych.rb: refactoring for streaming API
+
+ * ext/psych/lib/psych/{handler, stream, tree_builder}.rb: ditto
+
+Thu May 20 02:12:20 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/emitter.c: output strings are automatically transcoded
+
+Wed May 19 23:36:57 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: [ruby-dev:41334] [Bug #3307] invalid result
+ on searching tcl.h/tk.h. Thanks, Masaya Tarui.
+
+Wed May 19 23:19:30 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (disconnect): closes the socket of a Net::IMAP
+ object only when it is not closed. [ruby-dev:41350]
+
+Wed May 19 20:09:38 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_f_caller): return [] instead of nil when the function
+ is called on toplevel. [ruby-dev:41348]
+
+Wed May 19 19:58:01 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: mswin/mingw ruby has socketpair(), but it's
+ not exist as such name in ruby static library, so mkmf.rb cannot
+ find it.
+
+Wed May 19 19:45:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * iseq_compile_each (NODE_DEFINED): put nil first to fix stack
+ consistency. [ruby-core:30293]
+ Now, lfinish[0] of defined_expr seems not to be used. Refactoring
+ may be needed.
+
+Wed May 19 16:55:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_num2ulong): use rb_big2ulong for data from
+ Bignum. Without this 32bit integer on 32bit environment
+ can't converted into long.
+ This fixes 1) and 2) of [ruby-dev:41289]
+
+Mon May 17 22:19:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * process.c: suppress warning for signed and unsigned type
+ inconsistency.
+
+ * ext/psych/parser.c: ditto.
+
+ * ext/sdbm/_sdbm.c: ditto.
+
+ * ext/syck/rubyext.c: ditto.
+
+Mon May 17 21:30:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * .gitignore: updated.
+
+Mon May 17 21:08:53 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (argv_size): merged into join_argv() to maintain the
+ agreement with it. removed code has a calculation bug.
+ fixed [Bug#2388]
+
+ * win32/win32.c (join_argv): calc and return the length of joined
+ argv.
+ the cause of the original bug was clarified by Masaya TARUI
+ <tarui AT prx.jp> and the solution was suggested by him, too.
+
+Mon Apr 5 09:20:08 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/iso_2022_jp.h: add CP50220.
+
+ * enc/trans/iso2022.trans: add converter for CP50220.
+
+Mon May 17 09:37:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#entries): returns pathname in
+ UTF-8 on Windows to allow FileUtils accessing all pathnames
+ internally.
+
+Mon May 17 01:07:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (rb_w32_check_imported): workaround for VC6.
+
+Sun May 16 22:21:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (mnew): initialize a field. a patch from Takahiro Kambe.
+ [ruby-dev:41312]
+
+Sun May 16 22:17:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (setup_exception): let SystemStackError#backtrace return an
+ single element array instead of string itself. [ruby-core:30196]
+
+Sun May 16 21:51:04 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (parser_read_escape, parser_tokadd_escape): allow a hex or
+ octal encoded character after \c. This seemed to be prohibited at
+ r13836, but its ChangeLog mentions nothing about this prohibition.
+ So I assume this prohibition is not intended. [ruby-core:27229]
+
+Sun May 16 21:14:04 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ruby/test_rubyoptions.rb (TestRubyOptions#test_segv_test):
+ fixes "NoMethodError: undefined method `[]=' for nil:NilClass"
+
+Sun May 16 17:16:09 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (proc_binding): don't propagate filename and line_no of
+ binding that is created from C level. [ruby-dev:41322]
+
+ * vm_eval.c (eval_string_with_cref): ditto.
+
+Sun May 16 15:09:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (rb_w32_check_imported): check if extension library to be
+ loaded imports from different ruby dll.
+
+Sun May 16 14:55:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (dln_find.o): fix dependency.
+
+Sun May 16 13:55:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_loaderror): use locale string, not ascii-8bit.
+
+Sun May 16 11:39:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/missing.h (signbit): add missing prototype.
+
+Sun May 16 10:49:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (rb_iconv_sys_fail): fix number of arguments.
+ a patch by Masaya TARUI <tarui AT prx.jp>.
+
+Sun May 16 02:24:27 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * configure.in: can not load libruby.so if gcc is used with
+ --enable-shared on AIX.
+
+Sat May 15 17:16:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (rb_iconv_sys_fail): raise BrokenLibrary if
+ errno is not set. [ruby-dev:41317]
+
+Fri May 14 07:27:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_float): strip ".0" from end for rubyspec.
+
+Fri May 14 01:17:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.c (rb_thread_struct): add a field for sigaltstack.
+
+ * thread_pthread.c (thread_start_func_1): initialize machine stack
+ information.
+
+ * thread.c (thread_start_func_2): set sigaltstack for each sub thread.
+ [ruby-core:24540] [ruby-core:30207]
+
+Thu May 13 21:40:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * missing/ffs.c (ffs): fixed for non-zero values.
+
+Thu May 13 18:45:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (get_write_fd): return primary fd if no
+ io is tied for writing.
+
+Thu May 13 18:15:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (swallow): should use more_char() instead of fill_cbuf().
+ suggested by akr.
+
+Thu May 13 17:56:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_set_echo, console_echo_p): use
+ primary fd. [ruby-dev:41309]
+
+Thu May 13 13:30:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_float): use minimal representation.
+
+ * numeric.c (ruby_dbl2cstr): split from rb_float_new.
+
+Thu May 13 13:09:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_vm_get_sourceline): moved from eval_intern.h for
+ vm_dump.c.
+
+Thu May 13 12:53:13 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (swallow): support text mode and UTF-16/32 as internal encoding.
+ [Bug #1576]
+
+ * io.c (io_shift_cbuf): read and throw it away when str is NULL.
+
+Thu May 13 09:45:27 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: link with ffs.obj.
+
+Thu May 13 07:37:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c: include unistd.h before sdbm.h for off_t.
+ fix compilation problem on FreeBSD 6.4.
+
+Wed May 12 23:48:37 2010 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_quad_pack): deprecated.
+ (rb_quad_unpack): ditto.
+
+Wed May 12 22:22:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_big_abs_find_minbit): use ffs().
+
+ * configure.in: check ffs().
+
+ * missing/ffs.c: new file.
+
+ * include/ruby/missing.h (ffs): declared.
+
+Wed May 12 16:43:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): fixed broken output including nuls.
+
+Wed May 12 16:25:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): exponent needs 2 digits.
+
+Wed May 12 16:02:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): fill lower zeros.
+
+Wed May 12 15:45:36 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/generator/ri.rb (generate): should load existing cache
+ before generating it.
+
+Wed May 12 15:04:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (BigMath#log): improved
+ precision and performance. [ruby-dev:41295]
+
+Wed May 12 11:39:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: test all IPPROTO_* constants for recent Win32
+ SDK.
+
+Wed May 12 10:57:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): make minimum string representation.
+ [ruby-core:30145]
+
+Wed May 12 09:21:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): fix wrong index for the lang
+ option's value 'N'. reported by Masaya TARUI via IRC.
+
+Tue May 11 23:07:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: test IPPROTO_IP and IPPROTO_IPV6 constants.
+
+ * ext/socket/mkconstants.rb: define macros for enum.
+
+ [ruby-dev:38849]
+
+Tue May 11 21:53:18 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rake/test_task_arguments.rb: makes ENV empty during tests
+ because ENV may change the behavior of Rake::TaskArguments.
+ [ruby-core:29984]
+
+Tue May 11 15:14:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_8.c: Add new alias UTF-8-HFS for UTF8-MAC.
+ http://www.gnu.org/software/emacs/NEWS.23.2
+
+Tue May 11 13:46:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (atan),
+ test/bigdecimal/test_bigmath.rb (test_atan): explicitly specify
+ the precision for calculating a reciprocal number of an argument.
+ [Bug #3267]
+
+Tue May 11 11:49:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/sdbm/sdbm.h (DBM): large file support on win32.
+ [ruby-core:23039]
+
+ * ext/sdbm/depend: objects depend on sdbm.h.
+
+Tue May 11 09:57:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (rb_vm_get_sourceline): add prototype.
+
+Tue May 11 09:53:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/psych/parser.c (PSYCH_TRANSCODE): get rid of bare use of gcc
+ extension.
+
+Tue May 11 01:20:43 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): Return strings encoded as
+ Encoding.default_internal if set.
+
+Mon May 10 23:50:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_unpack): add a missing break.
+
+Mon May 10 14:13:04 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (rb_big_abs_find_minbit): get rid of a warning of VC.
+
+Mon May 10 13:59:42 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_has_cancel_io): new
+ function.
+
+ * io.c (WAIT_FD_IN_WIN32): check only when it's not cancelable.
+
+Mon May 10 06:59:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (rdoc): rdoc should depend main. Moreover when XRUBY
+ is miniruby, it can run after miniruby is built.
+
+Mon May 10 03:36:56 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (eval_string_with_cref): propagate filename and line_no
+ of binding. [ruby-dev:38767] [ruby-core:28307]
+
+ * vm_core.h (rb_binding_t), proc.c: add filename and line_no fields to
+ preserve them.
+
+Mon May 10 02:58:33 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_compile_each), vm_insnhelper.c (vm_invoke_block,
+ vm_throw): allow "return" and "yield" even in singleton class
+ definition. based on a patch from wanabe <s.wanabe AT gmail.com>
+ for "return". [ruby-core:21379] [ruby-dev:40975]
+
+ * insns.def (defineclass): ditto (straightforwardly push block ptr,
+ instead of dfp ptr with special flag).
+
+ * vm_core.h (RUBY_VM_CLASS_SPECIAL_P): ditto (no longer needed).
+
+ * proc.c (proc_new): ditto (remove handling for special flag).
+
+ * bootstraptest/test_jump.rb: add tests for above.
+
+Mon May 10 02:29:51 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (fiber_switch): raise FiberError when returning to dead
+ fiber. [ruby-dev:40833]
+
+Mon May 10 02:07:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/thread.rb (ConditionVariable#wait): ensure to remove the current
+ thread from waiters. [ruby-core:29835]
+
+Mon May 10 00:54:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_set_raw): new method.
+
+ * ext/io/console/console.c (ttymode): reverted previous commit.
+
+Sun May 9 23:53:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_GC_GUARD_PTR): get rid of removal by
+ optimization.
+
+Sun May 9 23:07:53 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (proc_dup): copy blockprocval. proc_dup is used by
+ define_method, which made blockprocval be GC'ed mistakenly.
+ [ruby-core:30023]
+
+Sun May 9 16:28:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (fiber_initialize_machine_stack_context): try to release
+ unnecessary fibers and retry to create. based on a patch from
+ masaya tarui at [ruby-dev:41230].
+
+Sun May 9 08:32:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/generator/generator.c (fbuffer_inc_capa):
+ fix the use of REALLOC_N. [ruby-dev:41227]
+
+Sun May 9 09:30:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/{generator/generator.c,parser/parser.rl}: fixed indent.
+
+ * ext/json/{generator,parser}/depend: added.
+
+Sun May 9 09:15:03 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb: use IPv4 for
+ test_imaps_post_connection_check. [ruby-dev:41189]
+
+Sun May 9 08:24:24 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (disconnect): terminates @receiver_thread even if
+ @sock.shutdown raises an exception. [ruby-dev:34881]
+
+Sun May 9 06:15:21 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (nogvl_copy_stream_sendfile): ISO C90 forbids mixed
+ declarations and code.
+
+Sun May 9 02:57:02 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/lib/fiddle.rb: only require DL if it hasn't been required
+ yet. [ruby-core:30095]
+
+Sun May 9 01:15:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (stackgrowdirection): removed duplicated code, use
+ STACK_UPPER macro instead.
+
+ * gc.h (STACK_DIR_UPPER): moved from thread_pthread.c.
+
+Sun May 9 00:35:56 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/dl/test_base.rb (libc_so, libm_so): supports solaris.
+
+Sat May 8 19:03:31 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec (config): . is no longer in $:.
+
+Sun May 9 00:27:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_aset): fixed argument type.
+
+Sat May 8 23:09:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS (io/console): IO#noecho and IO#raw without block are
+ obsolete already. [ruby-dev:41226]
+
+ * ext/io/console/console.c (ttymode): save duped file descriptors
+ and restore tty modes using them, so that original modes can be
+ restored even if original fds are closed. [ruby-dev:41225]
+
+Sat May 8 13:48:31 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_fetch, rb_ary_splice, rb_ary_store): Improve
+ IndexError
+ messages [ruby-core:28394]
+
+ * hash.c (rb_hash_fetch_m): Improve KeyError message
+
+Sat May 8 13:11:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/user_interaction.rb (Gem::StreamUI#ask_for_password):
+ use io/console.
+
+ * ext/io/console: imported. [ruby-dev:40897]
+
+Sat May 8 12:25:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_systmpdir): moved from ext/tmpdir.
+
+ * ext/etc/etc.c (etc_sysconfdir): added.
+
+ * lib/rubygems/config_file.rb, lib/tmpdir.rb: use etc.
+
+Sat May 8 11:07:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpAlloc): ensure buf does not get
+ collected. based on a patch masaya tarui at [ruby-dev:41213].
+
+Sat May 8 10:03:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (BasicSocket#connect_address): MacOS X 10.6
+ returns "::ffff:a.b.c.d" for IPv4-mapped IPv6 address.
+ [ruby-dev:41215] patch by Tomoyuki Chikanaga.
+
+Fri May 7 23:51:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.h: bump up to 1.9.3.
+
+Fri May 7 11:30:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (install-man): install mdocs directly without
+ temporary files. [ruby-dev:41204]
+
+Fri May 7 09:16:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/extconf.rb (get_tclConfig_dirs): glob with EXEEXT.
+
+ * ext/tk/extconf.rb (search_tclConfig): fixed typo.
+
+Fri May 7 06:45:28 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: search directories on PATH, only if containing
+ tclsh or wish command (probably right fix for [ruby-core:30010]).
+
+Fri May 7 03:40:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): fix to check overflow.
+
+Thu May 6 22:19:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * cont.c: define FIBER_USE_NATIVE only when _WIN32_WINNT >= 0x0400
+ on Windows because Fiber APIs are supported only such building
+ (and running) environments.
+ [ruby-dev:41192]
+
+Thu May 6 19:13:43 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/openssl/test_ec.rb: added test_dsa_sign_asn1_FIPS186_3. dgst is
+ truncated with ec_key.group.order.size after openssl 0.9.8m for
+ FIPS 186-3 compliance.
+
+ WARNING: ruby-openssl aims to wrap an OpenSSL so when you're using
+ openssl 0.9.8l or earlier version, EC.dsa_sign_asn1 raises
+ OpenSSL::PKey::ECError as before and EC.dsa_verify_asn1 just returns
+ false when you pass dgst longer than expected (no truncation
+ performed).
+
+ * ext/openssl/ossl_pkey_ec.c: rdoc typo fixed.
+
+Thu May 6 18:12:43 2010 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (fiber_setcontext): Fix last commit.
+
+Thu May 6 17:16:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (rb_localtime_r2): get rid of infinite loop bug of
+ localtime() on x86_64-darwin. [ruby-core:30031]
+
+Thu May 6 15:56:12 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/*: Adding fiddle library to wrap libffi
+ * test/fiddle/*: testing fiddle extension
+ * ext/dl/lib/dl.rb: Requiring fiddle if it is available
+ * ext/dl/lib/dl/callback.rb: using Fiddle if it is available
+ * ext/dl/lib/dl/func.rb: ditto
+
+Thu May 6 15:04:37 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_match_m): add description about optional
+ position parameter. [ruby-list:47064]
+ patched by KISHIMOTO, Makoto <ksmakoto AT dd.iij4u.or.jp>
+
+Thu May 6 14:12:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/tmpdir.rb: test RUBY_PLATFORM for loading tmpdir.so to avoid
+ LoadError.
+
+Thu May 6 12:41:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: add rationalize methods of Complex, Float, Integer, NilClass,
+ and Rational classes.
+
+Thu May 6 12:12:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README: update.
+
+Thu May 6 03:34:29 2010 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: apply FIBER_USE_NATIVE patch. This patch improve
+ Fiber context switching cost using system APIs. Detail comments
+ are written in cont.c.
+
+Thu May 6 02:16:48 2010 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c (rb_unlink_method_entry, rb_sweep_method_entry):
+ added. Unlinked method entries are collected to
+ vm->unlinked_method_entry_list. On the GC timing, mark all method
+ entries which are on all living threads. Only non-marked method
+ entries are collected. This hack prevents releasing living method
+ entry.
+ [Performance Consideration] Since this Method Entry GC (MEGC)
+ doesn't occur frequently, MEGC will not be a performance bottleneck.
+ However, to traverse living method entries, every control frame push
+ needs to clear cfp->me field. This will be a performance issue
+ (because pushing control frame is occurred frequently).
+ Bug #2777 [ruby-dev:40457]
+
+ * cont.c (fiber_init): init cfp->me.
+
+ * gc.c (garbage_collect): kick rb_sweep_method_entry().
+
+ * method.h (rb_method_entry_t): add a mark field.
+
+ * vm.c (invoke_block_from_c): set passed me.
+
+ * vm.c (rb_thread_mark): mark cfp->me.
+
+ * vm_core.h (rb_thread_t): add a field passed_me.
+
+ * vm_core.h (rb_vm_t): add a field unlinked_method_entry_list.
+
+ * vm_insnhelper.c (vm_push_frame): clear cfp->me at all times.
+
+ * vm_insnhelper.c (vm_call_bmethod): pass me.
+
+ * bootstraptest/test_method.rb: add a test.
+
+Wed May 5 22:22:51 2010 wanabe <s.wanabe@gmail.com>
+
+ * compile.c (iseq_set_sequence): fix check range of ic_index.
+ a patch from Tomoyuki Chikanaga. #3236
+
+Wed May 5 21:49:31 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * dln.c (aix_loaderror): use execerror for load error on AIX.
+ This can avoid SEGV reported by Perry Smith. [Bug #2063]
+
+Wed May 5 20:37:54 2010 wanabe <s.wanabe@gmail.com>
+
+ * thread_win32.c (w32_wait_events): get GVL before handle interrupt
+ event. [ruby-core:27199], [ruby-core:29698]
+
+Wed May 5 19:00:01 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: revert. enbugged by last commit.
+ ([ruby-dev:41133], [ruby-dev:41134], [ruby-core:30010])
+
+ * ext/tk/README.tcltklib: ditto.
+
+Wed May 5 15:54:35 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_stat): use STAT macro instead of calling stat() directly.
+ reported by Bill Kelly. [ruby-core:30012]
+
+Wed May 5 11:43:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/test_io.rb (megacontent-copy_stream): get rid of
+ deadlock.
+
+Wed May 5 07:27:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_mark_method_entry): renamed.
+
+Wed May 5 05:20:27 2010 Koichi Sasada <ko1@atdot.net>
+
+ * method.h, vm_method.c: rename some internal functions related to
+ rb_method_entry_t.
+ rb_add_method_me() -> rb_method_entry_set().
+ rb_get_method_entry() -> rb_method_entry_without_cache().
+ rb_gc_mark_method_entry() -> rb_mark_method_entry().
+
+ * class.c, proc.c: ditto.
+
+Tue May 4 22:59:48 2010 wanabe <s.wanabe@gmail.com>
+
+ * compile.c (iseq_build_body): update iseq->ic_size.
+ a patch from Tomoyuki Chikanaga. see #3236.
+
+Tue May 4 18:51:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (name_err_mesg_to_str): preserve encoding of inspection.
+ [ruby-core:29948]
+
+Tue May 4 18:38:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb (test_copy_stream):
+ IO.copy_stream support binmode only currently.
+ [ruby-core:23724]
+
+Tue May 4 12:46:09 2010 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (argument_error): push correct backtrace.
+ Bug #2281 [ruby-core:26333]
+
+Tue May 4 12:38:40 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_inspect): use rb_str_cat2 and
+ rb_str_append.
+
+ * ext/socket/ancdata.c (ancillary_inspect): refined.
+
+Tue May 4 11:48:06 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_inspect): use rb_str_cat2 and
+ rb_str_append.
+
+Tue May 4 07:52:33 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/net/http.rb (Net::HTTPResponse#read_chunked): ensure to skip the
+ last newline of chunk. [ruby-core:29229]
+
+ * test/net/http/utils.rb: add an option for chunked response test.
+
+ * test/net/http/test_http.rb: add tests for chunked response.
+
+Tue May 4 03:37:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Update nkf 2010-04-28.
+
+Mon May 3 21:08:16 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * sample/README: update file list. [ruby-core:28981]
+
+Mon May 3 08:15:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/emitter.c (syck_scan_scalar): set SCAN_WHITEEDGE flag
+ when scalar begins with newline. patches from Dave B <daz AT
+ d10.karoo.co.uk> at [ruby-core:23019] and caleb clausen at
+ [ruby-core:25851]. [ruby-core:23006][ruby-core:29925]
+
+Sun May 2 17:52:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/task.rb (RDoc::Task): should not override newer code.
+
+Sun May 2 17:25:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): ignore signedness.
+
+Sun May 2 12:04:30 2010 wanabe <s.wanabe@gmail.com>
+
+ * iseq.c (iseq_load): allow filepath to be nil.
+ a patch from Tomoyuki Chikanaga in [Bug #3229].
+
+Sun May 2 08:54:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::NEEDS_BINMODE): check if O_BINARY value instead
+ of fragile check by platform name.
+
+Sun May 2 07:38:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (dir_config): should not modify argument arrays
+ themselves.
+
+Sat May 1 22:53:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#size): stat by path name when it is
+ closed.
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ keep the first trace.
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ fixed filtering. [ruby-core:29908]
+
+Sat May 1 16:46:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_IsInfinite): don't use
+ non-ascii character.
+
+Sat May 1 14:08:29 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/server.rb: Fix bug when serving gems.
+
+Sat May 1 14:05:36 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Upgrade to RDoc 2.5.8.
+
+Sat May 1 09:43:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ filter out traces in minitest directory. [ruby-core:29908]
+
+Sat May 1 06:42:57 2010 wanabe <s.wanabe@gmail.com>
+
+ * win32/win32.c: add declaration of wstati64 for gcc.
+
+Sat May 1 02:41:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * merge some patches from win32-unicode-test branch.
+ see #1685.
+
+ * file.c, include/ruby/intern.h (rb_str_encode_ospath): new function
+ to convert encoding for pathname.
+
+ * win32.c, include/ruby/win32.h (rb_w32_ulink, rb_w32_urename,
+ rb_w32_ustati64, rb_w32_uopen, rb_w32_uutime, rb_w32_uchdir,
+ rb_w32_umkdir, rb_w32_urmdir, rb_w32_uunlink): new functions to
+ accept UTF-8 path.
+
+ * win32/win32.c (rb_w32_opendir, link, rb_w32_stati64, rb_w32_utime,
+ rb_w32_unlink): use WCHAR path internally.
+
+ * file.c (rb_stat, eaccess, access_internal, rb_file_s_ftype,
+ chmod_internal, rb_file_chmod, rb_file_chown, utime_internal,
+ rb_file_s_link, unlink_internal, rb_file_s_rename): use UTF-8 version
+ functions on Win32.
+
+ * file.c (apply2files, rb_stat, rb_file_s_lstat, rb_file_symlink_p,
+ rb_file_readable_p, rb_file_writable_p, rb_file_executable_p,
+ check3rdbyte, rb_file_identical_p, rb_file_chmod, rb_file_chown,
+ rb_file_s_link, rb_file_s_symlink, rb_file_s_rename): call
+ rb_str_encode_ospath() before passing the path to system.
+
+ * io.c (rb_sysopen): ditto.
+
+ * dir.c (dir_chdir, dir_s_mkdir, dir_s_rmdir): ditto.
+
+Sat May 1 00:26:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ assertion message must be String or Proc. suggested by caleb
+ clausen at [ruby-core:29884].
+
+Sat May 1 00:14:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_io.rb: skip false tests on Windows.
+ [ruby-core:29886]
+
+Fri Apr 30 22:46:27 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * math.c: Math::DomainError < StandardError [ruby-core:29855]
+
+Fri Apr 30 21:40:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/test_open3.rb (TestOpen3#test_commandline): use simple
+ command via shell. [ruby-dev:41100]
+
+Fri Apr 30 15:38:45 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: better support for MinGW environment.
+
+Fri Apr 30 12:05:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c (file_expand_path): call rb_str_set_len before BUFCHECK to
+ prevent rb_str_resize in BUFCHECK discard the content.
+
+Fri Apr 30 11:48:31 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * string.c (rb_str_sub_bang): String#sub! now raises an error when
+ called on a frozen string, even if no change is made.
+ See [ruby-core:23657]
+
+Fri Apr 30 11:40:44 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * eval.c (make_exception, rb_obj_extend): Fix error messages in case
+ of wrong
+ number of arguments
+
+ * file.c (rb_f_test, rb_file_s_umask): ditto
+
+ * numeric.c (int_chr, num_step): ditto
+
+ * process.c (rb_f_sleep): ditto
+
+ * re.c (rb_reg_initialize_m): ditto
+
+ * signal.c (rb_f_kill, sig_trap): ditto
+
+ * string.c (rb_str_aref_m, rb_str_aset_m, rb_str_count,
+ rb_str_delete_bang,
+ rb_str_slice_bang, rb_str_sub_bang, str_gsub): ditto
+
+ * proc.c (curry): rdoc fix
+
+Fri Apr 30 04:09:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (TIMET_MAX): should be time_t, not unsigned_time_t.
+
+Fri Apr 30 03:59:08 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (rb_time_unmagnify_to_float): should cast.
+
+Fri Apr 30 03:38:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (fix_mul): the width of fixnum is same as long's on all
+ platforms.
+
+Fri Apr 30 03:17:20 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Improve algorithm for Matrix#determinant and
+ Matrix#rank
+ {determinant,det,rank}_e are now deprecated. [ruby-core:28273]
+ Also fixes a bug in Determinant#rank (e.g. [[0,1][0,1][0,1]])
+ Matrix#singular?, Matrix#regular? now raise on rectangular matrices
+ and use determinant instead of rank.
+
+Fri Apr 30 00:52:56 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): define some constants to select
+ collect code for win64.
+
+Thu Apr 29 20:10:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/test_open3.rb (test_commandline): use dump instead of
+ shellwords. [ruby-core:23797]
+
+Thu Apr 29 18:39:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/thwait.rb (ThreadsWait#join): refined rdoc again.
+ [ruby-core:29863] [ruby-dev:41092]
+
+Thu Apr 29 14:46:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby: use more descriptive assertions.
+
+ * test/ruby: fixed nonsense assertions.
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ reverted. [ruby-core:29872]
+
+Thu Apr 29 12:33:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/thwait.rb (ThreadsWait#join): refined rdoc. [ruby-core:29863]
+
+Thu Apr 29 12:16:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert): reject
+ non-boolean values. [ruby-core:29868]
+
+Thu Apr 29 11:20:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (seek_before_access): renamed. see [ruby-core:29861].
+
+ * io.c (rb_io_s_binread): fixed rdoc. parts of a patch from Roger
+ Pack in [ruby-core:29861].
+
+Thu Apr 29 03:50:49 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/utils.rb: Fixing an incompatibility with
+ reflection methods returning Symbols. Patch by
+ HD Moore. [ruby-core:29821]
+
+Wed Apr 28 23:53:15 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/thwait.rb: revise rdoc. a patch from Roger Pack in
+ [ruby-core:27362].
+
+Wed Apr 28 23:21:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Update to JSON 1.4.2.
+
+Wed Apr 28 22:53:57 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread. (rb_thread_terminate_all): revert r24591 which caused SEGV
+ sometimes. [ruby-dev:40936] [ruby-core:27245] [ruby-core:27416]
+
+Wed Apr 28 22:26:55 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/psych/visitors/test_yaml_tree.rb (test_struct_const): remove
+ Struct::Foo which affects test/ruby/test_struct to warn redefining
+ constant.
+
+Wed Apr 28 18:04:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_timespec): use rb_check_funcall.
+
+Wed Apr 28 17:14:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/extconf.rb: CMSG_ macros are broken on 64bit darwin,
+ because of use of __DARWIN_ALIGN.
+
+Wed Apr 28 16:44:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h ({RSTRING,RSTRUCT,RBIGNUM}_LENINT): check long
+ to cast to int.
+
+Wed Apr 28 16:28:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/unixsocket.c (sendmsg_blocking, recvmsg_blocking):
+ define only when used.
+
+ * ext/socket/rubysocket.h: non-implemented method definitions need
+ to be shared.
+
+Wed Apr 28 10:27:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (ruby_vsnprintf, ruby_snprintf): suppress warnings.
+ why return int in spite of the arguments of size_t?
+
+Wed Apr 28 09:49:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/compile_prelude.rb: enable optimization.
+
+Wed Apr 28 09:43:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (warn_balanced): do not warn for EXPR_ENDFN.
+
+Tue Apr 27 23:57:04 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (ruby_cleanup): add exception guard around code running
+ signal handler (of r27513). Absence of the guard made
+ bootstraptest/test_thread.rb fail sometimes.
+
+Tue Apr 27 22:55:29 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * insns.def (onceinlinecache): add exclusion control for a region
+ between onceinlinecache and setinlinecache. [ruby-dev:39768]
+
+Tue Apr 27 22:40:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * iseq.c (set_relation): do not use top_wrapper as bottom of cref,
+ which caused constant lookup error when "wrapped load" is used;
+ instead, use Object as bottom, and push top_wrapper on Object.
+ [ruby-core:25039]
+
+Tue Apr 27 21:24:40 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (ruby_cleanup): before cleanup, check signal buffer and run
+ handler if any. [ruby-core:20970]
+
+ * thread.c (rb_threadptr_check_signal): separated from
+ timer_thread_function.
+
+Tue Apr 27 18:00:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP#rcptto_list): fixed typo.
+ [ruby-core:29809]
+
+Tue Apr 27 12:44:23 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 2.5.7. Fixes #1318 and ruby-core:29780.
+
+Tue Apr 27 10:54:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_read_escape): deny extra character escapes.
+ [ruby-core:27228]
+
+Tue Apr 27 06:20:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c (select_internal): IO which cbuf is not empty is readable.
+
+Tue Apr 27 00:07:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (program): check void_expr when rb_parse_in_main().
+ [ruby-dev:38717]
+
+Mon Apr 26 20:11:05 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c, rational.c, lib/cmath.rb, lib/date.rb lib/date/delta*:
+ reverted r27484-27486. now official spec.
+
+Mon Apr 26 15:42:59 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/json/generator/generator.c (convert_UTF8_to_JSON_ASCII): get rid
+ of a warning.
+
+Mon Apr 26 13:11:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ripper_get_value): escape Qundef.
+
+Mon Apr 26 12:42:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (warn_balanced): warn according to last state.
+
+Mon Apr 26 09:05:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Update to JSON 1.4.1.
+
+Sun Apr 25 23:50:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (ruby_dup): update max fd.
+
+Sun Apr 25 21:56:49 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (fetch_internal): do not quote message data item
+ names. Thanks, Eric Hodel. [ruby-core:23508]
+
+Sun Apr 25 15:59:02 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb: reverted experimental r23900.
+
+Sun Apr 25 15:51:00 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c, rational.c: reverted experimental r24565.
+
+Sun Apr 25 15:34:48 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/delta*: reverted experimental r24567 and
+ r25393.
+
+Sun Apr 25 11:02:20 2010 wanabe <s.wanabe@gmail.com>
+
+ * hash.c (ruby_setenv): putenv on msvcrt.dll can't remove empty value.
+
+Sat Apr 24 23:40:50 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb: use [""].pack("p").size to detect the pointer size.
+
+Sat Apr 24 21:07:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * test/psych/test_psych.rb: don't leave temporary files.
+
+Sat Apr 24 16:27:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (RUBY_PROGRAM_VERSION): added
+
+ * tool/rbinstall.rb: expand target file name.
+
+ * template/fake.rb.in: no need for hook if extmk.
+
+Sat Apr 24 14:40:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c: raise IOError when byte oriented operations occur with
+ non-empty character buffer.
+ [ruby-dev:40493] [ruby-dev:40506]
+
+Sat Apr 24 13:06:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (get_arglen): skip the last terminator of argv before
+ checking environ.
+
+ * ruby.c (get_arglen): duplicate environ area if setenv and unsetenv
+ are provided.
+
+ * ruby.c (set_arg0): keep empty strings.
+
+Sat Apr 24 09:44:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/yaml2byte.c (bytestring_append, bytestring_extend):
+ removed wrong extra assignments. a patch from Marcus Rueckert
+ <darix AT opensu.se> at [ruby-core:29759].
+
+Sat Apr 24 00:41:52 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * process.c (rb_f_fork): remove after_exec() which sometimes caused
+ two timer threads started. [ruby-core:25217]
+
+ * signal.c: use pthread_sigmask() instead of sigprocmask().
+ sigprocmask() is unspecified behavior on multi-thread programs.
+ [ruby-core:25217]
+
+Sat Apr 24 00:36:05 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/dl/test_base.rb: add kfreebsd support. based on a patch from
+ Petr Salinger in [ruby-core:29769].
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=560293
+
+Sat Apr 24 00:14:41 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl_session.c (SSL_SESSION_cmp): remove static for
+ loopy version of openssl (0.9.8l?).
+
+Fri Apr 23 23:27:17 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_config.c: fix compilation failure with
+ OpenSSL 0.9.8.
+
+Fri Apr 23 17:29:35 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_config.c: OpenSSL 1.0.0 support.
+ [ruby-core:29256]
+
+ * ext/openssl/extconf.rb: check some functions added/removed at
+ OpenSSL 1.0.0.
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_load): use engines which
+ exists.
+
+ * ext/openssl/ossl_ssl_session (SSL_SESSION_cmp): removed at 1.0.0,
+ so implement compatible function here.
+
+Fri Apr 23 14:37:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb (Gem::QuickLoader.load_full_rubygems_library):
+ get rid of creating same regexps many times.
+
+ * lib/rubygems/custom_require.rb (Kernel#require): ditto.
+
+Fri Apr 23 14:07:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * doc/etc.rd, doc/etc.rd.ja: moved from ext/etc.
+
+ * ext/etc.c (Init_etc): fixed rdoc.
+
+Fri Apr 23 11:31:25 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 2.5.6.
+
+Fri Apr 23 04:11:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ripper/test_parser_events.rb (test_unterminated_regexp):
+ separate test.
+
+Fri Apr 23 01:47:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_wopen): shouldn't use FILE_FLAG_OVERLAPPED with
+ normal file. #1807, #2510, #2549
+
+Fri Apr 23 01:28:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (ubf_handle): remove unused typedef.
+
+Thu Apr 22 23:10:59 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (mnew): fix wrong error message when Kernel#public_method
+ receives name of private method. [Bug #2425]
+
+Thu Apr 22 22:56:42 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_thread.rb: fix test. [Bug #2342]
+
+Thu Apr 22 21:50:17 2010 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/ext/multi-irb.rb: fix multi-irb running
+ parallelly. [ruby-dev:41031] [Bug #3182]
+
+Thu Apr 22 17:13:34 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems 1.3.7.pre.1 (as 1.3.6.1).
+
+Thu Apr 22 16:43:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (warn_balanced): removed false warning.
+
+ * parse.y (parser_yylex): skip whitespaces after method name.
+
+Wed Apr 22 02:16:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.[ch]: replace _DEBUG with BIGDECIMAL_DEBUG
+ to prevent activating debugging code when compiled with -DEBUG flag
+ on Windows. [ruby-core:22989] #1308
+
+Wed Apr 21 21:24:20 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/sha2/extconf.rb: check SHA256_CTX and SHA512_CTX to fix
+ compilation failure on OpenBSD 4.4.
+
+Wed Apr 21 15:13:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_getc): fix incomplete character immediately before EOF
+ with newline converter. [ruby-dev:41024]
+
+Wed Apr 21 13:44:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (regexp): check each fragments. [ruby-core:27374]
+
+Wed Apr 21 13:36:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): reverted r27388 due to backward
+ compatibility.
+
+ * parse.y (parser_yylex): warn confusing binary operators after
+ local variable.
+
+Wed Apr 21 11:53:47 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 2.5.5. Fixes bugs in ri, Darkfish and
+ rdoc option handling.
+
+Wed Apr 21 11:31:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): abandoned EXPR_VCALL.
+
+Wed Apr 21 03:17:17 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_getc): set read_encoding to resulted one character
+ string. [ruby-dev:41023]
+
+Wed Apr 21 00:29:39 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (bigmul1_karatsuba): fix calculation order to prevent
+ underflow. [ruby-core:29088]
+
+Wed Apr 21 00:26:17 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (NODE_NEXT, NODE_REDO): add dummy putnil instruction to
+ fix stack consistency error. [ruby-core:28172]
+
+ * bootstraptest/test_jump.rb: add a test for above.
+
+Wed Apr 21 00:16:44 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/zlib/zlib.c (rb_deflate_params): update buf_filled count because
+ deflateParams writes to out buffer. And, revert r18029 because the
+ flush was not needed now and emits garbage. [ruby-dev:40802]
+
+Wed Apr 21 00:01:05 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_method.c (rb_add_method_def): decrement alias count of
+ rb_method_definition_t to prevent memory leak. see
+ [ruby-dev:41021].
+
+Tue Apr 20 21:33:06 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/registry.rb (PredefinedKey#create): root key
+ name should be a string. fixed [ruby-core:28192]
+
+Tue Apr 20 19:25:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): fix for tLPAREN_ARG.
+
+Tue Apr 20 12:34:23 2010 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/{core, util}.rb (RFC822_DAYS, RFC822_MONTHS):
+ move the constant because used only util.rb.
+
+Tue Apr 20 12:24:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lex_state_e, IS_END, IS_SPCARG, parser_yylex): separate
+ the state after vcall. [ruby-core:29578]
+
+Tue Apr 20 01:03:00 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_fork.rb: add a test for [ruby-core:28924].
+
+Tue Apr 20 00:43:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): skip last directory separators.
+ [ruby-core:29627]
+
+Tue Apr 20 00:41:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (internal_{read,write}_func, rb_{read,write}_internal):
+ reverted r27265, since now rb_thread_blocking_region() preserves
+ errno.
+
+Mon Apr 19 23:14:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_thread_blocking_region, rb_thread_blocking_region_end):
+ preserve errno. [Bug #2606] [ruby-core:28924]
+
+Mon Apr 19 19:41:10 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::cp_r): backport r11156 from ruby_1_8.
+
+Mon Apr 19 19:18:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): reduced duplicated conditions.
+
+Mon Apr 19 13:58:04 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 2.5.4. Fixes #3169, #3160, #3023.
+
+Mon Apr 19 12:46:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/timeout.rb (Timeout#timeout): propagate errors to the
+ caller. [ruby-dev:41010]
+
+Mon Apr 19 00:27:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_method.c (rb_add_method_def): workaround fix for redefinition
+ of methods. This is because cfp->me uses the rb_method_entry
+ which is freed by redefinition of remove_method. Note that
+ reusing may cause another problem when the usage is changed.
+ [ruby-core:27320] [ruby-core:29464]
+
+Sun Apr 18 22:13:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (string_content): cond_stack and cmdarg_stack are VALUE.
+
+Sun Apr 18 18:07:47 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::IPv4::Regex): make it only accept 0 to 255.
+ [ruby-core:29501]
+
+Sun Apr 18 12:48:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): seems like a symbol-literal when spaces
+ are unbalanced. [ruby-core:29578]
+
+Sun Apr 18 12:32:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (string_content): preserve cond_stack and cmdarg_stack.
+ [ruby-core:29579]
+
+Sun Apr 18 05:50:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: defaulting binary string
+ format to "literal" format.
+
+Sun Apr 18 02:13:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (identify_identifier): add '_' to the regexp.
+
+Sat Apr 17 23:21:15 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: use AC_TRY_LINK instead of AC_TRY_COMPILE.
+ On Solaris it can compile with signbit but can't link.
+
+Sat Apr 17 20:34:09 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/envutil.rb: update Gem::ConfigMap to fake environment for
+ tests. Some test of rubygems had failed because envutil.rb changed
+ only RbConfig::CONFIG but not Gem::ConfigMap.
+
+Sat Apr 17 20:31:08 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/ruby-lex.rb (identify_identifier): allow multibyte character
+ as identifier. [ruby-core:27275]
+
+Sat Apr 17 09:19:27 2010 wanabe <s.wanabe@gmail.com>
+
+ * compile.c (iseq_compile_each): fix splat condition in NODE_WHEN.
+ [Bug #2226]
+
+Sat Apr 17 08:57:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP#rcptto_list): continue when at least
+ one RCPT is accepted. based on a patch from Kero van Gelder at
+ [ruby-core:26190].
+
+Sat Apr 17 07:43:55 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/thread/test_queue.rb (TestQueue#grind): fix typos.
+
+Sat Apr 17 07:27:53 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add Array#repeated_{combination,permutation} [Feature #2981]
+
+Sat Apr 17 05:30:22 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/core_ext.rb (yaml_as): supporting deprecated
+ "yaml_as" method
+ * ext/syck/lib/syck/tag.rb: ditto
+
+Sat Apr 17 05:25:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/coder.rb (scalar): supporting deprecated methods
+ * ext/psych/lib/psych/deprecated.rb: supporting deprecated
+ to_yaml_properties method
+
+Sat Apr 17 01:32:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (rb_io_rewind, rb_io_eof): add rdoc. based on a patch from
+ Roger Pack in [ruby-core:26771] [Bug #2377].
+
+Fri Apr 16 23:42:56 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_folderitem2_invokeverb.rb (test_invokeverb):
+ run test only when "Create Shortcut (&S)" menu is found.
+ [ruby-core:29550] [Bug #1602]
+
+Fri Apr 16 21:52:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (string_content, etc): counts of CMDARG_PUSH and POP were
+ inconsistent. [ruby-core:22637]
+
+Fri Apr 16 21:27:57 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_coerce): revert r23389,
+ which not only is unnecessary but also causes the inconsistency of
+ return type. [ruby-core:25706] [Bug #2129]
+
+Fri Apr 16 20:05:24 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/thread.rb (Queue#push, #pop, SizedQueue#push, #pop): remove
+ code that kicks waiting thread twice, which caused race and
+ deadlock. a patch from James M. Lawrence. [ruby-core:25537]
+
+ * test/thread/test_queue.rb: added.
+
+Fri Apr 16 20:01:47 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * .gitignore: updated.
+
+Fri Apr 16 16:51:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/file2lastrev.rb (VCS::SVN::get_revisions.): remind about
+ DOSISH, sometimes.
+
+Fri Apr 16 16:15:40 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_repeated_permutation): new method added. a patch
+ from Makoto Kishimoto in [ruby-core:29267] [ruby-core:28724]
+
+ * array.c (rb_ary_repeated_combination): ditto.
+
+Thu Apr 15 22:41:47 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_thread_priority, rb_thread_priority_set): fix rdoc.
+ Lower-priority thread may run even if there are higher-priority
+ threads. See [ruby-dev:40977].
+
+Thu Apr 15 22:33:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/uri/ftp.rb (URI::FTP#set_path): added to correct handling of
+ special case where path of ftp is relative. This converts relative
+ path to absolute one, because external representation of ftp path is
+ relative and internal representation is absolute. [ruby-core:24077]
+
+ * lib/uri/ftp.rb (URI::FTP#initialize): converts absolute to relative.
+
+ * lib/uri/generic.rb (URI::Generic#check_path): allow relative path
+ when scheme is ftp.
+
+Thu Apr 15 21:54:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/file2lastrev.rb: use backtick for ruby 1.8.
+
+Thu Apr 15 21:13:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/file2lastrev.rb: this should run with ruby 1.8.
+
+Thu Apr 15 20:41:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/file2lastrev.rb: make -q effective for files not version
+ controlled.
+
+Thu Apr 15 14:50:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): get rid of use of malloc from signal
+ handler by using ruby_engine_name. [ruby-core:29497]
+
+ * vm_eval.c (print_backtrace): file may be nil when segfaulted in
+ very early stage.
+
+ * vm_dump.c (bugreport_backtrace): ditto.
+
+Thu Apr 15 11:51:49 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (help): small fix.
+
+Wed Apr 14 22:09:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/source.rb: force_encoding("UTF-8") when the input
+ is already UTF-8. patched by Kouhei Sutou [ruby-core:23404]
+
+Wed Apr 14 18:23:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * configure.in (signbit): signbit is a macro in C99.
+
+Wed Apr 14 17:56:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_shift_cbuf): should terminate.
+ http://golf.shinh.org/p.rb?DECimal+number+to+BINary#Ruby
+
+Wed Apr 14 16:29:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (GET_STACK_BOUNDS): fixed macro argument names. a patch from
+ Satoshi Shiba <shiba AT rvm.jp> at [ruby-dev:40973].
+
+ * gc.h (ruby_get_stack_grow_direction): fixed prototype.
+
+ * thread_pthread.c (get_stack, ruby_stack_overflowed_p): both side
+ should be same type. [Bug #3145]
+
+Wed Apr 14 15:58:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_string_value_cstr): make NUL terminated if it is
+ not done.
+
+Wed Apr 14 12:56:21 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap (encode_utf7): encode & properly. Thanks, Kengo
+ Matsuyama. [ruby-dev:38063]
+
+Wed Apr 14 11:39:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/lib/syck/basenode.rb (Syck::BaseNode#match_path): fixed
+ library name.
+
+ * ext/syck/lib/yaml/syck.rb: split from ext/syck/lib/syck.rb for
+ backward compatibility.
+
+Wed Apr 14 09:24:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Refix [nkf-bug:21393]. (explicit -X)
+
+Tue Apr 13 20:36:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Fix: Windows Codepages wrongly convert
+ Halfwidth Katakana. [nkf-bug:21393]
+
+Tue Apr 13 15:00:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (make_seed_value): fix leading-zero-guard condition on
+ bdigit is smaller than 32bit.
+
+Tue Apr 13 13:57:36 2010 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/completion.rb (CompletionProc): fix [ruby-dev:40953]
+ [Bug #3126]. Thanks Kazuhiro NISHIYAMA.
+
+Tue Apr 13 09:32:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (transcode_loop): insert output the value when
+ fallback hash has a related key. [ruby-dev:40540]
+ [ruby-dev:40829] #3036
+
+ * transcode.c (rb_econv_prepare_opts): pass to newhash
+ a value with the key :fallback.
+
+Tue Apr 13 00:12:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * random.c (rand_init): use the absolute value of seed to
+ make srand(-2**40) portable with 32bit and 64bit.
+ [ruby-core:29292](2)
+
+Mon Apr 12 22:48:47 2010 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c (inspect_enumerator): don't raise for uninitialized
+ enumerator.
+
+Mon Apr 12 21:47:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * LEGAL: separated the section for parse.c. contributed by Paul
+ Betteridge in [ruby-core:29472].
+
+Mon Apr 12 09:19:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (fu_each_src_dest): ensure src is accessible.
+
+ * lib/fileutils.rb (fu_same): use File.identical? to get rid of
+ exceptions. [ruby-core:28141]
+
+ * lib/fileutils.rb (fu_have_st_ino): no longer used.
+
+ * lib/fileutils.rb (fu_have_st_ino): check if required method is
+ defined, instead of platform name.
+
+Mon Apr 12 05:10:20 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: New method Matrix.build [ruby-core:28272]
+
+Mon Apr 12 03:45:25 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Deprecate elements_to_{f/i/r}
+
+Mon Apr 12 03:30:29 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Handle coercion errors by raising TypeErrors
+ [ruby-core:26736]
+
+Mon Apr 12 00:51:21 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (rb_io_getline_fast, rb_io_getline_1): fix ARGF.lineno
+ behavior. [ruby-core:25205]
+
+ * test/ruby/test_argf.rb (TestArgf#test_lineno3): add a test for
+ above.
+
+Sun Apr 11 23:25:17 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * configure.in: can not load libraries if --with-opt-dir is used
+ on AIX. [Bug #3107]
+
+Sun Apr 11 14:44:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/ruby-lex.rb (RubyLex#getc): revert r10817, which caused
+ regression for handling case when there is no newline at the end of
+ file. [ruby-core:28248]
+
+Sun Apr 11 12:08:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_replicate): new encoding name must be valid
+ c-string. [ruby-dev:40954]
+
+Sun Apr 11 11:58:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (ftruncate): rename to get rid of conflict
+ with same name but non-LFS function on MinGW. [ruby-core:24757]
+
+Sun Apr 11 10:33:34 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 2.5.3. Includes r27288 and r27290.
+
+Sun Apr 11 09:31:39 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/syck/*: Moved test/yaml to test/syck since it's actually
+ testing the syck YAML engine.
+
+Sun Apr 11 08:56:44 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (setup_output_dir): compare by Time#to_i.
+ Cached created time doesn't have fractional times,
+ but FileStat#mtime has; so rdoc almost always judged files
+ are updated.
+
+Sun Apr 11 07:40:48 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (setup_output_dir): fix typo. [ruby-core:29415]
+
+Sun Apr 11 07:01:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (decode_www_form_component): validate.
+ [ruby-dev:40938]
+
+ * lib/uri/common.rb (decode_www_form): allow empty string.
+
+ * lib/uri/common.rb: fix nodoc for constant. [ruby-dev:40949]
+
+Sat Apr 10 21:26:22 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/markup/preprocess.rb (RDoc::Markup::PreProcess#handle):
+ use File.binread to avoid locale dependency.
+
+Sat Apr 10 15:18:26 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 2.5.2
+ * lib/rdoc/parser/ruby.rb (RDoc::Parser::Ruby): Don't parse rdoc
+ files, reverts r24976 in favor of include directive support in C
+ parser.
+
+Sat Apr 10 13:14:22 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/openssl/ossl_ssl.c (Init_ossl_ssl): add SSLContext#ssl_timeout=,
+ which allows net/https to specify timeout. [ruby-core:24812]
+
+Sat Apr 10 07:36:13 2010 wanabe <s.wanabe@gmail.com>
+
+ * vm_method.c (rb_add_method): clear attr.location before rb_ary_new3.
+ a patch from Masaya TARUI in [Bug #3108]
+
+Sat Apr 10 05:27:26 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/deprecated.rb: implementing Psych.quick_emit and
+ adding deprecation warnings.
+ * ext/psych/lib/psych/visitors/to_ruby.rb: supporting deprecated
+ yaml_initialize api.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: supporting deprecated
+ to_yaml api.
+
+Sat Apr 10 01:08:53 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: parse raises a TypeError when nil is passed in.
+
+Sat Apr 10 00:01:51 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/pty/lib/expect.rb: preserve buffer read, instead of discard.
+ based on a patch from Luiz Angelo Daros de Luca in
+ [ruby-core:23464].
+
+Fri Apr 9 23:58:58 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/pty/lib/expect.rb: raise an error when argument is unexpected
+ type. based on a patch from Luiz Angelo Daros de Luca in
+ [ruby-core:23464].
+
+Fri Apr 9 23:57:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/pty/lib/expect.rb: add rdoc. based on a patch from Luiz Angelo
+ Daros de Luca in [ruby-core:23464].
+
+Fri Apr 9 23:54:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/init.rb, lib/irb/lc/help-message,
+ lib/irb/lc/ja/help-message: add -w flag. [ruby-core:24594]
+
+Fri Apr 9 23:51:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal),
+ ext/socket/unixsocket.c (rsock_init_unixsock): check the result of
+ listen(2). based on a patch from Mike Pomraning. [ruby-core:23698]
+
+Fri Apr 9 21:22:10 2010 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/completion.rb (CompletionProc): irb will be stuck with
+ long variable name at completion. [Bug#1969]. refix [ruby-core:28366].
+
+Fri Apr 9 20:54:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (decode_www_form): don't ignore leading '?'.
+ [ruby-dev:40938]
+
+ * lib/uri/common.rb (decode_www_form): check whether argument is
+ valid application/x-www-form-urlencoded data.
+
+Fri Apr 9 20:29:13 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * dir.c (push_glob): clear up the previous commit (RB_GC_GUARD can
+ precede the last reference). [ruby-dev:40942]
+
+Fri Apr 9 20:05:05 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * dir.c (push_glob): add RB_GC_GUARD to prevent str being free'ed.
+ a patch from Masaya TARUI in [ruby-dev:40939]. [ruby-dev:40514]
+
+Fri Apr 9 10:53:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * compile.c (iseq_compile_each): stop hiding, and freeze unpopped
+ string nodes to allow method redefinition. [ruby-dev:40641]
+
+Fri Apr 9 01:26:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (internal_{read,write}_func, rb_{read,write}_internal):
+ preserve errno. a patch from Takehiro Kubo in [ruby-core:29340].
+ [ruby-core:28924]
+
+Fri Apr 9 01:12:07 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/completion.rb (CompletionProc): calling the method "methods"
+ may raise an exception. [ruby-core:28366]
+
+Thu Apr 8 14:33:24 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: --disable-install-doc should prohibit doxygen.
+
+Thu Apr 8 14:23:51 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: include errno.h before defining errnos.
+ see [ruby-core:29314]
+
+Thu Apr 8 11:45:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/yaml.rb: use Psych if only it is loaded already.
+
+ * lib/yaml.rb (YAML::EngineManager#yamler): set the result after
+ successfully switched.
+
+Thu Apr 8 07:22:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rand_init): ignore higher bits if all they are same as
+ the lower sign bit. [ruby-core:29292](2)
+
+Thu Apr 8 07:16:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/cmd/help.rb (IRB::ExtendCommand::Help#execute): use RI
+ interactive mode if no argument. [ruby-dev:39839]
+
+Wed Apr 8 02:33:55 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_permutation): Remove limitation for lengthy permutations
+ [ruby-core:29240]
+
+ * test/ruby/test_array.rb: ditto
+
+Wed Apr 7 23:33:55 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * misc/ruby-mode.el (ruby-mode-map): binded C-c C-c and C-c C-c C-u
+ to comment-region and uncomment-region. Thanks Michael Klishin!
+ [Feature #872] [ruby-core:20552]
+
+Wed Apr 7 21:44:14 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (ASCTIME): unused macro removed.
+
+Wed Apr 7 16:45:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): reverted r27244.
+
+Wed Apr 7 11:49:34 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/quickpath.rb (REXML::QuickPath::predicate):
+ fix regexp.
+
+Wed Apr 7 09:44:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): quote init-commands.
+
+ * configure.in (Makefile): `make ruby` builds ruby command
+ even if RUBY_INSTALL_NAME is customized or it has extension.
+
+Wed Apr 7 03:28:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc#{initialize,setup_output_dir}):
+ initialize @last_created and use it.
+
+Wed Apr 7 02:05:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in: not define $extout to make target in cwd.
+
+Tue Apr 6 23:01:35 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h: Introduce UNINITIALIZED_VAR() macro.
+ * thread.c (do_select): Use UNINITIALIZED_VAR() instead FAKE_FD_ZERO().
+ Also, remove FAKE_FD_ZERO completely. [Feature #3018]
+
+Tue Apr 6 14:53:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: check definition existence before defining
+ errno macros.
+
+ * win32/win32.c (errmap): define winsock errors mappings.
+ these are VC++10 support. see [ruby-core:29278]
+
+Tue Apr 6 21:55:25 2010 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: test localtime(3) overflow. [ruby-dev:40910]
+
+ * time.c (rb_gmtime_r): renamed from rb_gmtime.
+ (rb_localtime_r): renamed from rb_localtime.
+ (rb_localtime_r2): call rb_localtime_r and validate the result if
+ there is overflow problem.
+ (rb_gmtime_r2): call rb_gmtime_r and validate the result if there
+ is overflow problem.
+
+Tue Apr 6 11:21:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in: hooks for extconf.rb.
+
+Tue Apr 6 06:19:36 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/text.rb (REXML::Text.check): comment out
+ broken logic.
+
+Tue Apr 6 05:59:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/parsers/baseparser.rb (LETTER, DIGIT):
+ always use POSIX charclass.
+
+ * lib/rexml/parsers/baseparser.rb (NAMECHAR):
+ remove duplicated range.
+
+ * lib/rexml/xmltokens.rb (NCNAME_STR, NAMECHAR): ditto.
+
+ * lib/rexml/parsers/xpathparser.rb (PathExpr): ditto.
+
+ * lib/rexml/text.rb (REXML::Text#initialize):
+ initialize @parent.
+
+Mon Apr 5 19:54:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (make_regexp): use onig_new_with_source to keep
+ sourcefile and sourceline.
+
+ * re.c (onig_new_with_source): copied from onig_new in
+ regcomp.c for keep sourcefile and sourceline.
+
+Mon Apr 5 13:20:45 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/win32.c (EWOULDBLOCK): VC10 already
+ defined EWOULDBLOCK. based on a patch from Charlie Savage,
+ see [ruby-core:29255]
+
+Mon Apr 5 13:10:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/psych/lib/psych/core_ext.rb: remove before alias.
+
+ * ext/syck/lib/syck.rb: don't warn called by itself.
+
+Mon Apr 5 13:08:24 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb (each_export): VC10 support.
+ a patch from Charlie Savage in [ruby-core:29254]
+
+Sun Apr 4 22:18:32 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (cmp): optimize for fixnums.
+ (lt): use cmp.
+ (gt): ditto.
+ (le): ditto.
+ (ge): ditto.
+ (wlt): use wcmp.
+ (wgt): ditto.
+ (wle): ditto.
+ (wge): ditto.
+ (time_subsec): use wmod.
+
+Sun Apr 4 10:04:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/ruby.h: replace snprintf and vsnprintf by
+ ruby_snprintf and ruby_vsnprintf. [ruby-dev:40909]
+
+ * configure.in: don't check snprintf(3) and vsnprintf(3).
+
+ * include/ruby/missing.h: don't declare snprintf and vsnprintf.
+
+ * include/ruby/ruby.h: include stdarg.h.
+
+ * sprintf.c: include vsnprintf.c
+
+ * vsnprintf.c: renamed from missing/vsnprintf.c.
+
+ * vsnprintf.c: remove useless ifdefs.
+
+ * win32/mkexports.rb: use ruby_snprintf and ruby_vsnprintf.
+
+Sun Apr 4 09:44:01 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (lt): call <=> instead of <.
+
+Sun Apr 4 06:46:16 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/yaml: Moved to ext/syck/lib, Syck only uses Syck constant.
+ * lib/yaml.rb: Added an engine manager for choosing YAML engine.
+ * ext/syck/lib/syck/rubytypes.rb: squashed warnings when using Psych
+
+Sat Apr 3 22:47:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: don't define STRUCT_WIDEVAL.
+
+Sat Apr 3 18:15:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc#{setup,update}_output_dir): store mtimes
+ per files in the flag file.
+
+ * lib/rdoc/rdoc.rb (RDoc#normalized_file_list): skip already
+ processed and unmodified files.
+
+Sat Apr 3 15:09:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (rdoc): no force-update, and add RDOCFLAGS.
+
+ * lib/rdoc/options.rb (RDoc#parse): no-force-update option.
+
+Sat Apr 3 10:51:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): raise ArgumentError on nil, as the
+ documentation implies. [ruby-core:29075]
+
+ * random.c (rb_f_rand): mentioned the case of when max is nil.
+
+Sat Apr 3 06:56:11 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_product): Accept a block [ruby-core:29045]
+
+Sat Apr 3 04:46:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/file2lastrev.rb (VCS#relative_to): path and @srcdir may have
+ different relative-ness.
+
+Sat Apr 3 03:19:01 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/benchmark.rb (Benchmark::Tms#add): fix NameError.
+ [ruby-dev:40906]
+
+ * test/benchmark/test_benchmark.rb: add a test for above.
+
+Sat Apr 3 01:50:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser/ruby.rb (RDoc#make_message): no empty lines.
+
+ * lib/rdoc/stats.rb (RDoc::Normal#print_file): send to stdout and
+ flush always
+
+Sat Apr 3 00:03:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/class_module.rb (RDoc#merge): get rid of stack overflow.
+
+ * lib/rdoc/parser/c.rb (RDoc#handle_method): see source files in
+ source directory.
+
+Fri Apr 2 22:13:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb: reverted r27186 to add generators.
+
+Fri Apr 2 21:17:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS: added reverse_lookup option.
+
+Fri Apr 2 15:26:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_ri_driver.rb (with_dummy_pager): don't grasp
+ the terminal.
+
+Fri Apr 2 14:43:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc::Generator): defer by autoload.
+
+ * lib/rdoc/generator/darkfish.rb: use normal library instead of
+ gem.
+
+Fri Apr 2 14:26:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc#parse_files): don't branch by
+ RUBY_VERSION. reapplied r24990.
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc#parse_files): emacs local variables
+ are delimited by a semicolon. supported Vim style. reapplied
+ r24988 with fixing a typo for shebang.
+
+Fri Apr 2 14:16:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser/ruby.rb (RDoc::Parser::Ruby): parse also rdoc
+ files. reapplied r24976.
+
+ * lib/rdoc/parser/c.rb: fixed a small error in the documentation.
+ [ruby-core:24744] reapplied r24395.
+
+ * lib/rdoc/parser.rb (RDoc::Parser.binary?): blksize may be nil
+ and is irrelevant to whether a file is binary. TAB and newlines
+ would be usually considered to be included in text data.
+ reapplied r23071 and r24297.
+
+Fri Apr 2 13:59:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths): Gem::Enable has been
+ obsolete. reapplied r24599.
+
+ * lib/rdoc/ri/paths.rb: follows $ridir. reapplied r23554.
+
+ * lib/rdoc/ri/paths.rb (RDoc::HOMEDIR): expand_path deals with
+ platform dependent environments. reapplied r21312.
+
+Fri Apr 2 12:52:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/parser.rb (binary?): regression.
+
+Fri Apr 2 11:54:49 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_env): wrong calculation of the head of setenv
+ string. [ruby-core:29216]
+ a patch from Heesob Park in [ruby-core:29218]
+
+Fri Apr 2 08:24:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (ruby_setsid): split from proc_setsid.
+
+ * process.c (proc_daemon): use EXIT_SUCCESS instead of magic number.
+
+Fri Apr 2 07:00:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cptr.c (rb_dlptr_inspect): fix format specifiers.
+
+Fri Apr 2 05:38:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (InitVM): calls per-VM initialization in
+ single VM, but does nothing in MVM.
+
+Fri Apr 2 02:56:56 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: New instance methods:
+ empty? [ruby-core:26284], each, each_with_index [ruby-core:28400],
+ conjugate, conj, imaginary, imag, real, real?, rectangular, rect
+ [ruby-core:26285]
+
+ Removed compare_by*, inspect_org, cf [ruby-core:26268]
+
+ Matrix.empty: raise on negative sizes
+
+ Matrix.determinant: raise on rectangular matrices [ruby-core:28271]
+
+Thu Apr 1 17:17:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/iso2022.trans: CP50221 supports 8bit JIS.
+
+Thu Apr 1 16:44:00 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc, test/rdoc: Imported RDoc 2.5
+
+Thu Apr 1 14:30:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/utf_16{be,le}.c (utf16{be,le}_mbc_to_code): simplified.
+
+Thu Apr 1 14:07:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (BSD__hdtoa): don't use C99 macros. (FP_NORMAL etc)
+
+Thu Apr 1 13:30:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): support %a format. [ruby-dev:40650]
+
+ * missing/vsnprintf.c (BSD_vfprintf): ditto.
+
+ * missing/vsnprintf.c (cvt): ditto.
+
+ * util.c (BSD__hdtoa): added. This is 2-clause BSDL licensed
+ by David Schultz and from FreeBSD.
+
+ * LEGAL: add about hdtoa() in util.c.
+
+Thu Apr 1 13:24:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): return 0.0 if hexadecimal and
+ badcheck is FALSE: Float("0x1p+0") works, but "0x1p+0".to_f
+ doesn't. [ruby-dev:40650]
+
+ * util.c (ruby_strtod): allow hexadecimal integers.
+
+Thu Apr 1 13:20:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/scanf.rb: support %a format. [ruby-dev:40650]
+
+Thu Apr 1 12:04:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRE_TIMET_PREFIX): define if configure doesn't
+ defines it. [ruby-core:29190]
+
+Thu Apr 1 11:36:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_initialize): fixed a rdoc miss that textmode and
+ binmode flag explanation was reversed each other. a patch from
+ Heesob Park in [ruby-core:29166].
+
+Thu Apr 1 09:54:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RUBY_{DEFAULT,NEVER}_FREE): added.
+ [ruby-dev:40889]
+
+Thu Apr 1 04:55:08 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_big_abs_find_minbit): fix handling the last word.
+
+Thu Apr 1 04:30:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (long_mul): overflow condition changed.
+ (wi_mul): ditto.
+
+Wed Mar 31 23:33:29 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (long_mul): extracted from mul and avoid integer overflow.
+ (wi_mul): extracted from wmul and avoid integer overflow.
+
+Wed Mar 31 21:30:38 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: less bignum allocations.
+
+ * strftime.c (rb_strftime_timespec): defined to avoid rational for
+ nano second resolution time.
+
+Wed Mar 31 16:05:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rake/test_{package_task,rules,task_manager}.rb: use
+ temporary directories.
+
+Wed Mar 31 13:53:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rubygems/gemutilities.rb (setup, teardown):
+ Object#to_yaml must use syck on RubyGem.
+
+Wed Mar 31 06:57:14 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (timew2timespec): fix previous change.
+
+Wed Mar 31 00:32:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (wdivmod): renamed from wdivmodv. fix neg/pos and pos/neg.
+ (split_second): return number of seconds as wideval_t.
+ (timet2wv): new function.
+ (wv2timet): new function.
+ (timet2wideval): removed.
+
+Tue Mar 30 22:24:19 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: use more polymorphic operations.
+
+Tue Mar 30 22:12:38 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add URI.decode and URI.encode to Obsoleted methods,
+ and fix typos. [ruby-dev:40852]
+
+ * NEWS: add Time#subsec.
+
+Tue Mar 30 22:07:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: reorder wide value implementation.
+
+Tue Mar 30 22:00:44 2010 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb.rb: support [Feature#988], [ruby-core:21177].
+ * lib/irb/context.rb: fix Context#verbose?.
+
+Tue Mar 30 21:56:33 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: make wide value more polymorphic.
+
+Tue Mar 30 21:18:32 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/psych/extconf.rb: install psych .so to not psych/ but direct.
+ This prepends to install *.rb files to psych/psych.
+
+ * ext/psych/lib/psych.rb: require 'psych.so'.
+
+Tue Mar 30 20:55:14 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (w2v): renamed from w2xv.
+ (v2w): renamed from xv2w.
+ (rb_time_magnify): takes wideval_t.
+ (rb_time_unmagnify): returns wideval_t.
+
+Tue Mar 30 19:46:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/psych/lib: moved external library dependent files from lib.
+ [ruby-core:29129]
+
+Tue Mar 30 18:25:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_dirname): split from rb_file_s_dirname.
+
+ * load.c (rb_f_require_relative): use absolute path instead of
+ expanded path.
+
+Tue Mar 30 13:57:08 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * process.c (proc_daemon): Process.daemon should raise an error on
+ failure regardless of whether the implementation uses daemon(3)
+ or not. [ruby-dev:40832]
+
+Tue Mar 30 13:11:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/file2lastrev.rb (VCS::GIT_SVN): removed because git-log can
+ deal with git-svn repository faster than git-svn-info.
+
+ * tool/file2lastrev.rb (VCS#get_revisions): particular commands do
+ not depend on instance.
+
+Tue Mar 30 08:55:50 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/extconf.rb: Making library detection more agnostic.
+
+Tue Mar 30 08:10:59 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/psych.rb: Fix problem with empty and white-space only strings.
+ Thanks Peter McLain!
+ * test/psych/test_psych.rb: tests for change.
+
+Tue Mar 30 05:31:39 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/psych.rb: documentation updates. Thanks Peter McLain!
+ * lib/psych/{coder,tree_builder}.rb: ditto
+
+Tue Mar 30 03:56:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/psych/{emitter,parser,psych}.c: move variable
+ declaration to the first of the block.
+
+Mon Mar 29 21:47:44 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * prelude.rb, .document: Stuff in prelude.rb should be documented
+ as well.
+
+Mon Mar 29 20:23:05 2010 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/matrix.rb(Vector#each2, Vector#collect2): add type check for
+ Integer[Bug #2495].
+
+Mon Mar 29 19:45:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: wide value condition changed.
+
+Mon Mar 29 18:10:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (Numeric): accept rationals.
+
+Mon Mar 29 15:10:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#open): re-open with same mode and
+ options as initialize.
+
+Mon Mar 29 09:16:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c: change include order; ruby.h should be at first.
+
+Mon Mar 29 06:47:25 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/*: importing Psych to trunk
+ * test/psych/*: ditto
+ * lib/psych/*: ditto
+
+Sun Mar 28 10:03:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/scanf.rb: fix max width modifier for %f.
+
+Sun Mar 28 10:35:45 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.6.0 r5717.
+ * test/minitest/*.rb: ditto.
+
+Sun Mar 28 10:12:28 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (rb_time_magnify): fix for LP64.
+
+Sun Mar 28 09:28:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/scanf.rb: fix %[egEFG] isn't accept.
+
+Sun Mar 28 09:53:02 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: rename small integer specialization related identifiers.
+
+Sun Mar 28 08:20:37 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (weq): specialize for small integer.
+ (wne): ditto.
+ (wlt): ditto.
+ (wgt): ditto.
+ (wle): ditto.
+ (wge): ditto.
+ (rb_time_magnify): ditto.
+ (rb_time_unmagnify): ditto.
+ (rb_time_unmagnify_to_float): new function to avoid rational for
+ Time#to_f and Time#-.
+
+Sun Mar 28 07:12:41 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (mul): condition refined.
+
+Sun Mar 28 02:14:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: fix previous commit.
+
+Sat Mar 27 23:17:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c: use 64bit arithmetic even on platforms with 32bit VALUE.
+
+Fri Mar 26 23:52:07 2010 wanabe <s.wanabe@gmail.com>
+
+ * NEWS: add Thread#add_trace_func and Thread#set_trace_func.
+
+Fri Mar 26 22:58:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_initialize): initialize
+ store->ex_data.sk. a patch from Christian Holtje in
+ [ruby-core:28907]. [ruby-core:23971] [ruby-core:18121]
+
+Fri Mar 26 19:55:41 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * Makefile.in (DOXYGEN): Define a missing variable DOXYGEN. Build
+ has been failing when doxygen(1) is found by configure but the
+ variable is not defined by the system and make(1) does not allow
+ an empty command. ("@$(DOXYGEN)" was the cause)
+
+Fri Mar 26 19:28:03 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_hash.rb (test_recursive_key): recursive keys are
+ permitted now. [ruby-dev:40735]
+
+Fri Mar 26 12:36:10 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/yaml/basenode.rb: deprecating YPath methods
+
+ * lib/yaml/stream.rb: deprecating YAML::Stream#edit
+
+Fri Mar 26 12:29:28 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/yaml/encoding.rb: YAML.encode, YAML.decode are deprecated.
+
+ * lib/yaml/stringio.rb: yaml/stringio.rb is deprecated.
+
+ * lib/yaml/ypath.rb: YAML::YPath is deprecated.
+
+Fri Mar 26 04:52:19 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: fix [ruby-core:28901] [Bug #2997].
+ Thanks, Michael Graff.
+
+ * ext/tk/tcltklib.c: use xfree() for memories allocated by ALLOC().
+
+ * ext/tk/tkutil/tkutil.c: ditto.
+
+ * ext/tk/lib/tkextlib/version.rb: forgot updating.
+
+Thu Mar 25 23:53:22 2010 wanabe <s.wanabe@gmail.com>
+
+ * thread.c (thread_reset_event_flags): set flags to thread. [Bug #693]
+
+Thu Mar 25 23:17:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * file.c (rb_get_path_check): prefer #to_path over #to_str. a patch
+ originally written by me, and modified by Nobuyoshi Nakada.
+ [ruby-core:24257]
+
+Thu Mar 25 18:10:08 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: Array#{uniq,uniq!} can take a block. see [ruby-dev:37998]
+
+Thu Mar 25 17:21:49 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add IO#autoclose=, IO#autoclose?, IO#codepoints,
+ IO#each_codepoint.
+
+Thu Mar 25 14:50:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_{read,write}): fix handle leaks. based on
+ a patch from Heesob Park in [ruby-core:28919]. [ruby-core:28833]
+
+Thu Mar 25 12:37:37 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: add Kernel#singleton_class.
+
+Thu Mar 25 11:34:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c, node.h, strftime.c, enc/trans/utf8_mac.trans:
+ added explicit casts for suppressing warnings.
+
+Thu Mar 25 11:34:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * test/ruby/test_dir_m17n.rb: HFS+ escapes invalid byte sequences of
+ filenames.
+
+Thu Mar 25 05:44:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_version): needs runnable CPP.
+
+Thu Mar 25 04:42:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (package): take a breath for HP-UX make
+ [ruby-core:28938].
+
+ * tool/make-snapshot (Dir.mktmpdir): for 1.8.6 backward compatibility.
+
+ * tool/make-snapshot (package): $: no longer contains ".", in trunk.
+
+Thu Mar 25 03:52:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/charset_alias.rb: update of URL. [ruby-dev:38360]
+
+Wed Mar 24 23:43:40 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (thread_create_core): let new thread inherit RUBY_EVENT_VM
+ of event_flags. [ruby-core:25191]
+
+ * thread.c (rb_threadptr_exec_event_hooks): delete RUBY_EVENT_VM if
+ all event_hooks are removed.
+
+Wed Mar 24 22:58:02 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * configure.in: revert the previous commit, which seemed to break make
+ install. The files of standard libraries are directly installed to
+ $(PREFIX)/lib/ruby instead of $(PREFIX)/lib/ruby/1.9.1
+
+Wed Mar 24 18:16:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LDSHARED, CPP): keep $(CC). [ruby-core:28912]
+
+Wed Mar 24 14:33:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): limit read size to 16KB if the file
+ seems to be console. [ruby-core:28902]
+
+Wed Mar 24 10:18:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): set length of string before calling
+ rb_enc_check because rb_enc_check scans its content.
+ This prevents warnings by valgrind.
+
+Tue Mar 23 23:58:51 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Incorporating the fixes from the recent
+ FasterCSV releases: 1.5.2 and 1.5.3. New parser
+ by Tim Elliott. [ruby-core:25038]
+
+Tue Mar 23 18:35:46 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * object.c (rb_obj_singleton_class): new method
+ Kernel#singleton_class. [ruby-core:21702]
+
+Tue Mar 23 01:13:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket: use rsock_ prefix for internal initialization functions.
+
+Mon Mar 22 20:32:22 2010 wanabe <s.wanabe@gmail.com>
+
+ * proc.c (rb_method_location): return attr's location if it is setup.
+ [Feature #2084]
+
+ * NEWS: follow above.
+
+ * vm_method.c (rb_add_method): save attr's location.
+
+ * gc.c (mark_method_entry): mark attr's location.
+
+ * method.h (rb_method_definition_t): add member to save attr's location.
+
+ * vm_eval.c (vm_call0): follow above.
+
+ * vm_insnhelper.c (vm_call_method): ditto.
+
+ * vm_method.c (rb_method_definition_eq): ditto.
+
+Mon Mar 22 19:31:06 2010 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (Date#>>): fixed. [ruby-core:28011]
+
+Mon Mar 22 18:01:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RMDIRS): use rmdir -p if possible.
+
+ * Makefile.in ({dist,real}clean-ext): fix for removing ext
+ directories.
+
+Mon Mar 22 09:06:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/.document: extracted from ext/.document.
+
+Mon Mar 22 00:50:33 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (rsock_revlookup_flag): declared.
+
+Mon Mar 22 00:01:24 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (config.h): RUBY_EXEC_PREFIX defined.
+
+Sun Mar 21 00:46:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_form_component):
+ convert strings of HTML5 ASCII incompatible encoding
+ to UTF-8.
+
+ * lib/uri/common.rb (URI.encode_www_form_component):
+ "\x83\x41" of Shift_JIS should be encoded as "%83A".
+ This follows real implementations.
+
+ * lib/uri/common.rb (URI.decode_www_form_component):
+ use given encoding for force_encoding. [ruby-dev:40721]
+
+Sun Mar 21 21:09:17 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv-replace.rb: specify super class for rdoc.
+
+ * lib/ipaddr.rb: ditto.
+
+Sun Mar 21 19:52:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_initialize): add autoclose argument to control close
+ at finalization. [ruby-core:26222]
+
+ * io.c (rb_io_autoclose_p, rb_io_set_autoclose): new methods.
+
+Sun Mar 21 19:50:04 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket: make sources rdoc friendly.
+
+Sun Mar 21 17:57:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (IO_RBUF_CAPA_FOR): use large buffer as cbuf if readconv is
+ needed for performance improvement. based on a patch by Roger Pack
+ in [ruby-core:28163]. [ruby-core:28162]
+
+Sun Mar 21 17:14:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: reuse hash object.
+
+Sun Mar 21 12:32:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (transcode_compile_tree): make
+ valid_encoding mandatory unless from_encoding is registered in
+ ValidEncoding.
+ (transcode_tbl_only): ditto.
+ (transcode_tblgen): ditto.
+ (ValidEncoding): new function.
+
+ * enc/trans/escape.trans: specify valid_encoding.
+
+ * enc/trans/emoji_sjis_docomo.trans: ditto.
+
+ * enc/trans/emoji.trans: ditto.
+
+ * enc/trans/emoji_iso2022_kddi.trans: ditto.
+
+ * enc/trans/big5.trans: ditto.
+
+ * enc/trans/emoji_sjis_softbank.trans: ditto.
+
+ * enc/trans/emoji_sjis_kddi.trans: ditto.
+
+ * enc/trans/chinese.trans: use ValidEncoding() instead of
+ ValidEncoding[].
+
+Sun Mar 21 09:43:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (IO_[CRW]BUF_CAPA_MIN): replaced magic numbers.
+
+Sun Mar 21 09:22:10 2010 Tanaka Akira <akr@fsij.org>
+
+ * object.c (rb_obj_hash): use LONG2FIX to avoid Bignum allocation.
+
+Sat Mar 20 22:51:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_sum): use UCHAR_MAX.
+
+Sat Mar 20 19:16:42 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ActionMap.unambiguous_action): use
+ Array#delete.
+ (ActionMap.merge2): defined.
+ (ActionMap::PostMemo): removed.
+ (transcode_compile_tree): use ActionMap.merge2.
+
+Sat Mar 20 13:26:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * array.c (rb_ary_uniq_bang): the array is already unique if the
+ length is zero or one.
+ (rb_ary_uniq): ditto.
+
+Sat Mar 20 12:30:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib: fixed typo. a patch by Sho Hashimoto in [ruby-dev:40716].
+
+Sat Mar 20 11:32:18 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (each_firstbyte_range): tuned for less
+ method calls.
+
+Sat Mar 20 00:59:50 2010 wanabe <s.wanabe@gmail.com>
+
+ * ext/dl/lib/dl/pack.rb (DL#pack): allow LLP64.
+
+Fri Mar 19 05:26:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_sum): don't call method for each byte.
+
+Thu Mar 18 21:24:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (miniruby): link $(NORMALMAINOBJ).
+
+Thu Mar 18 19:52:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: scan singleton mappings sequentially.
+
+Thu Mar 18 06:28:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_EXEC_PREFIX): added to config.h.
+
+ * ruby.c (ruby_init_loadpath_safe): TMP_RUBY_PREFIX should be
+ exec_prefix, not rubylibprefix. [ruby-core:28718]
+
+ * version.c (RUBY_LIB_PREFIX): fallback to RUBY_EXEC_PREFIX.
+
+Thu Mar 18 05:58:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_{to_i,mod,divmod,div2}):
+ removed unused variables.
+
+Thu Mar 18 04:40:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern3): get rid of type-punning cast.
+
+Thu Mar 18 02:29:42 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_build_body): add mark to jump table hash of case.
+
+Thu Mar 18 00:58:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * util.c (ruby_strtod): Add support for Hexadecimal
+ floating-point expression [ruby-dev:40650] #2969
+
+Thu Mar 18 00:00:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.{en,de}code_www_form_component):
+ renamed from URI.{en,de}code_www_component. [ruby-dev:40672]
+
+ * lib/uri/common.rb (URI.encode_www_form_component): %-encoded
+ element should have always two hex.
+
+ * lib/uri/common.rb (URI.encode_www_form_component):
+ better treatment for ASCII incompatible encodings and
+ encodings whose lead byte may use 7bit.
+
+ * lib/uri/common.rb (URI.decode_www_form_component): add %20.
+
+ * lib/uri/common.rb (URI.decode_www_form_component): add
+ result's encoding as 2nd argument.
+
+ * lib/uri/common.rb (URI.decode_www_form): added.
+
+Wed Mar 17 16:25:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_aset): allow recursive key. [ruby-core:24648]
+
+Wed Mar 17 06:39:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.h (rb_warning, rb_sys_warning): fixed typo in rdoc.
+ [ruby-core:28696]
+
+Wed Mar 17 02:29:46 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c, iseq.c, ruby.c, vm.c, vm_core.h, vm_eval.c: add absolute
+ path field into rb_iseq_t. The field contains a string representing
+ a path to corresponding source file. or nil when the iseq is created
+ from -e, stdin, eval, etc. This field is used for require_relative.
+ [ruby-dev:40004]
+
+ * load.c (rb_f_require_relative): add C implementation of
+ require_relative.
+
+ * prelude.rb (require_relative): get rid of Ruby implementation of
+ require_relative.
+
+Wed Mar 17 01:24:01 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (rb_intern3): prohibit Symbol with an invalid encoding.
+ [ruby-core:24621]
+
+ * test/ruby/test_m17n_comb.rb: modify a test for above.
+
+Tue Mar 16 22:51:11 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: specialize for singleton mappings.
+
+Tue Mar 16 20:13:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * enc/trans/emoji.trans: added codepoints leading 0xf4 into
+ nomap_table.
+
+Tue Mar 16 17:33:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): keep e's sign.
+ When e doesn't over flow e * BASE_FIG but overflow e * 10,
+ e will overflow.
+
+Tue Mar 16 17:18:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_str_conv_enc_opts): missing prototype.
+
+Tue Mar 16 15:20:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tmpdir: split from lib/tmpdir.rb.
+
+ * win32/win32.c (rb_w32_system_tmpdir): extracted from init_env.
+
+ * win32/win32.c (rb_w32_getcwd): removed duplicated code.
+
+Tue Mar 16 14:06:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (ENC_TO_ENCINDEX): suppress warnings.
+
+Tue Mar 16 14:03:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RSHIFT): parenthesize the argument of cast instead
+ of the result.
+
+Tue Mar 16 11:23:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): ignore dname if it has different
+ drive letter or UNC.
+
+Tue Mar 16 07:16:56 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: redundant loop removed.
+
+Tue Mar 16 07:01:43 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: refactored to use tree as memo key.
+
+Tue Mar 16 04:05:13 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: more info in generating macro names.
+
+Mon Mar 15 21:58:03 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: ActionMap#each_firstbyte inlined.
+
+Mon Mar 15 21:22:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (transcode_tblgen): add valid_encoding
+ optional argument.
+
+ * enc/trans/single_byte.trans use valid_encoding argument for
+ transcode_tblgen.
+
+ * enc/trans/chinese.trans: ditto.
+
+Mon Mar 15 18:33:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (default_rand): removed initial buffer.
+
+ * random.c (Init_RandomSeed): initialize seed of default random.
+
+ * random.c (Init_RandomSeed2): turn the seed to Bignum object.
+
+Mon Mar 15 17:28:30 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_print): RDoc update. a patch from Daniel Kelley
+ in [ruby-core:28643].
+
+Mon Mar 15 14:06:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (next_state): no initialization here.
+
+ * random.c (default_mt): always return initialized MT.
+
+Mon Mar 15 11:49:48 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * random.c (rb_reset_random_seed): set seed in this.
+ [ruby-core:28655]
+
+Mon Mar 15 10:26:02 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: import latest nkf. [master 9306cb0]
+ this also fixes [ruby-dev:40607]
+
+Mon Mar 15 09:34:17 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_component):
+ call str.to_s at first.
+
+Mon Mar 15 09:36:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * symbian/README.SYMBIAN: fixed broken patch and converted to
+ unified diff.
+
+Mon Mar 15 07:51:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (Init_File): do not define File::ALT_SEPARATOR on cygwin.
+
+Mon Mar 15 07:41:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (realpath_rec): use same cache.
+
+ * file.c (realpath_internal): regulate separators in prefix.
+ [ruby-core:28653]
+
+ * file.c (FILE_ALT_SEPARATOR): separated condition.
+
+Mon Mar 15 04:41:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_each_codepoint): read directly when readconv is
+ needed but internal encoding is not set. [ruby-core:28650]
+
+Mon Mar 15 04:18:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/file2lastrev.rb (VCS::{SVN,GIT}#get_revisions):
+ use block argument 'path' to get the path given by super.
+
+Mon Mar 15 02:43:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (Action#hash): defined.
+ (Action#eql?): ditto.
+ (Action#==): ditto.
+
+Mon Mar 15 01:52:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: refactored.
+
+Mon Mar 15 01:18:31 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (*.pkg): Ruby Core installation separated from standard extensions.
+
+ * symbian/configure.bat: ditto.
+
+ * symbian/README.SYMBIAN: ditto.
+
+ * symbian/setup (config.h): support for 2nd internal drive added.
+
+Mon Mar 15 00:11:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/file2lastrev.rb (VCS::GIT_SVN#get_revisions) :
+ use block argument 'path' to get the path given by super.
+
+ * tool/file2lastrev.rb (VCS::GIT#get_revisions):
+ use double quotes for Windows.
+ patched by Vladimir Sizikov [ruby-core:28651]
+
+Sun Mar 14 22:38:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: consider valid_encoding for max_input.
+
+Sun Mar 14 15:46:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/emoji.trans: fix nomap_table.
+
+Sun Mar 14 09:50:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (insn_data_to_s_detail), iseq.c (insn_operand_intern):
+ fixed format specifiers.
+
+Sun Mar 14 07:20:17 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (EXPAND_PATH_BUFFER): make it back to usascii, to prevent
+ infinite loop on some platform. [ruby-dev:40629]
+
+Sun Mar 14 02:40:38 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: reject ambiguous mapping.
+
+ * enc/trans/single_byte.trans: remove ambiguous mapping such as
+ \xD6 -> U+05F2 and \xD6\xC7 -> U+FB1F in Windows-1255
+
+Sat Mar 13 23:48:27 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (file_expand_path): should not just copy the encoding
+ from fname. [ruby-core:28635]
+
+ * file.c (EXPAND_PATH_BUFFER): set filesystem_encoding, not
+ usascii for path buffer.
+
+Sat Mar 13 17:48:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/file2lastrev.rb: refactored. fixed changed revision of git.
+
+Sat Mar 13 15:44:20 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_print): should not print field separator at the end
+ of arguments. [ruby-talk:358633]
+
+Sat Mar 13 14:49:55 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_join): remove Enumerable#join. [ruby-core:24786]
+
+ * array.c (ary_join_1): use #to_ary to detect recursive array.
+
+Sat Mar 13 12:26:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h (MakeOpenFile): finalize fptr to get rid of
+ memory leak.
+
+Sat Mar 13 11:14:26 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * load.c (rb_get_expanded_load_path): expand paths if any item in $:
+ is not a string.
+
+Sat Mar 13 10:16:32 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * load.c (rb_get_expanded_load_path): does not expand paths if all
+ the items in $: are absolute paths. [ruby-core:28113]
+
+Sat Mar 13 10:03:52 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: fix [Bug #2840] Tk doesn't built in mingw.
+
+Sat Mar 13 03:24:15 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: show consumed time at last.
+
+Sat Mar 13 00:44:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): check encoding of suffix.
+
+Sat Mar 13 00:11:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): mark initial load paths.
+
+ * gem_prelude.rb (push_all_highest_version_gems_on_load_path):
+ search insertion position by initial load path mark.
+
+ * lib/rubygems.rb (Gem.load_path_insert_index): ditto.
+
+Fri Mar 12 21:34:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * NEWS: emoji encodings.
+
+Fri Mar 12 17:14:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_form): new method to
+ generate URL-encoded form data. [ruby-dev:39246]
+
+ * lib/uri/common.rb (URI.encode_www_component,
+ URI.decode_www_component): new method for encode/decode
+ a name/value of HTML form.
+
+Fri Mar 12 17:36:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb
+ (WEBrick::HTTPServlet::CGIHandler#do_GET):
+ set binary mode for tempfile.
+ http://pc12.2ch.net/test/read.cgi/tech/1265467681/286
+
+Fri Mar 12 13:52:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * tool/compile_prelude.rb: TMP_RUBY_PREFIX should replace
+ rubylibprefix but not prefix.
+
+Fri Mar 12 09:43:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * complex.c (f_signbit): remove condition for signbit because
+ all platforms have signbit from r26871.
+
+Fri Mar 12 07:25:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_env): get rid of alloca() for outer string.
+
+Fri Mar 12 07:17:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/racc/cparse/cparse.c: suppressed warnings for shortening on
+ platforms where pointer is bigger than int.
+
+Fri Mar 12 07:15:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe, ruby_init_gems): set and remove
+ TMP_RUBY_PREFIX.
+
+ * variable.c (rb_const_remove): new function.
+
+ * tool/compile_prelude.rb: split each preludes.
+
+Fri Mar 12 07:09:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (config.status): setup MINIRUBY environment for
+ cross-compiling.
+
+Fri Mar 12 06:48:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/extconf.rb: log() is built-in in some compilers and needs
+ proper declaration.
+
+Fri Mar 12 06:37:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/timeout.rb: split from lib/timeout.rb.
+
+Thu Mar 11 22:35:27 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_round): new method Time#round. [ruby-dev:40595]
+
+Thu Mar 11 17:31:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_transcode0): confirm the code range.
+
+Thu Mar 11 12:14:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/signbit.c: added.
+
+Thu Mar 11 11:16:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check if target_archs has changed.
+
+Thu Mar 11 01:33:30 2010 wanabe <s.wanabe@gmail.com>
+
+ * win32/win32.c (signbit): allow x64.
+
+Thu Mar 11 01:04:48 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * iseq.c (rb_iseq_clone): sets local_iseq and klass properly.
+
+Wed Mar 10 21:25:41 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enum.c (min_ii, max_ii, minmax_ii): remove wrong optimization that
+ reuses array for yield parameter, which caused unexpected behavior.
+ [ruby-core:25989]
+
+Wed Mar 10 12:10:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * enc/x_emoji.h: renamed from enc/x-emoji.c.
+
+Wed Mar 10 04:17:08 2010 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (defined_expr), insns.def (defined): fix to pass a Symbol
+ object such as :$foo for the "defined?($foo)" expression
+ on defined instruction. This patch fixes ISeq#to_a/load.
+
+Tue Mar 9 20:50:09 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/dl/test_method.rb: delete a residual test for dl on libffi.
+
+Tue Mar 9 18:00:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * enc/trans/EMOJI/*.src, enc/trans/emoji*,
+ enc/x-emoji.c, test/ruby/enc/test_emoji.rb,
+ tool/enc-emoji-citrus-gen.rb, tool/enc-emoji4unicode.rb,
+ tool/jisx0208.rb, tool/test/test_jisx0208.rb:
+ new encodings to support emoji charsets, which are used by
+ Japanese mobile phones [ruby-dev:40528].
+ Thanks Yoji Shidara for a lot of contribution.
+
+ * tool/transcode-tblgen.rb: modified for enc-emoji4unicode.rb.
+
+Tue Mar 9 14:57:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb (ActionMap#generate_node):
+ remove useless dup.
+
+ * tool/transcode-tblgen.rb (transcode_tbl_only): remove duplicated
+ method call for encode_utf8.
+
+Tue Mar 9 14:55:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_to_s): remove unused variable.
+
+Tue Mar 9 12:17:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * tool/transcode-tblgen.rb (StrSet#parse, ActionMap#generate_node):
+ optimization (reusing object and improving memoize).
+ [ruby-dev:40582]
+
+Sun Mar 7 02:27:03 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * dln.c [DLN_NEEDS_ALT_SEPARATOR] (translit_separator): small typo
+ fixed.
+
+ * symbian/setup (*.pkg): Shared library installation path fixed to
+ match changes in version.c.
+
+ * symbian/setup (ruby.mmp): SOURCE dln_find.c added.
+
+Sun Mar 7 23:14:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_pack): use DIGSPERLONG and BITSPERDIG.
+ (rb_big_unpack): use DIGSPERLONG.
+
+Sun Mar 7 19:21:10 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * io.c: Fix documentation for each/each_line/lines, bytes/each_byte,
+ codepoints/each_code_point [ruby-core:23948]
+
+ * string.c: ditto
+
+ * ext/stringio/stringio.c: ditto
+
+Sun Mar 7 13:49:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c: add optional basedir argument for realpath/realdirpath.
+ (realpath_internal): handle basedir.
+ (rb_file_s_realpath): extract basedir from argument list.
+ (rb_file_s_realdirpath): extract basedir from argument list.
+
+ * lib/pathname.rb (realpath): pass basedir.
+ (realdirpath): ditto.
+
+Sun Mar 7 02:05:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_set_filesystem_encoding):
+ filesystem encoding on Mac OS X is now
+ default external encoding. so Mac OS X is now
+ treated as one of Unix. [ruby-dev:40439]
+
+ * file.c (file_path_convert): ditto.
+
+Sat Mar 6 22:07:09 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: fix the prototype of rb_big2ulong_pack.
+
+Sat Mar 6 13:45:37 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (rb_io_s_write, rb_io_s_binwrite): delete File#write and
+ #binwrite. It may take a long time to make them stable, so 1.9.2
+ should not include them. We need refactoring to implement them
+ again.
+
+ * test/ruby/test_io.rb: delete tests for them.
+
+Sat Mar 6 10:03:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (rb_io_s_binwrite): use mode "r+b" instead of "ab" to handle
+ offset correctly. [ruby-core:28517]
+
+ * test/ruby/test_io.rb: use assert_equal instead of assert.
+
+Sat Mar 6 01:08:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): VC6 has __int64.
+
+Fri Mar 5 19:36:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (econv_opts): set :undef => :replace when
+ :replace is given and :invalid is not given. [ruby-dev:40554]
+
+Fri Mar 5 17:51:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): suppressed a warning.
+
+ * win32/win32.c (rb_w32_map_errno, winnt_stat, rb_chsize): ditto.
+
+ * win32/win32.c (rb_w32_aspawn): get rid of overflow.
+
+Fri Mar 5 11:59:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (signbit): defined on mingw.
+
+Thu Mar 4 22:49:42 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (setup_exception): avoid line number 0 when setting
+ $DEBUG=true. [ruby-dev:39116]
+
+Thu Mar 4 22:45:02 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (io_s_write, io_s_binwrite): add File#write and #binwrite.
+ [ruby-core:21701]
+
+ * test/ruby/test_io.rb: add tests for above.
+
+Mon Mar 4 13:14:34 2010 wanabe <s.wanabe@gmail.com>
+
+ * gc.c (gc_profile_total_time): add GC::Profiler.total_time.
+ [ruby-core:27169]
+
+ * NEWS: ditto.
+
+Thu Mar 4 10:15:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * complex.c (m_log, m_exp): remove unused functions.
+
+Thu Mar 4 02:34:59 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_env.rb (TestEnv#test_select_bang): add tests.
+
+Thu Mar 4 02:29:52 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_hash.rb (TestHash#test_keep_if): fix typo.
+
+Thu Mar 4 00:10:54 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (HEX2): extracted from regexps.
+
+Wed Mar 3 23:16:32 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * complex.c (nucomp_real_check): raise TypeError instead of
+ ArgumentError when argument is not a real as expected
+ [ruby-core:28395]
+
+ * rational.c (nurat_int_check): ditto (for integers)
+
+Wed Mar 3 23:07:08 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (Vector#each): Return self and optimization
+ [ruby-core:28405]
+
+Wed Mar 3 18:35:55 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_select_bang): add #select! and keep_if to Hash.
+
+ * hash.c (env_select_bang): ..and to ENV.
+
+Wed Mar 3 15:54:20 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/matrix.rb (Vector#each2, collect2): small refactoring.
+
+Wed Mar 3 16:14:24 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/matrix.rb (Vector#each): make Vector enumerable.
+ [ruby-core:28405]
+
+Wed Mar 3 14:28:23 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_select_bang): select! removes all elements for
+ which block returns false. [ruby-core:27286]
+
+ * array.c (rb_ary_keep_if): #keep_if, new method.
+
+Wed Mar 3 06:19:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (signbit): defined.
+
+ * win32/Makefile.sub, symbian/setup (config.h): pack.c requires
+ SIZEOF_INT*_T now.
+
+Tue Mar 2 21:16:48 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (rb_io_lines, rb_io_bytes, rb_io_chars, rb_io_codepoints):
+ change to alias to each_*, in similar way to ARGF and String.
+ [ruby-core:23948]
+
+Tue Mar 2 15:54:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (noname_disable_map): add NT_ANCHOR case.
+ Without this change, captured groups in anchors (look-ahead,
+ look-behind, and so on) are not removed and
+ unintended invalid backref error occur. [ruby-core:28235]
+
+ * regcomp.c (renumber_by_map): ditto.
+
+Tue Mar 2 14:42:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * test/dl/test_closure.rb: forget to revert at r26764.
+
+Tue Mar 2 14:29:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext_safe, rb_find_file_safe): skip argument
+ checks in file_expand_path().
+
+Tue Mar 2 13:54:44 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * test/ruby/test_math.rb: Fix lgamma test
+
+Mon Mar 1 23:26:56 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (pty_open): refine the path for master IO.
+
+Mon Mar 1 20:07:06 2010 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/zlib/zlib.c (zstream_expand_buffer_into): remove compare
+ different type values warning.
+
+Mon Mar 1 17:42:45 2010 wanabe <s.wanabe@gmail.com>
+
+ * configure.in (mingw): do not detect snprintf/vsnprintf.
+
+Mon Mar 1 16:54:21 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/oniguruma.h: updated to follow Oniguruma 5.9.2.
+
+ * re.c (make_regexp): use onig_new() instead of onig_alloc_init().
+
+ * re.c (rb_reg_to_s): ditto.
+Sun Feb 28 21:32:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (get_device_once): raise on error when fail is
+ non-zero.
+
+Sun Feb 28 18:58:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * math.c (rb_eMathDomainError): new exception class
+ for representing mathematical domain error instead
+ of Errno::EDOM.
+
+ * math.c (domain_check, infinity_check): removed,
+ no longer needed.
+
+ * math.c (math_atan2, math_acos, math_asin, math_acosh,
+ math_atanh, math_log, math_log2, math_log10, math_sqrt,
+ math_gamma, math_lgamma): mathematical domain errors
+ are checked and raised before calling libm's functions.
+
+ * test/ruby/test_math.rb: updated for changes of math.c.
+
+Sun Feb 28 15:07:28 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_pack): use union to avoid pointer cast.
+ (pack_unpack): ditto.
+
+Sun Feb 28 11:49:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * openssl/ossl.c (OSSL_IMPL_SK2ARY): for OpenSSL 1.0.
+ patched by Jeroen van Meeuwen at [ruby-core:25210]
+ fixed by Nobuyoshi Nakada [ruby-core:25238],
+ Hongli Lai [ruby-core:27417],
+ and Motohiro KOSAKI [ruby-core:28063]
+
+ * ext/openssl/ossl_pkcs7.c (pkcs7_get_certs, pkcs7_get_crls):
+ split pkcs7_get_certs_or_crls.
+
+Sun Feb 28 11:42:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/openssl/{test_x509cert.rb,openssl,test_x509crl.rb,
+ test_x509req.rb}:
+ fix false positive tests because of OpenSSL spec change.
+ patched by originally Hongli Lai [ruby-core:27417],
+ and fixed by Motohiro KOSAKI [ruby-core:28063]
+
+Sun Feb 28 11:21:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/openssl/{test_x509cert.rb,openssl,test_x509req.rb}:
+ remove false positive tests because of OpenSSL spec change.
+ patched by Motohiro KOSAKI [ruby-core:28063]
+ see also [ruby-dev:40077]
+
+Sun Feb 28 11:25:16 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_pack): generalized integer packer implemented.
+ (pack_unpack): generalized integer unpacker implemented.
+
+Sun Feb 28 06:58:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (swap32): use __builtin_bswap32 on gcc 4.3.0 or later.
+ (swap64): ditto.
+
+Sun Feb 28 00:38:18 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: use integer types with explicit size.
+
+Sat Feb 27 15:54:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: check assumption on QUAD_SIZE and SIZEOF_LONG.
+
+ * bignum.c: check assumption on SIZEOF_LONG and SIZEOF_BDIGITS.
+
+Sat Feb 27 03:48:18 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: fix q and Q for big endian environments which have no
+ 8 bytes integer type.
+ (pack_pack): use rb_big_pack.
+ (pack_unpack): use rb_big_unpack.
+
+ * include/ruby/intern.h (rb_big_pack): declared.
+ (rb_big_unpack): ditto.
+
+ * bignum.c (rb_big_pack): new function.
+ (rb_big_unpack): ditto.
+
+Fri Feb 26 21:36:51 2010 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: fix rb_quad_pack and rb_quad_unpack for environments
+ which don't have 8bytes integer type. This still depends on little
+ endian.
+ (rb_quad_pack): use quad_buf_complement. don't raise for large
+ values.
+ (rb_quad_unpack): use quad_buf_complement.
+ (quad_buf_complement): new function extracted from rb_quad_pack.
+ add one after bitwise negation.
+
+Fri Feb 26 21:29:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (RSHIFT): add parenthesis to suppress warning.
+
+Fri Feb 26 20:51:47 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/socket/raddrinfo.c, ext/socket/udpsocket.c: avoid illegal cast
+ from void-returning function to VALUE-returning one. It causes SEGV
+ on RubySpec with mingw32.
+
+Fri Feb 26 20:07:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (QUAD_SIZE): it should be always 8.
+
+ * bignum.c (rb_quad_pack): use LONG_LONG version only if
+ SIZEOF_LONG_LONG == QUAD_SIZE.
+
+Fri Feb 26 16:49:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (swap64): fix for VC6.
+
+Fri Feb 26 14:17:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack, pack_unpack): suppressed warnings.
+
+Fri Feb 26 07:44:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl: revert dl with libffi because it can't run on mswin now.
+
+Thu Feb 25 22:59:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c: consider DYNAMIC_ENDIAN. refactored.
+
+Thu Feb 25 11:17:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * rational.c (nurat_expt): use Float#** when Rational ** Float.
+ This fixes Rational(3,1)**3.0=>26.99999999999999 on FreeBSD.
+
+ * complex.c (rb_fexpt): removed.
+ Note that this function is not static but is private.
+
+Thu Feb 25 00:43:57 2010 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: Change the operand type of setinlinecache
+ (OFFSET to IC). This IC must be same as corresponding
+ getinlinecache instruction's IC operand.
+ This change is for a little performance improvement
+ (getting IC directly) and is for the AOT compilation development.
+
+ * compile.c, iseq.c, insns.def: Change the approach to handling inline
+ cache (IC) type operand to enable the above change.
+ This change also affects ISeq#to_a method. The inline cache operand
+ will be dumped by fixnum, the index of inline cache, in other words,
+ inline cache identity.
+
+ * template/insns_info.inc.tmpl, tool/instruction.rb: No need to count
+ inline cache size (insn_iclen()).
+
+Thu Feb 25 00:57:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (swap64): don't redefine.
+
+Thu Feb 25 00:29:55 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_unpack): don't use OFF32 for gcc 4.5.
+
+Wed Feb 24 22:39:15 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: fix [ruby-core:28320] reported by Paul Clegg.
+ (Resolv::DNS::Requester#request): raise ResolvTimeout
+ consistently for timeout.
+
+Wed Feb 24 14:38:16 2010 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/indexer: Removed obsolete files.
+
+Wed Feb 24 11:52:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (translit_separator): moved back from load.c again.
+
+ * dln_find.c: split from dln.c.
+
+Wed Feb 24 09:31:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/extconf.rb: use OpenSSL only when all transform
+ functions are available.
+
+Wed Feb 24 00:39:17 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (str_new_empty): String#split, partition, rpartition
+ taints the resulting strings if self is tainted.
+
+Mon Feb 22 21:35:33 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/sha2/sha2init.c: test OpenSSL more strictly.
+
+Mon Feb 22 11:52:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems: update to 1.3.6.
+
+Mon Feb 22 11:21:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/sha2: Use OpenSSL's SHA1 engine if available.
+
+Sun Feb 21 21:20:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile, install_files): honor srcprefix
+ argument if given. [ruby-dev:40449]
+
+Sun Feb 21 13:29:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/rubygems_version.rb: outdated. [ruby-core:28275]
+
+Sun Feb 21 06:24:12 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (config.h): HAVE_STRUCT_TIMEZONE, VOID_UNSETENV, and RUBY_LIB_VERSION_STYLE defined.
+ * symbian/setup (ruby.mmp): SOURCE node.c added.
+
+Mon Feb 22 09:15:45 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark_children): lost comment added.
+
+Sat Feb 20 14:42:19 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): should prepare placeholder before
+ processing instance variables. [ruby-dev:40414]
+
+ * marshal.c (id2encidx): no longer need arg.
+
+Sat Feb 20 14:36:16 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): use called_id when method definition
+ structure is already freed. [ruby-dev:40234] [ruby-core:27959]
+
+Fri Feb 19 00:04:19 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/drb/drb.rb (DRbServer#stop_service): join killed thread to
+ ensure service stops. [ruby-dev:40441]
+
+Thu Feb 18 22:31:15 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * math.c (math_atanh): raise ERANGE without calling atanh if absolute
+ value is 1 to achieve platform-independent math. [ruby-core:28219]
+
+ * math.c (math_lgamma): return [Infinity, 1] without calling lgamma_r
+ if argument is infinity or -infinity. [ruby-core:28219]
+
+Thu Feb 18 22:28:00 2010 Kenta Murata <mrkn@mrkn.jp>
+
+ * configure.in: new --with-ext and --with-out-ext options for extmk.
+ * tool/mkconfig.rb: normalizing --with-out-ext to --without-ext.
+
+Thu Feb 18 21:50:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (pack_unpack): call PACK_ITEM_ADJUST for 'Q'.
+
+Thu Feb 18 02:14:26 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (io_fread, io_getpartial, io_read, io_sysread): by using lock,
+ prohibit modification of buffer string during read (which had caused
+ EFAULT or SEGV). [ruby-dev:40437]
+
+ * test/ruby/test_io.rb: rewrite tests for the old behavior.
+
+Wed Feb 17 21:34:01 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regcomp.c (setup_tree, onig_compile): optimize .* at last by
+ converting into (?>.*), which does not backtrack. [ruby-core:27791]
+
+ * test/ruby/test_regexp.rb: add a test for above.
+
+Wed Feb 17 21:26:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_normal_exit): add :timeout option.
+
+Wed Feb 17 17:05:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_cfunc): removed unused variable.
+
+ * vm.c (vm_frametype_name): define only when VMDEBUG.
+
+Wed Feb 17 15:34:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl_conversions.c (rb_dl_type_to_ffi_type): support signed
+ long long.
+
+ * ext/dl/cfunc.c (rb_dlcfunc_inspect): get rid of overflow.
+
+ * ext/dl/closure.c (dlc_callback, rb_dlclosure_init): ditto.
+
+ * ext/dl/cptr.c (rb_dlptr_s_malloc): ditto.
+
+ * ext/dl/method.c (rb_dlfunction_initialize): ditto.
+
+Wed Feb 17 01:16:12 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * hash.c (hash_update): always raise an exception when adding a new
+ key during iteration. Traditionally, an exception was raised only
+ when rehash occurs, but it may lead to difficult bug to reproduce.
+ [ruby-core:23614]
+
+Tue Feb 16 22:09:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (chain_finalized_object): fix precedence.
+
+Tue Feb 16 21:32:01 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (rb_objspace_call_finalizer): always run finalizer at exit,
+ before object is free'd. [ruby-dev:40382]
+
+Tue Feb 16 20:56:39 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c (rb_group_member): renamed from group_member.
+ don't use group_member() in glibc because it's not valgrind clean.
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=570047
+
+Tue Feb 16 19:19:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): convert signed value to
+ unsigned.
+
+Tue Feb 16 19:02:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/dl/test_{base,handle}.rb: use more verbose assertions.
+
+ * test/dl/test_import.rb (DL::LIBC::BoundQsortCallback): renamed
+ to get rid of overwriting warning.
+
+Tue Feb 16 11:03:19 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/dl/method.c: Adding DL::Method as a superclass for DL::Function
+
+Mon Feb 15 23:37:30 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c: check lseek error by errno. NetBSD 4.0.1 may return -1 as
+ a file position of tty.
+
+Mon Feb 15 23:08:56 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/pstore.rb (PStore#initialize): initialize @thread_safe.
+ [ruby-core:27853]
+
+Mon Feb 15 22:45:26 2010 Tanaka Akira <akr@fsij.org>
+
+ * st.c (st_foreach): don't access ptr->hash after func call.
+ It may access freed area.
+
+Mon Feb 15 22:25:16 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/zlib/zlib.c (zlib_mem_alloc): suppress valgrind warnings.
+ http://www.zlib.net/zlib_faq.html#faq36
+
+Mon Feb 15 22:18:49 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_add): propagate fixed time offset.
+
+Mon Feb 15 17:42:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * signal.c (USE_SIGALTSTACK): NetBSD can't use sigaltstack(2)
+ with pthread.
+ http://netbsd.gw.com/cgi-bin/man-cgi?sigaltstack++NetBSD-current
+
+Mon Feb 15 13:11:47 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_push_m): use rb_ary_modify instead of
+ rb_ary_modify_check. This fixes regression due to r26632.
+
+Sun Feb 14 12:54:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): removed duplicated entry for regexp.
+ [ruby-dev:40416]
+
+Sun Feb 14 04:45:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): register regexp object before encoding
+ name. [ruby-dev:40414]
+
+ * re.c (rb_reg_alloc, rb_reg_init_str): split from rb_reg_new_str.
+
+Sat Feb 13 17:07:20 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete): RDoc update. a patch from Hugh Sasse.
+ [ruby-core:28128]
+
+ * array.c (rb_ary_compact_bang): ditto.
+
+Sat Feb 13 15:01:24 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (id2encidx): duplicated entry for encoding name.
+ [ruby-dev:40388]
+
+Sat Feb 13 12:17:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/tempfile.rb (Tempfile::Remover): new class to replace
+ Tempfile.callback. port r24902 from Ruby 1.8.
+
+Fri Feb 12 17:55:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (thread_free): fixed typo.
+
+Fri Feb 12 02:27:39 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#initialize, Set#replace, Set#merge)
+ (Set#subtract, Set#&): Fix duck type tests. [ruby-core:28078]
+
+ * lib/set.rb (Set#initialize, Set#replace, Set#merge)
+ (Set#subtract, Set#&): Try #each if #each_entry fails.
+
+Thu Feb 11 20:43:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_oflags_modestr): return "r" for O_RDONLY|O_APPEND.
+ [ruby-dev:40379]
+
+Thu Feb 11 19:19:21 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * missing/alloca.c: s/RUBY_LIB/RUBY_LIB_PREFIX/ [ruby-dev:40395]
+
+Thu Feb 11 17:52:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_exec): reset thread state before restarting vm loop
+ from catch scope. [ruby-core:28129], [ruby-core:28143]
+
+Thu Feb 11 14:43:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): read sequentially since marshal source
+ may not be possible to rewind. [ruby-dev:40386]
+
+ * marshal.c (r_object0): replace non-1.8 escapes directly.
+
+Thu Feb 11 09:49:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: fix [ruby-core:28144] reported by Hans de Graaff.
+ (Resolv::DNS#make_requester): pass nameserver_port to
+ UnconnectedUDP.new.
+ (Resolv::DNS.bind_random_port): change the is_ipv6 argument to
+ bind_host.
+ (Resolv::DNS::Requester#initialize): change instance variable to
+ store multiple sockets.
+ (Resolv::DNS::Requester#request): pass readable sockets to
+ recv_reply.
+ (Resolv::DNS::Requester#close): close all sockets.
+ (Resolv::DNS::Requester::UnconnectedUDP#initialize): allocate
+ a socket for each address family of name servers.
+ (Resolv::DNS::Requester::UnconnectedUDP#recv_reply): read from the
+ passwd readable socket.
+ (Resolv::DNS::Requester::UnconnectedUDP#sender): use appropriate
+ socket for the target nameserver.
+ (Resolv::DNS::Requester::ConnectedUDP): follow the instance variable
+ change.
+ (Resolv::DNS::Requester::TCP#sender): ditto.
+ (Resolv::DNS::Config#nameserver_port): new method.
+
+Thu Feb 11 01:45:04 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (vm_exec): temporarily revert r26628, which causes SEGV when
+ executing rubyspec.
+
+Wed Feb 10 16:31:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_push_m, rb_ary_unshift_m, rb_ary_aset),
+ (rb_ary_insert, rb_ary_replace, rb_ary_concat),
+ (rb_ary_uniq_bang, rb_ary_flatten_bang): check if frozen after
+ wrong number of arguments but before TypeError.
+ [ruby-core:28140]
+
+ * hash.c (rb_hash_replace): ditto.
+
+ * string.c (rb_str_replace): ditto.
+
+Wed Feb 10 04:06:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_exec): reset thread state before starting vm loop.
+ [ruby-core:28129]
+
+Tue Feb 9 23:48:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divide): fix precision too.
+
+Tue Feb 9 23:26:07 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): fix precision.
+ [ruby-core:17472][ruby-dev:35372][ruby-dev:40105][ruby-dev:40358]
+
+Tue Feb 9 22:23:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (READ_CHECK): do not select fd before reading, that had made
+ TCPServer#gets stuck. [ruby-dev:40317]
+
+Tue Feb 9 21:27:38 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/text.rb (REXML::Text#initialize): REXML::Text.new checks
+ raw text for illegal characters without entity check, for the sake
+ of 1.8 compatibility. This had caused rubyspec error.
+
+Mon Feb 8 23:49:24 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast): wrong calculation of new position
+ from rb_str_coderange_scan_restartable(). [ruby-core:28103]
+
+ * io.c (read_all): ditto.
+
+ * sprintf.c (rb_str_format): ditto.
+
+Mon Feb 8 21:03:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (socket_s_ip_address_list): obtain the scope_id
+ of IPv6 link local address on OpenSolaris.
+
+Mon Feb 8 16:27:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dmyversion.c: empty load path in miniruby.
+
+ * common.mk (COMPILE_PRELUDE): rbconfig is loaded on demand.
+
+ * tool/eval.rb, win32/{mkexports,resource}.rb: miniruby no longer
+ contains "." in $:.
+
+Mon Feb 8 15:15:07 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_clone): call initialize_clone hook method to
+ call initialize_copy.
+
+ * object.c (rb_obj_dup): call initialize_dup hook.
+
+ * lib/delegate.rb (Delegator#initialize_clone): use new hook to
+ implement deep copy. [ruby-dev:40242]
+
+ * lib/delegate.rb (Delegator#initialize_dup): ditto.
+
+ * test/test_delegate.rb (TestDelegateClass#test_copy_frozen): add
+ a test to ensure #clone copies frozen status.
+
+Mon Feb 8 10:28:58 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: check pthread_attr_getstack to prevent obsolete
+ warning for pthread_attr_getstackaddr.
+
+Sun Feb 7 23:12:34 2010 Tanaka Akira <akr@fsij.org>
+
+ * sample/test.rb: sort files for syntax validation.
+
+Sun Feb 7 23:08:53 2010 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb: sort test files.
+
+Sun Feb 7 12:53:12 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/rake.rb (Rake::FileList::ARRAY_METHODS): fix test failure by <=>
+ definition at Kernel.
+
+Sun Feb 7 03:01:46 2010 Tanaka Akira <akr@fsij.org>
+
+ * math.c (math_lgamma): initialize sign because
+ lgamma(NaN) doesn't set the sign in OpenSolaris.
+
+Sun Feb 7 00:23:21 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * class.c (rb_class_init_copy): raise a TypeError if the argument is
+ BasicObject. [ruby-core:27060]
+
+Sat Feb 6 23:37:11 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (initialize): set @sock to a NullSocket instance to
+ raise FTPConnectionError when not connected. [ruby-dev:40258]
+
+Sat Feb 6 23:25:57 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/view2.rb: replaced with Hugh Sasse's version.
+ [ruby-core:27894]
+
+Sat Feb 6 22:57:00 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (receive_responses): does not hang when an
+ unexpected BYE response received. fixed [ruby-core:27944].
+ Thanks, Bob Potter.
+
+Sat Feb 6 21:31:23 2010 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb (wait): supported timeout.
+
+ * test/net/imap/test_imap.rb (test_exception_during_idle): use timeout.
+
+Sat Feb 6 19:35:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * tool/compile_prelude.rb: fix require path.
+
+Sat Feb 6 12:02:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#method_missing),
+ (Delegator.delegating_block): don't hide backtrace from
+ __getobj__ and reduced exception messages when $DEBUG.
+
+Sat Feb 6 11:35:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/ipsocket.c (ip_addr, ip_peeraddr),
+ ext/socket/socket.c (sock_s_getaddrinfo): added optional
+ reverse_lookup flag. [ruby-core:28007]
+
+Sat Feb 6 01:55:02 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/stringio/stringio.c (strio_ungetc): pads with \000 when the
+ current position is after the end. [ruby-dev:40271]
+
+Sat Feb 6 01:14:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/purelib.rb, common.mk: to simulate ruby command more precisely,
+ remove "." from $: of virtual environment for build and test.
+
+Sat Feb 6 00:02:31 2010 Tanaka Akira <akr@fsij.org>
+
+ * random.c (fill_random_seed): don't use O_NOFOLLOW because
+ /dev/urandom is a symlink in OpenSolaris.
+
+ * lib/securerandom.rb (SecureRandom.random_bytes): ditto.
+
+Fri Feb 5 16:38:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator): include copy of Kernel.
+ [ruby-dev:40314]
+
+ * lib/delegate.rb (Delegator#{dup,clone}): class of copy should be
+ Delegator. [ruby-dev:40313]
+
+Fri Feb 5 09:26:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * bignum.c (big_op): remove unused variables.
+
+Fri Feb 5 02:06:57 2010 Aaron Patterson <tenderlove@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: Struct members are emitted without a leading
+ colon. Thanks Yusuke Endoh! [ruby-core:28052]
+
+ * test/yaml/test_struct.rb: fixed tests to go with Struct changes
+
+ * test/yaml/test_yaml.rb: fixed tests to go with Struct changes
+
+Fri Feb 5 00:34:24 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (big_gt, big_ge, big_lt, big_ge): added Bignum#>, >=, < and
+ <= to allow to compare with BigDecimal. [ruby-dev:40167]
+
+Thu Feb 4 15:47:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (native_thread_init_stack): use get_stack.
+ patched by KOSAKI Motohiro [ruby-dev:40309]
+
+ * thread_pthread.c (ruby_init_stack): use get_stack
+ on platforms which have pthread_attr_get_np.
+ (FreeBSD, DragonFlyBSD and NetBSD)
+ This is because FreeBSD and DragonFly BSD must use
+ pthread_attr_get_np to get stack size of main thread,
+ but Mac OS X and Linux with LinuxThreads must use getrlimit.
+ <http://www.nminoru.jp/~nminoru/programming/stackoverflow_handling.html>
+ <http://d.hatena.ne.jp/nurse/20100204>
+
+Thu Feb 4 09:55:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: FreeBSD, DragonFly BSD and OpenBSD needs
+ pthread_np.h to use pthread_*_np functions.
+ OpenBSD's pthread_*_np also depend sys/signal.h,
+ but it is included at signal.h via vm_core.h via thread.c.
+
+Thu Feb 4 08:15:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator): now inherits BasicObject.
+ [ruby-dev:39154], [Bug #2679], [ruby-dev:40242]
+
+Thu Feb 4 03:00:59 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): get red of
+ floating point exception.
+
+Thu Feb 4 01:24:01 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): fix infinity
+ handling. 1 / Infinity was evaluated to NaN.
+
+Thu Feb 4 00:37:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_mdump, time_mload): dump/load utc_offset.
+ [ruby-dev:40063]
+
+Wed Feb 3 22:22:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check for non-portable stack attribute functions.
+
+Wed Feb 3 20:10:52 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/iconv/charset_alias.rb: pass block argument to outer local
+ variable.
+
+Wed Feb 3 20:08:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c (realpath_rec): rb_path_last_separator may return NULL.
+
+Wed Feb 3 13:15:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c: DragonFlyBSD is also the same as FreeBSD
+ on getting the stack size of the main thread.
+
+Wed Feb 3 12:30:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): use pthread_get_attr_np
+ to get the stack size of the main thread on FreeBSD.
+
+ * thread_pthread.c: include pthread_np.h on FreeBSD.
+
+Wed Feb 3 11:38:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/{closure,function}.c: removed C99 features and warnings.
+
+Wed Feb 3 10:12:09 2010 Aaron Patterson <tenderlove@ruby-lang.org>
+
+ * ext/dl/function.c: DL::Function now uses libffi
+
+ * ext/dl/cfunc.c (rb_dl_set_last_error): set to non static so errors
+ can be exposed.
+
+ * ext/dl/closure.c: DL::Closure will now be used in place of
+ ext/dl/callback/*.
+
+ * ext/dl/dl.c: legacy callbacks removed in favor of libffi
+
+ * ext/dl/dl_conversions.(c,h): used for converting ruby types to FFI
+ types.
+
+ * ext/dl/callback/*: replaced by libffi callbacks.
+
+ * ext/dl/lib/dl/callback.rb: Converting internal callbacks to use
+ DL::Closure
+
+ * ext/dl/lib/dl/closure.rb: Ruby parts of the new DL::Closure object
+
+ * ext/dl/lib/dl/import.rb: More conversion to use DL::Closure object
+
+ * ext/dl/lib/dl/value.rb (ruby2ffi): adding private method for
+ DL::CPtr to ffi value conversion.
+
+Tue Feb 2 18:15:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c: turn on do_not_reverse_lookup by default,
+ which has been reverted in r9880 probably unintentionally,
+ according to matz. [ruby-core:24530]
+
+Tue Feb 2 14:46:06 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c: move implementation of each_slice, each_cons,
+ each_with_object to enum.c.
+
+ * enum.c (each_slice_i): convert multiple values from yield into
+ an array.
+
+ * enum.c (each_cons_i): ditto.
+
+ * enum.c (each_with_object_i): ditto.
+
+Tue Feb 2 14:30:27 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_each_entry): new method #each_entry to pack values
+ from yield into an array.
+
+ * lib/set.rb (Set#merge): use Enumerable#each_entry to implement
+ Set compatible to 1.8 behavior. [ruby-core:27985]
+
+ * lib/set.rb: replace is_a?(Enumerable) with respond_to?(:each)
+ for duck typing.
+
+ * lib/set.rb (SortedSet#add): typo fixed.
+
+Tue Feb 2 11:13:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#marshal_dump): exclude
+ delegator-specific instance variables.
+
+Mon Feb 1 21:26:41 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/matrix.rb (Vector#each2): returns a self. [ruby-dev:40241]
+
+Mon Feb 1 17:08:42 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_minus): RDoc update. a patch from red stun
+ in [ruby-core:27951]
+
+Mon Feb 1 07:36:33 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil/tkutil.c: fix SEGV on TkUtil::CallbackSubst._setup_subst_table.
+
+ * ext/tk/lib/tk.rb: [ruby1.9] fix freeze at exit.
+
+ * ext/tk/lib/tk.rb: [POTENTIAL INCOMPATIBLE] return NoMethodError
+ for TkWindow#to_ary and to_str.
+
+ * ext/tk/lib/tkextlib/tcllib/plotchart.rb: wrong arguments.
+
+ * ext/tk/sample/tkballoonhelp.rb: fail to support TkEntry widgets.
+
+Sun Jan 31 23:20:43 2010 wanabe <s.wanabe@gmail.com>
+
+ * io.c (rb_io_each_codepoint): use cbuf when needs readconv.
+
+Sun Jan 31 23:07:23 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_dir.rb: use string instead of symbol as file name.
+
+Sun Jan 31 22:41:33 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_string_value): fix the previous commit.
+
+Sun Jan 31 21:43:35 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_string_value): make no exception for Symbol.
+ [ruby-dev:40274]
+
+Sun Jan 31 21:10:15 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_throw): fixed infinite loop. [ruby-core:27969]
+
+Sun Jan 31 21:29:58 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/text.rb (REXML::Text#initialize): do Text.check only when
+ parent is specified, since Text.check may need doctype. partially
+ revert r26518.
+
+Sun Jan 31 15:50:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/text.rb (REXML::Text#initialize): fix typo and a bug that
+ seems to be caused by refactoring.
+
+Sun Jan 31 15:46:37 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/parent.rb (REXML::Parent#delete): return the deleted node
+ because the rdoc of REXML::Element#delete_element says it returns
+ "the element that was removed." [REXMLTracker#161]
+
+Sun Jan 31 14:33:00 2010 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: A bug fix for deleting blank Table rows from Andy Hartford.
+
+Sun Jan 31 13:31:43 2010 wanabe <s.wanabe@gmail.com>
+
+ * gc.c (obj_free): free rb_classext_t of eigenclass. [Bug #1392]
+
+Sun Jan 31 13:00:14 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/document.rb (REXML::Document#add): fix duplicate XMLDecls
+ and bad DocTypes in REXML::Document. (Bug #19058) [ruby-core:27979]
+ based on the patch by Federico Builes.
+
+Fri Jan 29 22:49:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/getoptlong.rb (set_options): ensure that the type of argument is
+ Array, restoring this check that was deleted at r10239. This caused
+ rubyspec error.
+
+Fri Jan 29 12:59:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (mingw): needs $(DEFFILE) for extension libraries.
+ [ruby-core:27946]
+
+Fri Jan 29 11:09:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_do): log no source when no development env.
+
+ * lib/mkmf.rb (create_makefile): srcprefix always needs $(srcdir).
+
+ * lib/mkmf.rb (create_makefile): yield configuration if a block is
+ given.
+
+Fri Jan 29 09:43:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac.trans (buf_shift_char): don't see uninitialized
+ value. [ruby-dev:40233]
+
+Fri Jan 29 01:42:24 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#initialize_copy): use initialize_copy
+ instead of overriding clone/dup. [ruby-dev:40221]
+ it now always clones the target, it might cause incompatibility.
+
+Fri Jan 29 01:26:53 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_i): update RDoc to
+ denote that #to_i raises FloatDomainError for Inf and NaN.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_i): fast #to_i using
+ BigDecimal_split().
+
+ * bignum.c (conv_digit): use faster ISDIGIT() assuming ASCII.
+
+Fri Jan 29 00:18:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/cgi.rb: set autoload to CGI::HtmlExtension. [ruby-dev:40194]
+
+Thu Jan 28 09:44:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (onig_compile): initialize ScanEnv.
+ mainly to initialize env->warnings_flag [ruby-dev:40196]
+
+ * regparse.c (scan_env_clear): clear warnings_flag.
+
+Wed Jan 27 23:33:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/matrix/test_matrix.rb, test/matrix/test_vector.rb: add some
+ tests.
+
+Wed Jan 27 23:29:36 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/thread.rb (ConditionVariable#wait, signal, broadcast): return
+ self (for 1.8 compatibility).
+
+Wed Jan 27 23:27:54 2010 Keiju Ishitsuka <keiju@emperor2.pendome>
+
+ * lib/matrix.rb: add exception Matrix::ErrOperationNotImplemented
+ [ruby-dev:40149].
+ * lib/matrix.rb: change message of exception
+ Matrix::ErrOperationNotDefined [ruby-dev:40150], [ruby-dev:40176].
+ * lib/matrix.rb: add method Vector#/ [ruby-dev:40151].
+ * lib/matrix.rb(Matrix::Scalar#+,-,/): delete meaningless when
+ switch. [ruby-dev:40149]
+
+Wed Jan 27 23:22:54 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * vm_dump.c (bugreport_backtrace): trivial change.
+
+ * vm_dump.c (rb_vm_bugreport): uninitialized local variable i.
+ [ruby-dev:40169]
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_segv_test):
+ follow above change.
+
+Wed Jan 27 23:20:52 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_exception.rb
+ (TestException#test_thread_signal_location):
+ change test method name.
+
+Wed Jan 27 22:48:40 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/matrix.rb (determinant): fix name error.
+
+Wed Jan 27 22:26:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_backtrace): "circular require" warning was output to
+ stdout except the first line. All line is output to stderr now.
+ [ruby-dev:40147]
+
+Wed Jan 27 00:22:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod, BigDecimal_mod,
+ BigDecimal_divmod, BigDecimal_div2): BigDecimal#% and #div returned
+ an array itself that was returned by #divmod.
+
+Wed Jan 27 00:19:30 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): do not raise infinity
+ exception for BigDecimal("0E200000000000").
+
+Tue Jan 26 21:50:31 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): BigDecimal("0E200000000000")
+ was Infinity, not 0.
+
+ * test/bigdecimal/test_bigdecimal.rb: add a test for above.
+
+Tue Jan 26 21:36:22 2010 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: test unsetenv returns a value.
+ unsetenv is void in older BSDs (FreeBSD 6 and OpenBSD 4.5 at least).
+
+ * hash.c (ruby_setenv): don't use the result of unsetenv if unsetenv
+ doesn't return a value.
+
+Tue Jan 26 21:32:03 2010 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: suppress a warning.
+
+ * ext/extmk.rb: ditto.
+
+Tue Jan 26 20:23:22 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (rb_vm_invoke_proc): this function must not catch TAG_RETURN
+ because vm_exec does. This caused rubyspec error. [ruby-dev:40158]
+
+Tue Jan 26 20:21:28 2010 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/eq.rb: fix circular require in drb.
+ reported by akr. see [ruby-dev:40156] [ruby-core:27661]
+
+Tue Jan 26 19:59:17 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_gzfile_s_wrap): add rdoc. [Bug #2656]
+ patched by Hugh Sasse [ruby-core:27692] [ruby-core:27852]
+
+ * ext/zlib/doc/zlib.rd: removed.
+
+Tue Jan 26 16:43:34 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/strscan/strscan.c: fix rdoc. (length -> bytesize)
+ reported by Kornelius Kalnbach. see [ruby-core:27792]
+
+Tue Jan 26 07:06:05 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/matrix.rb: suppress warnings.
+
+Tue Jan 26 03:16:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c, vm_core.h, eval.c: because rb_protect must not be jumped by
+ callcc, revert r26407. And rename trap_tag to protect_tag and
+ change exception message (across trap -> across stack rewinding
+ barrier).
+
+Mon Jan 25 23:08:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (do_select): wrong conditions. [ruby-core:27753]
+
+Mon Jan 25 22:31:53 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/envutil.rb: use method_defined? instead of
+ instance_methods.include?.
+
+Mon Jan 25 22:08:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (rb_cont_call, cont_restore_1): remove trap_tag check because
+ it seems not to make sense. [ruby-dev:40121]
+
+ * vm_core.h, eval.c (rb_protect): ditto.
+
+Mon Jan 25 21:43:05 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/envutil.rb: fix the check if instance method `ruby' is
+ defined or not.
+
+Mon Jan 25 21:17:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rubyoptions.rb (test_segv_test): add a test for
+ bugreport trace dumper.
+
+Mon Jan 25 17:47:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (pty_check): needs WNOHANG to poll, return $?, and
+ call raise_from_check() with pid_t. [ruby-dev:40141]
+
+Mon Jan 25 17:36:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.c (RUBY_LIB, RUBY_*_LIB): moved from configures.
+
+Mon Jan 25 12:11:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (USE_SIGALTSTACK): only when SA_SIGINFO also is
+ available. see [ruby-core:27768].
+
+Mon Jan 25 12:02:34 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dln.c, file.c, io.c, signal.c: add __HAIKU__.
+ patched by Alexander von Gluck [ruby-core:27767]
+
+Mon Jan 25 11:45:47 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * math.c (domain_check): ignore errno if y is inf.
+ r26335 is because NetBSD 5.0's asin and acos returns
+ 0.0 with errno EDOM. But it breaks Linux whose gamma returns inf
+ with errno ERANGE on.
+
+Sun Jan 24 22:48:05 2010 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm.c, vm_eval.c, vm_insnhelper.c: fix issues about
+ return and c-return trace. This issue skips (c-)return event
+ with global jump such as break or return. This fix make vm invoke
+ hooks at stack rewind timing. fix [ruby-core:27606] [Bug #2610].
+
+ * test/ruby/test_settracefunc.rb: add a test for above.
+
+Sun Jan 24 14:21:48 2010 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_strlen_cr): increment by rb_enc_mbminlen(enc) for
+ broken byte sequence. [ruby-core:27748]
+ (rb_str_inspect): ditto.
+
+Sun Jan 24 05:18:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): unlock all locking mutexes
+ before clean up. [ruby-core:26877]
+
+ * thread.c (rb_thread_atfork): no other threads to be joined.
+
+ * vm_core.h (rb_thread_lock_unlock, rb_thread_lock_destroy):
+ new functions.
+
+ * vm.c (ruby_vm_destruct): unlock and destroy global VM lock.
+
+Sun Jan 24 00:31:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/parser/ruby.rb: fix typo.
+ patched by Hal Brodigan [ruby-core:21536]
+
+Sun Jan 24 00:02:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/markup/to_html_crossref.rb: fix failure of the test.
+ patched by Tomoyuki Chikanaga and nobu [ruby-core:20564]
+
+Sat Jan 23 23:27:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (dir_s_glob): add rdoc by Roger Pack. [ruby-core:27669]
+
+Sat Jan 23 23:12:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/generator/html.rb (RDoc::Generator::HTML#gen_into):
+ make the rdoc(generating html) run faster and use less memory.
+ patch by Tetsu Soh [ruby-core:27656]
+
+Sat Jan 23 19:54:48 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE.ole_initialize,
+ WIN32OLE.ole_uninitialize to use in win32ole.rb.
+ You must not use these methods.
+
+ * ext/win32ole/lib/win32ole.rb: add win32ole.rb
+ re-define Thread#initialize (fix ruby-core:27634)
+
+Sat Jan 23 00:25:19 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * sample/coverage.rb: preserve exit status.
+
+Sat Jan 23 00:21:18 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_dir.rb: get rid of debug print.
+
+ * test/ruby/test_module.rb: fixed to make test-all work.
+
+Fri Jan 22 23:54:04 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: add a test for Array#rotate, rotate!.
+
+ * test/ruby/test_dir.rb, test/ruby/test_fnmatch.rb: add some tests
+ (for coverage of dir.c).
+
+ * test/ruby/test_enum.rb: add a test for Enumerable#minmax.
+
+ * test/ruby/test_enumerator.rb: add some tests for Enumerator#inspect,
+ Enumerator::Generator and Yielder.
+
+ * test/ruby/test_env.rb: add a test for ENV#index.
+
+ * test/ruby/test_exception.rb: add some tests (for coverage of
+ error.c).
+
+ * test/ruby/test_hash.rb: add a test for recursive check.
+
+ * test/ruby/test_integer.rb: add a test for number of argument of
+ Integer.
+
+ * test/ruby/test_method.rb: add a test for define_method.
+
+ * test/ruby/test_module.rb: add a test for constant of included
+ module.
+
+ * test/ruby/test_proc.rb: add a test for parameters with cfunc.
+
+Fri Jan 22 23:50:03 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_regexp.rb, test/ruby/test_symbol.rb,
+ test/ruby/test_variable.rb: add some tests (for coverage of
+ compile.c).
+
+Fri Jan 22 21:05:34 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mload): add submicro into vtm.subsecx. [ruby-dev:40133]
+
+Fri Jan 22 14:26:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (rdoc): needs encodings and exts.
+
+Fri Jan 22 14:16:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: add missing comma.
+
+Fri Jan 22 01:07:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_bignum.rb, test/ruby/test_class.rb,
+ test/ruby/test_defined.rb, test/ruby/test_hash.rb,
+ test/ruby/test_primitive.rb, test/ruby/test_variable.rb: add some
+ tests (for coverage).
+
+Fri Jan 22 01:03:28 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_require.rb (test_define_class): expect TypeError
+ instead of NameError. [ruby-core:27504]
+
+Thu Jan 21 15:09:35 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: some tidy.
+
+Thu Jan 21 11:15:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_rotate): new methods, Array#rotate! and
+ Array#rotate. [ruby-dev:17194]
+
+ * array.c (rb_ary_reverse_m): copy directly.
+
+Thu Jan 21 09:38:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: use AS_CASE instead of when, to get rid of
+ an unintentional substitution.
+
+Thu Jan 21 08:45:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_s_disasm): check for proc first. based on the
+ patch by Roger Pack in [ruby-core:27626]. [ruby-core:27227]
+
+Wed Jan 20 16:09:59 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * common.mk (compile.$(OBJEXT)): dependencies lacking.
+
+ * vm_method.c (rb_add_method_cfunc): invalid initializer for C89
+
+ * compile.c (iseq_insns_unification): int might be smaller than int*
+
+Tue Jan 19 20:00:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::Config.default_config_hash): return an
+ empty hash when resolv.conf is not available. [ruby-core:27620]
+
+ * lib/resolv.rb (Resolv::DNS::Config#lazy_initialize): fixed the
+ defaults of nameserver and port.
+
+Tue Jan 19 14:29:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (clean-ext): allow glob patterns.
+
+ * ext/extmk.rb: ditto.
+
+Tue Jan 19 14:19:26 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/{extconf.rb, zlib.c): crc32_combine and adler32_combine is
+ supported on Zlib 1.2.2.1, so check them for old zlib.
+
+Tue Jan 19 09:03:37 2010 Aaron Patterson <tenderlove@ruby-lang.org>
+
+ * ext/zlib/zlib.c: added Zlib.crc32_combine and Zlib.adler32_combine
+
+ * test/zlib/test_zlib.rb: corresponding tests [ruby-core:27551]
+
+Tue Jan 19 02:02:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: add some tests (for coverage).
+
+ * test/ruby/test_bignum.rb: ditto.
+
+Tue Jan 19 01:57:12 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_bignum.rb: some coerce definitions (for test) was
+ wrong.
+
+Tue Jan 19 01:53:11 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (bigsub_int): remove nonsense loop.
+
+Tue Jan 19 01:42:36 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (top_compstmt, top_stmts, top_stmt): prohibit BEGIN {} in
+ non-toplevel scope. [ruby-core:21657]
+
+ * test/ruby/test_beginendblock.rb (test_begininclass): add a test for
+ above.
+
+Mon Jan 18 17:16:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/httpservlet/filehandler.rb (make_partial_content):
+ add bytes-unit. [ruby-dev:40030]
+
+Mon Jan 18 15:49:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPHeader#{content_range,range_length}):
+ use inclusive range same as the header representation.
+
+Mon Jan 18 03:59:57 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_instance_hexdigest_bang): Fix
+ rdoc.
+
+ * ext/digest/lib/digest.rb (Digest::Class.base64digest)
+ (Digest::Instance#base64digest{,!}): New methods.
+
+Sun Jan 17 22:48:44 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_instance_digest)
+ (rb_digest_instance_hexdigest): Save a method call of reset()
+ for a disposable clone.
+
+Sun Jan 17 19:24:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * math.c (domain_check): check errno first.
+ NetBSD 5.0's asin and acos returns 0.0 with errno EDOM.
+
+Sun Jan 17 14:24:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (rb_str_derive): use long.
+
+ * ext/iconv/iconv.c (iconv_convert): suppress a warning.
+
+ * lib/mkmf.rb (check_signedness): new method.
+
+ * lib/mkmf.rb (have_header, create_header): use String#tr_cpp.
+
+Thu Jan 14 13:06:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_hash, int_chr): fixed type.
+
+Thu Jan 14 12:50:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_concat): fixed range check for Fixnum, and
+ added checks for integer overflow and invalid char code.
+
+Thu Jan 14 09:34:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_concat): raise RangeError when the argument is
+ negative value. [ruby-core:27583]
+
+Thu Jan 14 08:49:59 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_to_r): convert to rational if internal representation
+ is not rational.
+
+Thu Jan 14 04:01:50 2010 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mdump): use nano_num and nano_den instead of subnano to
+ avoid Rational class in marshaled data which prevent unmarshal by
+ Ruby 1.8.
+ (time_mload): use nano_num and nano_den.
+
+Wed Jan 13 11:57:38 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * object.c (rb_class_initialize): Make sure BasicObject doesn't get
+ initialized twice [ruby-core:27577]
+
+ * class.c (rb_class_init_copy): ditto
+
+Wed Jan 13 06:54:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check for if struct timezone is defined.
+
+ * missing.h (struct timezone): define if not defined.
+
+ * win32/win32.h (struct timezone): defined in the newer w32api.
+ [ruby-core:27515]
+
+Wed Jan 13 00:33:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/shell/command-processor.rb: fix typo by Sho Hashimoto.
+ reported and patched at [ruby-dev:40058] [Bug #2599]
+
+Tue Jan 12 23:48:29 2010 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb, test/rss/test_maker_0.9.rb:
+ accept any time format in maker. [ruby-core:26923]
+
+Tue Jan 12 21:56:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_set_len): call rb_str_modify.
+
+ * file.c (realpath_rec): don't call rb_str_modify before
+ rb_str_set_len.
+
+Tue Jan 12 20:44:14 2010 Tanaka Akira <akr@fsij.org>
+
+ * file.c (realpath_internal): call rb_secure.
+
+Tue Jan 12 16:48:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP.start): options may not be given.
+
+Tue Jan 12 16:48:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): check if instream
+ is closed instead of fd 0.
+
+ * ext/readline/readline.c (Init_readline): use STDIN for input.
+ Reported by Sora Harakami. See
+ http://d.hatena.ne.jp/codnote/20100111/1263174134
+
+Tue Jan 12 16:09:02 2010 wanabe <s.wanabe@gmail.com>
+
+ * test/ruby/test_process.rb (test_execopts_env): MANDATORY_ENVS might
+ not be a part of ENV. e.g. TMPDIR.
+
+Tue Jan 12 14:07:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP.start): add hash argument to
+ set ssl related options. when use_ssl is set default value
+ of verify_mode is OpenSSL::SSL::VERIFY_PEER. [ruby-dev:40003]
+
+Tue Jan 12 14:53:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_env): use _wputenv() instead of
+ SetEnvironmentVariableW() because latter doesn't set msvcrt's environ
+ work area, of course.
+ [Bug #2552]
+
+Tue Jan 12 13:33:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (realpath_rec): trace symbolic link only when supporting
+ readlink().
+
+Tue Jan 12 12:49:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-here-doc-beg-match): fix for here-doc
+ which ends with an underscore.
+
+Tue Jan 12 09:58:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c: need to include errno.h for EINVAL.
+
+ * hash.c (ruby_setenv): fixed typo. see [ruby-dev:40026]
+
+Tue Jan 12 09:22:43 2010 Tanaka Akira <akr@fsij.org>
+
+ * prelude.rb (require_relative): use File.realpath. [ruby-dev:40040]
+
+ * include/ruby/intern.h: declare rb_dir_getwd.
+
+ * dir.c (rb_dir_getwd): copied from dir_s_getwd to export.
+ (dir_s_getwd): use rb_dir_getwd.
+
+ * file.c (rb_file_s_realpath): new method File.realpath.
+ (rb_file_s_realdirpath): new method File.realdirpath.
+
+ * lib/pathname.rb (Pathname#realpath): use File.realpath.
+ (Pathname#realdirpath): use File.realdirpath.
+
+Mon Jan 11 22:45:08 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c (ruby_setenv): Improve the emulation of setenv(3) on
+ environments where putenv(3) is used. Raise EINVAL If a
+ variable name contains an '='.
+
+Mon Jan 11 18:16:38 2010 wanabe <s.wanabe@gmail.com>
+
+ * vm_insnhelper.h (GET_BLOCK_PTR): return 0 when in class frame.
+ [Bug #2583]
+
+Mon Jan 11 16:52:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_strlen): added. [ruby-dev:40028]
+
+ * include/ruby/intern.h (rb_str_strlen): declared.
+
+Mon Jan 11 13:30:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/accesslog.rb (WEBrick::AccessLog#format): fixed typo.
+
+ * lib/webrick/httpstatus.rb (WEBrick::HTTPStatus::Status#initialize):
+ accept 0 or more arguments. [ruby-dev:40021]
+
+Mon Jan 11 12:47:58 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c (ruby_setenv): ENV.[]= should raise an error if setenv(3)
+ or putenv(3) fails. [ruby-dev:40023]
+
+Sun Jan 10 17:25:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/accesslog.rb : Escape needed.
+
+ * lib/webrick/httpstatus.rb : ditto.
+
+ * lib/webrick/httprequest.rb : ditto.
+
+ * lib/webrick/httputils.rb : ditto.
+
+ * test/webrick/test_cgi.rb (TestWEBrickCGI::test_bad_): Test for it.
+
+Sun Jan 10 04:54:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_define_class): raise TypeError same as class
+ statement. [ruby-core:27504]
+
+Sun Jan 10 04:41:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): needs ARCH_FLAG.
+
+Sat Jan 9 14:20:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (install-all): maybe typo.
+
+Sat Jan 9 14:01:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD_vfprintf): get rid of a warning of VC++ x64.
+
+Sat Jan 9 08:40:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/configure.bat (WIN32DIR): regularise file separators.
+
+Fri Jan 8 23:35:18 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (mnew): don't check visibility of method body if public
+ ZSUPER method is found. [ruby-dev:39767]
+
+ * test/ruby/test_method.rb: add a test for above.
+
+Fri Jan 8 22:59:40 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_method.c (rb_alias): skip ZSUPER method when searching body of
+ source method. [ruby-dev:39760]
+
+ * test/ruby/test_alias.rb: add a test for above.
+
+Fri Jan 8 21:15:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http, lib/net/https: move content from net/https to
+ net/http. [ruby-dev:39986]
+
+Fri Jan 8 14:06:01 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_s_read): close the IO if an exception is raised on
+ seeking. [ruby-core:27429]
+
+Fri Jan 8 13:12:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_symbol): dump no encoding for 7bit only coderange
+ symbol. [ruby-core:27375]
+
+Thu Jan 7 07:56:09 2010 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.5.0 r5596.
+ * test/minitest/*.rb: ditto.
+
+Tue Jan 5 19:30:53 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_exception.rb: add a test. cf [ruby-dev:39116]
+
+Tue Jan 5 02:03:34 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (DTRACE): clear this when `dtrace -l` fails.
+ Note that current FreeBSD needs privilege to call it;
+ so to use DTrace on FreeBSD, you should run configure as root.
+
+Mon Jan 4 21:24:18 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gc.c: added UNLIKELY to probes for optimization.
+
+ * vm.c: ditto.
+
+ * thread.c: ditto.
+
+Mon Jan 4 09:30:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (TRACING_MODEL): follow yugui's previous changes.
+
+Mon Jan 4 09:30:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (InterlockedExchangePointer): old SDK support.
+
+Sun Jan 3 23:54:51 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * trace.h: new file. wraps tracing mechanisms.
+
+ * defs/dtrace.d: new file. defined a dtrace provider "ruby".
+
+ * include/ruby/ruby.h (LIKELY): moved from vm.c.
+ (UNLIKELY): ditto.
+ (OBJSETUP): probe "object-create".
+ (RUBY_EVENT_RESCUE): new event.
+
+ * vm_exec.c (DEBUG_ENTER_INSN): embedded a probe insn-entry into it.
+ (DEBUG_END_INSN): insn-return.
+
+ * vm.c (LIKELY): moved into ruby.h.
+ (UNLIKELY): ditto.
+ (Init_BareVM): embedded a probe "raise" into it.
+
+ * variable.c (rb_class2name_without_alloc): new utility function.
+
+ * tool/rbinstall.rb (install?(:ext, :arch, :'ext-arch')): installs
+ dtrace.d if necessary.
+
+ * thread_pthread.c (add_signal_thread_list): probe "raise".
+ (rb_thread_create_timer_thread): ditto.
+
+ * thread.c (rb_thread_schedule_rec): probes "thread-enter" and
+ "thread-leave",
+ (thread_start_func_2): ditto.
+ (thread_cleanup_func): probe "thread-term"
+
+ * lib/mkmf.rb: supports dtrace postprocessor on making an extension.
+
+ * iseq.c (rb_vm_insn_name): new utility function.
+ (rb_vm_insn_len): ditto.
+
+ * insns.def (hook): probes "method-entry", "method-return", "line",
+ and "rescue".
+
+ * compile.c (iseq_compile_each): adds a trace op for "rescue" probe.
+
+ * gc.c (garbage_collect): probes "gc-begin" and "gc-end".
+ (obj_free): probe "object-free"
+ (garbage_collect_with_gvl): probe "raise"
+ (negative_size_allocation_error): ditto.
+ (rb_memerror): ditto.
+
+ * eval.c (rb_rescue2): probe "rescue"
+ (rb_longjmp): probe "raise"
+
+ * ext/probe/probe.c: new extension for application defined probes.
+
+ * ext/probe/extconf.rb: ditto.
+
+ * configure.in (--with-tracing-model): new option to choose a tracing
+ mechanism.
+ (DTRACE): new substitution. name of dtrace(1).
+ (RUBY_TRACING_MODEL): new substitution.
+ (DTRACE_OBJ): ditto.
+ (MINIDTRACE_OBJ): ditto.
+ (GOLFDTRACE_OBJ): ditto.
+ (LIBRUBY_DTRACE_OBJ): ditto.
+ (RUBY_DTRACE_POSTPROCESS): new macro. checks whether the dtrace on
+ the system needs postprocessing.
+ (RUBY_DTRACE_BSD_BROKEN): new macro. checks whether the dtrace
+ supports USDT.
+
+ * Makefile.in:
+ (DTRACE): new variable. name of dtrace(1).
+ (TRACING_MODEL): new variable. name of the chosen tracing mechanism.
+ (DTRACE_OBJ): same as the one in configure.in.
+ (MINIDTRACE_OBJ): ditto.
+ (GOLFDTRACE_OBJ): ditto.
+ (LIBRUBY_DTRACE_OBJ): ditto.
+ (CPPOUTFILE): new substitution. necessary for generating dtrace.d
+ (trace_none.h): new target for TRACING_MODEL=none
+ (RUBY_H_INCLUDES): appended a header for tracing.
+ (distclean-local): also removes preprocessed version of dtrace.d
+ ($(LIBRUBY_A)): needs $(LIBRUBY_DTRACE_OBJ) if dtrace needs
+ postprocessing.
+ ($(PROGRAM)): ditto.
+ (golf): ditto.
+ (miniruby): ditto.
+ ($(arch_hdrdir)/ruby/dtrace.d): new target. preprocessed version
+ of defs/dtrace.d. generated if necessary.
+ ($(arch_hdrdir)/ruby/trace_dtrace.h): new target.
+ definition of probes.
+ ($(LIBRUBY_DTRACE_OBJ)): new target. generated if dtrace needs
+ postprocessing.
+ ($(DTRACE_OBJ)): ditto.
+ ($(MINIDTRACE_OBJ)): ditto.
+ ($(GOLFDTRACE_OBJ)): ditto.
+
+Sun Jan 3 15:34:19 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/rexml/text.rb: String no longer has #each.
+ Patch by Mitsutaka Mimura (takkanm). [ruby-dev:39949].
+
+Sun Jan 3 01:29:18 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder#inspect):
+ implemented.
+
+Sat Jan 2 15:57:54 2010 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS#initialize): new option :nameserver_port.
+ (Resolv::DNS#each_resource): pass port number.
+ (Resolv::DNS#make_requester): ditto.
+ (Resolv::DNS::Config#lazy_initialize): initialize @nameserver_port
+ instead of @nameserver.
+ (Resolv::DNS::Config#single?): return port number addition to the
+ nameserver.
+ (Resolv::DNS::Config#generate_timeouts): use @nameserver_port.
+ (Resolv::DNS::Config#resolv): yield port number.
+
+Sat Jan 2 00:43:22 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (initialize_regexp): allow leading
+ and trailing white space, and forbid extra characters
+ on another lines. [ruby-core:26223]
+ RFC 3986 Appendix C. Delimiting a URI in Context
+ draft-duerst-iri-bis-07 7.2. Web Address processing
+
+Fri Jan 1 23:17:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI#normalize!): normalize case of
+ scheme. [ruby-core:27309]
+
+Fri Jan 1 00:47:57 2010 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_instance_method_unimpl): Suppress
+ compiler warnings.
+
+Fri Jan 1 00:00:00 2010 Tanaka Akira <akr@fsij.org>
+
+ * tool/mkconfig.rb: generate RbConfig.ruby in rbconfig.rb.
+
+ * lib/webrick/httpservlet/cgihandler.rb: use RbConfig.ruby.
+
+ * test/ruby/envutil.rb: ditto.
+
+ * benchmark/report.rb: ditto.
+
+ * benchmark/runc.rb: ditto.
+
+ * tool/eval.rb: ditto.
+
+Thu Dec 31 18:18:55 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/rubysocket.h: include addrinfo.h only when using our own
+ getaddrinfo.c.
+
+Thu Dec 31 14:20:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (save_redirect_fd): consider EBADF that the fd is not used.
+ [ruby-dev:39938]
+
+Thu Dec 31 06:03:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_type): typed.
+
+ * ext/socket/extconf.rb: fix for wide-getaddrinfo option.
+
+ * ext/socket/addrinfo.c: rename {addr,name}info functions to ensure
+ those are used on darwin.
+
+Thu Dec 31 03:27:53 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (native_thread_destroy): decreased the probability of
+ using the interrupt event in the thread termination.
+ see [ruby-core:27199].
+
+Thu Dec 31 02:35:57 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (w32_error): should report the function.
+
+Thu Dec 31 01:58:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: fix for extstatic.
+
+Wed Dec 30 19:43:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/ruby.h (RREGEXP_SRC_END): added.
+
+Wed Dec 30 19:40:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/defines.h (INFINITY): this is float.
+
+ * include/ruby/defines.h (NAN): ditto.
+
+ * numeric.c (rb_infinity): change content as float.
+
+ * numeric.c (rb_nan): ditto.
+
+Wed Dec 30 17:59:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb (push_all_highest_version_gems_on_load_path):
+ simplified.
+
+ * lib/rubygems/command_manager.rb (Gem#load_and_instantiate):
+ rescue only NameError from const_get.
+
+ * lib/rubygems/source_index.rb (Gem#load_specification): don't use
+ RUBY_VERSION to branch.
+
+ * lib/rubygems/validator.rb (Gem::TestRunner, Gem#alien): ditto.
+
+ * lib/rubygems.rb: Kernel#gem is already defined, and workaround
+ for home directory and custom_require are no longer needed.
+
+Tue Dec 29 16:03:33 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): Add Float::INFINITY and Float::NAN.
+ [ruby-dev:1657] [ruby-dev:4760] [ruby-list:7023]
+ [ruby-list:46690]
+ [ruby-core:26632] [ruby-talk:41352] [ruby-talk:203333]
+
+ * include/ruby/defines.h (INFINITY): defined.
+
+ * include/ruby/defines.h (NAN): defined.
+
+ * include/ruby/util.h (ruby_div0): removed.
+
+ * numeric.c (fix_pow): use INFINITY and NAN
+ instead of ruby_div0(1.0).
+
+ * marshal.c (r_object0): ditto.
+
+ * bignum.c (big_fdiv): ditto.
+
+Tue Dec 29 10:36:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser::STANDALONE):
+ any number spaces can be placed between equal-sign and the value.
+ patch from Ed Howland in [ruby-core:27345].
+
+Mon Dec 28 22:33:58 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): force to inherit standard I/O handles.
+ this change fixes [ruby-core:27273], but other side effects might
+ exist.
+
+Mon Dec 28 22:00:10 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_marshal.rb: added tests for taintness/untrustness
+ propagation.
+
+Mon Dec 28 18:13:26 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * sample/occur2.rb: reimplemented in modern style. [ruby-dev:39927].
+
+Mon Dec 28 17:19:37 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/install-sh: correction by Hiro Asari.
+ https://gist.github.com/264558/58ad1cae45cde49600bbb39286af2aae23e639d5
+
+Mon Dec 28 13:18:52 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/install-sh: wrote the intention. [ruby-dev:39928]
+
+Sun Dec 27 10:45:00 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (foleparam_initialize): add foleparam_initialize
+ to check argument of WIN32OLE_PARAM.new
+
+ * test/win32ole/test_win32ole_param.rb (test_s_new): add some assertion
+ to test WIN32OLE_PARAM.new
+
+Sun Dec 27 09:41:54 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/rbinstall.rb (install?(:local, :comm, :bin, :'bin-comm')):
+ Makes it vim friendly. __END__ in a heredoc is confusing with
+ the script end for vim.
+
+Sun Dec 27 09:13:55 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * sample/occur2.rb: have been broken. fixed for Ruby 1.9 feature.
+
+Thu Dec 24 16:32:30 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/uri/generic.rb (eql?): Check the class of the compared object.
+ Based on a patch by Peter McLain [ruby-core:27019]
+
+Thu Dec 24 15:20:03 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regexec.c (match_at): follow enclen's change.
+
+Thu Dec 24 12:08:00 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/delegate.rb (marshal_dump/load): dump & load instance variables
+ by default [ruby-core:24211]
+
+Thu Dec 24 10:31:50 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/object.c (rb_obj_cmp): Default <=> operator returns 0 if
+ objects are == [ruby-core:24063]
+
+Wed Dec 23 09:12:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/cgi/test_cgi_multipart.rb (CGIMultipartTest#_prepare):
+ always must be binary mode. c.f. Bug#2341
+
+Thu Dec 10 09:20:58 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): undef Encoding.new because
+ a class which is rb_undef_alloc-func-ed can't call new method.
+ [ruby-dev:39862]
+
+ * vm.c (Init_VM): undef RubyVM.new and RubyVM::Env.new.
+
+Mon Dec 21 17:51:44 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (optimize_node_left): include equal on the condition of for-loop.
+ This bug also affects original Oniguruma. [ruby-core:27247]
+
+Mon Dec 21 10:03:33 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (print_enc_string): follow enclen's change.
+
+ * regcomp.c (onig_print_compiled_byte_code): ditto.
+
+ * regcomp.c (onig_print_compiled_byte_code): change prototype.
+
+ * regint.c (onig_print_compiled_byte_code): comment out.
+
+Mon Dec 21 08:04:34 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * object.c: BasicObject#initialize accepts any number of arguments
+ [ruby-core:27080]
+
+Mon Dec 21 02:45:46 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_iterate): remove SEGV (retry).
+
+Sun Dec 20 23:18:23 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_iterate): remove SEGV (use the original patch).
+ [ruby-dev:39874]
+
+Sun Dec 20 21:26:05 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (rb_iterate): pass current block when the argument bl_proc
+ is NULL. This behavior can be used to make enumerator faster
+ [ruby-dev:39874]
+
+ * enumerator.c (enumerator_each): pass current block directly instead
+ of trampoline block (enumerator_each_i).
+
+ * io.c (argf_each_line, argf_each_byte, argf_each_char): ditto.
+
+Sat Dec 19 14:59:30 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gem_prelude.rb (Kernel#gem): should make gem private. a patch
+ from Sho Hashimoto in [ruby-dev:39838].
+
+Sat Dec 19 14:57:17 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/webrick/config.rb (WEBrick::Config): typo fixed. a patch
+ from Sho Hashimoto in [ruby-dev:39835].
+
+Sat Dec 19 11:06:48 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (each2,collect2,map2): Fix enumerator
+ [ruby-core:27225]
+
+Sat Dec 19 09:58:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (check_funcall): reset method_missing_reason before
+ trying the call. based on a patch from Yehuda Katz in
+ [ruby-core:27219].
+
+Sat Dec 19 09:29:22 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/set.rb: Add checks that passed argument is Enumerable.
+ [ruby-core:23844]
+
+Wed Dec 16 20:28:46 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/envutil.rb: fix a typo in assert message.
+
+Wed Dec 16 16:57:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/un.rb (httpd): try to convert port number to integer.
+
+Wed Dec 16 11:18:30 2009 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in(MINIRUBY): use "$BASERUBY" as a default ruby executable
+ name.
+
+Wed Dec 16 00:53:14 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/find.rb (Find.find): rescue more exceptions which is possible to
+ occur by other process change the directory tree.
+
+Tue Dec 15 09:06:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/find.rb (Find.find): get rid of race condition.
+
+Mon Dec 14 22:33:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/find.rb (Find.find): rescue only ENOENT and EACCES for lstat.
+
+Mon Dec 14 21:49:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/find.rb (Find.find): narrow rescue region.
+
+Mon Dec 14 09:20:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/find.rb (Find.find): removed already unnecessary code.
+
+Sun Dec 13 23:48:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/find.rb (Find.find): sort directory entries. [ruby-dev:39847]
+
+Sun Dec 13 20:55:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (invoke_ruby): call to_str for stdin_data to
+ reject non-string.
+
+Sun Dec 13 20:26:57 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (rb_parser_dump_tree): add prototype.
+
+Thu Dec 10 20:55:55 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode_data.h, transcode.c, tool/transcode-tblgen.rb: Added
+ support for new transcoding instruction FUNsio (with Tatsuya Mizuno)
+
+ * enc/trans/gb18030.trans: Significantly reduced GB18030 conversion
+ table footprint using FUNsio and differences (with Tatsuya Mizuno)
+
+ * test/ruby/test_transcode.rb: Minor name fix (from Tatsuya Mizuno)
+
+Thu Dec 10 17:22:36 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (yield_under): yields self the same as 1.8.
+
+Thu Dec 10 15:49:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (native_mutex_reinitialize_atfork): release and
+ re-acquire the lock at re-initialization.
+
+Thu Dec 10 12:56:02 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_replicate): add Encoding#replicate(name).
+
+ * encoding.c (enc_replicate_with_index): renamed from old
+ enc_replicate.
+
+ * encoding.c (rb_enc_from_encoding_index): split from
+ rb_enc_from_encoding.
+
+Thu Dec 10 09:15:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): CHAR_ESC_LEN should be 13.
+
+Thu Dec 10 01:12:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (dyna_pop_gen): pop dvars. [ruby-dev:39861]
+
+Thu Dec 10 00:46:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.c (dump_node): fixed for long members.
+
+Wed Dec 9 22:57:04 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * node.c: node management added. Currently, only pretty-dumper is
+ implemented. [ruby-dev:39853]
+
+ * ruby.c: --dump=parsetree and --dump=parsetree_with_comment options
+ added. This is just for debug or research purpose. Note that the
+ compatibility of these options are not supported at all.
+
+Wed Dec 9 09:50:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_justify): fixed the case a fill size is a
+ multiple of the length of the padding. [ruby-dev:39856]
+
+Tue Dec 8 23:41:34 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat: now recognize --with-*-{dir,include,lib} options
+ and pass them to mkmf.
+
+ * win32/configure.bat: general conversion from ``/'' to ``\'' of
+ configure_args is not necessary any longer.
+
+ * win32/setup.mak: BASERUBY is used as command, so always need to
+ convert ``/'' to ``\'' within it.
+
+Tue Dec 8 23:39:52 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (flo_eq): suppress a warning on VC++ for x64.
+
+Tue Dec 8 16:19:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems: update to 1.3.5.
+
+ * lib/rubygems/defaults.rb (Gem::default_dir): removed a clause
+ doing nothing.
+
+Tue Dec 8 03:50:24 2009 Tanaka Akira <akr@fsij.org>
+
+ * file.c (rb_f_test): use string form in unknown command error
+ message.
+
+Mon Dec 7 14:11:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object): reverted r26007. [ruby-dev:39845]
+
+ * test/test_delegate.rb (test_marshal): moved from test_marshal.rb.
+
+Mon Dec 7 13:05:59 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * string.c (rb_str_justify): CVE-2009-4124.
+ Fixes a bug reported by
+ Emmanouel Kellinis <Emmanouel.Kellinis AT kpmg.co.uk>, KPMG London;
+ Patch by nobu.
+
+Sun Dec 6 23:50:46 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * strftime.c: %l should be 1..12 instead of 0..12 [ruby-core:27072]
+
+Sun Dec 6 23:16:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/find.rb (Find.find): reduce stat system call.
+
+Sun Dec 6 16:02:15 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httpservlet/filehandler.rb: escape filename of index.
+ [ruby-dev:37768]
+
+Sun Dec 6 00:35:16 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (config.h): EXECUTABLE_EXTS moved from
+ dln.c:dln_find_1().
+
+Sat Dec 5 15:35:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object): dump instance variables when using
+ marshal_dump. [ruby-core:24211]
+
+ * variable.c (rb_ivar_count): added.
+
+Sat Dec 5 13:19:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: default ac_cv_prog_CC to CC.
+
+Sat Dec 5 10:18:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/extend-command.rb (def_extend_command): fixed argument
+ number for negative arity.
+
+Fri Dec 4 16:50:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (k_def): adjust the location of method definition to the
+ line of def. [Bug #2427]
+
+Fri Dec 4 19:05:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (defined): should respect #respond_to_missing? as
+ #respond_to? does.
+
+Fri Dec 4 15:50:18 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (yield_under): does not yield self, and passes blockptr
+ instead of &block to vm_cref_push(). [ruby-dev:39833]
+
+Fri Dec 4 15:15:43 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (num_exact): should not accept strings as operands, even
+ though they respond to #to_r. ideally, strict rational
+ conversion should be done by a method like #to_rational, not #to_r.
+ [ruby-core:23729]
+
+Fri Dec 4 13:10:23 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/stringio/stringio.c (ungetc): RDoc updated. trunk allows
+ pushing back behind the beginning of the pseudo stream.
+
+Fri Dec 4 03:10:38 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * compile.c (compile_cpath, iseq_compile_each): reverted
+ constant/class variable lookup in instance_eval etc. to the
+ behavior of 1.8.
+
+ * eval.c (rb_mod_nesting): ditto.
+
+ * insns.def (putspecialobject, defineclass): ditto.
+
+ * node.h (NODE_FL_CREF_PUSHED_BY_EVAL): ditto.
+
+ * vm_core.h (VM_SPECIAL_OBJECT_CONST_BASE): ditto.
+
+ * vm_eval.c (yield_under, eval_under): ditto.
+
+ * vm_insnhelper.c (vm_cref_push, vm_get_const_base,
+ vm_get_ev_const, vm_get_cvar_base): ditto.
+
+Thu Dec 3 20:27:27 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/gb18030-tbl.rb: Fix omission of C1 region in code table
+ (from Tatsuya Mizuno)
+
+ * test/ruby/test_transcode.rb: Added test for converting full range of
+ Unicode codepoints from/to GB18030 (from Tatsuya Mizuno)
+
+Wed Dec 2 23:51:28 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c: initialize @hostname of SSLSocket to avoid
+ warning at SSLSocket#connect.
+
+Tue Dec 1 18:01:43 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/digest/test_digest_extend.rb: added tests for digest framework.
+
+Tue Dec 1 12:01:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (dyna_push_gen, dyna_pop_gen): no needs to save both of
+ args and vars. [ruby-core:26961]
+
+ * parse.y (dyna_push_gen): use rb_node_newnode() for ripper.
+ [ruby-core:26961]
+
+ * parse.y (dyna_push_gen, dyna_pop_gen): adjust local vtable level
+ for the case of syntax errors in method name or argument inside
+ do block. [ruby-core:26961]
+
+Mon Nov 30 16:57:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (command_output): $makeflags are already quoted.
+
+Mon Nov 30 16:54:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (EXECUTABLE_EXTS): moved from
+ dln.c:dln_find_1().
+
+ * lib/mkmf.rb (def find_executable0): use EXECUTABLE_EXTS, not
+ only EXEEXT. [ruby-core:26821]
+
+Mon Nov 30 11:00:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): suppress an extra error message after
+ numeric literal without digits. based on a patch from ujihisa .
+ in [ruby-dev:39811]. [ruby-dev:39798]
+
+Sun Nov 29 16:56:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (check_funcall_failed): pass ID. [ruby-core:26934]
+
+Sun Nov 29 06:37:53 2009 Aaron Patterson <tenderlove@ruby-lang.org>
+
+ * lib/rexml/formatters/default.rb (write_attribute): fix an
+ exception when printing a document when duplicate namespaced
+ attributes exist. Thanks, Alexey Froloff [ruby-core:26837]
+
+Sat Nov 28 09:05:53 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_eval.c (check_funcall_failed): should rescue user raised
+ NoMethodError. rescue all NoMethodError if receiver does not
+ respond to the method name. [ruby-dev:39796]
+
+Thu Nov 26 21:14:30 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_complex.rb (@unify): fix the detection if math
+ loaded. This makes test_complex.rb work fine with the previous
+ commit.
+
+ * test/ruby/test_rational.rb (@unify): ditto.
+
+Thu Nov 26 21:13:36 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/test_mathn.rb (TestMathn): new test case.
+ test for r25067.
+
+Thu Nov 26 21:11:23 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/openssl/test_config.rb (OpenSSL::TestConfig): new test case.
+ test for r25017.
+
+Thu Nov 26 21:08:54 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_range.rb (TestRange#test_comparison_when_recursive):
+ test for r25010.
+
+ * test/ruby/test_struct.rb (TestStruct#test_comparison_when_recursive):
+ ditto.
+
+Thu Nov 26 20:18:02 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gem_prelude.rb (Gem.set_home): must dup before force_encoding
+ and must force_encoding before gsub.
+ cf. Yen Sign problem of SJIS [ruby-core:26910]
+
+Thu Nov 26 17:54:37 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{configure.bat, setup.mak, Makefile.sub}: add new configure
+ option ``--with-ntver''.
+
+Thu Nov 26 11:42:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/base.rb: use $INCFLAGS to add -I option. [Bug#2387]
+
+Thu Nov 26 07:17:58 2009 wanabe <s.wanabe@gmail.com>
+
+ * marshal.c (mark_dump_arg): mark str. see also [ruby-dev:39735]
+
+Thu Nov 26 00:05:58 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/digest/test_digest_extend.rb: Added tests for current digest
+ framework.
+
+Wed Nov 25 20:46:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_search_method_entry): refine error message.
+
+Wed Nov 25 19:29:05 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_instance_method_unimpl): Do not
+ call rb_inspect() on an object that does not implement necessary
+ methods; reported by NaHi.
+
+Wed Nov 25 19:30:30 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: Added a check for an internal error
+ (with Tatsuya Mizuno)
+
+Tue Nov 24 22:57:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (EnvUtil.invoke_ruby): raise Timeout::Error
+ instead of flunk. reported by Yusuke Endoh.
+
+Tue Nov 24 22:31:44 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (ruby_vm_destruct, thread_memsize): fix argument type to make
+ RUBY_MARK_FREE_DEBUG available.
+
+Tue Nov 24 21:25:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * error.c: include errno.h at beginning.
+
+Tue Nov 24 20:11:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c: %Y format a year with 4 digits at least.
+
+ * lib/time.rb: format a year with 4 digits at least.
+
+Tue Nov 24 20:05:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * defs/known_errors.def: more errors.
+
+Tue Nov 24 20:01:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (rb_bug_errno): declared.
+
+ * include/ruby/intern.h (rb_strerrno): declaration removed.
+
+ * error.c (rb_strerrno): make it static. return NULL for unknown
+ errors.
+ (rb_bug_errno): defined.
+
+ * thread_pthread.c: use rb_bug_errno.
+
+ * signal.c (ruby_signal): use rb_bug_errno.
+
+Tue Nov 24 10:17:38 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_path_convert): fix fs_encoding is not assign.
+
+Tue Nov 24 10:00:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_strerrno): constified.
+
+Tue Nov 24 09:49:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * error.c (rb_strerrno): return "UNKNOWNERROR" for non-zero unknown
+ error.
+
+Tue Nov 24 09:18:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_strerrno): declared.
+
+ * template/known_errors.inc.tmpl: generate defined_error() and
+ undefined_error() instead of set_syserr.
+
+ * error.c (Init_syserr): define defined_error() and undefined_error()
+ to follow the above change.
+ (rb_strerrno): defined.
+
+ * thread_pthread.c: show error message and errno macro name with
+ rb_bug.
+
+Mon Nov 23 16:06:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (RUBY_STACK_MIN, RUBY_STACK_SPACE): delay for
+ platforms where PTHREAD_STACK_MIN is not compile time constant.
+ [ruby-dev:39751]
+
+Mon Nov 23 11:26:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_1): removed duplication.
+
+Mon Nov 23 04:12:00 2009 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans (fun_so_universal_newline): generate \n
+ after \r\n detection instead of just after \r.
+ [ruby-list:45988] [ruby-core:25881] [ruby-core:26788]
+
+Sat Nov 21 18:48:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_search_method_entry): show flags and klass value in
+ not implemented error message.
+
+Sat Nov 21 16:38:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (marshal_dump): use normal object as the buffer so
+ that no hidden object is exposed to ruby-level. [ruby-dev:39744]
+
+Sat Nov 21 15:58:43 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (read_all): fix: false negative invalid byte sequence
+ on reading from pipes. [ruby-dev:39743]
+ fix: assign the variable 'pos' as relative value from recent pos.
+
+Sat Nov 21 14:44:16 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_path_convert): delay getting UTF8-MAC encoding
+ while really needed. [ruby-core:26807]
+
+Fri Nov 20 21:16:54 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_search_method_entry): avoid trigraph.
+
+Thu Nov 19 23:17:06 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (putbinaryfile): use APPE for resume.
+ Thanks, Tomoyuki Chikanaga.
+
+Thu Nov 19 22:50:05 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (flag_list): untaint strings to intern in the safe
+ level 1.
+
+ * lib/net/imap.rb (max_flag_count=): new methods to set the max
+ number of flags interned to symbols.
+
+Thu Nov 19 20:43:39 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/getnameinfo.c: need to include extconf.h for HAVE_* macros.
+ reported by Kenta Murata <mrkn AT mrkn.jp> via IRC.
+
+Thu Nov 19 17:00:59 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: nmake execute the file named echo if it exists
+ in the PATH. reported by Kenta Murata <mrkn AT mrkn.jp> via IRC.
+
+Thu Nov 19 02:50:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_search_method_entry): show the type of the hidden
+ object.
+ (rb_type_str): new function for above.
+
+Thu Nov 19 00:47:09 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (MORE_CHAR_SUSPENDED): renamed from MORE_CHAR_CBUF_FULL.
+
+Wed Nov 18 22:00:13 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fill_cbuf): extracted from more_char.
+ (io_shift_cbuf): fix memmove condition.
+ (read_all): use fill_cbuf directly to avoid ECONV_AFTER_OUTPUT.
+ [ruby-dev:39708]
+
+Wed Nov 18 18:25:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_atfork_internal): reinitialize global lock
+ at fork to get rid of deadlock. based on the patch from Hongli
+ Lai in [ruby-core:26783]. [ruby-core:23572]
+
+Wed Nov 18 17:48:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (terminate_atfork_i): all mutex locks by other threads
+ have been abandoned at fork.
+
+Wed Nov 18 15:27:20 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (file_path_convert): delay getting filesystem encoding
+ while really needed.
+
+Wed Nov 18 12:33:42 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_set_default_encoding): reset filesystem
+ encoding because on resetting default_external because
+ Unix's filesystem encoding depends on default_external.
+
+ * encoding.c (enc_set_filesystem_encoding): added.
+
+ * ruby.c (process_options): don't call rb_filesystem_encoding
+ because filesystem encoding is reset when default_external
+ is reset.
+
+Wed Nov 18 11:57:32 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * math.c (math_gamma): fix incorrect comparison expression.
+ see also [ruby-dev:39709] [Bug #2381]
+
+Wed Nov 18 11:37:05 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_scan_open_args): move path encoding conversion
+ for filesystem encoding of Mac OS X.
+
+ * file.c (file_path_convert): added for convert encoding
+ of file path.
+
+ * file.c (rb_get_path_check): add file_path_convert.
+
+Wed Nov 18 10:17:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_utf8_nth): no count_utf8_lead_bytes_with_word
+ optimization for short string. [ruby-core:26787]
+
+ * string.c (str_utf8_offset): str_utf8_nth never return NULL.
+
+Wed Nov 18 10:12:34 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_undef): should raise TypeError if klass is nil.
+ 1.instance_eval { undef to_s } causes SEGV before this fix.
+
+ * test/ruby/test_undef.rb: new tests for undef.
+
+Wed Nov 18 08:41:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_utf8_nth): fixed overrun. [ruby-core:26787]
+
+Wed Nov 18 07:51:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (parse_mode_enc): fix invalid access.
+
+Tue Nov 17 23:50:06 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_alias): should raise TypeError if klass is nil.
+ 1.instance_eval { alias to_string to_s } causes SEGV before this
+ fix.
+
+ * test/ruby/test_alias.rb (test_special_const_alias): ditto.
+
+Tue Nov 17 17:53:53 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/big5.c, enc/trans/big5.trans, enc/trans/big5-uao-tbl.rb,
+ test/ruby/test-transcode.rb: Added Encoding 'Big5-UAO' and transcoding
+ for it (from Tatsuya Mizuno) (see Bug #1784)
+
+Tue Nov 17 16:26:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (opt_case_dispatch): runtime value cannot be used as
+ an element initializer.
+
+ * vm_insnhelper.c (opt_case_dispatch_i): gets rid of type-punning
+ calls.
+
+Mon Nov 16 15:51:53 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): protected singleton methods of
+ an object should not be able to called from other instances of the
+ class of the object. [ruby-core:26761]
+
+ * vm_eval.c (rb_method_call_status): ditto.
+
+ * test/ruby/test_module.rb (test_protected_singleton_method): ditto.
+
+Mon Nov 16 14:03:53 2009 wanabe <s.wanabe@gmail.com>
+
+ * io.c (read_all): shift read buffer if exception occurred.
+ pointed out in [ruby-dev:39702].
+
+Mon Nov 16 07:59:38 2009 wanabe <s.wanabe@gmail.com>
+
+ * io.c (read_all): don't call io_shift_cbuf until buffering enough or
+ econv_finished. [ruby-dev:39696]
+
+ * io.c (more_char): don't call clear_readconv to read buffer after
+ econv_finished.
+
+ * io.c (appendline, rb_io_each_codepoint): clear readconv when done.
+
+Mon Nov 16 01:58:08 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * include/ruby/ruby.h (rb_classext_t): annotate @internal.
+
+Mon Nov 16 01:35:34 2009 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_filesystem_encindex): use default external encoding
+ instead of locale encoding in Unix.
+
+ * ruby.c (process_options): delay filesystem encoding
+ initialization until default external encoding initialization.
+
+Mon Nov 16 00:06:26 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (thread_cleanup_func): delete locking_mutex when thread
+ object become dummy because of fork. [ruby-core:26744]
+ [ruby-core:26745]
+
+ * bootstraptest/test_thread.rb: add a test for above.
+
+Sat Nov 14 21:54:46 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * class.c (rb_mod_init_copy): fix memory leak of Class#dup.
+ [ruby-dev:39687]
+
+Sat Nov 14 17:09:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (--with-opt-dir): ignore and suppress a warning.
+ [ruby-dev:39684]
+
+Sat Nov 14 16:43:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (ruby_setenv): get rid of crash in Solaris 8 and 10.
+ [ruby-core:26668]
+
+Sat Nov 14 09:16:54 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): Fix comparisons
+ [ruby-core:26646]
+
+ * test/bigdecimal/test_bigdecimal.rb (class): Fix and improve tests.
+
+Sat Nov 14 04:07:06 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb (TkVariable::coerce): fix bug on a
+ numeric value.
+
+Sat Nov 14 03:35:29 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: TkVariable#*(other) and /(other) have a
+ bug on handling of the "other" value.
+
+Fri Nov 13 21:18:15 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/zlib/zlib.c (rb_zlib_adler32): fix typo.
+
+Fri Nov 13 16:22:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): see first_func, not first_proc,
+ to decide which to use.
+
+ * gc.c (vm_xrealloc): use the given object space.
+
+Fri Nov 13 00:46:24 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI::pretty): fix the overflow bug
+ if stripped string.[ruby-dev:37975]
+
+Thu Nov 12 23:08:11 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (read_from_cmdline): this code is better.
+ [ruby-core:25991]
+
+Thu Nov 12 22:55:42 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/net/telnet.rb: don't use simple delegate.
+ because SimpleDelegate behavior changed.
+
+Thu Nov 12 14:33:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_win32.c (thread_errno): CreateThread does not set errno.
+
+ * thread.c (thread_create_core): moved failure handling from
+ native_thread_core().
+
+ * thread_pthread.c (native_thread_create): constified.
+
+Thu Nov 12 10:08:56 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * .document: remove documents not in rdoc format until
+ rdoc supports non rdoc files. [ruby-core:26459]
+
+Thu Nov 12 06:42:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#initialize): option hash may not be
+ given. [ruby-core:26681]
+
+Thu Nov 12 01:29:15 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enumerator.c (yielder_yield_push): Yielder#<< should return self.
+ [ruby-dev:39660]
+
+Wed Nov 11 19:17:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#initialize): merge mode option.
+
+ * lib/tmpdir.rb (Dir::Tmpname#create): splat options.
+
+Wed Nov 11 12:54:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (ruby_setenv): use ruby_strdup().
+
+Wed Nov 11 12:19:27 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (ruby_setenv): also set CRT workarea. ref [ruby-core:25010]
+
+Wed Nov 11 09:36:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object, r_object0): use RHASH_IFNONE but not ifnone
+ directly.
+
+Wed Nov 11 08:32:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (blocking_region_begin): define before BLOCKING_REGION.
+ reported by Luis Lavena. [ruby-core:26670]
+
+Wed Nov 11 08:22:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * util.c (ruby_strtod): use dval() consistently.
+
+Wed Nov 11 02:14:48 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/matrix/test_matrix.rb (TestMatrix#test_rank):
+ added a test method for r24969.
+
+Tue Nov 10 08:23:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_f_exec, rb_f_system, rb_f_spawn): mentioned about
+ the shell to be used when the command line is single string.
+ See [ruby-core:26652]
+
+Mon Nov 9 20:15:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (rb_gc_save_machine_context): don't save the stack pointer
+ in this function.
+ (RB_GC_SAVE_MACHINE_CONTEXT): call rb_gc_save_machine_context and
+ save the stack pointer at caller side.
+ (rb_thread_schedule_rec): use RB_GC_SAVE_MACHINE_CONTEXT instead of
+ rb_gc_save_machine_context.
+ (blocking_region_begin): changed to a macro. use
+ RB_GC_SAVE_MACHINE_CONTEXT instead of rb_gc_save_machine_context.
+ [ruby-dev:39659]
+
+Mon Nov 9 11:28:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags): add -Wno-long-long.
+
+Sun Nov 8 18:13:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c: use RHASH_IFNONE but not ifnone directly.
+
+Sat Nov 7 21:02:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (PP::ObjectMixin#pretty_print): use to_s regardless of
+ instance variables.
+
+Sat Nov 7 20:59:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_push_frame): get rid of out-of-bounds
+ access.
+
+Sat Nov 7 12:41:19 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): revert r25521.
+ [ruby-core:26427] [ruby-core:26447]
+
+Fri Nov 6 18:33:47 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_push_frame): add CHECK_STACK_OVERFLOW.
+ [ruby-dev:39592]
+
+ * eval.c (rb_longjmp): add 1 level backtrace for sysstack_error
+ without calling any method to prevent further stack overflow.
+
+ * eval.c (make_exception): don't call #exception for
+ sysstack_error to prevent stack overflow.
+
+ * proc.c (Init_Proc): don't freeze sysstack_error.
+
+ * eval.c (rb_longjmp): move reentrant check after exception
+ preparation.
+
+Fri Nov 6 17:13:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_header): split the line by tabs.
+
+Fri Nov 6 12:02:32 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (MINIDLNOBJ): set default as dmydln.o.
+ Now LLVM clang seems to be able to build Ruby 1.9.
+
+Fri Nov 6 09:29:32 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encindex): add fallback to
+ ASCII-8BIT on Windows.
+
+Fri Nov 6 07:29:07 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_case.rb: merged r25658 from ruby_1_8.
+
+Thu Nov 5 12:27:07 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gem_prelude.rb (Gem.user_home): force_encoding(
+ Encoding.find('filesystem')). [ruby-core:26525]
+
+Thu Nov 5 07:47:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (BEGIN): now local_push and local_pop are necessary in
+ ripper.
+
+Wed Nov 4 21:39:10 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * .document: add some README files to default rdoc's of trunk.
+ patched by Roger Pack [ruby-core:26459]
+
+Wed Nov 4 16:06:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/st.h (SIZEOF_ST_INDEX_T): moved from st.c for
+ Init_RandomSeed().
+
+Wed Nov 4 15:50:16 2009 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * include/ruby/ruby.h (NUM2CHR): prefix __extension__ for
+ braced-groups within expressions.
+
+Wed Nov 4 15:46:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_{internal,external}_encoding_once): fixed typos.
+
+Wed Nov 4 12:49:18 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c (mnew): Fix scope issue [ruby-core:26069]
+
+Wed Nov 4 08:50:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rb_hash_start): moved from string.c.
+
+ * random.c (Init_RandomSeed2): register global address before set.
+
+ * random.c (Init_RandomSeed): initialize hashseed.
+
+Wed Nov 4 08:26:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_check): moved other checks from GetDIR.
+
+ * dir.c (GetDIR): fixed a variable name.
+
+Wed Nov 4 08:19:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (rb_fiber_start): fixed unconditional test.
+
+Wed Nov 4 02:08:14 2009 Aaron Patterson <tenderlove@ruby-lang.org>
+
+ * ext/dl/cptr.c (rb_dlptr_eql, rb_dlptr_cmp): DL::CPtr#== and DL::CPtr#<=>
+ should not raise an exception when compared to a different object.
+
+Wed Nov 4 00:05:36 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_upto): make next object before yield its block.
+ fix: can modify original begin string of String#upto.
+ [ruby-dev:26384] [ruby-dev:39626]
+
+Mon Nov 2 18:33:21 2009 wanabe <s.wanabe@gmail.com>
+
+ * cont.c (fiber_free): don't free unallocated local_storage. see #1325.
+
+ * cont.c (cont_init): clear local_storage not to use current thread's.
+
+ * cont.c (fiber_t_alloc, root_fiber_alloc): link itself always for
+ a case that fiber_link_remove() is called before fiber_link_join().
+
+ * cont.c (fiber_init): clear cont->vm_stack and th->stack before
+ root_fiber_alloc() in rb_fiber_current().
+
+Mon Nov 2 14:52:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_exc_raise, rb_exc_fatal, rb_make_exception):
+ suppressed shorten-64-to-32 warnings.
+
+Mon Nov 2 14:43:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_pthread.c (native_stop_timer_thread): delay joining timer
+ thread after unlocking mutex.
+
+Mon Nov 2 13:31:14 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_pthread.c (native_stop_timer_thread): need to join timer thread
+ only when really stopping it.
+
+Mon Nov 2 12:55:50 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_{pthread,win32}.c (native_stop_timer_thread): join the thread
+ here.
+
+ * thread_{pthread,win32}.c (native_reset_timer_thread): new function.
+
+ * thread.c (rb_thread_stop_timer_thread, rb_thread_reset_timer_thread):
+ call above function instead of simply setting 0.
+
+Mon Nov 2 11:22:19 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/registry.rb: update rdoc. [ruby-core:26022]
+
+Sun Nov 1 20:16:03 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: fixed rdoc. [ruby-core:26457]
+
+Sun Nov 1 16:24:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_stack_grow_dir): fix for universal binary.
+
+ * configure.in (sitehdrdir, vendorhdrdir): fixed default values.
+
+Sun Nov 1 13:31:16 2009 wanabe <s.wanabe@gmail.com>
+
+ * win32/win32.c (overlapped_socket_io, recvmsg, sendmsg): pass handle
+ instead of pointer to CloseHandle().
+
+Sun Nov 1 13:11:27 2009 wanabe <s.wanabe@gmail.com>
+
+ * ext/socket/socket.c (socket_s_ip_address_list): use FreeLibrary() to
+ free HMODULE.
+
+Sun Nov 1 08:17:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (GET_STACK_BOUNDS): refactored common code. based on a
+ patch from Suraj N. Kurapati <sunaku AT gmail.com> in
+ [ruby-core:26443].
+
+Sat Oct 31 23:44:35 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_count): remove optimization using #size.
+ revert r25560.
+
+ * vm_eval.c (rb_funcall_no_recursive): remove method.
+
+Sat Oct 31 23:28:49 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_eval.c (check_funcall): logic updated according to
+ [ruby-dev:39594]. search method entry, call if it exists;
+ otherwise check method_missing, call if it was overridden,
+ protecting exceptions; if NoMethodError happens, check method
+ name.
+
+ * vm_eval.c (vm_call0): use idMethodMissing.
+
+ * vm_eval.c (rb_search_method_entry): typo fixed.
+
+Sat Oct 31 17:19:28 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPResponse#each_response_header):
+ cosmetic: '?\ ' -> '?\s'
+
+Fri Oct 30 22:09:47 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPResponse#each_response_header):
+ accept multiline message header of HTTP response. see #1796.
+ cf. RFC 2616 '4.2 Message Header'.
+
+ * test/net/http/test_httpresponse.rb: added.
+
+Fri Oct 30 18:54:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (trnext): detect empty range and raise exception.
+ [ruby-dev:39108]
+
+Fri Oct 30 17:01:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (enum call_type): get rid of last comma.
+
+ * vm_eval.c (vm_call0, vm_call_super, rb_f_send, rb_f_public_send):
+ fixed call_type. [ruby-dev:39581]
+
+ * vm_eval.c (rb_search_method_entry, rb_method_call_status): split
+ from rb_call0().
+
+ * vm_eval.c (rb_check_funcall): get rid of raising exceptions and
+ hiding further exceptions. [ruby-dev:39584]
+
+ * vm_eval.c (rb_funcall_no_recursive): ditto.
+
+Fri Oct 30 13:36:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_blocking_region): reverted r25566, and added
+ description that no exception is allowed inside `func', instead.
+ see [ruby-dev:39582]
+
+Fri Oct 30 13:13:16 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32.c (recvmsg, sendmsg, link): shouldn't raise ruby's exceptions
+ in the functions expected as system API. see [ruby-dev:39579] and
+ [ruby-dev:39582]
+
+Fri Oct 30 12:59:20 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (rb_thread_blocking_region): standard C doesn't accept
+ preprocessing directive within macro expansion.
+
+Fri Oct 30 10:55:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_blocking_region): must ensure to unlock GVL.
+ [ruby-dev:39579]
+
+Fri Oct 30 04:47:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RSTRING_END): trivial optimization.
+
+ * string.c (rb_str_sub_bang): trivial optimization.
+
+Fri Oct 30 02:11:36 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_count): call #size using rb_funcall_no_recursive()
+ to prevent infinite recursive calls. [ruby-core:24794]
+
+ * vm_eval.c (rb_funcall_no_recursive): utility function to check
+ direct recursive call.
+
+ * vm_eval.c (rb_check_funcall): move from eval.c. [refactoring]
+
+Thu Oct 29 18:37:02 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): revert previous commit.
+
+ * ruby.c (process_options): ditto.
+
+Thu Oct 29 15:35:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): set locale and filesystem encindex.
+
+ * ruby.c (process_options): move setting func of filesystem
+ encoding to Init_Encoding.
+
+Thu Oct 29 15:43:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_name_err_mesg_new): added prototype.
+
+Thu Oct 29 13:53:18 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_to_ary): do not use #respond_to? to detect
+ to_ary. Just call. [ruby-core:23738]
+
+ * eval.c (rb_check_funcall): new function with method existence
+ check. returns Qundef when the method does not exist.
+
+ * enumerator.c (enumerator_rewind): just call method, using
+ rb_check_funcall(). [ruby-core:23738]
+
+ * error.c (exc_equal): ditto.
+
+ * object.c (convert_type): ditto.
+
+ * error.c (rb_name_err_mesg_new): export function.
+
+ * eval.c (make_exception): ditto.
+
+ * io.c (pop_last_hash): return early when the last argument is nil.
+
+ * io.c (rb_io_puts): treat T_STRING specially for small
+ optimization.
+
+ * vm_eval.c (raise_method_missing): skip method call if possible
+ using rb_method_basic_definition_p().
+
+ * vm_eval.c (method_missing): ditto.
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_debug): test
+ suites changed to ignore exceptions caused by just-call policy.
+
+Thu Oct 29 04:41:44 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (process_options): call rb_filesystem_encoding().
+
+Thu Oct 29 04:40:36 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (Init_IO): rb_default_rs should be US-ASCII.
+
+Thu Oct 29 01:22:01 2009 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * ext/socket/extconf.rb : Compilation failure on AIX.
+ ss_len (a member of struct sockaddr_storage) has preceding __,
+ but ss_family does not have it from AIX 5.2.
+
+Wed Oct 28 16:32:49 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (get_filesystem_encoding): removed.
+
+ * encoding.c (rb_locale_encindex): added.
+
+ * encoding.c (rb_filesystem_encindex): added.
+
+ * encoding.c (rb_filesystem_encindex): add an alias 'filesystem'.
+ [ruby-dev:39574]
+
+ * encoding.c (enc_find): add rdoc about special aliases.
+
+ * gem_prelude.rb (Gem.set_home): use Encoding.find('filesystem').
+
+ * gem_prelude.rb (Gem.set_paths): ditto.
+
+Wed Oct 28 15:02:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gem_prelude.rb (Gem.set_home):
+ force_encoding(Encoding.filesystem_encoding)
+ [ruby-core:25959]
+
+ * gem_prelude.rb (Gem.set_paths): ditto.
+
+Wed Oct 28 14:24:45 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (get_filesystem_encoding):
+ add Encoding.filesystem_encoding [ruby-dev:39546]
+ also see [ruby-core:25959]
+
+Wed Oct 28 14:51:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_each_group): fixed typo.
+
+Wed Oct 28 13:02:10 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#initialize): sets @binary to true.
+
+ * lib/net/ftp.rb (Net::FTP#binary=): sends a TYPE command only when
+ logged in. [ruby-dev:39548]
+
+ * lib/net/ftp.rb (Net::FTP#send_type_command): new private method
+ which sends an appropriate TYPE command according to the value of
+ @binary.
+
+ * lib/net/ftp.rb (Net::FTP#login): calls send_type_command instead
+ of binary=.
+
+Wed Oct 28 12:26:51 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_setup_method): should push call frame before
+ raising exception, to put the Ruby-defined method name in the
+ error message. [ruby-core:26333]
+
+ * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): macro modified.
+
+ * vm_insnhelper.c (vm_yield_setup_args): modified for new
+ VM_CALLEE_SETUP_ARG macro.
+
+Tue Oct 27 22:46:44 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#initialize): @sock = nil.
+
+ * lib/net/ftp.rb (Net::FTP#binary=): send command only when
+ socket is open. [ruby-dev:39548]
+
+Tue Oct 27 22:22:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (Init_stringio): added read_nonblock and
+ write_nonblock aliases. [ruby-dev:39551]
+
+ * ext/stringio/stringio.c (strio_data_type): typed.
+
+Tue Oct 27 21:20:35 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: add TkVariable#+@ and -@ method.
+
+Tue Oct 27 16:36:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (chopped_length): get rid of unexpected exception.
+ see [ruby-core:26336].
+
+Tue Oct 27 15:53:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * gc.h (SET_MACHINE_STACK_END): use __i386.
+ Some compiler may not define __i386__.
+ Solaris 64-bit Developer's Guide:
+ http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view
+
+Tue Oct 27 15:44:48 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (getbinaryfile, list): call to_s to convert
+ a Pathname instance into a string. [ruby-core:26237]
+
+Tue Oct 27 12:30:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.h (SET_MACHINE_STACK_END): use __i386__ instead of __i386,
+ and explicit size qualifiers.
+
+Tue Oct 27 09:40:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.h (SET_MACHINE_STACK_END): add x86_64 version by nobu.
+
+Tue Oct 27 09:27:59 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_exec.c (DECL_SC_REG): use __clang__.
+
+Tue Oct 27 08:56:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: reverted r25443 because build_os is used in mkmf.rb
+ on some platforms. [ruby-core:26332]
+
+Tue Oct 27 08:01:57 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * parse.y (ripper_filename): add Ripper#filename. [ruby-dev:37856]
+
+ * test/ripper/test_filter.rb: add more tests.
+
+Tue Oct 27 07:53:25 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (garbage_collect_with_gvl): do not garbage_collect when
+ dont_gc flag turned on. [ruby-core:26327]
+
+Tue Oct 27 07:38:39 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c,stubs.c: remove errors or warnings when compiled
+ with old ruby 1.8.x.
+
+ * ext/tk/tkutil/tkutil.c: ditto.
+
+Tue Oct 27 05:56:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm.c (invoke_block_from_c): return Qnil when its iseq is
+ SPECIAL CONST. [ruby-core:26335]
+
+Tue Oct 27 05:11:49 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_exec.c (DECL_SC_REG): check defined(__asm__) before use it.
+ LLVM/clang defines __GNUC__ but doesn't have __asm__.
+
+Tue Oct 27 03:45:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): added RUBY_SITEARCH to use
+ different name from RUBY_ARCH. [ruby-core:26324]
+
+Mon Oct 26 20:04:13 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_cmp): Array#<=> returns nil when comparison fails
+ [ruby-core:26316]
+
+Mon Oct 26 18:37:57 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (default_proc_arity_check): new support function.
+
+ * hash.c (rb_hash_initialize): should do arity check as #default_proc=.
+ [ruby-core:26281]
+
+Mon Oct 26 13:24:17 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/remote-tk.rb: typo fixed.
+
+Mon Oct 26 12:34:08 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ruby.c (usage): -T and -W descriptions updated. see
+ [ruby-dev:39539]
+
+ * man/ruby.1: ditto.
+
+Mon Oct 26 12:06:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_fwrite): adjust stdio file position after direct write on
+ BSDish platforms. [ruby-core:26300]
+
+Sun Oct 25 15:44:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (dlhandle_sym): fixed an invalid local variable
+ declaration.
+
+Sun Oct 25 13:33:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_cntl): F_DUPFD is platform dependent.
+
+Sun Oct 25 10:19:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (rb_dlhandle_close): fixed an invalid local
+ variable declaration.
+
+Sun Oct 25 05:44:34 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (**): Optimization (up to 45% faster)
+
+Sat Oct 24 14:28:40 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_set_default_proc): checks arity of default_proc
+ of a Hash. [ruby-core:26087]
+
+Sat Oct 24 13:38:45 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_cmp): defines Object#<=>. [ruby-core:24063]
+
+Sat Oct 24 09:51:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_flat_map): new method that concatenates the values
+ from given block. also provides alias #collect_concat.
+
+Sat Oct 24 00:36:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_cntl): update max file descriptor by the result of
+ fcntl(F_DUPFD).
+
+Fri Oct 23 16:31:14 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_class_new): move class check to rb_check_inheritable().
+
+ * class.c (rb_check_inheritable): should not allow subclass of
+ class Class. [ruby-core:26225]
+
+Fri Oct 23 14:25:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (target, target_alias): replace with real cpu.
+
+ * mkconfig.rb: build* are not needed in rbconfig.rb.
+
+ * configure.in (warnflags): use -Wextra only when
+ -Wno-missing-field-initializers is available.
+
+ * configure.in (optflags): removed -fomit-frame-pointer by default.
+
+Fri Oct 23 09:12:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pathname.rb (Pathname::SAME_PATHS): FNM_SYSCASE is always
+ non-nil.
+
+Fri Oct 23 07:32:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, Makefile.in, win32/Makefile.sub (XRUBY): runnable
+ ruby without current libraries.
+
+ * common.mk (rdoc): use XRUBY.
+
+Fri Oct 23 07:28:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags): use -Wextra instead of -Wall.
+
+ * gc.c (mark_current_machine_context): get rid of warning.
+
+Thu Oct 22 21:10:39 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * class.c (rb_obj_basic_to_s_p): typo. Please become familiar with
+ the ANSI style.
+
+Thu Oct 22 20:20:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_in_out_err): test_stdout and
+ test_stderr should be an array.
+
+ * test/ruby/test_rubyoptions.rb (test_notfound): test_stdin of
+ assert_in_out_err should be a string.
+
+Thu Oct 22 17:49:05 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/fileutils.rb (FileUtils#fu_get_uid, fu_get_gid): Do not
+ convert an integer back and forth.
+
+Thu Oct 22 17:29:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (arg_prepend): removed. a patch from Mikhail T. in
+ [ruby-core:26217].
+
+Thu Oct 22 04:54:41 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_inspect): print instance variables only when
+ Object#to_s is not overridden. [ruby-core:24425]
+
+ * class.c (rb_obj_basic_to_s_p): new function.
+
+Wed Oct 21 19:32:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_obj_inspect): fixed rdoc about the case that to_s
+ is called. [ruby-core:24425]
+
+Wed Oct 21 08:17:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/logger/test_logger.rb (TestLogDevice#test_write): check
+ also error message.
+
+Wed Oct 21 03:54:41 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb:
+ Creator functions now strict with their arguments
+ Support for empty matrices (see new method Matrix.empty)
+ Matrix#trace raises an ErrDimensionMismatch if the matrix is not square
+ Enumerators are returned when no block given
+ Consistent results when accessing elements with out of bounds indices
+ Details in [ruby-core:23598].
+
+Wed Oct 21 00:27:15 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/httpauth/digestauth.rb: typo in exception message fixed.
+
+Wed Oct 21 00:17:28 2009 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: imported upstream version (logger/1.2.7) see #2238.
+ * do not raise an exception even if log writing failed.
+ * do not raise ShiftingError if an aged file already exists.
+ (no ShiftingError will be raised from 1.2.7, just warn() instead)
+ * test/logger/test_logger.rb: ditto.
+
+Tue Oct 20 22:29:06 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/matrix.rb: Bug fix. See detail [ruby-core:23598].
+
+Tue Oct 20 17:57:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_symbol, r_symreal): fixed the order of symbol and
+ its encoding modifier, in order to make the dump readable from
+ 1.8. [ruby-dev:39515]
+
+Tue Oct 20 16:41:18 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (finite, scalb): inline'ed non-standard
+ identifier macros. [ruby-core:26166]
+
+Tue Oct 20 15:38:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ripper_intern): enable literal optimization.
+
+ * parse.y (method_call): dispatch symbols. a patch from Andy Keep in
+ [ruby-core:26169]. [ruby-core:26165]
+
+ * parse.y (mlhs_basic): fixed handling splat in middle of mlhs. a
+ patch from Andy Keep in [ruby-core:26163]
+
+ * parse.y (parser_here_document): dispatch delayed heredoc
+ contents. based on a patch from Andy Keep in [ruby-core:24855].
+
+Mon Oct 19 15:17:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rb_method_entry): search method entry by class and id.
+
+Mon Oct 19 15:03:31 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (enc/unicode/name2ctype.h): no need to create
+ directory if it already exists.
+
+Mon Oct 19 11:34:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rb_ps): dump all threads and their callstacks. based
+ on [ruby-core:26155] by Joshua ben Jore <twists AT gmail.com>.
+
+Mon Oct 19 10:59:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (prepare_iseq_build, rb_iseq_build_for_ruby2cext):
+ untrust mark array. [ruby-core:26137]
+
+Mon Oct 19 05:49:53 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/rexml/element.rb (text=): false should be converted to string.
+ A patch by Teruo Oshida [ruby-dev:38351]
+
+Sun Oct 18 22:33:25 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: do not require lib/delta.rb.
+
+ * lib/date/delta.rb: follows the above change.
+
+Sun Oct 18 19:14:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (is_special_global_name): add boundary check.
+
+Sun Oct 18 18:31:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): should not dup tmp string. a
+ patch from neomjp neomjp in [ruby-core:24251].
+
+Sun Oct 18 09:49:14 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/test_prime.rb
+ (TestPrime#test_eratosthenes_works_fine_after_timeout):
+ test for [ruby-dev:39465].
+
+ * lib/prime.rb (Prime::EratosthenesSieve):
+ fixed [ruby-dev:39465].
+ suppressed memory reallocation.
+ constantified some magic numbers.
+
+Sat Oct 17 22:11:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (id2encidx): register encoding name.
+ (r_object0): register object before encoding name.
+ [ruby-core:24882]
+
+Sat Oct 17 17:56:58 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/rake/test_fileutils.rb (Rake::TestFileUtils#test_sh): uses
+ FileUtils::RUBY instead of fixed "ruby" so that the ruby command
+ works fine in Ruby's "make test-all".
+ (test_sh_with_a_single_string_argument): ditto.
+ (test_sh_with_multiple_arguments): ditto.
+ (test_sh_failure): ditto
+ (test_sh_special_handling): ditto.
+
+Sat Oct 17 17:30:06 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (big_split): fix off-by-one error. [ruby-dev:39501]
+
+Sat Oct 17 16:34:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (parser_yylex): fix token even after trailing under score.
+
+Sat Oct 17 11:27:44 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (basic_obj_respond_to): call #respond_to_missing?
+ always with two arguments. [ruby-core:26090]
+
+Sat Oct 17 08:51:44 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#respond_to_missing): warn only when
+ specified method is a private. [ruby-dev:39498]
+
+Fri Oct 17 00:05:53 2009 wanabe <s.wanabe@gmail.com>
+
+ * st.c (unpack_entries): save table->bins and never change the table
+ during unpacking. Because st_insert() may cause GC and refer the
+ table, i.e. st_foreach(). [Bug #2196]
+
+Fri Oct 16 22:20:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * prelude.rb (require_relative): defined as a module function of
+ Kernel.
+
+Fri Oct 16 20:18:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#method_missing): remove backtrace
+ lines _until_ `method_missing'.
+
+Fri Oct 16 20:09:55 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#freeze): #freeze should freeze self
+ and the target at once. [ruby-core:26118]
+
+Fri Oct 16 19:39:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#respond_to_missing): warn if optional
+ include_private argument is not false. Delegator does (and
+ should) not forward private methods. [ruby-core:26080]
+
+ * lib/delegate.rb (Delegator#respond_to_missing): instead of
+ redefining #respond_to?, use #respond_to_missing?. [ruby-core:26081]
+
+Fri Oct 16 18:42:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/test_gc.rb: added tests based on [ruby-dev:39484]
+ from wanabe <s.wanabe AT gmail.com>.
+
+Fri Oct 16 16:09:01 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): `\'' is also quote character.
+
+Fri Oct 16 13:40:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.h (rb_gc_debug_body): constified.
+
+Fri Oct 16 13:20:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpMidRound): remove warnings.
+ patch from Charlie Savage. [ruby-core:22869]
+
+ * ext/digest/bubblebabble/bubblebabble.c (bubblebabble_str_new): ditto.
+
+ * ext/digest/digest.c (hexencode_str_new): ditto.
+
+ * ext/iconv/iconv.c (iconv_convert): ditto.
+
+ * ext/socket/socket.c (inspect_sockaddr): ditto.
+
+ * ext/socket/raddrinfo.c (sockaddr_obj): ditto.
+
+ * ext/syck/emitter.c (syck_emitter_write): ditto.
+
+ * ext/syck/emitter.c (syck_emitter_flush): ditto.
+
+ * ext/syck/emitter.c (syck_emit_tag): ditto.
+
+Fri Oct 16 12:03:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/csv.rb (CSV#raw_encoding): returns ASCII-8BIT when the io
+ doesn't have encoding.
+
+Fri Oct 16 03:15:52 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/csv.rb (CSV#read_to_char): set encoding and verify data
+ which read from io before encode it to @encoding.
+
+ * lib/csv.rb (CSV#raw_encoding): add to get @io's encoding.
+
+ * lib/csv.rb (CSV#read_io): add to read string and set @io's
+ encoding.
+
+Thu Oct 15 18:26:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern3): check symbol table overflow before generate
+ next id. [ruby-core:26092]
+
+Thu Oct 15 15:14:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_encoding_set): get rid of parsing non-ascii string, and
+ refine messages for invalid name encoding.
+
+ * io.c (io_reopen): unread current buffer before telling the
+ position, for the case of reopening same file. [ruby-dev:39479]
+
+Thu Oct 15 14:20:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_create): cannot retry with given block.
+ [ruby-dev:39487]
+
+Thu Oct 15 09:25:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/init.c (rsock_init_sock): mswin doesn't have S_IFSOCK
+ flag in st_mode of struct stat. so, use rb_w32_issocket() function
+ instead of S_ISSOCK macro.
+
+Thu Oct 15 00:47:42 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ use UTS#18 for POSIX character class.
+ http://rubyspec.org/issues/show/161
+
+Thu Oct 15 00:26:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (rsock_init_sock): validate file descriptor.
+
+Wed Oct 14 13:24:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): script name should not be shown in an
+ error message before loaded.
+
+Wed Oct 14 09:06:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_run_node): need to call ruby_cleanup() always even
+ if any error occurred so far.
+
+Wed Oct 14 08:08:12 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c (mnew): Method#new checks for respond_to_missing? with
+ private set to true
+ [ruby-core:26069]
+
+Tue Oct 13 21:05:01 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Add DerivedCoreProperties, PropList (Binary Property),
+ PropertyAlias and PropertyValueAlias.
+ Now users of tool/enc-unicode.rb should specify
+ the directory of UCD files.
+
+Tue Oct 13 18:54:25 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/variable.rb: bug fix. additional trace definition changes the
+ option of first trace definition.
+
+Tue Oct 13 18:23:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (token_info_push, token_info_pop): reduced ifdefs.
+
+ * parse.y (parser_magic_comment): fixed normalization.
+
+Tue Oct 13 09:04:14 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * thread.c: Revert changes to Thread#raise made in r25278
+ [ruby-core:25367]
+
+ * eval_intern.h: ditto
+
+Mon Oct 12 23:27:57 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (login): use "anonymous@" as a default password.
+ [ruby-dev:39451]
+
+Mon Oct 12 22:48:25 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (retrlines): added a new block parameter.
+
+ * lib/net/ftp.rb (gettextfile): preserve missing end-of-line at end
+ of files. [ruby-core:24590]
+
+Mon Oct 12 19:48:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_run_node): if an exception occurred in ruby_option,
+ the result is not executable.
+
+Mon Oct 12 05:51:11 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (fetch_token): warn invalid back reference
+ and subexp call. (\k and \g).
+
+Mon Oct 12 03:47:42 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (has_encoding): added for check the regexp
+ is dumped by 1.8 or 1.9.
+
+ * marshal.c (r_object0): use has_encoding.
+
+Sun Oct 11 15:54:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_select): fixed rdoc. a patch from Justin
+ Collins in [ruby-core:26050].
+
+Sun Oct 11 10:27:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/context.rb (IRB::Context#irb_name): removed duplicated
+ attr_reader. [ruby-core:26047]
+
+ * lib/irb/ruby-lex.rb (RubyLex#lex_int2): removed duplicated
+ character class range.
+
+Sun Oct 11 10:04:35 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (fetch_token_in_cc): warn when \p is not
+ followed by property name.
+
+ * regparse.c (fetch_token): ditto.
+
+Sun Oct 11 09:44:46 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regerror.c (onig_vsnprintf_with_pattern): added.
+
+ * regparse.c (onig_syntax_warn): use above.
+
+Sun Oct 11 09:04:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_GC_GUARD_PTR): workaround for gcc
+ optimization.
+
+ * include/ruby/ruby.h (ruby_exec_node): declared.
+
+Sun Oct 11 03:10:50 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (onig_syntax_warn): added.
+
+ * regparse.c (CC_ESC_WARN, CLOSE_BRACKET_WITHOUT_ESC_WARN,
+ CC_DUP_WARN, UNKNOWN_ESC_WARN): use onig_syntax_warn.
+
+Sun Oct 11 00:14:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (marshal_dump, marshal_load): prevent from GC.
+
+Sat Oct 10 23:57:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (path_check_0): prevent from GC.
+
+Sat Oct 10 23:51:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_transcoding, str_transcoding_resize): fixed
+ types.
+
+Sat Oct 10 20:35:27 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * math.c (math_atanh): reverted r25279.
+
+Sat Oct 10 19:03:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c: use rb_thread_blocking_region to avoid
+ rb_read_check. This makes other threads runnable in getstr and
+ wgetstr.
+ (getch_func): extracted from curses_getch.
+ (curses_getch): use rb_thread_blocking_region with getch_func.
+ (getstr_func): extracted from curses_getstr.
+ (curses_getstr): use rb_thread_blocking_region with getstr_func.
+ (wgetch_func): extracted from window_getch.
+ (window_getch): use rb_thread_blocking_region with wgetch_func.
+ (wgetstr_func): extracted from window_getstr.
+ (window_getstr): use rb_thread_blocking_region with wgetstr_func.
+
+ * include/ruby/io.h (rb_read_check): deprecated because it access
+ internal of stdio.
+
+Sat Oct 10 18:59:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (cflags, cxxflags): remove duplicating options.
+
+Sat Oct 10 18:19:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, Makefile.in (LIBRUBY_SO), common.mk (ruby.imp),
+ win32/mkexports.rb (each_export): exclude _threadptr_ functions.
+
+Sat Oct 10 17:55:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_threadptr_errinfo): renamed.
+
+Sat Oct 10 17:03:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_exec_node): removed unused argument.
+
+Sat Oct 10 14:55:55 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * math.c (math_atanh): Fix bug for Math.atanh(+/-1). It now returns
+ +-Infinity. [ruby-core:26028]
+
+Sat Oct 10 14:09:40 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * thread.c (rb_threadptr_execute_interrupts_rec, rb_threadptr_raise):
+ Thread#raise with no argument will now re-raise the current exception
+ if there is one [ruby-core:25367]
+
+ * eval.c (get_errinfo, rb_rubylevel_thread_errinfo): Getter for
+ current exception for a given thread
+
+Fri Oct 9 23:10:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (rb_method_boundp): should exclude NOEX_RESPONDS.
+ based on the patch from Nikolai Lugovoi. [ruby-core:25949]
+
+Fri Oct 9 21:14:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS::Requester::ConnectedUDP): disable
+ reverse lookup.
+ (Resolv::DNS::Requester::UnconnectedUDP): ditto.
+
+Fri Oct 9 10:12:13 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/irb/context.rb (IRB::Context#initialize):
+ remove warnings when $VERBOSE is set as true in .irbrc.
+
+Fri Oct 9 02:58:18 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb: optimized.
+
+ * enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ U+100000-U+10FFFD is assigned, not Cn.
+
+Fri Oct 9 02:12:02 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * ext/curses/curses.c: Many functions of module Curses could cause a
+ crash if the ncurses library was not properly initialized.
+ Fix pointed out by Alexander Beisig [ruby-core:22592]
+ Functions fixed: attroff, attron, attrset, bkgd, bkgdset,
+ can_change_color, close_screen, closed, color_content, curs_set,
+ def_prog_mode, delch, deleteln, getmouse, getstr, has_colors,
+ init_color, init_pair, insertln, keyname, mouseinterval, mousemask,
+ pair_content, pair_number, reset_prog_mode, resizeterm, scrl,
+ setscrreg, standend, standout, start_color, timeout, ungetmouse,
+ use_default_colors
+
+Fri Oct 9 01:07:34 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (ADD_TRACE): fire coverage event in ensure clause.
+ [ruby-dev:39303]
+
+ * iseq.h, iseq.c: ditto.
+
+Fri Oct 9 00:33:29 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/net/telnet.rb (cmd): Pass FailEOF options: patch by Brian
+ Candler [ruby-core:22723]
+
+Fri Oct 9 00:01:17 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.udp_server_recv): extracted from
+ Socket.udp_server_loop_on.
+
+Thu Oct 8 05:45:14 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb: parse range notation of UnicodeData.txt.
+
+ * enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ follow above change. [ruby-dev:39444]
+
+Thu Oct 8 02:46:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_inspect): copy by chunks.
+
+Thu Oct 8 01:23:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_s_disasm): accept proc objects. [ruby-core:18762]
+
+Wed Oct 7 16:42:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (mark_dump_arg, mark_load_arg): ignore already cleaned
+ data. [ruby-core:25969]
+
+ * marshal.c (clear_dump_arg, clear_load_arg): clear freed fields.
+
+Wed Oct 7 16:06:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_long2int): evaluates the argument only
+ once.
+
+ * struct.c (rb_struct_alloc): check array length overflow.
+
+Wed Oct 7 09:23:49 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): don't assign -1 to unsigned int.
+
+Wed Oct 7 00:27:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS.bind_random_port): bind to "::" for IPv6.
+ (Resolv::DNS::ConnectedUDP#initialize): specify is_ipv6 argument of
+ bind_random_port.
+ [ruby-core:25970]
+
+Tue Oct 6 23:32:38 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): RDoc updated. a patch from Nobuhiro
+ IMAI <nov at yo.rim.or.jp> in [ruby-dev:39440]. [ruby-dev:39439]
+
+Tue Oct 6 21:30:58 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_reopen): avoid close if possible.
+
+Tue Oct 6 18:56:09 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_select): Struct#select should return
+ enumerator when no block given.
+
+Tue Oct 6 06:26:00 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * * ext/tk/lib/tk/canvas.rb: *** POTENTIALLY INCOMPATIBLE ***
+ 'tags' option of a TkcItem object should give a list of TkcTag objs.
+
+ * ext/tk/lib/tkextlib/vu/dial.rb: fix logical bug.
+
+ * ext/tk/lib/tk/canvas.rb, ext/tk/lib/tkextlib/blt/component.rb:
+ lack of support for methodcall_optkeys.
+
+Mon Oct 5 17:19:33 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator::public_api): take snapshot of
+ public method at the beginning time.
+
+ * lib/delegate.rb (SimpleDelegator#initialize): use
+ Delegator.public_api since public_method might be added after
+ initialization. [ruby-dev:39383]
+
+ * lib/delegate.rb (DelegateClass): ditto.
+
+Mon Oct 5 12:22:12 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_{times, shuffle_bang, sample}): reducing macro
+ calls inside of the loop by keeping pointers in local
+ variables. a patch from Masahiro Kanai (CanI) in [ruby-dev:39406].
+ It was found and fixed at Security and Programming camp 2009.
+
+ * string.c (rb_str_{times, split_m}): ditto.
+
+ * struct.c (rb_struct_{getmember, set, aref_id, aset_id}, {make,
+ inspect}_struct, recursive_{equal, hash, eql}): ditto.
+
+Mon Oct 5 00:09:57 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (basic_obj_respond_to): should not call
+ #respond_to_missing? for not implemented methods.
+ [ruby-core:25909]
+
+ * vm_method.c (rb_method_boundp): returns exceptional value 2 for
+ not-implemented methods when called from #respond_to? (specifies
+ by new constant NOEX_RESPONDS).
+
+ * method.h (enum): new constant NOEX_RESPONDS added.
+
+Sun Oct 4 22:16:29 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/cookie.rb: add default value to @@accept_charset
+ if have not defined. [ruby-dev:38987]
+
+ * lib/cgi/util.rb: ditto.
+
+Sun Oct 4 19:30:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (struct {dump,load}_arg): manage with dfree, instead
+ of using local variable which may be moved by context switch.
+ [ruby-dev:39425]
+
+Sun Oct 4 15:00:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (NATINT_LEN, pack_pack): suppressed warnings.
+
+Sun Oct 4 14:01:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems.rb (Gem::binary_mode): binary mode uses binary
+ encoding.
+
+Sun Oct 4 08:27:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (slicebefore_ii): use id_eqq.
+
+Sun Oct 4 06:40:09 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (ruby.mmp): added macro RUBY_EXPORT to match the
+ change in dln.c
+
+Sun Oct 4 05:34:34 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: add TkVariable#to_hash,to_proc,to_int,
+ to_str,to_ary
+
+Sun Oct 4 00:59:52 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb: fix command-line option of
+ non-interactive terminal. [ruby-core:23016]
+
+Sun Oct 4 00:40:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake/contrib: added. [ruby-core:25918]
+
+Sat Oct 3 22:14:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (bv_decls, bvar): fix for block variables.
+ [ruby-dev:39423]
+
+Sat Oct 3 21:19:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_add_method_def): no redefinition warning on
+ undef.
+
+Sat Oct 3 18:51:11 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_f_integer): now Integer() takes optional base
+ argument. base will be ignored for non string values.
+ suggested by Sam Carr at RubyFoo Lounge at London.
+
+ * test/ruby/test_integer.rb (TestInteger#test_Integer): test
+ updated.
+
+Sat Oct 3 04:34:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assignable_gen): parser_yyerror takes two arguments.
+
+Sat Oct 3 04:07:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake: updated to rake code to rake-0.8.7 source code base.
+
+ * lib/rake/loaders/makefile.rb (Rake::MakefileLoader#process_line):
+ respace dependencies too.
+
+Sat Oct 3 02:59:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assignable_gen): get rid of macro collision.
+
+Sat Oct 3 02:49:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_make_shared): should count frozen array itself.
+
+Sat Oct 3 01:01:20 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/unicode/name2ctype.h: Updated to Unicode 5.2.0.
+
+Sat Oct 3 01:01:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: workaround for regexp metacharacters of expr in
+ prefix path.
+
+Sat Oct 3 00:47:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ripper/dummyparser.rb (DummyParser): improvement by Magnus
+ Holm in [ruby-core:25884].
+ * remove scanner events which simply returned the first argument.
+ * all parser events are now automatically generated.
+ * simplify blocks.
+
+Sat Oct 3 00:43:52 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * method.h (rb_method_type_t): remove a comma at end of
+ enumerator list.
+
+Sat Oct 3 00:31:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (discrete_object_p): needs the argument type to get rid
+ of truncation on platforms where VALUE is larger than int.
+
+Fri Oct 2 22:30:15 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/unicode/name2ctype.h.blt, enc/unicode/name2ctype.kwd,
+ enc/unicode/name2ctype.src: Updated to Unicode 5.2.0.
+ NOTE: when you update these data, download UnicodeData.txt
+ and Scripts.txt from http://www.unicode.org/Public/UNIDATA/
+ and run
+ ruby1.9 tool/enc-unicode.rb UnicodeData.txt Scripts.txt \
+ > enc/unicode/name2ctype.kwd
+
+ * enc/unicode/Scripts.txt: removed.
+
+ * enc/unicode/UnicodeData.txt: removed.
+
+Fri Oct 2 20:49:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_slice_before): take a pattern if no block given.
+
+Fri Oct 2 20:37:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ripper_yylval_id, ripper_get_{id,value}): wrap ID by
+ NODE to track local variable assignment.
+
+ * parse.y (lvar_defined_gen, assignable_gen): enable local
+ variable check. [ruby-core:24923]
+
+ * parse.y (validate): use value only.
+
+ * test/ripper/test_parser_events.rb (test_local_variables): tests
+ based on a patch from Magnus Holm in [ruby-core:25885].
+
+Fri Oct 2 15:34:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (ruby_suppress_tracing): get rid of clobbering by
+ longjmp.
+
+Fri Oct 2 09:20:35 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_origenviron): remove unused old variable.
+ [ruby-dev:39412]
+
+Thu Oct 1 14:16:39 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{setup.mak,Makefile.sub,win32.c},include/ruby/win32.h (RT_VER):
+ split compiler specification and runtime library specification.
+
+ * win32/Makefile.sub (LD_SHARED*, config.status): no need to embed
+ manifest if not exist.
+
+Thu Oct 1 13:23:14 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getpid): simply call GetCurrentProcessId()
+ instead of calling MSVCRT's getpid().
+
+Wed Sep 30 13:15:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_add_method_def): show the location where
+ overwritten method was defined. [ruby-dev:39400]
+
+Wed Sep 30 00:37:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_block_call): extracted.
+
+Wed Sep 30 00:00:25 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): escape as \x{XXXX} when the encoding is
+ other than Unicode. [ruby-dev:39388]
+
+Wed Sep 30 00:00:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (THREAD_MODEL): modified message when no thread
+ model is available.
+
+Tue Sep 29 23:17:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_scan_open_args): rb_utf8mac_encoding is undefined.
+
+Tue Sep 29 22:25:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_struct_iv_get): deprecated because it is
+ not used and access internal structure.
+
+Tue Sep 29 22:19:36 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb (assert_equal): use Time#subsec if nsec
+ is not enough to distinguish arguments.
+
+Tue Sep 29 21:16:35 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_scan_open_args): add UTF8-MAC to no-convertion encoding.
+
+Tue Sep 29 21:21:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (--enable-pthread): deprecated.
+
+Tue Sep 29 21:03:59 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/pp.rb (Kernel#pp): returns its arguments, like Kernel#p.
+ [ruby-dev:34830]
+
+Tue Sep 29 17:02:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/lib/json/common.rb (recurse_proc): removed needless
+ module_function, since visibility is already module_function.
+
+Tue Sep 29 13:48:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_method_definition_eq): non-null definition is
+ not equal to null definition.
+
+ * vm_method.c (rb_add_method_def): nothing to do if old method had
+ same definition. [ruby-dev:39397]
+
+Tue Sep 29 06:50:32 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): dump as \uXXXX when the
+ string is in Unicode. [ruby-dev:39388]
+
+Tue Sep 29 06:49:16 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_unicode_p): defined.
+ Returns 1 when the encoding is Unicode series
+ other than UTF-7 else 0.
+
+Tue Sep 29 04:14:08 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding): On Unix systems,
+ filesystem encoding should be locale encoding.
+ [ruby-dev:39393]
+
+Tue Sep 29 04:07:58 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (rb_f_getenv): use rb_filesystem_str_new_cstr
+ instead of rb_str_new2.
+ ENV['PATH'].encoding should be Filesystem Encoding
+ because its content is related to filesystem.
+ see [ruby-dev:39393]
+
+ * hash.c (env_fetch): ditto.
+
+ * string.c (rb_filesystem_str_new): defined.
+
+ * string.c (rb_filesystem_str_new_cstr): ditto.
+
+ * include/ruby/intern.h (rb_filesystem_str_new): added.
+
+ * include/ruby/intern.h (rb_filesystem_str_new_cstr): ditto.
+
+Tue Sep 29 04:06:18 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/st.h: include inttypes.h and stdint.h.
+
+Tue Sep 29 00:07:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_f_getenv, env_fetch): env string may be overwritten.
+
+Mon Sep 28 23:30:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (load_lib, dln_find_exe_r): env string may be overwritten.
+
+ * dln.c (dln_{exit,loaderror,memerror,notimplement}): renamed as
+ independent names.
+
+ * dln.c (aix_loaderror): needs format string.
+
+Mon Sep 28 19:36:20 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (LK_ERR): with overlapped I/O, LockFileEx() returns
+ ERROR_IO_PENDING if the file is locked.
+
+Mon Sep 28 19:05:05 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * include/ruby/st.h: aligned prototype of st_hash_uint32 with function
+ definition (fixing compiling problem on cygwin)
+
+Mon Sep 28 12:13:15 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * method.h (enum): new method type VM_METHOD_TYPE_MISSING.
+
+ * vm_eval.c (vm_call0): invoking VM_METHOD_TYPE_MISSING method
+ objects.
+
+ * vm_insnhelper.c (vm_call_method): invoking method defined from
+ VM_METHOD_TYPE_MISSING.
+
+ * proc.c (rb_method_entry_arity): ditto.
+
+ * vm_method.c (rb_method_entry_eq): two method object wraps
+ method_missing with same symbol should be equal.
+ [ruby-core:25755]
+
+ * proc.c (mnew): should always return method object.
+
+Mon Sep 28 11:38:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string): the byte after ``\'' may be a part of
+ multibyte character, so pushback it. [ruby-list:46416]
+
+Mon Sep 28 10:06:38 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * stringio/stringio.c (strio_read): set ASCII-8BIT encoding
+ when length argument is given.
+
+Mon Sep 28 01:28:17 2009 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * Makefile.in (miniruby): suppress duplication warning on AIX.
+
+Mon Sep 28 01:13:25 2009 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * common.mk (ruby.imp): add text section [Bug #2064].
+
+ * common.mk (ruby.imp): do not export Init_*.
+
+Sun Sep 27 13:06:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (PP:ObjectMixin#pretty_print): delegates has no inspect
+ method. [ruby-core:25804]
+
+Sun Sep 27 12:01:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_buf_cat2): optimize since all second arguments are
+ constant literals.
+
+ * string.c (str_cat_char): unused now.
+
+ * string.c (rb_hash_{uint{32,},end}): removed.
+
+Sun Sep 27 11:58:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (optflags): add -fomit-frame-pointer by default.
+
+Sun Sep 27 11:28:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_minmax): use struct for memo.
+ (enum_minmax_by): ditto.
+
+Sun Sep 27 10:21:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags): check all flags if each are available.
+
+Sun Sep 27 05:35:17 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/ext/generator/generator.c: Documentation patch by okkez.
+ [Bug #2075]
+
+Sun Sep 27 04:20:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): result's encoding should be fixed.
+ If default_internal is not nil, the encoding is default_internal.
+ Else if default_external is not nil, the encoding is default_external.
+ But the encoding is not ASCII-compatible, the encoding is replaced by
+ US-ASCII.
+ Characters in ASCII-incompatible encoding or non ASCII characters
+ in other than the encoding will be \xXX escaped.
+ [ruby-dev:39343]
+
+ * string.c (str_buf_cat2): defined.
+
+ * string.c (prefix_escape): removed.
+
+Sun Sep 27 05:37:45 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/missing-pips.c: Updated to work with the latest PIPS 1.6.
+
+ * symbian/setup: ditto.
+
+ * symbian/README.SYMBIAN: ditto.
+
+Sun Sep 27 02:00:46 2009 Koichi Sasada <ko1@atdot.net>
+
+ * string.c: use rename-macro instead of RUBY_ALIAS_FUNCTION_TYPE.
+ Because build causes failure.
+
+Sat Sep 26 23:29:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c: moved murmur hash from string.c. [ruby-dev:39376]
+
+Sun Sep 26 00:24:14 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup: Updated .mmp file generation due to blockinlining.c removal.
+
+Sat Sep 26 22:39:24 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Makefile.in(test-rubyspec): explicitly executes run subcommand of
+ mspec.
+
+ * spec/README: typo fix
+
+Sat Sep 26 17:53:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (COLLISION): improved collision log feature.
+
+ * string.c (hash): updated to MurmurHash 2.0 2009-09-19.
+
+ * string.c (rb_hash_start): fixed shift width on 128bit platform.
+
+ * include/ruby/intern.h (rb_hash_{start,uint32,uint,end}): fixed
+ prototypes.
+
+Sat Sep 26 13:26:55 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/net/http.rb (transport_request): Handle timeout error by
+ closing socket if exception raised. [ruby-core:20976]
+
+Sat Sep 26 12:08:17 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (rb_method_entry_eq): method defined from same
+ block/proc should be equal. [ruby-core:25755] [ruby-core:24791]
+
+Sat Sep 26 08:35:12 2009 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (compile_string): rename to parse_string(), because
+ this function only parse String to NODE.
+
+Fri Sep 25 16:01:45 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_access): new function to
+ replace MSVCRT's access().
+ [ruby-core:25761]
+
+ * file.c (eaccess): workaround for recent MSVCRT is no longer needed.
+
+Fri Sep 25 13:04:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (mnew): fix for instance method of Module, BasicObject
+ and subclass of a class which overrides respond_to_missing?.
+ based on a patch from Nikolai Lugovoi <nlugovoi AT gmail.com> in
+ [ruby-core:25748].
+
+Fri Sep 25 11:56:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_mod_method_defined): should return true or false.
+
+Thu Sep 24 13:32:53 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (mnew): generate method object that wraps method_missing,
+ when #respond_to_missing? is defined.
+
+ * test/ruby/test_object.rb (test_respond_to_missing): add test
+ suites for #respond_to_missing? changes.
+
+Thu Sep 24 09:41:42 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/mathn.rb (Bignum#**): Fixed bignum**fixnum that was broken when
+ requiring lib/mathn
+ [ruby-core:25740]
+
+Thu Sep 24 02:21:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (atan): atan(Infinity) is
+ PI/2.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (atan): reduce loop with
+ the double-angle formula. based on a patch from Masahiro
+ Kanai (CanI) in [ruby-dev:39367].
+
+Thu Sep 24 01:14:18 2009 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * dln.c (aix_loaderror): fixed typo. suppress warnings.
+
+Thu Sep 24 00:17:06 2009 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_minmax): reduce comparison.
+ (enum_minmax_by): ditto.
+
+Wed Sep 23 22:58:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/thread.rb (ConditionVariable#wait): add timeout argument.
+ [ruby-talk:346154]
+
+Wed Sep 23 21:25:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (atan): refined.
+
+Wed Sep 23 17:08:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assign_in_cond): also should warn assignment to dvar in
+ conditional. [ruby-dev:39363]
+
+Wed Sep 23 13:14:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_upto): keep first width. [ruby-dev:39361]
+
+Wed Sep 23 11:28:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/instruction.rb (make_header_prepare_stack): check stack
+ overflow. [ruby-core:25714]
+
+ * tool/instruction.rb (make_footer_stack_val): ditto.
+
+Wed Sep 23 05:03:36 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c (umethod_bind, rb_mod_define_method): Fix bug that
+ disallowed methods from singleton classes to be used for
+ UnboundMethod#bind, Kernel#define_singleton_method and
+ Module#define_method, even when that singleton class was of the right
+ kind_of. A patch by Shane O'Brien [ruby-core:25632]
+
+Tue Sep 22 22:56:48 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (basic_obj_respond_to): new function to fundamental
+ behavior for #respond_to?
+
+ * vm_method.c (basic_obj_respond_to): calls #respond_to_missing
+ method if overridden, to check responsiveness of methods
+ implemented by #method_missing.
+
+Tue Sep 22 16:34:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_table_entry, st_get_key): use st_index_t.
+
+Tue Sep 22 16:28:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regenc.h (PosixBracketEntryType): constified.
+
+ * regenc.h (PosixBracketEntryInit): suppress warnings.
+
+ * regerror.c (onig_error_code_to_str, onig_snprintf_with_pattern):
+ fixed type.
+
+ * regparse.c (st_str_end_key, str_end_cmp, str_end_hash):
+ constified.
+
+ * tool/transcode-tblgen.rb (transcode_generated_code): fixed type.
+
+Tue Sep 22 10:29:06 2009 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_chunk): new method Enumerable#chunk.
+ * enum.c (enum_slice_before): new method Enumerable#slice_before.
+ [ruby-dev:38392] [ruby-dev:39240]
+
+Tue Sep 22 05:58:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c, cont.c, gc.c, insns.def, iseq.c, iseq.h, process.c,
+ thread.c, vm.c, vm_core.h, vm_dump.c, vm_eval.c,
+ vm_insnhelper.c, vm_method.c, template/insns_info.inc.tmpl,
+ tool/instruction.rb: fixed types.
+
+Tue Sep 22 05:04:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/{ludcmp,math}.rb: depend on
+ bigdecimal.
+
+ * ext/bigdecimal/lib/bigdecimal/*.rb: made module functions.
+
+Tue Sep 22 04:47:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValue): support conversion from
+ Rational. [ruby-core:25697]
+
+Tue Sep 22 04:43:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (INSNS): depend on tools.
+
+Tue Sep 22 01:10:22 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * ossl_ocsp.c (ossl_ocspres_to_der): Bug fix in Response#to_def.
+ Patch by Chris Chandler [ruby-core:18411]
+
+Tue Sep 22 01:10:02 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * ossl_config.c (ossl_config_add_value_m, ossl_config_set_section):
+ Check if frozen (or untrusted for $SAFE >= 4) [ruby-core:18377]
+
+Mon Sep 21 17:12:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_binding): allow proc from method. [ruby-core:25589]
+
+ * vm.c (collect_local_variables_in_env): block iseq can be NULL.
+
+Mon Sep 21 10:50:37 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (rb_time_succ): make Time#succ obsolete since time is not
+ a discrete value.
+
+ * range.c (discrete_object_p): treat time objects specially to
+ determine discrete values, since time objects have #succ yet are
+ discrete (for now at least).
+
+Mon Sep 21 10:13:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_new, cont_capture, fiber_t_alloc): needs already
+ running thread. cf. [ruby-core:25681]
+
+Mon Sep 21 00:07:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb (sin, cos, atan, exp, log):
+ improved precision and performance. based on a patch from Makoto
+ Yamashita in [ruby-core:25600] and [ruby-core:25602].
+
+Sun Sep 20 11:11:34 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * struct.c (rb_struct_equal, rb_struct_eql): Handle comparison of
+ recursive structures [ruby-core:24759]
+
+ * range.c (range_eq, range_eql): ditto for ranges
+
+Sat Sep 19 17:46:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (ENABLE_VM_OBJSPACE): socklist needs st_table in
+ rb_w32_sysinit(), before object space initialization.
+
+Sat Sep 19 17:32:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (GlobPathValue), file.c (rb_get_path_check): path names
+ must be ASCII compatible.
+
+Sat Sep 19 00:02:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_type): forward declaration to suppress a
+ warning. a patch from Naohisa Goto at [ruby-dev:39350]
+
+Fri Sep 18 23:59:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (GlobPathValue): adjust return types. based on a patch
+ from Naohisa Goto at [ruby-dev:39350].
+
+Fri Sep 18 23:51:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): entry regexp object before its encoding
+ name. [ruby-core:25625]
+
+Fri Sep 18 16:29:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (eval.o): needs vm.h.
+
+ * eval.c (ruby_cleanup): destruct current VM before exit.
+
+ * gc.c (rb_objspace_free): free object space.
+
+ * vm.c (ruby_vm_destruct): destruct and free VM struct.
+
+Fri Sep 18 16:15:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each), parse.y (stmt, arg): arg_concat()
+ on op_asgn was inversed. [ruby-core:25629] [Bug #2050]
+
+Fri Sep 18 16:06:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (GlobPathValue): glob allows null bytes as separators.
+
+Fri Sep 18 10:11:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * doc/re.rdoc: use rdoc mode.
+
+ * misc/rdoc-mode.el: added.
+
+Fri Sep 18 09:02:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc#parse_files): don't branch by
+ RUBY_VERSION.
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc#parse_files): emacs local variables
+ are delimited by a semicolon. supported Vim style.
+
+Fri Sep 18 07:06:41 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/fileutils/test_fileutils.rb: add a test for [ruby-dev:39345]
+
+Fri Sep 18 06:47:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (push_glob): str should be a string always.
+
+ * dir.c (rb_push_glob, dir_globs): use #to_path to convert non-
+ string values. cf. [ruby-dev:39345]
+
+Fri Sep 18 06:36:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (rm_f, rm_rf): FileUtils.rm can take an array.
+ [ruby-dev:39345]
+
+ * lib/mkmf.rb (create_header): open in binmode.
+
+Thu Sep 17 18:34:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (vm_xrealloc): free as like standard free if size is zero.
+
+Thu Sep 17 15:41:02 2009 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h: use rb_node_newnode() directly.
+
+Thu Sep 17 15:01:32 2009 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c: removed.
+
+ * README.EXT: ditto.
+
+ * README.EXT.ja: ditto.
+
+Thu Sep 17 13:50:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_s_debug_set): set level, not only boolean.
+
+Thu Sep 17 13:12:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser/ruby.rb (RDoc::Parser::Ruby): parse also rdoc
+ files.
+
+ * doc/re.rdoc: renamed from re.rb.
+
+Thu Sep 17 09:37:28 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * doc/re.rb: New document for Ruby's fork of Oniguruma.
+ written by Run Paint Run Run [ruby-core:25420]
+
+ * re.c: import document in doc/re.rb.
+
+ * .document: add doc/re.rb.
+
+Thu Sep 17 06:03:40 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (Matrix#rank): Two bug fixes. One made
+ Matrix[[0,0],[0,0],[1,0]].rank raise a NoMethodError while the other
+ one had Matrix[[0,1],[0,0],[1,0]].rank raise a TypeError.
+
+Thu Sep 17 06:02:04 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Optimizations
+
+Thu Sep 17 00:36:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mdump): error message refined.
+
+Wed Sep 16 19:27:43 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_thread.rb (TestThread#test_recursive): remove
+ implementation dependent test.
+
+Wed Sep 16 17:42:52 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): install-capi needs docdir. And,
+ mandir, infodir and ridir are also depend on datadir like docdir.
+
+Wed Sep 16 17:20:49 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (Matrix#/): Fix obvious bug
+
+Wed Sep 16 16:59:34 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (DOCTARGETS): rdoc is default.
+
+Wed Sep 16 16:27:40 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: typo.
+
+Wed Sep 16 16:20:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CAPITARGET): enable iff doxygen is available.
+
+ * configure.in (INSTALLDOC): enable if rdoc or doxygen are enabled.
+
+ * common.mk (docs): target to make documents.
+
+ * Makefile.in, win32/Makefile.sub (install-{all,nodoc}): trigger
+ by $(INSTALLDOC) from install.
+
+Wed Sep 16 13:39:10 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (determinant): Bug fix where determinant failed on
+ some matrices [ruby-core:23597]
+
+Wed Sep 16 13:30:20 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: trivial optimizations
+
+Wed Sep 16 13:15:17 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * template/Doxyfile.tmpl: RbConfig::CONFIG['DOT'] is sometimes nil.
+
+Wed Sep 16 10:14:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (rb_protect, rb_jump_tag): added.
+
+Wed Sep 16 10:12:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (main): makes also encs.
+
+Wed Sep 16 06:30:07 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * thread.c (rb_exec_recursive_outer, rb_exec_recursive): Added method
+ to short-circuit to the outermost level in case of recursion
+
+ * test/ruby/test_thread.rb (test_recursive_outer): Test for above
+
+ * hash.c (rb_hash_hash): Return a sensible hash for in case of
+ recursion [ruby-core:24648]
+
+ * range.c (rb_range_hash): ditto
+
+ * struct.c (rb_struct_hash): ditto
+
+ * array.c (rb_array_hash): ditto
+
+ * test/ruby/test_array.rb (test_hash2): test for above
+
+Wed Sep 16 06:17:33 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * vm_eval.c (rb_catch_obj, rb_catch, rb_f_catch): No longer use the
+ obsolete function rb_iterate.
+
+Tue Sep 15 21:48:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (--enable-frame-address): removed.
+
+Tue Sep 15 15:21:01 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{configure.bat,Makefile.sub} (RDOCTARGET): the meaning of this
+ macro was changed at r24923.
+
+Tue Sep 15 15:16:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (install-rdoc), configure.in (RDOCTARGET): removed
+ circular dependency. [ruby-dev:39339]
+
+Tue Sep 15 15:09:13 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat: need a space before a tab to output the tab by
+ echo.
+
+Tue Sep 15 14:24:52 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_split_m): use rb_isspace when the
+ string may be ASCII-incompatible.
+
+ * string.c (rb_str_lstrip_bang): ditto.
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+Tue Sep 15 12:12:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_USE_BUILTIN_FRAME_ADDRESS): check after real
+ target CPU is set.
+
+ * configure.in (RUBY_UNIVERSAL_ARCH): check real target CPU after
+ AC_PROG_CC.
+
+Tue Sep 15 06:42:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (install-all): target to install all.
+
+ * tool/rbinstall.rb (parse_args): accept all install targets.
+
+ * tool/rbinstall.rb (parse_args): show help message and exit if
+ rbconfig could not load.
+
+Tue Sep 15 04:25:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RDOCTARGET): use install-all. [ruby-dev:39334]
+
+Tue Sep 15 03:00:35 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lstrip_bang): use ascii_isspace(). [ruby-dev:39322]
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+ * string.c (rb_str_split_m): ditto.
+
+Mon Sep 14 16:39:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c, parse.y: fixed types.
+
+ * node.h (nd_line): limit to int.
+
+Mon Sep 14 11:23:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, common.mk, */configure.bat (rdoc): make before
+ install if rdoc is enabled. [ruby-dev:39325]
+
+Mon Sep 14 10:56:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (check-ruby): run all test of ruby itself.
+
+Mon Sep 14 10:44:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_TYPE_P): should not use BUILTIN_TYPE for
+ special constants.
+
+Mon Sep 14 10:08:19 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): use rb_enc_mbc_to_codepoint
+ because we already knew char is found and got length.
+
+Mon Sep 14 09:59:03 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (NUM2INT, NUM2LL, INT2NUM, UINT2NUM),
+ (LONG2NUM, ULONG2NUM, NUM2CHR): get rid of backward references of
+ macros. the code couldn't compile by VC.
+
+Mon Sep 14 08:33:11 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/net/http.rb (each_*): return enumerator if no block present.
+ Patch by Arthur Schreiber [ruby-core:18310]
+
+Mon Sep 14 06:42:21 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/cgi/cookie.rb (value): Keep CGI::Cookie#value in sync with the
+ cookie itself. Based on a patch by Arthur Schreiber [ruby-core:17634]
+
+Mon Sep 14 05:21:12 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/net/http.rb (fetch): Handle properly default values; a patch by
+ Arthur Schreiber [ruby-core:18308]
+
+Mon Sep 14 04:07:09 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/set.rb (==): Optimization; patch by Arthur Schreiber [ruby-core:17203]
+
+Mon Sep 14 03:30:23 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/pre-build: added rule to generate id.h for Symbian build.
+
+ * symbian/configure.bat: fixed harmless error message.
+
+Sun Sep 13 22:18:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_mod_remove_const): do not change VM state when an
+ exception will occur.
+
+Sun Sep 13 21:25:01 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (oletypelib_get_libattr): some refactoring
+ by adding oletypelib_get_libattr.
+
+Sun Sep 13 20:55:19 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (oletypelib_get_typelib): some refactoring
+ by adding oletypelib_get_typelib.
+
+Sun Sep 13 20:18:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_sflag, proc_options, load_file_internal): fixed
+ types.
+
+Sun Sep 13 19:39:59 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: some refactoring.
+
+Sun Sep 13 19:38:34 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): no need to define DATA when error.
+
+Sun Sep 13 18:48:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XLDFLAGS): link startup code with ObjC support.
+
+Sun Sep 13 13:38:00 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * thread.c (recursive_*): refactored the access to the inspect
+ table used by rb_exec_recursive_*. The functions recursive_push,
+ pop and check now assume a valid hash table as their first
+ argument. Added documentation.
+
+Sun Sep 13 12:07:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (SYM2ID): needs parens.
+
+ * include/ruby/ruby.h (NUM2INT, NUM2LL, INT2NUM, UINT2NUM),
+ (LONG2NUM, ULONG2NUM, NUM2CHR, rb_type_p, rb_special_const_p):
+ GCC specific optimization.
+
+Sun Sep 13 11:06:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI::Meta#content_type_parse): strip quotes.
+
+Sun Sep 13 09:38:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/prime.rb (EratosthenesGenerator#initialize): call super.
+ (TrialDivisionGenerator, Generator23): ditto. [ruby-core:25539]
+
+Sun Sep 13 09:34:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_add_method_def): no warning for inherited
+ method.
+
+Sun Sep 13 08:30:30 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: fix WIN32OLE_TYPELIB.new when the 1st
+ argument is the non-registered file.
+
+Sun Sep 13 02:08:43 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: change members of iseq_inline_cache_entry.
+ make cache value members to one union member "ic_value".
+
+ * insns.def: ditto.
+
+ * vm_insnhelper.c: ditto.
+
+Sun Sep 13 01:15:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (URI::FTP#buffer_open): fix the %2F handling.
+
+Sun Sep 13 00:46:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (CALL_METHOD_HOOK): refined with macro.
+
+ * vm_method.c (rb_remove_method_id): no definition body is
+ undefined.
+
+ * vm_method.c (rb_add_method, rb_add_method_me): call method added
+ hook after definition. [ruby-core:25536]
+
+ * vm_method.c (rb_alias): hooks are called from rb_add_method_def.
+
+Sat Sep 12 22:47:24 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (URI::FTP#buffer_open): use the port specified in
+ the URI.
+
+Sat Sep 12 17:31:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (GCC): subst for GCC depending extension libraries.
+
+Sat Sep 12 07:52:59 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): initialize result
+ variant value.
+
+Fri Sep 11 21:52:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * NEWS: update for 1.9.2. based on a patch from Run Paint Run Run
+ in [ruby-core:25534].
+
+Fri Sep 11 21:38:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check for real target cpu on darwin 10.
+
+Fri Sep 11 18:51:57 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/fileutils: use require_relative to require fileasserts.
+
+Fri Sep 11 14:22:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (debugflags): use gdb by default on linux and
+ darwin.
+
+ * configure.in (XLDFLAGS): keep ARCHFILE macro on AIX.
+
+ * configure.in (RUBY_REPLACE_TYPE): define typename to default
+ type if the latter is found.
+
+Fri Sep 11 13:57:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (fstat): override if large file support is
+ enabled.
+
+Fri Sep 11 11:33:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/config.{guess,sub}: updated to automake-1.11.
+
+Fri Sep 11 10:38:33 2009 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPHeader::encode_kvpair): also call to_s
+ to k. A patch from swdyh <youhei@gmail.com>
+ http://github.com/swdyh/ruby/tree/c847f43c2ccb679b9ff728f8b1b16c6ceeb57f39
+
+Fri Sep 11 09:45:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (aix_loaderror): get rid of using uninitialized value in the
+ case loadquery fails. fixed wrong index variable usage. see
+ [ruby-core:25479].
+
+Fri Sep 11 07:52:43 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * unicode.c (onigenc_unicode_property_name_to_ctype):
+ ignore case of properties.
+
+ * tool/enc-unicode.rb: downcase properties list.
+
+ * enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ follow above.
+
+Fri Sep 11 05:00:19 2009 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h (rb_data_type_t): Add comments.
+ And add a member variable "data", a multi-purpose storage
+ area for rb_data_type.
+
+Fri Sep 11 02:14:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/dl: use require_relative to require test_base.rb.
+
+Fri Sep 11 02:06:44 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (rb_char_to_option_kcode): ASCII-8BIT should
+ also delay.
+
+ * re.c (parser_regx_options): return rb_ascii8bit_encindex on
+ ASCII-8BIT. [ruby-dev:39300]
+
+Fri Sep 11 01:14:00 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/net/http.rb (fetch): rdoc fix, patch by Arthur Schreiber.
+ [ruby-core:18309].
+
+Thu Sep 10 23:00:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): fix for parallel execution.
+ [ruby-core:25509]
+
+Thu Sep 10 21:22:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/dl/test_cptr.rb (test_free=): test SEGV at first.
+ [ruby-dev:39269]
+
+Thu Sep 10 21:20:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): Don't use
+ AssertionMessage.
+
+Thu Sep 10 15:59:05 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (UNKNOWN_ESC_WARN): added.
+
+ * regparse.c (conv_backslash_value): Warn unknown
+ escaped chars in regexp. [ruby-dev:39104]
+
+Wed Sep 9 22:02:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#copy_file): open the source
+ file first to ensure it can be copied. [ruby-core:25498]
+
+Wed Sep 9 21:20:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_data_type): typed.
+
+ * ext/dl/cfunc.c (dlcfunc_data_type): typed.
+
+ * ext/dl/cptr.c (dlptr_data_type): ditto.
+
+ * ext/dl/handle.c (dlhandle_data_type): ditto.
+
+Wed Sep 9 17:17:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (parser_regx_options): only one kcode should effect
+ options [ruby-core:25411]
+
+Wed Sep 9 15:46:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_feature_provided): fixed for autoloading extension
+ library without suffix.
+
+Wed Sep 9 15:24:32 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * include/ruby/st.h : revert previous commit.
+
+ * ext/objspace/objspace.c : remove st_memsize declare.
+
+Wed Sep 9 14:07:19 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * include/ruby/st.h : fix duplicate st_memsize declare.
+
+Wed Sep 9 13:33:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_autoload): initialize typed data.
+
+Wed Sep 9 13:10:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_free_table): constified.
+
+Wed Sep 9 13:09:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_data_type): typed.
+
+ * enumerator.c (enumerator_data_type): typed.
+ (yielder_data_type, generator_data_type): ditto.
+
+ * error.c (name_err_mesg_data_type): typed.
+
+ * file.c (stat_data_type): typed.
+
+ * thread.c (thgroup_data_type, mutex_data_type, barrier_data_type):
+ typed.
+
+ * time.c (time_data_type): typed.
+
+ * transcode.c (econv_data_type): typed.
+
+ * variable.c (autoload_data_type): typed.
+
+Wed Sep 9 11:11:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_data_type_struct): constified dsize.
+
+Wed Sep 9 11:07:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_memsize): fixed wrong expression on IA64.
+
+Wed Sep 9 10:51:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_restore_1, rb_cont_call): should be Fiber.
+
+Wed Sep 9 00:27:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_data_type, fiber_data_type): typed.
+
+Tue Sep 8 22:37:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb, lib/tmpdir.rb (Tmpname): extracted new module.
+ [ruby-dev:39197]
+
+Tue Sep 8 22:18:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_init_*table_with_size): use st_index_t.
+
+ * include/ruby/st.h (st_hash_func): use st_index_t.
+
+Tue Sep 8 21:48:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_mark): mark callers iseqs. [ruby-core:25474]
+ [Bug #2062]
+
+Tue Sep 8 11:53:58 2009 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_mark): no need to mark inline cache entries.
+
+ * insns.def (onceinlinecache, setinlinecache): save a value
+ to mark cached value.
+
+Tue Sep 8 08:32:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/dl/test_{cfunc,ptr}.rb: added tests from Aaron Patterson.
+ see [ruby-dev:39249].
+
+Mon Sep 7 17:22:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_tell): adjustment for ungotten data.
+
+Mon Sep 7 17:13:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_encname_bom_p): removed magic number.
+
+Mon Sep 7 12:26:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/inspector.rb (IRB::INSPECTORS.def_inspector): support
+ object without #inspect defined. a patch from Daniel
+ Bovensiepen. [ruby-core:25200]
+
+Mon Sep 7 05:38:34 2009 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_*): add IC operands.
+
+ * vm_insnhelper.h (CALL_SIMPLE_METHOD): add a version which
+ use an inline cache. USE_IC_FOR_SPECIALIZED_METHOD macro
+ switches the behaviour. This change also removes
+ CALL_SIMPLE_METHOD_IC() macro.
+
+ * tool/instruction.rb: fix elimination process to ignore
+ variable "ic".
+
+Mon Sep 7 05:21:09 2009 Koichi Sasada <ko1@atdot.net>
+
+ * Makefile.in, common.mk: move a id.h generation rule.
+
+Mon Sep 7 05:07:59 2009 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: remove RUBY_VERSION output.
+
+Mon Sep 7 05:06:16 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c: rename macro name ENABLE_IC_FOR_IVAR
+ to USE_IC_FOR_IVAR.
+
+Mon Sep 7 03:21:40 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.escape): obsoleted.
+
+ * lib/uri/common.rb (URI.unescape): ditto.
+
+Sun Sep 6 18:13:54 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.h (CALL_SIMPLE_METHOD_IC): make a macro
+ invoke simple method with inline cache entry.
+
+ * insns.def (opt_length, opt_size): fix to use inline method cache.
+
+Sun Sep 6 17:47:21 2009 Koichi Sasada <ko1@atdot.net>
+
+ * template/id.h.tmpl: fix this.
+
+ * id.h: removed. Because this file is generated automatically.
+
+Sun Sep 6 17:31:28 2009 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_specialized_instruction), insns.def (opt_size):
+ optimize #size methods (by specialized instruction).
+
+ * id.c, id.h, vm.c, vm_insnhelper.h: ditto.
+
+Sun Sep 6 16:13:06 2009 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (setinstancevariable), vm_insnhelper.c (vm_setivar):
+ fix to use inline cache (trivial optimization).
+
+Sun Sep 6 10:34:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c: fixed rdoc, a patch from Nobuhiro IMAI at [ruby-core:25433].
+
+Sun Sep 6 05:19:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c: Add rdoc for ARGF.
+ contributed by Run Paint Run Run. [ruby-core:23854]
+
+Sat Sep 5 15:21:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): op_asgn to aref should return rhs.
+ [ruby-core:25387]
+
+Sat Sep 5 10:38:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): &&= and ||= should return rhs.
+ [ruby-dev:39163] (#1996), [ruby-core:25143]
+
+Sat Sep 5 08:51:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (update_char_offset): position should be long.
+
+ * re.c (match_hash, match_equal): new methods. [ruby-core:24748]
+
+ * re.c (reg_match_pos, rb_reg_eqq, rb_reg_s_quote): get rid of use
+ VALUE as int.
+
+Fri Sep 4 20:40:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (round): added declaration. [ruby-dev:39222]
+
+Fri Sep 4 06:15:39 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (Init_Dir): alias Dir#path to Dir#to_path. [ruby-core:25326]
+
+Fri Sep 4 04:49:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): fixed rdoc. [ruby-core:25332]
+
+Fri Sep 4 04:46:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/httpservlet/abstract.rb (do_OPTIONS): method names
+ are symbols now. [ruby-core:24580]
+
+Thu Sep 3 17:56:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (literal_concat_gen): concat body from dstr instead of
+ nd_next. [ruby-core:25284]
+
+Wed Sep 2 16:49:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * math.c (math_gamma): get rid of direct comparison between too
+ big double and integer, with gcc on x86_64. [ruby-core:25257]
+
+Wed Sep 2 13:47:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * math.c (domain_check): simplified.
+
+Wed Sep 2 11:32:24 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (obj_free): fix to free method table (fix memory leak).
+
+Wed Sep 2 07:42:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/instruction.rb (RubyVM::InstructionsLoader#make_stackcaching_insns):
+ simplified.
+
+Wed Sep 2 02:32:46 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/common.rb (NaN): Change definition
+ of NaN to 0.0/0 for 1.8/1.9 compatibility.
+
+Wed Sep 2 01:16:32 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Update to JSON 1.1.9.
+
+Tue Sep 1 19:56:28 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (eval_string_with_cref): fix to check local_table_size.
+ [ruby-dev:39205] [Bug #2024]
+
+Mon Aug 31 16:20:41 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * class.c (make_singleton_class): variable name changed.
+ removed an unnecessary conditional.
+
+Mon Aug 31 14:17:09 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * class.c: refactored singleton class related matters.
+ Handles eigenclasses and plain classes transparently.
+
+ (make_metaclass): renamed from make_metametaclass.
+ (METACLASS_OF): new utility macro
+ (META_CLASS_OF_CLASS_CLASS): ditto.
+ (ENSURE_EIGENCLASS): ditto.
+ (make_singleton_class): extracted from rb_singleton_class.
+ (boot_defclass): moved from object.c
+ (Init_class_hierarchy): extracted from Init_Object.
+ (rb_make_metaclass): refactored.
+ (singleton_class_of): extracted from rb_singleton_class.
+ (rb_singleton_class): refactored.
+ (rb_define_singleton_method): it needs a metaclass only
+ but not its metametaclass.
+
+ * object.c: booting class hierarchy was moved to class.c
+ for keeping dependency between compilation units least.
+ (Init_Object): extracting the booting into
+ Init_class_hierarchy.
+ (boot_defclass): moved to class.c.
+
+Sun Aug 30 23:44:09 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): use mktime for the first guess.
+
+Sun Aug 30 16:38:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_enc_symname2_p): not depend on nul terminator.
+
+Sun Aug 30 14:11:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: dependencies updated.
+
+Sun Aug 30 13:00:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (add): shortcut implemented for fixnums.
+ (sub): ditto.
+ (mul): ditto.
+
+Sun Aug 30 10:24:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (eq): apply RTEST.
+ (ne): ditto.
+ (add): avoid method dispatch for bignums.
+ (sub): ditto.
+ (mul): ditto.
+ (mod): ditto.
+
+Sun Aug 30 09:45:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigmul1_single): new function specialized respect to
+ multiply two single digit bignums.
+ (bigmul0): use bigmul1_single.
+
+Sun Aug 30 03:59:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * timev.h (TIME_SCALE): defined as 1000000000.
+ (struct vtm): subsec is replaced by subsecx.
+ subsec * TIME_SCALE == subsecx.
+
+ * time.c: avoid rational in most cases.
+ (struct time_object): timev is replaced by timexv.
+ timev * TIME_SCALE == timexv.
+
+Sun Aug 30 03:17:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (init_leap_second_info): use TIMET_MAX.
+
+Sun Aug 30 01:15:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_read_all): use gzfile_newstr;
+ set and convert its encoding. [ruby-dev:38304]
+
+Sat Aug 29 20:40:02 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * vm_eval.c (rb_call0): gets rid of checking method cache twice.
+
+ * method.h (rb_get_method_entry): added a prototype of the function.
+ (rb_method_entry_without_cache): more friendly name.
+
+Sat Aug 29 12:16:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (Dir.mktmpdir): rolled back r24699. [ruby-dev:39193]
+
+Sat Aug 29 03:27:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#make_tmpname): removed thread race
+ condition.
+
+ * lib/tmpdir.rb (Dir.mktmpdir): ditto.
+
+Fri Aug 28 20:29:34 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb (Tempfile#callback): Debug information should be
+ output to stderr, not stdout; pointed out by akira yamada.
+ cf. [ruby-dev:39072]
+
+Fri Aug 28 20:34:24 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: use SafeStringValue instead of
+ Check_SafeStr.
+
+Fri Aug 28 13:30:43 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (do_select): rollback r24680. void struct initializer is
+ invalid.
+
+Fri Aug 28 11:45:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * method.h (rb_method_definition_t): split from rb_method_entry_
+ to deal aliases. [ruby-dev:39165]
+
+ * proc.c (struct METHOD): contains rb_method_entry_t copy.
+
+Fri Aug 28 10:21:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_mark): skip outdated cache entries.
+
+ * vm_core.h ({GET,INC}_VM_STATE_VERSION): moved from
+ vm_insnhelper.h.
+
+Fri Aug 28 07:25:25 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (next_i): typo fixed (reached at end -> reached an
+ end). pointed out by James Edward Gray II at LoneStar RubyConf.
+
+Thu Aug 27 18:31:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_remove_method_id): exported.
+
+ * numeric.c (num_sadded): fix for non-ascii method name.
+
+Thu Aug 27 14:32:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_preprocess_dregexp): set encoding as ASCII-8BIT
+ when /n is specified and the embedded string is escaped text.
+
+Thu Aug 27 13:51:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): random integer can be a fixnum for
+ bignum range. [ruby-dev:39173]
+
+Thu Aug 27 08:16:34 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/strscan/strscan.c (strscan_set_string): set string should not be
+ duped or frozen, because freezing it causes #concat method failure,
+ and unnecessary to dup without freezing. a patch from Aaron
+ Patterson at [ruby-core:25145].
+
+Thu Aug 27 02:06:11 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (enc/unicode/name2ctype.kwd):
+ remove rules to generate name2ctype.kwd from
+ UnicodeData.txt and Scripts.txt.
+ if you want to generate, use tool/enc-unicode.rb.
+
+Thu Aug 27 02:00:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * unicode.c (PROPERTY_NAME_MAX_SIZE): use MAX_WORD_LENGTH.
+
+Wed Aug 26 23:59:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): refined error message.
+
+ * random.c (random_rand): fixed for edge cases of ranges.
+ [ruby-dev:39166]
+
+Wed Aug 26 21:49:23 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/tempfile.rb: add documents from Hongli Lai's fork.
+ cf [ruby-core:25131].
+
+Wed Aug 26 19:51:13 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/mkconfig.rb (program_transform_name): fix for multiple trans
+ rules for autoconf 2.61 or earlier.
+
+ * tool/rbinstall.rb (program_transform_name): ditto.
+
+Wed Aug 26 19:20:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_rand): unified random_int and random_float.
+ [ruby-dev:39158]. and fixes [ruby-core:24655], [ruby-core:24677],
+ [ruby-core:24679].
+
+Wed Aug 26 18:59:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/test_tempfile.rb: merged from Hongli Lai's fork.
+ cf [ruby-core:25131].
+
+Wed Aug 26 18:49:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#close!): should not undefine finalizer
+ by just unlink.
+
+Wed Aug 26 17:00:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb (program_transform_name): fix for autoconf 2.61
+ or earlier.
+
+Wed Aug 26 14:34:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#close!, Tempfile#path): added side
+ notes from Hongli Lai's fork.
+
+ * lib/tempfile.rb (Tempfile#unlink, Tempfile.callback): do nothing
+ any more once unlinked.
+
+Wed Aug 26 13:48:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#unlink): reverted r23494, since the
+ usage in RubyInline is considered wrong.
+
+Wed Aug 26 12:36:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (collect_local_variables_in_env): skips internal variables.
+ [ruby-core:25125]
+
+Tue Aug 25 23:51:07 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb: added for generate name2ctype.kwd.
+ contributed by Run Paint Run Run [ruby-core:24775]
+
+ * enc/unicode.c (CodeRanges): move definitions to name2ctype.h.
+
+ * enc/unicode/name2ctype.h.blt, enc/unicode/name2ctype.kwd,
+ enc/unicode/name2ctype.src: updated to v5.1.
+
+ * enc/unicode/UnicodeData.txt, enc/unicode/Scripts.txt: added v5.1.
+
+ * Makefile.in: add rule to generate name2ctype.kwd from
+ UnicodeData.txt and Scripts.txt.
+
+Tue Aug 25 22:31:51 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (MKDIR_P): Set 'mkdir -p' to MKDIR_P
+ when AC_PROG_MKDIR_P doesn't set MKDIR_P.
+
+Tue Aug 25 17:38:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_clone, bigmul1_normal, bigdivrem): trivial
+ optimization.
+
+ * bignum.c (big2dbl): truncates zero digits to get rid of possible
+ underflow.
+
+Tue Aug 25 12:22:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (enc/unicode/name2ctype.h): explicitly ignores the
+ result of diff and turns -e option off, because *BSD make passes
+ it by default.
+
+Tue Aug 25 02:16:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (DLDFLAGS): use linker_flag and changed undefined
+ and multiply_defined behaviors. cf [ruby-core:25086].
+
+Mon Aug 24 21:31:37 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb, test/rss/test_maker_2.0.rb: fix a bug
+ that RSS Maker doesn't accept 'false' as guid's isPermaLink.
+ Reported by Joe Holt. Thanks!!!
+
+Mon Aug 24 18:58:56 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/missing.h (vsnprintf): rollback a part of r24179, because
+ it's meaningless.
+
+Mon Aug 24 16:35:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_delete_safe): deals with packed entries.
+ [ruby-core:25080]
+
+ * st.c (st_cleanup_safe): ditto. [ruby-core:25081]
+
+Mon Aug 24 13:24:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (MAKEDIRS): define.
+
+ * common.mk (capi): using $(MAKEDIRS), so depends on $(PREP).
+
+Mon Aug 24 13:14:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): set cross_compiling only when
+ universal binary.
+
+Mon Aug 24 12:55:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (enc/unicode/name2ctype.h): use md instead of
+ $(MAKEDIRS).
+
+Sun Aug 23 15:22:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (main): "usage" description updated.
+
+Sun Aug 23 15:12:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (Dir.mktmpdir): updated to latest.
+ (in_temporary_working_directory): temporary directory name changed.
+
+Sun Aug 23 00:56:13 2009 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (rb_thread_schedule): don't recur infinitely.
+ (rb_threadptr_execute_interrupts): ditto.
+ [ruby-dev:38060]
+
+Sat Aug 22 15:07:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/syck/rubyext.c (id_hash_new): new function to create a hash
+ which key is compared by object id.
+ (syck_emitter_reset): use id_hash_new for bonus->data.
+
+ * lib/yaml.rb (YAML.quick_emit): give the object itself to emitter.
+ don't use object_id and hash.
+
+Sat Aug 22 13:05:22 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in: use CP and MV macros.
+
+Sat Aug 22 01:29:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (rm_f, rm_rf): pass the last hash through if exists.
+ [ruby-dev:39153]
+
+Sat Aug 22 00:48:08 2009 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c (ary2sv): add dup argument.
+ (enumerator_next): call ary2sv with dup=0.
+ (enumerator_peek): call ary2sv with dup=1 to return duplicated array.
+ (enumerator_peek_values_m): new function to return duplicated array.
+ (Init_Enumerator): use enumerator_peek_values_m as
+ Enumerator#peek_value.
+
+Sat Aug 22 00:03:19 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_check_deadlock): decrease number of sleepers before
+ deadlock detection because the deadlock exception makes main thread
+ run. [ruby-dev:39142]
+
+Fri Aug 21 22:34:58 2009 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c (get_next_values): extracted from
+ enumerator_next_values.
+ (enumerator_next_values): use get_next_values.
+ (enumerator_peek_values): ditto.
+
+Fri Aug 21 17:01:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/unicode/name2ctype.h: split from enc/unicode.c and made a
+ perfect hash.
+
+Fri Aug 21 15:13:08 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/io.h, io.c (FMODE_SETENC_BY_BOM):
+ renamed from FMODE_STRIP_BOM.
+
+Thu Aug 20 01:24:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_fmode_modestr): change modestr syntax for BOM
+ to "BOM|UTF-*". [ruby-dev:39106]
+
+ * io.c (parse_mode_enc): ditto.
+
+Fri Aug 21 15:01:35 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): use rb_prep_terminal
+ only on Windows.
+
+Fri Aug 21 07:25:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/gemdirs.rb: split from lib/rdoc/ri/paths.rb to ge
+ rid of loading rubygems and searching all gems always.
+
+Fri Aug 21 07:14:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_PROGRAM_VERSION, RUBY_RELEASE_DATE): extracts
+ from version.h for cross-compiling.
+
+ * template/fake.rb.in (RUBY_VERSION, RUBY_DESCRIPTION): use above.
+
+Fri Aug 21 00:08:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths): Gem::Enable has been obsolete.
+
+Thu Aug 20 23:56:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_sysopen): moved sysopen_struct from rb_sysopen_internal.
+
+Thu Aug 20 23:39:51 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (reduce_nodes_gen): preserve NODE_FL_NEWLINE flag during
+ node reducing. [ruby-core:24463]
+
+Thu Aug 20 14:39:47 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_get): add rl_prep_terminal(1).
+ incited by jitte [ruby-list:43546]
+
+Thu Aug 20 12:09:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ivar2_hash_type): disabled for now.
+
+Thu Aug 20 08:39:50 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_thread_terminate_all): do not ignore interrupt when
+ reaping threads on termination. [ruby-dev:39107]
+
+Thu Aug 20 02:32:08 2009 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c (next_init): don't clear feedvalue.
+
+Thu Aug 20 01:28:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c: implement Enumerator#{next_values,peek_values,feed}
+ and StopIteration#result. [ruby-dev:39109]
+ (struct enumerator): replace no_next by stop_exc.
+ new field feedvalue.
+ (enumerator_mark): mark feedvalue and stop_exc.
+ (enumerator_init): initialize feedvalue and stop_exc.
+ (enumerator_init_copy): initialize feedvalue.
+ (next_ii): send yield arguments as an array. return feedvalue.
+ (next_i): generate StopIteration exception here. set result.
+ (next_init): initialize feedvalue.
+ (enumerator_next_values): new method Enumerator#next_values.
+ (ary2sv): new function.
+ (enumerator_peek_values): new method Enumerator#peek_values.
+ (enumerator_feed): new method Enumerator#feed.
+ (yielder_yield): return the yield value.
+ (generator_each): return the iterator value.
+ (stop_result): new method StopIteration#result.
+
+Thu Aug 20 01:06:48 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (DEFINE_STRUCT_DIRENT): use union to allocate sufficient
+ memory space for Solaris. a patch from Naohisa GOTO
+ <ngoto at gen-info.osaka-u.ac.jp> in [ruby-dev:39132].
+ [ruby-dev:39062]
+
+ * configure.in (SIZEOF_STRUCT_DIRENT_TOO_SMALL): Solaris dirent
+ check.
+
+Wed Aug 19 11:32:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/unicode.c (CodeRanges): initialized statically.
+
+Wed Aug 19 02:54:01 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_settracefunc.rb (test_return, test_return2): add two
+ tests for [ruby-dev:38701] and [ruby-core:24463].
+
+Wed Aug 19 01:08:34 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (NODE_RETURN): fire return event at explicit return.
+ [ruby-dev:38701]
+
+Tue Aug 18 21:00:26 2009 Tanaka Akira <akr@fsij.org>
+
+ * enumerator.c (enumerator_peek): new method Enumerator#peek.
+ (enumerator_next): don't rewind at end.
+ [ruby-dev:38932]
+
+Tue Aug 18 13:46:14 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * touch test/rdoc/empty.dat to run test_rdoc_parser.rb
+
+Tue Aug 18 11:37:24 2009 wanabe <s.wanabe@gmail.com>
+
+ * vm_insnhelper.c (vm_call_cfunc): ensure hook c-return.
+ [Bug #1588]
+
+ * test/ruby/test_settracefunc.rb (TestSetTraceFunc#test_raise):
+ follow above.
+
+Tue Aug 18 01:57:00 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): treat symbols specially so that iterating
+ over symbols should work like strings. [ruby-core:24780]
+
+ * range.c (range_each): ditto.
+
+Tue Aug 18 01:21:31 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_each): should honor to_str conversion.
+
+Mon Aug 17 23:45:40 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/delta.rb: removed require 'date'. added to_c.
+
+Mon Aug 17 14:35:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lex_get_str, lex_io_gets, rb_parser_compile_string):
+ must be ascii compatible.
+
+Mon Aug 17 10:37:41 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (add_code_range_to_buf0): added with checkdup argument.
+
+ * regparse.c (add_code_range_to_buf): use above.
+
+ * regparse.c (add_code_range0): added with checkdup argument.
+
+ * regparse.c (add_code_range): use above.
+
+ * regparse.c (i_apply_case_fold): don't warn if the duplicate is
+ caused by case folding.
+
+Mon Aug 17 08:31:56 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/delta.rb: merged from date4. [experimental]
+
+ * lib/date/delta/parser.*: ditto.
+
+ * lib/date.rb: followed the above changes.
+
+Mon Aug 17 08:19:03 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (strptime): removed \v; since \s includes \v.
+
+Mon Aug 17 08:14:26 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_rationalize) added. [experimental]
+
+ * rational.c ({nurat,nilclass,integer,float}_rationalize) ditto.
+
+Mon Aug 17 08:11:53 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb: use num#i.
+
+Mon Aug 17 07:59:00 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c (flo_pow,fix_pow): may return complex number.
+
+ * bignum.c (rb_big_pow): ditto.
+
+Mon Aug 17 07:16:10 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_imaginary): num#i to return imaginary counterpart
+ of the given numeric.
+
+ * complex.c (Init_Complex): undef #i for complex numbers.
+
+Mon Aug 17 00:17:33 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/complex.rb, lib/rational.rb: added warning messages.
+
+Sun Aug 16 23:58:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yylex): should dispatch scan-event even when follows
+ just after delayed-token. [ruby-dev:37855] [Bug #1071]
+
+Sun Aug 16 22:20:16 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: reverted.
+
+Sun Aug 16 21:31:21 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/date/format.rb: suppressed a warning.
+
+ * lib/irb/ruby-lex.rb: ditto.
+
+Sun Aug 16 15:25:26 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/csv.rb: Change magic comment to US-ASCII in order to
+ make literals as US-ASCII.
+
+Sun Aug 16 10:45:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (parse_char_class, parse_exp, parse_branch),
+ (parse_subexp): fixed memory leak. a patch from Ralf Junker
+ <ralfjunker AT gmx.de> at [ruby-core:24921].
+
+Sun Aug 16 10:38:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each, vm_backtrace_push),
+ vm_eval.c (print_backtrace), vm_dump.c (bugreport_backtrace):
+ rb_backtrace_iter_func now takes VALUE as file and method names.
+
+Sun Aug 16 03:06:59 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (opt_eq_func): fix optimization bug. This issue
+ was found out and debugged with Takuto Hayashi at Security and
+ Programming camp 2009.
+
+Sun Aug 16 01:10:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (add_ctype_to_cc_by_range): fix the first
+ character bigger than sb_out was dropped.
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_posix_bracket):
+ add tests for above.
+
+Sun Aug 16 00:30:33 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/oniguruma.h
+ (ONIGENC_CTYPE_SPECIAL_MASK): added.
+ (ONIGENC_CTYPE_D): ditto.
+ (ONIGENC_CTYPE_S): ditto.
+ (ONIGENC_CTYPE_W): ditto.
+
+ * regparse.c: \d, \s and \w are now non Unicode class.
+ [ruby-dev:39026]
+ (fetch_token_in_cc): use ONIGENC_CTYPE_[DSW] for \d/\s/\w.
+ (fetch_token): ditto.
+ (add_ctype_to_cc): add routines for ONIGENC_CTYPE_[DSW].
+ (parse_exp): ditto.
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_char_class):
+ add tests for above.
+
+Sat Aug 15 10:39:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (fname, string_dvar, sym, dsym, f_arglist): removed
+ duplications.
+
+Fri Aug 14 20:03:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_check_safe_str): deprecated.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_add_{file,path}):
+ replaced deprecated function.
+
+Fri Aug 14 17:59:12 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_preprocess_dregexp): change Exception class to
+ RegexpError.
+
+ * test/ruby/test_m17n.rb (test_regexp_usascii): follow above.
+
+ * test/ruby/test_m17n.rb (test_regexp_embed): ditto.
+
+Fri Aug 14 17:17:42 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/Makefile.in (MKDIRS): revert r24525.
+
+Fri Aug 14 16:28:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/lib/digest/hmac.rb (Digest::HMAC#initialize): faster
+ code.
+
+Fri Aug 14 14:31:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rubyhdrdir): fixed typo. [ruby-dev:39079]
+
+Fri Aug 14 00:29:22 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * doc/ChangeLog-1.8.0: add forgotten entry contributed by
+ TAKAHASHI Kaoru. [ruby-dev:39065]
+
+Fri Aug 14 00:19:49 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#method_missing): __FILE__ may contain
+ multi-byte characters. a patch from Kenta Murata in [ruby-dev:39066].
+
+Thu Aug 13 21:01:03 2009 wanabe <s.wanabe@gmail.com>
+
+ * vm.c (vm_exec): returning from lambda runs ensure section.
+ [Bug #1729]
+
+Thu Aug 13 18:40:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): set cross_compiling to yes
+ only when AC_COMPUTE_INT, and inverted the arguments.
+
+Thu Aug 13 18:22:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): use AC_COMPUTE_INT instead of
+ _AC_COMPUTE_INT_COMPILE with cross compiling, since its arguments
+ have been changed at autoconf 2.64.
+
+Thu Aug 13 16:31:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (opt_case_dispatch): suppressed a warning.
+
+ * vm_insnhelper.c (opt_case_dispatch_i): ditto.
+
+Thu Aug 13 16:20:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, Makefile.in (MAKEDIRS): used MKDIR_P instead of
+ as_mkdir_p. [ruby-dev:39063]
+
+Thu Aug 13 15:37:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regenc.c (onigenc_strlen_null, onigenc_str_bytelen_null): fixed
+ infinite loop for wide encodings. reported by Ralf Junker a
+ [ruby-core:24892]. [ruby-core:24904]
+
+Wed Aug 12 21:07:46 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: if ipv6 is enabled, the version of Windows
+ must be XP or later.
+ [ruby-core:24601]
+
+Wed Aug 12 15:59:29 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (yes-test-knownbug): use RUNRUBY instead of MINIRUBY.
+
+Wed Aug 12 15:52:04 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * class.c (rb_define_module_id_under): fix the name.
+
+ * class.c (rb_define_module_under): fix for previous changes.
+
+Wed Aug 12 15:32:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_define_class_id_under, rb_define_module_id_under):
+ new functions to define a nested class/module with non-ascii
+ name.
+
+ * struct.c (make_struct): use name with encoding.
+
+ * struct.c (inspect_struct): ditto. [ruby-core:24849]
+
+Wed Aug 12 Wed Aug 12 14:54:34 2009 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm.c, vm_insnhelper.c, vm_insnhelper.h: check
+ definition of (classes)#=== for case/when optimization.
+ Fix Bug #1376 [ruby-core:23190].
+
+ * string.c (Init_String), bignum.c (Init_Bignum),
+ numeric.c (Init_Numeric): define String#===, Symbol#===,
+ Bignum#===, Fixnum#===, Float#=== as same as (classes)#==.
+
+Wed Aug 12 14:14:42 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (readdir_internal): free old temporary filename.
+ [ruby-core:24820]
+
+Wed Aug 12 12:59:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_new_frozen): must not change encoding of frozen
+ shared string. [ruby-dev:39068]
+
+Wed Aug 12 11:51:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_broken_crypt): needs more checks.
+
+Wed Aug 12 07:41:31 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): If a string is empty and
+ other's encoding is US-ASCII, returns the empty string's encoding.
+ [ruby-list:46274]
+
+Wed Aug 12 07:38:12 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (is_data_encoding): fix condition.
+
+ * encoding.c (enc_capable): ditto.
+
+Tue Aug 11 23:12:31 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (complete_frags): Monday must be suitable for %W's
+ default day.
+
+Tue Aug 11 21:42:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (num_divmod): fixed rdoc. [ruby-core:24862]
+
+Mon Aug 10 21:45:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_path2class): no deprecation.
+
+Mon Aug 10 10:57:59 2009 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: reject unused longlife gc. longlife gc target is longlife
+ NODE by method table and vm inline cache. but, fixed it at
+ r24085, r24128. so I rejected longlife gc.
+
+ * debug.c: ditto.
+
+ * include/ruby/intern.h: ditto.
+
+ * include/ruby/ruby.h: ditto.
+
+ * iseq.c: ditto.
+
+ * node.h: ditto.
+
+ * vm_insnhelper.c: ditto.
+
+ * vm_insnhelper.h: ditto.
+
+Mon Aug 10 06:55:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (class2path, w_unique, w_extended, w_class, w_uclass):
+ deal with non-ascii class path. [ruby-core:24790]
+
+ * marshal.c (r_unique, path2class, path2module, obj_alloc_by_path),
+ (r_object0): ditto.
+
+ * variable.c (rb_path_to_class): new encoding-aware function to
+ get a class from its name.
+
+Sun Aug 9 21:14:03 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb (search_tclConfig): last change isn't enough.
+ fixed it.
+
+Sun Aug 9 16:36:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ruby.imp): excluded prelude.o to get rid of circular
+ dependency. [ruby-dev:39052]
+
+Sun Aug 9 14:49:24 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (rb_big_cmp, bigsub, big_real_len, bigmul1_normal,
+ bigmul1_balance, big_split): remove BDIGITS() inside of the loops.
+ same as r24444.
+
+Sat Aug 8 17:03:21 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_ascii_compatible_p): added. [ruby-core:24793]
+ (Init_Encoding): New API Encoding#ascii_compatible?.
+
+Sun Aug 9 07:25:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/eventids2.c (token_to_eventid): added
+ keyword_do_LAMBDA. [ruby-dev:39049]
+
+Sun Aug 9 02:07:41 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/compile_prelude.rb: fixes a regexp pattern for require.
+ It had matched 'require("foo"('.
+
+Sat Aug 8 11:42:44 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigzero_p): removing BDIGITS() inside of the
+ loop. inspired by Masahiro Kanai's blog entry
+ <http://d.hatena.ne.jp/CanI/20090807/1249657492>.
+
+Sat Aug 8 06:18:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_symbol r_symlink, r_symbol, r_object0): fix for
+ non-ascii symbols. loading such symbols can cause segfaults in
+ older versions. [ruby-core:24788]
+
+Fri Aug 7 03:25:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.c (error_print): removed an extra argument.
+
+Fri Aug 7 03:22:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_exc_raise, rb_exc_fatal): nil is used to reraise.
+
+Fri Aug 7 01:49:41 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/sha2.c: The ULL suffix is not supported by
+ pre-C99 compilers, so resurrect the ULL() macro to regain
+ portability. [ruby-dev:39032]
+
+Fri Aug 7 01:35:26 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/*/extconf.rb: inttypes.h and unistd.h need not be
+ checked here. [ruby-dev:39032]
+
+Fri Aug 7 01:04:17 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb (search_tclConfig): fix logic bug.
+
+Thu Aug 6 21:18:15 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/digest/sha2/lib/sha2.rb: should require sha2.so.
+
+Thu Aug 6 21:11:40 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/digest/sha2/sha2.c (*_Final): typos.
+
+Thu Aug 6 19:46:56 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/sha2.h (BYTE_ORDER): Define BYTE_ORDER as
+ necessary. [ruby-dev:39029]
+
+Thu Aug 6 16:36:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (valid_encoding_name_p): rejects too long encoding
+ names.
+
+ * encoding.c (encoding_data_type): typed data.
+
+ * encoding.c (enc_capable, rb_enc_get_index): Symbol is encoding
+ capable.
+
+ * encoding.c (rb_enc_associate_index): cannot set encoding on
+ special constants.
+
+Thu Aug 6 15:44:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_method_entry_eq): deals with optimized method
+ properly. [ruby-core:24789]
+
+Thu Aug 6 13:30:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/base.rb (TestMkmf): was turned into a class, because
+ MiniUnit doesn't complain even if a testcase has no tests.
+
+Thu Aug 6 13:00:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (check_sizeof): added optional compiler option
+ argument. [ruby-core:24785]
+
+ * lib/mkmf.rb (create_makefile): suppressed shadowing outer local
+ variable warnings.
+
+Thu Aug 6 12:05:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/testcase.rb (Test::Unit): removes silly TestCase
+ class.
+
+Thu Aug 6 01:37:20 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/sha2.[ch]: Update to 1.0 RELEASE which fixes an
+ off-by-one bug in SHA-256 hashing. Reduce differences from
+ the original while at it. [Bug #1799]
+
+Thu Aug 6 00:09:56 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb (IPAddr#hash): Take account of netmask; submitted
+ by Nobuhiro IMAI in [ruby-dev:39011]
+
+Wed Aug 5 19:19:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): assumes -x flag if no "ruby" is in
+ the shebang line. [ruby-dev:39015]
+
+Wed Aug 5 19:11:01 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (rb_stdio_set_default_encoding): declared.
+
+Wed Aug 5 18:46:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c (ruby_dummy_gdb_enums): made public. [ruby-dev:39001]
+
+Wed Aug 5 13:49:09 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): generate numerical sequence when
+ characters in both edges are all digits. [ruby-talk:343186]
+
+Wed Aug 5 12:54:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_exc_raise, rb_exc_fatal): require exception object.
+ [ruby-core:24767]
+
+Wed Aug 5 12:39:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_longjmp): reset raised flag before fatal error.
+
+Wed Aug 5 10:20:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_preprocess_dregexp): add options to arguments.
+
+ * re.c (rb_reg_new_ary): follow above.
+
+ * re.c (rb_reg_preprocess_dregexp): change error message when
+ /.../n has a non escaped non ASCII character in non ASCII-8BIT
+ script. [ruby-dev:38524]
+
+Wed Aug 5 03:28:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): expands paths before
+ requiring. [ruby-dev:39012]
+
+Wed Aug 5 01:38:27 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/pp.rb (guard_inspect_key): untrust internal hash to prevent
+ unexpected SecurityError.
+
+ * test/ruby/test_object.rb: add a test for [ruby-dev:38982].
+
+Wed Aug 5 00:33:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser/c.rb: fixed a small error in the documentation.
+ [ruby-core:24744]
+
+Tue Aug 4 22:10:34 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (has_redirection): need to execute shell if commandline
+ includes newline. cf. [ruby-core:24560]
+
+Tue Aug 4 15:06:58 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb (IPAddr#{eql?,hash}): Add IPAddr#{eql?,hash} so
+ that an IPAddr object can be used as a hash key, a set element,
+ etc.; suggested by Nick Brown <nick@nick-brown.com>.
+
+Tue Aug 4 13:07:10 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (ONIG_SYN_WARN_CC_DUP): defined.
+ * regparse.h (ScanEnv): add warnings_flag.
+ * regparse.c (CC_DUP_WARN): defined for warn duplicated characters in
+ character class of regexp. [ruby-core:24593]
+ (add_code_range_to_buf): add CC_DUP_WARN.
+ (next_state_val): add CC_DUP_WARN.
+ (OnigSyntaxRuby): add ONIG_SYN_WARN_CC_DUP.
+ (SET_ALL_MULTI_BYTE_RANGE): add env to arguments.
+ (add_code_range): ditto.
+ (add_code_range_to_buf): ditto.
+ (not_code_range_buf): ditto.
+ (or_code_range_buf): ditto.
+ (and_code_range1): ditto.
+ (and_code_range_buf): ditto.
+ (and_cclass): ditto.
+ (or_cclass): ditto.
+ (add_ctype_to_cc_by_range): ditto.
+ (add_ctype_to_cc): ditto.
+ (parse_char_class): ditto.
+
+Tue Aug 4 12:40:45 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/encdb.c (ENC_SET_BASE): fix typo.
+ patch by ujihisa [ruby-dev:39004]
+
+Tue Aug 4 11:57:39 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eql, range_eq): fixed equality to work for
+ subclasses of Range. a patch from Marc-Andre Lafortune.
+ [ruby-core:22190]
+
+ * test/ruby/test_range.rb: add assertions for above.
+
+Tue Aug 4 09:41:11 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/big5.c (EncLen_Big5): back to original Big5 table.
+ (EncLen_Big5_HKSCS): for Big5-HKSCS.
+ (trans): add the lead byte table for Big5-HKSCS.
+ (big5_mbc_enc_len): abstract function for Big5 series.
+ (big5_mbc_enc_len): for Big5.
+ (big5_hkscs_mbc_enc_len): for Big5-HKSCS.
+ (BIG5_HKSCS_P): added.
+ (BIG5_ISMB_FIRST): add routine for Big5-HKSCS.
+ (big5_hkscs): add for Big5-HKSCS.
+
+Tue Aug 4 09:33:54 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_set_base): Add for setting base encoding
+ with their names. this is internal function.
+
+ * template/encdb.h.tmpl: specify ENC_SET_BASE for second encodings in
+ each encoding files.
+
+ * enc/encdb.c (rb_enc_set_base): add a declaration.
+ (ENC_SET_BASE): ditto.
+
+Tue Aug 4 06:30:01 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_replace): should copy compare_by_identity status as well.
+ [ruby-core:24728]
+
+Tue Aug 4 05:43:03 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (recursive_push): need to set UNTRUST. [ruby-dev:38997]
+
+Tue Aug 4 03:56:51 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tcltklib.c: fix trouble on old-style C function
+ declarations [ruby-core:22871].
+
+ * ext/tk/lib/tcltklib.c: (ruby_1_8) fix warning about RUBY_RELEASE_DATE
+
+ * ext/tk/lib/tk/multi-tk.rb: kill zombie threads.
+
+ * ext/tk/lib/tk/fontchooser.rb: fix typo and support OptionObj.
+
+ * ext/tk/lib/tk/{canvas.rb,virtevent.rb,image.rb,timer.rb}:
+ don't create unnecessary array.
+
+Mon Aug 3 22:19:24 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (rb_mod_include): fix document. [ruby-core:24675]
+
+Mon Aug 3 18:25:08 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/svr.rb: obsolete TCPserver renamed. [ruby-core:24712]
+
+ * sample/tsvr.rb: ditto.
+
+ * sample/dualstack-httpd.rb: ditto.
+
+Mon Aug 3 18:12:54 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (recursive_push): untrust internal hash to prevent
+ unexpected SecurityError. a patch from Kazuhiro NISHIYAMA.
+ Fix: #1864 [ruby-dev:38982]
+
+Mon Aug 3 17:06:05 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/README: updated. a patch from Daniel Bovensiepen.
+ [ruby-core:24693]
+
+Mon Aug 3 16:28:09 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_connect): return value was broken when some
+ error occurred.
+ [ruby-core:24234]
+
+Mon Aug 3 15:56:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (permute0): use chars for boolean array.
+
+ * array.c (rb_ary_{permutation,combination}): disallow reentrance
+ with continuation since work-buffers cannot restore.
+
+ * array.c (rb_ary_{permutation,combination,product}): must not use
+ ary_discard on strings.
+
+Mon Aug 3 06:43:25 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_hash): normalize -0.0 to 0.0. [ruby-core:24577]
+
+Mon Aug 3 00:32:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rb_random_int): arguments have to be converted to
+ integer. [ruby-core:24679]
+
+Sun Aug 2 21:04:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (literal_concat0): tail can be nil. [ruby-dev:38980]
+
+Sun Aug 2 20:09:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_combination, rb_ary_product): prevent from GC.
+
+Sun Aug 2 16:53:19 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rand.rb: add tests for Random#float's rejection
+ against Infinity and NaN.
+
+Sun Aug 2 14:20:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rand_int): prevent from GC.
+
+Sat Aug 1 19:23:27 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_trans): change condition of singlebyte
+ optimization.
+
+Sat Aug 1 18:50:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_float): rejects Infinity and NaN.
+ [ruby-core:24651]
+
+Sat Aug 1 18:34:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (gem): suppressed warnings.
+ cf: [ruby-dev:38975]
+
+Sat Aug 1 05:18:36 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_trans): can't use singlebyte optimization when
+ the replacement is multibyte. [ruby-core:24612]
+
+Fri Jul 31 18:01:34 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/securerandom.rb (SecureRandom.random_bytes): return string should
+ be ASCII-8BIT. [ruby-core:24640]
+
+Fri Jul 31 16:28:33 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_stdio_set_default_encoding): added.
+
+ * ruby.c (process_options): call rb_stdio_set_default_encoding
+ after setting default internal and external.
+
+Fri Jul 31 15:06:33 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/compile_prelude.rb: too long string literal causes compile error
+ on some platforms.
+
+Fri Jul 31 13:15:27 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * transcode.c (str_encode_bang): C99ism.
+
+Fri Jul 31 11:48:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): used more appropriate construct.
+
+Fri Jul 31 10:54:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (literal_concat_gen): reduced unnecessary node at string
+ literal concatenation with empty head dstr. [ruby-dev:38968]
+
+Fri Jul 31 02:57:39 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (literal_concat_gen): NODE_DSTR was incorrectly handled as
+ NODE_STR. [ruby-dev:38968]
+
+ * bootstraptest/test_syntax.rb: add a test for above.
+
+Fri Jul 31 00:55:48 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_module.rb (test_ancestors, test_included_modules):
+ ignore rake mixins.
+
+Fri Jul 31 00:30:54 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_call_cfunc): let set_trace_func use called_id
+ instead of original_id.
+
+Thu Jul 30 23:04:32 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gem_prelude.rb (Gem.path): uses Gem.default_path as a default value
+ so that ruby finds gems in ~/.gem/.
+ (Gem.user_home): reduced version of lib/rubygems.rb's.
+ Gem.default_path needs it.
+
+Thu Jul 30 22:28:04 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/compile_prelude.rb: replaces "require" with in-place evaluation
+ so that copy & paste for lib/rubygems/default.rb is not necessary.
+
+ * gem_prelude.rb: removes copied codes from lib/rubygems/defaults.rb.
+ uses require instead.
+
+ * common.mk (prelude.c): adds dependency for lib/rubygems/defaults.rb.
+
+Thu Jul 30 21:56:18 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rand.rb: add tests for Random class.
+
+Thu Jul 30 21:48:56 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * random.c (init_genrand): ensure invariant of mt->next and mt->left.
+ mt->next should always equal mt->state + N + 1 - mt->left.
+ In fact, 'r = Random.new(0); r == r.dup' has returned false.
+
+Thu Jul 30 21:43:41 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * random.c (random_bytes): use NUM2LONG instead of FIX2LONG because
+ Random#bytes may receive bignum.
+
+Thu Jul 30 21:39:42 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_compile_each): fix stack consistency error.
+ [ruby-core:24611]
+
+ * bootstraptest/test_method.rb: add tests for above.
+
+Thu Jul 30 18:39:39 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: added check for frozen string for encode! (see Bug #1836)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+
+Thu Jul 30 16:45:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defineclass): preserve encoding of class/module
+ names. [ruby-core:24600]
+
+ * variable.c (rb_set_class_path_string): set class path with a
+ string value.
+
+Thu Jul 30 16:12:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (Init_var_tables): initializes __classid__ ID.
+
+ * variable.c: use st_data_t for st functions.
+
+Thu Jul 29 14:25:14 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI::unescape): support encoding option.
+
+ * lib/cgi/cookie.rb (CGI::Cookie.parse): fix for the encoded value.
+
+Wed Jul 29 08:08:07 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (regexp): regexp literal at the top of dstr is still needed
+ even if it is empty.
+
+Wed Jul 29 03:36:24 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/json/lib/json/common.rb (JSON#recurse_proc): remove
+ unnecessary private specifier. [ruby-dev:38929]
+
+Wed Jul 29 03:34:46 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, vm_insnhelper.c (vm_call_method): revive
+ VM_CALL_OPT_SEND_BIT and use it to recognize "send" method.
+
+Wed Jul 29 03:11:59 2009 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (rb_method_entry_arity): support not_implemented method.
+ (I have no idea to test it)
+
+Tue Jul 28 19:36:26 2009 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (rb_method_entry_arity): support optimized method (send).
+
+ * test/ruby/test_method.rb: add a test for above.
+
+Tue Jul 28 04:34:05 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/extconf.rb: bug fix and ignore invalid Tcl/Tk libraries.
+
+ * ext/tk/lib/config_list.in: bug fix and add a new option.
+
+ * ext/tk/lib/README.tcltklib: update for a new option.
+
+Mon Jul 27 19:03:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_*str_new_cstr, rb_str_buf_new_cstr),
+ (rb_str_buf_cat2, rb_str_cat2, rb_exc_new2): suppress warnings.
+
+Mon Jul 27 10:24:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser.rb (RDoc::Parser.binary?): fix for empty files.
+ [ruby-dev:38848]
+
+Mon Jul 27 06:51:41 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_eof): should call next_argv() before testing.
+ [ruby-core:24561]
+
+Sun Jul 26 19:17:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_eof): go to the next file if called after ARGF.close
+ or ARGF.skip. a patch from Mike Kasick at [ruby-core:24561].
+
+Sun Jul 26 18:30:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): __send__ can call protected
+ methods. [ruby-core:24500]
+
+Sun Jul 26 01:09:14 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * ext/bigdecimal.c: moved BASE_FIG definition before it is used
+ first time.
+
+ * include/ruby/defines.h [__SYMBIAN32__]: defined TRUE and FALSE to match
+ changes in bignum.c and array.c.
+
+Sat Jul 25 17:49:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_eof): should not have reached EOF before trying to
+ read. based on a patch by Heesob Park <phasis AT gmail.com> in
+ [ruby-core:24559]. [ruby-core:24557]
+
+Sat Jul 25 13:44:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (nucomp_hash), rational.c (nurat_hash): not to use
+ hash value of class so that equality against subclasses can
+ work. [ruby-dev:38850]
+
+Sat Jul 25 01:05:59 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/big5.c: Fix EncLen_BIG5 for Big5-HKSCS. see [ruby-core:24390]
+
+Fri Jul 24 19:19:19 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/big5.trans, big5-hkscs-tbl.rb:
+ new Chinese BIG5-HKSCS transcoding (with Tatsuya Mizuno)
+ see [ruby-core:24390]
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (with Tatsuya Mizuno)
+
+ * enc/big5.c: Added BIG5-HKSCS as a replicate encoding of BIG5
+ (short term solution, needs more work; with Tatsuya Mizuno)
+
+ * tool/transcode-tblgen.rb: made 'pat' directly accessible in
+ class StrSet
+
+Fri Jul 24 18:03:01 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (idle): leaves IDLE in a ensure clause. a patch
+ from Eric Hodel.
+
+ * test/net/imap/test_imap.rb (setup, teardown): turn on
+ Socket.do_not_reverse_lookup in tests.
+
+Fri Jul 24 00:13:41 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (resp_text_code): accepts response codes without
+ text. [ruby-core:24194]
+
+ * lib/net/imap.rb (idle, idle_done): new methods for the IMAP4 IDLE
+ command (RFC 2177). Thanks, Eric Hodel.
+
+ * lib/net/imap.rb (format_date, format_datetime): new method to
+ format IMAP-style date/datetime. Thanks, Eric Hodel.
+
+Thu Jul 23 17:31:02 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb: make irb be able to parse
+ string_dvar. [ruby-core: 24051]
+
+Thu Jul 23 17:26:51 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: should not create "config_list" in a $srcdir.
+
+Thu Jul 23 14:35:02 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_{open,wopen}): fixed typos. these conditions
+ mean to call runtime's open() if textmode.
+
+Thu Jul 23 08:53:24 2009 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/simple_markup/: Remove useless directory.
+ [Bug #1343]
+
+Thu Jul 23 08:52:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_{state,left}): internal/debug use.
+
+Wed Jul 22 19:29:26 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_module.rb (TestModule#test_alias): warning
+ message updated.
+
+Thu Jul 23 00:39:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (class.o): depends on vm_core.h.
+
+Thu Jul 23 00:10:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (init_leap_second_info): checks the result of gmtime to
+ suppress warnings.
+
+Wed Jul 22 22:23:24 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.h (struct rb_iseq_t): add a new field line_no. This field
+ represents line number from which the original code of the iseq
+ starts. [ruby-dev:38698]
+
+ * iseq.c, compile.c: ditto.
+
+ * parse.y: line number hack (for Proc#source_location) is no longer
+ needed.
+
+ * test/ruby/test_settracefunc.rb: line number of set_trace_func is now
+ compatible with 1.8's.
+
+Wed Jul 22 22:16:48 2009 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * method.h: Commas at end of enum list not allowed as of C89
+
+ * vm_method.c (rb_add_method): avoid C++ comment
+
+ * vm_insnhelper.c (vm_call_cfunc): ditto.
+
+Wed Jul 22 20:42:52 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: define IPPROTO_IPV6 macro for recent Windows
+ SDK.
+
+Wed Jul 22 19:32:10 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: define IPV6_* constants only when INET6
+ is defined.
+
+Wed Jul 22 19:23:04 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: ipv6 support is disabled by default on mswin.
+
+Wed Jul 22 17:41:08 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal): drop IPv6 addresses
+ if INET6 is not defined.
+
+Wed Jul 22 17:29:59 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: enable ipv6 support for win32.
+
+Wed Jul 22 16:38:39 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * hash.c (Hash::[]): rdoc. patch by Marc-Andre Lafortune.
+ #1385.
+
+Wed Jul 22 10:00:53 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (WSAMSG): get rid of compile error on VC9 and mingw.
+
+Wed Jul 22 06:35:56 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_enum.rb (TestEnumerable#each): recursive join now
+ raises ArgumentError.
+
+Wed Jul 22 02:33:57 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb.rb: forget svn commit.
+
+Wed Jul 22 01:20:54 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bootstraptest/test_io.rb: block write may block for long time.
+
+Wed Jul 22 00:34:39 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb.rb, lib/irb/init.rb, lib/irb/ext/save-history.rb: add
+ IRB::irb_at_exit. no use finalizer saving history. [ruby-dev-38563]
+
+Tue Jul 21 23:47:38 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * random.c (rand_init): array length of random seed was broken, which
+ causes memory error with srand(2**1000000-1).
+
+ * test/ruby/test_rand.c: test for above.
+
+Tue Jul 21 21:37:19 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/cmd/help.rb: fixed irb's "help" command. [ruby-core:22310].
+
+ * lib/tracer.rb: no show lines unknown line number. [ruby-core:22096],
+ no trace display c-call and c-return as default.
+
+Tue Jul 21 16:24:41 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (vtdate2rbtime): VT_DATE variant object
+ is converted to Time object now.
+
+ * test/win32ole/test_win32ole_variant.rb (test_s_new_with_nil,
+ test_conversion_time2date, test_conversion_str2date,
+ test_conversion_vt_date, test_set_value): ditto.
+
+ * ext/win32ole/win32ole.c (rbtime2vtdate): refactoring.
+
+Tue Jul 21 16:07:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tracer.rb: toplevel caller exists now. [ruby-core:24454]
+
+Tue Jul 21 13:36:20 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch] (recvmsg, sendmsg): new functions to support recvmsg/
+ sendmsg like UNIX. these functions are experimental and not tested
+ well. bug reports are welcome.
+
+Tue Jul 21 13:35:21 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (TEST_RUNNABLE): follow r24209.
+
+Tue Jul 21 12:45:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_enable, rb_gc_disable): should return Qtrue/Qfalse.
+
+Tue Jul 21 12:38:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_generic_ivar_memsize): should not remove generic
+ instance variable table.
+
+Mon Jul 20 20:35:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_f_open): add rdoc about specifying ext_enc as *-bom.
+
+Mon Jul 20 19:00:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (compile_dstr_fragments): reduced needless literal.
+
+ * parse.y (xstring, regexp, dsym, literal_concat, evstr2dstr):
+ literal at the top of dstr is no longer needed if it is empty,
+ since concatstrings and toregexp always create new strings.
+
+Mon Jul 20 12:51:39 2009 wanabe <s.wanabe@gmail.com>
+
+ * lib/matrix.rb (Matrix#rank): revert a part of r20859 to avoid
+ infinite loop. [Bug #1020]
+
+Mon Jul 20 11:12:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, Makefile.in (TEST_RUNNABLE): tests are no
+ runnable if cross-compiling.
+
+ * common.mk (btest*, test*): ditto.
+
+Mon Jul 20 10:55:18 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Addrinfo#family_addrinfo): fix a typo in
+ error message. patch by Nobuhiro IMAI. [ruby-dev:38828]
+
+Sun Jul 19 22:22:54 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (float_to_r): an improvement.
+
+Sun Jul 19 20:41:24 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (make_patterns): do not use \d.
+
+ * rational.c (make_patterns): ditto.
+
+Sun Jul 19 17:32:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_read): should taint the result. [ruby-dev:38826]
+
+Sun Jul 19 11:00:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (me_opts): fixed optimized method aliasing.
+ [ruby-dev:38824]
+
+Sun Jul 19 10:54:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.accept_loop): rescue
+ IO::WaitReadable instead of Errno::EWOULDBLOCK.
+ (Socket.udp_server_loop_on): ditto.
+
+Sat Jul 18 23:44:59 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (reg_enc_error): use rb_enc_get to get the encoding of
+ a Regexp object. REGEXP(re)->ptr->enc is the encoding of the
+ regexp engine for patterns and target strings.
+ [ruby-core:23208]
+
+Sat Jul 18 17:43:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_hash_cmp): got rid of overflow.
+
+Sat Jul 18 16:03:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/defines.h (TRUE, FALSE): for internal use.
+
+Sat Jul 18 11:39:49 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * random.c: workaround for VC++ 6.0.
+
+Sat Jul 18 09:16:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rb_random_{int32,real,bytes,int}): added functions for
+ extension libraries.
+
+Sat Jul 18 09:07:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (fill_random_seed): use cryptographic service on Windows.
+
+Sat Jul 18 07:56:00 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fail to create a widget object for an unknown
+ widget path.
+
+Sat Jul 18 07:06:31 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb,ext/tk/lib/tk/grid.rb: Bug fix on grid_slaves().
+ Extend usage pattern of grid_column()/grid_row().
+
+Sat Jul 18 06:30:35 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: include winsock headers in extern "C++" for
+ C++ extension libraries.
+
+ * include/ruby/missing.h (vsnprintf): workaround for VC++.
+ [ruby-core:23096]
+
+Sat Jul 18 00:23:47 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/readline/readline.c (Init_readline): rl_catch_signals does
+ not exist on some platform like Mac OS X 10.5.
+
+ * ext/readline/extconf.rb: checks existence of rl_catch_signals.
+
+Fri Jul 17 22:37:22 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (socket_s_ip_address_list): drop inactive
+ adapters.
+
+ * test/socket/test_{nonblock,addrinfo,socket}.rb: skip some tests on
+ Windows.
+ [ruby-core:23051]
+
+Fri Jul 17 22:29:21 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/readline/readline.c (Init_readline): use rl_catch_sigwinch only
+ when existing.
+
+ * ext/readline/extconf.rb: check existence of rl_catch_sigwinch, and
+ workaround for native Win32 readline port.
+
+Fri Jul 17 18:18:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * range.c (recursive_hash): extracted from range_hash. reject
+ recursive key.
+ (range_hash): use recursive_hash.
+
+Fri Jul 17 18:11:32 2009 Tanaka Akira <akr@fsij.org>
+
+ * struct.c (recursive_hash): extracted from rb_struct_hash. reject
+ recursive key.
+ (rb_struct_hash): use recursive_hash.
+
+Fri Jul 17 16:45:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * array.c (recursive_hash): reject recursive key.
+
+Fri Jul 17 15:20:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (DIGSPERINT): fix for LP64.
+
+ * random.c (fill_random_seed): /dev/urandom is not available on
+ DOSISH systems.
+
+ * random.c (random_equal): new method Random#==.
+
+Fri Jul 17 13:35:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (rsock_getfamily): return AF_UNSPEC if getsockname
+ is failed. [ruby-core:24383]
+
+Fri Jul 17 01:22:57 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (recursive_join): raise ArgumentError for joining
+ recursive array.
+
+ * array.c (ary_join_1): ditto.
+
+ * test/ruby/test_array.rb (TestArray#test_join2): test updated for
+ recursive join.
+
+Thu Jul 16 23:32:16 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb,ext/tk/config_list.in: ignore paths which includes
+ white space characters on Windows.[ruby-dev:38794]
+
+ * ext/tk/lib/tk.rb: works on Cygwin (limitation:: Tk.mainloop works on
+ the main thread only).
+
+Thu Jul 16 20:58:18 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole.rb (test_s_codepage_changed,
+ test_s_locale_set, test_s_locale_change): skip test if Japanese
+ locale is not installed. [ruby-core:23806]
+
+ * test/win32ole/test_win32ole_variant.rb (test_conversion_str2cy):
+ ditto.
+
+Thu Jul 16 19:02:28 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets_port0): servers
+ is nil if an error occurs before setting it.
+
+Thu Jul 16 18:42:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (fill_random_seed): suppress a warning.
+
+Thu Jul 16 18:30:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_aset, recursive_hash): rejects recursive hash.
+ [ruby-core:22921]
+
+Thu Jul 16 18:28:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * id.c (Init_id), vm.c (vm_exec): @#__ThrowState__ is no longer
+ used. [ruby-dev:38760]
+
+Thu Jul 16 17:41:28 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c (rb_alias): fix a case which try non-existing method alias.
+
+ * test/ruby/test_alias.rb: add a test.
+
+Thu Jul 16 16:00:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_reopen): discards read buffer. [ruby-core:24240]
+
+Thu Jul 16 15:52:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_new, rb_bigzero_p), range.c (rb_range_values):
+ added for random.c.
+
+ * random.c (rb_random_t): objectified. [EXPERIMENTAL]
+ [ruby-dev:30954]
+
+Thu Jul 16 14:08:44 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sample): RDoc update. a patch from Florian
+ Frank. [ruby-core:24347]
+
+Thu Jul 16 12:42:10 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): rl_free_line_state
+ before rl_cleanup_after_signal.
+
+ * ext/readline/readline.c (Init_readline): set rl_catch_signals and
+ rl_catch_sigwinch as 0. [ruby-core:21884]
+
+Thu Jul 16 08:59:22 2009 Koichi Sasada <ko1@atdot.net>
+
+ * node.h, vm_core.h, variable.c: rename global_entry to rb_global_entry.
+
+ * compile.c, insns.def, iseq.c, vm_insnhelper.h: ditto.
+
+Thu Jul 16 08:57:44 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c: separate clearing cache entry code.
+
+Thu Jul 16 08:56:32 2009 Koichi Sasada <ko1@atdot.net>
+
+ * dir.c (push_glob): re-fix GC problem.
+
+Thu Jul 16 08:55:27 2009 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: add method.h.
+
+Thu Jul 16 08:53:26 2009 Koichi Sasada <ko1@atdot.net>
+
+ * io.c (argf_free): free data body.
+
+Wed Jul 15 23:46:55 2009 Koichi Sasada <ko1@atdot.net>
+
+ * method.h, vm_core.h: add rb_method_entry_t. Remove nodes around
+ method management. This change affect some VM control stack structure.
+
+ * vm.c, vm_insnhelper.c, vm_method.c, vm_eval.c: ditto. and make some
+ refactoring.
+
+ * insns.def, class.c, eval.c, proc.c, vm_dump.c : ditto.
+
+ * vm_core.h, compile.c (iseq_specialized_instruction): remove
+ VM_CALL_SEND_BIT. use another optimization tech for Kernel#send.
+
+ * node.h: remove unused node types.
+
+ * ext/objspace/objspace.c (count_nodes): ditto.
+
+ * gc.c: add mark/free functions for method entry.
+
+ * include/ruby/intern.h: remove decl of
+ rb_define_notimplement_method_id(). nobody can use it
+ because noex is not opened.
+
+ * iseq.c (iseq_mark): fix to check ic_method is available.
+
+ * iseq.c (rb_iseq_disasm): fix to use rb_method_get_iseq().
+
+Wed Jul 15 23:45:11 2009 Koichi Sasada <ko1@atdot.net>
+
+ * dir.c (push_glob): fix GC problem.
+
+Wed Jul 15 17:33:52 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/purelib.rb: translates a fake path to rubygems in $" into
+ an alternative in $: so that Kernel.#require does not load
+ more rubygems.rb.
+ Resolves many failures in test/rubygems/*.
+
+ * gem_prelude.rb (Gem.load_full_rubygems_library): supports case
+ the rubygems to load is not in $(rubylibprefix).
+ (Gem.path_to_full_rubygems_library): new method for the changes in
+ purelib.rb and Gem.load_full_rubygems_library.
+ (Gem.fake_rubygems_as_loaded): new method.
+
+Wed Jul 15 16:29:35 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (LIBPATHFLAG): path is already quoted in mkmf.rb.
+
+Wed Jul 15 06:21:50 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: --with-{tcl,tk}-dir doesn't work.[ruby-dev:38782]
+
+Wed Jul 15 04:22:54 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_multipart.rb (CGIMultipartTest#_prepare):
+ set tempfile name with literal.
+
+Tue Jul 14 21:53:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/nonblock: moved from ext/io/wait/lib.
+
+Tue Jul 14 17:29:20 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_index_m): return nil if pos is out of string.
+ [ruby-core:23660]
+
+Tue Jul 14 16:13:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_initialize): check if the descriptor can be accessed
+ in the specified open mode. [ruby-dev:38571]
+
+Tue Jul 14 09:26:14 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: Long-term-callback support isn't stable yet.
+ So, disable the feature and waiting for improvement in the future.
+
+Tue Jul 14 01:28:17 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_m17n.rb (TestM17N#test_env): the encoding of
+ ENV is now locale encoding.
+
+Tue Jul 14 01:24:56 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (r_object0): should return real object.
+
+Tue Jul 14 01:06:31 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enumerator.c (yielder_yield_i): use rb_proc_new instead of
+ rb_iterate. [ruby-dev:38518]
+
+ * README.EXT: rb_iterate is obsolete since 1.9; use rb_block_call
+ instead.
+
+ * README.EXT.ja: ditto.
+
+Tue Jul 14 00:45:41 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_case.rb (TestCase#test_deoptimization):
+ test for [ruby-core:23190].
+
+Mon Jul 13 22:49:50 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/prime.rb (Prime#prime_division): now decomposes
+ negative integer into a decomposition with element [-1, 1].
+
+ * test/test_prime.rb: test for it.
+
+Mon Jul 13 22:28:03 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): handles leaked on win32 when an error occurs.
+
+Mon Jul 13 20:21:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): should not shadow outer variable not to
+ return Qnil always.
+
+Mon Jul 13 19:41:05 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (r_object0): copy instance variables to new regexp.
+
+Mon Jul 13 17:49:11 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, compile.c: declare struct iseq_inline_cache_entry.
+ Inline cache (IC) entries are no longer GC managed object.
+ IC entries are freed when ISeq is freed.
+
+ * iseq.c: fix mark, free, memsize functions for above change.
+
+ * insns.def: remove rb_gc_write_barrier().
+
+ * vm_insnhelper.c (vm_method_search): ditto.
+
+ * tool/instruction.rb, template/insns_info.inc.tmpl (insn_iclen):
+ added.
+
+Mon Jul 13 13:35:08 2009 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm_insnhelper.c (getinstancevariable):
+ fix to use inline cache.
+
+ * compile.c: fix to skip inline cache entry (IC). IC is added
+ automatically by compiler.
+
+ * insns.def, vm_insnhelper.h: fix IC positions.
+
+ * iseq.c: increment minor_version of ISeq because of above change.
+
+Mon Jul 13 08:01:00 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: New strategy for searching Tcl/Tk libraries.
+
+ * ext/tk/*: Support new features of Tcl/Tk8.6b1 and minor bug fixes.
+ ( [KNOWN BUG] Ruby/Tk on Ruby 1.9 will not work on Cygwin. )
+
+ * ext/tk/*: Unify sources between Ruby 1.8 & 1.9.
+ Improve default_widget_set handling.
+
+ * ext/tk/*: Multi-TkInterpreter (multi-tk.rb) works on Ruby 1.8 & 1.9.
+ ( [KNOWN BUG] On Ruby 1.8, join to a long term Thread on Tk
+ callbacks may freeze. On Ruby 1.9, cannot create a second
+ master interpreter (creating slaves are OK); supported master
+ interpreter is the default master interpreter only. )
+
+ * ext/tk/lib/tkextlib/*: Update supported versions of Tk extensions.
+ Tcllib 1.8/Tklib 0.4.1 ==> Tcllib 1.11.1/Tklib 0.5
+ BWidgets 1.7 ==> BWidgets 1.8
+ TkTable 2.9 ==> TkTable 2.10
+ TkTreeCtrl 2005-12-02 ==> TkTreeCtrl 2.2.9
+ Tile 0.8.0/8.5.1 ==> Tile 0.8.3/8.6b1
+ IncrTcl 2005-02-14 ==> IncrTcl 2008-12-15
+ TclX 2005-02-07 ==> TclX 2008-12-15
+ Trofs 0.4.3 ==> Trofs 0.4.4
+
+Mon Jul 13 01:18:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_timespec): rounds subsecond toward zero.
+
+Sun Jul 12 23:51:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (env_str_new): use rb_locale_str_new instead of
+ rb_tainted_str_new. rb_locale_str_new set string locale
+ encoding and tainted.
+
+Sun Jul 12 23:56:40 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: added some shortcuts.
+
+ * rational.c: ditto.
+
+Sun Jul 12 23:30:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_to_integer, rb_check_to_integer): return Bignum
+ as-is.
+
+Sun Jul 12 21:07:46 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: use k_exact_{zero,one}_p macro.
+
+ * rational.c: ditto.
+
+Sun Jul 12 20:42:58 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c (fix_divide): added an entry to rational.
+
+ * rational.c (rb_rational_reciprocal): added.
+
+ * complex.c (f_reciprocal): added.
+
+Sun Jul 12 02:24:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rand_init): use fixed buffer for small numbers.
+
+Sat Jul 11 14:43:34 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_io_m17n.rb (test_strip_bom): added.
+
+Sat Jul 11 07:11:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ array length is long.
+
+ * ext/readline/readline.c (readline_s_get_filename_quote_characters):
+ missing type of self.
+
+Sat Jul 11 02:37:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (limited_rand): expands to long before shift so that
+ the result does not overflow.
+
+Sat Jul 11 00:16:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rand_init): got rid of buffer overflow.
+
+Sat Jul 11 00:11:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_join_1): should recurse for element array.
+
+Fri Jul 10 23:10:11 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_strip_bom): ungetbyte third byte when UTF-16LE.
+
+Fri Jul 10 23:04:16 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_strip_bom): Fix condition of second byte of
+ UTF-16LE/UTF-32LE.
+
+Fri Jul 10 21:45:30 2009 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: checked rl_refresh_line in readline.
+
+ * ext/readline/readline.c (readline_s_refresh_line): add new
+ method, a patch from Koichiro Ohba. see [ruby-list:45922].
+
+Fri Jul 10 21:00:05 2009 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: checked rl_line_buffer and rl_point in
+ readline.
+
+ * ext/readline/readline.c (readline_s_get_line_buffer): new method.
+ (readline_s_get_point): new method.
+
+Fri Jul 10 16:30:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (recursive_join): use obj to tell if recursion occurs.
+ [ruby-core:24150]
+
+ * enum.c (enum_join): reverted r23966. [ruby-core:24196]
+
+Fri Jul 10 14:41:34 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (r_object0): set encoding only if the encoding
+ is not US-ASCII.
+
+Fri Jul 10 14:44:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (struct MT): ruby already assumes int has 32bit a
+ least, so no needs to use long.
+
+ * random.c (rand_init): copies data to be used really only.
+
+Fri Jul 10 11:41:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_obj_{untrust,untrusted,trust}): added
+ prototypes. [ruby-dev:38756]
+
+Fri Jul 10 10:25:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_superclass): checks for implicit
+ argument passing before method search. [ruby-core:24244]
+
+Fri Jul 10 07:22:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_data_type): typed.
+
+Thu Jul 9 23:28:48 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/io.h (FMODE_STRIP_BOM): new constant.
+
+ * io.c (io_encname_bom_p): judge whether the encoding name
+ is *-bom or not.
+ (parse_mode_enc): drop "-bom".
+ (rb_io_modestr_fmode): set FMODE_STRIP_BOM if needed.
+ (rb_io_extract_modeenc): ditto.
+ (io_strip_bom): strip bom if exists.
+ (io_set_encoding_by_bom): set encoding if there is bom.
+ Set encoding and strip bom when modeenc string is "r:foo-bom"
+ [ruby-dev:37236]
+
+Thu Jul 9 21:56:59 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (r_object0): replace \u by u when the regexp is
+ made by Ruby 1.8. [ruby-dev:36750]
+
+Wed Jul 8 23:13:54 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_div): omitted zero division check.
+
+Wed Jul 8 21:00:37 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/inspector.rb: forget svn add.
+
+Wed Jul 8 19:10:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_type): rejects typed data.
+
+Wed Jul 8 18:28:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c ({proc,binding,method}_data_type): typed.
+
+Wed Jul 8 16:47:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): returns new string instead of
+ shared string from FilePathStringValue(). [ruby-core:24199]
+
+Wed Jul 8 04:28:16 2009 Eric Hodel <drbrain@segment7.net>
+
+ * ext/.document: Update with extensions that appear to have
+ documentation. [ruby-core:24181]
+
+Wed Jul 8 04:28:16 2009 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h:
+ rename
+ "...TypeStruct" and "typed_struct" to
+ "TypedData..." and "typeddata", respectively.
+ rename
+ rb_data_type_t#name to
+ rb_data_type_t#wrap_struct_name.
+
+ * error.c, gc.c, iseq.c, vm.c: ditto.
+
+Tue Jul 7 20:23:27 2009 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * bin/irb, lib/irb.rb lib/irb/*: irb-0.9.6, extend inspect-mode
+
+Tue Jul 7 17:00:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): deal with typed struct like
+ as obj_free().
+
+ * error.c (rb_typed_struct_is_kind_of): new function to see if the
+ given typed struct.
+
+ * error.c (rb_check_typed_struct): new function to check typed
+ struct.
+
+ * include/ruby/ruby.h (Check_TypedStruct, Data_Get_TypedStruct):
+ new macro to check typed struct.
+
+Tue Jul 7 13:36:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (DEFINE_ENUMFUNCS): included function signature.
+
+ * enum.c (rb_enum_join): non-nil separator must be convertible to
+ String. [ruby-core:24172]
+
+Tue Jul 7 12:47:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (rb_enum_join): should propagate taint to the return
+ value. the change was overridden by r23967. [ruby-core:24176]
+
+Tue Jul 7 11:56:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (GC_PROF_SET_MALLOC_INFO, GC_PROF_SET_HEAP_INFO): simplified.
+
+Tue Jul 7 10:12:37 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_ext_int_to_encs): Set external encoding if
+ ext==intern. [ruby-dev:38278]
+
+Mon Jul 6 09:31:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (make_curry_proc): should propagate lambda-ness.
+ [ruby-core:24127]
+
+ * proc.c (proc_hash): use long.
+
+Mon Jul 6 09:06:49 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_module.rb (TestModule#test_undef): adjust to
+ message change.
+
+ * test/ruby/test_object.rb (TestObject#test_redefine_method_which_may_case_serious_problem): ditto.
+
+ * test/ruby/test_object.rb (TestObject#test_remove_method): ditto.
+
+Mon Jul 6 09:04:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_join): deals with self recursive objects to get rid
+ of infinite recursion. [ruby-core:24150]
+
+Mon Jul 6 08:00:10 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_to_a): should propagate taint to the return value.
+ [ruby-core:24152]
+
+ * enum.c (enum_sort_by): ditto.
+
+Mon Jul 6 00:41:41 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: edited rdoc.
+
+Sun Jul 5 23:55:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): fix Time.local(2009,2,31) failure on 64bit
+ time_t environment.
+
+Sun Jul 5 22:43:13 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_polar): now arg is optional.
+
+Sun Jul 5 20:40:35 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (float_arg): returns PI for -0.0.
+
+Sun Jul 5 14:04:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_threadptr_exec_event_hooks): new function to
+ execute event hooks, with preserving errinfo. [ruby-core:24118]
+
+Sun Jul 5 08:14:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_add_method, remove_method, rb_undef): fixed
+ minor grammatical errors in warnings. a patch from Run Pain
+ Run Run at [ruby-core:24141].
+
+ * vm_method.c (Init_eval_method): registers notimplement_body as a
+ mark-object.
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): restores the firs
+ arg where is overwritten at funcall. [ruby-core:24139]
+
+Sat Jul 4 08:20:03 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (dbl2ival): should raise FloatDomainError on Infinity
+ and NaN as 1.8 does. [ruby-dev:38726]
+
+Fri Jul 3 22:48:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): less number of guesses for hh:mm:60.
+
+Fri Jul 3 21:30:14 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_equal_p): removed.
+
+Fri Jul 3 21:07:29 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: renamed equal_p to eqeq_p.
+
+ * complex.c: ditto.
+
+ * complex.c (nucomp_equal_p): added.
+ Complex(NaN).equal?(Complex(NaN)) should return true.
+
+Fri Jul 3 19:48:40 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: undef-ed some methods. [ruby-core:24110]
+
+ * complex.c (Numeric#arg): NaN for NaN. [ruby-core:24116]
+
+Fri Jul 3 18:35:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct rb_iseq_struct): fixed types.
+
+ * vm_core.h (ic_vmstat): VM state version is VALUE.
+
+Fri Jul 3 02:52:20 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): time guess strategy refined again.
+
+Fri Jul 3 00:36:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (find_time_t): time guess strategy refined.
+
+Thu Jul 2 11:16:25 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: added response to Net::IMAP::ResponseError.
+ a patch from Eric Hodel in [ruby-core:24111].
+
+Thu Jul 2 08:04:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (num_exact): rb_check_to_integer() can deal with both of
+ Fixnum and Bignum together.
+
+Thu Jul 2 07:53:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): fixed wrong variable.
+
+Thu Jul 2 05:37:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (num_exact): use to_r for T_FLOAT.
+
+Thu Jul 2 05:15:54 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (quo): return an integer if possible.
+
+Wed Jul 1 21:09:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_time_num_new): declared.
+
+ * time.c (nsec2timev): extracted from time_new_internal.
+ (time_new_internal): change argument to VALUE.
+ (rb_time_new): follow the argument change.
+ (rb_time_nano_new): ditto.
+ (rb_time_num_new): new function.
+
+ * ext/socket/ancdata.c (ancillary_timestamp): use rb_time_num_new to
+ represent struct bintime preciously.
+
+Wed Jul 1 08:46:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_encoding): encodings need extra depth.
+ [ruby-core:24100]
+
+Wed Jul 1 06:47:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_grep): gets rid of type-punning calls.
+
+Wed Jul 1 06:36:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_join): add Enumerable#join.
+
+ * array.c (ary_join_1): recursive join for Enumerators (and
+ objects with #to_a).
+
+ * array.c (rb_ary_join): performance tune.
+
+Tue Jun 30 18:19:07 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_hash): documentation fix. a patch from
+ Marc-Andre Lafortune. [ruby-core:23943]
+
+ * object.c (rb_mod_cmp): ditto.
+
+ * range.c (range_eq): ditto.
+
+ * string.c (rb_str_partition, rb_str_rpartition): ditto.
+
+ * struct.c (rb_struct_s_def): ditto.
+
+Tue Jun 30 17:44:24 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (reg_match_pos): adjust offset based on characters, not
+ bytes. [ruby-dev:38722]
+
+ * string.c (rb_str_offset): new function.
+
+ * string.c (rb_str_index_m): no call to rb_reg_adjust_startpos().
+
+Tue Jun 30 16:57:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb: renamed to get rid of collision against
+ instruction.rb on command line completion of shell.
+
+ * tool/mkconfig.rb (RbConfig.expand): get rid of exceptions on
+ frozen strings unless really changed.
+
+ * tool/file2lastrev.rb: get rid of global variables.
+
+ * tool/compile_prelude.rb: use US-ASCII name.
+
+Tue Jun 30 16:46:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def, tool/instruction.rb: fixed types.
+
+Tue Jun 30 11:08:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/oniguruma.h, include/ruby/re.h, re.c, regcomp.c,
+ regenc.c, regerror.c, regexec.c, regint.h, regparse.c: use long.
+
+Tue Jun 30 11:05:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_1): fixed index overrun.
+
+Tue Jun 30 08:42:34 2009 Eric Hodel <drbrain@segment7.net>
+
+ * tool/instruby.rb: summary is required in a .gemspec.
+
+Tue Jun 30 01:35:12 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/strip-rdocs.rb: supports QT style doxy-comments.
+
+Tue Jun 30 01:24:10 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (log2, cbrt): added. [experimental]
+
+Tue Jun 30 01:19:53 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_expt): do not use rb_fexpt.
+
+Mon Jun 29 22:50:10 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Doxyfile.in: removed. merged into template/Doxyfile.template
+
+ * configure.in: new checking for dot and doxygen.
+
+ * template/Doxyfile.template: merged with Doxyfile.in.
+ configured some options.
+
+ * common.mk (capi): use $(DOXYGEN) instead of "doxygen".
+ (Doxyfile): removed a duplicate entry in the dependency.
+
+Mon Jun 29 21:01:31 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_expt): checks exactness.
+
+Mon Jun 29 20:29:11 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (float_to_r): always returns rational.
+
+Mon Jun 29 18:55:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_1): fix for files with dots. [ruby-dev:38588]
+
+Mon Jun 29 17:14:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): should copy original encoding.
+ [ruby-dev:38612]
+
+Sun Jun 28 23:10:55 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gem_prelude.c (Gem.default_dir): follows the change on
+ lib/rubygems/default.rb in r23879
+
+Sun Jun 28 23:32:11 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_div): raises ZeroDivisionError immediately
+ when the given second argument is zero.
+
+ * rational.c (nurat_fdiv): never raise even if the given second
+ argument is zero.
+
+ * rational.c (rb_raise_zerodiv): changed the message (zero to 0).
+
+Sun Jun 28 22:25:07 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_expt): convert to a float when the given power
+ is a bignum.
+
+ * rational.c (nurat_expt): ditto.
+
+Sun Jun 28 21:16:48 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (sqrt): fixed an issue [ruby-list:45852].
+
+Sun Jun 28 19:48:29 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_expt): some improvements.
+
+ * rational.c (nurat_expt): ditto.
+
+Sun Jun 28 19:03:46 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/instruby.rb (:gem): registers the bundled version
+ of minitest as a gem as rdoc or rake.
+ c.f. [ruby-dev:38692].
+
+Sun Jun 28 19:02:07 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/rubygems.rb (ConfigMap[:rubylibprefix]): new entry.
+
+ * lib/rubygems/defaults.rb (Gem.default_dir): considers
+ "--with-rubylibprefix" configure option.
+
+Sun Jun 28 09:21:00 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: renamed some static functions.
+
+ * rational.c: ditto.
+
+Sat Jun 27 19:06:22 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_addsub): new
+
+ * complex.c (nucomp_{add,sub}): use nucomp_addsub.
+
+ * complex.c (nucomp_divide): changed the algorithm.
+
+ * complex.c (nucomp_abs): added shortcuts.
+
+Sat Jun 27 16:56:33 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_cmp): use rb_num_coerce_cmp.
+
+Sat Jun 27 16:45:10 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: revised rdoc.
+
+ * rational.c: ditto.
+
+ * numeric.c: ditto.
+
+Sat Jun 27 13:44:48 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS, lib/rss/maker/base.rb, test/rss/test_maker_2.0.rb: add
+ item.guid.permanent_link? and item.guid.permanent_link=.
+
+Sat Jun 27 13:41:00 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS: rss: 0.2.5 -> 0.2.7.
+
+ * lib/rss/rss.rb, test/rss/test_version.rb: 0.2.6 -> 0.2.7.
+
+Sat Jun 27 03:16:56 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_chr): use default_internal encoding as default
+ destination encoding if set. [ruby-core:23997]
+
+Sat Jun 27 03:09:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_rewind): need to rewind $. and ARGF.lineno.
+ [ruby-core:24046]
+
+ * io.c (struct argf): refactoring on $. and ARGF.lineno behavior.
+
+Fri Jun 26 21:48:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (pty_getpty): check dup failure.
+
+Fri Jun 26 17:33:46 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_rubyopt):
+ test suite add '.' to RUBYLIB. remove checks.
+
+ * test/ruby/test_require.rb (TestRequire#test_tainted_loadpath):
+ the default tempdir directory /tmp is world writable, so
+ SecurityError would be raised. check removed.
+
+Fri Jun 26 16:32:59 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (COMPILE_PRELUDE): need -I. before -rrbconfig.
+ [ruby-dev:38714]
+
+Thu Jun 25 18:41:51 2009 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.4.2 r5269.
+ * test/minitest/*.rb: ditto.
+
+Thu Jun 25 17:58:39 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_binmode_m): should call rb_io_ascii8bit_binmode() to
+ set its encoding to ASCII-8BIT. [ruby-core:24029]
+
+Thu Jun 25 13:04:58 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: '&' in sed s command's replacement is '\&' in ruby.
+ [ruby-dev:38713]
+
+Thu Jun 25 06:50:23 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_each_codepoint): uninitialized local variable enc.
+
+Thu Jun 25 06:25:49 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (first_i): wrong condition for no argument #first.
+ [ruby-core:24017]
+
+Wed Jun 24 20:19:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_s_now): new function. Time.now don't take arguments.
+
+Wed Jun 24 16:08:03 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/resource.rb: CONFIG["TEENY"] is not ruby's version but API's
+ one. So need to use RUBY_VERSION instead.
+
+Wed Jun 24 16:07:04 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb: rbconfig.rb exists at ".".
+
+Wed Jun 24 15:02:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_set_encode): show the erred file name instead of
+ the file that requires it. [ruby-core:24006]
+
+Wed Jun 24 11:41:20 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-style.el: It is too late to set c-file-style in
+ c-mode-hook (at least on Emacs 23). Call c-set-style instead.
+
+Tue Jun 23 21:28:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_get_path_check): check with given safe level.
+
+ * file.c (rb_find_file_ext_safe, rb_find_file_safe): ditto.
+
+ * safe.c (rb_insecure_operation): function to raise security
+ error.
+
+Tue Jun 23 20:32:43 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c: remove the definition of GC_DEBUG (debugging macro).
+
+Tue Jun 23 16:16:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_version): defaults revision to 0 when no
+ revision.h exists.
+
+Tue Jun 23 16:04:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext, rb_find_file): no needs to expand
+ paths with tilde twice.
+
+ * load.c (rb_f_load): load the given path directly if not found in
+ load_path.
+
+ * load.c (search_required): search file in specified safe level.
+
+ * load.c (rb_require_safe): path to load is already searched in
+ search_required().
+
+Tue Jun 23 12:43:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: remove PACKAGE_* macros generated by autotools.
+ [ruby-core:20938]
+
+Tue Jun 23 01:17:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (process_options): don't specify .so for encdb here.
+ "." is replaced by "_" in load_encoding.
+
+ * encoding.c (load_encoding): add .so here.
+
+Mon Jun 22 23:24:22 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_generic_ivar_memsize): typo fixed. a patch from
+ Kazuhiro NISHIYAMA. [ruby-dev:38700]
+
+ * ext/objspace/objspace.c (memsize_of): ditto.
+
+Mon Jun 22 21:21:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c: remove __CHECKER__ test.
+
+ * dir.c: ditto.
+
+ * dln.c: ditto.
+
+ * file.c: ditto.
+
+ * process.c: ditto.
+
+Mon Jun 22 17:15:38 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_each_codepoint): new method.
+ [ruby-core:23949]
+
+ * ext/stringio/stringio.c (strio_each_codepoint): ditto.
+
+Mon Jun 22 16:26:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): removed "." from load_path.
+
+Mon Jun 22 16:14:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_arguments, iseq_compile_each): internal
+ arrays must be hidden. [ruby-dev:38613]
+
+ * vm.c (Init_top_self): ditto.
+
+Mon Jun 22 14:41:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options), enc/prelude.rb: encdb and transdb are
+ extension libraries.
+
+ * ruby.c (process_options): set progname earlier.
+
+Mon Jun 22 13:50:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_fdatasync): new method IO#fdatasync.
+
+Sun Jun 21 22:33:05 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * load.c (Init_load): $: must be readonly. [ruby-dev:38690]
+
+ * ruby.c (ruby_prog_init): $-W must be readonly. [ruby-dev:38691]
+
+Sun Jun 21 10:47:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#copy_file): open with
+ default umask. [ruby-core:23952]
+
+Sun Jun 21 10:46:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (enc_arg): default internal encoding may not be set.
+ [ruby-core:23932]
+
+Sat Jun 20 21:11:43 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c (num_div): don't use num_floor which is actually
+ flo_floor.
+
+ * numeric.c (num_modulo): don't call '%'.
+
+ * numeric.c (num_divmod): use num_modulo.
+
+ * numeric.c: defined '%'.
+
+ * rational.c (nurat_idiv,nurat_mod,nurat_divmod,nurat_rem): removed.
+
+Sat Jun 20 20:28:44 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: edited rdoc.
+
+ * numeric.c: ditto.
+
+Sat Jun 20 08:56:47 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: edited rdoc.
+
+ * rational.c: ditto.
+
+ * numeric.c: ditto.
+
+Sat Jun 20 07:17:52 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/monitor.rb (MonitorMixin::extend_object): should use
+ #__send__ instead of #send to avoid possible name conflict.
+ [ruby-core:23907]
+
+Sat Jun 20 06:56:31 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: edited rdoc.
+
+ * rational.c: ditto.
+
+Sat Jun 20 05:08:59 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: edited rdoc.
+
+ * rational.c: ditto.
+
+Sat Jun 20 04:30:35 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_abs): removed.
+
+Sat Jun 20 03:34:16 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: added rdoc.
+
+Fri Jun 19 23:43:38 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: edited rdoc.
+
+Fri Jun 19 22:58:16 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: edited rdoc.
+
+Fri Jun 19 22:21:17 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: edited rdoc.
+
+Fri Jun 19 21:56:01 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_expt): delegates to complex when self is
+ negative. because Float#** does not produce complex.
+
+Fri Jun 19 21:40:58 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: edited rdoc.
+
+ * rational.c: ditto.
+
+Fri Jun 19 20:53:54 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_name_list): update RDoc. [ruby-core:23926]
+
+Fri Jun 19 20:44:45 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: constant COMPLEX_NAME has been removed.
+
+ * rational.c: constant RATIONAL_NAME has been removed.
+
+Fri Jun 19 20:39:46 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: added rdoc. a patch from Run Paint Run Run.
+
+Fri Jun 19 17:04:59 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_cmp): should always return nil for NaN.
+
+ * numeric.c (flo_cmp): handle infinite value specially using
+ infinite? method internally. [ruby-dev:38681]
+
+Fri Jun 19 09:28:45 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c (*_numerator,*_denominator): moved to rational.c.
+
+ * rational.c (*_numerator,*_denominator): moved from numeric.c.
+
+Fri Jun 19 08:14:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big_lshift, big_rshift): return Bignum always without
+ normalization. [ruby-dev:38679]
+
+Thu Jun 18 22:31:38 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_s_convert): calls to_r when the given argument
+ is non-integer.
+
+ * rational.c (nurat_s_convert): raises TypeError when the given
+ argument is nil.
+
+ * complex.c (nucomp_s_convert): ditto.
+
+Thu Jun 18 20:32:11 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c (num_numerator, num_denominator): use
+ to_r [ruby-core:23910].
+
+Thu Jun 18 16:21:05 2009 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.4.0 r5083.
+ * test/minitest/*.rb: ditto.
+
+Thu Jun 18 10:12:49 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): went infinity too
+ early. add BASE_FIG margin. [ruby-dev:38673]
+
+Thu Jun 18 01:35:51 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_cmp): Infinity is greater than any bignum
+ number. [ruby-dev:38672]
+
+ * bignum.c (rb_big_cmp): ditto.
+
+Thu Jun 18 01:29:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): drive letter is ascii only.
+ [ruby-dev:38612]
+
+Thu Jun 18 01:09:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ridir, RI_BASE_NAME): fixed for path expansion.
+ [ruby-core:23876]
+
+Wed Jun 17 23:46:08 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_coerce): accepts Complex when the imag is
+ exact zero.
+
+Wed Jun 17 21:25:54 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * bignum.c (rb_big_fdiv): checks whether the given second argument
+ can be converted to float properly.
+
+ * numeric.c (fix_fdiv): calls rb_big_fdiv when the given second
+ argument is a bignum.
+
+ * rational.c (nurat_fdiv): should calculate Float(x/y), not
+ Float(x)/Float(y).
+
+Wed Jun 17 16:57:40 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * load.c (rb_f_require): RDoc updated. a patch from Run Paint Run
+ Run in [ruby-core:23833].
+
+ * load.c (rb_mod_autoload): ditto. [ruby-core:23835]
+
+Wed Jun 17 14:37:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/test.rb (valid_syntax?): skips BOM. [ruby-dev:38666]
+
+ * test/ruby/test_system.rb (TestSystem#valid_syntax?): ditto.
+
+Wed Jun 17 13:54:18 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/strscan/strscan.c (Init_strscan): remove obsolete
+ matchedsize method, use matched_size instead. [ruby-dev:38591]
+
+Wed Jun 17 12:37:37 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (ruby_thread_stack_overflow): call rb_exc_raise() on
+ stack overflows in the signal handler, if sigaltstack is
+ available. On stack overflow (and with sigaltstack), the signal
+ handler is more likely to have room to create an exception
+ object. [ruby-core:23813]
+
+Wed Jun 17 08:10:38 2009 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace: added. objspace library extends some methods to
+ ObjectSpace module.
+
+Wed Jun 17 08:14:01 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_coerce): accepts Complex instances.
+
+ * rational.c (nurat_coerce): accepts Rational
+ instances. [ruby-core:23859]
+
+Wed Jun 17 07:36:22 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httputils.rb (parse_form_data): escape boundary of
+ multipart/form-data when embed in regexp.
+
+Wed Jun 17 07:24:26 2009 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_memsize): added.
+
+ * io.c (rb_io_memsize): added.
+
+ * regcomp.c (onig_memsize): added.
+
+ * string.c (rb_str_memsize): added.
+
+ * transcode.c (rb_transcoding_memsize, rb_econv_memsize): added.
+
+ * variable.c (rb_geneic_ivar_memsize): added.
+
+Wed Jun 17 07:04:33 2009 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_memsize): added. Use RTypedData instead of RData
+ for ISeq.
+
+ * vm.c (env_memsize, vm_memsize, thread_memsize): added. Use
+ RTypedData instead of RData for Env, VM, Thread.
+
+Wed Jun 17 06:48:28 2009 Koichi Sasada <ko1@atdot.net>
+
+ * st.c, include/ruby/st.h (st_memsize): added. This function returns
+ the memory usage of st_table.
+
+Wed Jun 17 06:19:06 2009 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: New structure RTypedData, added.
+ This structure includes more explicit type information for
+ T_DATA objects. If RData(obj)->dfree is immediate value `1' on
+ T_DATA object obj, obj is needed to be accessed with RTYPEDDATA(obj)
+ instead of RDATA(obj). A RTypedData structure points the structure
+ rb_typed_data_t. rb_typed_data_t includes information such as the
+ type name of this data, mark and free function what RData includes,
+ and memsize function show how data consuming the memory size.
+ Note that you do not need any change existing T_DATA objects.
+ If you use RDataType instead of RData on T_DATA object,
+ you can specify explicit type information.
+
+ * gc.c (rb_data_typed_object_alloc, rb_objspace_data_type_memsize,
+ rb_objspace_data_type_name): added.
+
+Wed Jun 17 06:14:23 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: fix indent.
+
+Wed Jun 17 06:05:03 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (rb_objspace_each_objects): New C API, added.
+
+Wed Jun 17 00:31:30 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_argf.rb (TestArgf#test_skip): updated test
+ according to clarified behavior.
+
+Tue Jun 16 22:47:37 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (fptr_finalize): revert last change. [ruby-dev:38648]
+
+ * io.c (fptr_finalize): skip close(2) for fd 0,1,2.
+
+Tue Jun 16 20:07:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (transcode_restartable0): refix can't build with VC9.
+
+Tue Jun 16 16:09:59 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * parse.y (parser_read_escape, parser_tokadd_escape):
+ replace scan_oct as ruby_scan_oct.
+
+Tue Jun 16 06:40:31 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (fptr_finalize): should close stdin/stdout/stderr when
+ closed explicitly. [ruby-core:23853]
+
+ * io.c (argf_skip): should close only when current_file is available.
+
+Tue Jun 16 01:50:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_call0): refine exception message for hidden objects.
+
+Mon Jun 15 22:35:31 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * bignum.c (rb_big2db): (-Float::MAX.to_i*2).to_f should return
+ -HUGE_VAL (-Infinity).
+
+Mon Jun 15 18:48:41 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_each_line): should return self. [ruby-core:23852]
+
+ * io.c (argf_each_byte, argf_each_char): ditto.
+
+Mon Jun 15 17:48:42 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (os_obj_of): invoke garbage collection before iteration, to
+ avoid accessing half recycled object references. [ruby-dev:38613]
+
+Mon Jun 15 11:04:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rp, iseq): load dummy_gdb_enums on demand.
+ [ruby-dev:38606]
+
+Sun Jun 14 14:57:57 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, vm_eval.c: add Thread.backtrace.
+
+ * test/ruby/test_thread.rb: add a test.
+
+Sun Jun 14 13:58:32 2009 Koichi Sasada <ko1@atdot.net>
+
+ * transcode.c (transcode_restartable0): revert last commit because
+ this change cause SEGV at test-all.
+
+Sun Jun 14 10:49:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext, rb_find_file): canonicalize absolute
+ paths. [ruby-core:23845]
+
+ * file.c (rb_file_size): added rdoc. a patch from Run Paint Run
+ Run at [ruby-core:23839].
+
+Sun Jun 14 07:53:26 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_fdiv): use fdiv recursively.
+
+ * complex.c (nucomp_expt): reduced code.
+
+Sun Jun 14 03:37:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac.trans: remove wrong optimization.
+
+Sun Jun 14 01:53:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (transcode_restartable0): can't build with VC9.
+
+Sun Jun 14 01:23:41 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_to_f): use fdiv.
+
+Sat Jun 13 15:03:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_lock): show backtrace at circular require.
+
+ * load.c (rb_provide): assumes us-ascii only.
+
+ * load.c (rb_require_safe): FilePathValue() implies rb_str_new4().
+
+ * load.c (rb_mod_autoload): try conversion to path like as
+ require. [ruby-core:23834]
+
+Sat Jun 13 09:58:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_ivar): should not set internal encoding ivar as an
+ ordinary ivar. [ruby-dev:38596]
+
+Sat Jun 13 07:08:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_f_local_variables): now returns symbols. a patch from
+ Run Paint Run Run at [ruby-core:23828].
+
+Sat Jun 13 07:06:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_f_catch): updated rdoc about generalized argument,
+ and the case without arguments. [ruby-core:23827]
+
+Sat Jun 13 06:50:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/protocol.rb (Net::BufferedIO#rbuf_fill): TimeoutError is
+ obsolete, use Timeout::Error instead. [ruby-core:23821]
+
+Sat Jun 13 06:45:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_f_throw): fixed rdoc about exception.
+ [ruby-core:23824]
+
+Fri Jun 12 14:56:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): associate the input encoding when
+ copying an absolute path. [ruby-dev:38594]
+
+Fri Jun 12 02:41:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_replace_shared): shared target must be frozen.
+ [ruby-core:23727]
+
+Thu Jun 11 21:05:09 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (exp): omitted redundant function call.
+
+Thu Jun 11 17:49:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (gfCheckVal): never used.
+
+ * ext/bigdecimal/bigdecimal.c (VpInit): fixed format modifiers.
+
+ * ext/bigdecimal/bigdecimal.c (VPrint): constified.
+
+Thu Jun 11 15:27:17 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/prime.rb: documentation typo fixed. a patch from okkez.
+ [ruby-dev:38586]
+
+Wed Jun 10 18:15:17 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c (dir_s_getwd): directory path's encoding should be filesystem's
+ one.
+
+ * lib/tmpdir.rb: ditto (but not finished yet.)
+
+Wed Jun 10 06:28:15 2009 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Upgrade to RubyGems 1.3.4 r2223.
+
+Tue Jun 9 22:38:09 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (log10): raised exception when the given number is
+ a negative real.
+
+Tue Jun 9 15:13:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_s_glob): fixed rdoc. a patch from Joseph Pecoraro a
+ [ruby-core:23767].
+
+ * dir.c (sys_warning): get rid of type-punning function cast.
+
+ * dir.c (ruby_glob0): get rid of possible overflow.
+
+Tue Jun 9 10:58:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (RMALL): need for distclean-rdoc.
+
+Tue Jun 9 01:07:33 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: rename functions which require a parameter
+ "rb_thread_t *", the prefix to be rb_threadptr_ instead of
+ rb_thread_.
+
+ * thread.c (rb_thread_add_event_hook(), rb_thread_remove_event_hook):
+ change the parameter type from rb_thread_t * to VALUE.
+
+ * eval.c, eval_error.c, eval_intern.h, signal.c, vm_core.h, vm_eval.c:
+ ditto.
+
+ * include/ruby/intern.h: remove decl of rb_thread_signal_raise() and
+ rb_thread_signal_exit().
+
+Mon Jun 8 05:07:41 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): print fatal error
+ message to stderr instead of using rb_bug().
+
+ * KNOWNBUGS.rb, bootstraptest/test_fork.rb: move a fixed test.
+
+Sun Jun 7 22:44:20 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (log): avoided redundant expression.
+
+Sat Jun 6 02:49:05 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_reject_bang): always check frozen status.
+ [ruby-core:23715]
+
+ * hash.c (rb_hash_update): ditto.
+
+ * hash.c (rb_hash_reject_bang): call rb_hash_foreach() directly.
+
+ * hash.c (rb_hash_update_i): call st_insert() directly.
+
+ * hash.c (rb_hash_update_block_i): ditto.
+
+Fri Jun 5 07:12:32 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mkmf.rb (#link_command): should dup CONFTEST_C which is
+ frozen. ref [ruby-core:23675]. [ruby-core:23702]
+
+Thu Jun 4 02:25:51 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/base64.rb: typo fixed. a patch from okkez. [ruby-dev:38564]
+
+Wed Jun 3 09:03:23 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_first): should check negative length.
+
+Tue Jun 2 17:32:40 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (first_i): Enumerator#first should consume only what is
+ needed. a patch from Marc-Andre Lafortune. [ruby-core:23661]
+
+ * enum.c (enum_first): call to_int once for an argument. based on
+ a patch from Marc-Andre Lafortune.
+
+Tue Jun 2 13:27:21 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ripper/test_filter.rb: add tests. see [ruby-dev:37856]
+
+Tue Jun 2 07:44:43 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_gsub_bang): modify check at the beginning.
+ [ruby-core:23662] ref [ruby-core:23657]
+
+ * string.c (rb_str_rstrip_bang): ditto. [ruby-core:23657]
+
+ * string.c (rb_str_chop_bang): ditto.
+
+ * string.c (rb_str_chomp_bang): ditto.
+
+ * string.c (rb_str_reverse_bang): modify check added. [ruby-core:23671]
+
+Mon Jun 1 11:21:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_capture, fiber_store): reraise transferred error.
+
+ * cont.c (fiber_switch): transfers dead fiber error to the previous
+ or root fiber if the current fiber is dead. [ruby-core:23651]
+
+Mon Jun 1 10:41:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_exc_new2): optimization for literal.
+
+Mon Jun 1 07:20:02 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): returns Inf if
+ exp is bigger than DBL_MANT_DIG.
+
+Sun May 31 23:28:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): checks for duplication of source
+ files.
+
+Sun May 31 23:26:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (istrailinggarbage): fixed typo.
+
+Fri May 29 17:10:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (Init_Struct): made #to_s an alias to #inspect to
+ reduce the result of recursive struct. a patch from ujihisa a
+ [ruby-dev:38554].
+
+Fri May 29 17:08:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (Init_Hash): made #to_s an alias to #inspect to reduce
+ the result of recursive hash. a patch from ujihisa a
+ [ruby-core:23601]. [ruby-dev:38555]
+
+Fri May 29 09:30:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (collect_all): checks interrupts. [ruby-core:23594]
+
+Thu May 28 07:39:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (THREAD_MODEL): reject unknown value and checks
+ pthread.h only when pthread. [ruby-core:23577]
+
+Thu May 28 03:47:46 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/optparse/opttest.rb: typo fixed. [ruby-dev:38544]
+
+Thu May 28 03:43:10 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_strftime): update RDoc according to info from
+ Marc-Andre Lafortune in [ruby-core:23575]. [ruby-core:23564]
+
+Thu May 28 02:40:54 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/uri: don't set @parser if it is DEFAULT_PARSER for marshaling
+ URI objects between Ruby 1.8 and Ruby 1.9.
+ [ruby-dev:38377]
+
+Wed May 27 23:00:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (struct parser_params): lex_gets_ptr should be long.
+
+Wed May 27 18:00:15 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigand_int): new function to calculate bignum and
+ fixnum without allocating internal bignum.
+
+ * bignum.c (bigor_int): ditto.
+
+ * bignum.c (bigxor_int): ditto.
+
+ * bignum.c (bigand_int): even less object allocation.
+
+Wed May 27 14:29:55 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_encoding): more compact encoding information for
+ US-ASCII and UTF-8. [incompatible] [experimental]
+
+ * marshal.c (r_ivar): restore :E encoding information.
+
+Wed May 27 14:08:39 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (st_insert2): new function with processing new key,
+ e.g. copy.
+
+ * hash.c (rb_hash_aset): use st_insert2() to reduce redundant
+ st_lookup calls.
+
+Wed May 27 02:31:38 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_getc): the function for
+ rl_getc_function must be a byte function.
+ so use getbyte method. [ruby-dev:38535]
+
+Tue May 26 14:24:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c: fixed types.
+
+ * common.mk (bignum.o, numeric.o): depend on util.h.
+
+ * bignum.c, marshal.c: fixed types.
+
+ * numeric.c (infinite_value): use ruby_div0.
+
+ * include/ruby/util.h (ruby_div0): moved from marshal.c.
+
+Tue May 26 11:01:41 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * lib/mkmf.rb: use map! to replace strings in $objs array.
+
+Tue May 26 10:12:08 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bignew_1): inline memory allocation.
+
+ * bignum.c (bigtrunc): call rb_big_resize() only when needed.
+
+ * bignum.c (bigfixize): declare inline.
+
+Tue May 26 05:39:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (FilePathValue): prevent from GC.
+
+ * include/ruby/ruby.h (NUM2LONG): added GCC specific optimization.
+
+Tue May 26 03:41:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (rb_gmtime, rb_localtime): gmtime and localtime return
+ NULL on error. [ruby-core:23551]
+
+Tue May 26 03:38:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_each_char, rb_str_each_codepoint): string
+ length must be long.
+
+Mon May 25 13:27:32 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * lib/mkmf.rb: dont use gsub! method for frozen string.
+
+Mon May 25 11:47:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb, tool/instruby.rb: removed redundant code.
+
+Mon May 25 09:34:09 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_hash): avoid calling rb_enc_str_asciionly_p().
+
+ * string.c (rb_str_replace): avoid redundant calling rb_str_new4().
+
+ * string.c (str_replace): factor out replacement from
+ rb_str_replace() without type check nor discarding the
+ destination contents.
+
+Mon May 25 08:06:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_partition): should use the converted result. a
+ patch from Marc-Andre Lafortune at [ruby-core:23540].
+
+ * string.c (rb_str_rpartition): ditto.
+
+Mon May 25 06:25:38 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_hash.rb (TestHash::test_equal2): recursive hashes
+ are handled properly now. ref: [ruby-core:23402]
+
+ * test/ruby/test_m17n.rb (TestM17N#test_sprintf_p): test fixed
+
+Mon May 25 05:32:19 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::HTTP_STATUS): typo fixed. a patch from
+ Nobuhiro IMAI. [ruby-dev:38538]
+
+Sun May 24 22:48:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_exec_recursive_paired): new function for proper
+ handling of recursive arrays. [EXPERIMENTAL] [ruby-core:23402]
+
+ * array.c (rb_ary_equal, rb_ary_eql, rb_ary_cmp): use above.
+
+ * hash.c (hash_equal): ditto.
+
+Sun May 24 22:39:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (syserr_initialize): errno is int.
+
+Sun May 24 00:52:54 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in ($ridir): new configuration. [ruby-core:23520].
+ c.f. [ruby-core:23519].
+
+ (--with-ridir): new configure option.
+
+ * tool/instruby.rb (:doc, :rdoc): uses $ridir instead of
+ a fixed path.
+
+ * lib/rdoc/ri/paths.rb: follows $ridir.
+
+ * Makefile.in: removes RIDATADIR which is no longer used.
+
+ * bcc32/Makefile.sub: generates the 'ridir' entry for RbConfig.
+ removes RIDATADIR which is no longer used.
+
+ * win32/Makefile.sub: ditto.
+
+Sat May 23 23:52:33 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_char): return original string.
+ [ruby-core:23499]
+
+ * string.c (rb_str_each_codepoint): protect string from
+ modification.
+
+Sat May 23 21:48:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (rb_dlhandle_s_sym): added a method to access
+ using RTLD_NEXT. [ruby-dev:38152]
+
+ * ext/dl/handle.c (Init_dlhandle): added constants DEFAULT and
+ NEXT which correspond to RTLD_DEFAULT and RTLD_NEXT.
+
+Sat May 23 18:53:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/lib/dl/cparser.rb (DL::CParser#parse_struct_signature):
+ splitting with regexp source string is obsolete. a patch from
+ Minwoo Lee at [ruby-core:23494].
+
+ * ext/dl/cptr.c (rb_dlptr_cmp): return signed value, and restrict
+ to Fixnum. [ruby-dev:38533]
+
+Fri May 22 23:22:53 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * missing/vsnprintf.c (errno): [BUG] fixes a compilation
+ error on SIZEOF_LONG > SIZEOF_INT.
+ (BSD_vfprintf): ditto.
+
+Fri May 22 23:20:48 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec: follows runruby.rb's move at r23542.
+
+Fri May 22 21:38:55 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * NEWS: add Time#to_r.
+
+Fri May 22 20:29:01 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * config.guess: moved into tool/.
+
+ * config.sub: ditto.
+
+ * install-sh: ditto
+
+ * configure.in: follows the moves.
+
+ * LEGAL: ditto.
+
+Fri May 22 20:10:18 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * instruby.rb: moved into tool/.
+
+ * mkconfig.rb: ditto.
+
+ * rubytest.rb: ditto.
+
+ * runruby.rb: ditto.
+
+ * common.mk: follows the moves.
+
+ * configure.in: ditto.
+
+ * win32/Makefile.sub: ditto.
+
+Fri May 22 05:09:43 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_slice_bang): avoid call of rb_scan_args() unless
+ it's really necessary.
+
+Thu May 21 22:17:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl, id.h (enum ruby_method_ids): added some IDs.
+
+ * debug.c (dummy_gdb_enums): added enum ruby_method_ids.
+
+ * .gdbinit (rp): improved output of Symbol.
+
+Thu May 21 21:07:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD_vfprintf): support for 'z' modifier.
+
+Thu May 21 18:55:33 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gem_prelude.rb (Gem.default_dir and misc.): use rubylibprefix.
+ follows the change in r23368.
+
+Thu May 21 12:07:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_EVENT_HOOKS_HAVE_CALLBACK_DATA):
+ new macro for compatibility check.
+
+Thu May 21 01:43:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_long2int, RARRAY_LENINT): check long to
+ cast to int. [ruby-dev:38508]
+
+ * struct.c, vm_eval.c, vm_insnhelper.c: use RARRAY_LENINT.
+
+Wed May 20 21:00:27 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * rb_enc_get_index: allows an arbitrary RData as the argument but not
+ only what points a rb_encoding.
+
+Wed May 20 20:54:37 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/.gitignore: ignores rubyspec/ and mspec/.
+
+Wed May 20 19:41:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (rb_struct_new): get rid of too large alloca.
+
+ * struct.c (rb_struct_hash): use long.
+
+Wed May 20 18:58:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c, vm_insnhelper.c: argument number is restricted to
+ int, and fixed overflow.
+
+Wed May 20 18:34:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (zip_ary): should use long.
+
+ * enumerator.c (inspect_enumerator): should use long.
+
+Wed May 20 09:18:44 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_count): optimized for 1byte string count by
+ avoiding tr_setup_table().
+
+Wed May 20 06:25:29 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_fast_mbclen): faster mbclen for strings known
+ to be valid.
+
+ * string.c (enc_strlen): coderange specified version of
+ rb_enc_strlen(). use rb_enc_fast_mbclen() if coderange is 7bit
+ or valid.
+
+ * string.c (str_gsub): use rb_enc_fast_mbclen().
+
+ * string.c (rb_str_reverse, rb_str_split_m, rb_str_each_char,
+ scan_once): ditto.
+
+Wed May 20 06:20:05 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#unlink): close first for Windows. a
+ patch from Florian Frank. [ruby-core:23505]
+
+Wed May 20 00:13:38 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_codepoint_len): combine rb_enc_codepoint()
+ and rb_enc_codelen() in one function to reduce calls.
+
+ * encoding.c (rb_enc_codepoint): compatibility function.
+
+ * sprintf.c (rb_str_format): use rb_enc_codepoint_len().
+
+ * string.c (rb_str_inspect, rb_str_upcase_bang,
+ rb_str_downcase_bang, rb_str_capitalize_bang,
+ rb_str_swapcase_bang, trnext, tr_trans, rb_str_delete_bang,
+ rb_str_squeeze_bang, rb_str_count, rb_str_split_m,
+ rb_str_each_line, rb_str_each_codepoint, rb_str_lstrip_bang,
+ sym_printable): ditto.
+
+ * transcode.c (make_econv_exception): use rb_enc_mbc_to_codepoint()
+
+Wed May 20 00:05:52 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (rb_attr): should preserve encoding info.
+ [ruby-dev:38498]
+
+Tue May 19 22:54:35 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * time.c (time_minus): always return a Float. [ruby-dev:38446]
+
+ * time.c (time_to_r): new method. [ruby-dev:38461]
+
+Tue May 19 13:59:35 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (clone_method): add cast to remove warning from
+ rb_gc_write_barrier().
+
+Tue May 19 13:54:15 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (struct_ivar_get): new function to avoid repeated
+ rb_intern() calls.
+
+ * struct.c (rb_struct_iv_get): use struct_ivar_get()
+
+ * struct.c (num_members): ditto.
+
+ * struct.c (rb_struct_s_members): ditto.
+
+ * class.c (rb_singleton_class): cache symbol to reduce calls to
+ rb_intern().
+
+Tue May 19 07:52:05 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/test_time.rb: make tests timezone independent.
+ reported by zunda. [ruby-dev:38492]
+
+Mon May 18 21:40:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#sub): suppress a warning. [ruby-dev:38488]
+
+Sun May 17 23:23:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (SRC_EXT): should be flat.
+ http://twitter.com/_tad_/status/1825862632
+
+Sun May 17 23:05:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): VARIABLE_LIBPATH is always
+ defined, see its value instead.
+
+Sun May 17 18:59:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (nd_line): NODE_LMASK is not needed.
+
+ * node.h (NOEX_SAFE): made int.
+
+Sun May 17 14:23:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (rb_parse_in_eval): returns true in true eval, not in
+ main. [ruby-dev:38382]
+
+ * parse.y (program): inherits dvars in eval or main.
+
+Sun May 17 14:02:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_script): sets also VM toplevel program name.
+
+ * ruby.c (process_options): no longer needs additional frame.
+
+ * vm.c (rb_vm_get_sourceline): should not access out of bound.
+
+Sun May 17 09:47:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (cmdline_options_init): initialize encodings.
+
+ * ruby.c (add_modules, require_libraries, process_sflag):
+
+ * ruby.c (process_sflag): not process twice.
+
+ * ruby.c (moreswitches): get rid of possible overflow.
+
+Sun May 17 09:31:05 2009 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (foletypelib_name): should return
+ encoded name corresponding to WIN32OLE.codepage.
+
+Sun May 17 09:02:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): support for cygwin 1.7. see
+ [ruby-core:23241].
+ gets rid of possible buffer overflow with realpath().
+
+ * ruby.c (set_arg0): get rids of overrun.
+
+Sat May 16 18:38:32 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb: add nil check.
+
+Sat May 16 18:36:01 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_maker_atom_feed.rb: suppress warnings.
+
+Sat May 16 18:33:15 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS: add RSS::Maker.supported?(version).
+
+Sat May 16 18:26:42 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb, test/test_parser_1.0.rb: fix foaf:Image
+ element causes parse error even if ignore_unknown_element mode.
+
+Sat May 16 18:14:19 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker.rb, lib/rss/maker/0.9.rb,
+ test/test_maker_*.rb: add RSS::Maker.supported?
+
+Sat May 16 18:12:39 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/content/*, lib/rss/dublincore/*: fix circular require.
+ * test/test_maker_atom_feed.rb,
+ test/test_maker_atom_entry.rb: suppress warnings.
+
+Sat May 16 18:07:17 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/feed.rb, test/test_maker_atom_feed.rb:
+ remove needless codes.
+
+Sat May 16 18:05:07 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/entry.rb: fix a typo.
+
+Sat May 16 18:02:57 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/feed.rb, test/test_maker_atom_entry.rb,
+ test/test_maker_atom_feed.rb: fix duplicated dc:date.
+ Reported by Kazuhiro NISHIYAMA. Thanks!!! [ruby-list:46014]
+
+Sat May 16 18:02:16 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb, lib/rss/maker/1.0.rb, lib/rss/maker/feed.rb,
+ test/rss/test_maker_1.0.rb, test/rss/test_maker_atom_feed.rb:
+ RSS 1.0 and Atom feed maker treat maker.channel.language as
+ maker.channel.dc_language.
+
+Sat May 16 17:57:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/lib/dl/callback.rb (DL#remove_callback_internal): ignore
+ unbound function. [ruby-dev:38474]
+
+Sat May 16 17:51:11 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/rss_recent.rb, sample/rss/list_description.rb: use
+ UTF-8.
+
+Sat May 16 17:47:55 2009 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, test/rss/test_version.rb (RSS::VERSION):
+ 0.2.5 -> 0.2.6.
+
+Sat May 16 17:26:04 2009 Narihiro Nakamura <authorNari@gmail.com>
+
+ * iseq.c (rb_iseq_clone): use longlife object and insert write barrier.
+
+ * vm_insnhelper.c (vm_cref_push): ditto.
+
+ * vm_insnhelper.h (COPY_CREF): insert write barrier.
+
+Sat May 16 13:49:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_autoload_load): gets rid of false warning.
+ [ruby-core:23466]
+
+Sat May 16 10:59:54 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/drb/dhasenc.rb: add magic comment for encoding.
+
+ * sample/mine.rb: ditto.
+
+ * ext/tk/sample/tcltklib/sample1.rb: ditto.
+
+Sat May 16 09:49:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (magic_comment_encoding): ignores unused emacs-style
+ encoding comment, as like Vim styles. [ruby-core:23470]
+
+Sat May 16 09:30:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * defs/keywords (reserved_word): made inline function static.
+ [ruby-core:23210]
+
+ * parse.y (rb_reserved_word): ordinary function for ripper.
+
+Sat May 16 09:19:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (magic_comment_encoding): use rb_compile_warning() to
+ show the currently parsing file name. [ruby-core:23469]
+
+Sat May 16 09:03:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_version): now version.h includes
+ include/ruby/version.h, so need to tell to cpp to see
+ $(srcdir)/include. [ruby-core:23468]
+
+Fri May 15 17:35:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shift, rb_ary_shift_m): clears unused elements.
+ [ruby-dev:38448]
+
+Fri May 15 15:15:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_autoload_load): checks if iv_tbl is valid.
+ [ruby-dev:38456]
+
+Fri May 15 11:17:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak (-version-): now version.h includes
+ include/ruby/version.h, so need to tell to cpp to check
+ $(srcdir)/include.
+ reported by KIMURA Koichi at http://www.kt.rim.or.jp/%7ekbk/zakkicho/09/zakkicho0905b.html#D20090514-6
+
+Thu May 14 16:13:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getpwuid): use rb_uid_t. [ruby-dev:38443]
+
+ * ext/stringio/stringio.c (strio_ungetbyte): encoding should no
+ be effective.
+
+Thu May 14 10:17:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/test.rb (valid_syntax?): defaults to us-ascii.
+
+Wed May 13 22:34:31 2009 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: add longlife garbage collection. [ruby-dev:38423]
+ (NORMAL_HEAPS_USED): new macro.
+ (LONGLIFE_ALLOCATE_HEAPS_MIN): ditto.
+ (add_longlife_heaps_slot): new function.
+ (rb_newobj_from_longlife_heap): ditto.
+ (rb_newobj_longlife): ditto.
+ (rb_node_newnode_longlife): ditto.
+ (rb_gc_write_barrier): ditto.
+ (remembered_set_recycle): ditto.
+ (rb_gc_mark_remembered_set): ditto.
+ (clear_mark_longlife_heaps): ditto.
+ (gc_sweep_for_longlife): ditto.
+ (assign_heap_slot): new argument to longlife heaps slot.
+ (add_freelist): ditto.
+ (gc_sweep): avoid longlife heap slot. set longlife_collection
+ flag at add heap.
+ (rb_gc_force_recycle): avoid mark object and remembered_set
+ object.
+ (garbage_collect): add longlife collection.
+ (rb_gc_start): invoke longlife collection.
+ (gc_profile_record_get): for longlife collection profile.
+ (gc_profile_result): ditto.
+
+ * include/ruby/intern.h (rb_gc_write_barrier): declared.
+
+ * include/ruby/ruby.h (FL_REMEMBERED_SET): renamed from FL_RESERVED.
+
+ * debug.c (FL_REMEMBERED_SET): ditto.
+
+ * insns.def (setinlinecache): insert write barrier.
+
+ * vm_insnhelper.c (vm_method_search): ditto.
+
+ * set_relation (set_relation): use longlife object.
+
+ * vm.c (vm_define_method): ditto.
+
+ * vm_core.h (NEW_INLINE_CACHE_ENTRY): ditto.
+
+ * vm_method.c (rb_add_method): ditto.
+
+ * class.c (rb_add_method): ditto.
+
+ * node.h (NEW_NODE_LONGLIFE): new macro.
+ (rb_node_newnode_longlife): declared.
+
+Wed May 13 15:23:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/version.h: extracted the extensions interface and
+ the never-changeable info.
+
+Wed May 13 03:20:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_init_1): unused variable removed.
+
+Tue May 12 21:03:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c: support fixed UTC offset. [ruby-dev:38326]
+ (leap_year_v_p): new macro.
+ (TIME_FIXOFF_P): new macro.
+ (TIME_SET_FIXOFF): new macro.
+ (time_init_0): renamed from time_init.
+ (time_set_utc_offset): new function.
+ (vtm_add_offset): new function.
+ (utc_offset_arg): new function.
+ (time_init_1): new function.
+ (time_init): call time_init_0 or time_init_1 according argc.
+ (validate_utc_offset): new function.
+ (time_localtime_m): new function.
+ (time_fixoff): new function.
+ (time_getlocaltime): take optional UTC offset argument.
+ (time_get_tm): support fixed UTC offset time.
+ (Init_Time): make Time#{initialize,localtime,getlocal} varargs.
+
+ * strftime.c (rb_strftime): vtm->zone can be NULL now.
+
+Tue May 12 18:23:40 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * yarvtest: removed because it's outdated.
+
+Mon May 11 21:46:20 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: add semicolons to some grammar rules not terminated
+ with them. a patch from Dave B in [ruby-core:23422].
+
+Mon May 11 20:08:33 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (Init_IO): add constant File::NOATIME. [ruby-core:23194]
+
+Mon May 11 13:08:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb (rubylibdir): use rubylibprefix. [ruby-dev:38426]
+
+Mon May 11 08:37:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_coerce): support
+ coercing into Rational. [ruby-core:23415]
+
+Mon May 11 04:39:45 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP#check_auth_args): should not change
+ number of methods for the sake of compatibility.
+
+Sun May 10 11:36:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_instance_p): new function to check if
+ the argument is an instance of DL::CFunc.
+
+ * ext/dl/cptr.c (rb_dlptr_initialize, rb_dlptr_s_malloc): checks
+ if DL::CFunc. [ruby-dev:38403].
+
+ * ext/dl/lib/dl/cparser.rb (DL::CParser#parse_signature): strips
+ spaces. based on a patch from Takashi Tamura in [ruby-dev:38398].
+
+ * ext/dl/lib/dl/value.rb (DL::ValueUtil#wrap_arg): block must be
+ given if arg is not bound. [ruby-dev:38404]
+
+ * ext/dl/cfunc.c (rb_dlcfunc_instance_p): new function to check if
+ the argument is an instance of DL::CFunc.
+
+Sat May 9 19:57:00 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_float.rb (TestFloat#test_sleep_with_Float): add a
+ test. see [ruby-core:23282]
+
+Sat May 9 19:23:46 2009 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: use subsec instead of nsec.
+
+Sat May 9 12:19:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c: 3rd argument of rb_hash_foreach() is VALUE.
+
+ * hash.c (rb_any_hash, recursive_hash): use VALUE for hash.
+
+Sat May 9 11:14:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_f_catch): gets rid of issue with gcc 4.4. a patch
+ from Alexey Froloff in [ruby-core:23398]. [ruby-core:22924]
+
+Fri May 8 19:38:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_link0): removes waste dSYM directories left
+ when debug and universal-binary are enabled.
+
+ * lib/mkmf.rb (check_sizeof): fixed wrong recurring result for
+ intrinsic types.
+
+Fri May 8 10:14:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in, win32/Makefile.sub (RUBY_BASE_NAME):
+ program base name. [ruby-dev:38241]
+
+ * configure.in (--with-soname): base name of shared library.
+ [ruby-dev:38290]
+
+Fri May 8 10:07:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_flatten_bang): clears temporary array.
+
+Fri May 8 02:30:14 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (SortedSet#add): Do not require each newly added
+ element to be Comparable but to respond to <=>. [ruby-dev:38371]
+
+Thu May 7 21:42:51 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rubyoptions.rb (test_indentation_check): add a test
+ for indentation check. [ruby-dev:38382]
+
+Thu May 7 16:40:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_flatten_bang): returns nil if nothing changed.
+ a patch from Marc-Andre Lafortune in [ruby-core:23382].
+
+Thu May 7 14:26:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sample): negative sample number is invalid.
+ [ruby-core:23374]
+
+Thu May 7 14:16:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c, include/ruby/encoding.h: fixed types.
+
+ * include/ruby/encoding.h (rb_enc_nth): long is used for index.
+
+Thu May 7 14:01:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (r_le): fixed types.
+
+ * range.c (range_eql): fixed rdoc.
+
+Thu May 7 13:10:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): should be rb_pid_t.
+
+Wed May 6 16:50:20 2009 Tanaka Akira <akr@fsij.org>
+
+ * math.c (math_gamma): use a table for positive small integers.
+
+Wed May 6 09:27:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.ja: code for THINK_C does not exist already. [Bug #1435]
+
+Wed May 6 05:33:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CFLAGS, CXXFLAGS): strips extra spaces.
+
+Tue May 5 11:29:07 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/ifchange: Fix: arguments which begin with minus sign may
+ parsed as options. Because of older systems, don't use --
+ but use parentheses.
+
+Tue May 5 10:42:28 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Update to JSON 1.1.4.
+
+Tue May 5 07:22:37 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c: NOMAP is now multibyte direct map.
+
+ * transcode.c: remove ASIS.
+
+ * transcode_data.h: ditto.
+
+ * tool/transcode-tb (ActionMap#generate_info): remove :asis.
+
+ * tool/transcode-tb (ActionMap#generate_info): add :nomap0.
+
+ * enc/trans/utf8_mac.trans: replace :asis by :nomap0.
+
+Sat May 2 22:53:02 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (SortedSet): Fix document. [Bug #1429]
+
+Sat May 2 10:34:29 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac-tbl.rb: don't use Unicode escape.
+
+ * enc/trans/utf8_mac.trans: follow above.
+
+Sat May 2 09:19:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (Init_Array): made #to_s an alias to #inspect to reduce
+ the result of recursive array. a patch from ujihisa at
+ [ruby-dev:38362]
+
+Fri May 1 16:50:05 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#merge): Only directly use the passed objects
+ @hash instance variable when self and the passed object are
+ instances of the same class. [Bug #118]
+
+Fri May 1 16:44:11 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (SortedSet#add): Do not let an incomparable object
+ in. [Bug #118]
+
+Fri May 1 13:18:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (_longjmp): never return. see [ruby-core:23241]
+
+Fri May 1 01:31:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/extmk.rb: use RbConfig instead of Config.
+
+ * instruby.rb: ditto.
+
+ * lib/rubygems.rb: ditto.
+
+ * test/rubygems/test_config.rb: ditto.
+
+Thu Apr 30 21:23:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * runruby.rb: use RbConfig::CONFIG instead of Config::CONFIG.
+
+ * spec/default.mspec: ditto.
+
+ * yarvtest/yarvtest.rb: ditto.
+
+ * instruby.rb: ditto.
+
+ * benchmark/report.rb: ditto.
+
+ * benchmark/runc.rb: ditto.
+
+ * tool/eval.rb: ditto.
+
+ * test/rubygems/test_gem.rb: ditto.
+
+ * test/rubygems/test_config.rb: ditto.
+
+ * test/rubygems/test_gem_platform.rb: ditto.
+
+Thu Apr 30 18:18:13 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/http.rb: documentation typo fixed. [ruby-core:23335]
+
+Thu Apr 30 15:27:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/utf8_mac.trans: get rid of a 1.9 feature for cross
+ compile.
+
+Thu Apr 30 11:35:30 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding): Change filesystem_encoding of
+ Mac OS X to UTF-8.
+
+Wed Apr 29 21:23:40 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/iso_2022_jp.h: add CP50221.
+
+ * enc/trans/iso2022.trans: add converter for CP50221.
+
+Wed Apr 29 15:22:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_join): recursive array has no meaning as path
+ name. [ruby-core:23329]
+
+Tue Apr 28 19:09:45 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/test_timeout.rb (TestTimeout#test_timeout): add a test.
+
+Tue Apr 28 07:13:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pp.rb (Struct#pretty_print): coerce to a string since
+ anonymous class has name no longer. [ruby-dev:38349]
+
+Mon Apr 27 16:47:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_version): uses sed instead of grep if the
+ result is need, to get rid of GREP_OPTIONS. [ruby-dev:38336]
+
+Mon Apr 27 01:25:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_getc): use rl_getc_function if
+ possible, to get rid of hang up at EOF without a newline.
+
+Sun Apr 26 23:19:32 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/utf8_mac.trans: Add converter for UTF8-MAC.
+
+ * enc/trans/utf8_mac-tbl.rb: ditto.
+
+ * test/ruby/test_econv.rb: tests for above.
+
+Sun Apr 26 22:17:02 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tb (ActionMap#each_firstbyte):
+ if :asis collides other mappings, use another.
+
+ * tool/transcode-tb (ActionMap#generate_info):
+ add :asis for ASIS.
+
+Sun Apr 26 21:59:43 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (ASIS): added for multi byte direct map.
+
+ * transcode.c (transcode_restartable0): ditto.
+
+Sun Apr 26 20:33:12 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tb (ActionMap#generate_node):
+ Use ActionMap#gennode instead of generate_node
+ because of initialization.
+
+Sun Apr 26 20:21:39 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * .gitignore: added.
+
+Sun Apr 26 20:17:24 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/rake.rb: use RbConfig::CONFIG instead of Config::CONFIG.
+
+ * lib/rbconfig/datadir.rb: ditto.
+
+Sun Apr 26 19:30:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_arg): unused variable removed.
+
+Sun Apr 26 18:35:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_reopen): keeps pathv for prep_stdio. [ruby-dev:38131]
+
+Sun Apr 26 15:13:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#parse_in_order): do not make an
+ option from non-option argument. [ruby-dev:38333]
+
+Sat Apr 25 19:11:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_cv_func_daemon): use daemon(3) only on *BSD.
+
+ * process.c (proc_daemon): double fork to ensure not having ctty.
+ [ruby-core:23305]
+
+Sat Apr 25 16:19:48 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (month_arg): extracted from time_arg.
+ (validate_vtm): ditto.
+
+Sat Apr 25 16:03:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (TIME_COPY_GMT): new macro.
+ (time_s_at): use TIME_COPY_GMT.
+ (time_succ): ditto.
+
+Sat Apr 25 15:54:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mload): use TIME_SET_UTC.
+
+Sat Apr 25 15:47:54 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_get_tm): take time_object instead of gmt.
+
+Sat Apr 25 15:39:44 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_succ): refactored to avoid gmt variable.
+ (strftimev): use TIME_UTC_P.
+ (time_strftime): ditto.
+
+Sat Apr 25 15:21:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (TIME_UTC_P): new macro.
+ (TIME_SET_UTC): ditto.
+ (TIME_LOCALTIME_P): ditto.
+ (TIME_SET_LOCALTIME): ditto.
+ (time_utc_p): use the above macro.
+ (time_localtime): ditto.
+ (time_localtime): ditto.
+ (time_gmtime): ditto.
+ (time_to_s): ditto.
+ (time_add): ditto.
+ (time_sec): ditto.
+ (time_min): ditto.
+ (time_hour): ditto.
+ (time_mday): ditto.
+ (time_mon): ditto.
+ (time_year): ditto.
+ (time_wday): ditto.
+ (wday_p): ditto.
+ (time_yday): ditto.
+ (time_isdst): ditto.
+ (time_zone): ditto.
+ (time_utc_offset): ditto.
+ (time_to_a): ditto.
+ (strftimev): ditto.
+ (time_strftime): ditto.
+ (time_mdump): ditto.
+
+Thu Apr 23 01:30:37 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/zlib/zlib.c (Zlib::GzipFile#path): New method.
+
+Wed Apr 22 20:25:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_timespec): check out-of-range. [ruby-core:23282]
+ [Bug #1396]
+
+Wed Apr 22 19:33:13 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.parse): use year completion in Date._parse.
+
+Wed Apr 22 11:12:15 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (GMTIME, LOCALTIME): should set result if not have *_r().
+
+ * time.c (localtime_with_gmtoff): now always needed tmbuf.
+
+Wed Apr 22 10:38:47 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c (glob_helper): C99(gcc)-ism.
+
+ * time.c (find_time_t): GUESS macro needs the variable named ``result''
+ always.
+
+Wed Apr 22 09:27:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (localtime_with_gmtoff): fixed cross function jump.
+
+Wed Apr 22 03:06:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time#rfc2822): pad leading zeros for year.
+ (Time#httpdate): ditto.
+ (Time#xmlschema): ditto.
+
+Wed Apr 22 02:10:48 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time#xmlschema): use subsec instead of nsec.
+
+Wed Apr 22 01:27:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_arg): use the year argument as-is. [ruby-dev:38194]
+
+ * lib/time.rb (Time.parse): interpret small year 0..99 as 1950..2049.
+
+Wed Apr 22 00:32:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (find_time_t): constified.
+
+Wed Apr 22 00:11:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (leap_year_v_p): removed.
+
+Tue Apr 21 23:52:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c: remove time_t restriction from Time class.
+
+ * timev.h: new file to define struct vtm.
+
+ * strftime.c: format struct vtm instead of struct tm.
+
+ * ext/syck/rubyext.c (mktime_do): don't use time_t;
+
+ [ruby-dev:38191]
+
+Tue Apr 21 09:25:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_path, dir_each, glob_helper): use readdir_r() if
+ available.
+
+Tue Apr 21 09:20:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (init_mkmf): needs default library path even if
+ cross compiling.
+
+Tue Apr 21 07:07:45 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_push): bypass rb_ary_store().
+
+Tue Apr 21 01:25:16 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigsub_int): subtraction without making internal
+ bignum values.
+
+ * bignum.c (bigadd_int): ditto for addition.
+
+ * bignum.c (bigtrunc): declare inline.
+
+ * bignum.c (rb_quad_pack): fix condition.
+
+Tue Apr 21 01:13:42 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup (config.h): added TIMET2NUM and NUM2TIMET to match
+ the change in time.c
+
+Mon Apr 20 20:29:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_split_m): faster processing on 7bit strings.
+
+ * string.c (ascii_isspace): faster isspace() for 7bit strings.
+
+Sun Apr 19 14:43:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): the order of local variables on stack is
+ undefined. should use outermost VALUE for ruby_init_stack.
+
+ * gc.c (ruby_get_stack_grow_direction, Init_stack): allows volatile
+ pointer.
+
+ * thread_*.c (ruby_init_stack): ditto.
+
+Sun Apr 19 13:17:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb (Gem::QuickLoader#push_gem_version_on_load_path):
+ check for requirement if the gem is installed. a patch from
+ Kyosuke MOROHASHI at [ruby-dev:38020].
+
+Sun Apr 19 01:39:17 2009 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_seteuid_m): defined to use rb_f_notimplement if not
+ implemented.
+ (proc_setegid_m): ditto.
+
+Sun Apr 19 01:03:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_setuid): use rb_f_notimplement if not implemented.
+ (proc_setgid): ditto.
+
+Sat Apr 18 23:07:18 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/readline/readline.c: use rb_f_notimplement for methods not
+ implemented.
+
+ * ext/openssl/ossl_engine.c: ditto.
+
+ * ext/openssl/ossl_config.c: ditto.
+
+ * ext/openssl/ossl_cipher.c: ditto.
+
+ * ext/openssl/ossl_pkcs5.c: ditto.
+
+ * ext/openssl/ossl_x509ext.c: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/basicsocket.c: ditto.
+
+ * ext/socket/ancdata.c: ditto.
+
+ * ext/socket/unixsocket.c: ditto.
+
+ * ext/iconv/iconv.c: ditto.
+
+Sat Apr 18 21:07:34 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c: use rb_f_notimplement for methods not
+ implemented.
+
+Fri Apr 17 01:51:17 2009 Tanaka Akira <akr@fsij.org>
+
+ * node.h (rb_notimplement_body_p): declared.
+
+ * vm_method.c (Init_eval_method): suppress a warning.
+
+ * io.c (rb_io_fsync): use rb_f_notimplement if not implemented.
+ (rb_io_close_on_exec_p): ditto.
+ (rb_io_set_close_on_exec): ditto.
+ (rb_io_fcntl): ditto.
+ (rb_f_syscall): ditto.
+
+ * dir.c (dir_tell): ditto.
+ (dir_seek): ditto.
+ (dir_s_chroot): ditto.
+
+ * process.c (proc_getpgrp): ditto.
+ (proc_setpgrp): ditto.
+ (proc_getpgid): ditto.
+ (proc_setpgid): ditto.
+ (proc_setsid): ditto.
+ (proc_getpriority): ditto.
+ (proc_setpriority): ditto.
+ (proc_getrlimit): ditto.
+ (proc_setrlimit): ditto.
+ (p_sys_setuid): ditto.
+ (p_sys_setruid): ditto.
+ (p_sys_seteuid): ditto.
+ (p_sys_setreuid): ditto.
+ (p_sys_setresuid): ditto.
+ (p_sys_setgid): ditto.
+ (p_sys_setrgid): ditto.
+ (p_sys_setegid): ditto.
+ (p_sys_setregid): ditto.
+ (p_sys_setreuid): ditto.
+ (p_sys_setresgid): ditto.
+ (p_sys_issetugid): ditto.
+ (proc_getgroups): ditto.
+ (proc_setgroups): ditto.
+ (proc_initgroups): ditto.
+ (proc_daemon): ditto.
+ (rb_proc_times): ditto.
+
+ * file.c (rb_file_s_lchown): ditto.
+ (rb_file_s_link): ditto.
+ (rb_file_s_symlink): ditto.
+ (rb_file_s_readlink): ditto.
+ (rb_file_s_truncate): ditto.
+ (rb_file_truncate): ditto.
+
+Fri Apr 17 00:53:47 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/cgi/core.rb (read_multipart): When path is not defined,
+ define local_path as a method always returning nil instead of
+ aliasing. This is because StringIO#path no longer exists.
+
+Fri Apr 17 00:45:09 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * dir.c (bracket): fix escape handling for range character in bracket
+ of fnmatch pattern. e.g., '[a\-c]' should not match 'b'.
+
+Thu Apr 16 23:09:03 2009 Tanaka Akira <akr@fsij.org>
+
+ * class.c (rb_define_method_id): use rb_define_notimplement_method_id
+ if rb_f_notimplement is given.
+ (rb_define_protected_method): ditto.
+ (rb_define_private_method): ditto.
+ (rb_define_method): use rb_define_method_id.
+
+ * include/ruby/intern.h (rb_f_notimplement): declared.
+ (rb_define_notimplement_method_id): declared.
+
+ * proc.c (method_inspect): show not-implemented.
+
+ * vm_method.c (notimplement_body): new variable.
+ (rb_notimplement_body_p): new function.
+ (rb_method_boundp): return false if not implemented.
+ (rb_f_notimplement): new function.
+ (rb_define_notimplement_method_id): new function.
+
+ * process.c (rb_f_fork): use rb_f_notimplement if not implemented.
+
+ * file.c (rb_file_s_lchmod): use rb_f_notimplement if not implemented.
+
+Wed Apr 15 20:24:49 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_flatten): flatten(0) works as Array#dup.
+ [ruby-core:23168]
+
+ * test/ruby/test_array.rb: add a test for above.
+
+Wed Apr 15 11:53:35 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (fnmatch_helper): use rb_enc_precise_mbclen and
+ fail if bytes are invalid. [ruby-dev:38307]
+
+Tue Apr 14 18:11:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (bracket): if same in bytes, path is matching.
+ [ruby-dev:38305]
+
+Mon Apr 13 17:21:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): scan coderange incrementally.
+
+Mon Apr 13 11:35:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): optimize previous commit.
+ [ruby-list:45954]
+
+Mon Apr 13 10:58:54 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): check encoding compatibility only on
+ real parts.
+
+Sun Apr 12 19:54:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (bracket, fnmatch_helper): compare bytewise first, to get
+ rid of invalid byte sequence. [ruby-dev:38303]
+
+Sat Apr 11 08:45:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): phony ruby target needs empty command.
+
+Fri Apr 10 11:32:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (up): updates timestamp file.
+
+Fri Apr 10 04:54:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): info-program needs common.mk.
+
+Fri Apr 10 03:46:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_INSTALL_NAME): use --program-transform-name.
+
+ * instruby.rb, mkconfig.rb: deal with --program-transform-name
+ better. now supports s, y commands and single addressing.
+
+Thu Apr 9 23:59:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: don't override the rule for ruby.
+
+Wed Apr 8 21:58:12 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_str_dump): buffer length plus one byte for null
+ terminator. [ruby-dev:38294]
+
+ * test/ruby/test_m17n.rb (test_str_dump): add a test for above.
+
+Wed Apr 8 20:08:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): should not sign-expand non-ascii.
+ [ruby-core:23158]
+
+Wed Apr 8 17:29:29 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_chop_bang): reset coderange. [ruby-core:23155]
+
+Wed Apr 8 14:00:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (what_type?): fixed typo, and refined for member of
+ aggregation types.
+
+ * lib/mkmf.rb (Logging.postpone): copy postponed output always.
+
+Wed Apr 8 09:45:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_SO): removed redundant additional version
+ numbers.
+
+Tue Apr 7 13:35:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (info): shows configured names.
+
+ * configure.in (Makefile): works even if RUBY_INSTALL_NAME
+ contains macro.
+
+ * configure.in (LIBRUBY_DLDFLAGS): compatibility version is
+ ruby_version.
+
+ * configure.in (RUBY_REPLACE_TYPE): defines type modifier prefix
+ for printf.
+
+Tue Apr 7 02:27:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_DEFINT): should pass includes to
+ AC_CHECK_SIZEOF and RUBY_CHECK_SIZEOF.
+
+ * configure.in (CFLAGS, CXXFLAGS): need ARCH_FLAG for universal
+ binary.
+
+Tue Apr 7 01:08:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): reduce fragments if no precision lost.
+ c.f. [ruby-core:23075]
+
+Mon Apr 6 23:16:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CFLAGS, CXXFLAGS): override with $cflags and
+ $cxxflags if not given. [ruby-core:23130]
+
+Mon Apr 6 19:26:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (utime_failed): refined the error message for EINVAL on
+ DOSISH platforms, where it may fail depending on filesystems.
+ see [ruby-dev:38277].
+
+Mon Apr 6 16:38:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (sys_fail2, rb_file_s_readlink, BUFCHECK, rmext),
+ (rb_file_s_basename): get rid of overflow.
+
+Mon Apr 6 15:11:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (int_chr): checks overflow.
+
+Mon Apr 6 10:49:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/stringio/test_stringio.rb (test_path): StringIO#path is no
+ longer defined. [ruby-dev:38254]
+
+Mon Apr 6 10:47:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_path): removed. [ruby-dev:38254]
+
+Sun Apr 5 18:02:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_fd_resize): does nothing on Win32.
+
+Sat Apr 4 17:05:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (RB_NUM_COERCE_FUNCS_NEED_OPID): macro to
+ check compatibility. [ruby-dev:38162]
+
+Sat Apr 4 07:38:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb (sitearch): default to arch.
+
+Fri Apr 3 14:02:42 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/irb/completion.rb (IRB::InputCompletor::Operators): Add
+ overloadable negative operators.
+
+ * lib/irb/ruby-lex.rb (RubyLex#lex_init): Support overloadable
+ negative operators.
+
+ * lib/irb/ruby-lex.rb (RubyLex#identify_identifier): Minus signs
+ need to be escaped in regexp character class.
+
+ * misc/ruby-mode.el (ruby-font-lock-keywords, ruby-parse-partial):
+ Support overloadable negative operators.
+
+Fri Apr 3 12:45:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: quotes arguments with spaces always.
+
+Thu Apr 2 14:50:06 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/getoptlong.rb: remove unused rdoc/usage from example.
+ [ruby-core:23098]
+
+Thu Apr 2 07:42:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): updated.
+
+Wed Apr 1 20:37:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (rb_cv_fork_with_pthread): fail if the child process
+ fail.
+
+Wed Apr 1 19:46:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): support for parallel make. a
+ patch from Takuto Matsuu at [ruby-dev:38220].
+
+Wed Apr 1 19:39:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBY_LDSHARED): use $(CC) instead of cc.
+ a patch from Wataru Kimura at [ruby-dev:38225].
+
+Wed Apr 1 18:53:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): should not #include inside a
+ function, since headers may have declarations.
+ c.f. [ruby-core:23095]
+
+Wed Apr 1 18:44:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: ignores version numbers in config.status. replaces
+ all $$s in program_transform_name.
+
+Wed Apr 1 15:12:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (.c.i): use CPP instead of CC, since gcc -E can'
+ work with multiple -arch options.
+
+Wed Apr 1 13:46:20 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_thread_fd_select): new function to call select
+ using rb_fdset_t.
+
+ * io.c (select_internal): use rb_thread_fd_select instead of
+ rb_thread_select. based on the patch from Kengo Matsuyama.
+ [ruby-dev:38221]
+
+Wed Apr 1 13:16:19 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_sleep): RDoc disambiguation. [ruby-talk:332632]
+
+Tue Mar 31 15:17:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: fixed the help strings for the header and library
+ dir switches, and updated to use AS_HELP_STRING. patches from
+ Richard Brown, c.f. [ruby-core:23067].
+
+Mon Mar 31 08:18:57 2009 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * test/csv/test_interface.rb, test/csv/test_serialization.rb:
+ Trying more fixes some failing tests on Windows.
+
+Mon Mar 30 19:04:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * .gdbinit (rp): show negative fixnum correctly.
+
+Mon Mar 30 12:12:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (eval_string_with_cref): replaces the message if
+ frozen. [ruby-dev:38208]
+
+Mon Mar 30 01:00:20 2009 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * test/csv/test_interface.rb: Trying a fix for some failing tests
+ on Windows.
+
+Sun Mar 29 08:59:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pathname.rb (Pathname#relative_path_from): compares path
+ components according to system default case-sensitiveness.
+ [ruby-core:22829]
+
+Sat Mar 28 11:10:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ruby.imp): all symbols in static library need to be
+ exported, so that encoding-extensions can be loaded. based on a
+ patch from Yutaka Kanemoto <kinpoco AT gmail.com> in
+ [ruby-talk:332282].
+
+Sat Mar 28 08:49:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): checks if named argument given twice.
+
+ * sprintf.c (GETNAMEARG): remembers named arg is used, to get rid
+ of too many arguments warning.
+
+Sat Mar 28 03:16:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (link_command, cc_command, cpp_command): should no
+ override extout defined in extmk.rb.
+
+Fri Mar 27 12:56:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (what_type?): checks more restrictively, and
+ supports universal binary.
+
+Fri Mar 27 01:33:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_cmp): negate the result of reverse comparison.
+
+Fri Mar 27 01:19:50 2009 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_cmpint): FIX2INT may fail on LP64 platforms.
+
+Thu Mar 26 12:22:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb (String#is_binary_data?): TAB would be
+ usually considered to be included in text data.
+
+ * lib/rdoc/parser.rb (RDoc::Parser.binary?): blksize may be nil
+ and is irrelevant to whether a file is binary. copied from
+ above since TAB and newlines would be usually considered to be
+ included in text data.
+
+Thu Mar 26 11:33:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths): considers
+ --program-prefix and --program-suffix. reapplied r19923.
+
+Wed Mar 25 07:45:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (target_alias): replaces cpu with universal too.
+
+ * configure.in (target): replaces cpu with arch by --with-arch.
+
+ * mkconfig.rb (TOPDIR): chops arch in config instead of
+ RUBY_PLATFORM which varies on universal_binary.
+
+ * mkconfig.rb (MAJOR, MINOR, TEENY): reads from version.h always.
+
+Tue Mar 24 19:23:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): need to include $4.
+
+Tue Mar 24 17:08:52 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * io.c (rb_io_inspect): Cannot access fptr->fd if fptr is NULL.
+ This fixes a coredump caused by: ruby -e "class X < IO; def
+ initialize; end; end; p X.new.inspect"
+
+Mon Mar 23 22:01:00 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_timespec): use NUM2TIMET.
+ (time_s_at): ditto.
+
+Mon Mar 23 21:52:26 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * process.c (Init_process): Better patch for eliminating an
+ "unused variable".
+
+Mon Mar 23 21:41:14 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dbm/dbm.c (fdbm_initialize): Make the file variable
+ volatile, because FilePathValue() currently does not protect the
+ given variable from GC. (Probably it should)
+
+ * ext/sdbm/init.c (fsdbm_initialize): Ditto.
+
+Mon Mar 23 19:22:14 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * file.c (rb_file_s_lstat): Back out.
+
+Mon Mar 23 18:54:57 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * file.c (rb_file_s_stat, rb_file_s_lstat): Remove repeated type
+ checks.
+
+Mon Mar 23 14:57:48 2009 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (init_heap): set default to heap slots length
+ if HEAP_OBJ_LIMIT is larger than HEAP_MIN_SLOTS. [Bug #1310]
+ (set_heaps_increment): increment next_heaps_length if
+ next_heaps_length and heaps_used are same.
+
+Mon Mar 23 14:32:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): use original command if not found.
+
+Mon Mar 23 06:51:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (link_so): replaces $(TARGET) with basename of the
+ target. [ruby-talk:330286]
+
+Sun Mar 22 14:51:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): use NULL as
+ application name for batch files.
+
+Sat Mar 21 15:54:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl.c (write_would_block): defined.
+ (read_would_block): defined.
+ (ossl_start_ssl): add nonblock argument.
+ (ossl_ssl_connect): follow ossl_start_ssl change.
+ (ossl_ssl_connect_nonblock): new method.
+ (ossl_ssl_accept): follow ossl_start_ssl change.
+ (ossl_ssl_accept_nonblock): new method.
+ (ossl_ssl_read_internal): use write_would_block and
+ read_would_block.
+ (ossl_ssl_write_internal): ditto.
+
+Sat Mar 21 08:19:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_exec): prints error message only on platforms
+ neither close-on-exec nor spawnv is supported.
+
+Sat Mar 21 08:17:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): omit program name
+ if actual program path is found. [ruby-core:22960]
+
+Sat Mar 21 07:25:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): should pass program name even if multiple
+ arguments are given. fix for TestProcess::test_argv0.
+
+Sat Mar 21 02:37:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/lib/openssl/buffering.rb
+ (OpenSSL::Buffering#write_nonblock): new method.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_write_nonblock): new method.
+ (ossl_ssl_write_internal): defined.
+ (ossl_ssl_write): use ossl_ssl_write_internal.
+
+Fri Mar 20 18:25:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (errmap): added ERROR_MOD_NOT_FOUND.
+
+Fri Mar 20 09:22:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (libprefix): must not append "lib" after $(libdir),
+ when load_relative is not used on darwin. a patch from Kenta
+ Murata at [ruby-dev:38182].
+
+Thu Mar 19 20:29:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_mWaitReadable): defined.
+ (rb_mWaitWritable): defined.
+ (io_getpartial): extend IO::WaitReadable on EWOULDBLOCK and EAGAIN.
+ (rb_io_write_nonblock): extend IO::WaitWritable on EWOULDBLOCK and
+ EAGAIN.
+
+ * error.c (make_errno_exc): extracted from rb_sys_fail.
+ (rb_mod_sys_fail): new function.
+
+ * include/ruby/ruby.h (rb_mod_sys_fail): declared.
+ (rb_mWaitReadable): declared.
+ (rb_mWaitWritable): declared.
+
+ * ext/socket/init.c (rsock_s_recvfrom_nonblock): extend
+ IO::WaitReadable on EWOULDBLOCK and EAGAIN.
+ (rsock_s_accept_nonblock): extend IO::WaitReadable on EWOULDBLOCK,
+ EAGAIN, ECONNABORTED and EPROTO.
+
+ * ext/socket/socket.c (sock_connect_nonblock): extend IO::WaitWritable
+ on EINPROGRESS.
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): extend
+ IO::WaitWritable on EWOULDBLOCK and EAGAIN.
+ (bsock_recvmsg_internal): extend IO::WaitReadable on EWOULDBLOCK and
+ EAGAIN.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read_internal): raise SSLError
+ extended by IO::WaitReadable/IO::WaitWritable on
+ SSL_ERROR_WANT_READ/SSL_ERROR_WANT_WRITE.
+
+ * ext/openssl/ossl.c (ossl_make_error): extracted from ossl_raise.
+ (ossl_exc_new): new function.
+
+ * ext/openssl/ossl.h (ossl_exc_new): declared.
+
+ * lib/net/protocol.rb (rbuf_fill): rescue IO::WaitReadable and
+ IO::WaitWritable.
+
+ [ruby-core:22539], [ruby-dev:38140]
+
+Thu Mar 19 18:49:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): allows qualified name.
+
+ * configure.in (RUBY_REPLACE_TYPE): checks more strictly.
+
+ * configure.in (struct stat.st_size, struct stat.st_blocks),
+ (struct stat.st_ino): check for size.
+
+ * lib/mkmf.rb (check_sizeof): allows qualified name.
+
+ * file.c (rb_stat_ino, rb_stat_blocks): check by size.
+
+Wed Mar 18 16:59:48 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/test_syslog.rb (TestSyslog#test_open): check
+ param after block again. because detect not to call block.
+
+Wed Mar 18 16:54:04 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/socket/ancdata.c: not use pktinfo.ipi_spec_dst if not defined
+ * ext/socket/extconf.rb: define HAVE_IPI_SPEC_DST
+
+Wed Mar 18 16:38:11 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/test_syslog.rb (TestSyslog#test_open): check
+ block parameter in block. [ruby-dev:38180]
+
+Wed Mar 18 12:48:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (report_bug): rb_bug can be caused by extension
+ libraries.
+
+Wed Mar 18 02:41:33 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (open_server_inaddr_any): fixed multiple network
+ families problem. a patch from Charl Matthee at [ruby-core:21033].
+
+Tue Mar 17 21:42:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (package): creates .revision.time and passes
+ CHDIR to create prerequisite files.
+
+Tue Mar 17 18:00:55 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (Enumerator#{each_,}{with_index,with_object}): Fix
+ a bug where any parameter but the first one is dropped even if
+ multiple values are yielded with. [Bug #1198]
+
+Tue Mar 17 14:25:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#sub): set $~ in block.binding.
+ [ruby-dev:38173]
+
+Tue Mar 17 13:48:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): added RUBY_COREDLL.
+
+ * ext/dl/handle.c (rb_dlhandle_initialize): returns msvcrt if libc
+ or RUBY_COREDLL is given. [ruby-core:22828]
+
+Tue Mar 17 10:29:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c, dln.c, parse.y, re.c, ruby.c, sprintf.c, strftime.c,
+ string.c, util.c, variable.c: use strlcpy, memcpy and snprintf
+ instead of strcpy, strncpy and sprintf.
+
+Mon Mar 16 17:15:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/dl/test_win32.rb (Win32API): enclosed by DL::TestWin32.
+ [ruby-core:22827]
+
+Mon Mar 16 16:37:22 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tcltklib.c (eventloop_sleep, lib_eventloop_core),
+ (lib_watchdog_core): tv_usec is not time_t.
+
+Mon Mar 16 12:30:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (REVISION_H): keeps timestamp of revision.h.
+ [ruby-core:22900]
+
+ * tool/ifchange, win32/ifchange.bat: extended --timestamp option.
+
+Mon Mar 16 09:28:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk, win32/Makefile.sub: added preprocessing rules.
+
+Sun Mar 15 12:34:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/minitest/test_mini_test.rb: fixed tests depending on the
+ detail of floating point representation.
+
+Sun Mar 15 12:01:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/installer.rb (Gem::Installer#shebang): fix for env
+ shebang.
+
+Sun Mar 15 11:15:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h ({RSTRING,RBIGNUM}_EMBED_LEN_MAX): made int.
+
+ * include/ruby/ruby.h (OBJ_{TAINTED,UNTRUSTED,FROZEN}): return int.
+
+ * include/ruby/encoding.h (ENC_CODERANGE): ditto.
+
+Sun Mar 15 11:11:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_hash_uint, rb_hash_start, rb_hash_end): use VALUE
+ rather than unsigned int.
+
+Sun Mar 15 11:00:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): stop the timer thread before exec.
+
+Sun Mar 15 09:17:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (.y.c): use SRC_FILE which contains slashes instead of
+ backslashes. [ruby-core:22891]
+
+Sun Mar 15 08:26:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (srcs-ext): creates ext/dl/callback/callback.c also.
+
+Sun Mar 15 03:29:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (SAVED_GROUP_ID, p_gid_switch): should be rb_gid_t.
+
+Sun Mar 15 02:53:13 2009 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_subpat): accept capture name.
+ (rb_str_aref): follow above change.
+ (rb_str_aref_m): pass the 2nd argument to rb_str_subpat.
+ (rb_str_subpat_set): accept capture name.
+ (rb_str_aset): follow above change.
+ (rb_str_partition): ditto.
+ (rb_str_aset_m): pass the 2nd argument to rb_str_subpat_set.
+
+ * include/ruby/intern.h (rb_reg_backref_number): declared.
+
+ * re.c (rb_reg_backref_number): defined.
+
+ [ruby-core:21057]
+
+Sun Mar 15 02:09:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (bmcall): should not uninitialized variable. a patch from
+ pegacorn at [ruby-dev:38169].
+
+Sat Mar 14 18:25:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_scan_oct, ruby_scan_hex): use size_t.
+
+Sat Mar 14 18:18:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_proc_call, rb_node_arity, bmcall, curry): checks
+ overflow.
+
+ * proc.c (rb_proc_parameters): unnamed_parameters() expects in
+ not VALUE.
+
+Sat Mar 14 17:54:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_each_words): assume no string exceeds INT_MAX.
+
+Sat Mar 14 15:59:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_spawn_internal): use int variable for status.
+
+Sat Mar 14 14:45:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_f_system): use rb_pid_t for pid.
+ (rb_spawn_internal): local variable renamed.
+
+Sat Mar 14 14:16:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strdup, Balloc, rv_alloc): use size_t.
+
+Sat Mar 14 13:53:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_qsort): the result of cmp must be signed, so ge
+ rid of reuse of a variable.
+
+Sat Mar 14 10:56:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (init_funcname_len, dln_find_exe_r, dln_find_file_r): use
+ size_t.
+
+ * file.c (rb_stat_inspect, file_expand_path): ditto.
+
+ * util.c (ruby_qsort): ditto.
+
+Sat Mar 14 10:39:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (CXX_EXT): checks for case-sensitive filesystem with
+ FNM_SYSCASE rather than build_os.
+
+Fri Mar 13 23:03:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (wait_connectable0): remove unreachable code.
+
+Fri Mar 13 23:00:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): pass [include] to AC_CHECK_SIZEOF.
+
+Fri Mar 13 20:58:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * dln.c (dln_find_1): compare fspace in size_t world.
+
+Fri Mar 13 18:58:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CFLAGS, CXXFLAGS): moved after warnflags.
+
+Fri Mar 13 18:10:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_throw_obj): inverted call flow. [ruby-core:22872]
+
+Fri Mar 13 17:04:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (bool): not define to get rid of conflict
+ against curses.
+
+Fri Mar 13 16:45:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/openssl_missing.h (i2d_of_void): cast for callbacks.
+ [ruby-core:22860]
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_by_id): suppress a
+ warning.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_flush_sessions): time_t may
+ be larger than long.
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_get_time),
+ (ossl_ssl_session_get_timeout): use TIMET2NUM() to convert
+ time_t.
+
+Fri Mar 13 15:10:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_set_value): should use
+ OPENSSL_free instead of free. a patch from Charlie Savage at
+ [ruby-core:22858].
+
+Fri Mar 13 21:11:51 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/sdbm/_sdbm.c: should include "ruby/defines.h" as well for
+ prototypes of compatibility functions on Win32 platform.
+ [ruby-core:22870]
+
+Fri Mar 13 10:42:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (AC_HEADER_STDBOOL): added.
+
+ * include/ruby/ruby.h (NUM2INT, rb_special_const_p): returns true
+ and false instead of Qtrue and Qfalse for platforms where VALUE
+ is bigger than int.
+
+ * gc.c (gc_stress_set), ext/openssl/ossl_asn1.c (decode_bool): go
+ rid of variables named `bool'.
+
+Fri Mar 13 10:16:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (struct stat.st_size): may be huge.
+
+Fri Mar 13 09:30:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (bigfixize): zero length Bignum is 0.
+
+Fri Mar 13 09:17:12 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils#fu_get_gid): stringify group
+ argument before making regexp match. [ruby-dev:38155]
+
+Fri Mar 13 08:06:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (rv_strdup): macro to duplicate nul-terminated string.
+ [ruby-core:22852]
+
+Thu Mar 12 22:41:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl: suppress warnings.
+
+ * ext/openssl/ossl.h (OSSL_Debug): don't use gcc extension for
+ variadic macro.
+
+Thu Mar 12 22:29:36 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (WARNFLAGS): warning 4996 is only in VC++8 or
+ later.
+
+Thu Mar 12 22:14:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_def_const): use INT2NUM because
+ OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG doesn't fit into Fixnum.
+
+Thu Mar 12 18:16:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c, bignum.c, dln.c, error.c, gc.c, io.c, marshal.c,
+ numeric.c, pack.c, strftime.c, string.c, thread.c, transcode.c,
+ transcode_data.h, util.c, variable.c, vm_dump.c,
+ include/ruby/encoding.h, missing/crypt.c, missing/vsnprintf.c:
+ suppress VC type warnings. [ruby-core:22726]
+
+ * marshal.c (div0), numeric.c (infinite_value): new functions to
+ get rid of VC division by 0 warnings.
+
+ * st.c: use st_index_t for indexes instead of int.
+
+ * vm.c (rb_vm_get_sourceline), vm_insnhelper.c (vm_throw): use
+ rb_num_t.
+
+Thu Mar 12 09:30:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): if same size type is found, no
+ more calculation is needed.
+
+ * configure.in (RUBY_DEFINT): falls back to RUBY_CHECK_SIZEOF if
+ size is not immediate.
+
+Thu Mar 12 09:24:24 2009 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h: suppress warnings of overflow.
+
+Thu Mar 12 09:15:14 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h: suppress warnings of overflow.
+
+Thu Mar 12 05:49:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (warnflags): added some default flags,
+ pointer-arith, write-strings and shorten-64-to-32, but suppress
+ unused-parameter and missing-field-initializers, if possible.
+
+ * configure.in (RUBY_CHECK_HUGE): checks whether a value range is
+ larger than long.
+
+ * file.c (rb_stat_blocks): struct stat.st_blocks may be larger
+ than long.
+
+ * io.c (copy_stream_fallback_body): off_t may be larger than long.
+
+ * iseq.c (rb_iseq_disasm): RSTRING_LEN() returns long.
+
+ * process.c (rb_f_sleep): time() needs time_t.
+
+ * random.c (fill_random_seed): enclosed conditionally used
+ variables.
+
+ * thread_pthread.c (ruby_init_stack): range of rlim_cur may be
+ larger than int.
+
+ * missing/vsnprintf.c (BSD_vfprintf): commented out code which has
+ no effect at all.
+
+Thu Mar 12 02:10:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: strip spaces from ruby_version.
+ Sun C 5.9 SunOS_i386 Build47_dlight 2007/05/22 generates
+ `ruby_version= 1 "." 9 "." 1'.
+
+Thu Mar 12 01:18:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_seek): use long for seekdir().
+
+Thu Mar 12 01:08:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/ytab.sed: replaces backslashes with slash for nmake.
+
+Wed Mar 11 21:23:06 2009 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mload): don't clear tm_mday.
+
+Wed Mar 11 20:13:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (rb_dlhandle_sym): RTLD_NEXT is not for symbol
+ name. [ruby-dev:38150]
+
+Wed Mar 11 17:26:38 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/Win32API.rb: call by :stdcall as default.
+ [ruby-core:22826]
+
+Wed Mar 11 13:27:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stack_type): uses VALUE which is able to be stored
+ parser stack.
+
+Wed Mar 11 13:22:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_env): set TMPDIR if none of TMPDIR, TMP,
+ TEMP is set.
+
+ * win32/win32.c (rb_w32_telldir, rb_w32_seekdir): should use long,
+ as defined by SUSv3.
+
+Wed Mar 11 13:03:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/handle.c (rb_dlhandle_sym): fixed heap corruption.
+ [ruby-core:22822]
+
+Wed Mar 11 06:12:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_loadpath_safe): expands libpath and removes
+ last /lib.
+
+Wed Mar 11 04:47:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_to_i, time_hash): time_t may be bigger than long
+ and int.
+
+ * time.c (time_timeval, rb_time_timeval, obj2nsec, time_strftime),
+ (time_mdump, time_mload): suppress warnings.
+
+ * win32/Makefile.sub (config.h): added TIMET2NUM and NUM2TIMET.
+
+Wed Mar 11 04:29:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c: suppress warnings. based on a patch from Charlie
+ Savage at [ruby-core:22804].
+
+Wed Mar 11 04:22:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (sig_trap): suppress warnings.
+
+Tue Mar 10 20:07:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (WARNFLAGS): uses -wd4996 instead of
+ CRTDEFFLAGS. cf. [ruby-core:22725]
+
+Tue Mar 10 19:58:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (strcasecmp, strncasecmp): use _ prefixed
+ versions to suppress warnings.
+
+ * ext/dl/callback/mkcallback.rb (DLTYPE[FLOAT]): cast to suppress
+ warnings. [ruby-core:22792]
+
+ * array.c, bignum.c, gc.c, numeric.c, string.c, util.c, insns.def,
+ missing/crypt.c, missing/vsnprintf.c, : suppress warnings.
+ [ruby-core:22792]
+
+Tue Mar 10 13:45:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (LDFLAGS): moved -link to TRY_LINK, LINK_SO
+ and so on. based on a patch by Charlie Savage at
+ [ruby-core:22794]
+
+ * win32/Makefile.sub (config.h): passes LDFLAGS to rbconfig.rb so
+ that extconf.rb could refer it. [ruby-core:22725]
+
+Tue Mar 10 11:36:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (prepare_iseq_build): too few arguments to function
+ rb_ary_tmp_new().
+
+Tue Mar 10 10:53:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_compile_with_option): argument may be converted.
+
+Tue Mar 10 04:56:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MINIRUBY): keep macro into Makefile.
+
+ * configure.in (RUBY_CHECK_SIZEOF): fix for fallback.
+
+ * configure.in (MANGLED_PATH): defines for RUBYLIB_PREFIX.
+
+ * ruby.c (ruby_init_loadpath_safe): uses string as buffer.
+
+ * symbian/setup (config_h): defines MANGLED_PATH.
+
+Tue Mar 10 03:48:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/callback/depend: fix for parallel build.
+
+ * ext/dl/callback/extconf.rb: callback.h is no longer created.
+
+ * ext/dl/callback/mkcallback.rb: creates main source first.
+
+ * ext/dl/callback/extconf.rb ($distcleanfiles): added callback.c.
+
+Tue Mar 10 00:06:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (load_relative): new option to enable load path
+ relative to libruby_so.
+
+ * ruby.c (ruby_init_loadpath_safe): added the case using dladdr().
+
+Mon Mar 9 16:49:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake: updated to rake code to rake-0.8.4 source code base.
+
+Mon Mar 9 16:03:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/installer.rb (Gem::Installer#initialize): env may
+ not be under /usr/bin.
+
+ * lib/rubygems/installer.rb (Gem::Installer#shebang): uses /bin/sh
+ if shebang has any options, since env shebang trick does no
+ work with options.
+
+Mon Mar 9 15:19:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (manpages): use basename to compare and for Tempfile.
+
+Mon Mar 9 14:55:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (default gems): installs default gemspecs.
+
+Mon Mar 9 14:48:08 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (OPTFLAGS): simplified. see [ruby-core:22725]
+
+Mon Mar 9 14:33:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb: prints names of the directories where files are
+ installed to.
+
+Mon Mar 9 02:25:54 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_proc.rb: add some tests.
+
+Mon Mar 9 01:38:00 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_enum.rb: add some tests.
+
+Mon Mar 9 01:12:37 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_object.rb: add a test for Object#method_missing.
+
+Mon Mar 9 01:11:17 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_file_exhaustive.rb: add tests for File#size and
+ File.absolute_path.
+
+Sun Mar 8 23:02:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (LDFLAGS): always prepends -link.
+
+Sun Mar 8 11:39:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_SIZEOF): dirty hack to compute multiple
+ sizeof, for apple's universal binary.
+
+Sat Mar 7 22:06:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (universal_binary): checks if sizes are same on all
+ architectures.
+
+Sat Mar 7 18:45:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: checks if cd really succeeded.
+
+Sat Mar 7 14:24:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: don't use CONFIG_SHELL for testing shell feature in
+ Makefile.
+
+Sat Mar 7 14:07:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: fix the location of cdcmd.
+
+Sat Mar 7 13:52:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: the shell which runs configure may be different from
+ the shell for make. configure likes bash but Makefile specifies
+ SHELL=/bin/sh.
+
+Sat Mar 7 12:31:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/erb/test_erb.rb: reverted space sensitive test results.
+
+ * test/rdoc/test_rdoc_parser_c.rb: ditto.
+
+ * test/rdoc/test_rdoc_ri_default_display.rb: ditto.
+
+Fri Mar 6 23:35:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (SecureRandom.urlsafe_base64): add optional
+ argument to add padding.
+
+Fri Mar 6 19:25:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_LIB_VERSION_STYLE): sets full or minor style
+ not to show RUBY_VERSION_MAJOR and so on.
+
+ * version.h (RUBY_LIB_VERSION): makes from RUBY_LIB_VERSION_STYLE.
+
+ * configure.in, Makefile.in, win32/Makefile.sub (CHDIR): cd using
+ physical directory.
+
+ * Makefile.in (update-mspec): split from update-rubyspec.
+
+ * win32/Makefile.sub (update-{rubyspec,mspec}): added.
+
+Fri Mar 6 14:28:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (INSNS): moved variable
+ definition before rule.
+
+Fri Mar 6 13:47:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake/loaders/makefile.rb (Rake::MakefileLoader#load): deals with
+ escaped spaces. incorporated from rake 0.8.4.
+
+ * lib/rake/testtask.rb (Rake::TestTask#define): passes each libs
+ as each arguments with expanded. incorporated from rake 0.8.4.
+
+Thu Mar 5 18:36:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_to_s): keeps enough precision for round trip.
+ [ruby-core:22325]
+
+Thu Mar 5 17:42:06 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fill): doc for Array#fill misses indication
+ about negative value for the start argument. [ruby-core:22497]
+
+Thu Mar 5 16:56:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (Dir.tmpdir): not use USERPROFILE, and ignores
+ non-existent directory.
+
+Thu Mar 5 14:52:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_sysinit): initializes version info first.
+
+ * win32/win32.c (rb_w32_osid): always define for binary compatibility.
+
+Thu Mar 5 11:52:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (make_insns_rules): rule to make rules for insns.
+
+Thu Mar 5 11:27:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (miniruby.exe): workaround for a failure of
+ mt.exe on Windows 7 beta. [ruby-talk:330284]
+
+Thu Mar 5 10:32:17 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/dl/test_base.rb: Add dragonfly to libc and libm switch.
+
+Thu Mar 5 10:29:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_eql): extracted from rb_str_equal and rb_str_eql.
+
+ * string.c (rb_str_chomp_bang): keeps 7bit coderange.
+
+Thu Mar 5 10:10:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (enc_initialized_p): ENC_UNINITIALIZED
+ is not defined already.
+
+ * include/ruby/encoding.h (ENC_FROM_ENCINDEX): removed because
+ depending on a static variable.
+
+Thu Mar 5 04:42:52 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: fix wrong test, and add a test for
+ sort_by!.
+
+Thu Mar 5 04:32:38 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: add some tests for coverage.
+
+Thu Mar 5 00:06:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/README.win32 (Requirement): added unicows.lib and dll.
+
+Wed Mar 4 23:29:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, win32/configure.bat (--enable-win95): new option
+ to enable/disable win95 support.
+
+Wed Mar 4 21:21:51 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/thread.rb (SizedQueue#push): fix limit condition.
+ [ruby-dev:38135]
+
+Wed Mar 4 20:27:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (mingw): checks if unicows.lib is available.
+
+ * include/ruby/win32.h (WIN95): moved to config.h
+
+ * win32/Makefile.sub (LIBS): links unicows.lib if available.
+
+ * win32/Makefile.sub (config.h): defines WIN95 only if unicows.lib
+ is available.
+
+ * win32/setup.mak (-unicows-): checks if unicows.lib is available.
+
+Tue Mar 3 17:10:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): removes object files no longer used and
+ files to be removed by old distclean.
+
+Tue Mar 3 16:51:51 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/resolv.rb: get rid of warning.
+
+ * ext/dl/lib/dl/func.rb: ditto.
+
+Tue Mar 3 16:25:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake), lib/mkmf.rb (create_makefile): $objs and
+ $srcs are always Array or nil now.
+
+Tue Mar 3 15:54:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/{registry,resolv}.rb: use dl/import instead
+ of Win32API.
+
+Tue Mar 3 15:53:20 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/dl/func.rb (DL::Function.name): delegate to @cfunc.
+
+Tue Mar 3 15:40:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl.c (rb_dl_init_callbacks): autoloads callbacks.
+
+ * ext/dl/callback: split from dl.
+
+ * ext/dl/lib/dl/cparser.rb (DL::CParser::parse_signature): fixed
+ variable name.
+
+ * ext/dl/lib/dl/pack.rb (DL::PackInfo): reduced redundant
+ initialization.
+
+ * ext/dl/lib/dl/stack.rb (DL::Stack): ditto.
+
+ * ext/dl/lib/dl/value.rb (DL::ValueUtil#wrap_arg): NULL for nil.
+
+ * test/dl: moved from ext/dl/test.
+
+Tue Mar 3 14:57:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (main): passes $(MAKE) to mkmain_cmd
+
+ * ext/extmk.rb (command_output): uses arguments to invoke make.
+
+Tue Mar 3 01:56:03 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (SecureRandom.urlsafe_base64): delete padding.
+
+Mon Mar 2 21:39:08 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/sockport.h (SS_LEN): defined unconditionally.
+
+Mon Mar 2 21:26:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (anc_inspect_socket_creds): suppress warnings.
+
+Mon Mar 2 21:13:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (rsock_discard_cmsg_resource): defined
+ unconditionally.
+
+Mon Mar 2 21:06:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_mload): don't use "sun" variable
+ for Solaris.
+
+Mon Mar 2 21:01:36 2009 Tanaka Akira <akr@fsij.org>
+
+ * file.c: include fcntl.h for O_RDONLY on Solaris.
+
+Mon Mar 2 19:43:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::Parser#escape): escaped string is ascii
+ only.
+
+ * lib/uri/common.rb (URI::Parser#unescape): converts bytewise.
+ [ruby-dev:38005], [ruby-dev:38110]
+
+Mon Mar 2 16:40:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (Macros): added HAVE_RUBY_*_H.
+
+Mon Mar 2 12:22:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_env): keeps wide chars as wide chars.
+
+Mon Mar 2 11:01:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl.h (dlerror): fixed on Windows.
+
+ * ext/dl/handle.c (rb_dlhandle_initialize): returns handle to
+ libruby if nil is given on Windows as dlopen.
+
+ * ext/dl/handle.c (rb_dlhandle_sym): get rid of buffer overrun,
+ and try ASCII WINAPI versions too.
+
+Mon Mar 2 10:29:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_longjmp), include/ruby/intern.h (ruby_cleanup): fixed
+ prototypes.
+
+Mon Mar 2 00:56:45 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/observer.rb: The module observable uses now a hash to
+ store listeners. merged a patch from Alessandro Di Maria in
+ [ruby-core:22560].
+
+Sun Mar 1 22:59:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c: suppress warnings.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/unixsocket.c: ditto.
+
+Sun Mar 1 20:57:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ (rsock_getfamily): renamed from rb_sock_getfamily.
+
+Sun Mar 1 19:52:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/win32/lib/Win32API.rb (initialize): passes res
+ arguments to DL.
+
+Sun Mar 1 19:38:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_run): suppress a warning. a patch from
+ Charlie Savage at [ruby-core:22607].
+
+Sun Mar 1 19:36:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_dtoa): allocates one more byte to get rid of buffer
+ overrun. a patch from Charlie Savage at [ruby-core:22604].
+
+Sun Mar 1 19:10:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (.y.c): removed extra backslash. [ruby-core:22602]
+
+Sun Mar 1 19:02:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): fix for stdcall and missing
+ argument numbers. [ruby-core:22601]
+
+ * ext/dl/dl.h (DLSTACK_PROTO0_): added.
+
+ * ext/dl/mkcallback.rb (gencallback, gen_callback_file),
+ (rb_dl_init_callbacks): omit stdcall functions unless supported.
+
+ * lib/rubygems/config_file.rb (SHGetFolderPath): stdcall.
+
+Sun Mar 1 17:27:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (gfDebug): uncommented out.
+ [ruby-core:22600]
+
+Sun Mar 1 16:15:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_waitpid): use wait_each() on no waitpid platforms.
+ [ruby-dev:38054]
+
+Sun Mar 1 16:01:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_daemon): stops and restarts timer thread because
+ daemon(3) implies fork(2). [ruby-dev:38055]
+
+Sun Mar 1 15:45:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ (rsock_make_hostent): renamed from sock_make_hostent.
+ (rsock_addrinfo): renamed from sock_addrinfo.
+ (rsock_getaddrinfo): renamed from sock_getaddrinfo.
+ (rsock_socket): renamed from ruby_socket.
+ (rsock_sock_s_socketpair): renamed from sock_s_socketpair.
+ (rsock_connect): renamed from ruby_connect.
+
+ * ext/socket/socket.c (sock_listen): make it static.
+
+Sun Mar 1 15:29:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket: add rsock_ prefix.
+
+Sat Feb 28 21:52:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (rb_iterate): use volatile to suppress warnings.
+
+ * eval.c (ruby_cleanup): ditto.
+
+Sat Feb 28 20:09:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * eval_error.c (error_print): use volatile to suppress warnings.
+
+ * vm_eval.c (eval_string_with_cref): ditto.
+
+ * thread.c (rb_exec_recursive): ditto.
+
+ * eval_jump.c (rb_exec_end_proc): ditto.
+
+ * eval.c (ruby_exec_node): ditto.
+ (rb_longjmp): ditto.
+
+Sat Feb 28 18:28:58 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_unix_rights): check message type.
+
+Sat Feb 28 16:18:39 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/net/http.rb: suppress warnings of non-existing instance variable
+ access for SSL.
+
+Sat Feb 28 14:50:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (BasicSocket#connect_address): returns ::1
+ if the address is IPv4-mapped IPv6 address for 0.0.0.0 for MacOS X.
+
+Sat Feb 28 00:18:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c: suppress strict-aliasing warning with
+ gcc version 4.4.0 20090219 (Red Hat 4.4.0-0.21) on Fedora 11 Alpha.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/unixsocket.c: ditto.
+
+ * ext/socket/sockport.h (SS_LEN): defined.
+ (SET_SS_LEN): ditto.
+
+Fri Feb 27 22:30:18 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): close FDs passed by
+ SCM_RIGHTS unless :scm_rights=>true is given.
+ (discard_cmsg): extracted from rsock_discard_cmsg_resource.
+
+Fri Feb 27 22:14:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/lib/openssl/buffering.rb: define Buffering module under
+ OpenSSL. [ruby-dev:37906]
+
+Fri Feb 27 22:09:24 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb: don't define assert_not_* if already
+ overridden.
+
+Fri Feb 27 22:02:34 2009 Tanaka Akira <akr@fsij.org>
+
+ * util.c: fix SEGV by test_time.rb with
+ gcc version 4.4.0 20090219 (Red Hat 4.4.0-0.21) on Fedora 11 Alpha.
+
+Fri Feb 27 18:30:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (cdhash_type, iseq_set_sequence): should not call
+ methods of the argument of case, to keep the semantics of
+ case/when. [ruby-dev:38079]
+
+Fri Feb 27 18:01:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (ruby_get_stack_grow_direction): no needs to use thread
+ here, and not initialized yet. [ruby-core:22439]
+
+Fri Feb 27 17:45:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_load_ok): checks if regular file, except for the
+ platform disallows to open directories, e.g. dosish.
+ [ruby-dev:38097], [Bug #1221]
+
+Fri Feb 27 14:39:40 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (flo_eq, flo_gt, flo_ge, flo_lt, flo_le, flo_eql): revert
+ isnan() checks for VC++6.
+
+ * insns.def (opt_lt, opt_gt): ditto.
+
+Fri Feb 27 14:23:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (modifiable): check if really frozen.
+ [ruby-core:22559]
+
+Thu Feb 26 23:14:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (BasicSocket#connect_address): new method.
+
+Thu Feb 26 19:29:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (hash_foreach_iter): fix for prototype.
+
+Thu Feb 26 18:36:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (INSNS, newline.c, miniprelude.c, prelude.c),
+ (node_name.inc, known_errors.inc): unified from Makefile.in and
+ win32/Makefile.sub.
+
+Thu Feb 26 13:30:34 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * util.c (valid_filename): use our own implementation of open(),
+ close() and unlink().
+
+Thu Feb 26 13:23:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (cdhash_each): resurrects internal literals.
+
+Thu Feb 26 10:56:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (rb_w32_wopen): prototype forgotten.
+
+ * io.c (rb_sysopen_internal): shouldn't replace undefined chars in this
+ case.
+
+Thu Feb 26 01:34:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: more MSG_* constants.
+
+Thu Feb 26 00:21:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_level): extracted from sockopt_level_m.
+ (sockopt_optname): extracted from sockopt_optname_m.
+ (sockopt_data): apply StringValue.
+ (sockopt_s_linger): new method.
+ (sockopt_linger): new method.
+ (inspect_linger): show onoff value if it is neither 0 nor 1.
+
+Wed Feb 25 23:23:03 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_unix_rights): raise
+ NotImplementedError if no fd passing feature.
+ (ancillary_timestamp): raise NotImplementedError if no timestamp
+ feature.
+
+Wed Feb 25 23:18:53 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_s_unix_rights): new method.
+
+Wed Feb 25 23:01:26 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/unixsocket.c (unix_recv_io): prevent FD leak when 2 fd is
+ sent on LP64 platform.
+
+ * ext/socket/rubysocket.h (rsock_discard_cmsg_resource): declared.
+
+ * ext/socket/ancdata.c (rsock_discard_cmsg_resource): renamed from
+ discard_cmsg_resource. export it.
+
+Wed Feb 25 17:31:32 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (sysopen_func, rb_sysopen_internal, rb_sysopen): open file
+ by UTF-16'ed filename on Windows.
+
+ * io.c (rb_file_open_generic, rb_io_s_sysopen, rb_io_reopen,
+ argf_next_argv): follow above change.
+
+ * io.c (rb_scan_open_args): no longer need to convert filepath here on
+ Windows.
+
+ * win32/wio32.c (rb_w32_wopen): new function to open file by UTF-16'ed
+ filename.
+
+ * win32/win32.c (rb_w32_open): call rb_w32_open().
+
+Wed Feb 25 15:05:35 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): use un.rb as cp instead of
+ cmd.exe's copy command.
+
+ * lib/mkmf.rb (create_makefile): no longer need to convert path
+ separator when copying file.
+
+Wed Feb 25 12:27:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_force_encoding): should clear coderange at changing
+ encoding. [ruby-core:22437]
+
+Wed Feb 25 12:06:09 2009 <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline_1): enables limit even if rs is given.
+ [ruby-core:22434]
+
+Wed Feb 25 02:28:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): coderange may change.
+ [ruby-core:22414]
+
+Wed Feb 25 02:17:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_delete_bang): should recalculate coderange.
+ [ruby-talk:329267]
+
+Wed Feb 25 00:41:21 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * class.c (rb_scan_args): Allow specifying the number of trailing
+ mandatory arguments right after the number of optional arguments
+ only if the number of leading mandatory arguments is not omitted.
+
+ * ext/socket/tcpserver.c (tcp_svr_init): Make use of it.
+
+Wed Feb 25 00:28:25 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_size): new method added. [ruby-core:22088]
+
+Wed Feb 25 00:15:15 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (curses_colors): new method added. a patch
+ from Alexander Beisig in [ruby-core:22331].
+
+ * ext/curses/curses.c (curses_color_pairs): ditto.
+
+Wed Feb 25 00:05:13 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * class.c (rb_scan_args): Revamp rb_scan_args() to compute the
+ number of required and optional arguments precisely to prepare
+ for a more informative error message.
+
+Tue Feb 24 23:58:52 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_index, rb_ary_rindex): Emit a warning that a
+ given block is unused when an argument is specified.
+
+Tue Feb 24 22:00:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sockaddr_obj): convert fe80:1::1 to fe80::1%1.
+
+Tue Feb 24 19:56:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_timestamp): support SCM_BINTIME.
+
+Tue Feb 24 19:45:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_timestamp): new method.
+
+Tue Feb 24 19:01:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (main): split from exts and makes main program after
+ building exts with miniruby, to get rid of overwriting running
+ program. [ruby-core:22339]
+
+ * Makefile.in, win32/Makefile.sub (RUNCMD, MKMAIN_CMD): macros to
+ run script file.
+
+ * ext/extmk.rb (parse_args): added --command-output option which
+ creates script file to make main program.
+
+Tue Feb 24 17:58:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ripper.c): exec can't work on Windows.
+
+ * ext/ripper/depend (.SUFFIXES): nmake doesn't have .y by default.
+
+ * Makefile.in (id.h): overwrites unconditionally.
+
+Tue Feb 24 13:13:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD_vfprintf): ptrdiff_t may be larger than
+ long.
+
+Tue Feb 24 11:21:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (rb_disable_interrupt, rb_enable_interrupt): see
+ USE_TRAP_MASK.
+
+Tue Feb 24 10:49:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_waitpid): last argument was missing.
+
+ * process.c (waitall_each): fixed typo. a patch from shinichiro.h
+ <shinichiro.hamaji AT gmail.com> at [ruby-dev:38054].
+
+Tue Feb 24 01:53:40 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_eq): remove unnecessary NaN check using isnan().
+ comparison regarding NaN is false anyway.
+
+ * numeric.c (flo_gt, flo_ge, flo_lt, flo_le, flo_eql): ditto.
+
+Tue Feb 24 01:22:19 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_thread.rb: fix for environment where fork is not
+ available.
+
+Tue Feb 24 01:19:38 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (thread_cleanup_func): unlock all locked mutexes even when
+ forking. [ruby-core:22269]
+
+Tue Feb 24 00:54:16 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (opt_minus): inline float operation.
+
+ * insns.def (opt_lt, opt_gt): ditto.
+
+Tue Feb 24 00:24:13 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_each): check #succ only when it is really
+ needed. small performance improvement.
+
+ * math.c (Need_Float): call rb_to_float() only when it is really
+ needed. small performance improvement.
+
+Tue Feb 24 00:19:33 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/pathname.rb (Pathname#foreachline): removed wrongly
+ resurrected method. [ruby-dev:38065]
+
+Mon Feb 23 20:39:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (inspect_timespec_as_abstime): new function to
+ show struct timespec.
+ (ancillary_inspect): use it for SCM_TIMESTAMPNS on GNU/Linux.
+
+Mon Feb 23 20:30:06 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (inspect_bintime_as_abstime): new function to
+ show struct bintime.
+ (ancillary_inspect): use it for SCM_BINTIME on FreeBSD.
+
+ * ext/socket/mkconstants.rb: define SCM_BINTIME.
+
+Mon Feb 23 20:18:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (inspect_timeval_as_abstime): use time_t
+ variable to avoid a warning on environments which use long as
+ tv_sec as NetBSD.
+
+Mon Feb 23 15:53:30 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_index, rb_ary_rindex): We know that argc is not
+ zero when we reach here.
+
+ * array.c (rb_ary_initialize, rb_ary_index): Shrink a double
+ space. (NFC)
+
+Mon Feb 23 14:47:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (mv): added description for the case of
+ different partitions. [ruby-talk:329072]
+
+Mon Feb 23 10:19:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (USE_SYMBOL_AS_METHOD_NAME): Module#methods,
+ #singleton_methods and so on return Symbols. [ruby-talk:328775]
+
+Mon Feb 23 10:15:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja: added macros for the Compatibilities.
+
+Mon Feb 23 03:19:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: define SO_TIMESTAMPNS and SCM_TIMESTAMPNS
+ if available.
+
+Mon Feb 23 02:54:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_inspect): use SCM_TIMESTAMP instead
+ of SO_TIMESTAMP. SCM_TIMESTAMP != SO_TIMESTAMP on MacOS X.
+
+Mon Feb 23 02:44:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (inspect_timeval_as_abstime): new function.
+ (ancillary_inspect): use it for SO_TIMESTAMP.
+
+Mon Feb 23 02:26:44 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_timeval_as_interval): renamed from
+ inspect_timeval.
+
+Mon Feb 23 02:10:09 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_timeval): fix the size test.
+
+Sun Feb 22 22:42:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (tr_trans): should recalculate coderange.
+ [ruby-core:22326] (reopened at [ruby-core:22328])
+
+Sun Feb 22 20:09:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_linger): message refined.
+
+Sun Feb 22 19:28:08 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (s_recvfrom): use rb_io_wait_readable after
+ recvfrom.
+
+Sun Feb 22 18:40:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_errno): new function.
+ (sockopt_inspect): use inspect_errno for SO_ERROR.
+
+Sun Feb 22 15:11:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * re.c (Init_Regexp): define Regexp::FIXEDENCODING. [ruby-dev:38066]
+
+Sun Feb 22 14:33:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (tr_trans): should not be affected by the encoding of
+ replacement unless actually modified. [ruby-talk:328967]
+ [ruby-core:22326]
+
+Sun Feb 22 13:38:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/init.c (s_recvfrom_nonblock): handles EAGAIN too.
+
+ * ext/socket/init.c (s_accept_nonblock): ditto, and EPROTO depends
+ on platforms.
+
+Sun Feb 22 13:03:12 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * eval.c (ruby_options): the evaluator now expects iseq instead of tree.
+
+ * ruby.c (ruby_process_options): ditto.
+
+Sun Feb 22 13:03:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (configure): unset PWD to use symlink to building
+ directory.
+
+ * Makefile.in (up): cd doesn't need LC_TIME, VCS needs.
+
+Sun Feb 22 10:43:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (method_missing): should not pop cfp if missing method
+ is method_missing. [ruby-core:22298]
+
+ * vm_eval.c (rb_raise_method_missing): new function to directly
+ raise NoMethodError.
+
+ * vm_insnhelper.c (vm_call_method): fixed the case method_missing
+ is missing.
+
+Sun Feb 22 02:15:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): handle EMSGSIZE as
+ well.
+
+Sun Feb 22 02:03:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): check max length
+ overflow.
+
+Sun Feb 22 01:52:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): don't call
+ discard_cmsg_resource when EMFILE.
+
+Sun Feb 22 01:48:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): gc when SCM_RIGHTS
+ hit the file descriptor limit.
+
+Sun Feb 22 00:51:58 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_getpartial): error message describes what should be
+ waited after nonblocking error.
+ (rb_io_write_nonblock): ditto.
+
+ * ext/socket/init.c (s_recvfrom_nonblock): ditto.
+ (s_accept_nonblock): ditto.
+
+ * ext/socket/socket.c (sock_connect_nonblock): ditto.
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): ditto.
+ (bsock_recvmsg_internal): ditto.
+
+Sun Feb 22 00:31:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): check recvmsg error
+ earlier.
+
+Fri Feb 20 23:28:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * util.c (rv_alloc, freedtoa): use our normal xmalloc()/xfree() because
+ couldn't free the returned pointer from ruby_dtoa().
+
+ * missing/vsnprintf.c (cvt): receive buffer and use/return it instead
+ of returning the pointer returned from BSD__dtoa().
+
+ * missing/vsnprintf.c (BSD_vfprintf): pass buf to cvt() as the buffer.
+ [ruby-core:22184]
+
+Thu Feb 19 22:59:09 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (make_io_for_unix_rights): cmsg_len may be
+ bigger than msg_controllen on 4.4BSD at least.
+ freeze unix_rights array.
+
+Thu Feb 19 22:17:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): fix exception.
+
+Thu Feb 19 21:13:03 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_unix_rights): method renamed.
+
+Thu Feb 19 15:47:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/fake.rb.in: extracted from Makefile.in.
+
+ * configure.in (fake.rb): prefixed with $(arch)-.
+
+Thu Feb 19 15:39:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspbres_verify): OCSP_basic_verify
+ returns positive value on success, not non-zero. [ruby-core:21762]
+
+Thu Feb 19 15:17:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (@@systmpdir): File.expand_path also joins paths.
+
+Thu Feb 19 15:14:25 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_each_group): defines only when Etc::Group is
+ available.
+
+Thu Feb 19 15:11:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (translit_char): moved from ruby.c.
+
+ * load.c (load_ext): transliterates file separators and back if
+ needed.
+
+ * symbian/setup (DLN_NEEDS_ALT_SEPARATOR): defined.
+
+Thu Feb 19 14:48:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, */Makefile.sub (LOAD_RELATIVE): moved from ruby.c
+
+Thu Feb 19 14:39:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (darwin): uses -unexported_symbol option of ld instead
+ of objcopy
+
+ * configure.in (darwin): makes dylib instead of so.
+
+Thu Feb 19 14:22:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): added phony targets.
+
+ * lib/mkmf.rb (create_makefile): creates target directories before
+ copying. [ruby-core:21958]
+
+ * lib/mkmf.rb (create_makefile): removes directories in the depth
+ order.
+
+Thu Feb 19 13:56:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_home_dir): checks if HAVE_PWD_H. [ruby-dev:38049]
+
+Thu Feb 19 08:45:48 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/socket/rubysocket.h: add "#include <sys/stat.h>"
+
+Thu Feb 19 03:42:48 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_rights): new method.
+ (make_io_for_rights): new function to allocate
+ IOs for FDs in SCM_RIGHTS message.
+ (bsock_recvmsg_internal): use make_io_for_rights. So the FDs can be
+ closed by GC.
+
+Thu Feb 19 03:28:59 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * README.EXT, README.EXT.ja: Improve the document about
+ rb_scan_args() even more.
+
+Thu Feb 19 03:12:51 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_file_exhaustive.rb: skip some tests if euid == 0.
+ a patch from Lucas Nussbaum in [ruby-core:22209].
+
+Thu Feb 19 03:00:49 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * README.EXT, README.EXT.ja: Improve the document about
+ rb_scan_args().
+
+Wed Feb 18 22:47:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (discard_cmsg_resource): new function to close
+ file descriptors in control message.
+ (bsock_recvmsg_internal): call discard_cmsg_resource before retrying
+ recvmsg.
+
+Wed Feb 18 21:47:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): prevent misalignment.
+
+Wed Feb 18 21:34:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): prevent misalignment.
+
+Wed Feb 18 21:09:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): reduce code on
+ environments which have no control message.
+
+Wed Feb 18 20:27:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (OBJCOPY): set ac_cv_prog_ac_ct_OBJCOPY to do nothing
+ on cygwin and mingw because symbols are exported by def file.
+
+Wed Feb 18 15:35:36 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_chown): use chown unless HAVE_FCHOWN.
+
+ * io.c (pipe_open): sarg is always used unless HAVE_FORK.
+
+Wed Feb 18 15:23:34 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * bootstraptest/runner.rb: Use RUBY_DESCRIPTION if defined.
+
+Wed Feb 18 14:33:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_resurrect), string.c (rb_str_resurrect): new
+ functions based on [ruby-dev:37983]
+
+ * insns.def (putstring, duparray): use rb_{ary,str}_resurrect().
+
+ * iseq.c (iseq_data_to_ary): needs to result TS_VALUE.
+
+Wed Feb 18 12:35:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): fix for spaces before extension.
+ [ruby-dev:38044]
+
+Wed Feb 18 12:00:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): suppress a warning. named magic
+ numbers.
+
+Wed Feb 18 10:29:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): do not delete main thread from
+ living_threads. [ruby-core:19385], [ruby-core:22158]
+
+Wed Feb 18 01:05:05 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl: avoid cyclic require.
+
+ * ext/openssl/lib/openssl/ssl-internal.rb: renamed from ssl.rb
+
+ * ext/openssl/lib/openssl/x509-internal.rb: renamed from x509.rb.
+
+ * lib/net/imap.rb: require openssl, instead of openssl/ssl.
+
+ * lib/net/pop.rb: require openssl, instead of openssl/ssl.
+
+ [ruby-dev:38018]
+
+Wed Feb 18 00:55:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (Etc::Passwd.each, Etc::Group.each): new methods.
+ [ruby-dev:37999]
+
+Tue Feb 17 23:25:01 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): make the padding
+ removing only on NetBSD.
+
+Tue Feb 17 19:39:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal): should not remove the
+ last padding of control messages, basically.
+
+Tue Feb 17 12:50:57 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_shared_replace): no need for
+ str_make_independent.
+
+Tue Feb 17 05:41:08 2009 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: fix to add "ensure" codes across "while" clause
+ before "return" expression. [ruby-dev:37967]
+
+ * bootstraptest/test_flow.rb: add a test.
+
+Tue Feb 17 01:53:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate rb_define_const directly for
+ rdoc.
+
+ * ext/.document: add socket/constdefs.c.
+
+ * ext/socket/constants.c (sock_define_const): removed.
+ (sock_define_uconst): ditto.
+ (rb_mSockConst): new static variable.
+
+Mon Feb 16 23:14:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (bsock_sendmsg_internal) [OpenBSD]: don't remove
+ the last padding to prevent sendmsg failure in test_udp_server in
+ test/socket/test_socket.rb on OpenBSD 4.4.
+
+Mon Feb 16 21:59:32 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/setup: Update Symbian config to match recent changes in missing/alloca.c
+
+Mon Feb 16 17:04:14 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * class.c (rb_scan_args), README.EXT, README.EXT.ja: Add support
+ for specifying the number of the trailing mandatory arguments.
+ Update the documents accordingly. [ruby-dev:37995]
+
+Mon Feb 16 16:46:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c (set_debug_option): added rtc_error option.
+
+ * win32/Makefile.sub (CRTDEFFLAGS): separated from DEFS.
+
+ * win32/win32.c (rtc_error_handler): ignores RTC errors unless
+ rtc_error debug option is given.
+
+ * win32/win32.c (rb_w32_sysinit): suppress useless CRT assertions.
+ [ruby-core:22116]
+
+Sun Feb 15 21:43:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct#new_ostruct_member): checks if frozen.
+ [ruby-talk:328195], [ruby-core:22142]
+
+Sun Feb 15 21:22:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions): aliases
+ assert_not_ methods.
+
+Sun Feb 15 16:57:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (SecureRandom.urlsafe_base64): new method.
+
+Sun Feb 15 14:58:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * hash.c (hash_i): use Murmurhash.
+
+Sun Feb 15 11:45:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_define_hooked_variable): suppress false assertion
+ with VC9. [ruby-core:22115]
+
+Sun Feb 15 08:35:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/test_pp.rb: extract from lib/pp.rb.
+
+ * test/test_prettyprint.rb: extract from lib/prettyprint.rb.
+
+ * test/test_tsort.rb: extract from lib/tsort.rb.
+
+Sun Feb 15 06:34:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.parse): raise ArgumentError if Date._parse don't
+ extract date information. [ruby-core:20912]
+
+Sun Feb 15 04:48:08 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_hash_uint32, rb_hash_uint, rb_hash_start, rb_hash_end),
+ include/ruby/intern.h: add Murmurhash API. [ruby-dev:37784]
+
+ * complex.c (nucomp_hash), array.c (rb_ary_hash), time.c (time_hash),
+ string.c (rb_str_hash), object.c (rb_obj_hash), range.c
+ (range_hash), struct.c (rb_struct_hash), hash.c (rb_any_hash),
+ rational.c (nurat_hash): use Murmurhash. [ruby-dev:37784]
+
+Sun Feb 15 03:50:21 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * hash.c (rb_hash): always return a fixnum value because a return
+ value of rb_hash may be used as a hash value itself and bignums have
+ no unique VALUE.
+
+ * test/ruby/test_hash.rb: add a test for above.
+
+Sun Feb 15 00:45:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_uniq_bang, rb_ary_uniq): unique by the result of
+ given block. [ruby-dev:37998]
+
+Sun Feb 15 00:39:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_resize_capa): should not overwrite outside embedded
+ array.
+
+Sat Feb 14 20:18:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/test_time.rb: extracted from lib/time.rb.
+
+Sat Feb 14 19:20:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb: obsolete methods removed.
+ [ruby-core:21564]
+
+Sat Feb 14 15:46:01 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/pathname.rb (Pathname#binread): added. [ruby-dev:37952]
+
+Sat Feb 14 13:14:18 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * iseq.c: remove nil parameter from Proc#parameters
+ after rest appeared.
+
+Sat Feb 14 07:23:52 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_external_str_new_with_enc): change evaluation order
+ for speed.
+
+Sat Feb 14 02:20:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/sockport.h (SET_SA_LEN): cast to void for suppressing a
+ warning.
+
+Fri Feb 13 23:37:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/win32/lib/Win32API.rb (Win32API#initialize): DL.dlopen
+ raises DLError.
+
+Fri Feb 13 21:13:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (Init_socket): define TCPServer#listen and
+ UNIXServer#listen here for rdoc.
+
+Fri Feb 13 20:59:48 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (extract_ipv6_pktinfo): set sa_len for 4.4BSD.
+
+Fri Feb 13 15:34:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (simple_default_value): removed. default values of optional
+ parameters are not available still now. [ruby-dev:37980]
+
+Fri Feb 13 15:11:11 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (eval_string_with_cref): use rb_vm_get_ruby_level_next_cfp()
+ instead of vm_get_ruby_level_caller_cfp(). checking a upper frame
+ is not enough. [ruby-dev:37984]
+
+ * proc.c, vm_core.h: declare rb_vm_get_ruby_level_next_cfp()
+ on vm_core.h.
+
+Fri Feb 13 15:01:40 2009 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_alive_p): fix to return true instead of 0.
+ [ruby-dev:37991]
+
+ * test/ruby/test_fiber.rb: add a test for Fiber#alive?
+
+Fri Feb 13 09:43:19 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_cv_func_flock): using flock defined in
+ win32/win32.c on mingw.
+
+Fri Feb 13 01:45:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_sequence, compile_dstr_fragments),
+ (iseq_compile_each): hides other internal objects.
+
+ * compile.c (iseq_compile_each): just freeze xstr.
+
+Fri Feb 13 00:48:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defineclass): try to autoload const to be overridden.
+
+Thu Feb 12 23:22:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_socket.rb (test_udp_server): filter out unreachable
+ addresses. [ruby-dev:37970]
+
+Thu Feb 12 22:51:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (hide_obj): OBJ_FREEZE() is not an expression. a patch
+ from nagachika <nagachika00 AT gmail.com> at [ruby-dev:37977].
+
+ * compile.c (insn_set_sc_state): fixed typo.
+
+Thu Feb 12 12:36:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_getpeereid): implemented for Solaris
+ using getpeerucred.
+
+ * ext/socket/extconf.rb: check ucred.h and getpeerucred.
+
+ * ext/socket/rubysocket.h: include ucred.h if available.
+
+Thu Feb 12 19:42:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (compile_array_, defined_expr, iseq_compile_each): hide
+ and freeze internal literal objects, to prevent from modifying.
+ [ruby-dev:37959]
+
+ * iseq.c (insn_operand_intern): copy internal literal objects.
+
+ * insns.def (putstring, duparray): ditto.
+
+ * string.c (rb_str_replace): exported.
+
+Thu Feb 12 17:17:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_ungetc): calculates new position
+ before reallocation. [Bug#1099]
+
+Thu Feb 12 16:50:27 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: a patch to build on GNU/kOpenSolaris from Rober
+ Millan at [ruby-core:21888].
+
+Thu Feb 12 15:28:04 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * iseq.c (simple_default_value): allow plain strings as default
+ values.
+
+Wed Feb 11 18:09:41 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (define_final, undefine_final): shouldn't add/remove finalizer
+ of frozen objects.
+
+ * gc.c (undefine_final): should remove FL_FINALIZE flag.
+ [ruby-dev:37964] (also see [ruby-dev:37959])
+
+Wed Feb 11 17:37:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.udp_server_sockets): call the block
+ if given. close the sockets when the block exits.
+ (Socket.udp_server_loop): use udp_server_sockets in block form.
+
+Wed Feb 11 17:34:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets): call the block
+ if given. close the sockets when the block exits.
+ (Socket.tcp_server_loop): use tcp_server_sockets in block form.
+
+Wed Feb 11 17:01:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.unix_server_loop): use
+ unix_server_socket with a block.
+
+Wed Feb 11 16:54:26 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.unix_server_socket): close the
+ socket when the block exits.
+
+Wed Feb 11 16:50:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.unix_server_socket): call the block
+ if given. remove the socket file when the block exits.
+
+Wed Feb 11 16:44:20 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_s_ip_pktinfo): make 3rd argument
+ optional.
+
+Wed Feb 11 15:47:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_make_shared): returns shared root array itself, and
+ frozen array can be shared.
+
+Wed Feb 11 14:46:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (setspecial, putstring): fixed typos in rdoc.
+
+ * insns.def (toregexp): uses rb_ary_tmp_new(), and clears it after
+ used.
+
+Wed Feb 11 14:08:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (anc_inspect_socket_rights): return 1 on
+ success. 0 on failure.
+ (anc_inspect_passcred_credentials): ditto.
+ (anc_inspect_socket_creds): ditto.
+ (anc_inspect_socket_creds): ditto.
+ (anc_inspect_socket_creds): ditto.
+ (anc_inspect_ip_recvdstaddr): ditto.
+ (anc_inspect_ip_pktinfo): ditto.
+ (anc_inspect_ipv6_pktinfo): ditto.
+ (ancillary_inspect): check family.
+
+Wed Feb 11 12:55:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (anc_inspect_ip_pktinfo): make result bit
+ succinct.
+ (Init_ancdata): fix number of arguments.
+
+Wed Feb 11 11:47:41 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c (Init_ipsocket): undef getpeereid at IPSocket.
+
+Wed Feb 11 10:16:34 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: check getpeereid.
+
+ * ext/socket/basicsocket.c (bsock_getpeereid): new method.
+
+Wed Feb 11 09:58:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket::UDPSource#inspect): fix variable
+ name.
+
+Wed Feb 11 00:38:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_gethostname): use HOST_NAME_MAX.
+
+ * ext/socket/raddrinfo.c (make_ipaddr): local variable renamed.
+
+Tue Feb 10 23:44:53 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (struct recvfrom_arg): use struct
+ sockaddr_storage.
+ (recvfrom_blocking): follow struct recvfrom_arg change.
+ (s_recvfrom): ditto.
+ (s_recvfrom_nonblock): use struct sockaddr_storage.
+
+ * ext/socket/socket.c (sock_accept): use struct sockaddr_storage.
+ (sock_accept_nonblock): ditto.
+ (sock_sysaccept): ditto.
+
+ * ext/socket/ancdata.c (bsock_recvmsg_internal): use struct
+ sockaddr_storage.
+
+Tue Feb 10 23:30:32 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_getpeername): use struct
+ sockaddr_storage.
+ (bsock_local_address): ditto.
+ (bsock_remote_address): ditto.
+
+Tue Feb 10 21:26:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.udp_server_sockets): new method.
+ (Socket.udp_server_loop_on): new method.
+ (Socket.udp_server_loop): new method
+ (Socket.ip_sockets_port0): extracted from tcp_server_sockets_port0.
+ (Socket::UDPSource): new class.
+
+Tue Feb 10 21:14:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sockaddr_obj): fill pfamily.
+
+Tue Feb 10 21:09:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_s_bool): new method.
+ (sockopt_bool): new method.
+
+Tue Feb 10 20:58:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_family_m): renamed from sockopt_family.
+ (sockopt_level_m): renamed from sockopt_level.
+ (sockopt_optname_m): renamed from sockopt_optname.
+ (inspect_local_peercred): follow the renaming.
+ (Init_sockopt): ditto.
+
+Tue Feb 10 20:56:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (anc_inspect_socket_creds): refactored to avoid
+ a rb_str_cat2 call.
+
+Tue Feb 10 04:34:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (when): makes parentheses balanced.
+
+Tue Feb 10 01:28:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ip_cmsg_type_to_sym): renamed from
+ cmsg_type_to_sym.
+
+Tue Feb 10 01:22:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_inspect): refactored.
+
+Tue Feb 10 01:02:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate intern_family_noprefix.
+
+ * ext/socket/option.c (sockopt_inspect): use intern_family_noprefix
+ not to show AF_ prefix.
+
+ * ext/socket/ancdata.c (ancillary_inspect): ditto.
+
+Mon Feb 9 23:21:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/constants.c (level_arg): use unknown_level_to_int for
+ non internet protocol.
+ (optname_arg): use only so_optname_to_int for non internet protocol.
+ (cmsg_type_arg): use only scm_optname_to_int for non internet
+ protocol.
+
+ * ext/socket/mkconstants.rb: generate unknown_level_to_int.
+ rename iplevel_to_int to ip_level_to_int.
+
+Mon Feb 9 23:04:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: rename level_to_int to iplevel_to_int.
+ rename intern_level to intern_iplevel.
+
+ * ext/socket/constants.c: follow the renaming.
+
+ * ext/socket/option.c: ditto.
+
+ * ext/socket/ancdata.c: ditto.
+
+Mon Feb 9 22:52:13 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (level_arg): add family argument.
+ (optname_arg): ditto.
+ (cmsg_type_arg): ditto.
+ (rb_sock_getfamily): declared.
+
+ * ext/socket/constants.c (level_arg): add family argument.
+ (optname_arg): ditto.
+ (cmsg_type_arg): ditto.
+
+ * ext/socket/init.c (rb_sock_getfamily): defined.
+
+ * ext/socket/option.c (sockopt_initialize): give family for level_arg
+ and optname_arg.
+ (sockopt_s_int): ditto.
+
+ * ext/socket/basicsocket.c (bsock_setsockopt): ditto.
+ (bsock_getsockopt): ditto.
+
+ * ext/socket/ancdata.c (ancillary_initialize): ditto.
+ (ancillary_s_int): ditto.
+ (ancillary_cmsg_is_p): ditto.
+ (bsock_sendmsg_internal): ditto.
+ (bsock_recvmsg_internal): use rb_sock_getfamily.
+
+Mon Feb 9 21:48:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_inspect): show address family.
+
+Mon Feb 9 20:19:36 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_getsockname): use sockaddr_storage.
+
+Mon Feb 9 20:11:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (load_conv_function51932): fixed for the
+ case IMultiLanguage is not available. [ruby-dev:37950]
+
+Mon Feb 9 20:04:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_int): return 1/0 on success/failure.
+ (inspect_uint): ditto.
+ (inspect_linger): ditto.
+ (inspect_socktype): ditto.
+ (inspect_timeval): ditto.
+ (inspect_peercred): ditto.
+ (inspect_local_peercred): ditto.
+ (sockopt_inspect): refactored.
+
+Mon Feb 9 20:00:26 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: more constants for Solaris.
+
+Mon Feb 9 19:59:18 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_getsockopt): refine address family
+ examination.
+
+Mon Feb 9 19:52:32 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_initialize): argument conversion
+ reordered.
+
+Mon Feb 9 19:46:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (ancillary_initialize): add family argument.
+ (ancdata_new): ditto.
+ (ancillary_s_int): ditto.
+ (ancillary_family): new function.
+ (ancillary_family_m): new method.
+ (ancillary_s_ip_pktinfo): follow ancdata_new change.
+ (ancillary_s_ipv6_pktinfo): ditto.
+ (bsock_recvmsg_internal): examine the socket address family.
+
+Mon Feb 9 11:31:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_encoding_set): ignore second argument when external and
+ internal are same. [ruby-dev:37939]
+
+Mon Feb 9 09:05:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_local_peercred): check version.
+ (sockopt_inspect): suppress warning.
+
+Mon Feb 9 02:04:03 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_peercred): struct ucred contains
+ effective uid/gid.
+
+Mon Feb 9 00:44:45 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (sockopt_inspect): add ifdef guard for
+ LOCAL_PEERCRED.
+
+Mon Feb 9 00:37:06 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_local_peercred): cr_uid is a effective
+ uid, not a real uid.
+
+Mon Feb 9 00:30:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: check sys/param.h and sys/ucred.h.
+
+ * ext/socket/rubysocket.h: include sys/param.h and sys/ucred.h.
+
+ * ext/socket/option.c (inspect_local_peercred): new function to show
+ LOCAL_PEERCRED socket option on FreeBSD.
+ (sockopt_inspect): show as LOCAL_* socket option if AF_UNIX and level
+ is 0.
+
+Mon Feb 9 00:01:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (sockopt_new): add family argument.
+
+ * ext/socket/option.c (sockopt_initialize): add vfamily argument.
+ (sockopt_new): add family argument and record it in the object.
+ (sockopt_family): new method.
+ (sockopt_s_int): add vfamily argument.
+ (sockopt_inspect): show family.
+
+ * ext/socket/basicsocket.c (bsock_getsockopt): check address family
+ using getsockname.
+
+Sun Feb 8 23:37:17 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enumerator.c (enumerator_with_index): receives one argument which
+ represents a start offset. [ruby-dev:37921]
+
+Sun Feb 8 23:28:05 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * include/ruby/st.h, st.c: order entries by a linked list instead of
+ a loop to fix iteration miss when hash is modified during iteration.
+ [ruby-dev:37910]
+
+Sun Feb 8 23:22:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c (inspect_peercred): new function to show
+ SO_PEERCRED socket option on GNU/Linux.
+
+Sun Feb 8 22:44:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/backward/rubysig.h (rb_thread_blocking_region_begin),
+ (rb_thread_blocking_region_end): marked as deprecated.
+
+ * include/ruby/backward/rubysig.h (TRAP_BEG): fix for C++. a
+ patch from Aman Gupta at [ruby-core:21934]
+
+Sun Feb 8 21:47:50 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: check struct cmsgcred.
+
+ * ext/socket/ancdata.c (anc_inspect_passcred_credentials): add
+ "(ucred)".
+ (anc_inspect_socket_creds): show struct cmsgcred too, for FreeBSD.
+
+Sun Feb 8 21:05:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/drb/extservm.rb (DRb::ExtServManager#invoke_service_command):
+ detach spawned process. [ruby-dev:37936]
+
+Sun Feb 8 20:30:29 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: check struct sockcred.
+
+ * ext/socket/ancdata.c (anc_inspect_socket_creds): new function to
+ show SCM_CREDS on NetBSD.
+
+Sun Feb 8 19:05:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/backward/rubysig.h: extern "C" was missing.
+ [ruby-core:21929]
+
+Sun Feb 8 18:46:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (anc_inspect_passcred_credentials): new
+ function to show SCM_CREDENTIALS on GNU/Linux.
+
+Sun Feb 8 18:34:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_s_binread): ensures file path. [ruby-dev:37940]
+
+Sun Feb 8 13:52:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (init_unix_addrinfo): add socktype argument.
+ (addrinfo_initialize): follow init_unix_addrinfo change.
+ (addrinfo_s_unix): add optional argument: socktype
+
+Sun Feb 8 13:09:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_APPEND_OPTION, RUBY_APPEND_OPTIONS),
+ (RUBY_PREPEND_OPTION, RUBY_PREPEND_OPTIONS): add option(s)
+ without duplication.
+
+ * configure.in (RUBY_DEFINE_IF): changed parameter order, now
+ condition comes first.
+
+ * configure.in (universal_binary): checks architecture macros, and
+ improved thin load paths.
+
+Sun Feb 8 09:41:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: gets extout and arch from rbconfig.rb.
+
+Sat Feb 7 21:26:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_addrinfo.rb (test_family_addrinfo): don't use
+ www.ruby-lang.org.
+ http://d.hatena.ne.jp/nagachika/20090204/working_for_0f0e
+
+Sat Feb 7 18:02:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (--with-arch): added new option to support
+ universal binary. replaced --enable-fat-binary option which
+ didn't work actually.
+
+ * configure.in (RUBY_FUNC_ATTRIBUTE): added conditional test.
+
+ * configure.in (ac_cv_type_getgroups): declared because getgroups()
+ fills rest of the buffer with garbage on Rosetta.
+
+ * configure.in (alloca): defines only for powerpc, but always
+ create empty object to suppress ld warning.
+
+ * configure.in (LIBRUBY_DLDFLAGS): set compatibility version with
+ TEENY.
+
+ * configure.in (CFLAGS, LDFLAGS): separates ARCH_FLAG.
+
+ * configure.in (arch): renamed to "universal" from "fat".
+
+ * Makefile.in (ARCH_FLAG): added.
+
+ * include/ruby/defines.h (WORDS_BIGENDIAN): uses
+ AC_APPLE_UNIVERSAL_BUILD.
+
+ * missing/alloca.c (alloca): defines only if C_ALLOCA is defined.
+
+Sat Feb 7 12:31:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: added --precommand and --show options.
+
+ * runruby.rb: added --cpu option.
+
+ * runruby.rb: skips version check in rbconfig.rb.
+
+Sat Feb 7 11:44:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_header): needs dependent headers if trying to
+ compile.
+
+ * ext/socket/extconf.rb: net/if.h depends on other headers.
+
+Sat Feb 7 04:02:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * dir.c (dir_read): don't disable rdoc.
+
+Fri Feb 6 23:28:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fread): use rb_io_wait_readable for retry
+ avoid Errno::EINTR on ruby -e 'trap(:CHLD) {}; spawn("sleep 1"); STDIN.read'
+
+Fri Feb 6 22:36:11 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * thread_pthread.c (native_thread_create) [__SYMBIAN32__]: reduced pthread stack size.
+
+ * thread_pthread.c (thread_timer) [__SYMBIAN32__]: compiled out unsupported yet signal-related functionality.
+
+ * io.c (pipe_open) [__SYMBIAN32__]: fixed compile time error.
+
+Fri Feb 6 22:11:46 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * include/ruby/defines.h [__SYMBIAN32__]: included <sys/select.h> for fd_set definition
+
+Fri Feb 6 21:58:24 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/missing-pips.c: added a stub for missing PIPS function execl.
+
+ * process.c (rb_proc_exec) [__SYMBIAN32__]: removed conditional around execl function call.
+
+Fri Feb 6 20:37:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (register_sigaltstack): ignore sigaltstack error.
+ It fails on OpenBSD 4.4 when pthread library is linked.
+
+Fri Feb 6 18:18:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_readdir_with_enc): fallback to OS's conversion
+ when ASCII-8BIT is passed.
+
+Fri Feb 6 17:19:23 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{dir.h, win32.c} (rb_w32_readdir_with_enc): new function to
+ read entry with specified enc.
+
+ * win32/win32.c (readdir_internal): extract from rb_w32_opendir().
+
+ * win32/win32.c (opendir_internal): extract from rb_w32_readdir().
+
+ * dir.c (dir_read, dir_each): use new READDIR macro instead of readdir()
+ to pass enc for special version of readdir, such as above.
+
+Fri Feb 6 12:11:24 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (process_options): set initial default_external before -r.
+
+Fri Feb 6 12:03:47 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (process_options): -K and -E in shebang should be reflect to
+ default_external. [ruby-dev:37920]
+
+Fri Feb 6 07:52:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (chfunc): type fixed.
+
+Fri Feb 6 02:51:59 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_codepoint): update RDoc for
+ String#codepoints. a patch from Radoslaw Bulat in
+ [ruby-core:21835]
+
+Fri Feb 6 01:09:13 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (cont_mark, cont_capture, cont_restore_1): use #else instead
+ of #elif. a patch from NISHIMATSU Takeshi <t_nissie at yahoo.co.jp>
+ in [ruby-list:45856].
+
+Thu Feb 5 20:28:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_run_exec_options_err): renamed from
+ rb_run_exec_options.
+ (rb_exec_err): renamed from rb_exec.
+ (rb_fork_err): renamed from rb_fork.
+ (rb_spawn_err): renamed from rb_spawn.
+ (rb_run_exec_options): declared with 1.9.1 compatible signature.
+ (rb_exec): ditto.
+ (rb_fork): ditto.
+ (rb_spawn): ditto.
+
+ * process.c (rb_run_exec_options_err): renamed from
+ rb_run_exec_options.
+ (rb_exec_err): renamed from rb_exec.
+ (rb_fork_err): renamed from rb_fork.
+ (rb_spawn_err): renamed from rb_spawn.
+ (rb_run_exec_options): defined.
+ (rb_exec): ditto.
+ (rb_fork): ditto.
+ (rb_spawn): ditto.
+
+ * io.c: follow above change.
+
+ * ext/pty/pty.c: follow above change.
+
+ [ruby-dev:37893]
+
+Thu Feb 5 19:58:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket: AddrInfo is renamed to Addrinfo. [ruby-dev:37876]
+
+Thu Feb 5 16:18:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_SITE_LIB_PATH, RUBY_VENDOR_LIB_PATH): fix for
+ NetBSD.
+
+Thu Feb 5 16:04:29 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): follow recent changes about paths.
+
+Thu Feb 5 14:26:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MAJOR, MINOR, TEENY): uses RUBY_VERSION_*.
+
+ * mkconfig.rb (prefix): uses ruby_version in config.status.
+
+Thu Feb 5 12:24:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_uniq): gets rid of copying.
+
+Thu Feb 5 12:01:53 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_add_hash): split from ary_make_hash().
+
+ * array.c (ary_make_hash): hide a Hash used internally.
+
+ * array.c (ary_recycle_hash): clears internally used hash. this
+ name came from [ruby-dev:37908].
+
+ * array.c (rb_ary_diff, rb_ary_and, rb_ary_or, rb_ary_uniq_bang):
+ recycle hashes.
+
+Thu Feb 5 11:21:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_LIB_VERSION): added for library version, to
+ split from core version. [ruby-dev:37748]
+
+ * configure.in (RUBY_LIB_PATH, etc): moved actual version
+ dependent stuff to version.c.
+
+ * ruby.c (ruby_init_loadpath_safe): ditto.
+
+ * version.c (ruby_initial_load_paths): moved initial load path
+ version depending on version from ruby.c.
+
+ * version.h (RUBY_VERSION_{MAJOR,MINOR,TEENY}): now mean library
+ and API version, and reverted to 1.9.1. [ruby-dev:37889]
+
+Thu Feb 5 07:39:33 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/readline/readline.c (Init_readline): remove_history(0) may be
+ NULL. [ruby-dev:37891]
+
+Thu Feb 5 03:55:22 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (LOCALTIME): should call tzset() before localtime_r().
+ [ruby-dev:37896]
+
+Thu Feb 5 02:12:35 2009 Alexander Zavorine <alexandre.zavorine@nokia.com>
+
+ * symbian/configure.bat: Updated Symbian configuration procedure to
+ avoid creating files outside build directory
+
+ * symbian/pre-build: ditto
+
+ * symbian/setup: ditto
+
+ * symbian/rubyu.def: removed
+
+Thu Feb 5 01:44:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): refine error message for
+ undefined conversion. [ruby-core:21828]
+
+Thu Feb 5 01:18:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_socketpair): make 3rd argument optional.
+
+ * ext/socket/unixsocket.c (unix_s_socketpair): follow the above
+ change.
+
+ * ext/socket/rubysocket.h (sock_s_socketpair): ditto.
+
+Thu Feb 5 00:09:39 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_ipv6_to_ipv4): new method.
+
+Wed Feb 4 21:59:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): show U+XXXX form for undefined
+ conversion error from UTF-8.
+
+Wed Feb 4 21:57:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_dump): use MBCLEN_CHARFOUND_P properly.
+
+Wed Feb 4 21:55:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb: refine success message.
+
+Wed Feb 4 19:10:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (id.h): updates from parse.h.
+
+Wed Feb 4 11:45:06 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb: shouldn't export DllMain.
+ reported at http://pc11.2ch.net/test/read.cgi/tech/1233686068/21
+
+Wed Feb 4 10:12:05 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD_vfprintf): should support 't' format
+ modifier to handle PRIdPTRDIFF. thanks for the info from
+ Kazuhiro NISHIYAMA. [ruby-core:21807]
+
+Wed Feb 4 01:28:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: fix struct in_pktinfo and struct in6_pktinfo
+ detection.
+
+Wed Feb 4 00:32:59 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb(test_getpwnam, test_getgrgid, test_getgrnam):
+ support an environment that has duplicative entries. a patch from
+ Tomoyuki Chikanaga <chikanag at nippon-control-system.co.jp> in
+ [ruby-dev:37882].
+
+Wed Feb 4 00:17:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets_port0): skip
+ socket creation error.
+
+Tue Feb 3 23:37:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): resets EOF flag after parse.
+
+Tue Feb 3 23:13:34 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace): always returns non-nil array if lev is
+ negative. [ruby-core:21795]
+
+Tue Feb 3 21:19:06 2009 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: checked rl_set_screen_size and
+ rl_get_screen_size.
+
+ * ext/readline/readline.c (readline_s_set_screen_size): added
+ Readline.set_screen_size.
+
+ * ext/readline/readline.c (readline_s_get_screen_size): added
+ Readline.get_screen_size.
+
+Tue Feb 3 21:07:19 2009 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (readline_s_set_completion_proc): set
+ default if proc is nil. fix #1095
+
+Tue Feb 3 16:36:06 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * array.c (rb_ary_sort_by_bang): RDoc update.
+
+ * NEWS: add Array#sort_by!.
+
+Tue Feb 3 16:23:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets_port0): new
+ private function for allocating same port both IPv4 and IPv6.
+ (Socket.tcp_server_sockets): use tcp_server_sockets_port0 for port 0.
+
+Tue Feb 3 14:12:10 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: validate data before sending to a server.
+ [ruby-core:20320]
+
+Tue Feb 3 12:35:41 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (match_array): replace match_check().
+
+ * re.c (match_values_at): ditto.
+
+Tue Feb 3 12:09:08 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (hmac_md5): should use String#ord to get ascii
+ code from the one-character string.
+
+Tue Feb 3 11:25:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_lock): warn for circular require. [ruby-core:20794],
+ [ruby-core:20797]
+
+Tue Feb 3 08:35:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets): extracted from
+ Socket.tcp_server_loop.
+ (Socket.accept_loop): ditto.
+ (Socket.unix_server_socket): extracted from Socket.unix_server_loop.
+ (Socket.unix_server_loop): use Socket.accept_loop.
+
+Tue Feb 3 08:21:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_readpartial.rb (make_pipe): readpartial does not
+ work in text mode.
+
+Tue Feb 3 08:18:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (RUBYDEF): uses mkexports.rb on cygwin too.
+
+ * win32/mkexports.rb (Exports::Cygwin): added.
+
+Tue Feb 3 08:10:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (Doxyfile): moved from Makefile.in.
+
+ * template/Doxyfile.tmpl: split from Doxyfile.in.
+
+Tue Feb 3 08:01:38 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_write): use of cast expressions as lvalues
+ is deprecated.
+
+Tue Feb 3 07:57:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/extconf.rb (in_pktinfo, in6_pktinfo),
+ ext/socket/ancdata.c: defined in w32api/ws2tcpip.h on cygwin but
+ cannot compile for some reason.
+
+Tue Feb 3 07:02:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/langinfo.c (nl_langinfo_codeset): accepts iso-8859
+ fragment. [ruby-core:21757]
+
+Tue Feb 3 07:01:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb (patchlevel): config.status may not contain
+ PATCHLEVEL even if other version numbers exist.
+
+Mon Feb 2 23:43:00 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (Init_addrinfo): add AddrInfo#to_s as an
+ alias of AddrInfo#to_sockaddr.
+
+ * ext/socket/option.c (Init_sockopt): add Socket::Option#to_s as an
+ alias of Socket::Option#data.
+
+ [ruby-dev:37873]
+
+Mon Feb 2 21:04:13 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sort_by_bang): RDoc update. [ruby-core:21742]
+
+Mon Feb 2 20:49:24 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c: Introduce id_each to save rb_intern() and SYM2ID()
+ calls.
+
+Mon Feb 2 19:55:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_addrinfo.rb: use AddrInfo.getaddrinfo to generate
+ IPv6 address. AddrInfo.ip generates IPv4 address for IPv4 mapped
+ IPv6 address if --with-lookup-order-hack=INET.
+ [ruby-dev:37868]
+
+Mon Feb 2 19:17:16 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * doc/NEWS-1.9.1: typo fixed: collect_all -> collect.
+ [ruby-core:21706]
+
+Mon Feb 2 17:23:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (dir.o, win32.o): depend on win32/dir.h.
+
+Mon Feb 2 17:13:46 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * mkconfig.rb: patchlevel is sometimes minus.
+
+ * win32/resource.rb: ditto.
+
+Mon Feb 2 17:11:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (cmsg_type_to_sym): add #ifdef for no IPv6
+ environment.
+
+Mon Feb 2 17:05:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext): should not be infected from other
+ load paths.
+
+Mon Feb 2 16:33:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_s_home): new method. [ruby-core:21454]
+
+Mon Feb 2 16:06:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * version.h: bump up to 1.9.2 patchlevel -1.
+ yugui recommend "-1" strongly.
+
+ * lib/rubygems/version.rb: accept negative patchlevel.
+
+Mon Feb 2 14:53:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_initialize): make 3rd argument, protocol,
+ optional.
+
+Mon Feb 2 14:47:53 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sort_by_bang): new method. requested in
+ [ruby-core:21709]
+
+Mon Feb 2 14:22:56 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/constants.c (cmsg_type_arg): INET6 check.
+
+Mon Feb 2 14:18:20 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/option.c: use INET6 instead of IPV6.
+
+Mon Feb 2 12:47:47 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/{options,raddrinfo}.c: use INET6 instead of AF_INET6 for
+ VC++6.
+
+Mon Feb 2 12:41:52 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * complex.c (f_signbit): regard NaN as a positive value.
+ [ruby-dev:37861].
+
+Mon Feb 2 12:39:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/test.rb (valid_syntax?), test/ruby/test_system.rb
+ (TestSystem::valid_syntax?): use catch and throw instead of
+ return inside BEGIN block.
+
+Mon Feb 2 11:45:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (cmsg_type_arg): declared.
+ (Init_ancdata): ditto.
+
+ * ext/socket/init.c (Init_socket_init): call Init_ancdata.
+
+ * ext/socket/constants.c (cmsg_type_arg): defined.
+
+ * ext/socket/depend: add dependency for ancdata.o.
+
+ * ext/socket/mkconstants.rb: generate scm_optname_to_int.
+ more constants.
+
+ * ext/socket/extconf.rb: add ancdata.o.
+
+ * ext/socket/ancdata.c: new file. new method
+ BasicSocket#{sendmsg,sendmsg_nonblock,recvmsg,recvmsg_nonblock}
+
+Mon Feb 2 10:57:27 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, win32/dir.h (open_dir_handle, rb_w32_opendir,
+ move_to_next_entry, rb_w32_readdir, check_valid_dir): change backend
+ API from A to W.
+
+Mon Feb 2 10:48:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_setsockopt): accept Socket::Option
+ object.
+ (bsock_getsockopt): return Socket::Option object.
+
+ * ext/socket/option.c: new file.
+
+ * ext/socket/rubysocket.h (rb_cSockOpt): declared.
+ (sockopt_new): ditto.
+ (Init_sockopt): ditto.
+
+ * ext/socket/init.c (Init_socket_init): call Init_sockopt.
+
+ * ext/socket/depend: add dependency for option.o
+
+ * ext/socket/mkconstants.rb: generate intern_level, intern_so_optname,
+ intern_ip_optname, intern_ipv6_optname, intern_tcp_optname,
+ intern_udp_optname and intern_scm_optname.
+
+ * ext/socket/extconf.rb: add option.o.
+
+Mon Feb 2 09:49:39 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): progname is not available at
+ initializing phase.
+
+Mon Feb 2 08:12:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb (Server#serve): gets rid of hardcoded
+ platform names.
+
+ * lib/resolv.rb (Resolv::Hosts::DefaultFileName),
+ (Resolv::DNS::Config.default_config_hash): tries win32/resolv on
+ mswin64 too.
+
+ * lib/rubygems/specification.rb (Gem::Specification#ruby_code):
+ added mswin64.
+
+ * lib/drb/extservm.rb (DRb::ExtServManager#invoke_service_command):
+ spawn is better to start a process in background.
+
+ * ext/extmk.rb: uses FNM_SYSCASE.
+
+ * instruby.rb: installs win32.h on mswin64 platform.
+ [ruby-core:21722]
+
+Mon Feb 2 07:36:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace_each): now takes an iterator function.
+
+ * vm_core.h (rb_make_backtrace, rb_backtrace_each): added
+ prototypes.
+
+ * vm_dump.c (rb_vm_bugreport), vm_eval.c (rb_backtrace): gets rid
+ of allocating objects. [ruby-core:21619]
+
+ * vm_eval.c (rb_backtrace_each): new function which iterates over
+ each backtrace info.
+
+Mon Feb 2 06:51:36 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding): Windows' filesystem encoding is
+ sometimes ANSI code page and sometimes OEM code page. we should check
+ whether code page is used.
+
+Sun Feb 1 21:27:55 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_ipv4_private_p): new method.
+ (addrinfo_ipv4_loopback_p): ditto.
+ (addrinfo_ipv4_multicast_p): ditto.
+
+Sun Feb 1 16:10:06 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (Switch#summarize): strips an equal sign from
+ short option, and fills right sides in shorter lines.
+ [ruby-talk:326414]
+
+Sun Feb 1 05:19:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_const_get_0), vm_insnhelper.c (vm_get_ev_const):
+ avoids infinite self recursion autoload. [ruby-core:21696]
+
+Sat Jan 31 22:50:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb (assert_equal): show class in failure
+ message if meaningful.
+
+Sat Jan 31 22:38:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS#each_address): don't query IPv6 address
+ if the host has no global IPv6 address.
+
+Sat Jan 31 22:29:05 2009 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (STR2CSTR): removed.
+ (rb_str2cstr): removed.
+
+ * object.c (rb_str2cstr): removed.
+
+Sat Jan 31 20:07:59 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_ipv6_unspecified_p): new method.
+ (addrinfo_ipv6_loopback_p): ditto.
+ (addrinfo_ipv6_multicast_p): ditto.
+ (addrinfo_ipv6_linklocal_p): ditto.
+ (addrinfo_ipv6_sitelocal_p): ditto.
+ (addrinfo_ipv6_v4mapped_p): ditto.
+ (addrinfo_ipv6_v4compat_p): ditto.
+ (addrinfo_ipv6_mc_nodelocal_p): ditto.
+ (addrinfo_ipv6_mc_linklocal_p): ditto.
+ (addrinfo_ipv6_mc_sitelocal_p): ditto.
+ (addrinfo_ipv6_mc_orglocal_p): ditto.
+ (addrinfo_ipv6_mc_global_p): ditto.
+
+Sat Jan 31 19:09:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_require_safe): raises when the path to be loaded is
+ tainted. [ruby-dev:37843]
+
+Sat Jan 31 18:08:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (optflags): defaulted to -O3 to get rid of slug of
+ gcc 4.3.
+
+Sat Jan 31 18:03:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (List#accept, parse_in_order): n option is no
+ longer needed.
+
+Sat Jan 31 14:12:43 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#each_child): new method.
+
+Sat Jan 31 00:07:49 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb
+ (Test::Unit::Assertions#assert_nothing_raised): suppress warning.
+ [ruby-core:21312]
+
+Fri Jan 30 21:49:32 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#realdirpath): new method based on the
+ patch in [ruby-dev:36560] by Akinori MUSHA.
+ [ruby-dev:36290]
+
+Fri Jan 30 18:04:23 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_write): limit write size to 32KB if the file
+ seems to be console. [ruby-core:21613]
+
+Fri Jan 30 16:12:32 2009 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/curses/curses.c (Init_curses): Curses#crmode and
+ Curses#nocrmode changes to the module function.
+ fix #916
+
+Fri Jan 30 14:31:14 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/make-snapshot (prereq): remove enc.mk from tarball because
+ BSD make checks $(srcdir)/enc.mk and try to run $(builddir)/enc.mk.
+
+Fri Jan 30 14:11:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: extract compile rules to each target for nmake.
+
+Fri Jan 30 12:59:49 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (RUBYDEF): depends on makefiles.
+
+ * cygwin/GNUmakefile.in (RUBYDEF): adds DATA to non-function symbols
+ which is not marked as T.
+
+Fri Jan 30 11:03:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_respond_to): gets rid of
+ overcounting. [ruby-dev:37703]
+
+Fri Jan 30 02:55:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_init_by_convpath_i): make it static.
+
+Thu Jan 29 16:22:41 2009 Shugo Maeda <shugo@ruby-lang.org>
+
+ * load.c (rb_feature_provided): should not calculate len by pointer
+ subtraction because feature may be a expanded path.
+ [ruby-core:21267]
+
+Thu Jan 29 14:12:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (BASERUBY): erases RUBYOPT at the test.
+
+ * configure.in (OBJCOPY): not used on Windows.
+
+Thu Jan 29 13:16:11 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/securerandom.rb (SecureRandom.uuid): uses unpacked array
+ instead of string, because String#[] returns one length string.
+
+Thu Jan 29 12:29:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (FileUtils#rake_system): no longer needs workaround
+ on Windows. [ruby-core:21339]
+
+ * lib/rake/win32.rb (Rake::Win32#rake_system): ditto.
+
+ * lib/rake/win32.rb (Rake::Win32#win32_system_dir): no longer
+ needs environment variables other than APPDATA now.
+
+ * lib/rake.rb (Rake::Application#standard_system_dir): uses
+ platform specific definition on Windows system.
+
+Thu Jan 29 12:18:54 2009 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * lib/securerandom.rb: new method SecureRandom#uuid
+
+Thu Jan 29 11:22:19 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (inspect_sockaddr): if defined AF_INET6,
+ perhaps can inspect IPv6 addresses if not defined INET6.
+
+ * ext/socket/socket.c (socket_s_ip_address_list): support Windows XP
+ or later. (Win2k or earlier is still not supported)
+
+Thu Jan 29 00:24:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_run): previous change didn't resolve the
+ problem.
+
+Wed Jan 28 22:51:12 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_run): desperately guard the variable.
+ [ruby-core:20576]
+
+Wed Jan 28 15:24:11 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * math.c: SEGV is caused by implicit rb_to_float declaration
+ test_complexrational.rb: [BUG] in IA-64 architecture
+
+Tue Jan 27 20:02:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (socks_connect_blocking): moved from
+ sockssocket.c. [ruby-dev:37834]
+
+ * sockssocket.c (socks_init): don't omit "int" type.
+
+Tue Jan 27 14:41:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (RUBYDEF): needs DATA marks to export
+ non-function symbols. [ruby-core:21582]
+
+ * win32/mkexports.rb (Exports::Mingw#each_export): ditto.
+
+Tue Jan 27 12:59:55 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/ripper/depend: use VPATH.
+ If a platform doesn't support VPATH, Ruby doesn't support it:
+ for example MSYS. [ruby-core:21570]
+
+Tue Jan 27 12:21:17 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/ripper/depend: lex.c's correct path is ../../lex.c.
+
+Tue Jan 27 11:09:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_header): checks the header depending on
+ platform.
+
+ * lib/mkmf.rb (have_header, find_header): use try_header.
+
+ * win32/Makefile.sub (try_header): uses try_compile to get rid of
+ slow -E option of VC.
+
+Tue Jan 27 11:03:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (distclean-enc, realclean-enc): do not call clean of
+ enc.mk twice or more.
+
+ * enc/depend (cleanobjs): added deffile.
+
+ * lib/mkmf.rb (create_makefile): removes deffile at clean instead
+ of distclean.
+
+ * win32/Makefile.sub (miniruby, LIBRUBY_SO): removes lib and exp
+ files.
+
+ * win32/Makefile.sub (clean, distclean): have moved to common.mk.
+
+ * win32/rmdirs.bat: omits `not empty' message.
+
+Tue Jan 27 10:15:33 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (struct rb_transcoding): added ary member for debug.
+
+Tue Jan 27 10:10:14 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Doxyfile.in (FILE_VERSION_FILTER, INPUT_FILTER): should not use
+ ./miniruby directly for cross compiling.
+
+Tue Jan 27 04:02:53 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/ripper/depend: fixed dependency path to lex.c.
+ [ruby-core:21570]
+
+Tue Jan 27 03:43:34 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_any_hash): fixed performance issues with nil, true,
+ false as hash keys. a patch from Matthias Waechter.
+ [ruby-core:21568]
+
+Tue Jan 27 03:23:43 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): should point correct path to
+ ruby.h and defines.h. [ruby-core:21569]
+
+Mon Jan 26 16:00:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_aset): fixed arguments evaluation order.
+
+Mon Jan 26 15:49:42 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pathname.rb (chop_basename, prepend_prefix): use o option.
+
+Sun Jan 25 16:35:44 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (socket_s_ip_address_list): renamed from
+ socket_s_list_ip_address. [ruby-dev:37806]
+
+Sun Jan 25 12:17:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (RUBYDEF): needs read-only section too.
+
+Sun Jan 25 12:02:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (clean-ext): condition of EXTS was inverted.
+
+Sun Jan 25 11:50:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): fixed the variables order because
+ converter proc refers the separator.
+
+Sun Jan 25 11:25:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (RMDIRS): remove directory and
+ parents.
+
+ * Makefile.in, win32/Makefile.sub (distclean-rdoc): added to remove
+ temporary rdoc.
+
+ * Makefile.in, win32/Makefile.sub (clean-ext): skips non-existent
+ directories.
+
+ * common.mk (clean, distclean): cleans rdoc.
+
+ * common.mk (clean-extout): removes extout directory.
+
+ * configure.in (RMDIRS, RMALL): added to clean extout.
+
+ * lib/fileutils.rb (FileUtils#rmdir): added :parents option.
+
+ * lib/mkmf.rb (create_makefile): cleans installed files at clean
+ instead of distclean.
+
+ * lib/mkmf.rb (create_makefile): added clean-so and clean-rb.
+
+ * lib/mkmf.rb (def init_mkmf): added DISTCLEANDIRS.
+
+ * lib/un.rb (rmdir): added -p option.
+
+ * tool/rmdirs, win32/rmdirs.bat: removes directory and the parents.
+
+ * win32/rm.bat: added -r option.
+
+Sun Jan 25 09:09:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (join_path): use strlcat() to force link.
+
+ * dir.c (glob_helper): no strcpy() is needed since len is known.
+
+Sun Jan 25 06:44:58 2009 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_ssl.c: Server Name Indication support.
+ new methods SSLContext#server_name_cb=, SSLSocket#hostname=.
+
+ * test/openssl/test_ssl.rb: Tests for above.
+
+Sat Jan 24 08:22:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): tools under the top source
+ directory are not installed, so unusable outside extmk.rb.
+
+Fri Jan 23 17:24:31 2009 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * golf_prelude.rb (Enumerator#inspect): avoid warning.
+
+Fri Jan 23 15:12:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (mkintpath): new function which converts native path
+ to format acceptable in Makefile.
+
+ * lib/mkmf.rb (configuration): leaves PATH_SEPARATOR unchanged.
+
+ * lib/mkmf.rb (configuration): converts srcdir, topdir and hdrdir.
+ a patch by Alexey Borzenkov <snaury AT gmail.com> at
+ [ruby-core:21448].
+
+ * lib/mkmf.rb (try_func): got rid of c-mode confusion.
+
+Fri Jan 23 13:26:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (trap_handler): also accepts symbols. [ruby-dev:37823]
+
+Thu Jan 22 18:14:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): removes installed files under
+ extout at distclean.
+
+Thu Jan 22 17:12:37 2009 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI.parse): generate only key on params hash
+ if request have only key uri parameters.
+ (ex. index.cgi?aaa&bbb=1 # params=>{:aaa=>[],:bbb=>["1"]})
+
+ * test/cgi/test_cgi_core.rb: fix test for key only params.
+
+Thu Jan 22 16:29:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/installer.rb (Gem::Installer#initialize): fixed
+ typos.
+
+ * test/rubygems/test_gem.rb (test_self_dir): removed false
+ assertions.
+
+ * test/rubygems/test_gem.rb (test_self_set_paths): checks if paths
+ are included.
+
+ * test/rubygems/test_gem_commands_install_command.rb
+ (test_execute_remote): checks diagnostic message too.
+
+ * test/rubygems/test_gem_installer.rb (load): uses Gem.ruby.
+
+ * test/rubygems/gemutilities.rb (Gem.ruby): initializes from the
+ environment variable to run without installation.
+
+ * test/rubygems/gemutilities.rb (RubyGemTestCase#util_build_gem):
+ creates cache directory.
+
+Thu Jan 22 16:12:51 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * revert previous revision. it's already out-of-date.
+
+Thu Jan 22 15:54:02 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/win32.c (rb_w32_is_valid_fd): new function
+ to validate fd.
+
+ * io.c (rb_io_initialize): check fd with above function.
+
+Thu Jan 22 14:53:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_process.rb (MANDATORY_ENVS): needs RUBYLIB to run
+ tests without install.
+
+Thu Jan 22 12:19:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (define_final): cannot define finalizer for immediate
+ values. [ruby-core:21500]
+
+ * gc.c (define_final): freezes or hides internal values.
+
+Thu Jan 22 11:33:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_time_timeval): made a real prototype. a patch from
+ Marcus Rueckert <darix AT opensu.se> at [ruby-core:21492].
+
+Wed Jan 21 21:43:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_ungetbyte, rb_io_ungetc): allows nil to reset EOF
+ flag with ungetting nothing.
+
+ * ruby.c (load_file_internal): rests EOF flag to make possible to
+ load from stdin after reading data.
+
+Wed Jan 21 17:17:18 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_double_capa): a new function to expand array more
+ aggressively. [ruby-core:21460]
+
+ * array.c (rb_ary_store): use ary_double_capa().
+
+ * array.c (rb_ary_unshift_m): ditto.
+
+ * array.c (rb_ary_splice): ditto.
+
+Wed Jan 21 15:32:15 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_ungetbyte, rb_io_ungetc): clears EOF flag.
+
+Wed Jan 21 14:41:48 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (take_items): to_ary() raises ArgumentError if cannot to
+ convert to Array. [ruby-dev:37797]
+
+Wed Jan 21 14:32:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (debug_lines): calls rb_intern() once.
+
+Wed Jan 21 13:58:17 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h (FMODE_EOF): EOF flag on TTY.
+
+ * io.c (io_set_eof): sets EOF flag for TTY.
+
+ * io.c (io_seek): clears EOF flag.
+
+ * io.c (io_fillbuf): returns EOF if already met EOF. [ruby-dev:37798]
+
+ * io.c (io_fillbuf, io_fread, io_getpartial): sets EOF.
+
+Wed Jan 21 08:22:04 2009 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.3.1 r4532.
+ * test/minitest/*.rb: ditto.
+
+Tue Jan 20 20:16:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (socket_s_list_ip_address): new method.
+ (sockaddr_obj): new function.
+
+ * ext/socket/rubysocket.h: include ifaddrs.h, sys/ioctl.h,
+ sys/sockio.h, net/if.h if available.
+ (addrinfo_new): declared.
+
+ * ext/socket/raddrinfo.c (addrinfo_new): exported.
+
+ * ext/socket/extconf.rb: check ifaddrs.h, sys/ioctl.h, sys/sockio.h,
+ net/if.h and getifaddrs.
+
+Tue Jan 20 20:05:21 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (pseudo_AF_FTIP): moved from mkconstants.rb.
+
+ * ext/socket/mkconstants.rb: prepend header if -H is not given.
+
+Tue Jan 20 17:50:00 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_buf): use nkf_char.
+
+Tue Jan 20 16:17:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (ruby_Init_{Continuation_body,Fiber_as_Coroutine}): prefixed
+ with ruby_ to export.
+
+ * ext/continuation/continuation.c, ext/fiber/fiber.c: ditto.
+
+Tue Jan 20 15:32:29 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (miniruby): renames and then removes, to get rid of
+ EPERM on cygwin and mingw.
+
+ * Makefile.in ($(LIBRUBY_SO)): use wildcard option of objcopy.
+
+ * configure.in (DLDFLAGS): do not export all symbols.
+
+ * cygwin/GNUmakefile.in (RUBYDEF): rejects symbols prefixed with
+ Init_.
+
+ * win32/mkexports.rb (Exports::Mingw): includes all symbols as
+ well as mswin32, except for prefixed with Init_.
+
+Tue Jan 20 13:03:50 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (hash): fixed the tail bytes handling in the aligned
+ access case.
+
+Tue Jan 20 09:26:05 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_buf_push): maybe a bug.
+
+ * ext/nkf/nkf-utf8/nkf.c (options): no need to support help option.
+
+Tue Jan 20 06:48:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (take_items), enum.c (enum_zip): tries to convert to
+ array first. [ruby-core:21442]
+
+Tue Jan 20 03:50:37 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Update nkf to 2.0.9.
+ revert -s meaning as Shift_JIS, etc.
+
+Tue Jan 20 03:42:32 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (hash): fixed typo. [ruby-dev:37791]
+
+Tue Jan 20 01:15:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (SOMAXCONN): defined.
+
+Mon Jan 19 22:31:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use erb for generating code.
+
+Mon Jan 19 17:33:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (hash): defaulted to MurmurHash 2.0.
+
+Mon Jan 19 17:29:34 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/defines.h (RUBY_ALIAS_FUNCTION_TYPE): added.
+
+Mon Jan 19 17:24:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (vm_stack_dump_each): used only if debug mode.
+
+Mon Jan 19 16:32:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (hash): added MurmurHash 2.0.
+
+Mon Jan 19 14:31:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_execute_interrupts): needs
+ rb_signal_buff_size to be declared.
+
+Mon Jan 19 13:34:25 2009 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (require_libraries): reset th->parse_in_eval while
+ loading libraries. fixes [ruby-dev:37780]
+
+Mon Jan 19 11:46:39 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c, eval.c (rb_f_block_given_p): move definition of
+ "iterator?" and "block_given?" to make static.
+
+ * vm.c (vm_get_ruby_level_caller_cfp): make it static.
+
+ * eval_intern.h, vm_insnhelper.c: move decl. of
+ vm_get_ruby_level_caller_cfp()
+ from eval_intern.h to vm_insnhelper.c.
+
+Mon Jan 19 11:27:39 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: add a prefix "rb_" to exposed functions
+ vm_get_ruby_level_next_cfp(), rb_vm_make_env_object(),
+ vm_stack_to_heap(), vm_make_proc(), vm_invoke_proc(),
+ vm_get_sourceline(), vm_cref(), vm_localjump_error(),
+ vm_make_jump_tag_but_local_jump(), vm_jump_tag_but_local_jump().
+ This changes may affect only core because most of renamed functions
+ require a pointer of not-exposed struct such as rb_thread_t or NODE.
+ In short, they are core functions.
+
+ * cont.c, eval.c, eval_intern.h, load.c, proc.c, thread.c,
+ vm_core.h, vm_dump.c, vm_eval.c, vm_exec.c, vm_insnhelper.c:
+ ditto.
+
+Mon Jan 19 11:22:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/rubysocket.h (rb_cUNIXSocket, rb_cUNIXServer),
+ (unixpath, unixaddr): UNIX domain sockets depend on sys/un.h.
+
+Mon Jan 19 11:02:30 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c: add a prefix "rb_vmdebug_" to
+ vm_stack_dump_raw(), vm_stack_dump_raw_current(),
+ vm_env_dump_raw(), vm_proc_dump_raw(), vm_stack_dump_th(),
+ vm_debug_print_register(), vm_thread_dump_regs(),
+ vm_debug_print_pre(), vm_debug_print_post(),
+ vm_thread_dump_state().
+ This change also may affect core (in fact, user of
+ above functions may be only ko1).
+
+ * vm_core.h: ditto.
+
+ * vm_exec.h (SDR2): remove duplicate definition.
+
+Mon Jan 19 11:00:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_ip_port): use AF_INET6 only when
+ defined, as well as addrinfo_ipv6_p().
+
+Mon Jan 19 10:43:38 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (garbage_collect_with_gvl): suppress warnings.
+
+Mon Jan 19 10:34:32 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/depend: workaround for nmake. files in depend without
+ paths should converted by RULE_SUBST, but mkmf.rb cannot recognize
+ macros currently.
+
+Mon Jan 19 09:53:43 2009 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c:
+ rename ruby_iseq_disasm_insn() -> rb_iseq_disasm_insn().
+ rename ruby_iseq_disasm() -> rb_iseq_disasm().
+
+ * compile.c:
+ rename ruby_iseq_compile() -> rb_iseq_compile_node().
+ rename ruby_iseq_translate_threaded_code() ->
+ rb_iseq_translate_threaded_code().
+ rename ruby_insns_name_array() -> rb_insns_name_array().
+ rename ruby_iseq_build_from_ary() -> rb_iseq_build_from_ary().
+
+ * iseq.c, compile.c: remove ruby_insn_make_insn_table() and make
+ static function insn_make_insn_table().
+
+ * iseq.h, ruby.c, vm.c, vm_core.h, vm_eval.c, vm_dump.c,
+ blockinlining.c: ditto.
+ Rename strange "ruby_" prefix to "rb_" prefix.
+ This changes may affect only core because renamed functions
+ require a pointer of rb_iseq_t which is not exposed.
+
+Mon Jan 19 09:21:04 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: define macros with default value in
+ constdefs.h if not exist them.
+
+ * ext/socket/raddrinfo.c (addrinfo_mdump, addrinfo_mload): support
+ UNIX socket only on platforms which support it.
+
+Mon Jan 19 08:56:53 2009 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm_eval.c (rb_f_local_variables): move definition from eval.c
+ to vm_eval.c because vm_collect_local_variables_in_heap() should
+ be static function.
+
+ * vm.c (vm_collect_local_variables_in_heap): make it static.
+
+Mon Jan 19 04:06:10 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_load): renamed from ruby_iseq_load, since it is
+ for C extensions or the ruby core. [ruby-core:21407]
+
+Mon Jan 19 03:06:22 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (str_transcode0): fix: :xml option doesn't
+ work on str.encode([options]) form without default_internal.
+
+Sun Jan 18 16:56:46 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_inspect_sockaddr): new
+ method AddrInfo#inspect_sockaddr.
+ (inspect_sockaddr): extracted from addrinfo_inspect.
+ (addrinfo_inspect): use inspect_sockaddr.
+ (Init_addrinfo): define the new method.
+
+Sun Jan 18 16:46:37 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_ip_address): new method
+ AddrInfo#ip_address.
+ (addrinfo_ip_port): new method AddrInfo#ip_port.
+ (Init_addrinfo): define the methods above.
+
+Sun Jan 18 14:29:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/unixsocket.c: redundant #ifdef removed.
+
+Sun Jan 18 03:33:23 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_mdump): don't use symbol.
+ (addrinfo_mload): ditto.
+
+Sun Jan 18 03:05:20 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (addrinfo_mdump): new method.
+ (addrinfo_mload): new method.
+ (Init_addrinfo): define the method above.
+
+ * ext/socket/constants.c (constant_arg): str_to_int's first argument
+ constified.
+
+ * ext/socket/mkconstants.rb (gen_name_to_int_decl): generated
+ function's first argument constified.
+ (gen_name_to_int_func_in_guard): ditto.
+ (ipproto_to_int): generated.
+
+ * ext/socket/rubysocket.h (IS_IP_FAMILY): moved from raddrinfo.c.
+
+Sun Jan 18 01:37:50 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_getnameinfo): accept AddrInfo object.
+
+ * ext/socket/raddrinfo.c (rb_check_sockaddr_string_type): defined.
+
+ * ext/socket/rubysocket.h (rb_check_sockaddr_string_type): declared.
+
+Sat Jan 17 22:01:15 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb: new file.
+
+Sat Jan 17 19:33:48 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in (VCSUP): fixed the cases for git-svn or git.
+
+ * win32/Makefile.sub (VCSUP): ditto.
+
+ * Makefile.in (up): `cd' is necessary for git and git-svn.
+
+Sat Jan 17 19:16:16 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate a header file for generated
+ functions.
+
+ * ext/socket/rubysocket.h: include constdefs.h. don't declare
+ generated functions.
+
+ * ext/socket/constants.c: include constdefs.c instead of constants.h.
+
+ * ext/socket/depend: dependency updated.
+
+Sat Jan 17 17:58:22 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/xmp.rb: multilingualizes XMP::StringInputMethod.
+ [ruby-core:21383].
+
+Sat Jan 17 15:01:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (make_inspectname): add a res argument to
+ suppress numeric inspectname.
+ (init_addrinfo_getaddrinfo): call make_inspectname here.
+ (addrinfo_firstonly_new): follow make_inspectname change.
+ (addrinfo_list_new): ditto.
+ (addrinfo_initialize): follow init_addrinfo_getaddrinfo change.
+
+Sat Jan 17 14:52:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: don't cause an error for duplicate names.
+
+Sat Jan 17 12:46:17 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket: split files for each class.
+
+ * ext/socket/rubysocket.h: common header.
+
+ * ext/socket/basicsocket.c: new file for BasicSocket.
+
+ * ext/socket/ipsocket.c: new file for IPSocket.
+
+ * ext/socket/tcpsocket.c: new file for TCPSocket.
+
+ * ext/socket/tcpserver.c: new file for TCPServer.
+
+ * ext/socket/sockssocket.c: new file for SOCKSSocket.
+
+ * ext/socket/udpsocket.c: new file for UDPSocket.
+
+ * ext/socket/unixsocket.c: new file for UNIXSocket.
+
+ * ext/socket/unixserver.c: new file for UNIXServer.
+
+ * ext/socket/socket.c: now for Socket.
+
+ * ext/socket/raddrinfo.c: new file for AddrInfo and name resolution.
+
+ * ext/socket/constants.c: new file for constants.
+
+ * ext/socket/init.c: new file for utilities.
+
+ * ext/socket/mkconstants.rb: export *_to_int.
+
+ * ext/socket/extconf.rb: add new object files.
+
+ * ext/socket/depend: add dependencies for new files.
+
+ * ext/.document: add new files.
+
+Sat Jan 17 11:12:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_restore_0): padding size doesn't need to be large
+ if alloca is used. suppress warnings.
+
+Sat Jan 17 11:12:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (vm_stack_dump_each): initialized at declarations.
+
+ * vm_dump.c (rb_vm_bugreport): constified to suppress a warning.
+
+Fri Jan 16 22:30:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: move addrinfo code.
+
+Fri Jan 16 18:51:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (up): tell nmake that need to run command via
+ shell.
+
+Fri Jan 16 18:43:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (package): includes all rules and expand
+ configured values from the environment to create *.inc, sets RM
+ for ripper.c, and needs chdir if absolute path is given with
+ -exported option.
+
+Fri Jan 16 18:26:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (VALUE): use unsigned long or long long
+ instead of uintptr_t, since many %lx and so on are still used.
+
+Fri Jan 16 17:33:59 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (Makefile): set VCS and VCSUP to support `git svn'
+ and git.
+
+ * Makefile.in, win32/Makefile.sub (up): split from common.mk.
+
+Fri Jan 16 12:24:39 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (thread_start_func_2): call ruby_cleanup() if thread is
+ main thread. [ruby-dev:37624]
+
+Fri Jan 16 12:27:50 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub ($(INSNS), node_name.inc, known_errors.inc,
+ miniprelude.c, newline.c): if dependencies is newer than targets or
+ targets don't exist, try to create targets with BASERUBY. no need to
+ detect errors there because the absence of BASERUBY is not abnormal.
+ after the try, if the targets still don't exist, copy them from
+ $(srcdir).
+
+Fri Jan 16 12:15:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX): must define as string.
+ if not, cause compile error in using PRI?VALUE.
+
+ * win32/Makefile.sub (config.h): add SIZEOF_INTPTR_T and
+ SIZEOF_UINTPTR_T for SIZEOF_VALUE.
+
+Fri Jan 16 11:51:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * symbian/pre-build (COMSPEC): should not overridden.
+
+Fri Jan 16 11:47:56 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_parse_in_main): fixed typo.
+
+Fri Jan 16 11:41:23 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_REPLACE_TYPE): does not define rb_ prefixed
+ name if no default type is given.
+
+ * configure.in (RUBY_DEFINT): checks size.
+
+ * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX, PRI_SIZE_PREFIX):
+ assumes usable if PRIdPTR is defined.
+
+Fri Jan 16 02:25:46 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_thread_execute_interrupts): if signal is already
+ buffered, main thread should wait until timer thread delivers it.
+
+ * thread.c (timer_thread_function): should defer delivery of a signal
+ if main thread does not yet trap a previous one. [ruby-dev:37676]
+
+Fri Jan 16 02:05:55 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (addrinfo_s_ip): new method AddrInfo.ip.
+
+Fri Jan 16 01:42:50 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (call_trace_proc): as Matz said ([ruby-core:21183]),
+ should skip rb_str_new2() if rb_sourcefile() returns NULL.
+ rb_sourcefile() returns NULL if frame is toplevel of Fiber.
+ [ruby-core:21161] [Bug #985]
+
+Fri Jan 16 01:09:37 2009 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (process_options): decrement parse_in_eval to recognize
+ parsing main or normal eval script.
+
+ * compile.c (rb_parse_in_main): return 1 if parsing main script.
+ (if parse_in_eval is negative value, it means main script)
+
+ * parse.y (yycompile0): check rb_parse_in_main() to accumulate
+ script text. Bug #848 [ruby-core:20450]
+
+Fri Jan 16 00:57:34 2009 Koichi Sasada <ko1@atdot.net>
+
+ * lib/debug.rb: as wanabe-san pointed out,
+ set_trace_func should be completely final task in debug.rb.
+ Bug #847 [ruby-core:20449]
+
+Fri Jan 16 00:27:03 2009 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (rb_vm_inc_const_missing_count, ruby_vm_const_missing_count):
+ added.
+
+ * vm_insnhelper.h: ditto.
+
+ * variable.c (rb_const_get_0), insns.def: Constants should not be
+ cached if const_missing is called. [ruby-core:21059] [Bug #967]
+
+ * bootstraptest/test_class.rb: add a test.
+
+Fri Jan 16 00:25:09 2009 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: btest-ruby should receive option with OPTS.
+
+Fri Jan 16 00:21:10 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub ($(INSNS), node_name.inc, known_errors.inc,
+ miniprelude.c, newline.c): shouldn't copy when $(srcdir) != ".", too.
+ (this is a workaround. we need more strict check.)
+
+ * win32/Makefile.sub ($(INSNS)): shouldn't remove BASERUBY.
+
+Fri Jan 16 00:19:55 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_with_gvl): suppress warnings.
+
+Thu Jan 15 20:44:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * tool/file2lastrev.rb: RUBY_REVISION must be an integer.
+
+Thu Jan 15 15:55:31 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (enc_set_default_encoding): should not treat US-ASCII
+ special here. a patch from Yui NARUSE in [ruby-dev:37769].
+ [ruby-dev:37699]
+
+Thu Jan 15 14:27:27 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * LEGAL: Added information for missing/langinfo.c
+
+Thu Jan 15 14:17:57 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): explicit error for "Object::Far += foo 1" just
+ as "Object::Far += 1".
+
+ * parse.y (command): moved return/break/next from command_call for
+ better error message.
+
+ * parse.y (call_args): void value check added.
+
+Thu Jan 15 13:10:58 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (COMPILERFLAG): for enc/trans/gb18030.c.
+
+Thu Jan 15 13:10:09 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (MISSING): added langinfo on mingw
+ and mswin.
+
+ * encoding.c (rb_locale_charmap): use environments on mingw and mswin.
+
+ * missing/langinfo.c (nl_langinfo_codeset): MS-Windows Japanese
+ environment uses Windows-31J derived from Shift_JIS, not EUC-JP.
+
+Thu Jan 15 12:10:39 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub ($(INSNS), node_name.inc, known_errors.inc,
+ miniprelude.c, newline.c): copy only when $(srcdir) != pwd.
+
+Thu Jan 15 11:40:44 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): revert a part of previous commit. it may be a
+ mistake.
+
+Thu Jan 15 10:45:52 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * symbian/README.SYMBIAN: symbian support added. great appreciate
+ to <alexandre.zavorine at symbian.com>.
+
+Thu Jan 15 00:06:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/gb18030.trans: get rid of a 1.9 feature for cross
+ compile. [ruby-core:21345]
+
+Wed Jan 14 23:57:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): fallback to codepage if no
+ locale is found. [ruby-core:21110]
+
+ * missing/langinfo.c (nl_langinfo_codeset): returns NULL if no
+ locale is found.
+
+Wed Jan 14 22:38:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (negative_size_allocation_error_with_gvl): abolish a warning.
+ (negative_size_allocation_error): ditto.
+
+ * ext/openssl/ossl.c (ossl_raise): ditto.
+
+Wed Jan 14 20:05:05 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/gb18030.trans, gb18030-tbl.rb:
+ new Chinese GB18030 transcoding (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
+ * transcode_data.h, transcode.c, tool/transcode_tblgen.rb:
+ added support for GB18030-specific 4-byte sequences
+ (with Yoshihiro Kambayashi)
+
+Wed Jan 14 16:16:19 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/extconf.rb: check ncursesw earlier than ncurses to
+ support UTF-8 strings. non UTF-8 strings should be converted
+ explicitly. [ruby-core:21094]
+
+Wed Jan 14 14:42:30 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * cont.c: fix prototype declare of register_stack_extend
+
+Wed Jan 14 13:19:21 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_aspawn): should not escape with caret
+ unless using cmd.exe.
+
+Wed Jan 14 13:09:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/extconf.rb (gai_strerror): checks if available and if
+ returns const pointer.
+
+ * ext/socket/getaddrinfo.c (gai_strerror): defines only if non
+ available. [ruby-core:21328]
+
+Wed Jan 14 12:39:16 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_wait_readable, rb_io_wait_writable): need rb_fd_ptr.
+
+ * io.c (appendline): reformed.
+
+ * io.c (rb_io_s_pipe): reduced nest of rb_ensure of main block.
+
+Tue Jan 13 22:56:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/addrinfo.h (AI_NUMERICSERV): defined.
+ (AI_MASK): add AI_NUMERICSERV.
+
+ * ext/socket/getaddrinfo.c (getaddrinfo): support AI_NUMERICSERV.
+
+Tue Jan 13 21:45:53 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/ostruct.rb (OpenStruct#inspect): fixed the recursion check.
+ Patch by Kornelius Kalnbach. [ruby-core:20992].
+
+ * test/ostruct/test_ostruct.rb: test for inspect.
+ Patch by Kornelius Kalnbach. [ruby-core:20992].
+
+Tue Jan 13 21:44:30 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_reopen, rb_io_init_copy): should register fptr to pipe_list
+ when copying pipe fptr.
+
+Tue Jan 13 21:38:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rb_getaddrinfo): use getaddrinfo with GVL if
+ getaddrinfo.c/getnameinfo.c is used. They are not thread safe
+ because gethostbyname/gethostbyaddr is used.
+ (rb_getnameinfo): ditto.
+
+ * extconf.rb: define GETADDRINFO_EMU if getaddrinfo.c/getnameinfo.c is
+ used.
+
+Tue Jan 13 21:28:14 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * object.c (rb_obj_not_match): rdoc.
+ Patch by Kornelius Kalnbach. [ruby-core:20991]
+
+Tue Jan 13 18:21:44 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_close_read): call rb_io_fptr_cleanup() instead of
+ fptr_finalize() because the fptr has special finalizer if it is a
+ pipe. [ruby-dev:37757] (3)
+
+Tue Jan 13 18:19:49 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_initialize): workaround for Windows. [ruby-dev:37686]
+ (also see [ruby-dev:37721])
+
+Tue Jan 13 17:29:02 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/make_transdb.rb (converters): should not depend on the
+ hash order for cross compile.
+
+Tue Jan 13 16:39:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/intern.h, thread.c, win32/Makefile.sub (rb_fdset_t,
+ rb_fd_init, rb_fd_term, rb_fd_zero, rb_fd_set, rb_fd_clr, rb_fd_isset,
+ rb_fd_select, rb_fd_ptr, rb_fd_max, HAVE_RB_FD_INIT): new type,
+ functions, and macros for Windows.
+
+ * win32/win32.c (extract_fd, rb_w32_select): use rb_fdset_t to expand
+ fd_array if needed. [ruby-core:19946]
+
+ * win32/win32.c (copy_fd): new function for rb_w32_select().
+
+Tue Jan 13 12:31:54 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/file2lastrev.rb (get_revisions): fixes problem with
+ svn on cygwin. [ruby-dev:37702].
+ Patch by Kouhei Sutou.
+
+Tue Jan 13 11:58:04 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/input-method.rb: IRB did not prompt for MSwin32.
+ [ruby-dev:37686].
+ Patch by arton <artonx AT yahoo.co.jp>.
+
+Tue Jan 13 12:10:42 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/{getaddrinfo,getnameinfo}.c: need to include ws2tcpip.h
+ on Windows.
+
+Tue Jan 13 09:49:49 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * ext/socket/socket.c: removed warning about unused variable 'rai'.
+
+Tue Jan 13 03:07:28 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: require "tool/mdoc2man.rb" before chdir if needed.
+
+Tue Jan 13 02:54:54 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: use headers instead of "netdb.h" in checking
+ getnameinfo() and getaddrinfo() because Windows doesn't have it.
+ [ruby-dev:37757] (1)
+
+ * ext/socket/sockport.h (SA_LEN): use sockaddr_in6 when defined AF_INET6
+ if INET6 is not defined. winsock2's getaddrinfo() returns
+ sockaddr_in6 if ipv6 is available.
+
+Tue Jan 13 02:21:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (internal_cmd_match): extracted from
+ is_internal_cmd.
+
+ * win32/win32.c (argv_size, join_argv): escapes redirection, pipe
+ and caret punctuations with carets.
+
+ * win32/win32.c (rb_w32_aspawn): ditto, and redirections and pipe
+ have no meanings.
+
+Tue Jan 13 02:07:38 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: use Encoding.find("locale") instead of
+ Encoding.locale_charmap
+
+Tue Jan 13 00:57:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_unpack_sockaddr_in): check too short
+ sockaddr.
+ (sock_s_unpack_sockaddr_un): ditto.
+
+Mon Jan 12 23:55:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (addrinfo_ip_unpack): new method
+ AddrInfo#ip_unpack.
+ (addrinfo_unix_path): new method AddrInfo#unix_path.
+ (Init_socket): define above methods.
+
+Mon Jan 12 23:31:42 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (IS_IP_FAMILY): defined.
+ (addrinfo_ip_p): use it.
+
+Mon Jan 12 17:23:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_nothing_raised): removes the
+ current trace to get rid of an issue of MiniTest::Unit#location.
+
+Mon Jan 12 16:49:20 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (install): erased a garbage.
+
+Mon Jan 12 16:45:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (open_dir_handle): extracted from rb_w32_opendir.
+
+ * win32/win32.c (winnt_stat): gets rid of strange behavior of
+ GetFileAttributes(). [ruby-core:21269]
+
+Mon Jan 12 12:43:55 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (parse_args, install): added --strip option.
+
+ * instruby.rb (install_recursive): skips the directory if matched
+ to a no_install pattern ending with a file separator.
+
+Mon Jan 12 12:33:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: don't use bytesize because 1.9 dependent.
+ [ruby-core:21266]
+
+Mon Jan 12 11:59:19 2009 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (ruby_xmalloc, ruby_xrealloc, ruby_xfree):
+ enable to use them without GVL.
+ if GC is invoked, acquire GVL during GC.
+ if NoMemoryError is raised, acquire GVL and raise it.
+
+Mon Jan 12 10:39:19 2009 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: fix comment (terminology: Global VM Lock).
+
+ * thread.c (blocking_region_begin, blocking_region_end):
+ save and clear th->blocking_region_buffer.
+
+ * thread.c (rb_thread_call_with_gvl): check if it has GVL.
+
+ * thread.c (ruby_thread_has_gvl_p): added.
+
+ * vm_core.h: add decls.
+
+Mon Jan 12 10:21:11 2009 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c: remove unused decl.
+
+Sun Jan 11 16:53:14 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (PercentScanner): remove PercentScanner. fixed % after
+ %> bug. [ruby-dev:37751] [Bug #997]
+
+ * test/erb/test_erb.rb: ditto
+
+Sun Jan 11 09:53:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb (c_str): get rid of a 1.9 feature for
+ cross compile. [ruby-core:21243]
+
+Sun Jan 11 09:47:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): set nil as the value if assoc length
+ is not enough. [ruby-core:21249]
+
+Sat Jan 10 21:17:28 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: don't generate unintended newlines.
+
+Sat Jan 10 20:50:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: refactored to nest properly in statically
+ and dynamically.
+
+Sat Jan 10 20:26:17 2009 Tanaka Akira <akr@fsij.org>
+
+ * version.h: make version string succinct:
+ "ruby 1.9.1p5000 (2009-01-10 trunk 21414) [i686-linux]".
+
+Sat Jan 10 19:05:13 2009 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_restore_1): should not be inlined.
+
+Fri Jan 9 21:52:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_define_const): use INT2NUM.
+
+Fri Jan 9 15:40:07 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: define macro if default_value is passed.
+
+Fri Jan 9 13:20:08 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: rescue abnormal Encoding.locale_charmap value.
+
+Fri Jan 9 12:29:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (test-sample), rubytest.rb: use runruby.rb
+
+Fri Jan 9 10:40:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess::MANDATORY_ENVS): some
+ platforms need environments for shared objects.
+
+Thu Jan 8 23:19:38 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (bsock_shutdown): accept symbol/string as how.
+ (shutdown_how_arg): new function.
+
+ * ext/socket/mkconstants.rb: generate shutdown_how_to_int.
+
+Thu Jan 8 23:16:37 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: easy code contains fewer bugs.
+
+Thu Jan 8 22:59:30 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (gen_name_to_int_func): generate
+ name_to_int functions, not only body.
+
+Thu Jan 8 22:44:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: don't use AI_NUMERICSERV for platforms which
+ not define it as old Windows.
+ [ruby-dev:37736]
+
+Thu Jan 8 17:32:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb: should not depend on a library which does not exist
+ in 1.8.
+
+Thu Jan 8 07:52:55 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (init_unix_addrinfo): don't return a value.
+
+Thu Jan 8 07:30:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI.redirectable?): reverted https redirection.
+
+Thu Jan 8 00:31:58 2009 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb (assert_no_match): don't count up as two
+ assertions.
+
+Thu Jan 8 00:26:35 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (addrinfo_getnameinfo): use NI_DGRAM if socktype
+ is SOCK_DGRAM.
+
+Thu Jan 8 00:16:22 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (host_str): add flags_ptr argument to specify
+ AI_NUMERICHOST if host is numeric form.
+ (port_str): add flags_ptr argument to specify AI_NUMERICSERV if port
+ is numeric form.
+
+Wed Jan 7 22:24:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rb_cAddrInfo): new class AddrInfo.
+ (s_recvfrom): return AddrInfo as address.
+ (s_recvfrom_nonblock): ditto.
+ (sock_accept): ditto.
+ (sock_accept_nonblock): ditto.
+ (sock_sysaccept): ditto.
+ (bsock_send): accept AddrInfo as address argument.
+ (sock_connect): ditto.
+ (sock_connect_nonblock): ditto.
+ (sock_bind): ditto.
+ (sock_s_unpack_sockaddr_in): ditto.
+ (sock_s_unpack_sockaddr_un): ditto.
+ (bsock_local_address): new method BasicSocket#local_address.
+ (bsock_remote_address): new method BasicSocket#remote_address.
+ (addrinfo_initialize): new method AddrInfo#initialize.
+ (addrinfo_inspect): new method AddrInfo#inspect.
+ (addrinfo_afamily): new method AddrInfo#afamily.
+ (addrinfo_pfamily): new method AddrInfo#pfamily.
+ (addrinfo_socktype): new method AddrInfo#socktype.
+ (addrinfo_protocol): new method AddrInfo#protocol.
+ (addrinfo_to_sockaddr): new method AddrInfo#to_sockaddr.
+ (addrinfo_canonname): new method AddrInfo#canonname.
+ (addrinfo_ip_p): new method AddrInfo#ip?.
+ (addrinfo_ipv4_p): new method AddrInfo#ipv4?.
+ (addrinfo_ipv6_p): new method AddrInfo#ipv6?.
+ (addrinfo_unix_p): new method AddrInfo#unix?.
+ (addrinfo_getnameinfo): new method AddrInfo#getnameinfo.
+ (addrinfo_s_getaddrinfo): new method AddrInfo.getaddrinfo.
+ (addrinfo_s_tcp): new method AddrInfo.tcp.
+ (addrinfo_s_udp): new method AddrInfo.udp.
+ (addrinfo_s_unix): new method AddrInfo.unix.
+ (Init_socket): define new class and methods.
+ (sock_getaddrinfo): apply socktype hack regardless of ai_flags.
+ (addrinfo_new): defined.
+ (get_afamily): ditto.
+ (fd_socket_addrinfo): ditto.
+ (io_socket_addrinfo): ditto.
+ (SockAddrStringValue): ditto.
+ (SockAddrStringValuePtr): ditto.
+ (sockaddr_string_value): ditto.
+ (sockaddr_string_value_ptr): ditto.
+ (rb_addrinfo_t): ditto.
+ (addrinfo_mark): ditto.
+ (addrinfo_free): ditto.
+ (addrinfo_s_allocate): ditto.
+ (IS_ADDRINFO): ditto.
+ (check_addrinfo): ditto.
+ (get_addrinfo): ditto.
+ (alloc_addrinfo): ditto.
+ (init_addrinfo): ditto.
+ (addrinfo_new): ditto.
+ (call_getaddrinfo): ditto.
+ (init_addrinfo_getaddrinfo): ditto.
+ (make_inspectname): ditto.
+ (addrinfo_firstonly_new): ditto.
+ (addrinfo_list_new): ditto.
+ (init_unix_addrinfo): ditto.
+ (ai_get_afamily): ditto.
+
+ * ext/socket/mkconstants.rb: generate intern_protocol_family,
+ intern_socktype and intern_ipproto.
+
+ [ruby-dev:37692]
+
+Wed Jan 7 22:13:03 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (man, gem): fixed errors.
+
+Wed Jan 7 17:14:40 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb: use installed libraries. [ruby-core:21006]
+
+ * instruby.rb (gem), lib/rubygems/defaults.rb (Gem.default_dir):
+ use version invariant configuration.
+
+Tue Jan 6 19:09:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_restore_0): streamlined to ensure O(1) time. based on
+ a patch by Brent Roman <brent AT mbari.org>.
+
+Tue Jan 6 00:34:25 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_close_before_exec): more heuristics to detect maximum fd.
+
+Mon Jan 5 17:59:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (cygwin): needs properly implemented nl_langinfo().
+ [ruby-core:21110]
+
+ * missing/langinfo.c: added as suggested at [ruby-core:21015], from
+ http://www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c.
+
+ * missing/langinfo.c (nl_langinfo_0): fixed typos for SJIS.
+
+Mon Jan 5 17:38:40 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): use GetConsoleCP() instead of
+ GetACP() because external encoding should be console's one.
+
+ * encoding.c (rb_filesystem_encoding): use GetOEMCP() instead of
+ GetACP() because VFAT/FAT32 uses OEM CP.
+
+Mon Jan 5 16:26:48 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding): use ANSI codepage for file
+ system on cygwin.
+
+ * encoding.c (rb_locale_charmap): reverted. [ruby-core:21110]
+
+Mon Jan 5 16:15:00 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/curses/curses.c (free_window): use xfree instead of free.
+ [ruby-dev:37200]
+
+Mon Jan 5 15:49:45 2009 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/gdbm/gdbm.c (rb_gdbm_fetch): remove needless cast.
+
+Mon Jan 5 12:52:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_env): use user profile folder than personal
+ folder.
+
+Mon Jan 5 08:41:13 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_stat): need type check for non string values.
+ [ruby-dev:37673] fix: #964
+
+ * file.c (rb_file_s_size, rb_file_s_atime, rb_file_s_mtime,
+ rb_file_s_ctime, rb_f_test): ditto.
+
+Mon Jan 5 08:17:56 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): should not add up errors on loops.
+ [ruby-dev:37691]
+
+Mon Jan 5 07:58:37 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c (rb_f_srand): update RDoc. [ruby-core:21113]
+
+Mon Jan 5 06:39:56 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_max): max value from ... not defined for non
+ Integer Numeric end values. [ruby-dev:37690] fix: #974
+
+Sun Jan 4 22:37:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rb_getaddrinfo): defined for address lookup without GVL.
+ (struct getaddrinfo_arg): defined.
+ (nogvl_getaddrinfo): defined.
+ (rb_getnameinfo): defined for name lookup without GVL.
+ (getnameinfo_arg): defined.
+ (nogvl_getnameinfo): defined.
+
+Sun Jan 4 18:10:10 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/gbk.trans, gbk-tbl.rb:
+ new Chinese GBK transcoding (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
+Sun Jan 4 17:55:55 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: added tests for GB2312
+ (from Yoshihiro Kambayashi)
+
+ * enc/trans/chinese.trans: set valid byte patterns for
+ GB2312 and GB12345
+
+Sun Jan 4 17:39:39 2009 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/big5.trans, big5-tbl.rb:
+ new Chinese Big5 transcoding (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
+Sun Jan 4 17:07:45 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems.rb (Gem.set_home, Gem.set_paths): should not create
+ directories stealthily. [ruby-core:20990]
+
+ * lib/rubygems.rb (Gem.find_home): expand_path deals with platform
+ dependent environments.
+
+ * lib/rdoc/ri/paths.rb (RDoc::HOMEDIR): ditto.
+
+ * instruby.rb (gem): creates gem directories at installation.
+
+Sun Jan 4 15:41:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding, rb_locale_charmap): uses
+ codepage on cygwin. [ruby-core:20994]
+
+Sun Jan 4 11:58:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (ruby_float_step): extracted from num_step().
+
+ * range.c (range_step): uses ruby_float_step() for float range.
+ [ruby-dev:37691]
+
+Sun Jan 4 11:11:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): does not use both of makefile.rb and
+ extconf.rb at the same time.
+
+ * lib/mkmf.rb (DLLIB): depends on Makefile. [ruby-core:21096]
+
+Sun Jan 4 09:27:41 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (constant_arg): constified.
+
+ * ext/socket/socket.c (optname_arg): cygwin does not have
+ IPPROTO_IPV6.
+
+ * ext/socket/mkconstants.rb (ipv6_optname_to_int): ditto.
+
+Sun Jan 4 04:33:14 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: redundant #ifdef removed.
+
+Sun Jan 4 03:30:18 2009 Tanaka Akira <akr@fsij.org>
+
+ * io.c (maygvl_copy_stream_wait_read): renamed to add prefix to
+ express GVL state.
+ (nogvl_copy_stream_wait_write): ditto.
+ (nogvl_copy_stream_sendfile): ditto.
+ (maygvl_copy_stream_read): ditto.
+ (nogvl_copy_stream_write): ditto.
+ (nogvl_copy_stream_read_write): ditto.
+ (nogvl_copy_stream_func): ditto.
+
+Sun Jan 4 00:30:50 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb: merged r20850, r17881, r16811, r16763, r16748, r15829,
+ r15794 and r15698 from ruby_1_8.
+
+ * test/erb/test_erb.rb: ditto.
+
+Sat Jan 3 22:24:36 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk, Makefile.in, win32/Makefile.sub (INSNS): move the macro
+ definition from common.mk to {Makefile.in,win32/Makefile.sub}.
+ [ruby-dev:37678]
+
+Sat Jan 3 15:30:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/chinese.trans: added for transcoding EUC-CN and GB12345.
+
+ * enc/trans/GB/: ditto.
+
+Sat Jan 3 15:26:30 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/euc-cn.c: renamed from gb2312.c because GB2312 is
+ the name of a CSS. it's encoding name is "EUC-CN".
+
+Sat Jan 3 03:00:42 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk, Makefile.in, win32/Makefile.sub ($(INSNS), node_name.inc,
+ known_errors.inc, miniprelude.c, newline.c): move rules from common.mk
+ to {Makefile.in,win32/Makefile.sub} for nmake.
+ [ruby-core:20993]
+
+Fri Jan 2 23:51:41 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_sleep.rb (test_sleep_5sec): stop gc.
+
+Fri Jan 2 23:36:10 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: don't apply socktype hack [ruby-core:184] for
+ sock_s_getaddrinfo.
+ (sock_getaddrinfo): add socktype_hack argument.
+ (sock_addrinfo): call sock_getaddrinfo with socktype_hack.
+ (sock_s_getaddrinfo): call sock_getaddrinfo without socktype_hack.
+ [ruby-dev:37674]
+
+Fri Jan 2 23:33:38 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/missing.h, sprintf.c: get rid of a warning of VC++.
+
+Fri Jan 2 22:25:46 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * process.c: use sigaction instead of sigset. [ruby-core:21021]
+
+Fri Jan 2 22:22:04 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_proc.rb: suppress error message.
+
+Fri Jan 2 22:20:46 2009 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb (test_wait_and_sigchild): remove debug
+ output.
+
+Fri Jan 2 17:45:19 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: rename family_to_str to intern_family.
+ it returns ID now.
+
+ * ext/socket/socket.c (ipaddr): use intern_family.
+
+Fri Jan 2 17:20:31 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use ID in the values of
+ family_to_str_hash. family_to_str returns a VALUE.
+
+ * ext/socket/socket.c (ipaddr): follow family_to_str change.
+
+Fri Jan 2 17:01:51 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: refactored to gather stringizer
+ description.
+
+Fri Jan 2 15:30:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: make common prefix optional.
+
+Fri Jan 2 14:59:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use hash for family_to_str to avoid
+ linear search. lenp argument removed.
+
+ * ext/socket/socket.c (ipaddr): call family_to_str without lenp
+ argument.
+
+Fri Jan 2 14:33:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (gen_int_to_name): don't compare constants
+ in preprocessor because the constants may be enum.
+
+Fri Jan 2 14:11:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (gen_int_to_name): add lenp argument.
+
+ * ext/socket/socket.c (ipaddr): follow argument change.
+
+Fri Jan 2 10:20:24 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/singleton.rb: fix documentation. [ruby-core:21038]
+
+Fri Jan 2 06:43:58 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * signal.c (rb_signal_buff_size): defined for check whether signal
+ is in the buffer or not.
+
+ * thread_pthread.c (thread_timer): don't exit the loop when signal
+ is in the buffer. [ruby-dev:37637]
+
+Fri Jan 2 04:40:00 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: check duplicates.
+
+Fri Jan 2 02:39:08 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (optname_arg): defined.
+ (bsock_setsockopt): use optname_arg.
+ (bsock_getsockopt): ditto.
+
+ * ext/socket/mkconstants.rb: generate so_optname_to_int,
+ ip_optname_to_int, ipv6_optname_to_int, tcp_optname_to_int and
+ udp_optname_to_int.
+ more constants.
+
+Fri Jan 2 02:08:36 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (constant_arg): extracted from family_arg.
+ (family_arg): use constant_arg.
+ (socktype_arg): ditto.
+ (level_arg): ditto.
+
+Fri Jan 2 01:15:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (level_arg): defined.
+ (bsock_setsockopt): use level_arg.
+ (bsock_getsockopt): ditto.
+
+ * ext/socket/mkconstants.rb: generate level_to_int.
+
+Fri Jan 2 00:58:40 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (family_arg): accept symbols as well.
+ (socktype_arg): ditto.
+
+Fri Jan 2 00:49:44 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_getaddrinfo): use socktype_arg.
+
+Fri Jan 2 00:12:27 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (family_arg): extracted from
+ setup_domain_and_type.
+ (socktype_arg): ditto.
+ (udp_init): use family_arg.
+ (sock_s_gethostbyaddr): ditto.
+ (sock_s_getaddrinfo): ditto.
+ (sock_s_getnameinfo): ditto.
+
+Thu Jan 1 22:27:55 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec: fix for builddir != srcdir
+
+ * Makefile.in: ditto.
+
+Thu Jan 1 21:26:05 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_getnameinfo): use family_to_int.
+
+Thu Jan 1 21:08:34 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: check all alias possibility.
+
+Thu Jan 1 20:59:55 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: more possible aliases.
+
+Thu Jan 1 20:54:02 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: AF_ISO and AF_OSI may be aliased.
+
+Thu Jan 1 20:50:09 2009 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * process.c (before_exec): it makes no sense for a conditional
+ expression to return a void value.
+
+Thu Jan 1 20:47:09 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_getaddrinfo): use family_to_int.
+
+Thu Jan 1 20:17:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: include constants.h at top.
+
+Thu Jan 1 19:53:33 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: add valp argument for family_to_int and
+ socktype_to_int.
+
+ * ext/socket/socket.c (setup_domain_and_type): use valp argument.
+
+Thu Jan 1 19:36:57 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate family_to_str.
+
+ * ext/socket/socket.c (ipaddr): use family_to_str.
+
+Thu Jan 1 17:37:12 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate socktype_to_int.
+
+ * ext/socket/socket.c (setup_domain_and_type): use socktype_to_int.
+
+Thu Jan 1 17:26:47 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (setup_domain_and_type): initialize ptr.
+
+Thu Jan 1 17:01:50 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: refine family_to_int.
+
+Thu Jan 1 16:48:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate family_to_int().
+
+ * ext/socket/socket.c (setup_domain_and_type): use family_to_int.
+
+Thu Jan 1 15:08:46 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/file2lastrev.rb: supports git repositories which are cloned
+ from a git-svn gateway.
+ Patch by Hongli Lai. [ruby-core:21020]
+
+Thu Jan 1 16:08:11 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: generate init_constants function.
+
+ * ext/socket/socket.c (Init_socket): call init_constants.
+
+Thu Jan 1 16:03:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb (Socket::AF_INET6): moved from socket.c.
+ (Socket::PF_INET6): ditto.
+
+Thu Jan 1 15:27:07 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use erb.
+
+Thu Jan 1 15:07:56 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: add -o option.
+
+ * ext/socket/depend: use mkconstants.rb with -o option.
+
+Thu Jan 1 07:42:36 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/singleton.rb: fix indentation of RDoc text. [ruby-core:21029]
+
+Thu Jan 1 07:16:44 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (distclean-ext, realclean-ext): use EXTS as default.
+
+ * win32/Makefile.sub (distclean-ext, realclean-ext): try to remove ext
+ directory.
+
+Thu Jan 1 06:56:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/file2lastrev.rb: unset PWD.
+
+Wed Dec 31 23:37:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_socketpair): yield if a block is given.
+ (io_call_close): defined.
+ (io_close): defined.
+ (pair_yield): defined.
+
+Wed Dec 31 19:35:57 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/README: follows the change of directory structure in rubyspec.
+
+ * spec/default.mspec: ditto. Also follows change of mspec command.
+
+ * Makefile.in: ditto.
+
+Wed Dec 31 17:16:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read_internal): show openssl error
+ code in EWOULDBLOCK error.
+
+Wed Dec 31 15:45:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_body): don't check to_io because
+ Zlib::GzipWriter#to_io returns the underlying IO.
+
+Wed Dec 31 14:52:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_digest.c (GetDigestPtr): use StringValueCStr
+ instead of STR2CSTR.
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_key_initialize): ditto.
+ (ossl_ec_group_initialize): ditto.
+
+Wed Dec 31 14:12:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_to_float): replaced by to_flo definition from
+ math.c [ruby-dev:37668]
+
+ * math.c (Need_Float): use rb_to_float().
+
+Wed Dec 31 13:49:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#read_nonblock):
+ implemented.
+
+ * ext/openssl/ossl_ssl.c (rb_sys_fail_path): removed.
+ (fcntl.h): don't include.
+ (ossl_ssl_read_internal): defined.
+ (ossl_ssl_read): use ossl_ssl_read_internal.
+ (ossl_ssl_read_nonblock): use ossl_ssl_read_internal.
+ (Init_ossl_ssl): define sysread_nonblock, instead of read_nonblock.
+
+Wed Dec 31 00:27:54 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_to_float): prohibit conversion from nil to float.
+ [ruby-dev:37663]
+
+ * pack.c (pack_pack): replace all rb_Float() to rb_to_float().
+ [ruby-dev:37663]
+
+Tue Dec 30 21:17:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use sock_define_uconst for INADDR_*
+ constants because Socket::INADDR_LOOPBACK should be 0x7f000001
+ instead of -0xffffff.
+
+ * ext/socket/socket.c (sock_define_uconst): defined.
+
+Tue Dec 30 18:23:10 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.3.1 r4506.
+ * test/minitest/*.rb: ditto.
+
+Tue Dec 30 17:59:59 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: Minor fixes and tweaks in documentation.
+
+Tue Dec 30 17:03:51 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ext/dl/test/test_import.rb: fix a prototype decl.
+ pointed out by Takehiro Kubo [ruby-core:20971].
+
+Tue Dec 30 16:56:09 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_blocking_region): add a comment.
+
+ * thread.c (rb_thread_call_without_gvl): added as a alias of
+ rb_thread_blocking_region().
+
+ * thread.c (rb_thread_call_with_gvl): added.
+
+ * vm_core.h (rb_thread_t#blocking_region_buffer): added for
+ rb_thread_call_with_gvl().
+
+Mon Dec 29 23:41:42 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ext/dl/test/test_base.rb: add libc search logic.
+ this patch is written by Takehiro Kubo.
+ [ruby-core:20963] [Bug #932]
+
+ * ext/dl/dl.h: Add ",..." as the last argument.
+ this patch is written by Takehiro Kubo.
+ Bug #633 [ruby-core:19289]
+
+ * ext/dl/lib/dl/stack.rb: add add_padding() to calculate
+ alignment. this patch is written by Takehiro Kubo.
+ Bug #633 [ruby-core:19289]
+
+ * ext/dl/test/test_func.rb: atof()'s return value is double.
+ this patch is written by Takehiro Kubo.
+ Bug #633 [ruby-core:19289]
+
+ * ext/dl/test/test_import.rb:
+ - atof()'s return value is double.
+ - The types of qsort's second and third argument are size_t.
+ - fprintf()'s return value is int.
+ this patch is written by Takehiro Kubo.
+ Bug #633 [ruby-core:19289]
+
+Mon Dec 29 22:37:17 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * process.c (rb_waitpid): retries waitpid when EINTR.
+ [ruby-core:19744].
+
+Mon Dec 29 23:18:52 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * bignum.c (rb_cstr_to_inum): changed an error message.
+
+ * complex.c (string_to_c_strict): ditto.
+
+ * rational.c (string_to_r_strict): ditto.
+
+Mon Dec 29 22:37:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): template f should not accept non float
+ values. [ruby-dev:37656]
+
+ * object.c (rb_to_float): new function to type check floats.
+
+Mon Dec 29 22:27:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c (rb_f_rand): type check simplified. strings are no
+ longer allowed for argument. [ruby-dev:37655]
+
+ * test/ruby/test_rand.rb (TestRand::o.to_int): need override
+ to_int.
+
+Mon Dec 29 21:22:31 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: Infinity.numerator returns self. [experimental]
+
+ * numeric.c: Infinity.denominator returns 1. [experimental]
+
+Mon Dec 29 20:57:14 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/ri.1: new manpage.
+
+Mon Dec 29 20:45:25 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: floor, ceil, truncate and round accept an extra
+ argument like Float#round. [experimental]
+
+Mon Dec 29 18:24:49 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Makefile.in (distclean-local): removes Doxyfile and
+ run.gdb at distclean'ing.
+
+Mon Dec 29 17:53:24 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * bin/erb: accepts options in more flexible styles.
+
+Mon Dec 29 17:25:17 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/erb.rb (ERB): m17n of ERB. adds rdoc.
+ fixes #712. c.f. [ruby-dev:37516].
+
+ * lib/erb.rb (ERB::Compiler#compile): recognizes magic comments.
+ returns a pair of compiled script and its script encoding.
+
+ * lib/erb.rb (ERB#set_eoutvar): make generated scripts return a
+ string in correct encoding.
+
+ * lib/erb.rb (ERB#def_method): use Kernel#eval for encoding-awareness
+ of the evaluated string.
+
+ * bin/erb.rb (ERB::Main.run): adds -E and -U options.
+ String is no longer Enumerable.
+
+ * man/erb.1: new manpage.
+
+ * test/erb/test_erb_m17n.rb: new test case for m17n features.
+
+Mon Dec 29 18:02:45 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/io/wait/wait.c (io_nread): returns number of bytes available
+ for read. response to feature request #936 in [ruby-core:20917].
+
+Mon Dec 29 17:52:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/io/wait/wait.c (io_ready_p): updated to follow RDoc.
+
+Mon Dec 29 16:52:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (s_recvfrom_nonblock): revert r21162.
+
+Mon Dec 29 16:16:20 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_set_eval_stack, vm_set_main_stack, vm_set_top_stack):
+ check stack overflow. [ruby-dev:37646]
+
+Sun Dec 28 18:36:33 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/rubygems/test_gem_command.rb
+ (test_add_option_overlapping_common_and_local_options):
+ follows r21066.
+
+Mon Dec 29 14:50:19 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Makefile.in (ext-clean): ext-clean always fails.
+
+ * ext/dl/ripper/extconf.rb: adds y.output into the clean list.
+
+Mon Dec 29 11:58:39 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_mutex_trylock): return false if Mutex owned
+ by current thread. [ruby-core:20943]
+
+ * thread.c (rb_mutex_lock): check dead lock (recursive lock) here.
+
+ * test/ruby/test_thread.rb: add a test.
+
+Mon Dec 29 10:58:54 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (rb_get_path): move encoding conversion of file path
+ from rb_scan_open_args.
+
+ * io.c (rb_scan_open_args): ditto.
+
+Mon Dec 29 07:15:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * cont.c: small RDoc fix mentioned from <radek.bulat at gmail.com>
+ in [ruby-core:20921].
+
+Mon Dec 29 03:43:25 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (process_options): set th->base_block only while
+ it is needed. [ruby-dev:37634] [Bug #939]
+
+ * ruby.c (require_libraries): clear th->base_block before
+ require libraries.
+
+Sun Dec 28 21:33:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ext/dl/test_base.rb: add BSD's case.
+
+Sun Dec 28 21:09:12 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/dl/lib/dl/import.rb (DL::Importer#sizeof): follows
+ a feature change in 1.9.
+
+Sun Dec 28 21:03:07 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/dl/lib/dl/import.rb (DL::Importer#extern): adds filename and
+ line number to module_eval'ing for readability of backtrace.
+ (DL::Importer#bind): ditto.
+
+ * ext/dl/lib/dl/struct.rb (DL::CStructBuilder#create): ditto.
+
+Sun Dec 28 19:11:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): do not use snprintf/vsnprintf in
+ msvcrt.
+
+ * sprintf.c: not force to override snprintf/vsnprintf.
+ [ruby-core:20824]
+
+Sun Dec 28 17:21:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rubygems/test_ext_configure_builder.rb (test_self_build_fail):
+ Extends pattern for FreeBSD's error message.
+
+Sun Dec 28 17:10:13 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/dl/test/test_dl2.rb: modify strncpy, strcpy, qsort, types.
+ Patch by Takehiro Kubo.
+ Bug #633 [ruby-core:19289]
+ * ext/dl/test/test_base.rb: /lib/libc.so is x86_64 binary in x86_64 architecture.
+
+Sun Dec 28 12:53:10 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/dl/test/test_base.rb: use libc.dylib when the platform is darwin.
+
+Sun Dec 28 12:24:14 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (mutex_free, mutex_unlock): add qualifiers.
+
+Sun Dec 28 10:28:04 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (mutex_free): GC thread (main thread) has failed to unlock
+ a mutex that is locked by another thread, which makes the mutex
+ dangling in keeping_mutexes and causes [BUG] or stuck finally.
+ Now unlocking is performed as locking thread.
+
+ * thread.c (mutex_unlock, rb_mutex_unlock, rb_mutex_unlock_all):
+ mutex_unlock receives a thread.
+
+Sun Dec 28 05:44:44 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.3.1 r4505.
+ * test/minitest/*.rb: ditto.
+
+Sun Dec 28 00:43:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * runruby.rb: refactored to modify ENV as once.
+
+Sat Dec 27 22:41:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_info_formatting.rb (setup, teardown): uses
+ mktmpdir and removes it after the test.
+
+ * test/cgi/test_cgi_session.rb (setup, teardown): ditto.
+
+Sat Dec 27 21:46:10 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * ext/dl/test/test_base.rb: use lib64 when the architecture is x86_64.
+
+Sat Dec 27 20:26:59 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_argv_size): if an argument is empty, it's size
+ is 2, not 0, because it will be converted to "".
+
+Sat Dec 27 19:40:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (after_exec): needs to reset before restart timer
+ thread.
+
+ * thread.c (thread_start_func_2): stops timer thread if forked in
+ the new thread. [ruby-core:19385]
+
+ * thread.c (rb_thread_atfork, rb_thread_atfork_before_exec): DRY.
+
+Sat Dec 27 18:25:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_eval.c (rb_f_loop): return enumerator if no block given.
+ [ruby-list:45747]
+
+Sat Dec 27 17:08:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (dummy_gdb_enums.special_consts): forces to load debug
+ info on Mac OS X.
+
+ * .gdbinit (rp): added T_ZOMBIE.
+
+Sat Dec 27 16:18:02 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_frame_callee, rb_frame_caller): rb_frame_callee()
+ should return method id on current frame.
+ add rb_frame_caller() to get method id on parent frame.
+ Bug #884 [ruby-dev:37446]
+
+ * eval.c (rb_f_method_name): use rb_frame_caller()
+ instead of rb_frame_callee().
+
+Sat Dec 27 15:28:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): show source and destination
+ encoding. [ruby-dev:37285]
+
+Sat Dec 27 15:23:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_yield_with_cfunc): rename parameter name
+ "blockptr" to "blockargptr".
+
+Sat Dec 27 15:15:56 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (revision.h): ignores failure of file2lastrev.
+
+Sat Dec 27 15:02:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (process_options): fix to untouch th->mild_compile_error.
+ [ruby-dev:37621], [ruby-dev:37620]
+
+Sat Dec 27 14:48:26 2008 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.h, iseq.c (rb_iseq_new_main): add a type ISEQ_TYPE_MAIN.
+ [ruby-dev:37619]
+
+ * compile.c (rb_dvar_defined, ruby_iseq_compile): ditto.
+
+ * iseq.c (iseq_data_to_ary, iseq_load): ditto.
+
+ * compile.c (iseq_compile_each): fix to check ip->compile_data.
+
+Sat Dec 27 14:29:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI.redirectable?): permit https redirection.
+ patch from Roman Shterenzon. [ruby-core:20485]
+
+Sat Dec 27 13:36:55 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (get_errinfo): return th->errinfo value
+ if normal errinfo place (dynamic local variable) is not found.
+ fixes Bug #732 [ruby-dev:37046].
+
+ * bootstraptest/test_proc.rb: add a test.
+
+Sat Dec 27 13:10:43 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/irb.1: adds -v, -h, -E and -U.
+
+Sat Dec 27 11:41:45 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method, vm_call_cfunc): use original id instead of
+ calling id when NODE_CFUNC or NODE_BMETHOD.
+ fixes Bug #632 [ruby-core:19282].
+
+ * vm_eval.c (vm_call0, vm_call_super): ditto.
+
+ * vm_method.c (rb_add_method, rb_alias): store original id
+ in nd_file field of NODE_METHOD.
+
+ * test/stringio/test_stringio.rb: add a test.
+
+Sat Dec 27 09:48:54 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (Init_VM): create and define TOPLEVEL_BINDING at first.
+
+ * vm.c (vm_set_main_stack, rb_iseq_eval_main): added.
+
+ * parse.y (rb_parser_compile_file): fix to check parse_in_eval flag.
+
+ * eval.c (ruby_exec_node): use rb_iseq_eval_main()
+ instead of rb_iseq_eval().
+
+ * iseq.c (rb_iseq_new_main), vm_core.h: added.
+ main script (specified by -e or script name) should be run
+ under TOPLEVEL_BINDING using Kernel#eval. Above changes
+ simulate Kernel#eval behaviour. [ruby-dev:37240]
+
+ * compile.c (make_name_for_block): skip iseq except block type.
+ this fix is needed for [ruby-dev:37240], and also fixes
+ [ruby-dev:35392].
+
+Sat Dec 27 09:14:17 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * cont.c: rdoc for Fiber. patch by Muhammad Ali.
+ [ruby-core:20894]
+
+Sat Dec 27 05:38:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (after_fork): ignores a termination request in the
+ parent process. [ruby-dev:37447]
+
+Sat Dec 27 01:52:39 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Using a more robust transcoding scheme to produce
+ ASCII compatible inspect() messages. [ruby-dev:37591]
+
+Fri Dec 26 18:04:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fptr_finalize): don't allocate objects if noraise.
+ (finish_writeconv): add noalloc argument to be able to avoid
+ object allocation.
+ (finish_writeconv_arg): introduced again.
+ (finish_writeconv_sync): follow the above change.
+
+Fri Dec 26 17:04:14 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/input-method.rb (IRB::StdioInputMethod#initialize):
+ removed a 'p' for debugging.
+
+Fri Dec 26 15:50:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::List#summarize): gives priority
+ to latter switches. [ruby-dev:36692]
+
+ * lib/optparse.rb (OptionParser#summarize): do not append
+ unnecessary line terminator.
+
+Fri Dec 26 14:01:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fptr_finalize): close the IO object even if finish_writeconv or
+ flush is failed.
+ (finish_writeconv): don't raise. return errno or exception.
+ (finish_writeconv_arg): removed.
+ (finish_writeconv_sync): follow finish_writeconv change.
+
+ * transcode.c (rb_econv_make_exception): new function.
+
+ * include/ruby/encoding.h (rb_econv_make_exception): declared.
+
+Thu Dec 25 20:57:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (str_transcode0): set encoding when String#encode was
+ given explicit but the same destination and source encoding.
+
+Thu Dec 25 20:01:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_s_pipe): unused variable removed.
+
+Thu Dec 25 19:35:51 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (sym_ignore): remove useless symbol.
+
+Thu Dec 25 18:36:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (pipe_close): removed.
+ (pipe_yield): defined.
+ (rb_io_s_pipe): use pipe_yield.
+
+Thu Dec 25 17:49:45 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (decorate_convpath): show type of escaping for
+ xml_attr_quote or some conversions.
+
+Thu Dec 25 17:06:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_initialize): check fd validity. [ruby-dev:36646]
+
+Thu Dec 25 16:23:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (flush_before_seek): check io_fflush result.
+ (rb_io_check_readable): ditto.
+ (rb_io_flush): ditto.
+ (rb_io_fsync): ditto.
+ (remain_size): ditto.
+ (rb_io_write_nonblock): ditto.
+ (finish_writeconv): ditto.
+ (fptr_finalize): ditto.
+ (io_reopen): ditto.
+ (rb_io_reopen): ditto.
+ (copy_stream_body): ditto.
+
+Thu Dec 25 15:54:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fflush): flush write buffer without write lock in
+ finalizers. [ruby-dev:37572]
+
+ * io.c (rb_io_fptr_finalize): clear write lock before finalizing.
+
+Thu Dec 25 15:07:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fptr_finalize): close the IO object even if close(2) is failed.
+
+Thu Dec 25 14:51:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/parser.rb (RDoc::Parser.binary?): should read in binary mode.
+
+Thu Dec 25 14:32:23 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_method_search): fix control flow bug.
+ (commited at r20981)
+
+Thu Dec 25 13:28:20 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_flush): fsync() after buffer is flushed on win32.
+ [ruby-core:20043]
+
+Thu Dec 25 13:13:00 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_method_search): return rb_cObject if there is no
+ super class. [ruby-dev:37587]
+
+ * bootstraptest/test_method.rb: add tests for above.
+
+Thu Dec 25 12:49:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (proc_new): should use proc_dup() if block has Proc.
+
+ * vm.c (vm_make_proc_from_block): should use rb_cProc for block.
+
+ * vm.c (vm_make_proc): add an assertion.
+
+ * bootstraptest/test_proc.rb: add a test.
+
+Thu Dec 25 12:44:27 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_yield_with_cfunc): check block has Proc.
+
+Thu Dec 25 05:53:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl, id.h (ruby_method_ids): not depend on if
+ token are defined as macros. [ruby-dev:37553]
+
+ * template/id.h.tmpl, id.h (ruby_method_ids_check): enclosed in a
+ struct.
+
+Thu Dec 25 01:52:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): sets native thread key.
+
+Thu Dec 25 01:09:23 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline_history.rb: check the encoding that
+ is in the Readline::HISTORY.
+
+Thu Dec 25 00:59:06 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline_history.rb: did not check the
+ encoding that is in the Readline::HISTORY. I will fix it.
+
+Wed Dec 24 22:36:06 2008 Koichi Sasada <ko1@atdot.net>
+
+ * error.c, vm_dump.c: change message by rb_bug().
+
+Wed Dec 24 21:57:39 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_peephole_optimize): fix typo.
+
+Sun Dec 21 13:38:04 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (invoke_block_from_c): fix to point right cfp.
+
+ * vm.c (vm_make_proc, vm_make_proc_from_block), vm_core.h:
+ remove unused parameter cfp.
+
+ * vm_insnhelper.c, proc.c (proc_new): ditto.
+
+Wed Dec 24 20:59:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * error.c (exc_equal): == method should not raise Exception.
+ [ruby-dev:37519]
+
+ * sample/test.rb: fix test.
+
+Wed Dec 24 20:33:45 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): use class of method defined
+ instead of receiver's class on bmethod. fixes [ruby-core:20786]
+
+ * bootstraptest/test_method.rb: add a test for above.
+
+ * vm_insnhelper.c (vm_setup_method): remove unused parameter klass.
+
+ * vm_insnhelper.h (CALL_METHOD): ditto.
+
+ * insns.def, vm_eval.c: ditto.
+
+Wed Dec 24 20:15:50 2008 Koichi Sasada <ko1@atdot.net>
+
+ * tool/file2lastrev.rb (get_revisions): fix to ignore end of line.
+
+Wed Dec 24 13:33:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (HAVE_LONG_LONG, HAVE_OFF_T): revised for autoconf
+ 2.62 or later.
+
+Wed Dec 24 06:29:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (OBJDUMP, OBJCOPY): autoconf list is not comma
+ separated.
+
+ * configure.in (AC_HEADER_STDC, AC_CHECK_HEADERS, AC_CHECK_FUNCS):
+ removed duplicated checks.
+
+Wed Dec 24 03:21:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el: added comment to mention newer version
+ bundled with Emacs 23 or later. a patch from Phil Hagelberg
+ <phil at hagelb.org> in [ruby-core:20838].
+
+Tue Dec 23 23:49:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_init_copy): call io_seek only if io_tell succeeds.
+
+Tue Dec 23 22:57:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork): don't propagate an error message if error
+ buffer not given.
+
+Tue Dec 23 21:55:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork): propagate an error message from child to parent.
+ (rb_f_exec): show details of error in child process on
+ exception.
+ (save_redirect_fd): add error message arguments.
+ (run_exec_dup2): ditto.
+ (run_exec_close): ditto.
+ (run_exec_open): ditto.
+ (run_exec_dup2_child): ditto.
+ (run_exec_pgroup): ditto.
+ (run_exec_rlimit): ditto.
+ (rb_run_exec_options): ditto.
+ (rb_exec): ditto.
+ (rb_exec_atfork): ditto.
+ (rb_spawn_internal): ditto.
+ (rb_spawn): ditto.
+ (rb_f_system): follow arguments change.
+ (proc_daemon): ditto.
+ (rb_f_spawn): show details of error in child process on exception.
+
+ * io.c (popen_exec): add error message arguments.
+ (pipe_open): show details of error in child process on exception.
+
+ * include/ruby/intern.h (rb_run_exec_options): add error message
+ arguments.
+ (rb_exec): ditto.
+ (rb_fork): ditto.
+ (rb_spawn): ditto.
+
+ * ext/pty/pty.c (chfunc): add error message arguments.
+
+Tue Dec 23 20:28:28 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * io.c: rdoc for File::open and 1.9 feature in file modes.
+
+ * transcode.c: rdoc for String#encode
+
+Tue Dec 23 19:51:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): deals with quoted commands.
+
+Tue Dec 23 18:44:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * strftime.c (rb_strftime): use locale insensitive functions for tr_TR
+ locale.
+
+Tue Dec 23 17:38:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb (assert_equal): show small differences
+ for Regexp and Float.
+
+Tue Dec 23 16:49:48 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): support normal commands with arguments.
+
+Tue Dec 23 16:22:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_inspect): show fd number if there is no pathname.
+
+Tue Dec 23 15:48:55 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/file2lastrev.rb: shouldn't use single quote in shell's command
+ line if you want to support Windows.
+
+Tue Dec 23 15:46:43 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/mathn.rb: Math.sqrt(NaN) should be NaN. [ruby-dev:37537]
+
+Tue Dec 23 15:46:47 2008 Eric Hodel <drbrain@segment7.net>
+ * gem_prelude.rb: Match full RubyGems behavior when a gem can't be
+ found.
+
+Tue Dec 23 15:36:58 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/file2lastrev.rb: detects vcs directory properly on building
+ outside of srcdir. [ruby-dev:37555] [ruby-dev:37561]
+
+Tue Dec 23 15:30:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): need to initialize args.
+
+Tue Dec 23 14:18:14 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/st.h: need to include defines.h because LONG_LONG is
+ defined there.
+
+Tue Dec 23 13:52:05 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser/c.rb: Don't coalesce adjacent comment blocks.
+ [bug#901]
+
+Tue Dec 23 12:00:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (pipe_close): fix coding style. [ruby-dev:37554]
+
+Tue Dec 23 08:10:05 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Fix documentation. [bug#827]
+
+Tue Dec 23 08:04:58 2008 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Don't remove methods twice. [bug#555]
+
+Tue Dec 23 00:16:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * sprintf.c (rb_str_format): fix buffer overflow.
+
+Mon Dec 22 19:31:19 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (revision.h): uses tool/file2lastrev.rb to support
+ git-svn.
+
+ * version.h: changed version string as
+ `ruby 1.9.1 (2008-12-22 patchlevel-5000 trunk 20912)
+ [i386-darwin9.6.0]'.
+
+Mon Dec 22 16:32:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): encoding of packed string only from 'm',
+ 'M', and 'u' should be US-ASCII. [ruby-dev:37284]
+
+ * pack.c (pack_pack): encoding of packed string only from 'U'
+ should be UTF-8. also upgrade US-ASCII strings to UTF-8.
+
+Mon Dec 22 15:56:49 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Doxyfile.in: new file. Template of a configuration file.
+ Introduces C-level API reference generation with Doxygen.
+
+ * tool/file2lastrev.rb: wrapper script that abstracts subversion
+ and git-svn.
+
+ * tool/strip-rdoc.rb: filter for preventing doxygen from processing
+ rdoc comments.
+
+ * configure.in: (Doxyfile): Doxyfile is generated together with
+ Makefile.
+ (PACKAGE): configuration $(PACKAGE) is necessary for $(docdir).
+
+ * instruby.rb: adds a new install target 'capi'
+
+ * common.mk (capi): new target that generates C API documents with
+ Doxygen.
+ (install-capi): new target.
+ (pre-install-capi): ditto.
+ (do-install-capi): ditto.
+ (post-install-capi): ditto.
+
+Mon Dec 22 21:31:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (int_ord): Integer#ord implemented.
+
+Mon Dec 22 21:26:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_s_pipe): IO.pipe can take a block.
+ (pipe_close): new function.
+
+Mon Dec 22 21:08:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb (assert_nothing_raised): increment
+ assertion count. [ruby-dev:37480]
+
+Mon Dec 22 19:10:44 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (Init_native_thread): need to call
+ ruby_thread_set_native() here.
+
+Mon Dec 22 18:00:36 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: fix wrong flag value.
+
+Mon Dec 22 15:15:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/protocol.rb (Net::BufferedIO#rbuf_fill): avoid calling
+ read_nonblock in rescue. use retry instead.
+
+Mon Dec 22 14:35:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_external_str_new_with_enc): set ASCII-8BIT if
+ encoding is US-ASCII and string contains 8bit characters.
+
+Mon Dec 22 12:26:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (rubydll.def), win32/mkexports.rb
+ (Exports#exports): added VERSION.
+
+Mon Dec 22 12:25:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD_vfprintf): fix for test_sprintf_comb.rb, by
+ wanabe in [ruby-dev:36935].
+
+Mon Dec 22 12:05:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (mingw): no longer uses snprintf and vsnprintf of
+ msvcrt. [Bug#6]
+
+ * win32/win32.c (rb_w32_vsnprintf, rb_w32_snprintf): removed.
+
+ * win32/Makefile.sub (config.h): vsnprintf exists in VC7 or later.
+
+ * win32/mkexports.rb (Exports#initialize): aliases
+ rb_w32_vsnprintf and rb_w32_snprintf for binary compatibility.
+
+ * sprintf.c (rb_str_format): uses snprintf instead of sprintf.
+
+ * numeric.c (flo_to_s, rb_num2long, rb_num2ll): ditto.
+
+Mon Dec 22 10:59:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): should return enumerator if called
+ without block. [ruby-dev:37526]
+
+Mon Dec 22 09:54:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (gettable_gen): the encoding of __FILE__ should be
+ rb_filesystem_encoding(). [ruby-list:45733]
+
+ * parse.y (gettable_gen): __FILE__ should be ASCII-8BIT when
+ filesystem encoding is US-ASCII and __FILE__ contains non 7bit
+ characters.
+
+Mon Dec 22 02:54:56 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: temporary patch for trouble on TkAqua (> Tk8.4.9).
+
+ * ext/tk/sample/demos-jp/widget: set encoding to a demo-code string to
+ avoid garbled text on the Code Window.
+
+Sun Dec 21 14:55:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (SPLAT_PROC): splat values by hand.
+
+Sun Dec 21 13:50:37 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline.rb
+ (TestReadline#test_some_characters_methods): checked encoding.
+
+Sun Dec 21 12:23:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (SPLAT_PROC): fix for regexp. [ruby-dev:37514]
+
+Sun Dec 21 10:43:10 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * sample/test.rb: rescue exception.
+
+Sat Dec 20 18:28:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_1): supplements an extension for executable
+ files on DOSish platforms.
+
+ * io.c (pipe_open): use rb_w32_aspawn() for array form.
+
+ * win32/win32.c (rb_w32_pipe_exec): no longer used.
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): deals with batch
+ files and commands with extensions. [ruby-core:20695]
+
+ * win32/win32.c (has_redirection): supports environment variables
+ references.
+
+Sat Dec 20 15:34:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rake.rb (Rake::FileList#egrep): change open mode to "rb",
+ i.e. default to binary. [ruby-dev:37385]
+
+ * lib/rake.rb (Rake::FileList#egrep): allow specifying reading
+ encoding, e.g. FileList['*.rb'].egrep(/require/, encoding:
+ "ascii-8bit")
+
+ * lib/rake.rb (Rake::MultiTask): invoke_prerequisites should be
+ private. a patch from okkez in [ruby-dev:37399]
+
+Sat Dec 20 10:59:16 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/locale.rb (IRB::Locale#initialize)
+ initializes instance variables to suppress warnings.
+ typo fix to ignore LoadError: [ruby-dev:37508]
+
+Fri Dec 19 17:01:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_extract_encoding_option): "internal_encoding: nil"
+ to specify no-transcoding. and other corner case fixed.
+ [ruby-dev:37496]
+
+ * hash.c (rb_hash_lookup2): new function to look-up hash with
+ default value.
+
+Fri Dec 19 15:51:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): get rid of warning on DOSISH.
+
+Fri Dec 19 07:45:37 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_equal): duck typing equal to make it transitive.
+ [ruby-dev:34808]
+
+Thu Dec 18 19:31:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/irb/init.rb (IRB.opt_parse): (M17N) adds -U and -E as command
+ line options. [ruby-dev:37161]. Fixes #711.
+ improved long options.
+
+ * lib/irb/init.rb (IRB.set_encoding): new subroutine for IRB.opt_parse
+
+ * lib/irb/input-method.rb (IRB::StdioInputMethod): (M17N) regards
+ scripts that user types as encoded in the external_encoding.
+
+ * lib/irb/input-method.rb (IRB::ReadlineInputMethod): ditto.
+
+ * lib/irb/input-method.rb (IRB::FileInputMethod): (M17N) respects
+ magic comment.
+
+ * lib/irb/help.rb (IRB.print_usage): (M17N) respects magic comment
+ in the resource file.
+
+ * lib/irb/lc/help-message: adds -U and -E.
+
+ * lib/irb/lc/ja/help-message: ditto. re-encoded from ISO-2022-JP into UTF-8.
+
+ * lib/irb/lc/ja/encoding_aliases.rb: new file. provides Japanese specific
+ character encoding name table for backward compatibility.
+
+ * lib/irb/lc/ja/error.rb: re-encoded from ISO-2022-JP into UTF-8.
+ magic comment.
+
+ * lib/irb/locale.rb: integrated with Ruby 1.9's M17N support.
+
+ * lib/irb/magic-file.rb: new file. utility to handle files with magic
+ comment and opens in the correct encoding.
+
+ * lib/irb/ruby-lex.rb (RubyLex#each_top_level_statement): recovers
+ character encoding for a statement after it lexed so that irb can
+ eval the statement in correct encoding.
+
+ * lib/irb/src_encoding.rb: new file. utility.
+
+Thu Dec 18 21:12:28 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/session.rb: fix bug for ignore session_id option.
+ report from [ruby-core:18635], [Bug #572]
+
+ * lib/cgi/core.rb: use Encoding#find when encoding set.
+
+ * test/cgi/test_cgi_session.rb: test for session_id specified.
+
+Thu Dec 18 17:00:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_aset): string key copying only happen if key is
+ an exact instance of String, not a subclass. based on a patch
+ from Mike Gold <mike.gold.4433 at gmail.com> in [ruby-talk:322667].
+ [incompatible] [ruby-talk:322417]
+
+Thu Dec 18 16:48:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/optparse/version.rb: remove variable shadowing to stop
+ warning. [ruby-core:20612]
+
+ * lib/irb/completion.rb, lib/net/imap.rb, lib/prime.rb,
+ lib/rinda/ring.rb, lib/racc/parser.rb,
+ lib/shell/command-processor.rb, lib/yaml/yamlnode.rb: ditto.
+
+ * lib/racc/parser.rb: remove space before parentheses.
+
+ * lib/shell/command-processor.rb, lib/shell/process-controller.rb:
+ use parentheses around arguments.
+
+ * lib/irb/ext/change-ws.rb, lib/rexml/validation/relaxng.rb,
+ lib/yaml/baseemitter.rb: indentation fix.
+
+ * lib/matrix.rb: small cosmetic change.
+
+Thu Dec 18 08:15:04 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb: Restricting method inspection to show only
+ non-inherited public methods. [ruby-core:20603]
+
+ * lib/xmlrpc/server.rb: Fixing method inspection so it doesn't
+ trigger XMLRPC::FaultException when used. [ruby-core:20604]
+
+Wed Dec 17 19:39:44 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (unix_recv_io): relax msg_controllen error
+ check for x86_64-openbsd4.4.
+
+Wed Dec 17 19:37:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/extconf.rb: check util.h for OpenBSD.
+
+ * ext/pty/pty.c: include util.h if available. fix variable name.
+
+Wed Dec 17 19:23:28 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/matrix.rb: shut up warning. [ruby-dev:37481] [Bug #899]
+
+Wed Dec 17 15:44:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_pop_m): use enum ary_take_pos_flags.
+
+ * array.c (rb_ary_push_m): add modification check before actual
+ operation. [ruby-dev:37440]
+
+Wed Dec 17 15:35:39 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in (OBJDUMP, OBJCOPY):
+ *BSD's ports and MacPorts prefix GNU binutils with 'g'.
+
+Wed Dec 17 11:39:39 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/bigdecimal/test_bigdecimal.rb (TestBigDecimal#test_hash):
+ shut up warning. see [ruby-dev:37437]
+
+Wed Dec 17 11:01:35 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_hash): gets rid of collisions between different
+ encoding strings. [ruby-core:20526]
+
+Wed Dec 17 09:50:19 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_metaclass.rb: removed codes for my debugging.
+ sorry. [ruby-dev:37470]
+
+Tue Dec 16 22:55:11 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bin/testrb: set $0.
+
+Tue Dec 16 22:42:16 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): sorry, fixed wrong commit.
+
+Tue Dec 16 22:15:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/minitest/unit.rb (MiniTest::Assertions#assert_instance_of):
+ should assert by instance_of?, not ===. [ruby-dev:37458]
+
+ * lib/minitest/unit.rb (MiniTest::Assertions#assert_instance_of):
+ typo fixed.
+
+Tue Dec 16 21:59:29 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): ALT_SEPARATOR support.
+
+Tue Dec 16 21:59:02 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpToString): reverted modification
+ (that caused a bug) in r20359. [ruby-dev:37370]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_limit): comment update.
+ [ruby-dev:37465]
+
+Tue Dec 16 20:34:44 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (getDevice): add nomesg argument.
+ (get_device_once): add nomesg argument. chmod slave tty to 0600
+ if nomesg. more error tests.
+ (no_mesg): new function.
+ (pty_open): make slave tty's mode 0600.
+
+Tue Dec 16 20:24:20 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (_parse): m17n compliant.
+
+Tue Dec 16 19:48:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/extconf.rb: check posix_openpt.
+
+ * ext/pty/pty.c (get_device_once): use posix_openpt if available.
+
+Tue Dec 16 19:43:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c: use strlcpy for error messages.
+
+Tue Dec 16 16:41:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): returns dispatched result.
+
+ * parse.y (primary): also in ripper, saves in_def before restoring.
+
+Tue Dec 16 12:30:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_cv_header_ucontext_h): do not use ucontext.h on Mac
+ OS X 10.5 or later. merged from MacPorts.
+
+ * configure.in (ac_cv_func_daemon): daemon(3) is deprecated on Mac OS
+ X 10.5 or later.
+
+Tue Dec 16 11:37:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (set_arg0): use strlcpy() instead of strncpy().
+
+ * load.c (rb_feature_p): ditto.
+
+ * dln.c (dln_load): ditto.
+
+Tue Dec 16 09:14:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (block_call): block should not be given to yield.
+ [ruby-core:20583]
+
+Mon Dec 15 23:48:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (sleep_timeval): cast tv_usec to long to shut up
+ warnings on OSX. [ruby-dev:37449]
+
+Mon Dec 15 23:34:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (pty_open): set FMODE_SYNC and FMODE_DUPLEX.
+
+Mon Dec 15 23:29:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (process_options): revive global sub, gsub, chop, chomp
+ only when auto looping options (-p/-n) is specified.
+ [ruby-core:20570]
+
+Mon Dec 15 22:48:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (pty_open): new method PTY.open.
+
+Mon Dec 15 21:24:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (get_device_once): use DEVICELEN instead of
+ sizeof SlaveName.
+
+Mon Dec 15 21:01:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (chfunc): make it static.
+
+Mon Dec 15 20:59:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (child_info): add slavename.
+ (chfunc): use slavename.
+ (establishShell): set slavename.
+
+Mon Dec 15 20:16:46 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (EXTMK_ARGS): shouldn't use ``\"'' because cmd.exe eat
+ ''\'' in such quotes.
+
+Mon Dec 15 19:07:31 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): define CANONICALIZATION_FOR_MATHN
+ to follow r20683.
+
+Mon Dec 15 18:12:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rake/packagetask.rb (Rake::PackageTask): small document
+ update from okkez in [ruby-dev:37443]
+
+Mon Dec 15 16:28:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_callee_setup_arg_complex): uses cfp from
+ blockptr instead of the current cfp. [ruby-core:20544]
+
+Mon Dec 15 14:56:59 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_metaclass.rb: new test case for metaclass hierarchy.
+
+ * class.c (make_metametaclass): new function. extracted from
+ rb_make_metaclass.
+
+ * class.c (rb_make_metaclass): uses make_metametaclass when called for a
+ metaclass.
+
+ * class.c (rb_singleton_class): creates a meta^(n+2)-class in
+ addition to a meta^(n+1)-class when called for a meta^(n)-class.
+ This is because the returned meta^(n+1) class must acts as an instance of
+ Class, metaclass of Class, ..., meta^(n+1)-class of Class,
+ Module, metaclass of Module, ..., meta^(n+1)-class of Module,
+ Object, metaclass of Object, ..., meta^(n+2)-class of Object,
+ BasicObject, metaclass of BasicObject, ..., meta^(n+2)-class of
+ and BasicObject even when Class, Module, Object or BasicObject has
+ not have its meta^(i)-class yet.
+
+Mon Dec 15 15:13:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * id.h, template/id.h.tmpl (ruby_method_ids): sees YYTOKENTYPE too.
+ [ruby-dev:37436]
+
+Mon Dec 15 15:02:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (EXTMK_ARGS): needs MINIRUBY for cross-compile.
+ [ruby-core:20131]
+
+Mon Dec 15 14:39:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (vm_call0): NODE_ZSUPER supported. [ruby-core:20480]
+
+ * vm_eval.c (vm_call_super): uses method_missing().
+
+ * vm_eval.c (method_missing): get rid of too large alloca.
+
+ * vm_eval.c (rb_call0, method_missing): uses idMethodMissing.
+
+ * vm_method.c (rb_add_method, remove_method, rb_undef): uses
+ id__send__.
+
+ * vm_method.c (Init_eval_method): removed IDs which are defined as
+ immediate values.
+
+Mon Dec 15 11:35:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_backtrace): defaults to script name for C functions.
+
+Mon Dec 15 11:32:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (rubylib_mangled_path, rubylib_mangled_path2): cannot use
+ locale encoding before load path is initialized
+
+ * ruby.c (ruby_init_loadpath_safe): ditto.
+
+ * ruby.c (process_options): loads encdb so that encodings can be
+ loaded, then associates script name and load paths with the
+ locale encoding.
+
+Mon Dec 15 10:00:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (btest-ruby): use RUNRUBY instead of MINIRUBY to load the
+ shared library. [Bug #849]
+
+Sun Dec 14 22:31:19 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (bigmul1_karatsuba): remove temporal bignum.
+
+ * bignum.c (bigsqr): call bigmul0(x, x) because it is faster than the
+ original bigsqr at this point.
+
+ * bignum.c (rb_big_pow): a value returned from bigsqr is already
+ truncated.
+
+Sun Dec 14 21:13:02 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (bigmul1_karatsuba): fix comment and refactoring.
+
+Sun Dec 14 14:53:41 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (bigmul1_balance, bigmul1_karatsuba): remove all
+ rb_gc_force_recycle which causes memory leak.
+
+Sun Dec 14 14:26:11 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/README: directory structure changed
+
+Sun Dec 14 09:14:37 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * reverts r20713.
+
+Sun Dec 14 12:51:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (rb_big_mul): faster multiplication by Karatsuba method and
+ twice faster square than normal multiplication. [ruby-dev:37392]
+
+ * random.c (rb_rand_internal): used by Bignum#*.
+
+ * test/ruby/test_bignum.rb: add some tests for above.
+
+Sun Dec 14 01:35:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (forked_child): new variable.
+ (before_exec): don't call rb_thread_stop_timer_thread if
+ forked_child.
+ (after_exec): reset forked_child after rb_thread_start_timer_thread.
+ (rb_fork): set forked_child just after fork in child.
+
+ * ext/pty/pty.c (chfunc): extracted from establishShell.
+ (establishShell): use rb_fork.
+
+ [ruby-dev:37418]
+
+Sat Dec 13 22:17:30 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (help): describes more targets.
+ based on a patch by Michael Klishin. [ruby-core:20523].
+
+Sat Dec 13 18:34:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_printable): wrong condition for string iteration.
+
+Sat Dec 13 16:04:48 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * encoding.c (default_external): endless recursion during
+ loading a locale encoding on some locale.
+ fixed by Nobuyoshi Nakada.
+
+Sat Dec 13 15:55:37 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ruby.c (process_options): fixed default_internal is nil.
+ (closes #862)
+
+Sat Dec 13 15:52:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_equal): remove documentation error "Otherwise,
+ compares them as strings". [ruby-dev:37398]
+
+ * string.c (sym_inspect): quote if symbol contains non-printable
+ characters. [ruby-dev:37398]
+
+Sat Dec 13 14:24:38 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/enc/test_utf16.rb: feature changed in r20626.
+ follows it.
+
+Sat Dec 13 13:41:44 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_m17n_comb.rb: feature changed in r20626.
+ follows it.
+
+Sat Dec 13 13:03:20 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: use rb_usascii_str_new2 instead of rb_str_new2.
+
+ * rational.c: ditto.
+
+Sat Dec 13 12:48:57 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_m17n.rb: feature changed in r20626.
+ follows it.
+
+Sat Dec 13 12:38:16 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/minitest/test.rb (MinTest::Unit#location):
+ skips user-defined assertions as MiniTest's.
+ e.g. for test/ruby/test_m17n.rb.
+
+Sat Dec 13 09:17:33 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*.rb: Imported minitest 1.3.1 r4503.
+ * test/minitest/test_mini_test.rb: ditto.
+ * lib/miniunit/autorun.rb: added (as part of r4503).
+
+Sat Dec 13 08:35:14 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_canonicalization): renamed.
+
+ * ext/math/complex.c: followed the above change.
+
+ * rational.c (nurat_canonicalization): renamed.
+
+ * ext/math/rational.c: followed the above change.
+
+ * configure.in: defines a new macro.
+
+Sat Dec 13 01:10:03 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c
+ (readline_s_get_completion_append_character): uses locale
+ encoding but not ASCII-8BIT.
+
+Fri Dec 12 22:12:46 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c, rational.c: do not use RUBY_VERSION_CODE.
+
+Fri Dec 12 21:41:36 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c: r20662 reverted.
+
+Fri Dec 12 19:29:07 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * encoding.c (rb_enc_set_default_external): default_internal can be
+ nil, but default_external cannot.
+
+ * encoding.c (rb_set_default_internal): adds rdoc.
+
+ * encoding.c (enc_find): ditto.
+
+Fri Dec 12 19:24:47 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (run, runruby, parse, gdb, gdb-ruby): you can also run
+ other scripts than $(srcdir)/test.rb.
+
+Fri Dec 12 19:13:43 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (readline_readline): changed the message
+ of IOError to 'closed stdin' from 'stdin closed' if stdin was
+ closed.
+
+Fri Dec 12 19:00:49 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c: used the ExportStringValue macro
+ instead of the OutputStringValue macro. removed the
+ OutputStringValue macro.
+
+Fri Dec 12 16:23:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yycompile0): ruby_eval_tree_begin is always 0 when
+ ruby_eval_tree is 0.
+
+Fri Dec 12 14:09:55 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * encoding.c (enc_get_default_encoding): removed.
+ Generalizing rb_default_{external,internal}_encoding seems to be
+ difficult.
+ default_external cannot be NULL even before detected. [ruby-dev:37390]
+
+ * encoding.c (rb_default_external_encoding): has its own
+ implementation again.
+
+ * encoding.c (rb_default_internal_encoding): ditto.
+
+ * gem_prelude.rb: added notice.
+
+ * ruby.c (rubylib_mangled_path, rubylib_mangled_path2): uses locale
+ encoding but not ASCII-8BIT.
+
+ * ruby.c (process_options): refers less to default_external.
+
+Fri Dec 12 11:00:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_feature_p): load path must be expanded.
+ [ruby-dev:37388]
+
+Fri Dec 12 10:28:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_version): greps only the line that defines version.
+
+ * version.h (RUBY_VERSION_CODE, RUBY_RELEASE_CODE): removed.
+
+Fri Dec 12 10:20:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c, rational.c: do not use RUBY_VERSION_CODE.
+
+Fri Dec 12 10:19:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_string_value_ptr, rb_to_id): do not use a side
+ effect expression in RSTRING_PTR.
+
+ * string.c (rb_str_split_m): simplified the argument of
+ RSTRING_LEN.
+
+Thu Dec 11 23:48:00 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (sqrt): should pass nan to the original method.
+
+Thu Dec 11 21:04:04 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker.rb, lib/rss/maker/0.9.rb, lib/rss/maker/base.rb:
+ RSS::Maker.[] returns a maker class corresponds to passed version.
+
+ * test/rss/test_maker_*.rb: add tests for RSS::Maker.[].
+
+Thu Dec 11 20:05:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_aliases_enc_i): skips default internal.
+
+Thu Dec 11 19:31:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/assertions.rb: extracted from lib/test/unit.rb.
+ lib/test/unit/testcase.rb: ditto.
+ at asakusa.rb. [ruby-core:20014]
+
+Thu Dec 11 19:23:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb (test_dup_many): extracted from test_dup.
+ test in ruby subprocess. at asakusa.rb. [ruby-dev:35648]
+
+Thu Dec 11 19:16:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#=~): undefed. at asakusa.rb.
+ [ruby-core:19690]
+
+Thu Dec 11 13:09:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (reg_enc_error): raise EncodingCompatibilityError for
+ encoding incompatibility. [ruby-core:18600]
+
+ * re.c (rb_reg_prepare_enc): more consistent error message.
+ [ruby-core:18611]
+
+Thu Dec 11 13:36:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_set_default_encoding): allowed to set default
+ encoding.
+
+ * encoding.c (rb_locale_encoding): removed Encoding::LOCALE.
+
+ * encoding.c (rb_enc_set_default_external): ditto.
+
+ * encoding.c (rb_enc_set_default_internal): ditto.
+
+ * encoding.c (rb_enc_set_default_internal): defines internal
+ encoding as nil.
+
+Thu Dec 11 11:11:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/st.h (size_t): needs stddef.h or stdlib.h.
+ [ruby-core:20339]
+
+Thu Dec 11 10:25:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_bignum.rb (TestBignum#test_convert): remove
+ platform dependent call of Process.wait. coverage should be
+ accomplished by other method. [ruby-dev:36062]
+
+Thu Dec 11 10:18:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): require
+ rexml/formatters/transitive if transitive flag is on. a patch
+ from akira yamada in [ruby-dev:36230]. fix #553
+
+ * lib/rexml/element.rb (REXML::Element#write): ditto.
+
+ * lib/rexml/formatters/transitive.rb (REXML::Formatters::Transitive#write_element):
+ add hack for IE. [ruby-dev:36230]
+
+Thu Dec 11 02:37:22 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (domain_check): should not raise EDOM exception for NaN
+ value if operand is also NaN. affects acos, asin, acosh, atanh,
+ log, log2, log10, sqrt, gamma, lgamma. [ruby-dev:37357]
+
+Thu Dec 11 02:23:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.pipeline_start): return an array of threads if a
+ block is not given.
+
+Thu Dec 11 01:48:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_round): should be round
+ to integer. [ruby-dev:37355]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divmod): division should
+ be integer. [incompatible] [ruby-dev:37355]
+
+Thu Dec 11 01:21:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_mutex_unlock): shut up warning. a patch from
+ Kazuhiro NISHIYAMA in [ruby-dev:37345]. fix #846
+
+Wed Dec 10 23:58:56 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: avoided warnings on cpp. [ruby-dev:37344]
+
+ * rational.c: ditto.
+
+Wed Dec 10 21:32:02 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker.rb (RSS::Maker.[]): add.
+ Suggested by Akinori MUSHA. Thanks!!! [ruby-dev:37210]
+
+Wed Dec 10 12:56:32 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_rewind): If the enclosed object
+ responds to a "rewind" method, call it; cf. [ruby-dev:37268]
+
+Wed Dec 10 12:46:52 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_next): Fix a typo: s/rewinded/rewound/.
+
+ * lib/prime.rb (Prime::OldCompatibility#each): Ditto.
+
+Wed Dec 10 11:25:53 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): raise RegexpError when encoding
+ is dummy encoding. [ruby-dev:37091]
+
+Wed Dec 10 01:28:16 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (win32.obj): depend on headers.
+
+Tue Dec 9 18:35:35 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans, cp850-tbl.rb, cp852-tbl.rb,
+ cp855-tbl.rb, koi8-r-tbl.rb, koi8-u-tbl.rb, tis-620-tbl.rb:
+ new single-byte transcodings (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi), small cosmetic fixes
+
+Tue Dec 9 13:33:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each), gc.c (assign_heap_slot),
+ (gc_mark_children), parse.y (vtable_alloc, vtable_free, vtable_add),
+ proc.c (proc_to_s), thread.c (terminate_i, rb_thread_terminate_all),
+ (thread_start_func_2, blocking_region_begin, blocking_region_end),
+ (rb_thread_kill), thread_pthread.c (native_thread_create),
+ (ubf_pthread_cond_signal), vm.c (check_env, thread_free), vm_dump.c
+ (vm_env_dump_raw, vm_stack_dump_each, vm_thread_dump_state),
+ (vm_call0): use void pointer for %p.
+
+ * cont.c (fiber_status), template/insns.inc.tmpl (ruby_vminsn_type),
+ vm_insnhelper.h (BOP): ISO C forbids comma at end of enumerator
+ list.
+
+ * vm_insnhelper.c (check_cfunc): use function pointer.
+
+Tue Dec 9 13:23:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (curses_use_default_colors): add new
+ method. a patch from Giancarlo F Bellido
+ <support at coaxialhost.com> in [ruby-core:20434].
+
+ * ext/curses/curses.c (curses_tabsize_set): ditto.
+
+ * ext/curses/curses.c (curses_tabsize_get): ditto.
+
+Tue Dec 9 12:08:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rp): fixed typo for T_STRUCT.
+
+Tue Dec 9 11:50:46 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * pack.c (pack_pack): fixed [ruby-dev:37295].
+ Array#pack always has returned an US-ASCII string when
+ the given format ended with 'u', 'M' or 'm'.
+
+Tue Dec 9 03:21:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: fix for continued lines. based on a patch from
+ Marcus Rueckert <darix AT opensu.se> at [ruby-core:20420].
+
+Tue Dec 9 00:54:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (package): enc.mk in snapshot is dummy and should
+ not deal with objects. [ruby-core:20422]
+
+Tue Dec 9 00:17:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (clean-srcs): split out from clean.
+
+Mon Dec 8 23:34:18 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * pack.c (pack_pack): fixed odd act of 'm*', 'M*', and 'P*'.
+ just ignores '*' in these cases.
+ [ruby-dev:37289]
+
+Mon Dec 8 18:31:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack): fixed length for odd length string.
+ [ruby-dev:37283]
+
+Mon Dec 8 11:28:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): added version, copyright, usage, yydebug,
+ syntax to --dump option.
+
+Mon Dec 8 11:15:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): source-encoding option.
+
+Mon Dec 8 10:32:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_option_encoding_once): dry.
+
+ * ruby.c (proc_options): checks extra argument for -E/--encoding.
+
+Sun Dec 7 23:47:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBPATHFLAG): use numbered specifier if RPATHFLAG
+ is set. [ruby-talk:322136]
+
+Sun Dec 7 23:17:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (LIBRUBY_SO): localizes non-public symbols.
+
+ * configure.in (OBJDUMP, OBJCOPY): for dealing with binary files.
+
+Sun Dec 7 17:44:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.capture3): renamed from Open3.poutput3.
+ (Open3.capture2): renamed from Open3.poutput2.
+ (Open3.capture2e): renamed from Open3.poutput2e.
+
+Sun Dec 7 11:48:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.poutput3): :binmode option implemented.
+ (Open3.poutput2): ditto.
+ (Open3.poutput2e): ditto.
+
+Sat Dec 6 18:33:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot (package): added RM and CP. [ruby-dev:37288]
+
+Sat Dec 6 17:51:35 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * pack.c (pack_pack): 'u0' is not special differently from 'm0'.
+
+Sat Dec 6 14:35:06 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_pack): set US-ASCII and CODERANGE_7BIT
+ when quoted-printable ('M') and base64 ('m').
+ [ruby-dev:37284]
+
+ * pack.c (pack_unpack): ditto.
+
+Fri Dec 5 22:56:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_make_exception): single argument to raise may be
+ string compatible object.
+
+Fri Dec 5 21:45:45 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_{to_s,inspect}): performance improvement.
+
+Fri Dec 5 21:42:44 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: inspect should not depend on to_s.
+
+Fri Dec 5 21:18:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_truncate): return
+ integer if no optional argument given. [incompatible]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_floor): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_ceil): ditto.
+
+Fri Dec 5 19:06:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.pipeline_start): new method.
+ (Open3.pipeline): ditto.
+
+Fri Dec 5 18:55:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (run_exec_dup2): !save is false if Qnil.
+
+Fri Dec 5 18:07:32 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read, rb_w32_write, rb_w32_isatty): check
+ whether fd is valid.
+
+Fri Dec 5 13:05:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_parameters): proc arguments are always optional.
+
+ * proc.c (get_proc_iseq, rb_proc_parameters): ditto.
+
+Fri Dec 5 12:38:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_sequence): uses rb_compile_warning() for
+ warning at compilation time.
+
+Fri Dec 5 12:35:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (ruby_iseq_compile, ruby_iseq_translate_threaded_code),
+ (ruby_insns_name_array, ruby_iseq_build_from_ary): prefixed with
+ ruby_.
+
+ * iseq.c (ruby_iseq_load, ruby_insn_make_insn_table): ditto.
+
+Fri Dec 5 10:01:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_cmp_m): fixed rdoc. pointed out by <Thomas
+ C. Mitchell AT gmail.com> at [ruby-talk:321967]
+
+Fri Dec 5 07:58:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_binwrite): arg.offset should be updated after retry.
+
+Fri Dec 5 03:29:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_get_load_path): returns the load path without
+ touching.
+
+ * load.c (rb_feature_provided): new function to return the loading
+ path in addition to rb_provided().
+
+ * load.c (search_required): sets path if loading.
+
+ * variable.c (autoload_provided): load paths are expanded to check
+ if loading.
+
+ * variable.c (autoload_node): keeps autoload mark while loading.
+ [ruby-core:20235]
+
+ * variable.c (rb_const_get_0): loops while autoload mark is set.
+
+Fri Dec 5 01:37:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): ERROR_BROKEN_PIPE is not a real error
+ at this point.
+
+ * io.c (pipe_open): use rb_w32_spawn() instead of rb_w32_pipe_exec()
+ to use our own redirection scheme.
+
+Fri Dec 5 01:35:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_to_proc): use hidden object.
+
+Fri Dec 5 01:19:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): propagate taint status from format string to
+ result string.
+
+Fri Dec 5 00:34:10 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (run_exec_dup2): need to sort by reverted order when
+ restoring fds.
+
+Fri Dec 5 00:17:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_to_proc): caches Symbol procs, based on a patch from
+ Shumpei Akai <admin AT flexfrank.net>. [ruby-dev:37265]
+
+Thu Dec 4 23:29:34 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (waitpid): fix bug of checking child slot.
+
+ * win32/win32.c (FindChildSlotByHandle): new.
+
+Thu Dec 4 23:24:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.poutput3): new method.
+ (Open3.poutput2): ditto.
+ (Open3.poutput2e): ditto.
+
+Thu Dec 4 23:02:13 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec: follows changes in rubyspec project.
+ inherits configurations from ruby.1.9.mspec.
+
+Thu Dec 4 22:13:55 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_complex.rb: added some tests.
+
+ * test/ruby/test_rational.rb: ditto.
+
+Thu Dec 4 19:56:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.popen3): simplified.
+ (Open3.popen_run): extracted from Open3.popen3.
+ (Open3.popen2): new method.
+ (Open3.popen2e): new method.
+ (Open3.pipeline_rw): new method.
+ (Open3.pipeline_r): new method.
+ (Open3.pipeline_w): new method.
+ (Open3.pipeline_run): new private method.
+
+Thu Dec 4 19:16:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (check_exec_fds): resolve cascaded child fd reference.
+
+Thu Dec 4 16:58:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rubygems/validator.rb (Gem#remove_leading_dot_dir): make
+ this method private. a patch from okkez in [ruby-dev:37245]
+
+Thu Dec 4 16:19:18 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read_nonblock):
+ OpenSSL::SSL::SSLSocket should implement read_nonblock. a patch
+ from Aaron Patterson in [ruby-core:20277]. fix: #814 [ruby-core:20241]
+
+Thu Dec 4 16:16:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/gserver.rb: fixed type in sample code. a report from Oleg
+ Puchinin.
+
+Thu Dec 4 14:54:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rubygems/local_remote_options.rb (Gem#add_update_sources_option):
+ little documentation fix. a patch from okkez. [ruby-dev:37271]
+
+Thu Dec 4 13:56:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (window_getch): avoid ISPRINT() macro which
+ has an issue with OpenSolaris. [ruby-core:20189]
+
+ * ext/curses/curses.c (curses_getch): no ISPRINT(). [ruby-core:20294]
+
+ * signal.c (ruby_signal): EINVAL from sigaction(2) is not a bug.
+
+Thu Dec 4 11:40:56 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (inspect_enumerator): Implement #inspect.
+ [ruby-dev:37248]-[ruby-dev:37263]
+
+Thu Dec 4 11:38:40 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * vm_method.c (rb_obj_respond_to): Remove a duplicated rdoc
+ comment and fix a markup error.
+
+Thu Dec 4 06:04:16 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/menu.rb: TkOptionMenubutton.new fails to treat
+ 'parent' and 'variable' options on a Hash argument.
+
+Thu Dec 4 05:06:47 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix. use ::RubyVM instead of ::VM
+ [ruby-list:45676]
+
+ * ext/tk/tcltklib.c: update RELEASE_DATE
+
+Thu Dec 4 01:37:47 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nurat_{to_s,inspect}): provides better representation
+ for in-finite imag part.
+
+Thu Dec 4 01:22:41 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (f_signbit): NaN may be signed value.
+
+Wed Dec 3 23:59:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (EXEC_OPTION_DUP2_CHILD): defined.
+ (check_exec_redirect_fd): check :in, :out and :err.
+ (check_exec_redirect): check [:child, fd].
+ (check_exec_fds): validate EXEC_OPTION_DUP2_CHILD array.
+ (run_exec_dup2_child): new function.
+ (rb_run_exec_options): call run_exec_dup2_child.
+
+Wed Dec 3 22:54:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (expr): keyword_not can continue across newline.
+ [ruby-core:20252]
+
+Wed Dec 3 22:40:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (simple_default_value): returns simplest assignment only.
+ [ruby-core:20237]
+
+Wed Dec 3 21:30:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (check_exec_redirect): accept :in, :out, :err as redirect
+ target.
+
+Wed Dec 3 21:18:27 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_rational.rb: revert.
+
+Wed Dec 3 14:48:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tcltklib.c (ip_ruby_cmd, ip_invoke_with_position): must
+ not access internal union directly. [ruby-list:45670]
+
+Wed Dec 3 12:24:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getc, rb_io_readchar): documentation correction from
+ Emiel van de Laar. [ruby-core:20212]
+
+ * ext/stringio/stringio.c (strio_readchar): ditto.
+
+Wed Dec 3 09:26:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/xpath.rb (REXML::XPath.first): apply documentation
+ patch from Ken Bloom in [ruby-core:20213].
+
+ * lib/rexml/xpath.rb (REXML::XPath.each): ditto.
+
+Wed Dec 3 02:56:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rational.rb: add a test.
+
+Wed Dec 3 02:53:24 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_range.rb: add a test.
+
+Wed Dec 3 02:26:07 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_string.rb: add some tests.
+
+Wed Dec 3 02:04:21 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/pty/pty.c (Init_pty): fix typo.
+
+Tue Dec 2 19:22:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.popen3): merge hash options if given.
+
+Tue Dec 2 15:31:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/protocol.rb (Net::BufferedIO#rbuf_fill): use
+ read_nonblock instead of sysread wrapped by timeout to boost
+ performance. a patch from Aaron Patterson in [ruby-core:20191].
+ fix #806
+
+Mon Dec 1 23:23:52 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * set 1.9.1-p5000 into version number. [ruby-dev:36998]
+
+Mon Dec 1 15:48:47 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * signal.c (register_sigaltstack): no need to define on non-sigaltstack
+ platform.
+
+Mon Dec 1 12:00:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (rb_fiber_start): calls with exact argument number.
+ [ruby-core:20088]
+
+Sun Nov 30 21:41:10 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/rake.1: new manual page
+
+Sun Nov 30 18:01:50 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_parse_curly_brace):
+ now accepts quantifier on anchors again by r20391.
+
+Sat Nov 29 23:56:44 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/irb.1 (EXAMPLES): new section
+
+Sat Nov 29 19:19:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regparse.c (is_invalid_quantifier_target): Perl and old Ruby
+ accepts quantifier on anchors. [ruby-core:20161]
+
+Sat Nov 29 18:28:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_getaddrinfo): should have updated for
+ Mac OS X. a patch from Shumpei Akai in [ruby-dev:37234]
+
+Sat Nov 29 00:18:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * cont.c (fiber_alloc): separate allocation and initialization.
+ allow subclass to override #initialize. [ruby-core:20086]
+
+Fri Nov 28 18:31:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getaddrinfo): refactored to remove
+ code duplication regarding getaddrinfo.
+
+Fri Nov 28 17:52:26 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/forwardable.rb: should be usable def_single_delegator for
+ Class and Module.
+
+Fri Nov 28 13:19:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (simple_default_value): extracts simplest default
+ argument value.
+
+ * iseq.c (rb_iseq_parameters): returns parameter list.
+
+ * proc.c (get_proc_iseq, get_method_iseq): handles ifunc and
+ bmethod.
+
+ * proc.c (rb_proc_parameters, rb_method_parameters): added
+ Proc#parameters and Method#parameters. [ruby-core:19759]
+
+Fri Nov 28 02:18:47 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): bigdecimal
+ division (including modulo) should raise ZeroDivisionError as
+ integer division. [incompatible]
+
+Fri Nov 28 00:12:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flodivmod): floating point division should raise
+ ZeroDivisionError as integer division. [incompatible]
+
+Thu Nov 27 23:54:37 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark): still needs to check stack depth during GC.
+
+ * gc.c (stack_check): ditto.
+
+Thu Nov 27 21:41:29 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * strftime.c (rb_strftime): should add padding for %%.
+
+Thu Nov 27 16:32:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (register_sigaltstack): stores alt stack for debug
+ purpose.
+
+Thu Nov 27 16:12:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (ruby_sigaction_t): added.
+
+Thu Nov 27 15:59:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (ruby_stack_check): no check if using sigaltstack.
+
+ * signal.c (ALT_STACK_SIZE): default minimum size is insufficient
+ for method calls.
+
+ * signal.c (sigsegv): handles stack overflow if possible.
+
+ * thread.c (ruby_thread_stack_overflow): helper function to raise
+ sysstack_error.
+
+ * thread_pthread.c (ruby_stack_overflowed_p): checks for stack
+ overflow.
+
+Thu Nov 27 10:40:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div2): should return
+ Integer for #div operation.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div2): should raise
+ ZeroDivisionError if divisor is zero. [ruby-dev:37207]
+
+Wed Nov 26 23:15:47 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * strftime.c (STRFTIME): use rb_strftime() recursively, instead of
+ platform's strftime().
+
+Wed Nov 26 22:46:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpException): bigdecimal zero
+ division should raise FloatDomainError if mode
+ VP_EXCEPTION_ZERODIVIDE is set. [ruby-dev:37204]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mode): should handle
+ VP_EXCEPTION_ZERODIVIDE.
+
+Wed Nov 26 15:16:07 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/gdbm/gdbm.c (rb_gdbm_nextkey): fix memory leak.
+
+Wed Nov 26 03:17:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_r): raise exception
+ for nan/inf conversion. [ruby-dev:37187] fix #793
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_i): ditto.
+
+Wed Nov 26 03:00:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpAlloc): avoid ALLOCA_N() to avoid
+ segmentation fault caused by (insanely) long decimal values.
+ [ruby-dev:37189] fix #794
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_dump, BigDecimal_to_i,
+ BigDecimal_to_f, BigDecimal_to_s, BigDecimal_split,
+ BigDecimal_inspect): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (VpToString): small performance
+ improvement.
+
+Wed Nov 26 00:26:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * strftime.c (STRFTIME): should add padding for %[xXrR] etc.
+ [ruby-dev:37185] fix: #792
+
+Tue Nov 25 16:26:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_times): taint (and untrust) status should be
+ inherited by "ary * 0". [ruby-dev:37024]
+
+Tue Nov 25 15:54:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * strftime.c (rb_strftime): should not swallow incomplete
+ formatter, e.g. "%E". [ruby-dev:37170] fix: #787
+
+ * strftime.c (rb_strftime): clear flags before processing unknown
+ formatter, e.g. "%i". [ruby-dev:37180]
+
+Tue Nov 25 10:35:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * strftime.c (rb_strftime): "%^P" should convert to upper case.
+ [ruby-dev:37180]
+
+Tue Nov 25 07:51:18 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * strftime.c (FMT): use "%0d" formatter for zero padding, not "%.d".
+ [ruby-dev:37168] fix: #768
+
+ * strftime.c (rb_strftime): %s to use zero padding by default.
+ [ruby-dev:37180]
+
+Tue Nov 25 03:37:42 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/blt/tabset.rb,
+ ext/tk/lib/tkextlib/blt/tabnotebook.rb:
+ fix many bugs. Now, those work properly.
+
+Tue Nov 25 03:26:04 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_step): treat infinite step specially.
+ [ruby-dev:37157] fix: #781.
+
+Tue Nov 25 01:23:25 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (strftime): ignores '_' flag for %[LN].
+
+Tue Nov 25 00:08:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork): stops the timer thread during fork.
+ [ruby-dev:37117]
+
+ * thread.c (rb_thread_start_timer_thread): timer thread needs
+ system_working to be set.
+
+Mon Nov 24 23:27:28 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): The # flag should work with %a, %A, %b,
+ %B, and %h. [ruby-dev:37162]
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Mon Nov 24 23:16:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (register_sigaltstack): should not add external
+ variable (with some cosmetic changes). [ruby-dev:37158]
+
+Mon Nov 24 22:57:25 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): A width specifier for %t and %n should
+ work. [ruby-dev:37160]
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Mon Nov 24 22:07:07 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): The precision of %0N should be 9.
+ [ruby-dev:37156]
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Mon Nov 24 21:38:23 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): The default precision should be 1, not
+ 0. [ruby-dev:37155]
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Mon Nov 24 19:53:47 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (inspect): changed again.
+
+Mon Nov 24 18:35:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/time.rb: r20251 reverted. The patched behavior do not round
+ trip. [ruby-core:19988]
+
+Sun Nov 23 16:04:05 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * signal.c (default_handler, Init_signal): compile error if
+ USE_SIGALTSTACK is not defined.
+
+Sun Nov 23 00:04:14 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * signal.c (ALT_STACK_SIZE): 4KB is not enough on Mac OS X.
+ Uses SIGSTKSZ.
+
+Sat Nov 22 21:29:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_method.rb (test_default_accessibility): test case for
+ [ruby-dev:37124].
+
+Sat Nov 22 18:24:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_world_writable_p): should return nil for non
+ world-writable files.
+
+Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/blt.rb, ext/tk/lib/tkextlib/blt/vector.rb:
+ fix NameError bug.
+
+Sat Nov 22 03:41:22 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/pty/pty.c (get_device_once): abandon asynchronous exception
+ that might cause serious problem if a program terminated early.
+ asynchronous exception is a very bad thing anyway. use
+ Process.waitpid(pid) or PTY.check(pid) to poll program
+ termination. if PTY.check is called with optional second
+ argument being true, it raises an exception same as one from
+ previous behavior. [incompatible] fix: [ruby-core:19583]
+
+Fri Nov 21 22:24:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (curses_escdelay_set): support ESCDELAY. a
+ patch from Giancarlo F Bellido <support at coaxialhost.com> in
+ [ruby-core:19961].
+
+Fri Nov 21 22:17:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (usage): -W description updated. [ruby-core:19858]
+
+Fri Nov 21 21:50:54 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (register_sigaltstack): use alternative stack for
+ SIGSEGV to avoid uncaught stack overflow. based on a patch from
+ Hiro Yoshioka <hyoshiok at miraclelinux.com> in [ruby-dev:37134].
+ [ruby-dev:36993]
+
+Fri Nov 21 16:06:54 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm.c (thread_free): th->vm may be NULL when pthread_create
+ failed for ENOMEM. [ruby-dev:37095]
+
+Thu Nov 20 07:33:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/logger.rb (Logger): should handle the case that cvs/svn do
+ not expand $Id keyword. [ruby-core:19991]
+
+Thu Nov 20 07:27:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/minitest/unit.rb (MiniTest::Assertions#capture_io): adjust
+ indentation to shut up warning. [ruby-core:19993]
+
+Wed Nov 19 17:48:05 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (rb_syck_mktime): return DateTime for a value
+ out of range of Time. [ruby-core:19919]
+
+Wed Nov 19 14:14:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * node.h (NOEX_MODFUNC): should be include NOEX_PRIVATE.
+ [ruby-dev:37124]
+
+Wed Nov 19 03:01:04 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: fixed fails occasionally [ruby-dev:37119].
+ thanks, shinichiro.h.
+
+Wed Nov 19 02:39:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (Init_syserr): moved function definition itself from
+ template/known_errors.inc.tmpl.
+
+Wed Nov 19 01:10:52 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRbConn::alive?): fixed NoMethodError problem
+ from NaHi [ruby-dev:37110].
+
+Wed Nov 19 01:05:26 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * cont.c (cont_mark, cont_capture, cont_restore_1): speed up
+ continuation by copying only valid YARV stack. [ruby-dev:37106]
+
+Wed Nov 19 00:03:13 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/time.rb: according to RFC2822, -0000 means local time, +0000
+ means UTC. a patch from Chun Wang. [ruby-core:19578]
+
+Tue Nov 18 23:02:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (proc_eq): equivalence check should not done by pointer
+ comparison, but should be based on iseq contents. [ruby-dev:37101]
+
+Tue Nov 18 20:30:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#open_socket): SOCKSsocket is obsolete.
+ a patch from Alan Johnson <alan.wayne.johnson at gmail.com> in
+ [ruby-core:19982].
+
+Tue Nov 18 16:18:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/logger.rb (ProgName): fixed for svn, based on a patch from
+ Nobuhiro IMAI at [ruby-dev:37108].
+
+Tue Nov 18 15:56:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#read_request_line):
+ use possessive match for path retrieval to avoid huge recursion
+ for insanely long path.
+
+Tue Nov 18 15:50:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_desc): re might be NULL.
+
+ * regerror.c (onig_error_code_to_format): message updated.
+
+Tue Nov 18 09:42:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::make_switch): makes default
+ conversion to splat. [ruby-list:45645]
+
+Mon Nov 17 18:05:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (LIBS): fixed for disable-shared. [ruby-dev:37103]
+
+Mon Nov 17 11:12:24 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * bin/erb: remove -K option.
+
+Mon Nov 17 02:19:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBRUBYARG_STATIC): fixed for --enable-rpath.
+
+Sat Nov 15 22:46:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_regsub): returns -1 unless ascii as well as
+ rb_enc_ascget(). [ruby-dev:37097]
+
+Sat Nov 15 22:23:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LDSHARED): do not suppress debug info if higher debug
+ level is given, on cygwin and mingw.
+
+Fri Nov 14 20:27:46 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * README.EXT, README.EXT.ja, vm_exec.c, vm_insnhelper.c: update
+ filenames.
+
+Thu Nov 13 11:31:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_barrier_wait): gets rid of recursive deadlock.
+
+Thu Nov 13 06:08:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_barrier_{new,wait,release,destroy}): use Mutex so that
+ circular requires fail with deadlock. [ruby-core:19821]
+
+Wed Nov 12 07:16:01 2008 David Flanagan <david@think32>
+
+ * ruby.c (set_internal_encoding_once): fix typo in error string
+
+Wed Nov 12 03:30:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_{external,locale}_str_new_cstr): optimized
+ versions for literal strings.
+
+Wed Nov 12 03:28:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_require_safe): destroys barrier after successfully
+ loaded, to get rid of loading same library again. [ruby-core:19798]
+
+ * thread.c (rb_barrier_wait): can not wait destroyed barrier.
+
+ * thread.c (rb_barrier_destroy): destroys barrier so that no longer
+ waited.
+
+Tue Nov 11 23:02:27 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/ruby.1 (RUBYOPT): wrote which option can appear.
+ (--yydebug): wrote "do not use".
+ (--dump): wrote "do not use".
+
+Tue Nov 11 21:22:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic#check_path): REL_PATH should a
+ symbol. [ruby-core:19805]
+
+Tue Nov 11 20:49:29 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * configure.in: fix SEGV on Mac OS X 10.5.3 with pthread.
+ a patch from Wataru Kimura in Bug #193 [ruby-core:17333].
+
+Tue Nov 11 20:39:27 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (inspect): reverted the previous change.
+
+Tue Nov 11 17:35:25 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_accept): secure fd before accept because if
+ error causes in securing, cannot restore the state of accepted
+ socket.
+ fixed [ruby-core:19728]
+
+Tue Nov 11 14:40:40 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: unnecessary setup method
+ (setup_really_needed?) removed
+
+Tue Nov 11 14:25:25 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans, macgreek-tbl.rb, macroman-tbl.rb,
+ macromania-tbl.rb, macturkish-tbl.rb, macukraine-tbl.rb,
+ ibm437-tbl.rb, ibm852-tbl.rb, ibm855-tbl.rb, ibm857-tbl.rb,
+ ibm860-tbl.rb, ibm861-tbl.rb, ibm862-tbl.rb, ibm863-tbl.rb,
+ ibm865-tbl.rb, ibm866-tbl.rb, ibm869-tbl.rb, ibm775-tbl.rb:
+ new single-byte transcodings (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
+Tue Nov 11 13:20:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_r): moved from
+ bigdecimal/util, converted into C. [ruby-dev:36805]
+
+Tue Nov 11 07:55:57 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (inspect): changed the format.
+
+Mon Nov 10 17:34:50 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/sdbm/test_sdbm.rb (TestSDBM#test_index): Reflect the method
+ name change from #index to #key and remove a duplicated test
+ method.
+
+Mon Nov 10 10:50:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator.delegating_block): should not refer
+ DelegateClass specific @delegate_dc_obj. a patch from Erik
+ Hollensbe in [ruby-core:19671].
+
+Mon Nov 10 09:54:21 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (ifs_open_socket): should retry without proto_buffer
+ if cannot find the suitable protocol. a patch from Heesob Park.
+ fixed [ruby-core:19713]
+
+Sun Nov 9 13:04:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_initialize_m): avoid unnecessary array
+ allocation.
+
+Sun Nov 9 04:10:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (control_frame_dump): suppresses finished method name.
+
+Sun Nov 9 00:30:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (thread_timer): checks working flags again.
+
+Sun Nov 9 00:02:01 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/session/pstore.rb: fix indentation.
+
+Sat Nov 8 23:47:45 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/session.rb (FileStore): use marshalized data.
+
+ * test/cgi/session_dir: add a session directory in test.
+
+ * test/cgi/test_cgi_session.rb: add a test.
+
+Sat Nov 8 21:57:03 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/session.rb: remove debug code.
+
+Sat Nov 8 21:33:53 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/session.rb: fix indentation.
+
+Sat Nov 8 18:11:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#do_CONNECT):
+ use #bytesize instead of #size. a patch submitted from
+ raspberry lemon in [ruby-core:18571].
+
+ * lib/webrick/httpauth/digestauth.rb, lib/webrick/httpproxy.rb,
+ lib/webrick/httprequest.rb, lib/webrick/httpservlet/cgi_runner.rb,
+ lib/webrick/httpservlet/abstract.rb, lib/webrick/httpresponse.rb,
+ lib/webrick/httpservlet/cgihandler.rb, lib/webrick/utils.rb: ditto.
+
+Sat Nov 8 17:31:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_ungetc): ungetc position should
+ not be changed from 1.8. [ruby-core:19632]
+
+Sat Nov 8 17:15:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#make_switch): 1.9 Symbols respond
+ to :match. a patch from keith cascio, <keith at ucla.edu>.
+ [ruby-core:19730]
+
+Sat Nov 8 12:10:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_index): make #index warn like Hash.
+ [ruby-dev:37039]
+
+ * ext/sdbm/init.c (Init_sdbm): typo fixed. [ruby-dev:37039]
+
+Sat Nov 8 07:07:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: detect stdio buffer pointers for uClibc. a patch
+ from Brian Candler <B.Candler at pobox.com> in [ruby-core:12020].
+ [ruby-core:19713]
+
+Sat Nov 8 06:51:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_index): make #index warn like Hash.
+
+ * ext/dbm/dbm.c (fdbm_key): new method.
+
+ * ext/sdbm/init.c: ditto.
+
+Sat Nov 8 06:20:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c: curses encoding should obey locale.
+
+ * ext/curses/curses.c (curses_getch): 1.9 getch should return one
+ character string for single byte string. wchar_t support may
+ follow in the future.
+
+Sat Nov 8 05:46:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/io.h (rb_io_t): added write_lock to serialize.
+ [ruby-core:19668]
+
+ * gc.c (gc_mark_children): mark write_lock.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): Mutex also needs to be
+ deferred.
+
+ * io.c (io_fflush, io_binwrite, fptr_finalize): serializes writing.
+
+Sat Nov 8 05:31:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * safe.c (safe_setter): add warning for $SAFE=3.
+
+Sat Nov 8 01:48:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): do not wait never
+ coming signal if failed to create timer thread.
+
+ * thread_pthread.c (native_cond_timedwait): returns error code.
+
+ * thread_pthread.c (thread_timer): typo fixed.
+
+Sat Nov 8 01:14:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (thread_timer, rb_thread_create_timer_thread):
+ handshakes properly.
+
+Fri Nov 7 22:51:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * inits.c (rb_call_inits): do not repeat.
+
+Fri Nov 7 22:46:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (thread_timer): initializes mutex each time.
+
+Fri Nov 7 21:23:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_win32.c (thread_start_func_1): use already gotten stack info.
+
+Fri Nov 7 12:26:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb.rb (IRB::Irb#eval_input): remove extra @context.prompt_i.
+ [ruby-core:19718]
+
+Fri Nov 7 11:55:30 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * nkf.c: update to r1.188. fixes for 16bit environment.
+
+Fri Nov 7 07:43:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_timer): pthread_cond_timedwait returns ETIMEDOUT
+ when timed out.
+
+Fri Nov 7 07:32:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: support Rational and Complex as 1.8
+ does. a patch from Hiroshi Moriyama in [ruby-dev:36899].
+
+Fri Nov 7 07:12:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (thread_timer): uses pthread_cond_timedwait always
+ instead of pthread_kill.
+
+Fri Nov 7 06:58:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (Init_String): remove Symbol#===. [ruby-dev:37026]
+
+Fri Nov 7 04:02:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_timer): uses timedwait on cygwin.
+
+Fri Nov 7 02:00:12 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/rexml/entity.rb (unnormalized): do not call
+ document.record_entity_expansion if document is nil.
+ see <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502535>.
+ Thanks, Naohisa Goto.
+
+ * test/rexml/test_document.rb: ditto.
+
+Fri Nov 7 01:24:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: binary encoding spec is no longer needed in 1.9.
+
+Thu Nov 6 22:21:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_stop_timer_thread): terminates timer thread
+ immediately.
+
+Thu Nov 6 21:21:46 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fole_s_connect, fole_initialize,
+ folevariant_initialize): check argument type of WIN32OLE.connect,
+ WIN32OLE.new, WIN32OLE_VARIANT.new.
+
+ * test/win32ole/test_win32ole.rb (test_s_new_exc, test_s_connect_exc):
+ ditto.
+
+ * test/win32ole/test_win32ole_variant.rb (test_s_new_exc): ditto.
+
+ * test/win32ole/test_win32ole_method.rb: add assertion of
+ WIN32OLE_METHOD.new.
+
+Tue Nov 4 13:08:01 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): now can specify ``-xname''
+ instead of ``-x name''.
+
+Tue Nov 4 08:00:00 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * test/zlib/test_zlib.rb(test_readchar): compare in same type.
+
+Tue Nov 4 03:28:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_join): do not repeat self in a recursive array.
+ [ruby-dev:37019]
+
+Tue Nov 4 01:56:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_mutex_synchronize): fixed prototype.
+
+ * thread.c (rb_mutex_synchronize): fixed function name.
+
+Mon Nov 3 16:32:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing.h: needs RUBY_EXTERN instead of extern for mswin.
+
+Mon Nov 3 13:01:13 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * array.c (rb_ary_take_first_or_last): renamed rb_ary_partial more
+ appropriately.
+ (ary_take_pos_flags): new enum. makes the fourth argument of
+ rb_ary_take_first_or_last more descriptive.
+ (rb_ary_partial): renamed rb_ary_partial0 more appropriately.
+ takes a new parameter klass for what class to instantiate.
+
+Mon Nov 3 13:00:26 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * range.c (rb_range_beg_len): rb_raise takes C values as arguments.
+ [BUG] ranges turned into other value in a message of RangeError.
+
+Mon Nov 3 00:36:44 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_event.rb: rename test class.
+
+ * test/win32ole/test_win32ole_variant_outarg.rb: add in order
+ to use ADO instead of Internet Explorer.
+ remove test/win32ole/test_win32ole_variant_with_ie.rb.
+
+ * test/win32ole/orig_data.csv: ditto.
+
+Sun Nov 2 23:08:08 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_err_in_callback.rb: add teardown.
+
+Sun Nov 2 22:12:41 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_event_free): invoke IConnectionPoint::Unadvise
+ before invoking IConnectionPoint::Release.
+
+ * test/win32ole/test_win32ole_event.rb, test/win32ole/err_in_callback.rb,
+ test/win32ole/test_err_in_callback.rb: Use ActiveX Data Object
+ Library instead of InternetExplorer.
+
+Sun Nov 2 22:06:55 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * win32/Makefile.sub: add RUNRUBYOPT. [ruby-dev:37009]
+
+Sun Nov 2 16:41:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (Init_zlib): defines readbyte instead redefining
+ readchar.
+
+Sat Nov 1 07:09:40 2008 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Don't require rubygems/defaults.rb.
+
+Fri Oct 31 21:58:50 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/converter.rb (RSS::Converter): use String#encode.
+
+Fri Oct 31 21:28:14 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/webrick/httpauth/digestauth.rb
+ (WEBrick::HTTPAuth::DigestAuth#initialize): fix typo.
+
+Fri Oct 31 18:51:42 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_array.rb (test_array_subclass): test for r20076.
+
+Fri Oct 31 18:42:19 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * array.c (ary_partial0): recovers the mistakenly changed feature at r19723.
+ Array#[m,n] had returned an Array even for an instance of a
+ subclass.
+
+Fri Oct 31 18:05:05 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans, maccroatioan-tbl.rb,
+ maccyrillic-tbl.rb, maciceland-tbl.rb: new single-byte
+ transcodings (from Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added tests for the above
+ (from Yoshihiro Kambayashi)
+
+Fri Oct 31 12:51:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_globs): need taint check. reported by steve
+ <oksteev at gmail.com>
+
+Fri Oct 31 12:42:45 2008 wanabe <s.wanabe@gmail.com>
+
+ * array.c (rb_ary_decrement_share): fix to work recycling
+ shared-array without the following. [ruby-dev:36991]
+
+ * array.c (ary_make_substitution): don't recycle substitution array.
+
+Fri Oct 31 12:27:52 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec: supports that the build directory != srcdir.
+
+Fri Oct 31 11:35:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_set_default_internal): no alias "internal" if
+ default internal is not set. [ruby-dev:37000]
+
+Fri Oct 31 08:16:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): delays setting safe level.
+ [ruby-dev:36997]
+
+Thu Oct 30 21:32:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_permutation): hide temporal array.
+
+Thu Oct 30 14:45:45 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans: refactoring to make it easier
+ to add more transcodings (with Yoshihiro Kambayashi)
+
+ * enc/trans/iso-8859-1-tbl.rb: new file to avoid having to
+ treat ISO-8859-1 as special
+
+Thu Oct 30 14:10:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): templates a, A, Z should propagate encoding
+ of original strings. templates b, B, h, H brings ASCII-8BIT to
+ the result.
+
+Thu Oct 30 10:34:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (moreswitches): splits option string and passes arguments.
+
+ * ruby.c (proc_options): checks if allowed in RUBYOPT.
+
+ * ruby.c (process_options): allows long style options in RUBYOPT.
+
+ * ruby.c (load_file_internal): ditto in shebang. [ruby-dev:36979]
+
+Thu Oct 30 09:31:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_locale_encoding): makes an alias for locale.
+ [ruby-dev:36976]
+
+ * encoding.c (rb_enc_set_default_external): ditto for external.
+
+ * encoding.c (rb_enc_set_default_internal): ditto for internal.
+
+Thu Oct 30 03:30:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (load_file_internal): should not set script encoding to
+ ASCII-8BIT.
+
+ * ruby.c (load_file_internal): do not auto convert scripts even
+ when default_internal is set. [ruby-core:19579]
+
+Thu Oct 30 02:20:33 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_sort_bang): remove SEGV when replacing array with
+ embedded one during sort. [ruby-dev:36983]
+
+ * test/ruby/test_array.rb (test_sort!): add tests for above.
+
+Thu Oct 30 01:44:23 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: add some tests.
+
+Thu Oct 30 01:32:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_splice): remove redundant check.
+
+Thu Oct 30 01:24:55 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_str_cmp): fix condition which always returned true
+ because ENCODING_GET returns unsigned long.
+
+Thu Oct 30 01:10:32 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb (test_permutation): add a test that replaces
+ array during permutation.
+
+Wed Oct 29 23:31:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_check_dummy_enc): new function to check dummy
+ encoding.
+
+ * string.c (rb_str_upcase_bang): case conversion functions should
+ not be applicable to strings in dummy encoding. [ruby-dev:36985]
+
+Wed Oct 29 23:57:29 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_sort_bang): replacing array during sort broke
+ invariant of array. [ruby-dev:36983]
+
+Wed Oct 29 21:06:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_rewind): should reset fptr->readconv if it's
+ available.
+
+ * io.c (more_char): clear readconv at EOF.
+
+ * test/ruby/test_file.rb: should not read after EOF. use rewind
+ instead.
+
+Wed Oct 29 20:45:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/webrick/utils.rb (start_server): provide a reference to log of
+ webrick.
+
+ * test/webrick/test_httpproxy.rb, test/webrick/test_httpauth.rb,
+ test/webrick/test_cgi.rb, test/webrick/test_httpserver.rb,
+ test/webrick/test_server.rb, test/webrick/test_filehandler.rb: use
+ webrick log as an assertion message.
+
+Wed Oct 29 16:41:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack): set encoding from packing string and UTF-8 for
+ "U". [ruby-core:19590]
+
+Wed Oct 29 15:50:00 2008 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * complex.c (imp1, imp2): should declare type.
+ [BUG] at IA-64
+
+Wed Oct 29 14:36:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (revision.h): have to be updated daily or by non-trivial
+ commits.
+
+Wed Oct 29 13:18:02 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * README, README.ja: Update the portability section.
+
+Wed Oct 29 13:02:17 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (rb_cv_lib_xpg4_needed): Drop legacy FreeBSD
+ support regarding libxpg4. Those old versions of FreeBSD
+ shipped with the library don't have a working pthread library
+ anyway.
+
+Wed Oct 29 11:50:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (dln-a-out): cannot make shared library nor work with
+ ELF. [ruby-core:19571]
+
+Wed Oct 29 11:00:25 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_open): shouldn't seek here.
+
+ * win32/win32.c (rb_w32_write): write to the end of the file when
+ FAPPEND is specified.
+
+Wed Oct 29 09:30:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): cache common interned IDs.
+
+Wed Oct 29 00:43:39 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: uses macro in declarations.
+
+Wed Oct 29 00:26:00 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_open): need to seek to the end of the file when
+ O_APPEND is specified.
+
+Wed Oct 29 00:08:05 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * math.c (rb_math_{atan2,cos,cosh,hypot,log,sin,sinh,sqrt}): added.
+
+ * complex.c: follows the above change.
+
+Tue Oct 28 23:29:06 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (kanji_convert): output unicode chars.
+ [ruby-dev:36957]
+
+ * ext/nkf/nkf-utf8/nkf.c (numchar_getc): increase buffer size.
+ reported and patched at [ruby-dev:36957] by mame.
+
+Tue Oct 28 23:03:46 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/test_proc.rb: filled all patterns for testing
+ vm_yield_setup_args.
+
+Tue Oct 28 23:05:35 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: continues to support canonicalization *unofficially*
+ for an odd library mathn for the time being (only 1.9.x).
+ since grand mathn must be very very special library for us.
+
+ * rational.c: ditto.
+
+ * ext/mathn/*/*: follow the above changes.
+
+Tue Oct 28 21:31:55 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (parser_yylex): check EOF explicitly.
+
+Tue Oct 28 20:59:12 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (extract_binmode): new function to extract binmode/textmode
+ options from hash.
+
+ * io.c (rb_io_extract_modeenc): use above function.
+
+ * io.c (rb_io_s_pipe): recognize binmode/textmode options.
+
+Tue Oct 28 20:15:49 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (make_readconv): now can specify the size of cbuf.
+
+ * io.c (read_all, appendline, io_getc, rb_io_ungetc): follow above
+ change.
+
+Tue Oct 28 19:00:51 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pipe_exec): internal fds should be always
+ binmode.
+
+Tue Oct 28 17:21:18 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * tool/make-snapshot.rb: merged from ruby_1_9_1.
+
+Tue Oct 28 16:56:31 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gem_prelude.rb: merged from ruby_1_9_1 branch.
+ considers --program-suffix and prefix configure options.
+
+ * lib/rubygems/defaults.rb: ditto.
+
+ * test/rubygems/test_gem.rb (@default_dir_re): ditto.
+
+Tue Oct 28 16:13:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: use String#bytesize.
+
+Tue Oct 28 09:51:48 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bootstraptest/test_thread.rb: ignore some exceptions.
+ [ruby-dev:36951]
+
+Tue Oct 28 09:19:40 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (RUNRUBY): now ruby requires something from
+ gem_prelude, so need to set library path.
+
+Mon Oct 27 22:29:11 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * vm_insnhelper.c (vm_yield_setup_args): supports optional parameters.
+ Fixed [ruby-core:19503].
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): a new function. extracted
+ from vm_yield_setup_args.
+
+ * vm_insnhelper.c (vm_yield_setup_block_args_complex): ditto.
+
+ * test/ruby/test_proc.rb: added tests for arguments on a Proc from
+ Kernel#proc called.
+
+Mon Oct 27 20:03:05 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/mathn/complex/complex.c: no need to define rb_cComplex because
+ it's already defined at $(srcdir)/complex.c.
+
+ * ext/mathn/rational/rational.c: no need to define rb_cRational because
+ it's already defined at $(srcdir)/rational.c.
+
+Mon Oct 27 15:58:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file): preserves $.. [ruby-dev:36937]
+
+ * io.c (argf_init): initial value of $. should be 0.
+ see [ruby-dev:36937].
+
+Mon Oct 27 15:38:38 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/minitest/test_mini_test.rb
+ (test_assert_raises_triggered_different): the test failed when a
+ file path in the backtrace contains something except [\w\/\.],
+ e.g. hyphen, Japanese characters or backslash.
+
+ * test/minitest/test_mini_test.rb
+ (test_assert_raises_triggered_subclass): ditto.
+
+Mon Oct 27 15:32:08 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/minitest/test_mini_test.rb: fixed that r19958 made
+ test-all fail when the ruby was built at $(srcdir).
+
+Mon Oct 27 12:04:58 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/ruby/envutil.rb: reverted the changeset 19948 because it
+ concealed unexpected behaviours of ruby.
+
+ * test/ruby/test_io.rb: ditto.
+
+Mon Oct 27 12:02:53 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/nkf/nkf.c (rb_nkf_convert): should specify type of variable.
+
+Mon Oct 27 11:34:56 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/minitest/test_mini_test.rb (test_filter_backtrace):
+ fixed failure on Ruby built at out of $(srcdir).
+
+ * test/minitest/test_mini_test.rb (test_Filter_backtrace_unit_starts):
+ ditto.
+
+Mon Oct 27 10:02:47 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (read_all): the 3rd argument maybe Qnil.
+
+Mon Oct 27 01:29:55 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/nkf/test_nkf.rb: add a test for [ruby-dev:36909].
+
+Mon Oct 27 01:05:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_convert): avoid GC.
+ reported in [ruby-dev:36909] and patched [ruby-dev:36941] by mame.
+
+Sun Oct 26 21:28:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/json/test_json.rb: remove dependency on permutation gem.
+
+Sun Oct 26 19:18:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (blocking_region_{begin,end}): declared as inline.
+
+ * util.c (freedtoa): used only when MULTIPLE_THREADS is not defined.
+
+ * win32/win32.c (rb_w32_pipe): serial is DWORD.
+
+ * ext/etc/etc.c (sGroup): getgrent may not be available.
+
+Sun Oct 26 18:11:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/wait/{extconf.rb,wait.c}: needs sys/ioctl.h for fcntl on
+ cygwin.
+
+Sun Oct 26 18:18:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gem_prelude.rb: disables debug and verbose flags to suppress failure
+ messages. interpolation does not occur inside single quotes.
+
+Sun Oct 26 18:42:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_in_out_err): disables builtin rubygems
+ to get rid of the interference.
+
+ * test/ruby/test_io.rb (ruby): ditto.
+
+Sun Oct 26 13:30:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (read_all): use the given buffer to read when needs readconv.
+ based on the patch by wanabe <s.wanabe AT gmail.com> at
+ [ruby-dev:36931].
+
+Sun Oct 26 07:57:35 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Update to RubyGems 1.3.1 r1909.
+
+Sun Oct 26 07:35:56 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/unit.rb: Imported minitest 1.3.0 r4429.
+ * test/minitest/*: ditto.
+
+Sun Oct 26 02:16:29 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in ($MANTYPE): followed ruby.1, which had moved.
+
+ * instruby.rb (:man): ditto.
+
+ * mdoc2man.rb: fixed for the case Xr with 2 arguments.
+
+Sun Oct 26 01:42:45 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/irb.1: new manual page.
+
+Sun Oct 26 00:11:48 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * man/ruby.1: moved into man/. added some descriptions.
+
+ * man/goruby.1: new file.
+
+ * instruby.rb (:man): followed ruby.1.
+
+Sat Oct 25 20:05:22 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_profile_result): bug fix. The millisecond is 1/1000.
+
+Sat Oct 25 11:12:40 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ruby.c (usage): updated the description of -E option.
+
+Sat Oct 25 09:54:10 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Fixed a bug in read_to_char() that would slurp
+ whole files if the encoding was invalid. It will now read
+ up to 10 bytes ahead to find a valid character boundary or
+ give up. [ruby-core:19465]
+
+ * test/csv/test_features.rb, test/csv/test_table.rb, test/csv/test_row.rb:
+ Loosened some tests to check for a compatible? Encoding instead
+ of an exact Encoding. [ruby-core:19470]
+
+Sat Oct 25 07:42:49 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Update to RDoc 2.2.2 r192.
+
+Sat Oct 25 04:00:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/us_ascii.c (us_ascii_mbc_enc_len): made static. a patch by
+ Tadashi Saito <shiba AT mail2.accsnet.ne.jp> at [ruby-dev:36916]
+
+ * signal.c (signal_buff): made static. a patch by Tadashi Saito
+ <shiba AT mail2.accsnet.ne.jp> at [ruby-dev:36915]
+
+ * util.c (freedtoa): made static to get rid of name clash. a patch by
+ Tadashi Saito <shiba AT mail2.accsnet.ne.jp> at [ruby-dev:36913]
+
+ * util.c (ruby_dtoa): added prefix, ditto.
+
+Sat Oct 25 03:43:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lambda): need to adjust lpar_beg for both of the parser and
+ ripper.
+
+Sat Oct 25 01:29:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/mathn/rational/rational.c: undef duplicated macro definition
+ first to shut up the warning.
+
+ * ext/mathn/rational/rational.c (rb_rational_new_mathn): specify
+ omitted return value.
+
+Sat Oct 25 00:14:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sample): fixed sizes and randomness.
+
+Fri Oct 24 23:04:42 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in (sitedir): considers --program-prefix and
+ --program-suffix.
+ (vendordir): ditto.
+ (rubyhdrdir): ditto.
+
+ * mkconfig.rb (CONFIG["rubylibdir"]): ditto.
+
+ * win32/Makefile.sub: ditto.
+
+ * instruby.rb (:rdoc): ditto.
+
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths): ditto.
+
+Fri Oct 24 22:59:27 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb (test_sample): add tests for size of
+ returned array and randomness.
+
+Fri Oct 24 21:50:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * id.h, template/id.h.tmpl (enum ruby_method_ids): reordered.
+
+Fri Oct 24 21:19:45 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * ext/mathn/rational.c: change several global functions.
+
+Fri Oct 24 21:05:38 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/html.rb: allow symbolized key.
+
+ * test/cgi/test_cgi_tag_helper.rb: add a test.
+
+Fri Oct 24 20:54:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (exts): renamed to get rid of the existent directory.
+
+Fri Oct 24 20:45:41 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * ext/mathn/rational.c: change several global functions to static
+ function.
+
+Fri Oct 24 19:57:19 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_dump): should have removed commented out
+ unnecessary code. [ruby-cvs:27131]
+
+Fri Oct 24 19:16:36 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * id.h (enum ruby_method_ids): ISO C forbids comma at end of
+ enumerator list.
+
+Fri Oct 24 18:29:00 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/mathn.rb: moved into ext/mathn/rational/rational.c and
+ ext/mathn/complex/complex.c.
+ * ext/mathn: new mathn ext-libraries.
+
+Fri Oct 24 18:21:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_array.rb (TestArray#test_join): should restore
+ global variable after the test. [ruby-dev:36896]
+
+ * test/ruby/test_hash.rb (TestHash#test_to_s): ditto.
+
+Fri Oct 24 17:43:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (lambda): need to adjust lpar_beg for ripper as well.
+ [ruby-dev:36702]
+
+Fri Oct 24 16:13:12 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (read_multipart): change field value as String
+ from StringIO or Tempfile when multipart parse except file field.
+ add files method that can get uploaded files. [ruby-dev:36547]
+
+ * test/cgi/test_cgi_multipart.rb: fix the test for core.rb.
+
+Fri Oct 24 14:22:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ext): split out the target for extension library.
+
+ * common.mk (encs): depends on enc and trans.
+
+Fri Oct 24 10:23:24 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_signal.rb (TestSignal#test_exit_action): Thread
+ may terminate before sysread. [ruby-dev:36835]
+
+Thu Oct 23 22:06:23 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * distruby.rb: removed. "make dist" uses tool/make-snapshot for the 1.9
+ series. distruby.rb has been no longer used.
+
+Thu Oct 23 17:30:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_class_instance_methods): rdoc fixed. [ruby-core:19458]
+
+Thu Oct 23 16:19:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/init.rb (IRB.load_modules): catch LoadError explicitly.
+ a patch from Daniel Berger <Daniel.Berger at qwest.com> in
+ [ruby-core:19451]. fix [ruby-core:19450]
+
+Thu Oct 23 16:16:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyport): check if the port range.
+ [ruby-core:19460]
+
+Thu Oct 23 14:08:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyname): unuse unnecessary
+ object.
+
+ * ext/socket/socket.c (sock_s_getservbyport): the port should be
+ converted before the proto so that the #to_int of the former cannot
+ alter the latter.
+
+Thu Oct 23 10:55:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_dump): use \u{ff} escape for UTF-8 encoding
+ string.
+
+Thu Oct 23 09:26:22 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyport): cast to get rid of
+ warning.
+
+Thu Oct 23 08:06:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyport): port should be
+ network byte order. a patch from Dave Thomas in [ruby-core:19454].
+
+Thu Oct 23 01:26:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_conv_enc_opts): new function to convert with
+ specifying ecflags and ecopts.
+
+ * ext/zlib/zlib.c (gzfile_newstr): specify ecflags and ecopts for
+ conversion using above function.
+
+ * ext/zlib/zlib.c (gzfile_newstr): use own rb_econv_t for dummy
+ encoding to handling stateful encoding (e.g. iso-2022-jp).
+ [ruby-dev:36857]
+
+ * ext/zlib/zlib.c (gzfile_getc): ditto.
+
+Thu Oct 23 01:24:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_tmpsrc): get rid of side effects.
+
+Thu Oct 23 00:10:01 2008 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: separate data structure between rb_fiber_t and
+ rb_context_t (rb_fiber_t includes rb_context_t).
+ rb_fiber_t has double linked list of fibers in same threads.
+
+Wed Oct 22 17:25:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (pipe_open): remove unnecessary flush before fork.
+ a patch from Kazuhiro NISHIYAMA <zn at mbf.nifty.com>
+ in [ruby-dev:36840].
+
+Wed Oct 22 16:27:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_yield_setup_args): should not drop arguments
+ corresponding to default parameters.
+
+Wed Oct 22 14:59:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_larglist): should not allow semicolon separated local
+ variable declarations if formal argument list is not surrounded
+ by parentheses, mostly because semicolon outside of parentheses
+ appears to terminate the expression.
+
+Wed Oct 22 14:52:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_external_str_new_with_enc): no implicit strlen call.
+ [ruby-dev:36854]
+
+ * string.c (rb_external_str_new_cstr): new function to create
+ string from external NUL terminated C string.
+
+ * string.c (rb_locale_str_new_cstr): ditto.
+
+ * ext/readline/readline.c: now use rb_locale_str_new_cstr().
+
+ * test/sdbm/test_sdbm.rb (TestSDBM#test_delete_with_block):
+ deleted key to the block may be a copy of specified key.
+
+ * test/dbm/test_dbm.rb (TestDBM#test_delete_with_block): ditto.
+
+Wed Oct 22 13:16:47 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (unescape_escaped_nonascii): back out the last change on
+ the function. [ruby-dev:36818]
+
+Wed Oct 22 07:09:19 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_gzreader_ungetc): should be able to unget
+ Fixnum.
+
+ * ext/stringio/stringio.c (strio_ungetc): should convert unget
+ string.
+
+ * ext/stringio/stringio.c (strio_ungetbyte): new method.
+
+Wed Oct 22 05:46:25 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/vm.h: write a comment.
+
+ * common.mk: remove vm.h from any rules.
+ vm.h is not needed on this version.
+
+ * vm_core.h: ditto.
+
+Wed Oct 22 05:39:39 2008 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y (arg_concat_gen): concat target node should be NODE_ARRAY.
+ [ruby-core:19413]
+
+ * bootstraptest/test_method.rb: add tests.
+
+Wed Oct 22 00:29:13 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb (test_core_03_notify): Fixed test failures
+ [ruby-dev:36837].
+
+Wed Oct 22 00:22:06 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_external_str_new_with_enc): wrong condition to
+ calculate strlen().
+
+ * ext/readline/readline.c: add encoding support.
+
+Tue Oct 21 23:12:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_write): should convert writing
+ string to the encoding of the buffer.
+
+ * hash.c (rb_any_hash): typo fixed.
+
+ * ext/zlib/zlib.c (rb_gzwriter_write): oops, IO string conversion
+ need to be done by to_s.
+
+Tue Oct 21 22:38:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (open_key_args): should adjust argc, argv in struct
+ foreach_arg.
+
+Tue Oct 21 21:52:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_gzwriter_write): conversion should be done
+ using to_str, not to_s.
+
+ * ext/zlib/zlib.c (rb_gzwriter_write): need proper conversion
+ according to gz encoding.
+
+ * ext/zlib/zlib.c (rb_gzreader_ungetc): convert string encoding
+ before unget.
+
+Tue Oct 21 21:33:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (assert_nothing_raised): raise with backtrace.
+
+Tue Oct 21 20:12:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (assert_nothing_raised): set backtrace.
+
+Tue Oct 21 18:17:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c: remove obsolete prototype macros.
+
+ * ext/zlib/zlib.c (struct gzfile): add encoding field to gzfile
+ structure.
+
+ * ext/zlib/zlib.c (rb_gzreader_getc): now works on characters.
+
+ * ext/zlib/zlib.c (rb_gzreader_getbyte): new method to retrieve
+ single byte.
+
+ * ext/zlib/zlib.c (rb_gzreader_readbyte): ditto.
+
+ * ext/zlib/zlib.c (rb_gzreader_each_byte): renamed from each_char
+
+ * ext/zlib/zlib.c (rb_gzreader_ungetc): allow unget strings.
+
+ * ext/zlib/zlib.c (rb_gzreader_ungetbyte): renamed from ungetc.
+
+Tue Oct 21 13:28:42 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * io.c, include/ruby/intern.h (rb_io_ascii8bit_binmode): externed.
+
+ * ext/socket/socket.c (init_sock): use rb_io_ascii8bit_binmode()
+ instead of rb_io_binmode().
+
+Tue Oct 21 13:17:39 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * mdoc2man.rb: moved into tools/.
+
+ * instruby.rb: followed the change of mdoc2man.
+
+Tue Oct 21 11:34:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (strip_glibc_option, map_charset): check if
+ encoding is a string. based on the patch by Hiroshi Moriyama at
+ [ruby-dev:36811].
+
+ * test/iconv/test_basic.rb (test_invalid_arguments): added tests.
+
+Tue Oct 21 10:40:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_file_open_internal): should initialize fmode before using.
+
+Tue Oct 21 08:56:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (parse_char_class): CCV_SB is only for single
+ byte. [ruby-dev:36786]
+
+Tue Oct 21 01:49:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): plain rb/wb should set ASCII-8BIT
+ to the external_encoding.
+
+ * io.c (rb_file_open_internal): ditto.
+
+ * io.c (NEED_WRITECONV): no conversion when the external_encoding
+ is ASCII-8BIT.
+
+ * io.c (do_writeconv): skip ASCII-8BIT.
+
+Tue Oct 21 00:51:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_ascii8bit_binmode): renamed from rb_io_binmode.
+ (rb_io_binmode): don't change encoding conversion.
+ (rb_io_binmode_m): call rb_io_ascii8bit_binmode.
+
+Mon Oct 20 21:19:00 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (read_multipart): file's encoding is ascii-8bit
+ from file field of multipart form.
+
+Mon Oct 20 20:16:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (Init_zlib): add getbyte as an alias to getc.
+ [ruby-dev:36801]
+
+Mon Oct 20 17:31:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_equal): should not compare recursively.
+ [ruby-dev:36796]
+
+Mon Oct 20 16:48:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/ruby.h (ExportStringValue): new macro to convert
+ string in internal encoding to external to export.
+
+ * string.c (rb_str_export): new function to do conversion to
+ external encoding.
+
+ * ext/sdbm/init.c: encoding conversion support.
+
+ * ext/dbm/dbm.c: ditto.
+
+Mon Oct 20 15:42:02 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_locale_str_new): new function to convert string
+ from locale to internal encoding.
+
+Mon Oct 20 09:47:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/runner.rb: search srcdir/test/arg at first to find test/ruby
+ directory when "ruby" is specified.
+
+Mon Oct 20 08:20:01 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: support Encoding.default_internal.
+
+ * ext/tk/tcltklib.c: ditto.
+
+ * ext/tk/extconf.rb: improve the strategy for searching Tcl/Tk headers.
+
+Mon Oct 20 00:57:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (Test::Unit.setup_argv): call given block for
+ filtering files.
+
+ * test/runner.rb: search srcdir/test/arg, srcdir/arg.
+
+ * bin/testrb: show usage if no files given.
+
+Sun Oct 19 21:19:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (srcs): removed ID_H_TARGET.
+
+ * tool/generic_erb.rb: always overwrites if no if-change option.
+ sends the result to stdout if no output option.
+
+ * template/id.h.tmpl: shows which token differs.
+
+Sun Oct 19 18:15:15 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans: adding WINDOWS-wwww encodings
+ (wwww = 874/1250/1251/1253/1254/1255/1256/1257)
+ (contributed by Yoshihiro Kambayashi)
+
+ * enc/trans/windows-wwww-tbl.rb: 8 new files
+ (contributed by Yoshihiro Kambayashi)
+
+ * test/ruby/test_transcode.rb: added test_windows_wwww
+ (contributed by Yoshihiro Kambayashi)
+
+Sun Oct 19 07:37:13 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (log2,cbrt,frexp,ldexp,hypot,erf,erfc,gamma,lgamma):
+ should be also provided as module function. [ruby-dev:36787]
+
+Sun Oct 19 07:25:08 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * keywords, lex.c.src, opt_insn_unif.def, opt_operand.def: moved rarely changed
+ input files for code generators into defs/ directory.
+
+ * Makefile.in (lex.c): followed keywords and lex.c.src.
+
+ * common.mk (parser.o): followed keywords.
+ (INSNS): followed opt_*.def
+
+ * tools/instruction.rb: followed opt_*.def.
+
+Sun Oct 19 12:28:01 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * test/csv/*: Renamed tc_* files to test_* to fit in within Ruby's
+ testing process.
+
+Sun Oct 19 00:15:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (assert_nothing_thrown): don't intern.
+
+Sat Oct 18 14:40:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_sadded): remove newly defined singleton method
+ that should not exist after exception handling. [ruby-dev:36569]
+
+Sat Oct 18 14:27:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (opt_block_arg): allow trailing comma after usual
+ arguments. not after block argument.
+
+Sat Oct 18 13:30:53 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_external_str_new): a new function to convert from
+ external encoding to internal encoding. if something went
+ wrong, it returns a string with the external encoding.
+
+ * string.c (rb_external_str_new_with_enc): same as above besides
+ you can specify the source encoding.
+
+ * ruby.c (ruby_set_argv): use rb_external_str_new()
+
+ * ruby.c (set_arg0, ruby_script): ditto.
+
+Sat Oct 18 04:08:18 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#initialize): now Tempfile.new takes
+ keyword arguments to open(). [ruby-dev:36756]
+
+Sat Oct 18 17:10:10 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * tool/transcode-tblgen.rb: added set_valid_byte_pattern
+ to reduce coupling between table generation script and
+ specific encodings.
+
+ * enc/trans/single_byte.trans: using set_valid_byte_pattern
+
+Sat Oct 18 16:39:39 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: in transcode_search_path, eliminated a warning
+ on cygwin about pathlen potentially not being initialized
+
+Sat Oct 18 13:40:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (assert_nothing_thrown): implemented.
+
+Sat Oct 18 01:33:22 2008 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * common.mk: use added options for generic_erb.rb.
+
+Sat Oct 18 00:47:51 2008 wanabe <s.wanabe@gmail.com>
+
+ * array.c: don't recycle shared-array while sort!.
+
+Fri Oct 17 22:04:38 2008 wanabe <s.wanabe@gmail.com>
+
+ * array.c: recycle shared-array when it isn't referenced.
+
+Fri Oct 17 20:29:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): specify ARG_ENCODING_NONE instead of
+ ARG_ENCODING_FIXED for Regexp.new("", nil, "n"). [ruby-dev:36761]
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_initialize): test
+ updated.
+
+Fri Oct 17 19:46:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/ifchange, win32/ifchange.bat: --timestamp option added.
+
+ * tool/generic_erb.rb: --timestamp, --output and --if-change options
+ added.
+
+Fri Oct 17 18:33:12 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * array.c (ary_resize_capa): renamed RESIZE_CAPA.
+
+Fri Oct 17 18:16:51 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/bigdecimal/test_bigdecimal.rb (TestBigDecimal#test_sqrt_bigdecimal):
+ test updated. a patch from TAKANO Mitsuhiro <takano32 at jus.or.jp> in
+ [ruby-dev:36736].
+
+Fri Oct 17 18:14:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (uncommon.mk): ignores failures at loading.
+
+ * test/rubygems/gemutilities.rb (RubyGemTestCase#build_rake_in):
+ get rid of interference with other tests.
+
+Fri Oct 17 18:06:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c (str_transcode0): String#encode without argument now
+ behave as if :undef => :replace, :invalid => :replace specified.
+
+ * transcode.c (rb_econv_prepare_opts): should preserve options in
+ any case.
+
+Fri Oct 17 11:48:18 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/socket.c (init_sock): sockets should be binmode.
+
+ * test/socket/test_tcp.rb (test_encoding): ditto.
+
+Fri Oct 17 10:26:13 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/insns2vm.rb: remove -Kn option in shebang line because it's
+ inconsistent with -Ks commandline option in common.mk.
+
+Fri Oct 17 01:26:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_restartable0): in_pos and out_pos never be
+ NULL, now.
+
+Fri Oct 17 00:39:19 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/test/unit.rb: sort the order of executing tests.
+
+Fri Oct 17 00:24:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_binmode): reset encoding conversion.
+
+Fri Oct 17 00:16:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (rb_getc, rb_io_fread, rb_io_fwrite, rb_read_pending):
+ remove deprecated functions which do not work. [ruby-dev:36697]
+
+Thu Oct 16 23:48:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk (TESTS): removed to re-enable test for minitest.
+
+Thu Oct 16 23:37:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_set_sequence): fix memory leak.
+
+Thu Oct 16 23:27:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (assert_equal): avoid incompatible character
+ encodings error.
+
+Thu Oct 16 23:23:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (assert_equal): failure message changed.
+
+Thu Oct 16 22:52:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit: removed test/unit.
+
+ * lib/test/unit.rb: new compatibility layer using minitest.
+
+ * bin/testrb: use above.
+
+ * test/runner.rb: ditto.
+
+Thu Oct 16 14:34:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, enc/depend (enc, trans): targets for sources.
+
+Thu Oct 16 14:30:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (lib): installs all files other than README etc.
+
+Thu Oct 16 09:48:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): changed the message to clarify the
+ third option argument is now ignored. [ruby-dev:36753]
+
+Thu Oct 16 08:14:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): no warning when default_external already
+ set by -E.
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_rubyopt):
+ put -K after -E to set script encoding.
+
+Thu Oct 16 06:20:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_transcode.rb (TestTranscode#test_errors):
+ String#encode now works without any argument. [ruby-dev:36740]
+
+Wed Oct 15 23:48:22 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * .gdbinit (rp): REGEXP handling fixed.
+
+ * string.c (rb_str_rindex_m): need not to call rb_enc_check on
+ regexp.
+
+ * re.c (unescape_escaped_nonascii): try ASCII-8BIT encoding for
+ broken strings.
+
+Wed Oct 15 23:11:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (DelegateClass): restored 1.8 behavior for
+ DelegateClass as well. [ruby-dev:36739]
+
+Wed Oct 15 22:19:14 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (RESIZE_CAPA): check whether len is longer than capacity.
+
+ * array.c (rb_ary_compact_bang): resize ary before changing capacity.
+ fixed [ruby-dev:36704]
+
+Wed Oct 15 16:57:30 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * version.h (RUBY_DESCRIPTION): remove unnecessary space.
+
+Tue Oct 14 23:18:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator): simplified and restored 1.8
+ behavior. [ruby-dev:35986]
+
+Tue Oct 14 21:50:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (TESTS): skips minitest by default, since it interferes
+ with test/unit.
+
+Tue Oct 14 21:36:29 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (load_conv_function51932): check
+ having IMultiLanguage2 or IMultiLanguage. [ruby-dev:36716]
+
+ * ext/win32ole/extconf.rb: ditto.
+
+Tue Oct 14 20:45:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (Init_IO): $FILENAME and $* must be read-only. [ruby-dev:36698]
+
+ * variable.c (*_getter, *_setter, *_marker): made public.
+
+ * include/ruby/ruby.h (rb_gvar_*_{getter,setter,marker}): declared.
+
+Tue Oct 14 20:32:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/single_byte.trans (transcode_tblgen_singlebyte): renamed
+ from transcode_tblgen_windows.
+ (transcode_tblgen_iso8859): use transcode_tblgen_singlebyte.
+
+Tue Oct 14 19:32:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (process_options): -U should be allowed in RUBYOPT
+ environment variable. [ruby-dev:36720]
+
+Tue Oct 14 14:11:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): -U can be followed by other options.
+
+Tue Oct 14 13:30:30 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/single_byte.trans: added windows-1252
+
+ * enc/trans/windows-1252-tbl.rb: new file
+ (contributed by Yoshihiro Kambayashi)
+
+ * tool/transcode-tblgen.rb: listed windows-1252 as '1byte'
+
+ * test/ruby/test_transcode.rb: added test_windows_1252
+ (contributed by Yoshihiro Kambayashi)
+
+Tue Oct 14 12:22:32 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_variable.rb (TestVariable#test_variable): add
+ a test of [ruby-dev:36698].
+
+Tue Oct 14 11:14:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c (str_transcode0): should not raise error when
+ default_internal is not set. [ruby-core:19309]
+
+Tue Oct 14 11:14:26 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/net/pop.rb: check for invalid APOP timestamp. (CVE-2007-1558)
+ [ruby-dev:36631]
+
+ * test/net/pop/test_pop.rb: ditto.
+
+Tue Oct 14 09:39:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (set_internal_encoding_once): check double contradicted
+ specification of the encoding from command line.
+
+ * ruby.c (set_external_encoding_once): ditto.
+
+Tue Oct 14 08:28:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): allow reserved word to be keyword argument.
+
+Mon Oct 13 19:07:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (token_info_pop): show source filename. [ruby-dev:36710]
+
+Mon Oct 13 08:59:08 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (load_conv_function51932): support
+ CP51932 on cygwin and mingw32. thanks to arton.
+
+ * test/win32ole/test_win32ole.rb (test_cp51932): ditto.
+
+Mon Oct 13 07:54:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): add -U command line option to specify
+ utf-8 as default_internal.
+
+Mon Oct 13 07:42:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c (str_transcode0): String#encode() with no encoding
+ specified transcode the string into Encoding.default_internal.
+ inspired by [ruby-core:19298].
+
+Sun Oct 12 18:00:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (set_ole_codepage, ole_cp2encoding,
+ ole_wc2mb, ole_vstr2wc, ole_mb2wc): support CP51932 (only mswin32).
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Sun Oct 12 12:03:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_insnhelper.h (ruby_vm_redefined_flag): apply optimization
+ patch proposed by Paul Brannan. [ruby-core:19171]
+
+Sun Oct 12 09:46:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime): suppressed warnings on cygwin.
+
+Sat Oct 11 19:49:35 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_prepare): use utf-8 encoding directly.
+
+Sat Oct 11 10:20:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (CLEANINGS): uses escaped form tabs to preventing the
+ confusion. [ruby-talk:317345]
+
+Sat Oct 11 08:51:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (Rake::Application#standard_exception_handling): removed
+ unnecessary SystemExit, and exits with false instead of system
+ dependent value. [ruby-talk:317330]
+
+Sat Oct 11 03:54:05 2008 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: optimize 'for' statement when one variable given.
+
+ * benchmark/bm_loop_for.rb: added.
+
+ * benchmark/bm_loop_times.rb: modified.
+
+Sat Oct 11 12:09:05 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv/csv.rb: Added support for Encoding::default_internal.
+ * lib/csv/csv.rb: Switched to new Hash syntax.
+
+Fri Oct 10 22:16:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (comment_at_top): needed for ripper too.
+
+Fri Oct 10 22:07:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby.h: updated macros for headers. [ruby-core:19275]
+
+Fri Oct 10 19:21:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (magic_comment_encoding): warns when ignored.
+
+ * parse.y (parser_magic_comment): replaces '-' with '_'.
+
+ * parse.y (parser_yylex): allows magic comments indented and the
+ second line or later.
+
+Fri Oct 10 17:26:50 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/ext/parser/parser.c (JSON_parse_string):
+ associate encoding.
+
+Fri Oct 10 10:18:21 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/test/*: reverted back to test/unit.
+ * test/test/*: ditto
+ * lib/minitest/*: Imported minitest 1.3.0 r4333.
+
+Fri Oct 10 03:41:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): check if codepoint for %c is valid.
+ [ruby-dev:36691]
+
+Fri Oct 10 01:55:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_names): minor improvement.
+
+Fri Oct 10 00:21:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (ParseError.filter_backtrace): removes internal
+ backtrace.
+
+Fri Oct 10 00:11:16 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * transcode.c (rb_econv_add_converter): remove unnecessary NULL check.
+
+Thu Oct 9 23:53:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-c-mode): buffer may not have file
+ name.
+
+Thu Oct 9 23:30:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * process.c (run_exec_dup2): fix resource leak.
+
+Thu Oct 9 23:19:02 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * process.c (rb_run_exec_options): fix resource leak.
+
+Thu Oct 9 22:13:58 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_module.rb (test_remove_class_variable): add a test
+ for Class#remove_class_variable.
+
+ * test/ruby/test_object.rb (test_remove_instance_variable): add a test
+ for Object#remove_instance_variable.
+
+Thu Oct 9 22:04:38 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (rb_mod_remove_cvar): fix r19711.
+
+Thu Oct 9 21:17:50 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/syck/syck.c (syck_lookup_sym): remove reading uninitialized
+ variable.
+
+Thu Oct 9 16:34:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/ext/generator/extconf.rb: fix target.
+
+ * ext/json/ext/parser/extconf.rb: ditto.
+
+Thu Oct 9 14:37:59 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * include/ruby/ruby.h: embeds the elements of an array into its
+ struct RArray for # of elements <= 3.
+
+ * array.c: ditto.
+
+ * gc.c (gc_mark_children): following the change of struct RArray.
+
+ * ext/tk/tcltklib.c (ip_ruby_cmp): ditto.
+
+ * parse.y (coverage): ditto.
+
+ * proc.c (curry): ditto.
+
+ * .gdbinit: ditto.
+
+Thu Oct 9 11:29:33 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): new instance method Encoding#names,
+ returns its name and alias names.
+
+ * encoding.c (enc_names): defined for Encoding#names.
+
+ * encoding.c (enc_names_i): defined for enc_names.
+
+Thu Oct 9 08:47:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_thread_wait_fd_rw): should not block by select if
+ there's only one thread living. fixed [ruby-dev:36646].
+
+Wed Oct 8 20:59:52 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_init_cp): initialize WIN32OLE.codepage
+ according to Encoding.default_internal and
+ Encoding.default_external.
+
+Wed Oct 8 17:02:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure/generator.rb (utf8_to_json):
+ process each unpacked Unicode character.
+
+Wed Oct 8 15:00:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure/parser.rb
+ (JSON::Pure::Parser#parse_string): force_encoding("UTF-8").
+
+Wed Oct 8 11:56:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: assert_nothing_thrown,
+ assert_raise, assert_not_equal, assert_no_match, assert_not_nil,
+ assert_not_same are coming back as alias.
+
+Wed Oct 8 11:18:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (autoload_delete, autoload_file): should not delete
+ autoload table, since it may be shared with duplicated modules.
+ [ruby-core:19181]
+
+Wed Oct 8 02:38:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_default_internal_encoding): merged a patch from
+ Michael Selig <michael.selig at fs.com.au> in [ruby-core:18985].
+
+ * io.c (rb_io_ext_int_to_encs): ditto.
+
+ * ruby.c (proc_options): support default internal encoding in -E
+ option.
+
+Wed Oct 8 00:03:39 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (today,now): should produce own instances.
+ [ruby-talk:317020]
+
+Tue Oct 7 16:43:51 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure/generator.rb (utf8_to_json):
+ force_encoding before gsub.
+
+Tue Oct 7 16:35:41 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure/generator.rb (utf8_to_json):
+ downcase the result of Unicode escape.
+
+Mon Oct 6 16:44:52 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::QueryExtension::initialize_query): fix the
+ condition.
+
+ * test/cgi/test_cgi_core.rb: bug fix encoding.
+ thanks to TAKANO Mitsuhiro <takano32 at jus.or.jp> .
+
+ * test/cgi/test_cgi_multipart.rb: temporary comment in.
+
+Mon Oct 6 15:22:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_mark_children): ignores T_ZOMBIE.
+
+Mon Oct 6 12:45:20 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_module.rb (TestModule#_wrap_assertion): add
+ definition. is this really needed?
+
+ * test/ruby/test_module.rb (TestModule#test_mod_constants): should
+ not depend on global Module constants.
+
+Mon Oct 6 12:38:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Assertions#assert_nothing_raised):
+ should take optional message argument.
+
+Mon Oct 6 12:18:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): string comparison should be
+ transitive. [ruby-dev:36484]
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb#test_str_eq): test
+ updated.
+
+Mon Oct 6 09:00:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/bigdecimal/test_bigdecimal.rb (test_sqrt_bigdecimal): test
+ updated. a patch from TAKANO Mitsuhiro <takano32 at jus.or.jp>
+ in [ruby-dev:36669].
+
+Sun Oct 5 23:34:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb ($config_h): now always defines for old libraries.
+
+Sun Oct 5 23:06:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_mod_modfunc): method undefined in included module
+ may not have nd_body. [ruby-core:18738]
+
+Sun Oct 5 21:28:58 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/rational.rb: resolved conflicts of aliases.
+
+ * lib/mathn.rb: avoided some warnings.
+
+Sun Oct 5 18:51:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: remove debug code introduced by previous change.
+
+Sun Oct 5 17:49:35 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/open-uri.rb (OpenURI.open_uri): set encoding to strio.
+
+Sun Oct 5 17:39:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_set_encoding): defined for
+ StringIO#set_encoding.
+
+Sun Oct 5 11:24:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * eval.c: come back definition of environ.
+
+Sun Oct 5 09:19:49 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/utf8tbl.c: update table.
+
+Sat Oct 4 22:50:14 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * dln.c: Ruby no longer supports VMS.
+
+ * error.c: ditto.
+
+ * eval.c: ditto.
+
+ * eval_intern.h: ditto.
+
+ * include/ruby/defines.h: ditto.
+
+ * include/ruby/ruby.h: ditto.
+
+ * io.c: ditto.
+
+ * process.c: ditto.
+
+ * ruby.c: ditto.
+
+ * vms/config.h: removed.
+
+ * vms/vms.h: ditto.
+
+ * vms/vmsruby_private.c: ditto.
+
+ * vms/vmsruby_private.h: ditto.
+
+Sat Oct 4 22:44:23 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * dln.c: Ruby no longer supports Windows CE.
+
+ * eval.c: ditto.
+
+ * include/ruby/defines.h: ditto.
+
+ * include/ruby/win32.h: ditto.
+
+ * ruby.c: ditto.
+
+ * strftime.c: ditto.
+
+ * win32/Makefile.sub: ditto.
+
+ * win32/win32.c: ditto.
+
+ * ext/tk/extconf.rb: ditto.
+
+ * lib/fileutils.rb: ditto.
+
+ * test/fileutils/test_fileutils.rb: ditto.
+
+ * wince/*: removed.
+
+Sat Oct 4 22:35:06 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * dln.c: Ruby no longer supports MacOS 9 or before.
+
+ * eval.c: ditto.
+
+ * eval_intern.h: ditto.
+
+ * ext/extmk.rb: ditto.
+
+ * ext/tk/sample/tkextlib/treectrl/demo.rb: ditto.
+
+ * ext/tk/stubs.c: ditto.
+
+ * file.c: ditto.
+
+ * hash.c: ditto.
+
+ * include/ruby/defines.h: ditto.
+
+ * ruby.c: ditto.
+
+ * signal.c: ditto.
+
+ * vm_core.h: ditto.
+
+Sat Oct 4 22:30:28 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * dln.c: Ruby no longer supports MS-DOS.
+
+ * ext/sdbm/_sdbm.c: ditto.
+
+ * ext/sdbm/sdbm.h: ditto.
+
+ * gc.c: ditto.
+
+ * hash.c: ditto.
+
+ * include/ruby/defines.h: ditto.
+
+ * include/ruby/util.h: ditto.
+
+ * io.c: ditto.
+
+ * process.c: ditto.
+
+ * ruby.c: ditto.
+
+ * strftime.c: ditto.
+
+ * util.c: ditto.
+
+Sat Oct 4 22:14:15 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * djgpp/GNUmakefile.in: removed. Ruby no longer supports djgpp.
+
+ * djgpp/README.djgpp: ditto.
+
+ * djgpp/config.hin: ditto.
+
+ * djgpp/config.sed: ditto.
+
+ * djgpp/configure.bat: ditto.
+
+ * djgpp/mkver.sed: ditto.
+
+ * ext/Setup.dj: ditto.
+
+ * dln.c: removed djgpp supports.
+
+ * file.c: ditto.
+
+ * gc.c: ditto.
+
+ * io.c: ditto.
+
+ * process.c: ditto.
+
+ * ruby.c: ditto.
+
+ * signal.c: ditto.
+
+ * util.c: ditto.
+
+ * vm_core.h: ditto.
+
+ * lib/fileutils.rb: ditto.
+
+ * lib/mkmf.rb: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+ * test/fileutils/test_fileutils.rb: ditto.
+
+ * test/ruby/test_env.rb: ditto.
+
+ * test/ruby/test_path.rb: ditto.
+
+Sat Oct 4 21:59:39 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * x68/_dtos18.c: removed. Ruby no longer supports human68k.
+
+ * x68/_round.c: ditto.
+
+ * x68/fconvert.c: ditto.
+
+ * x68/select.c: ditto.
+
+ * ext/Setup.x68: ditto.
+
+ * missing/x68.c: ditto.
+
+ * dln.c (dln_find_exe_r): removed human68k supports.
+ (dln_find_1): ditto.
+
+ * lib/mkmf.rb: ditto.
+
+ * ext/extmk.rb (Init_ext): ditto.
+
+ * ext/socket/socket.c (init_sock): ditto.
+
+ * gc.c (GC_MALLOC_LIMIT): ditto.
+ (rb_setjmp, rb_jmpbuf): ditto.
+ (mark_current_machine_context): ditto.
+
+ * include/ruby/defines.h (PATH_ENV): ditto.
+
+ * io.c: ditto.
+
+ * process.c: ditto.
+
+ * ruby.c: ditto.
+
+ * test/ruby/test_env.rb: ditto.
+
+ * test/ruby/test_path.rb: ditto.
+
+ * LEGAL
+
+Sat Oct 4 19:02:36 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: no need to require the "lib/rational.rb".
+
+Sat Oct 4 19:02:59 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_enc_get): don't replicate encoding.
+ [ruby-dev:36575]
+
+Sat Oct 4 18:47:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_external_encoding): defined.
+
+ * ext/stringio/stringio.c (strio_internal_encoding): defined.
+
+ * ext/stringio/stringio.c (Init_stringio): define above.
+
+Sat Oct 4 15:52:17 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/mini/test_mini_test.rb: recovered.
+ It had been temporarily removed at r19645.
+
+ * test/mini/test_mini_mock.rb: ditto.
+
+ * test/mini/test_mini_spec.rb: ditto.
+
+ * lib/test/**/*: replaced by miniunit.
+ miniunit had been temporarily reverted at r19643 but
+ now recovered.
+
+Sat Oct 4 15:33:26 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (gdb-ruby): new target. it runs ruby under controlled by
+ gdb.
+
+ * common.mk (dist): accepts RELNAME variable as the second argument of
+ make-snapshot.rb.
+
+Sat Oct 4 12:17:46 2008 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/irb/ext/save-history.rb: change load_history using File.expand_path. see [ruby-dev:36660]. Thanks Kouhei Sutou.
+ * lib/irb/irb/context.rb: convert string Symbol of instance variable names in IRB:Context#inspect.
+
+Fri Oct 3 22:43:04 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ext/dl/extconf.rb ($distcleanfiles): added callback-?.c into
+ the distclean list.
+
+Fri Oct 3 19:33:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure.rb (module JSON): remove Iconv dependency.
+
+ * ext/json/lib/json/pure/generator.rb (utf8_to_json): process as
+ binary and remove Iconv dependency.
+
+ * ext/json/lib/json/pure/parser.rb (parse_string): ditto.
+
+Fri Oct 3 14:04:05 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{configure.bat,setup.mak,Makefile.sub): add --program-prefix
+ configure option support.
+
+Thu Oct 2 21:22:43 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::QueryExtension): delete MorphingBody
+ and replace like as 1.8's in multipart reading.
+ see [ruby-dev:36443],
+ reference from CGIAlt http://cgialt.rubyforge.org/
+
+ * test/cgi/test_cgi_multipart.rb : fixed multipart test.
+
+Thu Oct 2 20:46:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_sub_bang): fix coderange.
+
+Wed Oct 1 22:54:09 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/parsers/lightparser.rb, lib/debug.rb: remove unused when
+ clauses.
+
+Wed Oct 1 22:43:59 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/xmlrpc, lib/rexml, test/ruby/test_array.rb,
+ test/ruby/test_unicode_escape.rb, test/scanf/test_scanf.rb,
+ test/rss/rss-assertions.rb: fix indentation to remove warning.
+
+Wed Oct 1 21:36:35 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): finalize deferred IO and Data.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): defers IO finalization.
+ [ruby-dev:36646]
+
+Wed Oct 1 19:11:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (marshal_dump): fixed for check_dump_arg.
+
+ * marshal.c (marshal_dump): initializes dump_arg before any funcall.
+ [ruby-dev:36648]
+
+Wed Oct 1 00:54:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_split_m): should use rb_str_subseq() which use
+ offset and length by bytes. [ruby-dev:36641]
+
+Wed Oct 1 00:29:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_settracefunc.rb (test_call, test_class): line number
+ was changed at r19592.
+
+Wed Oct 1 00:20:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (check_exec_redirect): don't depend on rb_stdout and
+ rb_stderr.
+
+Tue Sep 30 23:06:58 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/mini/test_mini_test.rb: removed.
+ Temporarily removed the tests for miniunit because of
+ they depend on the miniunit version of test/unit,
+ where test/unit was temporarily reverted to the state
+ before importing miniunit.
+
+ * test/mini/test_mini_mock.rb: ditto.
+
+ * test/mini/test_mini_spec.rb: ditto.
+
+Tue Sep 30 23:04:30 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/test/**/*: recovered.
+ Temporarily reverts the changes of lib/test/unit/* in
+ r19502 and r19501, in order to release 1.9.0-5.
+
+Tue Sep 30 23:00:05 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/test/unit.rb: removed.
+ Temporarily reverts the changes of lib/test/unit/* in
+ r19543, r19534 and r19503, in order to release 1.9.0-5.
+
+ * lib/test/unit/assertions.rb: ditto.
+
+ * lib/test/unit/deprecate.rb: ditto.
+
+ * lib/test/unit/error.rb: ditto.
+
+ * lib/test/unit/testcase.rb: ditto.
+
+Tue Sep 30 20:17:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): should honor value of the
+ textmode: and binmode: options.
+
+Tue Sep 30 17:04:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/bigdecimal/test_bigdecimal.rb (test_sqrt_bigdecimal): wrong
+ precision specification. a patch from TAKANO Mitsuhiro
+ <takano32 at jus.or.jp> in [ruby-dev:36634].
+
+Tue Sep 30 16:53:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): returns non zero. [ruby-dev:36633]
+
+Tue Sep 30 16:52:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): add %<name>s style named argument
+ support. a patch from Yusuke Endoh <mame at tsg.ne.jp>
+ in [ruby-dev:35851].
+
+ * sprintf.c (rb_str_format): add gettext style named format
+ (%{name}) support. inspired by [ruby-dev:35852].
+
+ * sprintf.c (GETNAMEARG): should raise KeyError exception when no
+ named argument found.
+
+ * hash.c (rb_hash_fetch): export fetch function.
+
+Tue Sep 30 13:19:01 2008 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/test_gem_installer.rb: remove extra call to setup to
+ fix ENV['HOME'] pollution.
+
+Tue Sep 30 13:04:11 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/mini/test.rb: Updated to 1.3.0 r4257.
+ * test/mini/*: added from r4257.
+
+Tue Sep 30 07:46:07 2008 Eric Hodel <drbrain@segment7.net>
+
+ * test/rdoc/test_rdoc_markup_attribute_manager.rb: Test with clean
+ SPECIALS.
+ * test/rubygems/gemutilities.rb: Restore ENV['HOME'] after test.
+ * test/runner.rb: Pass -n argument down to miniunit.
+
+Tue Sep 30 01:02:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (token_info_push, token_info_pop): do nothing for evaled
+ source.
+
+Tue Sep 30 00:47:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: constified.
+
+Mon Sep 29 23:32:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_subseq): don't use rb_str_drop_bytes for short
+ string.
+
+Mon Sep 29 22:54:29 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/mathn.rb: added String#to_[rc]. moved def_canon.
+
+Mon Sep 29 20:41:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_subseq): use rb_str_drop_bytes if possible.
+
+Mon Sep 29 20:22:20 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: imported additional tests and some adjustments.
+
+Mon Sep 29 20:13:05 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fev_initialize): initialization
+ handler instance variable.
+
+ * test/win32ole/test_win32ole_typelib.rb (test_s_typelibs):
+ fix the warning of shadowing outer local variable.
+
+Mon Sep 29 19:59:00 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (rescue_callback): use rb_write_error
+ instead of fprintf.
+
+Mon Sep 29 01:51:54 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rdoc/test_rdoc_info_formatting.rb (teardown): delete tmpdir for
+ test.
+
+Mon Sep 29 00:30:20 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/html.rb (CGI::HtmlExtension::{radio_group, checkbox_group}):
+ can specify the false as checked or selected value.
+ [ruby-core:18306], [ruby-core:18307]
+
+ * test/cgi/test_cgi_tag_helper.rb: add a test.
+
+Sun Sep 28 23:08:38 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/html.rb (CGI::HtmlExtension::popup_menu):
+ fix the calls #bytesize on array parameters. [ruby-core:18919]
+
+Sun Sep 28 22:44:26 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::parse): ignore illegal query params.
+ [ruby-dev:36618]
+
+Sun Sep 28 22:05:07 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_set_sequence): check duplicated when clause.
+ [ruby-dev:36616]
+
+Sun Sep 28 19:04:03 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/*.rb: imported a date test suite ruby 1.9 limited ed.
+
+Sun Sep 28 18:40:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mini/test.rb (MINI_DIR): loaded path is expanded.
+
+ * lib/mini/test.rb (assert_match): get rid of confusion of
+ ruby-mode.el.
+
+Sun Sep 28 12:36:09 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.c (vm_exec_core): add an UNLIKELY() hint.
+
+ * vm_insnhelper.h (BASIC_OP_UNREDEFINED_P): add a LIKELY() hint.
+
+Sun Sep 28 12:04:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_new): sets empty string to coderange 7bit.
+ [ruby-core:18993]
+
+Sun Sep 28 09:39:48 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/mathn.rb ({Fixnum,Bignum,Float}#**): may produce complex
+ value.
+
+Sun Sep 28 09:05:53 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv/csv.rb: Worked around some minor encoding changes in Ruby
+ pointed out by Nobu.
+
+Sun Sep 28 08:37:12 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/mathn.rb: a hack to provide canonicalization. This must be
+ temporary, but this seems to be not bad for the time being.
+
+Sat Sep 27 06:22:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (Module#rake_extension, String#ext, String#pathmap): use
+ built-in methods.
+
+ * lib/rake.rb (String#pathmap): fixed typo in rdoc.
+
+Sat Sep 27 04:28:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rmext): preceding dots are not a part of extension.
+
+ * file.c (rb_file_s_extname): ditto.
+
+Sat Sep 27 03:15:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_jump_tag_but_local_jump): exc is not used if val is nil.
+
+Sat Sep 27 03:12:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (host_str): numeric address should be unsigned.
+ [ruby-core:18971]
+
+Fri Sep 26 22:46:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary, brace_block): fix for line number.
+
+ * proc.c (rb_proc_location, rb_method_location): new methods
+ {Proc,Method,UnboundMethod}#source_location. [ruby-core:18452]
+
+Fri Sep 26 21:36:33 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (RUBY_VM_CHECK_INTS_TH): add an UNLIKELY hint.
+
+Fri Sep 26 19:33:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_str_encode): renamed from
+ rb_str_transcode. [ruby-dev:36593]
+ (rb_econv_has_convpath_p): renamed from rb_transcode_convertible.
+
+ * transcode.c: follow the renaming.
+
+ * io.c: ditto.
+
+Fri Sep 26 19:01:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/bigdecimal/test_bigdecimal.rb (test_inspect): fixed CPU bit
+ size dependent test. pointed out by TAKANO Mitsuhiro <takano32 AT
+ jus.or.jp>.
+
+Fri Sep 26 18:57:33 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/pathname/test_pathname.rb: Fix use of deprecated methods.
+
+Fri Sep 26 18:39:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (dist): nothing is needed to run BASERUBY.
+
+ * tool/make-snapshot: new option -archname.
+
+Fri Sep 26 18:24:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el: safe customizable variables.
+
+Fri Sep 26 17:37:18 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * include/ruby/ruby.h (rb_mPrecision): removed.
+ Precision module was temporarily removed at r19430.
+
+Fri Sep 26 17:25:10 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (dist): Changed its dependencies and action.
+
+Fri Sep 26 17:07:04 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * error.c (Init_syserr): moved to the template.
+ (errno_missing): removed. fixed [ruby-dev:35958].
+
+ * defs/known_errors.def: added. extracted from Init_syserr.
+
+ * templates/known_errors.inc.tmpl: added. Template for Init_syserr.
+ c.f. [ruby-dev:35958].
+
+ * tools/generic_erb.rb: added. general purpose mapper which maps
+ data+template into source code.
+
+ * common.mk (error.$(OBJEXT), incs, known_errors.inc):
+ Fixed dependencies.
+
+Fri Sep 26 17:02:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thlist_signal): clears the woken thread if nothing woke.
+
+ * thread.c (rb_barrier_wait): achieves the lock if no thread was
+ waiting yet.
+
+Fri Sep 26 12:04:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c: should include <ruby/io.h>.
+
+ * ext/io/wait/wait.c: ditto.
+
+ * ext/openssl/ossl.h: ditto.
+
+Fri Sep 26 11:34:08 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * variable.c (rb_define_hooked_variable): cast to get rid of compiler
+ warnings.
+
+Fri Sep 26 11:05:41 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * transcode.c, include/ruby/encoding.c (rb_transcode_convertible):
+ new function. checking the existence of converter.
+
+Fri Sep 26 10:35:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (global_variable, struct trace_var): made function
+ members more strict.
+
+Fri Sep 26 09:55:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby{io,sig}.h: moved to include/ruby/backward.
+
+Fri Sep 26 09:47:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/rubysig.h: old macros for backward compatibility.
+
+ * thread.c (BLOCKING_REGION): rewritten using helper functions.
+
+Fri Sep 26 03:03:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * vm_eval.c (Init_vm_eval): define module_eval, class_eval and eval
+ here for rdoc.
+
+Fri Sep 26 00:40:30 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * range.c (range_inspect): fix SEGV for cyclic range object.
+ [ruby-core:18835]
+
+Thu Sep 25 23:59:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: dependency updated.
+
+Thu Sep 25 21:46:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_eUndefinedConversionError): renamed from
+ rb_eConversionUndefinedError.
+ (rb_eConverterNotFoundError): renamed from rb_eNoConverterError.
+
+Thu Sep 25 21:23:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * pack.c (pack_pack, pack_unpack): 'm0' format (base64) complies with
+ RFC 4648. It adds no line feed when encoding, and raise ArgumentError
+ if the encoded string contains non-alphabet (including CR and LF).
+
+ * lib/base64.rb: added. This provides encoding/decoding method for
+ Base64 in standard RFC 2045, Base64 in standard RFC 4648 and ``Base 64
+ Encoding with URL and Filename SafeAlphabet'' in RFC 4648.
+
+ * test_pack.c, test/base64/test_base64.rb: add tests for above.
+
+Thu Sep 25 21:00:32 2008 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix btest-* rules [ruby-dev:36528].
+ and remove obsolete rules.
+
+Thu Sep 25 20:27:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * class.c (rb_make_metaclass): [BUG] Fixed a bus error
+ on the case for metaclass of a class which includes a
+ module.
+
+Thu Sep 25 19:34:33 2008 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/*: Update some new tests to use build_rake_in.
+ * test/rubygems/gemutilities.rb: Fix broken merge of rake detection.
+
+Thu Sep 25 19:13:12 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Update to RubyGems 1.3.0 r1891.
+
+Thu Sep 25 18:40:42 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * class.c (rb_make_metaclass): Made class of class of class
+ from Class into its own eigenclass. Now meta^(n)-class
+ hierarchy regresses infinitely, again.
+ (This feature was decided on developer-meeting-20080922.)
+
+Thu Sep 25 16:01:07 2008 Jim Weirich <jim@tardis.local>
+
+ * lib/rake.rb: Update rake source to version 0.8.3. This
+ version includes some fixes for running Rake on windows.
+ (1) better APPDATA/HOMExxx/USERPROFILE integration for
+ system rakefiles, (2) Better handling of the :ruby command
+ when installed in directory containing spaces.
+
+Thu Sep 25 11:22:51 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Update to RDoc 2.2.1 r185.
+
+Thu Sep 25 02:08:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_mode_enc): make it static.
+
+Thu Sep 25 01:22:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mini/test.rb (Mini::Assertions#assert_raise): fixed typo.
+
+Wed Sep 24 23:39:00 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * test/cgi/test_cgi_multipart.rb : revert last change.
+ ( deprecated is assert_raises. )
+ * test/cgi/test_cgi_core.rb : ditto.
+ * test/cgi/test_cgi_header.rb : ditto.
+
+Wed Sep 24 23:12:49 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::new, CGI::{accept_charset,accept_charset=}) :
+ accept parameters either in a hash,
+ string as a block. add the encoding validation process.
+ * test/cgi/test_cgi_core.rb : test for query encoding check.
+
+Wed Sep 24 22:58:18 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): raise exception when the encoding of
+ the string is dummy.
+
+ * string.c (rb_str_rstrip_bang): remove nul characters even if the
+ encoding of the string is not single byte optimizable.
+ fixed [ruby-core:18844], reported by Michael Selig.
+
+Wed Sep 24 19:01:45 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): workaround for VC++8 x64.
+
+Wed Sep 24 17:44:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (Init_Complex), rational.c (Init_Rational): undefines
+ default #allocate methods which call the allocator.
+
+Wed Sep 24 17:02:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (Init_Complex), rational.c (Init_Rational): ID_ALLOCATOR
+ differs from :allocate, and invisible in ruby level.
+
+Wed Sep 24 15:58:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): removing mixed spaces and nuls at
+ the end of strings. [ruby-dev:36497]
+
+Wed Sep 24 15:13:04 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * test/cgi/test_cgi_multipart.rb : test for miniunit.
+ * test/cgi/test_cgi_core.rb : ditto.
+ * test/cgi/test_cgi_header.rb : ditto.
+
+Wed Sep 24 14:38:29 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/tmpdir.rb: setup buffer with nul characters instead of spaces.
+ fixed [ruby-dev:36493]
+
+Wed Sep 24 11:18:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_binread): offset argument was wrongly passed to
+ internal IO#read call. [ruby-core:18810]
+
+Wed Sep 24 07:38:23 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm_core.h: ruby/ruby.h should be included at the very first
+ place in an entire compilation unit, as it includes
+ ruby/config.h
+
+Wed Sep 24 06:41:24 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/test/*: removed test/unit.
+ * lib/test/*: added miniunit.
+ * lib/mini/*: ditto.
+
+Wed Sep 24 04:45:35 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/node.h, node.h: move node.h from include path.
+ This change stop to install node.h because of saving ABI
+ (node.h will be changed. Extensions should not depends on
+ this file).
+
+ * blockinlining.c, class.c, compile.c, debug.h, enum.c,
+ gc.c, iseq.c, parse.y, ruby.c, signal.c, variable.c,
+ vm.c, vm_core.h, vm_dump.c: ditto.
+
+ * ext/ripper/depend: ditto.
+
+Wed Sep 24 04:09:13 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: remove unused frame values.
+
+Wed Sep 24 04:07:07 2008 Koichi Sasada <ko1@atdot.net>
+
+ * signal.c (signal_exec): execute rb_eval_cmd() directly.
+
+Wed Sep 24 03:08:58 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri/mailto.rb: fix indentation.
+ * lib/uri/generic.rb: ditto.
+ * lib/yaml.rb: ditto.
+ * lib/uri/cgi/core.rb: fix indentation and ambiguous argument warning.
+
+Tue Sep 23 23:39:25 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv/csv.rb: Improved the idea of whitespace and word characters used
+ in substitutions during header conversion as suggested by Michael Selig.
+
+Tue Sep 23 21:50:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_binwrite): allocate wbuf if nosync.
+
+Tue Sep 23 21:45:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_body): use io_binwrite instead of io_fwrite.
+
+Tue Sep 23 21:31:16 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_rational2.rb: updated.
+
+ * test/ruby/test_complex2.rb: added.
+
+ * test/ruby/test_complexrational.rb: added.
+
+Tue Sep 23 21:26:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_casecmp): make the ordering consistent with
+ String#<=>.
+
+Tue Sep 23 20:52:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_binwrite): add nosync argument.
+ (do_writeconv): extracted from io_fwrite.
+ (io_fwrite): add nosync argument. use do_writeconv.
+ (io_write): add nosync argument.
+ (io_write_m): new function for IO#write.
+ (rb_p): don't append record separator.
+
+Tue Sep 23 20:24:41 2008 Koichi Sasada <ko1@atdot.net>
+
+ * signal.c (signal_exec): fix to use rb_proc_call().
+
+Tue Sep 23 20:06:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/formatters/pretty.rb (REXML::Formatters::Pretty#wrap):
+ abandon wrapping if the line contains no space. [ruby-dev:36045]
+
+Tue Sep 23 19:38:03 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (subtract): check tv_sec. reported by ko1.
+
+Tue Sep 23 19:21:03 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_canonicalize_internal): does no apply
+ canonicalization rule anymore.
+
+ * rational.c (nurat_s_canonicalize_internal(_no_reduce)?): ditto.
+
+ * complex.c: removed class method new! and new.
+
+ * rational.c: ditto.
+
+Tue Sep 23 19:20:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_binread): a new method to read binary chunk from a
+ file. [ruby-core:18674]
+
+ * io.c (open_key_args): wrong permission specified for read-open.
+
+Tue Sep 23 18:24:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * hash.c (rb_obj_is_proc): declaration moved for rdoc.
+
+Tue Sep 23 18:07:55 2008 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk (io.o): remove dependency for vm_core.h.
+
+Tue Sep 23 17:56:44 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_blocking_region): fix typo in a document.
+
+Tue Sep 23 17:50:35 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_blocking_region): write a document.
+
+Tue Sep 23 17:14:31 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, include/ruby/intern.h (rb_thread_interrupted): added.
+
+ * io.c: use VALUE of thead instead of rb_tread_t to check interrupts.
+
+Tue Sep 23 17:05:14 2008 Koichi Sasada <ko1@atdot.net>
+
+ * class.c, vm_core.h: move decl of rb_iseq_clone() to class.c.
+
+Tue Sep 23 17:02:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * debug.h (ruby_set_debug_option): declared.
+
+ * main.c: include debug.h.
+
+ * common.mk (main.$(OBJEXT)): dependency updated.
+
+Tue Sep 23 16:59:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (ENVMATCH, ENVNMATCH): reduced same code.
+
+Tue Sep 23 16:55:11 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.h: fix comment and rename macro HAVE_RUBY_MVM_H to
+ HAVE_RUBY_VM_H.
+
+Tue Sep 23 16:41:31 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/node.h, vm_core.h: move definition of
+ RUBY_VM_METHOD_NODE to node.h.
+
+ * class.c, common.mk: remove useless inclusion.
+
+ * compile.h, iseq.h, vm_core.h: rename compile.h to iseq.h.
+ move some definitions from vm_core.h to iseq.h.
+
+ * compile.c, iseq.c, vm.c: ditto.
+
+ * eval.c, compile.c: move some functions for parser
+ from eval.c to compile.c.
+
+ * eval_intern.h, vm_core.h: move va_init_list() macro to
+ vm_core.h.
+
+ * iseq.c (rb_iseq_new_top, rb_iseq_first_lineno): added.
+
+ * load.c, ruby.c: use rb_iseq_new_top() instead of
+ rb_iseq_new() with ISEQ_TYPE_TOP constant directly.
+
+ * proc.c: use rb_iseq_first_lineno() instead of accessing
+ iseq structure.
+
+Tue Sep 23 16:17:54 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/ripper/eventids2.c (token_to_eventid): supper __ENCODING__
+ keyword. [ruby-dev:36478]
+
+Tue Sep 23 15:30:53 2008 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk, hash.c: remove unused inclusion.
+
+Tue Sep 23 09:52:07 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval_safe.c, safe.c: rename eval_safe.c to safe.c.
+
+ * common.mk, eval.c, safe.c, inits.c: separate safe.c from eval.c and
+ make Init_safe().
+
+Tue Sep 23 09:20:00 2008 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: clean up
+ - remove blockinlining.$(OBJEXT) to built
+ - make ENCODING_H_INCLDUES variable (include/ruby/encoding.h)
+ - make VM_CORE_H_INCLUDES variable (vm_core.h)
+ - simplify rules.
+ - make depends rule to output depend status using gcc -MM.
+
+ * include/ruby/mvm.h, include/ruby/vm.h: rename mvm.h to vm.h.
+
+ * include/ruby.h: ditto.
+
+ * load.c: add inclusion explicitly.
+
+ * enumerator.c, object.c, parse.y, thread.c, vm_dump.c:
+ remove useless inclusion.
+
+ * eval_intern.h: cleanup inclusion.
+
+ * vm_core.h: rb_thread_t should be defined in this file.
+
+ * vm_evalbody.c, vm_exec.c: rename vm_evalbody.c to vm_exec.c.
+
+ * vm.h, vm_exec.h: rename vm.h to vm_exec.h.
+
+ * insnhelper.h, vm_insnhelper.h: rename insnhelper.h to vm_insnhelper.h.
+
+ * vm.c, vm_insnhelper.c, vm_insnhelper.h:
+ - rename vm_eval() to vm_exec_core().
+ - rename vm_eval_body() to vm_exec().
+ - cleanup include order.
+
+ * vm_method.c: fix comment.
+
+Tue Sep 23 09:01:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/pathname.rb (each_filename): return Enumerator if no block
+ given.
+
+ * test/pathname/test_pathname.rb: add a test for above.
+
+Tue Sep 23 08:25:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_aset): allow nil value to remove an entry.
+ [ruby-dev:36465]
+
+ * test/ruby/test_env.rb (TestEnv#test_aset): test updated.
+
+Tue Sep 23 08:07:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-keyword-end-re): emacs21 support. a
+ patch from Hiroshi Moriyama <hiroshi at kvd.biglobe.ne.jp> in
+ [ruby-dev:36471].
+
+ * misc/ruby-mode.el (ruby-in-ppss-context-p): ditto.
+
+ * misc/ruby-mode.el (ruby-here-doc-end-syntax):
+
+Tue Sep 23 02:07:52 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline_history.rb
+ (Readline::TestHistory#test_each): checked return value.
+
+Tue Sep 23 02:05:34 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (Init_readline): used remove_history to
+ check offset of history if unsupported clear_history.
+
+Mon Sep 22 17:39:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile#open): should return a value from the
+ block (if given). [ruby-core:18394]
+
+Mon Sep 22 11:17:51 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * include/ruby/encoding.h (enum): ISO C forbids comma at end of
+ enumerator list
+
+Mon Sep 22 10:15:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * LEGAL: updated file names removed and added. [ruby-dev:36426]
+
+Mon Sep 22 02:39:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (get_default_external): add description.
+
+Sun Sep 21 21:52:41 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * math.c (math_log): should check argc.
+
+Sun Sep 21 21:20:24 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: added two macros.
+
+ * rational.c: ditto.
+
+Sun Sep 21 18:06:38 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_convert): checks argc.
+
+ * rational.c (nurat_s_convert): ditto.
+
+Sun Sep 21 10:19:04 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_canonicalize_internal): checks exactness of
+ imag only.
+
+ * rational.c (nurat_s_convert): accepts non real value
+ (Rational(a,b) as a/b).
+
+ * complex.c (nucomp_s_convert): refined.
+
+Sun Sep 21 09:37:57 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv/csv.rb: Reworked CSV's parser and generator to be m17n. Data
+ is now parsed in the Encoding it is in without need for translation.
+ * lib/csv/csv.rb: Improved inspect() messages for better IRb support.
+ * lib/csv/csv.rb: Fixed header writing bug reported by Dov Murik.
+ * lib/csv/csv.rb: Use custom separators in parsing header Strings as
+ suggested by Shmulik Regev.
+ * lib/csv/csv.rb: Added a :write_headers option for outputting headers.
+ * lib/csv/csv.rb: Handle open() calls in binary mode whenever we can to
+ workaround a Windows issue where line-ending translation can cause an
+ off-by-one error in seeking back to a non-zero starting position after
+ auto-discovery for :row_sep as suggested by Robert Battle.
+ * lib/csv/csv.rb: Improved the parser to fail faster when fed some forms
+ of invalid CSV that can be detected without reading ahead.
+ * lib/csv/csv.rb: Added a :field_size_limit option to control CSV's
+ lookahead and prevent the parser from biting off more data than
+ it can chew.
+ * lib/csv/csv.rb: Added readers for CSV attributes: col_sep(), row_sep(),
+ quote_char(), field_size_limit(), converters(), unconverted_fields?(),
+ headers(), return_headers?(), write_headers?(), header_converters(),
+ skip_blanks?(), and force_quotes?().
+ * lib/csv/csv.rb: Cleaned up code syntax to be more inline with
+ Ruby 1.9 than 1.8.
+
+Sun Sep 21 07:43:16 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: an instance method image has been removed and
+ uses "imag" instead of "image".
+
+ * complex.c: two instance method re and im are removed.
+
+ * rational.c: follows the above changes.
+
+ * include/ruby/ruby.h: ditto.
+
+ * gc.c: ditto.
+
+ * lib/cmath.rb: ditto.
+
+ * lib/mathn.rb: ditto.
+
+ * lib/complex.rb: ditto. and provides some obsolete methods.
+
+Sun Sep 21 02:48:45 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/ext/parser/parse.c: use ruby_xfree().
+
+ * ext/json/ext/parser/parse.rl: ditto.
+
+ * ext/json/ext/parser/unicode.c: ditto.
+
+Sun Sep 21 02:40:20 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: import JSON v 1.1.3.
+
+Sat Sep 20 11:43:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/optparse.rb (summarize): separator "" should output new line.
+
+Sat Sep 20 08:07:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y: strings which contain only US-ASCII don't force to have
+ US-ASCII encoding. [ruby-dev:36400]
+
+Sat Sep 20 07:59:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_desc): Regexps of ASCII Compatible encoding may
+ contain non-ASCII characters. So in that case its encoding
+ must keep original encoding.
+
+Sat Sep 20 07:44:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: prec.c is removed.
+
+Fri Sep 19 22:37:25 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: uses f_(in)?exact_p macro.
+
+ * rational.c: ditto.
+
+ * bignum.c (rb_big_pow): bignum**bignum - should calculate without
+ rational.
+
+ * lib/complex.rb: should override Math module at most once.
+
+ * lib/mathn.rb: requires 'cmath' directly.
+
+Fri Sep 19 20:48:06 2008 Yuki Sonoda <yugui@yugui.jp>
+
+ * prec.c: removed. Precision will be redesigned and be back again.
+ c.f. [ruby-dev:36352].
+
+ * common.mk (COMMON_OBJS): removed prec.o.
+
+ * inits.c (rb_call_inits): removed Init_Precision.
+
+ * numeric.c (Init_Numeric): removed inclusion of Precision.
+ removed #induced_from from each class.
+
+ * rational.c: ditto.
+
+ * ext/bigdecimal/bigdecimal.c: ditto.
+
+ * lib/rdoc/known_classes.rb: removed the entry for Precision.
+
+ * test/ruby/test_prec.rb: removed.
+
+ * test/ruby/test_integer.rb: removed tests for Precision.
+
+ * test/ruby/test_fixnum.rb: ditto.
+
+ * test/ruby/test_float.rb: ditto.
+
+ * test/ruby/test_rational.rb: ditto.
+
+ * test/ruby/test_complex.rb: ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb: ditto.
+
+Fri Sep 19 19:43:40 2008 Yuki Sonoda <yugui@yugui.jp>
+
+ * common.mk : Reverts the changeset 18994.
+ Uses the official repository of rubyspec again.
+
+Fri Sep 19 17:41:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: applied OS/2 support patch from Brendan Oakley
+ <gentux2 at gmail.com> in [ruby-core:18707].
+
+Fri Sep 19 09:29:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dln.c: newer BeOS support. a patch from Pete Goodeve
+ <pete.goodeve at computer.org> in [ruby-core:18712].
+
+Fri Sep 19 03:41:25 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: fix memory violation. mentioned by mame [ruby-dev:36373]
+
+Fri Sep 19 01:07:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * regexec.c (string_cmp_ic): add text_end argument.
+ (slow_search): call enclen with real string end.
+ (map_search): add text_end argument.
+
+Thu Sep 18 22:54:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_key_to_string): comment out
+ fragments of unused code.
+
+Thu Sep 18 22:35:03 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpCtoV): 1E1000...000 is interpreted as
+ Infinity. [ruby-dev:36159]
+
+ * ext/bigdecimal/bigdecimal.c (VpPower): Infinity ** 1 returns
+ Infinity instead of NaN. [ruby-dev:36159]
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests for above.
+
+Thu Sep 18 22:20:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (Init_Exception): introduce EncodingError which is a
+ superclass for all encoding related exception classes,
+ e.g. Encoding::CompatibilityError. [ruby-dev:36371]
+
+ * transcode.c (Init_transcode): ditto.
+
+Thu Sep 18 21:57:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): make ascii8bit string to be
+ compatible with any other encoding.
+
+ * string.c (rb_str_cmp): use rb_str_comparable() instead of
+ rb_enc_compatible() since <=> is a comparison anyway.
+
+Thu Sep 18 21:37:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * grapheme cluster implementation reverted. [ruby-dev:36375]
+
+Thu Sep 18 20:50:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (Rake::Application#standard_exception_handling):
+ replaced magic numbers for exit status.
+
+Thu Sep 18 20:37:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::ParseError#set_backtrace): omits
+ OptionParser internal backtraces unless debug flag is set.
+
+Thu Sep 18 20:02:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/uri/common.rb (unescape): skip '%' to make String#hex work
+ correctly.
+
+Thu Sep 18 19:51:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (big2str_karatsuba): free internal buffer eagerly.
+ a patch from TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com>
+ in [ruby-dev:36217].
+
+ * bignum.c (rb_big2str0): ditto.
+
+Thu Sep 18 19:43:04 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * st.c (new_size): raise RuntimeError when st_table is too big.
+ [ruby-dev:36354]
+
+Thu Sep 18 18:23:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (enc_arg): must take pointer argument to avoid GC
+ problem. StringValueCStr modifies the argument and it should be
+ preserved while the string StringValueCStr returns is used.
+ Since the string is used by caller, the modified argument should be
+ hold by caller. Actually
+ GC.stress = true
+ def (o=Object.new).to_str()
+ "universal"+"_newline"
+ end
+ "\u3042".encode(o, "")
+ causes curious warning:
+ rb_define_const: invalid name `' for constant
+
+Thu Sep 18 17:32:44 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c: add "Error" suffix for Encoding exception classes.
+ a patch from Tadashi Saito <shiba at mail2.accsnet.ne.jp> in
+ [ruby-dev:36346].
+
+ * encoding.c (Init_Encoding): rename EncodingCompatibilityError to
+ Encoding::CompatibilityError. [ruby-dev:36366]
+
+Thu Sep 18 17:18:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c (enc_arg): revert last change. too early exception
+ raising.
+
+ * transcode.c (enc_arg): need not to take pointer argument.
+
+Sun Sep 18 02:22:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests to achieve over 90%
+ test coverage of bigdecimal.
+
+Wed Sep 17 21:50:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_casecmp): don't use rb_enc_codepoint.
+
+Wed Sep 17 19:55:33 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_convert): accepts complex
+ value (Complex(a,b) as a+bi).
+
+Wed Sep 17 19:16:47 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_io.rb (TestIO#test_dup): avoid infinite loop.
+ [ruby-dev:36326]
+
+ * test/ruby/test_io.rb (TestIO#test_dup): remove needless open.
+ [ruby-dev:35957]
+
+Wed Sep 17 17:44:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): process option mode: and perm: as
+ well.
+
+ * io.c (open_key_args): move mode: and perm: related code to
+ rb_io_extract_modeenc().
+
+Wed Sep 17 13:42:59 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/html.rb (checkbox_group,radio_group): bug fix
+ use size instead of bytesize.
+
+ * test/cgi/test_cgi_tag_helper.rb: test for checkbox_group,radio_group.
+
+Wed Sep 17 06:58:31 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: provides predicate real? instead of scalar?.
+
+ * complex.c: follows the above change.
+
+ * lib/cmath.rb: ditto.
+
+Wed Sep 17 01:56:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io_m17n.rb: use __FILE__ instead of /dev/null.
+ [ruby-dev:36327]
+
+Wed Sep 17 01:33:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): add precise_ret
+ argument for mbc_to_code.
+ (ONIGENC_MBC_TO_CODE): provide NULL for precise_ret.
+ (ONIGENC_MBC_PRECISE_CODEPOINT): defined.
+
+ * include/ruby/encoding.h (rb_enc_mbc_precise_codepoint): defined.
+
+ * regenc.h (onigenc_single_byte_mbc_to_code): precise_ret argument
+ added.
+ (onigenc_mbn_mbc_to_code): ditto.
+
+ * regenc.c (onigenc_single_byte_mbc_to_code): precise_ret argument
+ added.
+ (onigenc_mbn_mbc_to_code): ditto.
+
+ * string.c (count_utf8_lead_bytes_with_word): removed.
+ (str_utf8_nth): removed.
+ (str_utf8_offset): removed.
+ (str_strlen): UTF-8 codepoint oriented optimization removed.
+ (rb_str_substr): ditto.
+ (enc_succ_char): use rb_enc_mbc_precise_codepoint.
+ (enc_pred_char): ditto.
+ (rb_str_succ): ditto.
+
+ * encoding.c (rb_enc_ascget): check length with
+ rb_enc_mbc_precise_codepoint.
+ (rb_enc_codepoint): use rb_enc_mbc_precise_codepoint.
+
+ * regexec.c (string_cmp_ic): add text_end argument.
+ (match_at): check end of character after exact string matches.
+
+ * enc/utf_8.c (grapheme_table): defined for extended grapheme cluster
+ boundary.
+ (grapheme_cmp): defined.
+ (get_grapheme_properties): defined.
+ (grapheme_boundary_p): defined.
+ (MAX_BYTES_LENGTH): defined.
+ (comb_char_enc_len): defined.
+ (mbc_to_code0): extracted from mbc_to_code.
+ (mbc_to_code): use mbc_to_code0.
+ (left_adjust_combchar_head): defined.
+ (utf_8): use a extended grapheme cluster as a unit.
+
+ * enc/unicode.c (onigenc_unicode_mbc_case_fold): use
+ ONIGENC_MBC_PRECISE_CODEPOINT to extract codepoints.
+ (onigenc_unicode_get_case_fold_codes_by_str): ditto.
+
+ * enc/euc_jp.c (mbc_to_code): follow mbc_to_code field change.
+ use onigenc_mbn_mbc_to_code.
+
+ * enc/shift_jis.c (mbc_to_code): ditto.
+
+ * enc/emacs_mule.c (mbc_to_code): ditto.
+
+ * enc/gbk.c (gbk_mbc_to_code): follow mbc_to_code field and
+ onigenc_mbn_mbc_to_code change.
+
+ * enc/cp949.c (cp949_mbc_to_code): ditto.
+
+ * enc/big5.c (big5_mbc_to_code): ditto.
+
+ * enc/euc_tw.c (euctw_mbc_to_code): ditto.
+
+ * enc/euc_kr.c (euckr_mbc_to_code): ditto.
+
+ * enc/gb18030.c (gb18030_mbc_to_code): ditto.
+
+ * enc/utf_32be.c (utf32be_mbc_to_code): follow mbc_to_code field
+ change.
+
+ * enc/utf_16be.c (utf16be_mbc_to_code): ditto.
+
+ * enc/utf_32le.c (utf32le_mbc_to_code): ditto.
+
+ * enc/utf_16le.c (utf16le_mbc_to_code): ditto.
+
+Wed Sep 17 01:17:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (enc_arg): raise exception when unknown encoding is
+ given.
+
+Tue Sep 16 22:23:24 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI#header): performance improvement.
+ From CGIAlt http://cgialt.rubyforge.org/
+
+ * test/cgi/test_cgi_header.rb: exception class fixed.
+
+Tue Sep 16 22:21:33 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_concat): fix rdoc. (codepoint is integer)
+
+ * string.c (rb_str_each_codepoint): use UINT2NUM.
+
+Tue Sep 16 21:48:55 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_desc): Regexp#inspect should be US-ASCII.
+
+Tue Sep 16 21:33:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_crypt): orthodox crypt() sees only first two bytes
+ of salt.
+
+Tue Sep 16 19:18:40 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_marshal_{dump,load}): preserve instance
+ variables.
+
+ * rational.c (nurat_marshal_{dump,load}): ditto.
+
+Tue Sep 16 18:28:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_gets_m): rdoc updated. limit counts in bytes.
+ [ruby-core:18617]
+
+ * io.c (rb_io_readlines, rb_f_gets): ditto.
+
+ * io.c (rb_io_readbyte): rdoc updated. [ruby-core:18617]
+
+Tue Sep 16 11:55:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_codepoint): add new methods, #codepoints
+ and #each_codepoint. a patch from Michael Selig
+ <michael.selig at fs.com.au> in [ruby-core:18532].
+
+Tue Sep 16 11:24:44 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: add new constants. a patch from
+ IWAMURO Motonori <deenheart+ruby at gmail.com> in [ruby-dev:36309].
+
+Tue Sep 16 09:20:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_dup): exception should be
+ raised from IO#dup.
+
+Tue Sep 16 08:35:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_dup): this test might fail if
+ there are any garbage IO objects.
+
+Tue Sep 16 02:02:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_buf_cat_ascii): codepoint is unsigned int.
+
+ * string.c (rb_str_concat): ditto.
+
+ * string.c (str_cat_char): ditto.
+
+ * string.c (prefix_escape): ditto.
+
+Tue Sep 16 01:47:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (single_byte_optimizable): make function inline. based
+ on a patch from Michael Selig <michael.selig at fs.com.au> in
+ [ruby-core:18532].
+
+ * string.c (str_modify_keep_cr): new function act as
+ rb_str_modify(), but don't clear coderange
+
+ * string.c (rb_str_casecmp): specialized for single byte strings.
+
+ * string.c (rb_str_splice): preserve coderange.
+
+ * string.c (rb_str_slice_bang, rb_str_reverse_bang,
+ rb_str_upcase_bang, rb_str_downcase_bang, tr_trans,
+ rb_str_capitalize_bang, rb_str_swapcase_bang,
+ rb_str_delete_bang, rb_str_chop_bang, rb_str_chomp_bang,
+ rb_str_lstrip_bang, rb_str_rstrip_bang): ditto.
+
+ * string.c (rb_str_clear): preset coderange.
+
+ * string.c (rb_str_split_m): specialized for splitting with a
+ string.
+
+Tue Sep 16 00:57:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_quote): use rb_enc_mbcput to generate ASCII
+ incompatible characters properly.
+
+Tue Sep 16 00:51:59 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (Encoding#base_encoding): removed. [ruby-dev:36270]
+
+Tue Sep 16 00:40:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (STR1_LENGTH): defined.
+ (makeSTR1LEN): defined.
+
+ * tool/transcode-tblgen.rb: use makeSTR1LEN. generate STR1 for 4 to
+ 259 bytes.
+
+ * transcode.c (rb_transcoding): new field: output_index.
+ (transcode_restartable0): use STR1_LENGTH.
+
+Mon Sep 15 23:52:45 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, include/ruby/ruby.h: rename rb_register_mark_object()
+ to rb_gc_register_mark_object().
+
+ * eval.c, vm.c: initialize vm->mark_object_ary at
+ Init_top_self().
+
+ * bignum.c, complex.c, encoding.c, ext/win32ole/win32ole.c,
+ io.c, load.c, marshal.c, rational.c, ruby.c, vm.c:
+ use rb_gc_register_mark_object() instead of
+ rb_global_variable() or rb_gc_register_address().
+
+Mon Sep 15 23:37:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_opts): don't use to_sym.
+
+Mon Sep 15 23:28:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_get_index): don't return -1.
+
+ * io.c (rb_scan_open_args): call FilePathValue before encoding
+ conversion.
+
+Mon Sep 15 22:11:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_squeeze_bang): specialized for 7bit characters in
+ ASCII compatible strings.
+
+ * string.c (rb_str_count): ditto.
+
+ * string.c (tr_trans): preserve 7bit/valid coderange flag.
+
+ * string.c (rb_str_squeeze_bang): preserve previous coderange value.
+
+ * string.c (rb_str_lstrip_bang): ditto.
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+ * encoding.c (rb_default_external_encoding): preserve
+ default_external_encoding in a static variable.
+
+ * string.c (single_byte_optimizable): check coderange first, to
+ reduce number of calling rb_enc_from_index().
+
+Mon Sep 15 20:57:00 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/matrix.rb (Matrix#eql?): fixed [ruby-dev:36298].
+ Reported by an anonymous user.
+
+ * lib/matrix.rb (Vector#eql?): ditto.
+
+ * (Matrix#compare_by_row_vectors): takes comparison
+ strategy as an optional parameter.
+
+ * (Vector#compare_by): ditto.
+
+Mon Sep 15 14:34:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (RUBY_MAX_CHAR_LEN): defined.
+
+ * encoding.c (str_cat_char): use RUBY_MAX_CHAR_LEN.
+
+Mon Sep 15 13:53:33 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): accept other than strings and
+ regexps. [ruby-core:18595]
+
+ * encoding.c (rb_enc_get_index): works files and encodings.
+
+Mon Sep 15 13:17:21 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_eql_p): new.
+
+ * complex.c (nucomp_hash): should use hash values of the elements.
+
+ * rational.c (nurat_hash): ditto.
+
+ * hash.c (rb_any_cmp): removed an unused variable.
+
+Mon Sep 15 11:11:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): resetsize_func and resetstate_func
+ also returns ssize_t.
+
+ * enc/trans/iso2022.trans: follow the type change.
+
+Mon Sep 15 10:28:10 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * test/matrix/test_matrix.rb (setup): typo.
+ (test_equality): misdefinition of the expected working.
+ Reported by an anonymous user.
+ (test_hash): added.
+
+ * test/matrix/test_vector.rb: ditto.
+
+Mon Sep 15 03:33:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h: return output functions ssize_t.
+
+ * transcode.c (transcode_restartable0): don't need to cast the result
+ of output functions.
+
+ * enc/trans/newline.trans: follow the type change.
+
+ * enc/trans/escape.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/japanese.trans: ditto.
+
+Mon Sep 15 03:04:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h: output function takes output buffer size.
+
+ * transcode.c: give output buffer size for output functions.
+
+ * enc/trans/newline.trans: follow the type change.
+
+ * enc/trans/escape.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/japanese.trans: ditto.
+
+Mon Sep 15 02:37:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_encode): returns duplicated string if nothing
+ changed. [ruby-core:18578]
+
+Sun Sep 14 22:09:01 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb (CGI::parse): performance improvement
+
+Sun Sep 14 18:33:32 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: trivial changes.
+
+Sun Sep 14 16:15:22 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/matrix.rb (Vector#eql?): typo of the method name as "eqn?".
+ (Vector#eqn?): removed. Defined by mistake.
+ Fixes [ruby-dev:36294]. Reported by weda <weda AT
+ issp.u-tokyo.ac.jp> and an anonymous user.
+
+ * test/matrix/test_matrix.rb: added.
+
+ * test/matrix/test_vector.rb: added.
+
+Sun Sep 14 16:07:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): associates the locale encoding with $0 as
+ well as ARGV.
+
+Sun Sep 14 13:48:03 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * object.c (Init_Object): added metameta-class initialization for
+ BasicObject, Object, and Module.
+ The metameta-classes of them are now the metaclass of Class, as the
+ metameta-class of Class is.
+
+ * object.c (boot_defmetametaclass): added.
+
+Sun Sep 14 10:10:43 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (f_{add,mul,sub}): omitted some shortcuts for preserving
+ signed zero anyway.
+
+ * complex.c (nucomp_negate): new.
+
+Sun Sep 14 04:15:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): add end argument for
+ left_adjust_char_head.
+ (ONIGENC_LEFT_ADJUST_CHAR_HEAD): add end argument.
+ (onigenc_get_left_adjust_char_head): ditto.
+
+ * include/ruby/encoding.h (rb_enc_left_char_head): add end argument.
+
+ * regenc.h (onigenc_single_byte_left_adjust_char_head): ditto.
+
+ * regenc.c (onigenc_get_right_adjust_char_head): follow the interface
+ change.
+ (onigenc_get_right_adjust_char_head_with_prev): ditto.
+ (onigenc_get_prev_char_head): ditto.
+ (onigenc_step_back): ditto.
+ (onigenc_get_left_adjust_char_head): ditto.
+ (onigenc_single_byte_code_to_mbc): ditto.
+
+ * re.c: ditto.
+
+ * string.c: ditto.
+
+ * io.c: ditto.
+
+ * regexec.c: ditto.
+
+ * enc/euc_jp.c: ditto.
+
+ * enc/cp949.c: ditto.
+
+ * enc/shift_jis.c: ditto.
+
+ * enc/gbk.c: ditto.
+
+ * enc/big5.c: ditto.
+
+ * enc/euc_tw.c: ditto.
+
+ * enc/euc_kr.c: ditto.
+
+ * enc/emacs_mule.c: ditto.
+
+ * enc/gb18030.c: ditto.
+
+ * enc/utf_8.c: ditto.
+
+ * enc/utf_16le.c: ditto.
+
+ * enc/utf_16be.c: ditto.
+
+ * enc/utf_32le.c: ditto.
+
+ * enc/utf_32be.c: ditto.
+
+Sun Sep 14 03:43:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (ONIGENC_STEP_BACK): add end argument.
+ (onigenc_step_back): ditto.
+
+ * regenc.c (onigenc_step_back): add end argument.
+
+ * regexec.c: follow the interface change.
+
+Sun Sep 14 03:20:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (onigenc_get_prev_char_head): add end
+ argument.
+
+ * include/ruby/encoding.h (rb_enc_prev_char): ditto.
+
+ * regenc.c (onigenc_get_prev_char_head): add end argument.
+
+ * regparse.c: follow the interface change.
+
+ * regexec.c: ditto.
+
+ * string.c: ditto.
+
+ * parse.y: ditto.
+
+Sun Sep 14 02:04:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h
+ (onigenc_get_right_adjust_char_head_with_prev): add end argument.
+
+ * regenc.c (onigenc_get_right_adjust_char_head_with_prev): use end
+ argument.
+
+ * regexec.c (forward_search_range): follow the interface change.
+
+Sun Sep 14 01:38:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (onigenc_get_right_adjust_char_head): add
+ end argument.
+
+ * include/ruby/encoding.h (rb_enc_right_char_head): add end argument.
+
+ * regenc.c (onigenc_get_right_adjust_char_head): use end argument.
+
+ * re.c (rb_reg_adjust_startpos): follow the interface change.
+
+ * string.c (rb_str_index): ditto.
+
+ * regexec.c (backward_search_range): ditto.
+ (onig_search): ditto.
+
+Sun Sep 14 00:43:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/ripper/depend (ripper.o): it depends on ruby headers.
+
+Sat Sep 13 19:27:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_encoding_set): don't need argc argument.
+ (rb_io_s_pipe): update io_encoding_set call.
+ (rb_io_set_encoding): ditto.
+
+Sat Sep 13 18:46:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_transcoding): align state field.
+
+Sat Sep 13 18:21:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (DECORATOR_P): renamed from SUPPLEMENTAL_CONVERSION.
+
+Sat Sep 13 18:05:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): use rb_enc_name.
+ (make_readconv): ditto.
+
+ * transcode.c (rb_econv_open_opts): ditto.
+ (econv_args): ditto.
+ (decorate_convpath): ditto.
+ (econv_set_replacement): ditto.
+
+Sat Sep 13 11:15:38 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/rexml/document.rb: fixed typo.
+
+Sat Sep 13 10:53:13 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: refined.
+
+ * rational.c: ditto.
+
+Sat Sep 13 03:44:52 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_prepare_opts): raise ArgumentError if
+ a broken string is specified as a replacement.
+
+Sat Sep 13 03:31:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * iseq.c (iseq_s_compile_file): use rb_file_open_str.
+
+ * io.c (rb_file_open_generic): call validate_enc_binmode.
+ (rb_file_open_str): call FilePathValue.
+
+Sat Sep 13 02:58:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (validate_enc_binmode): extracted from rb_io_extract_modeenc.
+ (rb_io_extract_modeenc): use validate_enc_binmode.
+ (io_encoding_set): call validate_enc_binmode.
+
+Sat Sep 13 02:50:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_prepare_opts): initialize *opt and return 0
+ if opthash is nil.
+
+Sat Sep 13 02:29:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans: transcoder name renamed to use underscore.
+
+ * transcode.c: follow the renaming.
+
+Sat Sep 13 02:12:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_init_by_convpath_i): new function.
+ (rb_econv_init_by_convpath): new function.
+ (econv_init): use rb_econv_init_by_convpath.
+
+Sat Sep 13 01:11:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_args): take snamev_p and dnamev_p to prevent
+ possible GC problem.
+
+Sat Sep 13 00:38:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (enc_arg): take arg as VALUE * to prevent possible GC
+ problem.
+
+Fri Sep 12 23:19:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_add_transcoder_at): fix loop condition.
+
+Fri Sep 12 22:39:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (decorator_names): extracted from rb_econv_open.
+ (rb_econv_open): use decorator_names.
+ (econv_args): extracted from econv_init.
+ (econv_init): use econv_args.
+ (decorate_convpath): new function.
+ (search_convpath_i): new function.
+ (econv_s_search_convpath): new method.
+ (Init_transcode): new method defined.
+
+Fri Sep 12 21:55:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_t): new field: num_allocated.
+ (rb_econv_alloc): extracted from
+ rb_econv_open_by_transcoder_entries.
+ (rb_econv_add_transcoder_at): extracted from rb_econv_decorate_at
+ and generalized
+ (rb_econv_open_by_transcoder_entries): use rb_econv_alloc and
+ rb_econv_add_transcoder_at.
+ (rb_econv_add_converter): extracted from rb_econv_decorate_at.
+ (rb_econv_decorate_at): use rb_econv_add_converter.
+
+Fri Sep 12 21:22:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_t): new field: started.
+ (rb_econv_open_by_transcoder_entries): initialize started field.
+ (rb_econv_convert): set started field.
+ (rb_econv_insert_output): ditto.
+ (rb_econv_decorate_at): check started field instead of num_finished.
+
+Fri Sep 12 20:28:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * regenc.c (onigenc_single_byte_code_to_mbc): follow OnigEncoding
+ change.
+
+Fri Sep 12 20:00:22 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regparse.c (parse_exp): fix resource leak.
+
+Fri Sep 12 01:21:22 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/syck/node.c (syck_replace_str2): fix wrong check to free ptr.
+
+Thu Sep 11 20:18:24 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_err_in_callback.rb (teardown): get rid
+ of infinite loop.
+
+Thu Sep 11 19:12:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (OnigCodePoint): unsigned long to unsigned int.
+
+ * include/ruby/encoding.h (rb_enc_codepoint): ditto.
+
+ * encoding.c (rb_enc_codepoint): signed int to unsigned int.
+
+ * encoding.c (rb_enc_ascget): ditto.
+
+ * string.c (rb_str_casecmp): ditto.
+
+ * string.c (enc_succ_alnum_char): ditto.
+
+ * string.c (rb_str_inspect): ditto.
+
+ * string.c (rb_str_upcase_bang): ditto.
+
+ * string.c (rb_str_downcase_bang): ditto.
+
+ * string.c (rb_str_capitalize_bang): ditto.
+
+ * string.c (rb_str_swapcase_bang): ditto.
+
+ * string.c (struct tr): ditto.
+
+ * string.c (trnext): ditto.
+
+ * string.c (tr_trans): ditto.
+
+ * string.c (tr_setup_table): ditto.
+
+ * string.c (tr_find): ditto.
+
+ * string.c (rb_str_delete_bang): ditto.
+
+ * string.c (rb_str_squeeze_bang): ditto.
+
+ * string.c (rb_str_count): ditto.
+
+ * string.c (rb_str_split_m): ditto.
+
+ * string.c (rb_str_each_line): ditto.
+
+ * string.c (rb_str_lstrip_bang): ditto.
+
+ * string.c (rb_str_rstrip_bang): ditto.
+
+ * string.c (rb_str_intern): ditto.
+
+ * dir.c (char_casecmp): ditto.
+
+ * sprintf.c (rb_str_format): ditto.
+
+ * enc/emacs_mule.c (mbc_to_code): to be 32bit clean.
+
+ * enc/emacs_mule.c (code_to_mbc): ditto.
+
+ * enc/gb18030.c (mbc_to_code): ditto.
+
+ * enc/gb18030.c (code_to_mbc): ditto.
+
+Thu Sep 11 19:09:25 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/iconv/iconv.c: add attention for machine independent.
+
+Thu Sep 11 15:23:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivrem): adjust length for division and remainder.
+ a patch from TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com> in
+ [ruby-dev:36231].
+
+Thu Sep 11 02:59:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_binwrite): extracted from io_fwrite.
+
+Thu Sep 11 02:25:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_encoding): new function.
+ (make_encobj): new function.
+ (econv_s_asciicompat_encoding): use make_encoding.
+ (rb_econv_open_exc): use SUPPLEMENTAL_CONVERSION.
+ (econv_convpath): use encoding object in the result.
+
+Thu Sep 11 02:14:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_convpath): new method.
+
+Wed Sep 10 23:00:43 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * tool/compile_prelude.rb: print "<internal:prelude>" instead of
+ "prelude.rb" on stack trace. [ruby-dev:36129]
+
+Wed Sep 10 21:19:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (big2str_karatsuba): remove unnecessary fixnum code. a
+ patch from TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com> in
+ [ruby-dev:36217].
+
+Wed Sep 10 21:09:32 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_err_in_callback.rb: InternetExplorer should
+ be closed.
+
+ * test/win32ole/err_in_callback.rb: ditto.
+
+Wed Sep 10 18:25:19 2008 akira yamada <akira@rice.p.arika.org>
+
+ * lib/uri/common.rb (URI::Parser): new class.
+
+ * lib/uri/mailto.rb, lib/uri/generic.rb: follow the above change.
+
+ * test/uri/test_parser.rb: added tests for URI::Parser.
+
+Wed Sep 10 10:35:32 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi/cookie.rb (CGI::Cookie#to_s): performance improvement
+ from http://jp.rubyist.net/magazine/?0023-Cgirb.
+
+Wed Sep 10 10:12:29 2008 akira yamada <akira@arika.org>
+
+ * lib/sync.rb (Sync_m#sync_exclusive): fixed
+ typo. [ruby-dev:36233] [RubyForge#11680]
+
+Wed Sep 10 01:57:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (StrSet#hash): cache hash value.
+ (ActionMap#hash): ditto.
+
+Wed Sep 10 01:26:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (econv_after_output): renamed from
+ econv_output_followed_by_input.
+ (ECONV_AFTER_OUTPUT): renamed from ECONV_OUTPUT_FOLLOWED_BY_INPUT.
+
+ * transcode.c: follow the renaming.
+
+ * io.c: ditto.
+
+Wed Sep 10 01:16:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (get_replacement_character): don't return ASCII
+ incompatible replacements.
+ (make_replacement): don't convert the result of
+ get_replacement_character.
+
+Wed Sep 10 01:05:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans (rb_universal_newline): swap src_encoding
+ and dst_encoding.
+
+ * transcode.c (rb_econv_decorate_at): call get_transcoder_entry only
+ once.
+ (rb_econv_binmode): follow universal_newline change.
+
+Wed Sep 10 00:01:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): rename field: writeconv_stateless to
+ writeconv_asciicompat.
+
+ * io.c: follow the renaming.
+
+ * gc.c: ditto.
+
+Tue Sep 9 23:55:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fwrite): raise an error if ASCII incompatible string
+ written for text mode IO without encoding conversion.
+ (rb_io_extract_modeenc): binmode requirement changed.
+
+Tue Sep 9 21:59:48 2008 Takeyuki Fujioka <xibbar@ruby-lang.org>
+
+ * lib/cgi*: split cgi.rb into four files. [ruby-dev:36041]
+
+Tue Sep 9 21:17:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_DECORATOR_MASK): merge
+ ECONV_ENCODER_MASK and ECONV_DECORATOR_MASK.
+ (ECONV_UNIVERSAL_NEWLINE_DECORATOR): renamed from
+ ECONV_UNIVERSAL_NEWLINE_DECODER.
+ (ECONV_CRLF_NEWLINE_DECORATOR): renamed from
+ ECONV_CRLF_NEWLINE_ENCODER.
+ (ECONV_CR_NEWLINE_DECORATOR): renamed from ECONV_CR_NEWLINE_ENCODER.
+ (ECONV_XML_TEXT_DECORATOR): renamed from ECONV_XML_TEXT_ENCODER.
+ (ECONV_XML_ATTR_CONTENT_DECORATOR): renamed from
+ ECONV_XML_ATTR_CONTENT_ENCODER.
+ (ECONV_STATEFUL_DECORATOR_MASK): renamed from
+ ECONV_STATEFUL_ENCODER_MASK.
+ (ECONV_XML_ATTR_QUOTE_DECORATOR): renamed from
+ ECONV_XML_ATTR_CONTENT_DECORATOR.
+
+ * io.c: follow the renaming.
+
+ * transcode.c: ditto.
+
+Tue Sep 9 20:55:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open0): make it static.
+ (rb_econv_open): place decorators at last.
+
+Tue Sep 9 20:40:15 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/openssl/test_ssl.rb (OpenSSL#test_client_session):
+ Debian's openssl 0.9.8g-13 failed at assert(ssl.session_reused?),
+ when use default SSLContext. [ruby-dev:36167]
+
+Tue Sep 9 20:34:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_t): last_trans_index removed.
+ (rb_econv_open_by_transcoder_entries): follow the type change.
+ (rb_econv_open0): ditto.
+ (rb_econv_decorate_at): ditto.
+ (rb_econv_binmode): ditto.
+ (rb_econv_insert_output): simplified because there are no decorators
+ at last.
+
+Tue Sep 9 20:21:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): reverse the order of decoders.
+
+Tue Sep 9 20:18:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open0): num_encoders and num_decoders removed.
+
+Tue Sep 9 03:59:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): useless branch removed.
+
+Tue Sep 9 02:18:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_decorate_at_first): declared.
+ (rb_econv_decorate_at_last): declared.
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): initialize
+ replacement_enc. allocate outbuf for the last transcoder.
+ (rb_econv_open0): extracted from rb_econv_open.
+ (rb_econv_open): use rb_econv_open0 and decorate the result using
+ rb_econv_decorate_at_first and rb_econv_decorate_at_last.
+ (rb_econv_decorate_at): new function.
+ (rb_econv_decorate_at_first): ditto.
+ (rb_econv_decorate_at_last): ditto.
+ (rb_econv_binmode): fix iteration end condition.
+ (econv_init): don't set source_encoding_name and
+ destination_encoding_name because they are set in rb_econv_open0.
+
+Tue Sep 9 01:10:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): make ec a local variable.
+
+Tue Sep 9 00:20:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_asciicompat_encoding): check decoder.
+
+Tue Sep 9 00:00:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_t): last_error.partial_input removed.
+
+Mon Sep 8 23:24:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_asciicompat_encoding): renamed
+ from rb_econv_stateless_encoding to apply stateless ASCII
+ incompatible encodings such as UTF-16BE.
+
+ * io.c (make_writeconv): use rb_econv_asciicompat_encoding.
+
+ * transcode_data.h (rb_transcoder_asciicompat_type_t): renamed from
+ rb_transcoder_stateful_type_t.
+ (rb_transcoder): use rb_transcoder_asciicompat_type_t.
+
+ * transcode.c: follow the type change.
+ (asciicompat_encoding_i): renamed from stateless_encoding_i.
+ (rb_econv_asciicompat_encoding): renamed from
+ rb_econv_stateless_encoding.
+ (econv_s_asciicompat_encoding): method renamed.
+
+ * tool/transcode-tblgen.rb: follow the type change.
+
+ * enc/trans/utf_16_32.trans: follow the type change.
+ rb_from_UTF_16BE to UTF-8 is asciicompat_decoder.
+ rb_from_UTF_16LE to UTF-8 is asciicompat_decoder.
+ rb_from_UTF_32BE to UTF-8 is asciicompat_decoder.
+ rb_from_UTF_32LE to UTF-8 is asciicompat_decoder.
+ UTF-8 to rb_to_UTF_16BE is asciicompat_encoder.
+ UTF-8 to rb_to_UTF_16LE is asciicompat_encoder.
+ UTF-8 to rb_to_UTF_32BE is asciicompat_encoder.
+ UTF-8 to rb_to_UTF_32LE is asciicompat_encoder.
+
+ * enc/trans/newline.trans: follow the type change. universal newline
+ decoder is asciicompat_converter.
+
+ * enc/trans/escape.trans: follow the type change.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/japanese.trans: ditto.
+
+Mon Sep 8 23:05:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_insert_output): "readagain" part should be
+ after replacement.
+
+Mon Sep 8 22:30:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (dir_initialize): rename option name of Dir.open
+ from :external_encoding to :encoding.
+
+Mon Sep 8 22:16:20 2008 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi.rb : obsolete regex "n" option. [ruby-dev:36130]
+
+Mon Sep 8 18:13:20 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (getppid): typo. [ruby-dev:36202]
+
+ * process.c (get_ppid): mention the return value on Windows.
+
+Mon Sep 8 18:15:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ArrayCode): less string substitutions.
+
+Mon Sep 8 18:13:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * vm.c (rb_mRubyVMFrozenCore): registered for GC.
+
+ * re.c (rb_reg_preprocess_dregexp): fix GC problem on MacOS X with
+ powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc.
+ build 5367).
+
+Mon Sep 8 18:09:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): define SIZE_MAX for VC++6/7.
+
+Mon Sep 8 17:46:09 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (filetime_to_unixtime): remove unused variable.
+ [ruby-dev:36191]
+
+Mon Sep 8 13:47:39 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_io.rb (TestIO#test_dup): add open in block.
+ see [ruby-dev:35957].
+
+Mon Sep 8 07:09:42 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: some adjustments.
+
+ * rational.c: ditto.
+
+Mon Sep 8 06:50:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (XLDFLAGS): added --enable-auto-import for cygwin and
+ mingw.
+
+Mon Sep 8 02:04:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_set_replacement): renamed from
+ rb_econv_set_replacemenet.
+
+ * transcode.c: follow the renaming.
+
+Mon Sep 8 01:10:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (transcode_tblgen): log message refined.
+
+Mon Sep 8 00:58:04 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: removed unused code.
+
+Mon Sep 8 00:04:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/iso2022.trans: upcase to iso-2022-jp.
+
+ * enc/emacs_mule.c: ditto.
+
+Sun Sep 7 23:46:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/iso2022.trans: stateless-iso-2022-jp is defined to avoid
+ undefined conversion error between iso-2022-jp and the corresponding
+ stateless encoding.
+
+ * enc/emacs_mule.c: replicate emacs-mule as stateless-iso-2022-jp.
+
+Sun Sep 7 20:03:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans (hexstr): renamed from str1.
+
+Sun Sep 7 19:45:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans: use transcode_tblgen.
+
+ * tool/transcode-tblgen.rb: generate an empty line after str1.
+
+Sun Sep 7 19:16:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ActionMap#str_name): new method to
+ generate a name base on string content.
+ (ActionMap#gen_str): extracted from generate_info and use str_name.
+
+Sun Sep 7 18:28:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ActionMap#generate_info): use a memo to
+ avoid duplication for STR1.
+
+Sun Sep 7 18:10:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (STR1): defined for a string up to 255 bytes.
+ (STR1_BYTEINDEX): defined.
+ (makeSTR1): defined.
+
+ * tool/transcode-tblgen.rb: generate STR1.
+
+ * transcode.c (transcode_restartable0): interpret STR1.
+
+ * enc/trans/escape.trans (fun_so_escape_xml_chref): removed. STR1 is
+ used instead.
+
+Sun Sep 7 17:54:45 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * configure.in: Mac OS X's crypt(2) is broken with invalid salt.
+ [ruby-dev:35899]
+ * string.c (rb_str_crypt): ditto.
+
+Sun Sep 7 17:29:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: o4 is usable only if the first byte is
+ f0-f7.
+
+Sun Sep 7 12:44:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): choose ASCII compatible encoding as
+ intermediate encoding if stateful encoder exists.
+
+Sun Sep 7 12:09:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_XML_ATTR_CONTENT_ENCODER): defined.
+ (ECONV_STATEFUL_ENCODER_MASK): defined.
+ (ECONV_XML_ATTR_QUOTE_ENCODER): defined.
+ (ECONV_XML_ATTR_ENCODER): removed.
+
+ * enc/trans/escape.trans (rb_escape_xml_attr_content): defined.
+ (rb_escape_xml_attr_quote): defined.
+ (rb_escape_xml_attr): removed.
+
+ * io.c (NEED_WRITECONV): writeconv is required if supplemental
+ converter is used.
+ (make_writeconv): apply stateful encoder in writeconv.
+
+ * transcode.c: follow the constant change.
+
+Sun Sep 7 07:24:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/*.el: merged the following patches from Nathan Weizenbaum
+ <nex342 at gmail.com>. [ruby-core:18424]
+
+ * misc/ruby-mode.el: improve here-doc performance.
+
+ * misc/ruby-mode.el: don't crash the whole mode if the Subversion
+ $ keyword isn't interpolated.
+
+ * misc/ruby-mode.el: don't highlight keywords when they're the
+ beginning of non-keyword symbols.
+
+ * misc/ruby-mode.el, misc/ruby-electric.el: use regexp-opt where
+ possible for more efficient regexps.
+
+ * misc/*.el: untabify, for internal consistency and consistency
+ with standard Emacs elisp files.
+
+ * misc/ruby-mode.el: fix a variable-name error.
+
+ * misc/emacs-mode.el: don't set case-fold-search globally to nil;
+ instead just set it when we need it.
+
+Sun Sep 7 06:31:51 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (file_expand_path): applied a patch from Nobuhiro Tachino
+ in [ruby-dev:35948]. fix #491
+
+Sun Sep 7 03:37:05 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_block_optarg): allow default for block parameters as
+ long as the value is primary. a patch from Eric Mahurin
+ <eric.mahurin at gmail.com> in [ruby-core:16880].
+
+Sun Sep 7 01:07:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): "1.upto 2 {|i| p i }" should be syntax error.
+ [ruby-dev:36008]
+
+ * test/ruby/test_parse.rb (TestParse): update a test not to use
+ recently fixed inconsistent syntax.
+
+Sun Sep 7 00:37:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_ERROR_HANDLER_MASK): defined.
+ (ECONV_DECODER_MASK): defined.
+ (ECONV_ENCODER_MASK): defined.
+
+ * io.c (make_writeconv): restrict ecflags for writeconv with
+ ECONV_ERROR_HANDLER_MASK.
+
+Sat Sep 6 23:03:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_XML_TEXT_ENCODER): renamed from
+ ECONV_HTML_TEXT_ENCODER.
+ (ECONV_XML_ATTR_ENCODER): renamed from ECONV_HTML_ATTR_ENCODER.
+
+ * enc/trans/escape.trans: follow the renaming.
+
+ * transcode.c: ditto.
+
+Sat Sep 6 21:35:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: add some IPV6 constants. [ruby-dev:36175]
+
+Sat Sep 6 20:10:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_description): show ECONV_HTML_TEXT_ENCODER and
+ ECONV_HTML_ATTR_ENCODER.
+
+Sat Sep 6 20:06:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_binmode): check actual transcoders.
+
+Sat Sep 6 19:54:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): fix last_tc.
+
+Sat Sep 6 19:36:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_binmode): clear newline flags in writeconv_pre_ecflags.
+
+Sat Sep 6 18:47:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (str_transcode0): check ECONV_HTML_TEXT_ENCODER and
+ ECONV_HTML_ATTR_ENCODER.
+
+Sat Sep 6 18:38:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (allocate_converted_string): fix overflow condition.
+
+Sat Sep 6 15:06:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (sym_html): new variable.
+ (sym_text): ditto.
+ (sym_attr): ditto.
+ (econv_opts): check :html=>:text and :html=>:attr.
+ (Init_transcode): initialize the above variables.
+
+Sat Sep 6 14:46:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_HTML_TEXT_ENCODER): new constant.
+ (ECONV_HTML_ATTR_ENCODER): ditto.
+
+ * transcode.c (rb_econv_open): check ECONV_HTML_TEXT_ENCODER and
+ ECONV_HTML_ATTR_ENCODER.
+ (Init_transcode): Encoding::Converter::HTML_TEXT_ENCODER and
+ Encoding::Converter::HTML_ATTR_ENCODER defined.
+
+Sat Sep 6 14:15:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (struct trans_open_t): defined to pass num_additional.
+ (trans_open_i): use struct trans_open_t.
+ (rb_econv_open): ditto.
+
+Sat Sep 6 13:43:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans (fun_so_escape_html_attr): fix return type.
+
+Sat Sep 6 12:43:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): needless branch removed.
+
+Sat Sep 6 12:38:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): test condition simplified.
+
+Sat Sep 6 12:25:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (stateless_encoding_i): ignore supplemental conversions.
+ Encoding::Converter.stateless_encoding("html-attr-escaped") should be
+ nil.
+
+Sat Sep 6 12:19:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans (escape_html_attr_init): new function.
+ (fun_so_escape_html_attr): new function.
+ (escape_html_attr_finish): new function.
+ (rb_escape_html_attr): use them to quote the converted result.
+
+Sat Sep 6 07:54:36 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: uses f_real_p macro.
+
+Sat Sep 6 07:27:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): fail for ASCII incompatible with
+ newline conversion.
+
+Sat Sep 6 07:24:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_extract_modeenc): raise an error for ASCII incompatible
+ encoding without binmode.
+
+Sat Sep 6 07:12:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivrem1): optimization by skipping zeros at the
+ tail of digits. a patch from TOYOFUKU Chikanobu
+ <nobu_toyofuku at nifty.com> in [ruby-dev:36169].
+
+Sat Sep 6 06:28:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/escape.trans: new file.
+
+Sat Sep 6 06:23:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (StrSet.parse): accept upper case
+ hexadecimal digits.
+
+Sat Sep 6 05:37:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (output_hex_charref): upcase hexadecimal digits.
+
+Sat Sep 6 05:22:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_UNDEF_HEX_CHARREF): defined.
+
+ * transcode.c (output_hex_charref): new function.
+ (rb_econv_convert): call output_hex_charref if
+ ECONV_UNDEF_HEX_CHARREF.
+ (Init_transcode): Encoding::Converter::UNDEF_HEX_CHARREF added.
+
+Sat Sep 6 03:52:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_convert): use ECONV_INVALID_MASK and
+ ECONV_UNDEF_MASK.
+
+Sat Sep 6 06:05:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/ruby.h (DBL2NUM): renamed from DOUBLE2NUM.
+ a patch from Tadashi Saito <shiba at mail2.accsnet.ne.jp>
+ in [ruby-dev:36102].
+
+Sat Sep 6 04:44:06 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (Init_Proc): add '===' operator to use procs in when
+ clause of the case statement. inspired by <http://www.aimred.com/news/developers/2008/08/14/unlocking_the_power_of_case_equality_proc/>.
+
+Sat Sep 6 03:18:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (allocate_converted_string): add arguments for a buffer
+ allocated by caller.
+ (rb_econv_insert_output): provide caller allocated buffer to
+ allocate_converted_string.
+
+Sat Sep 6 02:58:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (str_transcode_enc_args): local variables renamed.
+ (str_transcode0): ditto.
+
+Sat Sep 6 02:23:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_s_stateless_encoding): new method.
+
+Sat Sep 6 02:01:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (enc_arg): extracted from str_transcode_enc_args.
+ (str_transcode_enc_args): use enc_arg.
+
+Fri Sep 5 20:27:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_modestr_fmode): renamed from
+ rb_io_mode_flags.
+ (rb_io_modestr_oflags): renamed from rb_io_mode_modenum.
+ (rb_io_oflags_fmode): renamed from rb_io_modenum_flags.
+ (rb_io_mode_flags): defined as a macro.
+ (rb_io_modenum_flags): ditto.
+
+ * io.c: follow the renaming with consistency.
+
+ * process.c (check_exec_redirect): call rb_io_modestr_oflags.
+
+ * ext/pty/depend: pty.o depends on io.h.
+
+Fri Sep 5 20:12:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans (universal_newline_finish): new function.
+
+Fri Sep 5 20:07:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_mode_modenum): moved from
+ include/ruby/intern.h.
+
+Fri Sep 5 19:59:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (MODENUM_MAX): removed.
+
+Fri Sep 5 18:37:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (copy_stream_fallback_body): use read method unless readpartial
+ is available. [ruby-dev:36124]
+
+Fri Sep 5 18:16:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_create): strips glibc style option before
+ charset mapping. retries without options if they seemed causing
+ error, and warns. [ruby-dev:36147]
+
+Fri Sep 5 03:09:48 2008 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_data_to_ary): make it static.
+
+ * thread.c (thgroup_enclose): ditto.
+
+Fri Sep 5 02:56:37 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (thread_recycle_stack_slot, thread_recycle_stack_count):
+ make it static.
+
+Fri Sep 5 02:40:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_critical): removed.
+
+Fri Sep 5 01:22:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (argf_mark): mark p->encs.ecopts.
+
+Fri Sep 5 00:45:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): rename fields:
+ from_encoding -> src_encoding, to_encoding -> dst_encoding.
+
+ * transcode.c: follow the renaming.
+
+Fri Sep 5 00:22:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c: variables renamed for consistency.
+
+Fri Sep 5 00:05:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * pack.c (encodes): make buff fixed length to avoid SEGV by
+ ruby -e '["a"*10000000].pack("m1000000000")'
+
+Thu Sep 4 23:47:05 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mode): set exception mode
+ correctly. In spite of BigDecimal.mode(BigDecimal::EXCEPTION_ALL,
+ true), BigDecimal.new("NaN") did not raise an exception previously.
+
+Thu Sep 4 23:42:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_file_open_str): declared.
+
+ * io.c (rb_file_open_str): defined.
+
+ * ext/zlib/zlib.c (gzfile_s_open): use rb_file_open_str instead of
+ rb_file_open.
+
+Thu Sep 4 23:18:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans: record newline types met in universal
+ newline decoder.
+
+Thu Sep 4 23:05:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/prime.rb (Prime::OldCompatibility#each): added compatibility to
+ Ruby 1.8.7.
+ (Prime#each): added more rdocs.
+ (Prime#each): remembers the last value of the given block.
+
+Thu Sep 4 21:53:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_init): accept an integer as 3rd argument as well.
+
+Thu Sep 4 21:46:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (sym_partial_input): new variable.
+ (econv_primitive_convert): accept a hash as 5th argument as well.
+
+Thu Sep 4 21:04:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (sym_universal_newline_decoder): new variable.
+ (sym_crlf_newline_encoder): ditto.
+ (sym_cr_newline_encoder): ditto.
+ (econv_opts): check newline converter options.
+ (econv_init): make 3rd argument hash/nil only.
+
+Thu Sep 4 21:03:28 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c: rename some debug functions.
+
+Thu Sep 4 20:57:54 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_check_trap_pending): added for compatibility.
+
+ * ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: remove ruby/signal.h
+ dependency.
+
+Thu Sep 4 20:30:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (PType): defined unconditionally.
+
+ * transcode.c (PType): don't define here.
+
+Thu Sep 4 20:19:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c: variables renamed for consistency.
+
+Thu Sep 4 19:40:50 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_profile_record_get): to static function.
+ (gc_profile_result): ditto.
+ (gc_profile_report): ditto.
+
+Thu Sep 4 19:20:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_enc_t): rename flags to ecflags.
+ (rb_io_t): rename writeconv_pre_flags to writeconv_pre_ecflags.
+ (MakeOpenFile): follow the renaming.
+
+ * io.c: follow the renaming.
+
+Thu Sep 4 19:10:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_INVALID_IGNORE): removed because
+ it tend to cause security problem. If the behaviour is really
+ required, ECONV_INVALID_REPLACE with empty string can be used.
+ For example, CVE-2006-2313, CVE-2008-1036, [ruby-core:15645],
+ http://unicode.org/reports/tr36/
+ (ECONV_UNDEF_IGNORE): ditto.
+
+ * transcode.c (rb_econv_convert): follow the above change.
+ (econv_opts): ditto.
+ (Init_transcode): ditto.
+
+Thu Sep 4 13:22:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct rb_vm_struct): replaced signal staff with trap
+ staff.
+
+ * signal.c (signal_buff): per process resource now.
+
+ * signal.c (trap_list): moved to VM.
+
+ * signal.c (rb_get_next_signal): reverted.
+
+ * signal.c (rb_trap_exit): trap_pending_list was no longer used.
+
+ * thread.c (timer_thread_function): delivers buffered per-process
+ signals to each VMs.
+
+ * vm.c (rb_vm_mark): marks trap_list.
+
+Thu Sep 4 13:01:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (struct sysopen_struct, rb_sysopen_internal, rb_sysopen):
+ constified.
+
+ * io.c: expanded ARGF members macros.
+
+Thu Sep 4 10:43:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb (citrus_decode_mapsrc): support older 1.8.
+
+Thu Sep 4 10:33:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_next_argv, argf_set_encoding): copy struct wise.
+
+Thu Sep 4 09:46:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_scan_open_args): follow rb_str_transcode change.
+
+Thu Sep 4 08:59:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * file.c (rb_find_file): fix GC problem on Debian GNU/Linux (IA64)
+ with gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).
+ There is no register/memory to contain load_path. A register (r35)
+ contains &RARRAY_PTR(load_path), (char*)load_path + 32.
+
+Thu Sep 4 03:10:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): new fields: encs.ecopts and
+ writeconv_pre_ecopts.
+ (MakeOpenFile): initialize them.
+
+ * include/ruby/encoding.h (rb_str_transcode): take ecopts argument.
+ (rb_econv_flags): removed.
+ (rb_econv_prepare_opts): declared.
+ (rb_econv_open_opts): declared.
+
+ * io.c (make_writeconv): use rb_econv_open_opts.
+ (make_readconv): ditto.
+ (io_fwrite): follow rb_str_transcode change.
+ (rb_io_extract_modeenc): use rb_econv_prepare_opts.
+ (rb_file_open_generic): initialize encs.ecopts.
+ (rb_file_open_internal): ditto.
+ (rb_io_reopen): ditto.
+ (argf_ecopts): defined.
+ (argf_next_argv): set encs.ecopts.
+ (io_encoding_set): use rb_econv_prepare_opts.
+ (argf_set_encoding): set argf_ecopts.
+
+ * gc.c (gc_mark_children): mark encs.ecopts and writeconv_pre_ecopts
+ in T_FILE.
+
+ * transcode.c (transcode_loop): take ecopts argument. use
+ rb_econv_open_opts.
+ (rb_econv_flags): removed.
+ (rb_econv_prepare_opts): defined.
+ (rb_econv_open_opts): defined.
+ (str_transcode0): take ecopts.
+ (str_transcode): use rb_econv_prepare_opts.
+ (rb_str_transcode): take ecopts.
+ (econv_init): accept hash argument.
+ (econv_insert_output): follow rb_str_transcode change.
+
+Thu Sep 4 01:30:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_set_replacemenet): declared.
+
+ * transcode.c (rb_econv_t): new fields: replacement_str,
+ replacement_len, replacement_enc and replacement_allocated.
+ (get_replacement_character): make len as size_t.
+ (rb_econv_open_by_transcoder_entries): initialize the new fields.
+ (rb_econv_close): deallocate replacement_str if it allocated.
+ (make_replacement): new function.
+ (output_replacement_character): use make_replacement.
+ (rb_econv_set_replacemenet): defined.
+ (econv_get_replacement): new method.
+ (econv_set_replacement): new method.
+
+Thu Sep 4 01:12:03 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (filetime_to_timeval): new function, split from
+ gettimeofday().
+
+ * win32/win32.c (gettimeofday): use above function.
+
+ * win32/win32.c (filetime_to_unixtime): ditto. [ruby-dev:36135]
+
+Thu Sep 4 01:00:57 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * transcode.c (transcode_restartable0): avoid VC++6's bug.
+
+Thu Sep 4 00:26:27 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (make_writeconv): follow akr's previous commit.
+
+Thu Sep 4 00:09:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_option_t): removed. Since
+ rb_econv_option_t has only one field, int flags, rb_econv_option_t is
+ replaced by int.
+
+ * include/ruby/io.h: follow the above change.
+
+ * io.c: ditto.
+
+ * transcode.c: ditto.
+
+Thu Sep 4 00:04:59 2008 Koichi Sasada <ko1@atdot.net>
+
+ * win32/win32.c: fix ruby/signal.h depending codes.
+
+Thu Sep 4 00:01:45 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb (test_getpwuid, test_getgrgid): use
+ Process.euid and egid instead of Etc.getlogin to identify current
+ user which may be different from a login one (e.g., su command).
+
+Wed Sep 3 23:52:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb: check only typical use of
+ setpwent/getpwent/endpwent and setgrent/getgrent/endgrent.
+
+Wed Sep 3 23:33:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_transcoding): moved from transcode_data.h.
+ (TRANSCODING_READBUF): ditto.
+ (TRANSCODING_WRITEBUF): ditto.
+ (TRANSCODING_STATE_EMBED_MAX): ditto.
+ (TRANSCODING_STATE): ditto.
+
+Wed Sep 3 23:03:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): remove stateful field.
+ add state field.
+ (TRANSCODING_STATE): defined.
+ (rb_transcoder): add fields: state_size, state_init_func,
+ state_fini_func.
+ change rb_transcoding* argument to void*.
+
+ * transcode.c (transcode_restartable0): use TRANSCODING_STATE for
+ first arguments of transcoder functions.
+ (rb_transcoding_open_by_transcoder): initialize state field.
+ (rb_transcoding_close): finalize state field.
+
+ * tool/transcode-tblgen.rb: provide state size/init/fini.
+
+ * enc/trans/newline.trans (universal_newline_init): defined.
+ (fun_so_universal_newline): take void* as a state pointer.
+ (rb_universal_newline): provide state size/init/fini.
+ (rb_crlf_newline): ditto.
+ (rb_cr_newline): ditto.
+
+ * enc/trans/iso2022.trans (iso2022jp_init): defined.
+ (fun_si_iso2022jp_to_eucjp): take void* as a state pointer.
+ (fun_so_iso2022jp_to_eucjp): ditto.
+ (fun_so_eucjp_to_iso2022jp): ditto.
+ (iso2022jp_reset_sequence_size): ditto.
+ (finish_eucjp_to_iso2022jp): ditto.
+ (rb_ISO_2022_JP_to_EUC_JP): provide state size/init/fini.
+ (rb_EUC_JP_to_ISO_2022_JP): ditto.
+
+ * enc/trans/utf_16_32.trans (fun_so_from_utf_16be): take void* as a
+ state pointer.
+ (fun_so_to_utf_16be): ditto.
+ (fun_so_from_utf_16le): ditto.
+ (fun_so_to_utf_16le): ditto.
+ (fun_so_from_utf_32be): ditto.
+ (fun_so_to_utf_32be): ditto.
+ (fun_so_from_utf_32le): ditto.
+ (fun_so_to_utf_32le): ditto.
+ (rb_from_UTF_16BE): provide state size/init/fini.
+ (rb_to_UTF_16BE): ditto.
+ (rb_from_UTF_16LE): ditto.
+ (rb_to_UTF_16LE): ditto.
+ (rb_from_UTF_32BE): ditto.
+ (rb_to_UTF_32BE): ditto.
+ (rb_from_UTF_32LE): ditto.
+ (rb_to_UTF_32LE): ditto.
+
+ * enc/trans/japanese.trans (fun_so_eucjp2sjis): take void* as a state
+ pointer.
+ (fun_so_sjis2eucjp): ditto.
+ (rb_eucjp2sjis): provide state size/init/fini.
+ (rb_sjis2eucjp): provide state size/init/fini.
+
+Wed Sep 3 22:31:11 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/mathn.rb (Integer): moved into prime.rb.
+ (Prime): ditto.
+
+ * lib/prime.rb (Integer): moved from mathn.rb.
+ (Integer.each_prime): added.
+ (Integer#prime?): added.
+ (Prime): moved from mathn.rb.
+ Its implementation was rewritten. see [ruby-dev:35863].
+ And patched by Keiju ISHITSUKA <keiju@ishitsuka.com>,
+ see [ruby-dev:36128].
+ (Prime.new): obsolete.
+ (Prime.instance): added.
+ (Prime.each): added.
+ (Prime.int_from_prime_division): added.
+ (Prime.prime_division): added.
+ (Prime.prime?): added.
+ Patch by TOYOFUKU Chikanobu
+ <nobu_toyofuku at nifty.com> in [ruby-dev:36067].
+ (Prime.cache): removed.
+ (Prime.primes): removed.
+ (Prime.primes_so_far): removed.
+ (Prime#int_from_prime_division): added.
+ (Prime#prime_division): added.
+ (Prime#prime?): added.
+ (Prime#primes): removed.
+ (Prime#primes_so_far): removed.
+ (Prime::PseudoPrmeGenerator): added.
+ (Prime::EratosthenesGenerator): added.
+ (Prime::TrialDivisionGenerator): added.
+ (Prime::Generator23): added.
+ (Prime::TrialDivision): added.
+ Extracted from the previous implementation of Prime
+ by Keiju ISHITSUKA.
+ (Prime::EratosthenesSieve): added.
+
+ * lib/.document (prime.rb): added
+
+ * lib/README (prime.rb): added
+
+ * test/test_prime.rb: added.
+
+Wed Sep 3 21:49:00 2008 David A. Black <dblack@rubypal.com>
+
+ * lib/scanf.rb: fixed bug involving matching literal '['
+
+ * test/scanf/test_scanf.rb: added test for scanf.rb fix
+
+Wed Sep 3 21:31:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (WORDINDEX_SHIFT_BITS): defined.
+ (WORDINDEX2INFO): defined.
+ (INFO2WORDINDEX): defined.
+
+ * tool/transcode-tblgen.rb: use WORDINDEX2INFO.
+
+ * transcode.c: use INFO2WORDINDEX.
+
+Wed Sep 3 21:19:51 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * golf_prelude.rb: suppress warnings when goruby -v.
+
+Wed Sep 3 21:07:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (BL_MIN_BYTE): defined.
+ (BL_MAX_BYTE): defined.
+ (BL_OFFSET): defined.
+ (BL_ACTION): defined.
+ (transcode_restartable0): use BL_MIN_BYTE, BL_MAX_BYTE and
+ BL_ACTION.
+
+Wed Sep 3 20:58:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (BYTE_ADDR): defined.
+ (WORD_ADDR): ditto.
+ (BL_BASE): use BYTE_ADDR and WORD_ADDR.
+ (BL_INFO): use WORD_ADDR.
+
+Wed Sep 3 20:47:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): new field: byte_array_length and
+ word_array_length.
+
+ * tool/transcode-tblgen.rb (transcode_generated_code): generate
+ byte_array_length and word_array_length.
+
+Wed Sep 3 20:34:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ArrayCode): new class.
+ (ActionMap#gen_array_code): moved to ArrayCode.
+ (ActionMap#numelt_array_code): ditto.
+ (ActionMap#array_code_insert_at_last): ditto.
+ (TRANSCODE_GENERATED_BYTES_CODE): use ArrayCode.
+ (TRANSCODE_GENERATED_WORDS_CODE): ditto.
+
+Wed Sep 3 20:08:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/japanese.trans: new file.
+
+Wed Sep 3 20:04:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ActionMap#gen_array_code): extracted from
+ generate_lookup_node.
+ (ActionMap#numelt_array_code): ditto.
+ (ActionMap#array_code_insert_at_last): ditto.
+
+Wed Sep 3 20:01:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (parser_encoding_name): defined.
+ (parser_tokadd_mbchar): show encoding in the message of
+ "invalid multibyte char" error.
+
+Wed Sep 3 19:28:04 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_method_missing): C99.
+
+Wed Sep 3 19:18:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_thread.rb: fix test.
+ [ruby-dev:35960]
+
+Wed Sep 3 17:48:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/make_transdb.rb: check $(srcdir)/enc/trans before
+ enc/trans.
+
+ * enc/trans/make_transdb.rb: keep names_t.
+
+Wed Sep 3 16:54:46 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/signal.h: removed.
+
+ * common.mk, class.c, eval.c, eval_intern.h, file.c, gc.c, hash.c,
+ io.c, process.c, signal.c: vm_core.h: ditto.
+ Some unused external global variables are also removed.
+ (rb_prohibit_interrupt, rb_trap_immediate, rb_trap_pending,
+ rb_thread_critical)
+
+ * ext/openssl/ossl_ssl.c, ext/openssl/ossl_x509store.c,
+ ext/readline/readline.c, ext/socket/depend,
+ ext/socket/socket.c: ditto.
+
+Wed Sep 3 00:23:25 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (vm_method_missing): copy arguments to allocated
+ memory from machine stack. [ruby-dev:36064]
+
+Tue Sep 2 22:20:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (base_element): removed.
+ (BYTE_LOOKUP): removed.
+ (BYTE_LOOKUP_BASE): don't cast.
+ (BYTE_LOOKUP_INFO): ditto.
+ (PType): unsigned int, instead of uintptr_t.
+ (rb_transcoding): change type of next_field, conv_tree_start and
+ word_array.
+
+ * tool/transcode-tblgen.rb: generate word_array as array of unsigned
+ int.
+
+ * transcode.c (transcode_restartable0): follow the above type change.
+
+Tue Sep 2 21:22:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: add prefix for byte_array and word_array.
+
+Tue Sep 2 20:57:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/make_transdb.rb: check foo.c only if foo.trans exists.
+
+Tue Sep 2 19:19:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/make_transdb.rb: error message improved.
+
+Tue Sep 2 14:05:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/trans/utf_16_32.trans (from_UTF_8): rename from to_UTF_16BE
+ because it was not collect.
+
+Tue Sep 2 14:00:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * enc/emacs_mule.c (svn:executable): dropped executable bit.
+
+ * enc/make_encdb.rb (svn:executable): ditto.
+
+Tue Sep 2 12:58:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (COMPILERFLAG): new compiler flag to compile
+ enc/trans/japanese*.c.
+
+Tue Sep 2 12:37:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/japanese_euc.trans: splitted from japanese.trans to avoid
+ compiler limitation. reported by usa.
+
+ * enc/trans/japanese_sjis.trans: ditto.
+
+Tue Sep 2 12:31:24 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (miniruby): new target.
+
+Tue Sep 2 11:47:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (struct load_arg): data is now st_table.
+
+ * marshal.c (mark_load_arg): marks data and compat_tbl.
+
+ * marshal.c (r_object0): no need to check if reentered.
+
+ * marshal.c (marshal_load): make the wrapper with mark_load_arg.
+
+Tue Sep 2 10:49:18 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (gettimeofday): easier calculation. use the definition
+ of the Gregorian calendar.
+
+Tue Sep 2 10:33:12 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (distclean-golf): moved golf_prelude.c here from
+ distclean-local.
+ (GOLFPRELUDE): added.
+ (distclean-local): moved golf_prelude.c into distclean-golf.
+
+Tue Sep 2 10:09:17 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (gettimeofday): calc tv_sec and tv_usec from system
+ time by myself. [ruby-dev:36084]
+
+Tue Sep 2 04:00:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (o3): prevent sign extension on 64bit environment.
+ (o4): ditto.
+
+Tue Sep 2 03:26:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: comment removed in generated code.
+
+Tue Sep 2 03:16:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: define TRANSCODE_TABLE_INFO in generated
+ code. use it in rb_transcoder.
+
+ * enc/trans/newline.trans: use TRANSCODE_TABLE_INFO.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+Tue Sep 2 03:04:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: record infos and BYTE_LOOKUPs as index of
+ word_array to avoid relocation.
+
+ * transcode.c (transcode_restartable0): add word_array to get infos
+ and BYTE_LOOKUPs.
+
+ * transcode_data.h (BYTE_LOOKUP_INFO): change return type to
+ uintptr_t.
+
+Tue Sep 2 02:48:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: don't need to cast offsets array.
+
+Tue Sep 2 02:36:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: record offsets array as index of
+ byte_array to avoid relocation.
+
+ * transcode.c (transcode_restartable0): add byte_array to get offsets
+ array.
+
+ * transcode_data.h (BYTE_LOOKUP_BASE): change return type to
+ uintptr_t.
+ (rb_transcoder): add fields: byte_array, word_array and word_size.
+
+ * enc/trans/newline.trans: follow rb_transcoder change.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+Tue Sep 2 02:05:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: make infos arrays and BYTE_LOOKUPs into
+ single array.
+
+Tue Sep 2 01:47:44 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (clean-golf): added.
+ (distclean-golf): added.
+ (realclean-golf): added.
+ (clean): added clean-golf.
+ (distclean): added distclean-golf.
+ (realclean): added realclean-golf.
+
+Tue Sep 2 01:31:45 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (realclean-local): added newline.c.
+
+Tue Sep 2 01:19:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (BYTE_LOOKUP): change to uintptr_t array.
+ (BYTE_LOOKUP_BASE): follow the type change.
+ (BYTE_LOOKUP_INFO): ditto.
+ (PType): ditto.
+ (rb_transcoding): ditto.
+
+ * tool/transcode-tblgen.rb: follow the type change.
+
+ * transcode.c: ditto.
+
+ * enc/trans/newline.trans: ditto.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+Mon Sep 1 23:32:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (BYTE_LOOKUP_BASE): abstract accessor for
+ BYTE_LOOKUP.
+ (BYTE_LOOKUP_INFO): ditto.
+
+ * transcode.c (transcode_restartable0): use BYTE_LOOKUP_BASE and
+ BYTE_LOOKUP_INFO.
+
+Mon Sep 1 23:14:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: gather infos arrays and BYTE_LOOKUPs.
+
+Mon Sep 1 22:42:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/mkmf.rb (distclean): added RM_RF conftest.dSYM.
+ Fixes distclean-ext problem on Mac OS X.
+ (RM_RF): added.
+
+Mon Sep 1 22:37:06 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/rexml/document.rb: limit entity expansion. Thanks, Luka
+ Treiber, Mitja Kolsek, and Michael Koziarski.
+
+ * lib/rexml/entity.rb: ditto.
+
+ * test/rexml/test_document.rb: ditto.
+
+Mon Sep 1 22:20:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: make offsets arrays into single array.
+
+Mon Sep 1 21:46:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: gather offsets arrays at top.
+
+Mon Sep 1 21:09:04 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * ./: removed rubyspec from svn:ignore subversion property.
+ rubyspec directory is no longer used.
+
+ * spec: added mspec and rubyspec to svn:ignore.
+
+Mon Sep 1 19:37:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: ValidEncoding['eucJP-ms'] defined.
+ "\xA2\xAF".encode("utf-8", "eucJP-ms") should raise
+ Encoding::ConversionUndefined, not Encoding::InvalidByteSequence.
+
+Mon Sep 1 18:27:51 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (gettimeofday): shouldn't use mktime(3) because it's
+ buggy about handling summer time.
+ reported by Yoshikawa <yoshixool AT gmail.com> at [ruby-dev:36071]
+
+Mon Sep 1 17:07:23 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/euc_jp.c (euc-jp-ms): euc-jp-ms is not an alias of EUC-JP
+ but eucJP-ms.
+
+ * enc/trans/japanese.trans (eucJP-ms): eucJP-ms is the correct
+ name of the encoding in Ruby. [ruby-dev:36070]
+
+Mon Sep 1 16:48:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/md5/md5init.c (md5), ext/digest/rmd160/rmd160init.c
+ (rmd160) ext/digest/sha1/sha1init.c (sha1),
+ ext/digest/sha2/sha2init.c (sha256, sha384, sha512): constified.
+
+Mon Sep 1 15:15:40 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.trans: fix mapping priority.
+ IBM extended is prior than NEC selected IBM.
+
+Mon Sep 1 14:44:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb (transcode_compile_tree): use the first
+ mapping when some mappings are given for a character.
+ [ruby-dev:36068]
+
+ * tool/transcode-tblgen.rb: expandtab.
+
+Mon Sep 1 14:40:18 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * README.EXT (Appendix A): fixed the name of class
+ Enumerator. Enumerable::Enumerator was renamed just
+ Enumerator at revision 18564.
+
+ * README.EXT (Appendix A): ditto.
+
+Mon Sep 1 14:37:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb: set ERB source filename for error message.
+
+Mon Sep 1 14:37:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend: transdb.c may not present.
+
+Mon Sep 1 14:25:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.trans: fix Ruby 1.8 compatibility.
+
+ * enc/trans/japanese.trans: fix mapping priority. [ruby-dev:36068]
+
+Mon Sep 1 14:24:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_transcode.rb (test_windows_31j): added.
+
+Mon Sep 1 14:00:04 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * README.EXT (Data-types): fixed for current status.
+ (Manipulating Ruby data): mentioned some more functions.
+ (Class/module definition): ditto.
+ (Global variables shared between C and Ruby):
+ fixed prototypes for the getter/setter's of global variables.
+ (Appendix A): mentioned some more files.
+
+ * README.EXT.ja: ditto.
+
+Mon Sep 1 11:31:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (copy_stream, fu_copy_stream0, copy_file): use
+ IO.copy_stream to get rid of extraneous conversion.
+
+Mon Sep 1 02:55:15 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * strftime.c (rb_strftime): calc timezone offset by myself if system
+ doesn't provide timezone info.
+
+Mon Sep 1 02:48:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: change "illegal" to "invalid".
+
+Mon Sep 1 02:31:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (transcode_generated_code): defined for
+ generating table at once.
+ (transcode_tblgen): returns an empty string.
+ (transcode_generate_node): ditto.
+
+ * enc/trans/newline.trans: use transcode_generated_code.
+
+ * enc/trans/iso2022.trans: ditto.
+
+ * enc/trans/single_byte.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+ * enc/trans/japanese.trans: ditto.
+
+ * enc/trans/korean.trans: ditto.
+
+Mon Sep 1 02:10:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (citrus_decode_mapsrc): print logging
+ message on STDERR.
+
+Mon Sep 1 01:24:09 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/eucjp-tbl.rb: replace by previous Citrus maps.
+
+ * enc/trans/sjis-tbl.rb: ditto.
+
+Mon Sep 1 01:18:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb: add table generator from Citrus maps.
+
+ * enc/trans/japanese.trans: use Citrus maps.
+
+ * enc/trans/CP: add maps from Citrus.
+
+ * enc/trans/JIS: ditto.
+
+ * test/ruby/test_transcode.rb: Shift_JIS and EUC-JP doesn't support
+ IBM extended characters.
+
+Mon Sep 1 00:19:45 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (docs): removed a useless make target.
+ tool/makedoc.rb was removed at revision 13919.
+
+Sun Aug 31 20:49:42 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (numeric_abs2): new.
+
+Sun Aug 31 18:22:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_devel?): checks if the compiler works.
+
+Sun Aug 31 18:02:41 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Temporarily uses git://github.com/yugui/rubyspec.git
+ until specs for 1.9 is merged into
+ git://github.com/rubyspec/rubyspec.git.
+
+Sun Aug 31 18:06:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode.c): set source_encoding and
+ destination_encoding as encoding object.
+ (ecerr_source_encoding): new method.
+ (ecerr_destination_encoding): ditto.
+
+Sun Aug 31 17:58:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (Logging.log_open): opens in binary mode to get rid of
+ extra CR.
+
+ * lib/mkmf.rb (try_func, try_var, have_struct_member),
+ (scalar_ptr_type?, scalar_type?): use MAIN_DOES_NOTHING.
+
+ * lib/mkmf.rb (MAIN_DOES_NOTHING): defaults to ordinary main.
+
+ * win32/Makefile.sub (config): for MAIN_DOES_NOTHING for wince.
+
+Sun Aug 31 17:30:35 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/README (How to run): added.
+
+Sun Aug 31 17:28:25 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * spec/default.mspec (config): added.
+
+ * spec/default.mspec (target): replaced the built ruby
+ to runruby.rb.
+ Improved $LOAD_PATH on running specs.
+
+ * spec/default.mspec (flags): ditto.
+
+Sun Aug 31 17:16:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): rename instance variable names
+ for storing encoding names.
+ (ecerr_source_encoding_name): method renamed.
+ (ecerr_destination_encoding_name): ditto.
+
+Sun Aug 31 16:57:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_putback): associate encoding to the result.
+
+Sun Aug 31 16:43:56 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/intern.h: rename RB_UBF_DFL to
+ RUBY_UBF_IO and RUBY_UBF_PROCESS.
+ Because there is no default (universal) unblocking function.
+
+ * ext/socket/socket.c, file.c, io.c, process.c, thread.c: ditto.
+
+Sun Aug 31 16:42:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_insert_output): raise ArgumentError on failure.
+
+Sun Aug 31 16:39:17 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_thread.rb: add a test.
+
+Sun Aug 31 16:34:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/single_byte.trans (us_ascii_map): don't define 8bit bytes.
+
+Sun Aug 31 14:27:27 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_last_error): new method.
+
+Sun Aug 31 14:17:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): make two arguments,
+ destination_byteoffset and destination_bytesize, optional.
+
+Sun Aug 31 14:12:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): error message simplified.
+
+Sun Aug 31 13:47:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/coverage/coverage.c (rb_mCoverage): removed unneeded static variable.
+
+ * ext/socket/socket.c (unix_recv_io): ditto.
+
+ * ext/socket/socket.c (mConst): ditto.
+
+Sun Aug 31 13:45:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspres_initialize): fix for
+ initialization of r18168.
+
+Sun Aug 31 13:42:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/eventids2.c (ripper_init_eventids2): use rb_intern_const.
+
+ * ext/ripper/tools/generate.rb (generate_eventids1): ditto.
+
+ * ext/ripper/tools/generate.rb (generate_eventids2_table): ditto.
+
+Sun Aug 31 12:56:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/mkcallback.rb (rb_dl_init_callbacks): fix indent.
+
+Sun Aug 31 11:39:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/strscan/strscan.c (strscan_do_scan): fix usecnt decrement.
+
+Sun Aug 31 04:38:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_putback): make max argument optional.
+
+Sun Aug 31 04:35:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_putback): putback from last byte.
+
+Sun Aug 31 04:27:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_putback): renamed from econv_primitive_putback.
+
+Sun Aug 31 04:22:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_insert_output): renamed from
+ econv_primitive_insert_output.
+
+Sun Aug 31 04:20:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_econv.rb: follow econv_primitive_errinfo change.
+
+Sun Aug 31 03:44:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_errinfo): 5th element (partial_input)
+ removed from result.
+
+Sun Aug 31 01:53:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/mkcallback.rb: split callback.h to callback-[0-9].c to reduce
+ memory consumption on compilation. [ruby-dev:31898]
+
+ * ext/dl/depend: add dependency for callback-[0-9].[co].
+
+Sun Aug 31 01:27:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/mkcallback.rb (foreach_proc_entry): extracted.
+ (gencallback): ditto.
+ (gen_push_proc_ary): ditto.
+ (gen_push_addr_ary): ditto.
+
+Sat Aug 30 23:51:01 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_tuplebag.rb (test_has_expires_eh): fix failures
+ [ruby-dev:35937].
+
+Sat Aug 30 23:38:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/test/test_import.rb: fix character code.
+
+ * ext/dl/test/test_func.rb: ditto.
+
+Sat Aug 30 22:23:31 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: added a static variable for nurat_to_f.
+
+Sat Aug 30 20:05:41 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_open, rb_w32_read, rb_w32_write): fallback to
+ MSVCRT if text mode is specified. this case will not be used from
+ ruby itself.
+
+Sat Aug 30 19:49:38 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): EOF is not error.
+ ref [ruby-dev:36050]
+
+Sat Aug 30 18:17:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (struct token_info): constified.
+
+ * parse.y (token_info_get_column, token_info_has_nonspaces),
+ (token_info_push, token_info_pop): constified.
+
+Sat Aug 30 15:43:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/openssl/ossl_config.c (Init_ossl_config): memory leak fixed.
+ a patch <shinichiro.hamaji at gmail.com> in [ruby-dev:35880].
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_set_value): ditto.
+
+ * ext/strscan/strscan.c (strscan_do_scan): ditto.
+
+Sat Aug 30 14:58:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_initialize): fix for
+ initialization of r18168.
+
+Sat Aug 30 14:47:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/mkcallback.rb: fix continuation line detection.
+
+Sat Aug 30 14:39:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/dl/mkcallback.rb (rb_dl_init_callbacks): avoid GC problem which
+ is caused by 'GC.stress=true; require "dl"'.
+
+Sat Aug 30 11:54:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (token_info_push): -w warns indentation level mismatch.
+ based on a patch from Yukina Yamano presented at RubyKaigi'07.
+ See <http://jp.rubyist.net/RubyKaigi2007/Log0609-LT06.html> and
+ <http://www.logic-junction.com/products/rubyend.html> (Japanese).
+
+Sat Aug 30 10:46:44 2008 Koichi Sasada <ko1@atdot.net>
+
+ * ext/iconv/iconv.c: remove include pragma for "ruby/intern.h".
+
+Sat Aug 30 10:43:03 2008 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: remove include pragma for "ruby/intern.h".
+
+Sat Aug 30 10:41:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (Rake::Application#help): fix for OPTIONAL_ARGUMENT and
+ multiple short options. [ruby-dev:36051]
+
+Sat Aug 30 08:59:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_file_s_absolute_path),
+ (rb_file_absolute_path): prototyped.
+
+Sat Aug 30 08:09:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_compatible_p): use TYPE not BUILTIN_TYPE.
+ [ruby-dev:36048]
+
+Sat Aug 30 07:48:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_compatible_p): add SPECIAL_CONST_P check.
+ [ruby-dev:36048]
+
+ * test/ruby/test_m17n.rb (test_compatible): fix test.
+
+Sat Aug 30 02:48:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_freeze): update rdoc to mention RuntimeError
+ (not TypeError any longer) would be raised. [ruby-dev:35982]
+
+Sat Aug 30 01:55:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigdivmod): remove redundant code. a patch from
+ TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com> in [ruby-dev:36044].
+
+Sat Aug 30 01:37:20 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#initialize): remove unused constants. a patch
+ from Takeyuki Fujioka in [ruby-dev:36046].
+
+Fri Aug 29 22:29:41 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c ({nucomp,numeric}_rect): new.
+
+ * complex.c: added some aliases
+ (::rectangular, ::rect, #rectangular, #rect, #phase,
+ #magnitude).
+
+ * complex.c (string_to_c_internal): should not strip any null
+ bytes.
+
+ * rational.c (string_to_r_internal): ditto.
+
+ * rational.c (i_gcd): reverted to nurat 0.0.2's one.
+
+ * numeric.c: added an alias (#magnitude).
+
+ * bignum.c: ditto.
+
+ * test/ruby/test_complex.rb: added assertions.
+
+ * test/ruby/test_rational.rb: ditto.
+
+Fri Aug 29 19:46:02 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, include/ruby/ruby.h: rename T_DEFERRED to T_ZOMBIE.
+
+Fri Aug 29 18:22:27 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_compatible_p): raise TypeError when argument is not
+ String nor Regexp.
+
+Fri Aug 29 18:20:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_index_m): only regexp uses byte offset.
+
+ * string.c (rb_str_rindex_m): ditto.
+
+Fri Aug 29 16:48:34 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): copy arguments to allocated
+ memory from machine stack. [ruby-dev:36028]
+
+ * KNOWNBUGS.rb, bootstraptest/test_method.rb: move fixed test.
+
+Fri Aug 29 12:19:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_x509attr.c (ossl_x509attr_initialize): fix for
+ initialization of r18168.
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspreq_initialize): ditto.
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): ditto.
+
+Fri Aug 29 11:04:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): ASCII compatible string and US-ASCII
+ regexp is compatible. [ruby-dev:36033]
+
+ * string.c (rb_str_index_m): second argument is position of character.
+ by usa. [ruby-dev:36033]
+
+ * string.c (rb_str_rindex_m): ditto.
+
+Fri Aug 29 04:47:49 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read, rb_w32_write): more accurate handling
+ of wait result.
+
+Fri Aug 29 02:59:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_finish): new method.
+
+Fri Aug 29 02:45:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_convert): new method.
+
+Fri Aug 29 02:38:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): accept nil as
+ destination_bytesize for unlimited destination size.
+
+Fri Aug 29 02:11:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): accept nil as input for empty
+ input.
+
+Fri Aug 29 02:03:56 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): supported %s and %P.
+
+ * time.c (time_strftime): ditto.
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Fri Aug 29 01:57:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (sym_invalid_byte_sequence): new variable.
+ (sym_undefined_conversion): ditto.
+ (sym_destination_buffer_full): ditto.
+ (sym_source_buffer_empty): ditto.
+ (sym_finished): ditto.
+ (sym_output_followed_by_input): ditto.
+ (sym_incomplete_input): ditto.
+ (econv_result_to_symbol): use above variables.
+ (Init_transcode): initialize above variables.
+
+Fri Aug 29 00:53:40 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): fixed a bug of padding.
+
+ * test/ruby/test_time.rb: ditto.
+
+Fri Aug 29 00:19:54 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (set_pioinfo_extra): use MSVCRT's open() and close().
+
+Fri Aug 29 00:03:13 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * file.c (file_expand_path): check invalid access.
+
+Thu Aug 28 23:55:50 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): Time.mktime(2000).strftime("%-S") should
+ return "0", not "".
+
+ * test/ruby/test_time.rb: ditto.
+
+Thu Aug 28 23:55:22 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_time.rb: suppress warning during test.
+
+Thu Aug 28 23:50:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_time.rb (test_strftime): make test for %a independent
+ from local timezone. [ruby-dev:35992]
+
+Thu Aug 28 23:39:49 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_str_shared_replace): remove corrupt noembed string
+ which causes SEGV. [ruby-dev:35989]
+
+Thu Aug 28 23:36:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: dependency updated.
+
+Thu Aug 28 23:28:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * KNOWNBUGS.rb: add a test. see [ruby-dev:36028]
+
+Thu Aug 28 21:43:05 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_open): overlapped file
+ I/O support.
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_pipe): overlapped pipe
+ I/O support.
+
+ * win32/win32.c (rb_w32_read, rb_w32_write): overlapped I/O support to
+ enable canceling I/O.
+
+ * thread_win32.c (ubf_handle): remove workaround.
+
+Thu Aug 28 20:22:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_yield_setup_args): object with to_ary should
+ behave like array. a patch from Yusuke Endoh <mame at tsg.ne.jp>
+ in [ruby-dev:35988]. [ruby-dev:35977]
+
+ * object.c (convert_type): call less rb_intern() less frequently
+ by using cache structure.
+
+ * vm_method.c (rb_method_node): fail earlier if no method found.
+
+Thu Aug 28 19:04:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bootstraptest/test_io.rb: no need to create real file.
+
+Thu Aug 28 09:26:53 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_multipart.rb: add test for multipart.
+ Patch by Takeyuki Fujioka. [ruby-dev:36014]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Thu Aug 28 09:22:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_modruby.rb: add test for mod_ruby adaptor.
+ Patch by Takeyuki Fujioka. [ruby-dev:36013]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Thu Aug 28 09:17:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_header.rb: add test for CGI::Header.
+ Patch by Takeyuki Fujioka. [ruby-dev:36010] [ruby-dev:36011]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Thu Aug 28 02:16:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): refcnt field removed.
+ (MakeOpenFile): refcnt initialization removed.
+
+ * io.c (rb_io_fptr_finalize): don't check refcnt.
+ (rb_io_close_read): don't use refcnt.
+
+Thu Aug 28 00:07:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_initialize): don't accept IO object. [ruby-dev:35895]
+
+Wed Aug 27 23:28:51 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke): WIN32OLE#[] and WIN32OLE#[]=
+ accepts number argument.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Wed Aug 27 14:45:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_core.rb: add core test.
+ Patch by Takeyuki Fujioka. [ruby-dev:36001] [ruby-dev:36002]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Wed Aug 27 10:34:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie): remove delegate.
+ Patch by Takeyuki Fujioka. [ruby-dev:35995]
+
+ * test/cgi/test_cgi_cookie.rb: added for above.
+ Patch by Takeyuki Fujioka. [ruby-dev:35996]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Wed Aug 27 01:13:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_loop): simplified.
+
+Wed Aug 27 01:03:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_result_t): enumeration constant:
+ econv_incomplete_input.
+
+ * io.c (finish_writeconv): check econv_incomplete_input.
+
+ * transcode.c (transcode_restartable0): return econv_incomplete_input
+ for unexpected end of source buffer.
+ (trans_sweep): check econv_incomplete_input.
+ (rb_trans_conv): ditto.
+ (rb_econv_convert0): ditto.
+ (rb_econv_convert): ditto.
+ (transcode_loop): ditto.
+ (make_econv_exception): change message for econv_incomplete_input.
+ (econv_result_to_symbol): return :incomplete_input for
+ econv_incomplete_input.
+ (ecerr_incomplete_input): new method.
+
+Wed Aug 27 00:05:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): rename crbuf to cbuf.
+
+ * io.c: follow the renaming.
+
+Tue Aug 26 23:52:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_elem_t): move to transcode.c
+ (rb_econv_t): defined as an incomplete type.
+
+ * transcode.c (rb_econv_elem_t): moved from encoding.h.
+ (rb_econv_t): complete type defined.
+
+Tue Aug 26 22:44:12 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (time_asctime): workaround for MSVCRT's bug.
+ based on a patch from wanabe <s.wanabe AT gmail.com> at
+ [ruby-dev:35831] and a suggestion by KIMURA Koichi
+ <kbk AT kt.rim.or.jp> at [ruby-dev:35832]
+ fixed [ruby-dev:35555]
+
+Tue Aug 26 21:53:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): disable newline conversion for ASCII
+ incompatible encodings.
+ (str_transcode0): don't need disable newline conversion here.
+
+Tue Aug 26 21:44:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_binmode): binmode is effective only once.
+
+Tue Aug 26 19:43:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): new class method for class File.
+
+ * file.c (file_expand_path): add absolute_path handling (no ~user
+ expansion). [ruby-core:18319]
+
+Tue Aug 26 19:27:54 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/ruby/test_enum.rb (TestEnumerable#test_each_with_object):
+ Add a test for Enumerable#each_with_object.
+
+Tue Aug 26 19:25:44 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/ruby/test_enumerator.rb (TestEnumerator#test_with_object):
+ Add (back) the test for Enumerator#with_object.
+
+Tue Aug 26 16:16:43 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_tag_helper.rb: add more tests for html3.
+ Patch by Takeyuki Fujioka. [ruby-dev:35975]
+ From CGIAlt http://cgialt.rubyforge.org/
+
+Tue Aug 26 14:43:10 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c: Activate Enumerator#with_object and add
+ Enumerable#each_with_object. [experimental]
+
+Tue Aug 26 14:38:32 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_initialize),
+ test/ruby/test_enumerator.rb: Add an ability to generate an
+ enumerator from a block. [experimental] [ruby-dev:35903]
+
+Tue Aug 26 13:25:25 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: added test_euc_jp
+ (contributed by Yoshihiro Kambayashi)
+
+Tue Aug 26 11:54:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/cgi/test_cgi_tag_helper.rb: added by Takeyuki Fujioka.
+ [ruby-dev:35971]
+
+Tue Aug 26 11:33:30 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi.rb (nOE_element_def): fix error when cascade methods which
+ don't have arguments. Patch by Takeyuki Fujioka. [ruby-dev:35964]
+
+ * lib/cgi.rb (blockquote): String#collect (this depends on
+ String#each) is no longer exists.
+ Patch by Takeyuki Fujioka. [ruby-dev:35946]
+
+ * lib/cgi.rb (blockquote): ditto.
+
+Tue Aug 26 03:06:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): copy invalid/undef flags.
+
+Tue Aug 26 02:47:08 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (dist): tool/make-snapshot is executable.
+
+ * tool/make-snapshot (package): supported release numbers 1.9.0-x.
+
+Tue Aug 26 02:43:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): new field: writeconv_pre_opts.
+
+ * io.c (make_writeconv): initialize writeconv_pre_opts.
+ (io_fwrite): use writeconv_pre_opts.
+
+Tue Aug 26 01:48:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c: test _WIN32 for CRLF platform. (cygwin defines O_BINARY.)
+
+Tue Aug 26 01:29:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c: force CRLF handling if RUBY_TEST_CRLF_ENVIRONMENT is defined.
+ This is only for testing.
+
+Tue Aug 26 01:26:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (str_transcode0): disable newline conversion for ASCII
+ incompatible encoding.
+
+Tue Aug 26 00:55:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (str_transcode0): don't short cut for newline conversion.
+
+Tue Aug 26 00:36:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fwrite): add TEXTMODE_NEWLINE_ENCODER to option for
+ rb_str_transcode.
+
+Tue Aug 26 00:24:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): show readagain part for invalid
+ byte sequence exception. store the part as an instance variable.
+ (ecerr_readagain_bytes): new method to access the readagain part.
+
+Tue Aug 26 00:02:49 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpMult): fix double free.
+
+Mon Aug 25 23:59:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): make last_tc NULL if there are only
+ additional transcoders.
+ (econv_description): extracted from rb_econv_open_exc.
+ (rb_econv_open_exc): use econv_description.
+ (econv_inspect): use econv_description.
+
+Mon Aug 25 23:56:42 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32.c (init_stdhandle): set binmode.
+
+Mon Aug 25 23:38:17 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb(strftime): %[LN] can print with given
+ arbitrary precision.
+
+ * lib/date/format.rb(strftime): optional flags and filed width
+ should also affect %[nt].
+
+Mon Aug 25 23:01:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): default defined? should return
+ "expression" without evaluating the expression. [ruby-dev:35967]
+
+Mon Aug 25 22:46:01 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_thread.rb (test_status_and_stop_p): reduce the risk
+ of race condition.
+
+Mon Aug 25 22:39:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/irb/extend-command.rb (def_extend_command): check number of
+ arguments. [ruby-dev:35074]
+
+ * lib/irb/ext/multi-irb.rb (search): check if a corresponding job is
+ found. [ruby-dev:35074]
+
+Mon Aug 25 22:29:13 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_io.rb (test_dup): fix typo. see [ruby-dev:35958]
+
+Mon Aug 25 22:02:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): initialize
+ last_error. num_trans may be zero.
+ (rb_econv_convert0): num_trans may be zero.
+ (rb_econv_putbackable): ditto.
+ (rb_econv_putback): ditto.
+ (rb_econv_convert): input_ptr and output_ptr may be NULL.
+
+Mon Aug 25 19:05:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): should handle NODE_{AND,OR} as
+ "expression". [ruby-dev:35951]
+
+Mon Aug 25 17:36:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_io_ungetbyte): added prototype.
+
+ * io.c (rb_io_gets): use rb_io_getline_1 for unget buffer.
+
+ * ruby.c (load_file): use rb_io_ungetbyte.
+
+ * transcode.c (rb_econv_substr_append): fix for buffer overrun.
+
+ * win32/enc-setup.mak (BUILTIN_TRANSOBJS): added.
+
+Mon Aug 25 14:22:21 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * parse.y (YYSTYPE): struct RVarmap has been no longer
+ defined.
+ see also r11717 by matz.
+
+Mon Aug 25 10:42:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_econv_open_exc): constified.
+
+Mon Aug 25 07:10:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/emacs_mule.c: fix ctype.
+
+Mon Aug 25 00:52:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (BUILTIN_TRANSSRCS): defined.
+ (BUILTIN_TRANSOBJS): defined.
+
+ * enc/Makefile.in (BUILTIN_TRANSES): defined.
+
+ * enc/make_encmake.rb (BUILTIN_TRANSES): defined.
+
+ * enc/depend: don't generate rules for builtin transcoders.
+
+ * common.mk (COMMONOBJS): add BUILTIN_TRANSOBJS.
+ (enc.mk): pass BUILTIN_TRANSOBJS.
+ (newline.c): new rule.
+ (newline.$(OBJEXT)): new rule.
+ (srcs): newline.c added.
+
+ * Makefile.in (BUILTIN_TRANSSRCS): defined.
+ (BUILTIN_TRANSOBJS): defined.
+
+ * transcode.c (Init_transcode): call Init_newline.
+
+Mon Aug 25 00:11:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (declare_transcoder): arguments order changed.
+ (rb_declare_transcoder): call declare_transcoder just once.
+
+Sun Aug 24 19:48:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_t): use rb_econv_option_t.
+
+ * transcode.c: follow the rb_econv_t change.
+
+Sun Aug 24 19:40:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_init_copy): copy encs.
+
+Sun Aug 24 19:17:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_open): add an argument: vperm.
+ (open_key_args): call rb_io_open with perm.
+
+Sun Aug 24 19:11:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (sym_invalid): removed.
+ (sym_undef): removed.
+ (sym_ignore): removed.
+ (sym_replace): removed.
+
+Sun Aug 24 19:07:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_reopen): initialize fptr->encs.opts.
+
+Sun Aug 24 18:37:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_s_pipe): accept optional hash.
+ (rb_io_set_encoding): ditto.
+ (rb_io_extract_modeenc): use rb_econv_opts to initialize
+ ecopts.
+ (rb_file_open_generic): ditto.
+ (rb_file_open_internal): ditto.
+ (io_encoding_set): new argument: opt.
+ (argf_set_encoding): copy fptr->encs.opts to argf_ecopts.
+
+ * transcode.c (rb_econv_opts): accept Qnil for initialization.
+
+Sun Aug 24 18:10:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_enc_t): add opts field.
+ (FMODE_INVALID_MASK): removed.
+ (FMODE_INVALID_IGNORE): ditto.
+ (FMODE_INVALID_REPLACE): ditto.
+ (FMODE_UNDEF_MASK): ditto.
+ (FMODE_UNDEF_IGNORE): ditto.
+ (FMODE_UNDEF_REPLACE): ditto.
+ (MakeOpenFile): initialize the opts field.
+
+ * io.c (make_writeconv): use the opts field.
+ (io_fwrite): ditto.
+ (make_readconv): ditto.
+ (argf_ecopts): new macro.
+ (rb_io_extract_modeenc): fill the opts field.
+ (argf_next_argv): ditto.
+ (rb_file_open_generic): initialize the opts field.
+ (rb_file_open_internal): ditto.
+ (io_encoding_set): ditto.
+ (argf_set_encoding): ditto.
+
+Sun Aug 24 18:02:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (struct argf): use struct rb_io_enc_t.
+ (argf_enc): follow the struct argf change.
+ (argf_enc2): ditto.
+
+Sun Aug 24 17:36:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_str_transcode): make 3rd argument
+ rb_econv_option_t*.
+
+ * transcode.c (transcode_loop): take rb_econv_option_t* as a argument.
+ (str_transcode0): ditto.
+ (str_transcode): make rb_econv_option_t and call str_transcode0 with
+ it.
+ (rb_str_transcode): take rb_econv_option_t*.
+
+ * io.c (io_fwrite): follow the rb_str_transcode change.
+
+Sun Aug 24 16:47:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): make enc and enc2 as struct
+ rb_io_enc_t;
+
+ * io.c: follow the structure change.
+ (convconfig_t): defined by rb_io_enc_t.
+
+Sun Aug 24 16:19:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_opts): declared.
+
+ * transcode.c (rb_econv_opts): defined.
+
+ * io.c (rb_io_extract_modeenc): use rb_econv_opts.
+
+Sun Aug 24 16:06:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_option_t): defined.
+ (rb_econv_open): 3rd arg changed.
+ (rb_econv_open_exc): ditto.
+
+ * io.c (make_writeconv): use rb_econv_option_t.
+ (make_readconv): ditto.
+ (rb_econv_open): take rb_econv_option_t for options.
+ (rb_econv_open_exc): ditto.
+ (transcode_loop): use rb_econv_option_t.
+ (econv_init): use rb_econv_option_t.
+
+Sun Aug 24 15:43:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_substr_append): associate dst with destination
+ encoding when dst is created.
+
+Sun Aug 24 15:21:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_str_transcode): add ecflags argument.
+
+ * transcode.c (econv_opts): extracted from str_transcode.
+ (str_transcode_enc_args): extracted from str_transcode.
+ (str_transcode0): extracted from str_transcode.
+ (str_transcode): use econv_opts, str_transcode_enc_args,
+ str_transcode0.
+ (rb_str_transcode): call str_transcode0.
+ (econv_primitive_insert_output): give the additional argument for
+ rb_str_transcode.
+
+ * io.c (make_writeconv): use invalid/undef flags.
+ (io_fwrite): ditto.
+ (rb_scan_open_args): give the additional argument for
+ rb_str_transcode.
+
+Sun Aug 24 13:27:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (str_transcode): check last hash only if 0 < argc.
+
+Sun Aug 24 12:22:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_substr_append): renamed from
+ rb_econv_string.
+ (rb_econv_str_convert): declared.
+ (rb_econv_substr_convert): declared.
+ (rb_econv_str_append): declared.
+
+ * io.c (io_fwrite): use rb_econv_str_convert instead of
+ rb_econv_string.
+
+ * transcode.c (rb_econv_substr_append): renamed from rb_econv_string.
+ (rb_econv_str_append): new function.
+ (rb_econv_substr_convert): ditto.
+ (rb_econv_str_convert): ditto.
+
+Sun Aug 24 12:15:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#urlencode): str[0] returns char in 1.9.
+ Patch by Junegunn Choi [ruby-core:18368]
+
+Sun Aug 24 12:02:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): return NULL on error.
+
+Sun Aug 24 11:40:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_open_exc): declared.
+
+ * transcode.c (rb_eNoConverter): new exception.
+ (rb_econv_open_exc): new function.
+ (transcode_loop): use rb_econv_open_exc.
+
+ * io.c (make_writeconv): use rb_econv_open_exc.
+ (make_readconv): ditto.
+
+Sun Aug 24 11:26:54 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::unescapeHTML): consider ISO-8859-1.
+ [ruby-dev:35936]
+
+Sun Aug 24 10:55:00 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/emacs_mule.c: support Emacs/Mule internal encoding.
+
+Sun Aug 24 08:03:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (daylight, timezone): not provided as dllexport on cygwin,
+ right now.
+
+Sun Aug 24 06:39:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::unescapeHTML): more encoding sensible unescaping.
+ [ruby-dev:35936]
+
+Sun Aug 24 04:23:19 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_compatible_p): raise TypeError when argument is Encoding.
+
+Sat Aug 23 23:25:47 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#out): remove auto encoding conversion and set
+ LANGUAGE. [ruby-dev:35922]
+
+Sat Aug 23 20:01:29 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_process.rb (TestProcess#test_rlimit_value):
+ add Errno::EINVAL. [ruby-dev:35900]
+
+Sat Aug 23 18:29:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_scan_open_args): use pop_last_hash.
+
+Sat Aug 23 16:59:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_INVALID_MASK): defined.
+ (FMODE_INVALID_IGNORE): defined.
+ (FMODE_INVALID_REPLACE): defined.
+ (FMODE_UNDEF_MASK): defined.
+ (FMODE_UNDEF_IGNORE): defined.
+ (FMODE_UNDEF_REPLACE): defined.
+
+ * io.c (sym_invalid): defined.
+ (sym_undef): defined.
+ (sym_ignore): defined.
+ (sym_replace): defined.
+ (make_readconv): specify ECONV_INVALID_* and ECONV_UNDEF_* if
+ FMODE_INVALID_* and FMODE_UNDEF_* is set.
+ (rb_io_extract_modeenc): check {:invalid, :undef} => {:replace,
+ :ignore} for FMODE_INVALID_* and FMODE_UNDEF_*.
+
+Sat Aug 23 17:06:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime): support more flags.
+
+Sat Aug 23 15:14:10 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_opts.h: enable "OPT_TRACE_INSTRUCTION" on default.
+
+Sat Aug 23 14:59:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_INVALID_MASK): defined.
+ (ECONV_INVALID_IGNORE): defined.
+ (ECONV_INVALID_REPLACE): defined.
+ (ECONV_UNDEF_MASK): defined.
+ (ECONV_UNDEF_IGNORE): defined.
+ (ECONV_UNDEF_REPLACE): defined.
+
+ * transcode.c (INVALID_IGNORE): removed.
+ (INVALID_REPLACE): removed.
+ (UNDEF_IGNORE): removed.
+ (UNDEF_REPLACE): removed.
+ (rb_econv_convert0): renamed from rb_econv_convert.
+ (rb_econv_convert): defined to call rb_econv_convert0 with
+ replace/ignore behavior moved from transcode_loop.
+ (transcode_loop): replace/ignore behavior removed.
+
+Sat Aug 23 11:23:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_extract_modeenc): check :textmode and :binmode in option
+ hash.
+
+Sat Aug 23 10:48:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (pty_getpty): follow rb_io_t's path -> pathv change.
+
+Sat Aug 23 10:42:52 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (check_pipe_command): extracted from rb_f_open and rb_io_open.
+ (rb_f_open): use check_pipe_command.
+ (rb_io_open): ditto.
+
+Sat Aug 23 10:13:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (read_all): fptr->enc2 is 0 if no conversion.
+ (rb_io_getline_fast): ditto.
+ (io_getc): ditto.
+
+Sat Aug 23 09:45:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): remove path field and add pathv field.
+ (MakeOpenFile): initialize pathv as Qnil.
+
+ * gc.c: mark pathv field in T_FILE.
+
+ * io.c: follow the rb_io_t field change.
+
+ * file.c: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+Sat Aug 23 01:42:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_TEXTMODE): defined.
+
+ * include/ruby/encoding.h (rb_econv_t): new field: flags.
+ (rb_econv_binmode): declared.
+
+ * io.c (io_unread): text mode hack removed.
+ (NEED_NEWLINE_DECODER): defined.
+ (NEED_NEWLINE_ENCODER): defined.
+ (NEED_READCONV): defined.
+ (NEED_WRITECONV): defined.
+ (TEXTMODE_NEWLINE_ENCODER): defined for windows.
+ (make_writeconv): setup converter with TEXTMODE_NEWLINE_ENCODER for
+ text mode.
+ (io_fwrite): use NEED_WRITECONV. character code conversion is
+ disabled if fptr->writeconv_stateless is nil.
+ (make_readconv): setup converter with
+ ECONV_UNIVERSAL_NEWLINE_DECODER for text mode.
+ (read_all): use NEED_READCONV.
+ (appendline): use NEED_READCONV.
+ (rb_io_getline_1): use NEED_READCONV.
+ (io_getc): use NEED_READCONV.
+ (rb_io_ungetc): use NEED_READCONV.
+ (rb_io_binmode): OS-level text mode test removed. call
+ rb_econv_binmode.
+ (rb_io_binmode_m): call rb_io_binmode_m with write_io as well.
+ (rb_io_flags_mode): return mode string including "t".
+ (rb_io_mode_flags): detect "t" for text mode.
+ (rb_sysopen): always specify O_BINARY.
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): initialize flags.
+ (rb_econv_open): if source and destination encoding is
+ both empty string, open newline converter. last_tc will be NULL in
+ this case.
+ (rb_econv_encoding_to_insert_output): last_tc may be NULL now.
+ (rb_econv_string): ditto.
+ (output_replacement_character): ditto.
+ (transcode_loop): ditto.
+ (econv_init): ditto.
+ (econv_inspect): ditto.
+ (rb_econv_binmode): new function.
+
+Fri Aug 22 21:18:40 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_div): now behaves as quo.
+
+ * complex.c (nucomp_s_generic_p): has been removed.
+
+ * complex.c (nucomp_to_s): adopts new form.
+
+ * complex.c (nucomp_inspect): ditto.
+
+ * complex.c (string_to_c_internal): ditto and supports polar form.
+
+ * complex.c (rb_complex_polar): new.
+
+ * rational.c (nurat_to_s): do not canonicalize.
+
+ * rational.c (nurat_inspect): adopts new form.
+
+ * rational.c (string_to_r_internal): ditto.
+
+ * include/ruby/intern.h: added a declaration.
+
+ * lib/complex.rb: added an obsolete class method.
+
+ * lib/cmath.rb: use scalar? instead of generic?.
+
+Fri Aug 22 20:06:46 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#shutdown):
+ rescue Errno::ENOTCONN and close. [ruby-dev:35896]
+
+ * test/openssl/test_ssl.rb (OpenSSL#start_server): ditto.
+ [ruby-dev:35897]
+
+ * lib/net/imap.rb (Net::IMAP#disconnect): ditto. [ruby-dev:35898]
+
+Fri Aug 22 19:58:27 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: no need to require the "lib/rational.rb" any more.
+
+Fri Aug 22 15:47:38 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/cgi.rb: use bytesize instead of size/length.
+
+Fri Aug 22 14:28:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime): supported flags and precision for most
+ conversions. [ruby-dev:35906]
+
+Fri Aug 22 14:04:04 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: test_shift_jis:
+ fixed comment strings (see r18291)
+
+Fri Aug 22 12:41:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_pid): use PIDT2NUM.
+
+Fri Aug 22 11:36:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (dir_enc_str_new): set US-ASCII to the path
+ when the path is 7bit string and encoding is ASCII compatible.
+
+ * dir.c (push_glob): set file system encoding when argument encoding
+ is US-ASCII.
+
+Fri Aug 22 11:30:38 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (dir_enc_str_new): renamed from dir_enc_str.
+
+ * dir.c (dir_read): use dir_enc_str_new.
+
+ * dir.c (dir_each): ditto.
+
+ * dir.c (push_pattern): ditto.
+
+Fri Aug 22 11:29:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: remove config.h dependency.
+
+Fri Aug 22 10:52:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (gmtime_r): check if reentrant versions are available.
+
+ * time.c (IF_HAVE_GMTIME_R, ASCTIME, GMTIME, LOCALTIME): use reentrant
+ versions if available.
+
+Fri Aug 22 05:29:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (INT2NUM): just use a simple macro on LP64.
+ (UINT2NUM): ditto.
+
+Fri Aug 22 05:10:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_file_open_generic): take filename as a VALUE.
+ (rb_file_open_internal): ditto.
+ (rb_io_open): ditto.
+ (rb_file_open): pass filename as a VALUE to rb_file_open_internal.
+ (rb_open_file): pass filename as a VALUE to rb_file_open_generic.
+ (open_key_args): pass filename as a VALUE to rb_io_open.
+
+Fri Aug 22 04:33:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h: fix previous change for LP64.
+
+Fri Aug 22 03:19:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (NUM2LONG): make it inline function to evaluate
+ the argument only once.
+ `t = Object.new; def t.*(x) p x; 0 end; p Time.at(0, t)' did print x
+ twice.
+ (NUM2INT): ditto.
+ (NUM2LL): ditto.
+ (INT2NUM): make it inline function.
+ (LONG2NUM): ditto.
+ (UINT2NUM): ditto.
+ (ULONG2NUM): ditto.
+
+Fri Aug 22 03:03:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_s_sysopen): mode can be a Bignum.
+
+Fri Aug 22 02:57:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_extract_modeenc): notify coerced to caller.
+ (rb_io_initialize): mode may be a Bignum.
+
+Fri Aug 22 02:42:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_extract_modeenc): use rb_check_to_integer to test
+ integer.
+
+Fri Aug 22 02:25:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * iseq.c (iseq_inspect): don't raise on uninitialized object.
+ show real class name.
+
+Fri Aug 22 02:08:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_initialize): accept hash argument.
+
+Thu Aug 21 23:51:51 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): supported %F and %<precision>N.
+ reverted config.h to ruby.h for Windows.
+
+ * test/ruby/test_time.rb (TestTime::test_strftime): added tests
+ for %F and %N.
+
+ * time.c: documented %F and %N.
+
+Thu Aug 21 20:23:26 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb#test_str_crypt): add
+ key and salt to error message.
+
+Thu Aug 21 19:20:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * file.c (rb_stat_inspect): don't raise if self is not initialized.
+
+Thu Aug 21 19:17:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (pst_pid): use rb_attr_get to avoid warning on
+ Process::Status.allocate.pid.
+ (pst_inspect): don't raise if self is not initialized.
+
+Thu Aug 21 19:05:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_extract_encoding_option): if internal encoding is not
+ specified, enc is external encoding.
+
+Thu Aug 21 14:22:50 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c: include ruby/config.h instead of ruby/ruby.h.
+
+ * common.mk: removed the old rule for missing/strftime.c.
+
+Thu Aug 21 09:29:01 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c (rb_strftime): return "UTC" instead of "GMT".
+
+ * test/ruby/test_time.rb (test_strftime): ditto.
+
+Thu Aug 21 07:59:04 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/iconv/test_option.rb (test_ignore_option): skip if iconv
+ doesn't have transliterate.
+
+ * test/iconv/test_option.rb (test_translit_option): ditto.
+
+Thu Aug 21 06:12:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/scanf.rb (Scanf::FormatSpecifier#initialize): %i should accept
+ single digit decimal. [ruby-core:18355]
+
+Thu Aug 21 06:02:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_initialize_copy): Range is now a Struct.
+ [ruby-core:18353]
+
+ * struct.c (rb_struct_init_copy): made public.
+
+Thu Aug 21 03:09:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_extract_encoding_option): enc2 is external encoding if
+ external encoding and internal encoding is given.
+ (pipe_open): add flags and convconfig argument to initialize
+ fptr->{mode,enc,enc2}.
+ (pipe_open_v): pass flags and convconfig from caller to pipe_open.
+ (pipe_open_s): ditto.
+ (pop_last_hash): new function.
+ (rb_io_s_popen): use last hash as option to specify code conversion.
+ (rb_io_open): specify flags and convconfig arguments for
+ pipe_open_s.
+ (rb_f_backquote): ditto.
+
+Thu Aug 21 02:27:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (prep_io): local variable renamed.
+ (rb_io_fdopen): ditto.
+ (prep_stdio): ditto.
+
+Thu Aug 21 01:58:59 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * configure.in: always check timezone().
+
+ * strftime.c (rb_strftime): prefer timezone/altzone rather than
+ gettimeofday(). The second argument to gettimeofday() is ignored
+ on Solaris.
+
+Thu Aug 21 02:03:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (open_key_args): simplified.
+
+Thu Aug 21 01:57:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (open_key_args): IO.foreach(path, rs, limit) didn't work.
+
+Thu Aug 21 01:31:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_file_sysopen_internal): unused function removed.
+ (rb_file_sysopen): ditto.
+
+Thu Aug 21 01:09:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c: use mode_t for the 3rd argument, permission, of open(2).
+
+Thu Aug 21 00:51:42 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * configure.in: removed strftime from AC_REPLACE_FUNCS().
+
+ * include/ruby/missing.h: removed prototype for strftime().
+
+ * missing/strftime.c: removed.
+
+ * time.c (time_to_s): use rb_strftime() instead of strftime(3).
+ (time_zone): ditto.
+
+Thu Aug 21 00:49:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * strftime.c: win32 support.
+
+Thu Aug 21 00:20:05 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * strftime.c: new file.
+
+ * common.mk (COMMONOBJS): added strftime.$(OBJEXT).
+
+ * time.c (time_strftime): do not use strftime(3). supported
+ %L(millisecond) and %N(nanosecond).
+
+ * test/ruby/test_time.rb: added tests for %L and %N.
+
+Wed Aug 20 23:53:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_set_encoding): removed.
+ (rb_io_open): set up encoding using new argument opt.
+ (open_key_args): call rb_io_open with opt. don't call
+ io_set_encoding.
+
+Wed Aug 20 22:30:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_file_open_internal): use rb_io_flags_modenum.
+ (rb_io_reopen): use rb_io_flags_modenum and rb_io_modenum_mode.
+ (rb_io_stdio_file): ditto.
+
+Wed Aug 20 22:28:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_new): use the given class.
+
+ * vm.c (vm_make_proc): added an argument for the class.
+
+Wed Aug 20 22:24:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_take): get rid of extraneous iteration.
+
+Wed Aug 20 20:32:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_open_with_args): use rb_open_file instead of rb_io_open.
+
+Wed Aug 20 20:16:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_scan_open_args): extracted from rb_open_file.
+
+Wed Aug 20 19:22:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (convconfig_t): new type.
+ (rb_io_extract_modeenc): new function.
+ (rb_file_open_generic): new function.
+ (rb_file_open_internal): use rb_file_open_generic.
+ (rb_file_sysopen_internal): use rb_file_open_generic.
+ (rb_open_file): use rb_io_extract_modeenc and rb_file_open_generic.
+ (rb_io_open): call rb_file_open_internal instead of rb_file_open.
+
+Wed Aug 20 19:15:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (Init_IO): new constants: File::DSYNC, File::RSYNC and
+ File::NOFOLLOW.
+
+Wed Aug 20 18:41:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_open_file): don't lookup :mode and :perm in opt. it is
+ useless because vmode and perm is overwritten by rb_scan_args
+ anyway.
+
+Wed Aug 20 18:37:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (open_key_args): meaningless MEMCPY removed.
+
+Wed Aug 20 18:30:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (prep_io) [cygwin]: use FMODE_BINMODE instead of O_BINARY.
+
+Wed Aug 20 16:39:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sample): performance improvement for huge array.
+
+Wed Aug 20 12:28:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sample): get rid of infinite loop. #455
+
+Wed Aug 20 06:09:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_TRUNC): value changed because 0x100 is used
+ as FMODE_NOREVLOOKUP in socket.c
+
+Wed Aug 20 05:19:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (parse_mode_enc): extracted from mode_enc.
+ (io_extract_encoding_option): extracted from io_set_encoding.
+
+Wed Aug 20 04:17:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_flags_modenum): make it static.
+
+Wed Aug 20 03:36:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_TRUNC): new constant.
+
+ * io.c (rb_io_mode_flags): set FMODE_TRUNC for "w".
+ (rb_io_modenum_flags): set FMODE_TRUNC for O_TRUNC.
+ (rb_io_flags_modenum): new function.
+ (rb_io_mode_modenum): just use rb_io_mode_flags and
+ rb_io_flags_modenum.
+
+Wed Aug 20 02:36:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fopen): macro for vms removed. fopen is not used now.
+
+Wed Aug 20 02:27:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open): fix memory leak.
+ (rb_econv_close): ditto.
+ fixed by shinichiro.h. [ruby-dev:35880]
+
+Tue Aug 19 21:50:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_fopen): declaration removed.
+
+ * io.c (rb_fopen): unused function removed.
+
+Tue Aug 19 21:14:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_READWRITE): define as
+ FMODE_READABLE|FMODE_WRITABLE.
+
+Tue Aug 19 21:13:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_flags_mode): use hexadecimal in error message.
+ (rb_io_modenum_mode): ditto.
+ (rb_io_initialize): ditto.
+
+Tue Aug 19 18:23:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_flags_mode): add a prefix 0 to octal in error message.
+ (rb_io_modenum_mode): ditto.
+
+Tue Aug 19 18:05:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (FMODE_*): sorted and describe the values in
+ hexadecimal.
+
+Tue Aug 19 17:32:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): store the
+ result of d2i_X509_NAME into DATA_PTR(self).
+
+Tue Aug 19 04:54:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rake.rb (FileUtils#ruby): takes care of space containing path.
+ [ ruby-Bugs-21591 ]
+
+Tue Aug 19 01:32:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_open_file): encoding in mode string was ignored if perm is
+ specified.
+
+Tue Aug 19 01:02:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_open_file): don't access argv[-1] by
+ File.allocate.instance_eval { initialize }.
+
+Tue Aug 19 00:56:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_inspect): don't raise for uninitialized Regexp.
+
+Tue Aug 19 00:34:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_check_readable): side effect for STDIN removed.
+ (rb_io_external_encoding): ditto.
+
+Mon Aug 18 23:27:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_ungetbyte): renamed from io_ungetc.
+ (rb_io_ungetbyte): new method.
+ (rb_io_ungetc): push back into character buffer if enc2 is set.
+
+Mon Aug 18 22:41:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (id_encode): removed.
+
+Mon Aug 18 22:30:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): if enc and enc2 is set, convert
+ string.encoding to enc2.
+
+ * include/ruby/io.h: comment changed.
+
+Mon Aug 18 21:02:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): new fields: writeconv,
+ writeconv_stateless and writeconv_initialized.
+ (MakeOpenFile): initialize them.
+
+ * include/ruby/encoding.h (rb_econv_stateless_encoding): declared.
+ (rb_econv_string): declared.
+
+ * io.c (make_writeconv): new function.
+ (io_fwrite): use econv.
+ (make_readconv): fix error message.
+ (finish_writeconv): new function.
+ (fptr_finalize): call finish_writeconv.
+ (clear_writeconv): new function.
+ (clear_codeconv): new function to call both clear_readconv and
+ clear_writeconv.
+ (rb_io_fptr_finalize): call clear_codeconv instead of
+ clear_readconv.
+ (mode_enc): ditto.
+ (io_set_encoding): ditto.
+ (argf_next_argv): ditto.
+ (io_encoding_set): ditto.
+
+ * gc.c (gc_mark_children): mark writeconv_stateless in T_FILE.
+
+ * transcode.c (stateless_encoding_i): new function.
+ (rb_econv_stateless_encoding): ditto.
+ (rb_econv_string): ditto.
+
+Mon Aug 18 17:23:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (clear_readconv): extracted from rb_io_fptr_finalize.
+ (mode_enc): call clear_readconv.
+ (io_set_encoding): ditto.
+ (argf_next_argv): ditto.
+ (io_encoding_set): ditto.
+
+Mon Aug 18 16:54:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (mode_enc): modify enc and enc2 consistently.
+ (io_set_encoding): ditto.
+ (io_encoding_set): ditto.
+
+Mon Aug 18 13:21:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_search_path): prevent infinite loop by
+ searching a path for self conversion.
+
+Mon Aug 18 12:45:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_enc_str): code conversion removed.
+ (io_enc_str_converted): removed because it is identical to
+ io_enc_str now.
+
+Mon Aug 18 12:12:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_shift_crbuf): add strp argument to append into existing
+ string.
+ (read_all): use econv if enc2 is set.
+ (io_getc): follow the io_shift_crbuf change.
+
+Mon Aug 18 10:35:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_enc_str_converted): new function.
+ (make_readconv): extracted from io_getc.
+ (more_char): ditto.
+ (appendline): use econv via make_readconv and more_char for code
+ conversion.
+ (prepare_getline_args): don't convert record separator.
+ (rb_io_getline_1): don't use rb_io_getline_fast if enc2 is set.
+ (io_getc): use make_readconv and more_char.
+
+Mon Aug 18 08:27:44 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * common.mk: fix error in uncommon.mk.
+
+Mon Aug 18 06:10:08 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: config.h depends config.status.
+
+Mon Aug 18 03:59:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (appendline): appendline cannot check character boundary.
+ (rb_io_getline_1): relax limit until character boundary.
+
+Mon Aug 18 02:25:11 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#eof?): added lacked method.
+
+Sun Aug 17 21:50:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (prepare_getline_args): io.gets(10,nil) should cause TypeError.
+
+Sun Aug 17 15:58:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: not check config.h.
+
+ * lib/mkmf.rb (init_mkmf): add include/ruby/backward to $INCFLAGS.
+
+ * include/ruby/backward/{st,util}.h: added for backward compatibility.
+ [ruby-dev:35811]
+
+Sun Aug 17 13:40:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_putback): new method.
+
+Sun Aug 17 13:23:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_putbackable): declared.
+ (rb_econv_putback): ditto.
+
+ * transcode.c (rb_econv_putbackable): implemented.
+ (rb_econv_putback): ditto.
+
+ * io.c (io_getc): put back bytes if possible.
+
+Sun Aug 17 12:00:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (make_econv_exception): add several instance variables
+ to exception object.
+ (ecerr_source_encoding): new method:
+ Encoding::ConversionUndefined#source_encoding and
+ Encoding::InvalidByteSequence#source_encoding.
+ (ecerr_destination_encoding): new method:
+ Encoding::ConversionUndefined#destination_encoding and
+ Encoding::InvalidByteSequence#destination_encoding.
+ (econverr_error_char): new method:
+ Encoding::ConversionUndefined#error_char.
+ (econverr_error_bytes): new method:
+ Encoding::ConversionUndefined#error_bytes.
+
+Sun Aug 17 11:43:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (struct MT): packed Mersenne Twister staffs.
+
+ * random.c (struct RandSeed): packed random seed staffs.
+
+Sun Aug 17 08:38:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/iconv/test_option.rb (test_ignore_option): skip if iconv
+ doesn't have transliterate.
+
+ * test/iconv/test_option.rb (test_translit_option): ditto.
+
+Sun Aug 17 01:29:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): new fields: readconv, crbuf, crbuf_off,
+ crbuf_len, crbuf_capa.
+ (MakeOpenFile): initialize them.
+
+ * io.c (io_shift_crbuf): new function.
+ (io_getc): use econv.
+ (rb_io_fptr_finalize): finalize readconv and crbuf.
+
+Sun Aug 17 00:02:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_check_error): declared.
+
+ * transcode.c (make_econv_exception): new function.
+ (transcode_loop): use make_econv_exception.
+ (rb_econv_check_error): defined.
+
+Sat Aug 16 15:23:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_elem_t): fields removed: from and
+ to.
+ (rb_econv_t): new fields: source_encoding_name and
+ destination_encoding_name.
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): initialize the
+ new fields.
+ (rb_econv_open): set up the new fields.
+ (econv_inspect): use the new fields.
+
+Sat Aug 16 14:22:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_t): add fields: in_buf_start,
+ in_data_start, in_data_end, in_buf_end and last_trans_index.
+ (rb_econv_output): removed.
+ (rb_econv_insert_output): declared.
+ (rb_econv_encoding_to_insert_output): declared.
+
+ * enc/trans/newline.trans (rb_universal_newline): stateful_type
+ changed.
+
+ * transcode.c (transcode_restartable0): initialize inchar_start,
+ tc->recognized_len and next_table at beginning of the loop.
+ (rb_econv_open_by_transcoder_entries): initialize new fields.
+ (rb_econv_open): setup last_trans_index.
+ (trans_sweep): last out_buf_start can be non-NULL now.
+ (rb_econv_convert): check last out_buf_start and in_buf_start at
+ first.
+ (rb_econv_output_with_destination_encoding): removed.
+ (econv_just_convert): removed.
+ (rb_econv_output): removed.
+ (econv_primitive_output): method removed.
+ (rb_econv_encoding_to_insert_output): new function.
+ (allocate_converted_string): new function.
+ (rb_econv_insert_output): new function.
+ (econv_primitive_insert_output): new method.
+ (output_replacement_character): use rb_econv_insert_output. unused
+ arguments removed.
+
+Sat Aug 16 09:20:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_intern_const): tiny optimization.
+
+ * include/ruby/ruby.h (SSIZET2NUM, NUM2SSIZET, SSIZE_MAX, SSIZE_MIN):
+ macros for ssize_t.
+
+Sat Aug 16 08:11:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder_stateful_type_t): defined.
+ (rb_transcoder): add field: stateful_type.
+
+ * tool/transcode-tblgen.rb: generate stateful_type field as
+ stateless_converter.
+
+ * enc/trans/iso2022.trans: follow rb_transcoder change.
+
+ * enc/trans/newline.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+Fri Aug 15 23:07:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_just_convert): extracted from rb_econv_output.
+ (rb_econv_output): use econv_just_convert.
+ (econv_primitive_output): new method.
+
+Fri Aug 15 19:57:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_output): add str_encoding
+ argument.
+
+ * transcode.c (get_replacement_character): add repl_enc_ptr argument.
+ (rb_econv_output_with_destination_encoding): renamed from
+ rb_econv_output and make it static.
+ (rb_econv_output): convert str and call
+ rb_econv_output_with_destination_encoding.
+ (output_replacement_character): follow above interface change.
+
+Fri Aug 15 19:33:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_drop_bytes): use memmove.
+
+Fri Aug 15 18:33:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_t): add error_tc in last_error.
+
+ * transcode.c (rb_econv_convert): fill error_tc.
+
+Fri Aug 15 18:10:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_t): new field: last_error.
+
+ * transcode.c (rb_trans_conv): new argument: result_position_ptr.
+ (rb_econv_convert): fill last_error.
+ (econv_result_to_symbol): extracted from econv_primitive_convert.
+ (econv_primitive_errinfo): new method.
+
+Fri Aug 15 17:39:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.{c,h}): creates in the dependency order.
+
+Fri Aug 15 16:59:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (exec_event_hooks): skips RubyVM::FrozenCore.
+
+ * vm.c (Init_VM): get rid of SEGV in a trace proc.
+
+Fri Aug 15 09:33:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (conv_init): check empty name.
+
+Fri Aug 15 09:03:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_init): don't create dummy encoding if
+ rb_econv_open is failed.
+ (make_dummy_encoding): new function extracted from make_encoding.
+ (make_encoding): removed.
+
+Fri Aug 15 01:07:16 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk ({$(srcdir)}.y.c): escape backslash.
+
+Fri Aug 15 01:05:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): set destination_buffer
+ encoding.
+
+Fri Aug 15 00:52:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_output): declared.
+
+ * transcode_data.h (rb_transcoder): add resetsize_func field.
+
+ * enc/trans/iso2022.trans (iso2022jp_reset_sequence_size): defined.
+ (rb_EUC_JP_to_ISO_2022_JP): provide resetsize_func.
+
+ * tool/transcode-tblgen.rb: set NULL for resetsize_func.
+
+ * transcode.c (rb_econv_output): new function for inserting output.
+ (output_replacement_character): use rb_econv_output.
+ (transcode_loop): check return value of
+ output_replacement_character.
+
+Thu Aug 14 23:47:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ECONV_UNIVERSAL_NEWLINE_DECODER): defined.
+ (ECONV_CRLF_NEWLINE_ENCODER): ditto.
+ (ECONV_CR_NEWLINE_ENCODER): ditto.
+ (ECONV_PARTIAL_INPUT): ditto.
+ (ECONV_OUTPUT_FOLLOWED_BY_INPUT): ditto.
+
+ * transcode.c: use ECONV_* defined as above.
+
+Thu Aug 14 23:35:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c: local variable renamed.
+
+Thu Aug 14 23:22:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_econv_result_t): moved from
+ transcode_data.h.
+ (rb_econv_elem_t): ditto.
+ (rb_econv_t): ditto. source_encoding and destination_encoding field
+ is added.
+ (rb_econv_open): declared.
+ (rb_econv_convert): ditto.
+ (rb_econv_close): ditto.
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): initialize
+ source_encoding and destination_encoding field as NULL.
+ (rb_econv_open): make it external linkage.
+ (rb_econv_close): ditto.
+ (rb_econv_convert): ditto. renamed from rb_econv_conv.
+ (make_encoding): new function.
+ (econv_init): use make_encoding and store rb_encoding* in
+ rb_econv_t.
+ (econv_source_encoding): new method
+ Encoding::Converter#source_encoding.
+ (econv_destination_encoding): new method
+ Encoding::Converter#destination_encoding.
+
+Thu Aug 14 22:44:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_econv_result_t): change enumeration
+ constant's prefix: transcode_ to econv_.
+
+ * transcode.c: follow the constant prefix change.
+
+Thu Aug 14 21:34:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_init): accept Encoding object as source_encoding
+ and destination_encoding.
+
+Thu Aug 14 21:10:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_filesystem_encoding): use default external encoding
+ for Unix.
+
+ * dir.c (dir_initialize): don't cache fs_encoding.
+
+Thu Aug 14 20:58:57 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_open_by_transcoder_entries): renamed from
+ rb_trans_open_by_transcoder_entries.
+
+Thu Aug 14 20:56:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_max_output): removed.
+
+Thu Aug 14 20:52:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: check unexpected actions.
+
+Thu Aug 14 20:25:52 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (transcode_invalid_byte_sequence): renamed from
+ transcode_invalid_input.
+ (transcode_destination_buffer_full): renamed from transcode_obuf_full.
+ (transcode_source_buffer_empty): renamed from transcode_ibuf_empty.
+ (rb_econv_result_t): renamed from rb_trans_result_t.
+ (rb_econv_elem_t): renamed from rb_trans_elem_t.
+ (rb_econv_t): renamed from rb_trans_t.
+
+ * transcode.c (UNIVERSAL_NEWLINE_DECODER): renamed from
+ UNIVERSAL_NEWLINE.
+ (CRLF_NEWLINE_ENCODER): renamed from CRLF_NEWLINE.
+ (CR_NEWLINE_ENCODER): renamed from CR_NEWLINE.
+ (rb_econv_open): renamed from rb_trans_open.
+ (rb_econv_close): renamed from rb_trans_close.
+
+Thu Aug 14 19:41:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (load_transcoder): unused function removed.
+ (rb_transcoding_open): ditto.
+
+Thu Aug 14 17:57:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_ispunct): added.
+
+ * common.mk (COMMONOBJS), inits.c (rb_call_inits): id.c is now
+ included from parse.c.
+
+ * id.c (Init_id), id.h (ruby_method_ids): added IDs used by VM.
+
+ * parse.y (global_symbols): added rooms for VM IDs.
+
+ * parse.y (rb_intern3, rb_id2str): single punctuation symbol is now
+ same as char code.
+
+Thu Aug 14 17:46:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (union tmpyystype): no longer needed, since YYSTYPE is
+ defined in parse.h now.
+
+Thu Aug 14 17:27:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * version.c (Init_version): add RUBY_ENGINE constant.
+
+Thu Aug 14 15:34:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_econv_conv): new function. it doesn't consume
+ input too much, even for multilevel conversion.
+ (transcode_loop): use rb_econv_conv.
+ (econv_primitive_convert): ditto.
+
+Thu Aug 14 15:27:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/defines.h (RUBY_ALIAS_FUNCTION): fallback definition.
+
+Thu Aug 14 15:08:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_trans_result_t): new enumeration constant:
+ transcode_output_followed_by_input.
+
+ * transcode.c (OUTPUT_FOLLOWED_BY_INPUT): new flag.
+ (transcode_restartable0): suspend when output followed by input if
+ OUTPUT_FOLLOWED_BY_INPUT is specified.
+ (trans_sweep): check OUTPUT_FOLLOWED_BY_INPUT.
+ (rb_trans_conv): support OUTPUT_FOLLOWED_BY_INPUT.
+ (econv_primitive_convert): return :output_followed_by_input for
+ transcode_output_followed_by_input.
+
+Thu Aug 14 14:57:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (getrusage_time): should return the value.
+
+ * thread.c (rb_thread_priority_set): get rid of C99 feature.
+
+ * transcode.c (transcode_search_path): ditto.
+
+ * vm.c (REWIND_CFP): get rid of statement expressions.
+
+Thu Aug 14 14:13:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (Init_VM): hide FrozenCore.
+
+Thu Aug 14 12:20:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (load_transcoder): suppress warning.
+
+ * missing/vsnprintf.c (BSD_vfprintf): ditto.
+
+Thu Aug 14 12:01:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (gnumake): check for GNU make.
+
+ * Makefile.in (uncommon.mk): includes filtered common.mk.
+
+ * common.mk (parse.h): workaround for nmake.
+
+Thu Aug 14 06:09:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_execute_interrupts): switch event
+ should be occur only once.
+
+Thu Aug 14 05:36:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: parse.h depends on parse.c.
+
+ * common.mk: hash.o depends on $(ID_H_INCLUDES).
+
+Thu Aug 14 02:45:16 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_file_exhaustive.rb (TestFileExhaustive#setup):
+ set group of tmpdir. [ruby-dev:35633]
+
+Thu Aug 14 15:50:30 2008 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * hash.c (set_default): fix rdoc. #441
+
+Thu Aug 14 02:23:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): add output_byteoffset
+ argument.
+
+Thu Aug 14 00:43:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_gcc_function_alias): checks alias attribute.
+
+ * string.c (alias_func): replaced with RUBY_ALIAS_FUNCTION.
+
+Wed Aug 13 23:42:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.h): fake rule.
+
+Wed Aug 13 23:15:58 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_thread.rb (test_list): call Thread.pass to run t1.
+ fixed [ruby-core:18264].
+
+Wed Aug 13 23:05:51 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * string.c (alias_func): changed to 'weak, alias' from 'alias' for
+ Mac OSX. (closes #429)
+
+Wed Aug 13 19:40:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: count only freed object as freelist size.
+
+Wed Aug 13 18:34:22 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * marshal.c (marshal_load): set arg.untrust properly.
+
+Wed Aug 13 17:47:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_inspect): new method.
+
+Wed Aug 13 17:35:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_restartable0): several local variables
+ removed.
+
+Wed Aug 13 17:35:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_set_default_proc): add new method. a patch from
+ Giuseppe Bilotta. #419
+
+Wed Aug 13 17:31:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_insnhelper.c (caller_setup_args): should ensure if the value
+ from to_proc is a real Proc.
+
+Wed Aug 13 17:28:29 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * common.mk: regint.h no longer includes vm_core.h.
+
+Wed Aug 13 17:26:44 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): add fields: writebuf_off,
+ writebuf_len and writebuf.
+ (TRANSCODING_WRITEBUF): new macro.
+
+ * transcode.c (transcode_restartable0): output until output buffer is
+ really full.
+ (rb_transcoding_open_by_transcoder): initialize writebuf_len,
+ writebuf_off and writebuf.
+ (rb_transcoding_close): finalize writebuf.
+
+Wed Aug 13 17:18:37 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_check_ints): added. please note that
+ this function may cause ruby's thread switching.
+
+ * include/ruby/intern.h: ditto.
+
+ * regint.h: use rb_thread_check_ints() instead of
+ RUBY_CHECK_INTS() directly.
+
+Wed Aug 13 17:01:36 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * golf_prelude.rb, lib/set.rb (TC_Set#test_each),
+ test/readline/test_readline_history.rb (Readline#test_each__enumerator),
+ test/ruby/test_array.rb (TestArray#test_collect),
+ test/ruby/test_enumerator.rb (TestEnumerator#test_initialize):
+ Enumerable::Enumerator is now called Enumerator.
+
+ * lib/rinda/tuplespace.rb (Rinda::TupleBag#initialize): Use
+ enum_for instead of hardcoding Enumerable::Enumerator.
+
+Wed Aug 13 16:40:57 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, vm_core.h: add manual priority support
+ using time slice. if you enable USE_NATIVE_THREAD_PRIORITY
+ macro, this mechanism is ignored. [ruby-dev:33124]
+
+ * thread_pthread.c, thread_win32.c: ditto.
+
+ * test/ruby/test_thread.rb: fix test parameter.
+
+Wed Aug 13 16:02:14 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * object.c (rb_obj_untrusted): new method Object#untrusted?.
+ (rb_obj_untrust): new method Object#untrust.
+ (rb_obj_trust): new method Object#trust.
+
+ * array.c, debug.c, time.c, include/ruby/ruby.h, re.c, variable.c,
+ string.c, io.c, dir.c, vm_method.c, struct.c, class.c, hash.c,
+ ruby.c, marshal.c: fixes for Object#untrusted?.
+
+ * test/ruby/test_module.rb, test/ruby/test_array.rb,
+ test/ruby/test_object.rb, test/ruby/test_string.rb,
+ test/ruby/test_marshal.rb, test/ruby/test_hash.rb: added tests for
+ Object#untrusted?.
+
+Wed Aug 13 16:13:58 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_m17n.rb: follow EncodingCompatibilityError.
+
+ * test/ruby/test_mixed_unicode_escapes.rb: ditto.
+
+ * test/ruby/enc/test_utf16.rb: ditto.
+
+Wed Aug 13 16:05:50 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_cmp): retry with right hand operand if its not a
+ time object. [ruby-dev:35011]
+
+Wed Aug 13 15:51:22 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c: Apply a temporary fix to fix build on OS X. A real
+ fix will follow later.
+
+Wed Aug 13 15:25:09 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (Init_Enumerator): Rename Enumerable::Enumerator to
+ just Enumerator.
+
+Wed Aug 13 15:13:57 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * common.mk (prelude.c, golf_prelude.c): Using $(COMPILE_PRELUDE)
+ requires $(RBCONFIG).
+
+Wed Aug 13 15:08:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_init): make flags argument optional.
+ (econv_primitive_convert): ditto.
+
+Wed Aug 13 14:55:27 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * common.mk (realclean-local): Remove parse.h as well.
+
+ * common.mk: Add missing dependencies regarding vm_core.h, id.h,
+ parse.c (parse.h), etc..
+
+Wed Aug 13 14:45:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans (rb_crlf_newline): new transcoder.
+ (rb_cr_newline): new transcoder.
+
+ * transcode.c (trans_open_i): one more extra room for input newline
+ converter.
+ (rb_trans_open): crlf newline and cr newline implemented.
+ (Init_transcode): Encoding::Converter::CRLF_NEWLINE and
+ Encoding::Converter::CR_NEWLINE defined.
+
+Wed Aug 13 14:22:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/newline.trans: new file.
+
+ * transcode_data.h (rb_trans_t): add last_tc field.
+
+ * transcode.c (UNIVERSAL_NEWLINE): defined.
+ (CRLF_NEWLINE): defined.
+ (CR_NEWLINE): defined.
+ (rb_trans_open_by_transcoder_entries): initialize last_tc.
+ (trans_open_i): allocate one more room for output newline converter.
+ (rb_trans_open): universal newline implemented.
+ (more_output_buffer): take max_output argument instead ts.
+ (output_replacement_character): take tc argument instead of ts.
+ (transcode_loop): use last_tc field.
+ (econv_init): add flags argument for rb_trans_open.
+ (Init_transcode): Encoding::Converter::UNIVERSAL_NEWLINE defined.
+
+Wed Aug 13 14:00:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.c): generates parse.h together.
+
+ * id.c, id.h: use constants for parser tokens.
+
+Wed Aug 13 13:47:05 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: rewind cfp to show proper backtrace.
+ [ruby-dev:35820]
+
+Wed Aug 13 13:09:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: fix for clean up.
+
+Wed Aug 13 11:45:51 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * vm_core.h: Declare rb_iseq_clone, which is used in class.c.
+
+Wed Aug 13 11:39:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_search_path): return the length of converter
+ path.
+ (load_transcoder_entry): renamed from load_transcoder.
+ (load_transcoder): new function for loading transcoder by encoding
+ names.
+ (rb_transcoding_open_by_transcoder): extracted from
+ rb_transcoding_open.
+ (rb_transcoding_open): use load_transcoder and
+ rb_transcoding_open_by_transcoder.
+ (rb_trans_open_by_transcoder_entries): new function.
+ (trans_open_i): construct entries array.
+ (rb_trans_open): use rb_trans_open_by_transcoder_entries.
+
+Wed Aug 13 10:45:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: try to find exported directory.
+
+Wed Aug 13 10:16:35 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * doc/NEWS: Mention the Readline.vi_editing_mode?,
+ Readline.emacs_editing_mode?, Readline::HISTORY[] and
+ Readline::HISTORY.clear change.
+
+Wed Aug 13 08:03:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (econv_primitive_convert): add output_size argument.
+
+Wed Aug 13 07:41:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_trans_conv): report last transcode_obuf_full.
+ (econv_max_output): new method Encoding::Converter#max_output.
+
+Wed Aug 13 02:46:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (rb_eEncCompatError): add Exception.
+
+ * include/ruby/ruby.h: ditto.
+
+ * encoding.c (rb_enc_check): use rb_eEncCompatError.
+
+ * string.c (rb_enc_cr_str_buf_cat): ditto.
+
+ * string.c (rb_str_sub_bang): ditto.
+
+ * string.c (rb_str_hex): ditto.
+
+ * string.c (rb_str_oct): ditto.
+
+Wed Aug 13 02:36:47 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (str_transcode): fix error message.
+
+Tue Aug 12 23:42:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_cEncodingConverter): new class Encoding::Converter.
+ (econv_free): new function.
+ (econv_s_allocate): ditto.
+ (econv_init): ditto.
+ (check_econv): ditto.
+ (econv_primitive_convert): new method.
+ (Init_transcode): define Encoding::Converter.
+
+Tue Aug 12 23:16:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_splice_0): call rb_str_drop_bytes, not rb_str_drop.
+
+Tue Aug 12 19:11:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: fix for enc.mk.
+
+Tue Aug 12 19:08:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_drop_bytes): new function to drop first bytes.
+
+Tue Aug 12 18:58:48 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_insnhelper.c (vm_define_method): move
+ function place.
+
+Tue Aug 12 18:56:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c: more descriptive aliases of rb_str_new[2-5].
+ [ruby-dev:35615]
+
+Tue Aug 12 18:51:29 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * gc.c (getrusage_time): Returned effective value on Windows.
+
+Tue Aug 12 18:51:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_trans_open): free ts before raise.
+
+Tue Aug 12 18:46:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): should not ignore
+ <=> comparison. [ruby-dev:35732]
+
+Tue Aug 12 18:43:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/make_transdb.rb: *.erb.c is not used anymore.
+
+Tue Aug 12 18:32:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_trans_elem_t): new field: from and to.
+
+ * transcode.c (trans_open_i): just record from and to.
+ (rb_trans_open): load transcodings.
+
+Tue Aug 12 18:32:03 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c (mSyslog_open): Use of Check_SafeStr() is
+ deprecated.
+ (mSyslogConstants_LOG_MASK, mSyslogConstants_LOG_UPTO): Use
+ NUM2INT() instead of FIX2INT() when the type of an given object
+ is not determined.
+
+Tue Aug 12 18:14:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb (#transcode_tblgen): slight message
+ improvement.
+
+Tue Aug 12 17:16:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (trans_open_i): check the result of rb_transcoding_open.
+
+Tue Aug 12 16:23:32 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_profile_result): use rb_str_catf.
+
+Tue Aug 12 16:13:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (TRANSCODE_ERROR): removed.
+
+ * tool/transcode-tblgen.rb: 8bit byte of ASCII-8BIT is a valid
+ (but unique to ASCII-8BIT) character.
+
+ * transcode.c (rb_eConversionUndefined): new error.
+ (rb_eInvalidByteSequence): ditto.
+
+Tue Aug 12 16:08:51 2008 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: POP3Command should export @socket since POP
+ calls #socket.
+
+Tue Aug 12 16:06:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c, util.c (quorem, nrv_alloc, dtoa): enabled floating point
+ support.
+
+Tue Aug 12 15:52:45 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_profile_result): use sprintf.
+
+Tue Aug 12 15:37:40 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): should check symbol table overflow.
+
+Tue Aug 12 15:31:04 2008 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (send_request_with_body): Content-Length should
+ be byte length of string. (closes #203)
+
+Tue Aug 12 15:17:06 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: (transvpath_prefix): prefix has no extension, so replace
+ %s with "".
+
+Tue Aug 12 15:03:43 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline.rb (TestReadline#test_safe_level_4):
+ tested Readline.vi_editing_mode? and Readline.emacs_editing_mode?.
+
+Tue Aug 12 14:25:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (.SUFFIXES): renamed to .trans.
+
+ * enc/make_encmake.rb: added --encs and --no-encs options.
+
+ * enc/depend (TRANSVPATH): fix for nmake.
+
+Tue Aug 12 14:19:53 2008 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/https.rb: suppress syntax warning.
+
+Tue Aug 12 14:15:51 2008 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (Net::HTTP#initialize): initialize net/https
+ variables to suppress syntax warning.
+
+Tue Aug 12 14:15:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): fixed shadowing variable.
+
+Tue Aug 12 10:25:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete): Array#delete to return deleted element.
+
+Tue Aug 12 10:18:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/win32ole/test_err_in_callback.rb: do not require 'mkmf'
+ unless WIN32OLE is defined.
+
+Tue Aug 12 07:41:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): add resetstate_func field for
+ resetting a state of stateful encoding.
+
+ * enc/trans/iso2022.trans (rb_EUC_JP_to_ISO_2022_JP): specify
+ finish_eucjp_to_iso2022jp for resetstate_func.
+
+ * tool/transcode-tblgen.rb: specify NULL for resetstate_func.
+
+ * transcode.c (output_replacement_character): call resetstate_func
+ before appending the replacement character.
+
+Tue Aug 12 07:19:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (get_replacement_character): extracted from
+ output_replacement_character.
+
+Tue Aug 12 07:00:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): typedef at first.
+
+Tue Aug 12 06:48:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (rb_trans_conv): find second last error.
+
+Tue Aug 12 00:43:44 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_trans_result_t): new type.
+ (rb_trans_elem_t): new type.
+ (rb_trans_t): new type.
+
+ * transcode.c (transcode_dispatch_cb): removed.
+ (transcode_dispatch): removed.
+ (rb_transcoding_result_t): moved to rb_trans_result_t in
+ transcode_data.h.
+ (transcode_restartable0): goto follow_info when FUNsi.
+ (rb_transcoding_open): use get_transcoder_entry.
+ (rb_trans_open): new function.
+ (rb_trans_conv): ditto.
+ (rb_trans_close): ditto.
+ (trans_open_i): ditto.
+ (trans_sweep): ditto.
+ (more_output_buffer): take rb_trans_t instead of rb_transcoding as
+ an argument.
+ (transcode_loop): take from_encoding and to_encoding instead of tr
+ as arguments. use rb_trans_open/rb_trans_conv/rb_trans_close.
+ (str_transcode): don't use transcode_dispatch.
+
+Mon Aug 11 20:37:05 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * iseq.c (rb_iseq_clone): should preserve cref_stack link.
+
+Mon Aug 11 20:27:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): add taint check.
+
+ * ext/dl/dl.c (rb_dl_malloc): add rb_secure(2).
+
+ * ext/dl/dl.c (rb_dl_realloc): ditto.
+
+ * ext/dl/dl.c (rb_dl_free): ditto.
+
+ * ext/dl/dl.c (rb_dl_ptr2value): ditto.
+
+Mon Aug 11 20:11:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (getrusage_time): works only if RUSAGE_SELF is defined right
+ now.
+
+ * gc.c (gc_profile_result): C99.
+
+Mon Aug 11 18:57:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sample): rename #choice to #sample. in
+ addition, sample takes optional argument, a la #first.
+
+Mon Aug 11 18:28:02 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: added GC::Profiler.
+
+Mon Aug 11 17:26:16 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/README.ja: added API document for
+ Readline.vi_editing_mode? and Readline.emacs_editing_mode?.
+
+ * ext/readline/extconf.rb: checked rl_editing_mode variable in
+ Readline library.
+
+ * ext/readline/readline.c (readline_s_emacs_editing_mode_p): added
+ Readline.emacs_editing_mode? method.
+ (readline_s_vi_editing_mode_p): added Readline.vi_editing_mode?
+ method.
+ (Init_readline): ditto.
+
+Mon Aug 11 16:56:40 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * test/readline/test_readline.rb: added test for Readline's class
+ methods.
+
+Mon Aug 11 16:39:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (clone_method): should copy cbase in cref as well.
+ [ruby-dev:35116]
+
+ * iseq.c (iseq_mark): mark original iseq object.
+
+ * iseq.c (iseq_free): do not free internal data if they have
+ original iseq to belong.
+
+ * iseq.c (rb_iseq_clone): a new function to clone iseq value.
+
+Mon Aug 11 16:34:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/iso2022.trans: renamed from iso2022.erb.c.
+
+ * enc/trans/single_byte.trans: ditto.
+
+ * enc/trans/utf_16_32.trans: ditto.
+
+ * enc/trans/korean.trans: ditto.
+
+ * enc/trans/japanese.trans: ditto.
+
+ * enc/depend: follow the renaming.
+
+ * tool/build-transcode: ditto.
+
+Mon Aug 11 15:09:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (rb_cv_broken_glibc_ia64_erfc): renamed from
+ rb_broken_glibc_ia64_erfc.
+ [ruby-core:18228]
+
+Mon Aug 11 10:04:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): rename fields.
+ readlen -> recognized_len.
+ feedlen -> readagain_len.
+
+ * transcode.c: follow the field renaming.
+
+Sun Aug 10 22:34:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_restartable0): invalid handling simplified.
+ (transcode_restartable): use PARTIAL_INPUT for converting buffered
+ input.
+
+Sun Aug 10 22:24:24 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * encoding.c: include util.h. [ruby-dev:35715]
+
+ * common.mk: ditto.
+
+Sun Aug 10 20:59:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): new field: flags.
+
+ * transcode.c (load_transcoder): extracted from transcode_dispatch_cb.
+ (rb_transcoding_result_t): renamed from transcode_result_t.
+ (rb_transcoding_open): new function.
+ (rb_transcoding_convert): ditto.
+ (rb_transcoding_close): ditto.
+ (transcode_loop): use rb_transcoding_open, rb_transcoding_convert
+ and rb_transcoding_close.
+ (str_transcode): don't need rb_transcoding.
+
+Sun Aug 10 18:09:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: record checksum of
+ transcode-tblgen.rb itself.
+
+Sun Aug 10 12:34:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * config.guess ({powerpc-apple,i586-pc}-haiku): re-applied r18403.
+ [ruby-core:18110]
+
+ * config.{guess,sub}: updated to automake-1.10.1.
+
+Sun Aug 10 11:45:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (make-workdir): use MAKEDIRS.
+
+ * enc/depend: makes target directory before compile/link.
+
+ * tool/transcode-tblgen.rb: creates target directory.
+
+Sun Aug 10 11:30:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c: rename my_transcoding to tc and my_transcoder to tr.
+
+Sun Aug 10 11:15:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): add feedlen field.
+
+ * transcode.c (transcode_restartable0): renamed from
+ transcode_restartable.
+ save input buffer into feed buffer if next character is started the
+ point before input buffer. for example, "\x00\xd8\x01" then "\x02"
+ in UTF-16LE. \x02 causes invalid and next character is started from
+ \x01.
+ (transcode_restartable): new function to call
+ transcode_restartable0. if feed buffer is not empty, convert it at
+ first.
+
+Sun Aug 10 11:02:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (extconf): use MAKEDIRS.
+
+Sun Aug 10 09:35:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb.rb (IRB::Irb#inspect): instance_variables returns symbols
+ instead of strings now. [ruby-dev:34930]
+
+Sun Aug 10 09:22:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_char_start): refactored to remove readlen
+ argument.
+ (transcode_restartable): refactored to remove readlen variable.
+
+Sun Aug 10 08:56:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (STACK_LEVEL_MAX, ruby_stack_length): returns size_t.
+ [ruby-core:18207]
+
+ * configure.in (rb_cv_missing__dtos18, rb_cv_missing_fconvert),
+ ext/digest/md5/md5.c, ext/openssl/ossl.c (main),
+ ext/socket/extconf.rb (ipv6, wide-getaddrinfo): main should be int.
+
+ * main.c (main), win32/winmain.c, wince/wincemain.c (WinMain): envp is
+ no longer used so long time. based on a patch from Peter Bowen at
+ [ruby-core:18208]
+
+Sat Aug 9 22:05:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_loop): take destination and resize function
+ as parameters.
+ (more_output_buffer): ditto.
+ (str_transcoding_resize): argument changed from rb_transcoding* to
+ VALUE.
+ (str_transcode): call transcode_loop with destination string and its
+ resize function.
+
+ * transcode_data.h (rb_transcoding): move ruby_string_dest and
+ flush_func to transcode_loop parameters.
+
+Sat Aug 9 21:29:45 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: encs depend on transdb.h
+
+Sat Aug 9 21:10:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_rshift_sign, rb_cv_binary_elf): get rid of
+ AC_TRY_RUN.
+
+Sat Aug 9 16:33:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): new fields: next_info and next_byte.
+
+ * transcode.c (transcode_restartable): save/restore next_info and
+ next_byte.
+ sync readlen and in_p when invalid.
+
+Sat Aug 9 15:10:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode.c (transcode_restartable): my_transcoder argument removed.
+ (transcode_loop): my_transcoder argument removed.
+
+Sat Aug 9 14:39:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): add fields for restartable
+ transcoding.
+ (rb_transcoder): add max_input field.
+ from_unit_length field is renamed to input_unit_length.
+
+ * tool/transcode-tblgen.rb: generate max_input field.
+
+ * enc/trans/iso2022.erb.c: follow rb_transcoder change.
+
+ * enc/trans/utf_16_32.erb.c: ditto.
+
+ * transcode.c (PARTIAL_INPUT): new constant.
+ (transcode_char_start): new function.
+ (transcode_result_t): new type.
+ (transcode_restartable): new function.
+ (more_output_buffer): new function.
+ (transcode_loop): use transcode_restartable.
+
+Sat Aug 9 13:35:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * stable/ext/socket/socket.c (NI_MAXHOST, NI_MAXSERV): fixed invalid
+ preprocessor directives. a patch from Peter Bowen at
+ [ruby-core:18211].
+
+Sat Aug 9 06:37:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/make_encdb.rb, enc/trans/make_transdb.rb: skip nonexistent
+ directory. [ruby-dev:35802]
+
+Sat Aug 9 01:07:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/trans/utf_16_32.erb.c (fun_so_from_utf_32le): implemented.
+ (fun_so_to_utf_32le): implemented.
+ [ruby-dev:35777]
+
+Sat Aug 9 00:42:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoder): from_unit_length field added.
+ from_utf8 field removed.
+
+ * tool/transcode-tblgen.rb: generate offsets range.
+ follow rb_transcoder change.
+
+ * transcode.c (transcode_loop): don't use from_utf8.
+ make invalid region from_unit_length wise.
+
+ * enc/trans/iso2022.erb.c: follow rb_transcoder and
+ transcode_generate_node change.
+
+ * enc/trans/utf_16_32.erb.c: follow rb_transcoder and
+ transcode_generate_node change.
+ explicit :invalid map removed.
+
+Fri Aug 8 23:29:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (TRANSCSRCS): needs rule_subst to apply.
+
+ * io.c (shutdown): not define if defined already.
+
+Fri Aug 8 22:47:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (opt_eq_func): large function to make inline.
+
+ * bcc32/Makefile.sub (config.h): cannot compile a big inline function.
+
+Fri Aug 8 21:09:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (enk.mk): give not RUBY but MINIRUBY.
+
+Fri Aug 8 17:03:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (shutdown, sched_yield, pthread_attr_setinheritsched):
+ check for Haiku.
+
+ * eval_intern.h, io.c, thread_pthread.c: use autoconfisticated results.
+
+Fri Aug 8 16:52:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (enc.mk): mkmf.rb requires rbconfig.rb.
+
+ * common.mk (srcs-enc): renamed from transcodes.
+
+ * enc/Makefile.in (make-workdir): creates object directories.
+
+ * common.mk (encdb.h): see both $(srcdir)/enc and enc.
+
+ * enc/make_encdb.rb: ditto.
+
+ * enc/trans/make_transdb.rb: fix for the case no transdirs are given.
+
+ * enc/trans/make_transdb.rb: converts only one transcoders for each
+ basename.
+
+Fri Aug 8 10:53:52 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: randomize source port and transaction id.
+ CVE-2008-1447.
+
+ * lib/resolv-replace.rb (UDPSocket#bind): don't resolv host if host is
+ "".
+
+Fri Aug 8 04:20:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: see both $(srcdir)/enc/trans and enc/trans.
+
+ * enc/trans/make_transdb.rb: ditto.
+
+Fri Aug 8 00:05:02 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/.document: added readline/readline.c.
+
+ * ext/readline/readline.c: changed Copyright. added RDoc.
+
+ * ext/readline/README.ja: fixed typo.
+
+ * ext/readline/README: contents was moved RDoc.
+
+Thu Aug 7 23:43:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * transcode_data.h (rb_transcoding): new field "stateful".
+ (rb_transcoder): preprocessor and postprocessor field removed.
+ change arguments of func_ii, func_si, func_io and func_so.
+ new field "finish_func".
+
+ * tool/transcode-tblgen.rb: make FUNii, FUNsi and FUNio
+ generatable.
+
+ * transcode.c (transcoder_lib_table): removed.
+ (transcoder_table): change structure.
+ (transcoder_key): removed because the above structure change.
+ (make_transcoder_entry): new function.
+ (get_transcoder_entry): ditto.
+ (rb_register_transcoder): follow the structure change.
+ (declare_transcoder): ditto.
+ (transcode_search_path): new function for breadth first search to
+ find a list of converters.
+ (transcode_search_path_i): new function.
+ (transcode_dispatch_cb): ditto.
+ (transcode_dispatch): use transcode_search_path.
+ (transcode_loop): follow the argument change.
+ (str_transcode): preprocessor and postprocessor stuff removed.
+
+ * enc/trans/iso2022.erb.c: new file. ISO-2022-JP conversion
+ re-implemented.
+
+ * enc/trans/japanese.erb.c: ISO-2022-JP stuff removed.
+
+ * enc/trans/utf_16_32.erb.c: follow argument change of FUNso.
+
+ [ruby-dev:35798]
+
+Thu Aug 7 22:55:44 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/README.ja: updated API document for Readline module.
+
+Thu Aug 7 20:52:08 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (login): raise FTPReplyError if passwd or acct
+ is not supplied. fixed [ruby-core:18058].
+
+Thu Aug 7 18:01:44 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-mode.el (ruby-imenu-create-index-in-block): Fix the
+ regexp to only pick definition lines properly. `module_function'
+ is not a definition of a module named `_function'.
+
+Thu Aug 7 17:47:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend: add transdb.c.
+
+Thu Aug 7 16:28:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk, {bcc,win}32/Makefile.sub (clean-ext): do not
+ use miniruby.
+
+Thu Aug 7 14:17:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend: removed needless explicit commands.
+
+ * lib/mkmf.rb, {bcc32,win32}/Makefile.sub (CLEANLIBS, CLEANOBJS):
+ moved clean targets to platform makefiles.
+
+Thu Aug 7 13:12:30 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/getaddrinfo.c (gai_strerror): ignore only on Haiku.
+ a patch from <zn at mbf.nifty.com>, [ruby-dev:35796].
+
+Thu Aug 7 06:31:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/process.rb (test_popen_fork): skip a test which is
+ freeze in FreeBSD.
+
+Thu Aug 7 06:05:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * config.guess: add powerpc-apple-haiku, i586-pc-haiku.
+ see [ruby-core:18110]
+
+Thu Aug 7 05:51:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * eval_intern.h: Add support to Haiku. see [ruby-core:18110]
+
+ * include/ruby/defines.h: ditto.
+
+ * configure.in: ditto.
+
+ * thread_pthread.c: ditto.
+
+ * io.c: ditto.
+
+ * lib/mkmf.rb: ditto.
+
+ * ext/socket/getaddrinfo.c: ditto.
+
+ * ext/socket/extconf.rb: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/addrinfo.h: ditto.
+
+ * ext/socket/getnameinfo.c: ditto.
+
+Thu Aug 7 05:43:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: mkdir enc/trans before build tables.
+
+Thu Aug 7 05:18:30 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/depend: enc/*.c is source but enc/trans/*.c is generated.
+
+Thu Aug 7 05:14:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regenc.c (code_to_mbc): raise RangeError Integer#chr
+ when more than 255 is given with single byte encoding.
+ [ruby-dev:35789]
+
+Thu Aug 7 05:06:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (run_final): runs finalizers with the object terminated.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): keeps finalized objects from
+ linking to freelist.
+
+Thu Aug 7 04:43:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/depend: for build in other than srcdir.
+
+Wed Aug 6 22:40:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (transcode_generate_node): code
+ argument removed.
+
+Wed Aug 6 21:25:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (chain_finalized_object): deletes finalizers to be invoked from
+ finalizer_table.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): warns when could not invoke
+ finalizers.
+
+Wed Aug 6 20:56:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/depend: transcode table generation depends on
+ tool/transcode-tblgen.rb.
+
+Wed Aug 6 20:48:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): self-referencing finalizers
+ cannot be invoked. [ruby-dev:35681]
+
+Wed Aug 6 20:44:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: distinguish UNDEF and INVALID.
+ [ruby-dev:35709]
+
+ * transcode.c (transcode_loop): don't need rb_enc_mbclen now.
+
+Wed Aug 6 14:40:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (transdb.h): requires transcoders.
+
+ * enc/depend (srcs): target for transcoders.
+
+Wed Aug 6 14:04:08 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: replace not only $(<:...) but also $<.
+
+Wed Aug 6 13:54:30 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): export BASERUBY.
+
+ * enc/depend: avoid GNU make'ism.
+
+Wed Aug 6 07:59:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb (ActionMap#eql?): use == to compare @map.
+
+Wed Aug 6 07:45:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/transcode-tblgen.rb: show generating tables in verbose mode.
+ (transcode_generate_node): call ActionMap#generate_node with showing
+ table name.
+
+ * enc/trans/utf_16_32.erb.c: use transcode_generate_node.
+
+Wed Aug 6 06:55:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): propagates fatal error and system
+ exit to the main thread.
+
+Wed Aug 6 05:31:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_to_encoding_index, rb_to_encoding): check if the name
+ is ascii compatible as well as Encoding.find.
+
+ * transcode.c (str_encode): no need to duplicate first.
+
+Wed Aug 6 05:08:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): reset to real class.
+
+ * file.c (rb_find_file_ext, rb_find_file): ditto.
+
+ * io.c (io_reopen): ditto.
+
+Wed Aug 6 03:56:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (transcodes), tool/build-transcode: generates transcode
+ sources.
+
+ * enc/trans/{japanese,korean,single_byte,utf_16_32}.c: to be
+ autogenerated now.
+
+ * enc/depend: added rules for .c from .erb.c.
+
+Tue Aug 5 20:46:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/build-transcode: new file.
+
+ * tool/transcode-tblgen.rb: new file.
+
+ * enc/trans/make_transdb.rb: exclude *.erb.c.
+
+ * enc/depend: exclude *.erb.c.
+
+ * enc/trans/utf_16_32.erb.c: new file.
+
+ * enc/trans/single_byte.erb.c: new file.
+
+ * enc/trans/japanese.erb.c: new file.
+
+ * enc/trans/korean.erb.c: new file.
+
+ * enc/trans/iso-8859-2-tbl.rb: new file.
+
+ * enc/trans/iso-8859-3-tbl.rb: new file.
+
+ * enc/trans/iso-8859-4-tbl.rb: new file.
+
+ * enc/trans/iso-8859-5-tbl.rb: new file.
+
+ * enc/trans/iso-8859-6-tbl.rb: new file.
+
+ * enc/trans/iso-8859-7-tbl.rb: new file.
+
+ * enc/trans/iso-8859-8-tbl.rb: new file.
+
+ * enc/trans/iso-8859-9-tbl.rb: new file.
+
+ * enc/trans/iso-8859-10-tbl.rb: new file.
+
+ * enc/trans/iso-8859-11-tbl.rb: new file.
+
+ * enc/trans/iso-8859-13-tbl.rb: new file.
+
+ * enc/trans/iso-8859-14-tbl.rb: new file.
+
+ * enc/trans/iso-8859-15-tbl.rb: new file.
+
+ * enc/trans/eucjp-tbl.rb: new file.
+
+ * enc/trans/sjis-tbl.rb: new file.
+
+ * enc/trans/euckr-tbl.rb: new file.
+
+ * enc/trans/utf_16_32.c: regenerated.
+
+ * enc/trans/single_byte.c: regenerated.
+
+ * enc/trans/japanese.c: regenerated.
+
+ * enc/trans/korean.c: regenerated.
+
+ [ruby-dev:35730]
+
+Tue Aug 5 18:02:53 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/io/nonblock/test_flush.rb (TestIONonblock#test_flush):
+ rescue some exceptions. [ruby-dev:35638]
+
+Tue Aug 5 16:40:06 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (chdir): handle 5xx errors correctly.
+ fixed [ruby-core:18057].
+
+Tue Aug 5 16:38:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h, bcc32/Makefile.sub (config.h): bcc 5.8 has
+ stdint.h.
+
+Tue Aug 5 16:13:05 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (disconnect): do not refer to SSL::SSLSocket for
+ environments without OpenSSL. fixed [ruby-dev:35755].
+
+Tue Aug 5 14:19:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_mode): generalized st_mode mask.
+
+Tue Aug 5 12:43:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (retry_sendfile, retry_read): ENOSYS and EWOULDBLOCK are not
+ defined on every platforms.
+
+Tue Aug 5 12:34:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode_data.h (TRANSCODE_ERROR): common transcode failure
+ exception, would be changed later.
+
+ * enc/trans/japanese.c (UNSUPPORTED_MODE): unsupported mode transition
+ exception.
+
+Tue Aug 5 03:29:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): respect overridden <=> for String and
+ Fixnum. [ruby-core:17708]
+
+ * include/ruby/node.h (NOEX_BASIC): basic definition method flag.
+
+ * include/ruby/intern.h, vm_method.c (rb_method_basic_definition_p):
+ new function to check if the method is not redefined after the
+ initialization.
+
+ * vm_method.c (rb_obj_respond_to): use rb_method_basic_definition_p.
+
+Mon Aug 4 20:39:06 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * Makefile.in (update-rubyspec): renamed the rubyspec directory
+ "spec". Changed directory structure.
+
+ * Makefile.in (test-rubyspec): ditto.
+
+ * spec/README: described the structure of "spec" directory.
+
+ * spec/default.mspec: configured for Matz's Ruby Implementation.
+
+Mon Aug 4 19:21:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_tmp_new): added.
+
+ * vm_eval.c (vm_call_super): fixed typo, and get rid of too large
+ alloca. [ruby-core:17922]
+
+Mon Aug 4 16:48:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (deferred_nodes, compstmt, arg, fixup_nodes, range_op): fix
+ up fixnum range literal in conditional as automagical line number
+ comparison. [ruby-core:12124], [ruby-dev:35731]
+
+Mon Aug 4 14:41:25 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP::rcptto): fix a typo. a patch from
+ Masao Takaku <masao at nii.ac.jp>
+ fix [ruby-dev:35489].
+
+Mon Aug 4 14:08:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (dump_ensure), process.c (run_exec_dup2),
+ string.c (rb_str_replace), transcode.c (transcode_dispatch): fixed
+ memory leaks. based on patches from shinichiro.h <shinichiro.hamaji
+ AT gmail.com> at [ruby-dev:35751].
+
+Sun Aug 3 19:32:52 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (hash2named_arg): refactoring.
+
+ * ext/win32ole/win32ole.c (ole_invoke, fole_respond_to, ev_on_event,
+ fev_off_event): accepts Symbol argument.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+Sun Aug 3 10:41:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_shared_replace): fixed memory leak. a patch from
+ shinichiro.h <shinichiro.hamaji AT gmail.com> at [ruby-dev:35742]
+
+Sat Aug 2 22:55:41 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_err_in_callback.rb: remove temporary files.
+ some refactoring.
+
+Sat Aug 2 15:51:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yylex): 8 and 9 in octal integer should cause compile
+ error. [ruby-dev:35729]
+
+Sat Aug 2 01:06:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c: add U+FF5E to EUC-JP.
+ [ruby-dev:35720] [ruby-dev:35722]
+
+Fri Aug 1 23:49:44 2008 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/extconf.rb: checked to have clear_history in
+ readline library.
+ * ext/readline/readline.c (hist_get, hist_each, Init_readline):
+ The offset specified for the argument of history_get() might be
+ different in GNU Readline and libedit. If use libedit, it was
+ corrected that the computational method of the offset specified
+ for the argument of history_get() when the Readline module was
+ initialized was decided.
+ (hist_get, hist_set): If use libedit, accesses first an input
+ content in history when specifies the negative offset for the
+ argument of history_get() or replace_history_entry(). Then
+ checks the offset is negative in ruby.
+ (rb_remove_history): When compiling, it corrects it to warning
+ when libedit is used.
+ (hist_clear, Init_readline): added Readline::HISTORY.clear
+ method. [ruby-dev:35551]
+ * test/readline/test_readline_history.rb: added unit test for
+ Readline::HISTORY.
+
+Fri Aug 1 23:26:45 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (transcode_loop): undefined character is replaced with
+ only one character. [ruby-dev:35709]
+
+Fri Aug 1 23:26:22 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ Merged r16430(akr), r16431(akr), r16433(akr), r16469(nobu), and
+ r17874(akr) from ruby_1_8.
+
+ * Makefile.in (update-rubyspec): added
+
+ * Makefile.in (test-rubyspec): added
+
+Fri Aug 1 23:16:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c: add support for CP51932,
+
+Fri Aug 1 22:59:40 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c: add U+FF0C,
+
+Fri Aug 1 21:49:41 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/sdbm/test_sdbm.rb: add some tests.
+
+Fri Aug 1 21:36:00 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (allocate_heaps, assign_heap_slot, rb_newobj_from_heap):
+ reset during_gc before raising NoMemoryError.
+
+Fri Aug 1 21:29:56 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (Init_BareVM): check failure of malloc().
+
+Fri Aug 1 20:55:27 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c (to_SHIFT_JIS_EF_BF_offsets): add U+FFF3,
+ U+FFF4, U+FFF5.
+
+ * enc/trans/japanese.c (to_SHIFT_JIS_EF_BF_infos): ditto.
+
+ * enc/trans/japanese.c (to_EUC_JP_EF_BF_infos): added.
+
+ * enc/trans/japanese.c (to_EUC_JP_EF_BF): added.
+
+ * enc/trans/japanese.c (to_EUC_JP_EF_infos): change size.
+ [ruby-dev:35714]
+
+Fri Aug 1 18:27:15 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * parse.y (parser_yylex): removed an useless conditional, and magic
+ comment are ignored unless at the first of line.
+
+ * test/ruby/test_m17n.rb (test_magic_comment_vim): added.
+
+ * test/ruby/test_m17n.rb (test_magic_comment_at_various_positions):
+ added.
+
+Fri Aug 1 14:54:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_seekdir): no need to rewind to seek forward.
+
+Fri Aug 1 05:31:08 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (output_replacement_character):
+ rename from _get_replacement_character.
+
+ * transcode.c (output_replacement_character):
+ fix replacement on UTF-32{BE,LE}. [ruby-dev:35705]
+
+ * transcode.c (transcode_loop): ditto.
+
+ * test/ruby/test_transcode.rb (test_invalid_replace):
+ add for above.
+
+Fri Aug 1 01:01:49 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (rb_proc_call_with_block): reduce comparison.
+
+Thu Jul 31 22:17:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpMult): prevent memory leak.
+
+Thu Jul 31 20:05:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_transcode.rb (test_unicode_public_review_issue_121):
+ fix option1 and 3.
+
+Thu Jul 31 19:54:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (get_replacement_character): use U+FFFD as replacement
+ character when convert to Unicode.
+
+ * test/ruby/test_transcode.rb (test_unicode_public_review_issue_121):
+ rename from test_public_review_issue_121.
+
+ * test/ruby/test_transcode.rb (test_unicode_public_review_issue_121):
+ enable option2.
+
+Thu Jul 31 17:00:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (get_replacement_character): fix: invalid byte sequence
+ is always replaced "\x00?".
+
+Thu Jul 31 16:37:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rubygems/test_gem_ext_configure_builder.rb
+ (test_self_build_fail): remove extra newline. [ruby-dev:35704]
+
+Thu Jul 31 15:11:11 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: added test_shift_jis
+ (contributed by Yoshihiro Kambayashi) and
+ test_public_review_issue_121
+ (see http://www.unicode.org/review/pr-121.html)
+
+Thu Jul 31 13:18:30 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * include/ruby/ruby.h (struct RString): size of ary must be
+ RSTRING_EMBED_LEN_MAX + 1.
+
+Thu Jul 31 12:23:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_unpack): upper half of hexdigits has never been used.
+
+Thu Jul 31 11:31:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/syck.h (ASSERT): fix typo at r18176.
+
+ * ext/syck/rubyext.c (rb_syck_compile): expression in ASSERT() has no
+ effect unless debug mode.
+
+Thu Jul 31 10:51:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (ruby_iseq_disasm_insn): suppress warnings on platforms which
+ int size differs from pointer size.
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_get_asn1type): ditto
+
+ * ext/syck/rubyext.c (rb_syck_err_handler),
+ (syck_default_error_handler): ditto.
+
+Thu Jul 31 02:21:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/syck/rubyext.c (rb_syck_compile): remove meaningless branch
+ that misleads into thinking that the variable sav may be
+ uninitialized.
+
+Thu Jul 31 01:25:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_mutex_unlock_all): mutex is no longer a ruby object.
+
+Thu Jul 31 01:18:07 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (magic_comment_encoding): remove meaningless null check.
+
+Thu Jul 31 01:09:28 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpIsRoundMode): fix tautology
+ condition.
+
+Thu Jul 31 00:58:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_unpack): reduced static variables.
+
+Thu Jul 31 00:10:20 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (rb_proc_call_with_block): prevent null reference.
+
+Wed Jul 30 22:19:13 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (vtable_free): remove meaningless null check.
+
+Wed Jul 30 22:08:25 2008 Tanaka Akira <akr@fsij.org>
+
+ * dir.c (struct dir_data): change path field char * to VALUE.
+ (mark_dir): new function for mark path field.
+ (free_dir): follow the path field change.
+ (dir_s_alloc): ditto.
+ (dir_initialize): ditto.
+ (dir_s_open): ditto.
+ (dir_inspect): ditto.
+ (dir_path): return (duplicate of) the path field to preserve
+ encoding. [ruby-dev:35685]
+
+Wed Jul 30 22:06:56 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (sym_inspect): remove dead code.
+
+Wed Jul 30 21:32:52 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ChangeLog: fix wrong method name and add reference.
+
+Wed Jul 30 21:30:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regparse.c (name_add): fix memory leak.
+
+Wed Jul 30 21:08:06 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/syck/syck.c (syck_free_parser): fix memory leak by
+ YAML::Syck.compile.
+
+ * regparse.c (parse_exp): fix memory leak at Regexp.new("x{1,1}").
+
+Wed Jul 30 17:48:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_select): recalc the rest of timeout for each
+ iterations. [ruby-core:18015]
+
+Tue Jul 29 23:37:37 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (io_ungetc): raise NotImplementedError when ungetc is called
+ against dummy encoding IO. [ruby-dev:35686]
+
+ * io.c (rb_io_getline_1): ditto when gets with delimiter is called.
+
+ * io.c (io_getc): ditto when getc is called.
+
+ * test/ruby/test_io_m17n.rb (test_terminator_stateful_conversion,
+ test_getc_stateful_conversion, test_ungetc_stateful_conversion):
+ these tests should raise NotImplementedError.
+
+Tue Jul 29 22:55:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_io.rb (pipe): run reader thread and writer thread.
+
+Tue Jul 29 21:38:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): fix typo.
+
+Tue Jul 29 21:35:59 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb (test_passwd): age field may be string under
+ some environments.
+
+Tue Jul 29 17:54:35 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (char_casecmp): fix: return 0 if either of characters is NUL.
+
+Tue Jul 29 13:17:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/etc/test_etc.rb (test_getpwuid): fix for users whose uid is
+ shared.
+
+Tue Jul 29 05:37:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext, rb_find_file): explicit relative path
+ which starts with "./" or "../" should be searched from cwd
+ instead of load path. [ruby-dev:35673]
+
+Tue Jul 29 02:39:46 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * math.c (math_atanh): raise EDOM on FreeBSD when atanh(1).
+
+ * math.c (math_log): ditto.
+
+ * math.c (math_log2): ditto.
+
+ * math.c (math_log10): ditto.
+
+ * test/ruby/test_math.rb: test for above.
+
+Tue Jul 29 01:41:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * dir.c (struct dir_data): intenc field removed.
+ (dir_s_alloc): intenc initialization removed.
+ (dir_initialize): :internal_encoding option removed. dirname code
+ conversion removed.
+ (dir_enc_str): code conversion removed.
+ [ruby-dev:35661]
+
+Mon Jul 28 21:32:17 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/: use PNG instead of zlib as binary data.
+
+Mon Jul 28 21:24:33 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.[ch] (cond_every_entry, rb_thread_cond_struct): reverted
+ r18239 because r18245 made the changes unnecessary.
+
+ * thread.c (rb_mutex_struct): define after including thread_{pthread,
+ win32}.c.
+
+Mon Jul 28 21:00:10 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_require.rb (test_require_too_long_filename):
+ Kernel#require does not use dln_find_file_r (at r18242).
+
+Mon Jul 28 20:17:03 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.h: move the definition of struct rb_mutex_struct.
+
+ * thread.c: ditto.
+
+Mon Jul 28 18:58:46 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (mutex_unlock): fix typo.
+
+Mon Jul 28 18:15:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext, rb_find_file): not to split load path with
+ path separator. [ruby-Bugs-21356]
+
+Mon Jul 28 18:14:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (overlapped_socket_io, fcntl, rb_w32_close): must not
+ pass a pointer to int which is smaller than st_data_t on mswin64.
+
+Mon Jul 28 16:49:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (CreateChild, overlapped_socket_io): suppress
+ warnings.
+
+Mon Jul 28 16:06:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (MAXPATHLEN): define before use.
+
+Mon Jul 28 16:01:12 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.[ch] (cond_every_entry, rb_thread_cond_struct): moved
+ the definitions from .c to .h because rb_thread_cond_struct is used
+ in vm_core.h.
+
+Mon Jul 28 14:29:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (load_lib): use dln_find_file_r instead of dln_find_file.
+
+Mon Jul 28 00:18:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.h, thread.c: It is now prohibited to use Data_Get_Struct in
+ *_free against an object that is going to be free'ed. So, change type
+ of thread_t#keeping_mutexes from VALUE to mutex_t.
+
+ * vm.c: remove mark to keeping_mutexes.
+
+Sun Jul 27 23:32:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/openssl/test_ssl.rb (server_loop): rescue Errno::EINVAL and
+ Errno::ECONNABORTED.
+
+Sun Jul 27 22:11:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * bootstraptests/method.rb: increase RLIMIT_STACK size to 4M+8Kbytes
+ because FreeBSD fails this less than that.
+
+Sun Jul 27 21:45:59 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_mark_children, obj_free): T_DEFERRED should not be appear.
+
+ * gc.c (gc_sweep, finalize_list): fix to decrement heap_slot#limit
+ after executing finalizer.
+
+Sun Jul 27 14:48:37 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: add a type T_DEFERRED.
+
+ * gc.c: fix deferred finalizer system. finalize processes of
+ T_DATA and T_FILE are executed after gc process.
+ And fix to use BUILTIN_TYPE() instead of seeing flag.
+
+ * thread.c, vm_core.h: add RUBY_VM_SET_FINALIZER_INTERRUPT()
+ and check interrupt_flag at rb_thread_execute_interrupts().
+
+ * thread.c (mutex_mark): fix to mark next_mutex.
+
+ * vm.c (rb_thread_mark): fix to mark keeping_mutexes.
+
+Sun Jul 27 09:15:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.h (dln_find_exe, dln_find_file): deprecated, use reentrant
+ versions instead.
+
+Sun Jul 27 09:02:32 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/tuplespace.rb: merged from 1.8.
+
+ * test/rinda/test_rinda.rb: merged from 1.8.
+
+Sat Jul 26 22:45:18 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * sample/exyacc.rb: fixed NoMethodError(Kernel#sub!).
+ replaced use of special variables with explicit IO
+ operations.
+
+Sat Jul 26 21:17:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (Init_win32ole): add
+ WIN32OLE_EVENT#handler=, WIN32OLE_EVENT#handler
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+Sat Jul 26 07:44:14 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (add_event_call_back): remove unused
+ variable.
+
+Fri Jul 25 23:48:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_sweep, obj_free, run_final): defer finalizers of IO and
+ Data. [ruby-dev:35578]
+
+Fri Jul 25 23:35:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils#split_header_value):
+ reduce backtrack. based on a fix by Christian Neukirchen
+ <chneukirchen AT gmail.com>.
+
+Fri Jul 25 21:55:38 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/enc/test_koi8.rb: move from test/ruby/test_koi8.rb.
+
+Fri Jul 25 21:09:32 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke, add_event_callback,
+ rescue_callback): refactoring.
+
+Fri Jul 25 20:52:44 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/err_in_callback.rb: add test of raising
+ exception in WIN32OLE_EVENT callback.
+
+ * test/win32ole/test_err_in_callback.rb: ditto.
+
+Fri Jul 25 20:43:57 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (Init_win32ole): add
+ WIN32OLE_EVENT#off_event.
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+ * test/win32ole/test_win32ole_event.rb: some refactoring.
+
+Fri Jul 25 19:50:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regint.c (xmalloc, xrealloc, xfree): not to use ruby managed memory.
+
+Fri Jul 25 15:52:40 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_invoke_proc): skip setting safe_level if
+ it from bmethod. This change makes test/ruby/test_proc.rb pass.
+
+Fri Jul 25 10:00:00 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: refactoring/cleanup of
+ test_iso_2022_jp(_1)
+
+Fri Jul 25 04:12:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_convert): output of mime encode is US-ASCII.
+ [ruby-list:45257]
+
+Fri Jul 25 02:43:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * sample/coverage.rb: move from lib/coverage.rb because this remains in
+ an early phase of development.
+
+Fri Jul 25 00:10:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext, rb_find_file): converts Windows style path
+ to Cygwin path. [ruby-dev:35647]
+
+Thu Jul 24 16:30:21 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (exit_handler): use st_free_table() to free socklist.
+
+ * win32/win32.c (rb_w32_pipe_exec, rb_w32_accept, rb_w32_socket,
+ rb_w32_socketpair): should check and release fd and sockets/handles
+ if an error occurs in rb_w32_open_osfhandle().
+
+Thu Jul 24 16:05:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (overlapped_socket_io): avoid warnings.
+
+ * thread_win32.c (ubf_handle): refactoring.
+
+Thu Jul 24 07:01:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c: got rid of improper casts.
+
+Wed Jul 23 23:19:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/socket/test_tcp.rb (test_recvfrom): replace an irrelevant test
+ for old behavior.
+
+Wed Jul 23 21:38:16 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_marshal.rb: suppress warning during test.
+
+Wed Jul 23 21:35:53 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_dir.rb: suppress warning during test.
+
+Wed Jul 23 18:27:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/{stubs,tcltklib}.c, ext/tk/tkutil/tkutil.c: fix warnings
+ about constness and signedness.
+
+Wed Jul 23 17:04:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/openssl_missing.h (d2i_of_void): define for older
+ versions. [ruby-dev:35637]
+
+Wed Jul 23 13:53:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/curses/extconf.rb: use try_static_assert.
+
+Wed Jul 23 10:06:19 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/zlib/test_zlib.rb (TestZlibDeflate#test_params): suppress a
+ finalizer warning.
+
+Wed Jul 23 06:25:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck: suppress warnings more.
+
+Wed Jul 23 03:19:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (struct input_code.name, input_codename):
+ constified.
+
+Wed Jul 23 03:02:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck: suppress warnings.
+
+Wed Jul 23 00:34:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl: suppress warnings.
+
+Tue Jul 22 23:01:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/syck/rubyext.c, ext/syck/yaml2byte.c, ext/syck/emitter.c,
+ ext/syck/syck.c, ext/syck/handler.c, ext/syck/syck.h: suppress GCC
+ warning.
+
+Tue Jul 22 20:42:24 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): BigDecimal#<=> should
+ return nil if an argument can't be coerced into BigDecimal.
+
+ * ext/bigdecimal/bigdecimal.h, ext/bigdecimal/bigdecimal.c
+ (VpIsNegDoubleZero, VpItoV): comment out unused functions.
+
+Tue Jul 22 20:33:54 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rdoc/test_rdoc_parser_ruby.rb (teardown): close tempfile.
+
+Tue Jul 22 19:38:38 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * test/ruby/test_transcode.rb: added two comments
+
+Tue Jul 22 18:08:34 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja: mention about FIX2LONG and NUM2LONG.
+ see [ruby-dev:35197]
+
+Tue Jul 22 17:53:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (insn_data_to_s_detail), file.c (rb_stat_inspect),
+ iseq.c (ruby_iseq_disasm_insn, ruby_iseq_disasm),
+ process.c (pst_message), re.c (match_inspect): use rb_str_catf.
+
+ * dir.c (dir_inspect), iseq.c (iseq_inspect, insn_operand_intern): use
+ rb_sprintf.
+
+ * error.c (rb_name_error, rb_raise, rb_loaderror, rb_fatal): use
+ rb_vsprintf.
+
+Tue Jul 22 17:20:25 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_func): new function to get API's address which
+ is often used and not supported on all Windows.
+
+ * win32/win32.c (overlapped_socket_io): shouldn't use overlapped I/O if
+ CancelIo() is not supported.
+
+Tue Jul 22 16:47:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h, sprintf.c (rb_str_catf, rb_str_vcatf): new
+ functions. [ruby-dev:35597]
+
+ * string.c (rb_str_capacity): new function to return the capacity.
+
+Tue Jul 22 16:08:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (connect_blocking, socks_connect_blocking,
+ ruby_connect): cast.
+
+Tue Jul 22 11:05:08 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_dir.rb: use realpath of tmpdir. [ruby-dev:35481]
+
+ * test/ruby/test_process.rb: ditto.
+
+Tue Jul 22 09:51:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el: fix here-doc strings with inner quotes. patches
+ by Nathan Weizenbaum <nex342 AT gmail.com> from [ruby-core:17615]
+ through [ruby-core:17910].
+
+Tue Jul 22 04:26:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_str_buf_new2): optimization for literals.
+
+ * string.c (str_buf_cat): returns VALUE.
+
+Tue Jul 22 03:34:01 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Update to RDoc 2.1.0 r112.
+
+Tue Jul 22 02:51:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_str_buf_cat2, rb_str_cat2): optimization
+ for literals.
+
+Tue Jul 22 02:50:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (1.5 Manipulating Ruby data): fix the
+ prototype of rb_vsprintf, and added rb_str_cat2. [ruby-dev:35622]
+
+Mon Jul 21 17:15:38 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_filesystem_encoding): use locale encoding on Unix.
+ [ruby-dev:35617]
+
+Mon Jul 21 15:29:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (struct __sbuf, FILE): use size_t.
+
+ * sprintf.c (ruby__sfvwrite): ditto.
+
+Mon Jul 21 13:55:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (1.5 Manipulating Ruby data): mentioned
+ rb_sprintf and rb_vsprintf. [ruby-dev:35611]
+
+Mon Jul 21 10:25:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (prepare_getline_args): check if rs is a string when non-nil
+ lim is given. [ruby-dev:35610]
+
+Mon Jul 21 04:55:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * dir.c (dir_initialize): use rb_convert_type instead of
+ rb_check_convert_type to prevent SEGV by Dir.new(".", true).
+ (dir_initialize): use FilePathValue before rb_enc_get(dirname) to
+ prevent SEGV by Dir.new(0).
+
+Mon Jul 21 04:42:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_s_union): useless rb_enc_get call removed to prevent
+ SEGV by Regexp.union("", nil).
+
+Sun Jul 20 22:50:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): NODE_POSTEXE should set each end
+ procs only once. [ruby-dev:35596]
+
+Sun Jul 20 16:00:37 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): use rb_protect
+ instead of rb_rescue2. [ruby-dev:35595]
+
+Sun Jul 20 01:23:24 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.
+
+ * ext/win32ole/win32ole.c (EVENTSINK_GetIDsOfNames): return
+ ITypeInfo::GetIDsOfNames().
+
+Sat Jul 19 09:31:35 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.
+
+ * ext/win32ole/win32ole.c: add document of inspect methods.
+
+Sat Jul 19 06:08:43 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Import RDoc r104. Various make test-all fixes.
+
+Sat Jul 19 00:27:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (check_uint, rb_num2uint, rb_fix2uint): fixed wrong check
+ about 64bit positive value.
+
+Fri Jul 18 23:23:37 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): avoid cfp consistency
+ error when exception raised in event callback.
+
+Fri Jul 18 14:52:14 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (socklist): table for registering socket options
+ (currently only O_NONBLOCK).
+
+ * win32/win32.c (StartSockets, exit_handler): alloc/free socklist.
+
+ * win32/win32.c (is_socket): use socklist.
+
+ * win32/win32.c (rb_w32_accept, rb_w32_socket, rb_w32_socketpair):
+ register new socket to socklist.
+
+ * win32/win32.c (rb_w32_close): remove closing socket from socklist.
+
+ * win32/win32.c (fcntl): register socket options.
+
+ * win32/win32.c (overlapped_socket_io): send to/recv from socket with
+ overlapped operation if the socket is not nonblocking mode.
+ [experimental]
+
+ * win32/win32.c (rb_w32_send, rb_w32_sendto, rb_w32_recv,
+ rb_w32_recvfrom): use overlapped_socket_io().
+
+ * win32/win32.c (open_ifs_socket): set overlapped mode. this is the
+ default mode of winsock's socket(), so lacking it is an old bug.
+
+Fri Jul 18 09:44:30 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/*: Import RDoc r101.
+
+Thu Jul 17 23:45:55 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/rdoc/test_rdoc_c_parser.rb (teardown): close tempfile.
+
+Thu Jul 17 21:08:49 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb (test_getpriority, test_setpriority): use
+ PRIO_PROCESS instead of PRIO_USER.
+
+Thu Jul 17 20:41:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * pack.c (pack_unpack): fix v and V with big endian.
+ [1].pack("V").unpack("V") was [4294967296].
+
+Thu Jul 17 20:35:03 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * pack.c (pack_pack): fix i! with big endian. [1].pack("i!") was
+ "\0\0\0\0".
+
+Thu Jul 17 16:48:40 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): select() for connect() has
+ mean only when the socket is non-blocking.
+
+Thu Jul 17 10:55:24 2008 Eric Hodel <drbrain@segment7.net>
+
+ * mkconfig.rb: Simplify expression for RDoc.
+
+Thu Jul 17 10:21:15 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (check_uint, rb_num2uint, rb_fix2uint): strict check.
+ fixed [ruby-dev:33683]
+
+Thu Jul 17 04:19:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): wake up joining threads.
+
+ * thread.c (sleep_forever, sleep_timeval): return when interrupted.
+ [ruby-dev:35542]
+
+ * thread.c (timer_thread_function): restore main thread status.
+ [ruby-core:17270]
+
+Thu Jul 17 01:27:38 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (appendline): remove invalid access.
+
+Wed Jul 16 18:04:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (signal_exec, trap_handler): trap accepts a string as
+ command. [ruby-dev:35533]
+
+Wed Jul 16 00:04:30 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err): new
+ method.
+
+ * test/ruby/test_argf.rb: use assert_in_out_err instead of
+ EnvUtil.rubyexec.
+
+ * test/ruby/test_module.rb: ditto.
+
+ * test/ruby/test_require.rb: ditto.
+
+ * test/ruby/test_objectspace.rb: ditto.
+
+ * test/ruby/test_object.rb: ditto.
+
+ * test/ruby/test_string.rb: ditto.
+
+ * test/ruby/test_method.rb: ditto.
+
+ * test/ruby/test_variable.rb: ditto.
+
+ * test/ruby/test_io.rb: ditto.
+
+ * test/ruby/test_rubyoptions.rb: ditto.
+
+ * test/ruby/test_exception.rb: ditto.
+
+ * test/ruby/test_class.rb: ditto.
+
+ * test/ruby/test_thread.rb: ditto.
+
+Tue Jul 15 22:34:03 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (ruby_version): follow changes in configure.in.
+
+Tue Jul 15 21:58:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/{,tkutil/}extconf.rb: ruby/ruby.h no longer needs to be
+ checked.
+
+ * ext/tk/{tcltklib.c,tkutil/tkutil.c}: check macros for each headers.
+
+Tue Jul 15 21:45:41 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/tk/extconf.rb, ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: Do
+ not test ruby/ruby.h, which makes OS X's gcc pick the wrong
+ header file from Ruby.framework.
+
+Tue Jul 15 21:31:26 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (--with-ruby-version): Add a new option to specify
+ the ruby version string for version specific directories.
+ [ruby-dev:35490]
+
+ * mkconfig.rb: Definition of ruby_version is now determined by the
+ configure script.
+
+Tue Jul 15 18:14:20 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect, s_accept): check before readable/
+ writable by select() instead of wrapping in blocking region.
+
+ * ext/socket/socket.c (bsock_send, s_recvfrom, udp_send, unix_send_io,
+ unix_recv_io): should check readable/writable before calling blocking
+ functions.
+ see [ruby-dev:35446]
+
+Tue Jul 15 18:12:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (ubf_handle): cancel blocking IO if it can (only
+ Vista). see [ruby-dev:35446]
+
+ * win32/win32.c (errmap): add ERROR_OPERATION_ABORTED as EINTR.
+
+Mon Jul 14 20:35:21 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_event.rb (teardown): fix typo.
+
+Mon Jul 14 18:47:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_loop): constified.
+
+ * transcode.c (str_transcode): rb_str_set_len() sets a delimiter.
+
+ * transcode_data.h (rb_transcoder): constified preprocessor and
+ postprocessor input.
+
+ * enc/trans/japanese.c: ditto.
+
+Sun Jul 13 05:37:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX, PRI_SIZE_PREFIX): typo.
+
+ * {bcc32,win32}/Makefile.sub: (SIZEOF_SIZE_T, SIZEOF_PTRDIFF_T): added.
+
+Sat Jul 12 23:54:55 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (LIBRUBY_DLDFLAGS): import library which created
+ with DLL is broken. save import library which created by lib.exe and
+ install it.
+ fixed the problem mentioned at the postscript of [ruby-dev:35448]
+
+Sat Jul 12 23:24:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: use PRIuSIZE.
+
+Sat Jul 12 22:41:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRI_PTRDIFF_PREFIX, PRI_SIZE_PREFIX): fixed typo.
+
+Sat Jul 12 22:30:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (HAVE_RUBY_RUBY_H): defines macros so that
+ extconf.rb do not need to check if headers exist under separated
+ directory. [ruby-dev:35437]
+
+ * include/{ruby,rubyio,rubysig}.h, include/ruby/intern.h: use
+ "ruby/..." instead of <ruby/...>.
+
+Sat Jul 12 22:17:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (sizeof ptrdiff_t): check for size of ptrdiff_t.
+
+ * include/ruby/ruby.h (PRI?PTRDIFF, PRI?SIZE): printf conversion
+ specifiers for ptrdiff_t and size_t/ssize_t.
+
+ * insns.def (leave), marshal.c (long_toobig), transcode.c
+ (str_transcode), vm_dump.c (control_frame_dump, stack_dump_each),
+ (debug_print_register, debug_print_pre): t and z length modifiers
+ are C99.
+
+Sat Jul 12 16:02:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client#do_rpc): requires
+ webrick/cookie. [ ruby-Bugs-21139 ]
+
+Sat Jul 12 09:25:07 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_event.rb: add test
+ for WIN32OLE_EVENT#on_event_with_outargs
+
+ * test/win32ole/test_win32ole_event.rb(teardown): calling
+ WIN32OLE_EVENT.message_loop
+
+Sat Jul 12 01:54:13 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_select): shouldn't pass non-socket handle to
+ original select().
+
+Fri Jul 11 23:05:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/zlib/test_zlib.rb: add a test for Zlib::Deflate#params.
+
+Fri Jul 11 22:58:28 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/zlib/zlib.c (rb_deflate_params): flush before deflateParams.
+ [ruby-core:17675]
+
+Fri Jul 11 22:09:01 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.rb, win32/Makefile.sub (PLATFORM): use $(PLATFORM)
+ instead of $(OS) because ENV["OS"] is used in test-all (drb).
+
+Fri Jul 11 20:51:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_wait_readable, rb_io_wait_writable): check if the file
+ descriptor is closed.
+
+ * thread.c (rb_thread_wait_fd_rw): ditto.
+
+Fri Jul 11 16:16:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_accept, rb_w32_socket, rb_w32_socketpair):
+ prohibit inheritance of sockets, too. [experimental]
+
+Fri Jul 11 14:39:49 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): the measures for Vista is no longer
+ unnecessary.
+
+Fri Jul 11 06:16:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (process.o): depends on util.h.
+
+Fri Jul 11 05:07:46 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (pipe): prohibit inheritance.
+ fixed: [ruby-dev:35421]
+
+Fri Jul 11 00:56:46 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (thread_create_core): fix GC problem.
+ [ruby-core:17669]
+
+Thu Jul 10 22:06:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pstore.rb (PStore#transaction): return the result from the
+ block. [ruby-core:17718]
+
+Thu Jul 10 21:15:49 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_typelib.rb: add some illegal argument
+ test.
+
+ * test/win32ole/test_win32ole_type.rb: ditto.
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+ * test/win32ole/test_win32ole_param.rb: ditto.
+
+ * test/win32ole/test_win32ole_method.rb: ditto.
+
+Thu Jul 10 19:38:35 2008 wanabe <s.wanabe@gmail.com>
+
+ * test/ruby/envutil.rb (assert_normal_exit): r17993 revert.
+
+Thu Jul 10 18:29:41 2008 wanabe <s.wanabe@gmail.com>
+
+ * test/ruby/envutil.rb (assert_normal_exit): finish writing script
+ before spawn("ruby") to avoid blocking in win32.
+
+Thu Jul 10 17:20:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (insert): follow recent changes of globbing.
+
+Thu Jul 10 14:09:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/coverage/coverage.c (rb_coverage_start): return nil.
+
+Thu Jul 10 12:41:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_wait_for): fixed variable name.
+
+Thu Jul 10 12:09:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_thread_t), vm.c (rb_thread_mark), process.c
+ (rb_last_status_get, rb_last_status_set, rb_last_status_clear):
+ moved last_status from rb_vm_t. [ruby-dev:35414]
+
+ * vm.c (th_init2): initialize last_status with nil.
+
+Thu Jul 10 12:09:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_wait_for): wait until timed out only when
+ sleeping with timeout.
+
+Wed Jul 9 22:41:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (sleep_timeval): wait until timed out. [ruby-core:17270]
+
+Wed Jul 9 20:58:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * array.c (rb_ary_fill): don't raise even if length is negative.
+ [ruby-core:17483], [ruby-core:17661]
+
+Wed Jul 9 20:18:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_va_args_macro): check for __VA_ARGS__.
+
+ * thread.c (thread_debug): show source name and line if possible.
+
+ * thread_{pthread,win32}.c (rb_thread_create_timer_thread): needs more
+ stack for debug.
+
+Wed Jul 9 11:13:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/profiler.rb (Profiler__#print_profile): sort in the descending
+ order of cumulative time.
+
+Wed Jul 9 11:11:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (struct glob_args, rb_glob_caller, rb_glob2, push_pattern),
+ (glob_brace): make consistent prototypes.
+
+ * dir.c (push_glob): set enc in the caller of rb_glob_caller as well
+ as rb_glob2.
+
+Wed Jul 9 09:12:11 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (options): use input_endian.
+
+Wed Jul 9 01:38:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_succ): alphabets or numerics mutually enclosing
+ non-alphanumeric characters can carry up. e.g., "1.999".succ should
+ be "2.000".
+
+Wed Jul 9 00:12:31 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_set_coverages, rb_reset_coverages): enable and disable
+ coverage measurement.
+
+ * thread.c (rb_get_coverages): rename and move from vm.c.
+
+ * vm.c (rb_vm_get_coverages): ditto.
+
+ * iseq.c (prepare_iseq_build): ditto.
+
+ * thread.c (clear_coverage): ditto.
+
+ * parse.y (coverage): ditto.
+
+ * ext/coverage/coverage.c: use above functions, add new method
+ Coverage.start and fix rdoc .
+
+Tue Jul 8 23:02:35 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (find_default_source): bug fix when
+ OLE object does not have default source interface.
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+Tue Jul 8 22:56:23 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_enable_coverages): hide coverage array by setting 0 to
+ klass during measurement.
+
+ * parse.y (coverage, yycompile0): ditto.
+
+ * iseq.c (prepare_iseq_build): use rb_hash_lookup instead of
+ rb_hash_aref.
+
+ * thread.c (rb_coverage_result): restore klass of coverage array
+ and return it.
+
+ * thread.c (update_coverage): check whether its klass is 0.
+
+Tue Jul 8 22:28:25 2008 Koichi Sasada <ko1@atdot.net>
+
+ * lib/debug.rb, lib/profile.rb: fix to use RubyVM.
+
+ * lib/rdoc/parsers/parse_c.rb: ditto.
+
+Tue Jul 8 21:45:22 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (rb_vm_mark): mark the last element of special_exceptions.
+
+Tue Jul 8 19:55:40 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (find_default_source): try to
+ find COCLASS when WIN32OLE object is not COCLASS.
+
+ * test/win32ole/test_win32ole_event.rb: ditto
+
+Tue Jul 8 13:38:22 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.h: fix to skip inserting a trace insn.
+
+Tue Jul 8 11:41:17 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c: shouldn't use ruby object in globbing, because glob service
+ routines are called before initializing ruby on some platforms (ex.
+ windows).
+
+Tue Jul 8 10:08:40 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (Next): use rb_enc_mbclen. [ruby-dev:35390]
+
+Tue Jul 8 07:59:40 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (Next): use rb_enc_precise_mbclen.
+
+Tue Jul 8 02:27:23 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c: preserve encoding of strings in glob and fnmatch.
+
+ * include/ruby/ruby.h: related changes.
+
+Tue Jul 8 00:22:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_succ): limit carrying in an alphanumeric region if
+ exists. [ruby-dev:35094]
+
+Mon Jul 7 20:39:28 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(Init_win32ole): add
+ WIN32OLE_TYPE#source_ole_types, WIN32OLE_TYPE#default_ole_types,
+ WIN32OLE_TYPE#default_event_sources.
+
+ * test/win32ole/test_win32ole_type.rb: ditto.
+
+Mon Jul 7 19:45:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_dir.rb (test_chroot_nodir): add Errno::EPERM.
+
+Mon Jul 7 17:12:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ipaddr.rb (IPAddr#initialize): get rid of ArgumentError in
+ IPAddr#to_range. a patch from okkez <okkez000 AT gmail.com> in
+ [ruby-dev:35091].
+
+Mon Jul 7 01:24:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): fix for file name with spaces.
+ [ruby-talk:307404]
+
+Mon Jul 7 00:59:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): prior STACK_END_ADDRESS if
+ found. [ruby-core:17624]
+
+Sun Jul 6 23:48:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (bsock_send, s_recvfrom, ruby_connect, s_accept),
+ (udp_send, unix_send_io, unix_recv_io): blocking region support.
+
+Sun Jul 6 18:34:35 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_type.rb (test_initialize): add
+ more assertions.
+
+Sun Jul 6 10:12:21 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/test/unit/collector/objectspace.rb
+ (Test::Unit::Collector::ObjectSpace::NAME): fix a typo.
+
+Sun Jul 6 00:56:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (host_str): fix type mismatch in rb_raise
+ format and argument.
+ (port_str): ditto.
+ (unix_recv_io): ditto.
+ (sock_s_unpack_sockaddr_un): ditto.
+
+Sat Jul 5 23:42:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (NUM2INT): cast to int.
+ (FIX2INT): ditto.
+ (NUM2UINT): cast to unsigned int.
+ (FIX2UINT): ditto.
+
+Sat Jul 5 23:10:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_pipe): new function for handling EMFILE and ENFILE
+ error of pipe().
+ (UPDATE_MAXFD_PIPE): removed.
+ (pipe_open): use rb_pipe.
+ (rb_io_s_pipe): ditto.
+
+ * process.c (pipe_nocrash): use rb_pipe.
+
+ * include/ruby/intern.h (rb_pipe): declared.
+
+Sat Jul 5 22:22:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_initialize): NUM2INT() returns int.
+
+ * thread.c (timer_thread_function), thread_pthread.c (thread_timer),
+ thread_win32.c (timer_thread_func), thread_{pthread,win32}.c
+ (rb_thread_create_timer_thread): passing VM.
+
+Sat Jul 5 20:53:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_word.rb: check word installed.
+
+Sat Jul 5 16:12:54 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c: revert. before lazy sweep.
+
+Sat Jul 5 09:55:44 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE#ole_respond_to?
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Sat Jul 5 08:48:05 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (unescape_nonascii): add has_property argument not to
+ raise error by /\p{Hiragana}\u{3042}/ in EUC-JP script.
+ (rb_reg_preprocess): use has_property argument to make regexp
+ encoding fixed.
+
+Sat Jul 5 08:29:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (unescape_nonascii): make regexp fixed_encoding if \p is used.
+ fixed [ruby-core:17279].
+
+Fri Jul 4 23:12:53 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (d2time): fix the bug of VT_DATE
+ to String conversion when negative value.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+Fri Jul 4 22:15:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit/testcase.rb: collect descendants of
+ Test::Unit::TestCase using inherited.
+
+ * lib/test/unit/autorunner.rb: don't use ObjectSpace.each_object.
+
+ * lib/test/unit/collector/dir.rb: ditto.
+
+ * lib/test/unit/collector/objectspace.rb: ditto.
+
+ [ruby-core:17126]
+
+Fri Jul 4 20:43:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (OnigEncoding): removed auxiliary_data.
+
+ * include/ruby/encoding.h (ENC_DUMMY_P): moved dummy encoding flag to
+ rb_encoding from Encoding instance.
+
+ * encoding.c (rb_encoding_list): list of Encoding instances.
+
+ * encoding.c (struct rb_encoding_entry): moved base encoding from
+ instance variable.
+
+Fri Jul 4 17:51:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (check_uint, rb_num2uint, rb_fix2uint): proper check.
+
+Fri Jul 4 14:17:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#sendport): use divmod. [ruby-core:17557]
+
+Fri Jul 4 11:08:37 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (garbage_collect_force): sweep is completely ended.
+
+ * gc.c (os_obj_of): invoke garbage_collect_force() when freelist none.
+
+Fri Jul 4 05:01:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (rb_num2uint, rb_fix2uint): typo.
+
+Fri Jul 4 02:21:06 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (check_uint, rb_num2uint, rb_fix2uint): also needs checking
+ negative value. see [ruby-dev:33683]
+
+Thu Jul 3 23:26:36 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * include/ruby/intern.h: remove prototypes about coverage.
+
+ * iseq.c (prepare_iseq_build): add prototype.
+
+ * parse.y (coverage): ditto.
+
+ * thread.c (clear_coverage): ditto.
+
+ * thread.c (update_coverage): use rb_sourceline.
+
+ * thread.c (rb_get_coverages): rename and move to vm.c.
+
+ * vm.c (rb_vm_get_coverages): ditto.
+
+ * ext/coverage/coverage.c: add rdoc.
+
+Thu Jul 3 21:51:21 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/coverage/coverage.c, ext/coverage/extconf.rb: eliminate
+ COVERAGE__ and introduce coverage.so instead. How to measure
+ coverage: (1) require "coverage.so", (2) require or load Ruby source
+ file, and (3) Coverage.result will return the same hash as COVERAGE__.
+ [ruby-dev:35324]
+
+ * thread.c (rb_enable_coverages): start coverage measurement by using
+ rb_add_event_hook.
+
+ * thread.c (rb_get_coverages): returns current results of coverage
+ measurement.
+
+ * include/ruby/intern.h: add prototype for above two functions.
+
+ * vm_core.h, vm.c: add field of coverages to rb_vm_t.
+
+ * insns.def (trace): remove special handling for COVERAGE__.
+
+ * iseq.c (prepare_iseq_build): switch COVERAGE__ to
+ rb_get_coverages().
+
+ * parse.y (coverage): ditto.
+
+ * thread.c (clear_coverage): ditto.
+
+ * lib/coverage.rb: use coverage.so instead of COVERAGE__.
+
+Thu Jul 3 21:20:45 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (thread_initialize): NUM2INT returns long.
+
+Thu Jul 3 21:06:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (Init_eval): typo fixed in r17833.
+
+Thu Jul 3 19:44:44 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (Init_win32ole): remove duplicate line.
+
+Thu Jul 3 16:08:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (erfc): erfc of glibc comes with Debian GNU/Linux Etch
+ on IA64 is broken. erfc(10000.0) aborts.
+ use missing/erf.c instead.
+ http://sources.redhat.com/ml/libc-hacker/2005-08/msg00008.html
+
+Thu Jul 3 12:49:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP::start): use 'localhost' instead of
+ 'localhost.localdomain'. [ruby-dev:35333]
+
+ * lib/net/smtp.rb (Net::SMTP::SMTP.start): ditto.
+
+Thu Jul 3 07:06:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (SET_LC_MESSAGES): LC_MESSAGES must be C.
+
+Thu Jul 3 07:02:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (Init_eval), gc.c (Init_GC), proc.c (Init_Proc): freeze
+ messages of preallocated special exceptions also.
+
+Thu Jul 3 04:39:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_during_gc): VALUE cache is irrelevant.
+
+Thu Jul 3 01:44:01 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regint.h (GET_ALIGNMENT_PAD_SIZE, ALIGNMENT_RIGHT): cast pointer to
+ uintptr_t instead of unsigned int.
+
+Thu Jul 3 01:23:13 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * sprintf.c: include ieeefp.h to refer to isinf.
+
+ * ext/bigdecimal/bigdecimal.c: ditto.
+
+ * ext/json/ext/generator/generator.c: ditto.
+
+ * rational.c: ditto.
+
+Thu Jul 3 01:01:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * missing/tgamma.c (tgamma): remove unused variable.
+
+Thu Jul 3 00:18:00 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: avoid creating Ruby object during
+ GC. thanks to arton <artonx AT yahoo.co.jp>. [ruby-dev:35313]
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+Thu Jul 3 00:09:31 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * gc.c: add rb_during_gc(). based on a patch from arton <artonx AT
+ yahoo.co.jp> at [ruby-dev:35313].
+
+ * include/ruby/intern.h: ditto.
+
+Wed Jul 2 09:49:10 2008 Narihiro Nakamura <authorNari@gmail.com>
+
+ * gc.c (gc_lazy_sweep): use lazy sweep algorithm for response
+ performance gain.
+
+ * gc.c (garbage_collect_force): mark and lazysweep invoke, after
+ erasing all mark.
+
+ * gc.c (GC_NOT_LAZY_SWEEP): not lazy sweep flag. for debug.
+
+Wed Jul 2 03:42:44 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_settracefunc.rb: fix expected traces for
+ RubyVM::FrozenCore's event and r17744.
+
+Wed Jul 2 03:10:41 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.h, insns.def: reduce insn operand of "trace".
+
+ * include/ruby/ruby.h: add RUBY_EVENT_COVERAGE event.
+
+Wed Jul 2 02:02:34 2008 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c, vm.c: fix to refer to next ruby level cfp to make binding.
+
+Wed Jul 2 01:58:19 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insns.def (trace): C99ism.
+
+Wed Jul 2 01:53:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * Add coverage measurement constant COVERAGE__. This constant is not
+ for casual use. Usage: (1) assign {} to COVERAGE__, (2) require or
+ load Ruby source file, and (3) COVERAGE__["sourcefilepath"] will
+ return an array whose elements represent number of executions per
+ line of source code.
+
+ * vm_core.h: add field of coverage array to iseq.
+
+ * iseq.c (prepare_iseq_build): ditto.
+
+ * insns.def (trace): update coverage array.
+
+ * parse.y (coverage): create and initialize coverage array.
+
+ * compile.h (ADD_TRACE): add trace instruction to update coverage
+ array.
+
+ * thread.c (clear_coverage): delete coverage array when forking.
+ Otherwise, double count of coverage may occur.
+
+ * lib/coverage.rb: sample coverage measurement tool.
+
+ * error.c: distinguish explicitly between parse_in_eval and
+ mild_compile_error.
+
+ * load.c: ditto.
+
+ * vm_eval.c: ditto.
+
+Tue Jul 1 21:32:43 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/test/unit/ui/console/testrunner.rb: prevent destructive
+ modification to $0.
+
+ * test/rubygems/gemutilities.rb (build_rake_in): move from
+ test_gem_ext_rake_builder.rb.
+
+ * test/rubygems/test_gem_ext_rake_builder.rb: ditto.
+
+ * test/rubygems/test_gem_installer.rb: override Gem.ruby and
+ ENV["rake"].
+
+ * test/rubygems/test_gem_uninstaller.rb: ditto.
+
+Tue Jul 1 21:13:17 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, vm.c, insns.def: call FrozenCore.set_postexe method
+ instead to use "postexe" insn.
+
+ * id.c, id.h: add a prepared id for above.
+
+Tue Jul 1 21:09:58 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/mkmf.rb (create_tmpsrc): we need to include COMMON_HEADERS,
+ namely inclusion of ruby.h, because _GNU_SOURCE is now defined
+ there (if any) and socket.so requires it on Linux systems.
+
+Tue Jul 1 20:55:07 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * eval.c (rb_interrupt): trick to suppress GCC warning.
+
+ * sprintf.c (rb_str_format): ditto.
+
+Tue Jul 1 20:44:36 2008 Koichi Sasada <ko1@atdot.net>
+
+ * tool/instruction.rb: RubyVM is not module.
+
+Tue Jul 1 19:31:24 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * ext/digest/digest.c (rb_digest_instance_inspect): constified.
+
+ * variable.c (rb_path2class): field precision should have type int.
+
+Tue Jul 1 19:01:00 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/shift_jis.c (code_is_ctype): HALF WIDTH KATAKANA is
+ a character.
+
+Tue Jul 1 17:56:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD__uqtoa): constified.
+
+Tue Jul 1 17:50:44 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/make_encdb.h: always add ';' at the end of line.
+
+Tue Jul 1 17:44:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (COMPILE_OPTION_FALSE), time.c (timegm_noleapsecond),
+ thread.c (eKillSignal, eTerminateSignal),
+ missing/vsnprintf.c (BSD_vfprintf): constified.
+
+Tue Jul 1 17:37:43 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * enc/ascii.c: ISO C does not allow extra ';' outside of a
+ function
+
+ * enc/us_ascii.c: ditto.
+
+ * enc/utf_8.c: ditto.
+
+ * enc/big5.c: ditto.
+
+ * enc/euc_jp.c: ditto.
+
+ * enc/euc_kr.c: ditto.
+
+ * enc/euc_tw.c: ditto.
+
+ * enc/gb2312.c: ditto.
+
+ * enc/gbk.c: ditto.
+
+ * enc/iso_8859_1.c: ditto.
+
+ * enc/iso_8859_2.c: ditto.
+
+ * enc/iso_8859_3.c: ditto.
+
+ * enc/iso_8859_4.c: ditto.
+
+ * enc/iso_8859_5.c: ditto.
+
+ * enc/iso_8859_6.c: ditto.
+
+ * enc/iso_8859_7.c: ditto.
+
+ * enc/iso_8859_8.c: ditto.
+
+ * enc/iso_8859_9.c: ditto.
+
+ * enc/iso_8859_10.c: ditto.
+
+ * enc/iso_8859_11.c: ditto.
+
+ * enc/iso_8859_13.c: ditto.
+
+ * enc/iso_8859_14.c: ditto.
+
+ * enc/iso_8859_15.c: ditto.
+
+ * enc/iso_8859_16.c: ditto.
+
+ * enc/koi8_r.c: ditto.
+
+ * enc/shift_jis.c: ditto.
+
+ * enc/utf_16be.c: ditto.
+
+ * enc/utf_32be.c: ditto.
+
+ * enc/utf_32le.c: ditto.
+
+ * enc/windows_1251.c: ditto.
+
+ * process.c (run_exec_rlimit): ISO C90 forbids mixed declarations
+ and code
+
+ * include/ruby/ruby.h (enum ruby_special_consts): ISO C forbids
+ comma at end of enumerator list
+
+ * include/ruby/ruby.h (enum ruby_value_type): ditto.
+
+ * eval_intern.h (enum): ditto.
+
+ * vm_core.h (enum rb_thread_status): ditto.
+
+ * parse.y (enum lex_state_e): ditto.
+
+ * parse.y (enum string_type): ditto.
+
+ * process.c (enum): ditto.
+
+ * ruby.c (enum dump_flag_bits): ditto.
+
+ * ruby.c (enum disable_flag_bits): ditto.
+
+ * enc/gb18030.c (enum): ditto.
+
+Tue Jul 1 17:21:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regexec.c (stack_double): use MatchStackLimitSize atomically.
+
+ * regparse.c (onig_free_shared_cclass_table): OnigTypeCClassTable
+ needs atomicity
+
+ * regsyntax.c: constified all predefined OnigSyntaxTypes.
+
+Tue Jul 1 16:57:44 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * include/ruby/st.h (struct st_table): type of bit-field
+ 'num_entries' is a GCC extension
+
+ * include/ruby/ruby.h (rb_intern): prefix __extension__ for
+ braced-groups within expressions.
+
+ * include/ruby/intern.h (rb_usascii_str_new2): ditto.
+
+ * include/ruby/intern.h (rb_tainted_str_new2): ditto.
+
+ * include/ruby/intern.h (rb_str_new2): ditto.
+
+Tue Jul 1 15:01:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rubygems/ext/builder.rb (Gem::Ext::Builder.make),
+ (Gem::Ext::Builder.run): EXIT_SUCCESS may be 0 or may not.
+
+ * test/rubygems/test_gem_ext_rake_builder.rb (build_rake_in): override
+ Gem.ruby and ENV["rake"].
+
+ * runruby.rb: bin/rake does not exist in archdir where architecture
+ depend script (i.e. rbconfig.rb) exists.
+
+Tue Jul 1 13:19:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_fill): check if beg is too big.
+
+Tue Jul 1 12:01:16 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def, vm.c, vm_core.h: remove some insns
+ (undef, alias, definemethod).
+ Call RubyVM::FrozenCore's singleton method instead.
+ Add "putiseq" and "putspecialobject" instructions.
+
+ * id.c, id.h: add ids for above.
+
+ * tool/parse.rb: "VM" no longer exists. Use RubyVM instead.
+
+Tue Jul 1 03:28:16 2008 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/test_ext_configure_builder.rb: Apply locale-free
+ patch by Yusuke ENDOH. [ruby-core:17444].
+
+ * runruby.rb: Set ENV['rake']. Patch by Yusuke ENDOH
+ [ruby-core:17442].
+
+Tue Jul 1 01:07:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension.read_multipart): blanks inside
+ double quotes are allowed. [ruby-list:45140]
+
+Tue Jul 1 00:59:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (num_coerce): call rb_Float(x) first. don't depend on
+ evaluation order of function arguments.
+
+Tue Jul 1 00:49:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_newobj): abort GC phase before rb_bug.
+
+Mon Jun 30 23:15:07 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/openssl/test_ssl.rb (start_server): shutdown TCPServer before
+ close.
+
+Mon Jun 30 23:01:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUBY_H_INCLUDES): common headers which are included with
+ ruby.h together.
+
+Mon Jun 30 22:57:50 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_settracefunc.rb (test_raise): reveal an exception
+ hided by rescue modifier.
+
+Mon Jun 30 22:49:32 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb (test_aset): access with too big index
+ raises not ArgumentError but IndexError now.
+
+Mon Jun 30 22:30:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (recursive_collect): r15662 reverted.
+
+Mon Jun 30 22:27:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/stringio/stringio.c (strio_getline): fix for nil and "" as
+ separator. [ruby-dev:34591]
+
+Mon Jun 30 22:21:30 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (argf_each_line): pass args to each_line. [ruby-dev:34958]
+
+Mon Jun 30 22:12:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (chain_finalized_object): should not delete from finalizer
+ table until run.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): deferred_final_list may be
+ empty first.
+
+Mon Jun 30 18:57:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_finalize_deferred): allow object allocation in finalizers.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): ditto.
+
+Mon Jun 30 14:41:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (rb_newobj): prohibit call of rb_newobj() during gc when
+ USE_VALUE_CACHE is not defined (normal case).
+
+Mon Jun 30 10:28:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syslog/syslog.c (syslog_write): syslog operations should be
+ protected from $SAFE level 4. a patch from Keita Yamaguchi
+ <keita.yamaguchi at gmail.com>.
+
+ * ext/syslog/syslog.c (mSyslog_close): ditto.
+
+ * ext/syslog/syslog.c (mSyslog_set_mask): ditto.
+
+Mon Jun 30 03:01:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/net/http/test_http.rb (_test_request__file): specify encoding
+ explicitly.
+
+ * test/net/http/utils.rb: ditto.
+
+Mon Jun 30 02:31:07 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_utf8_encindex): defined.
+
+ * include/ruby/encoding.h (rb_utf8_encindex): ditto.
+
+Mon Jun 30 02:14:34 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_core.h,vm_core.h, vm_dump.c, iseq.c: rename class name
+ VM -> RubyVM, and rename rb_cVM -> rb_cRubyVM.
+ "VM" is too short name for class.
+
+ * test/ruby/test_method.rb, test/ruby/test_settracefunc.rb: ditto.
+
+ * include/ruby/ruby.h: rb_cRubyVM, rb_cEnv, rb_cISeq should not be
+ exposed.
+
+Mon Jun 30 02:10:32 2008 Koichi Sasada <ko1@atdot.net>
+
+ * process.c (Init_process): fix to avoid a warning.
+
+Mon Jun 30 01:52:05 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_parse.rb: remove tests for open_args.
+
+Sun Jun 29 23:01:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_format_m): make tmp volatile to avoid possible GC
+ problem.
+
+Sun Jun 29 18:01:30 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb, lib/rss/utils.rb: merge documents from ruby_1_8.
+
+Sun Jun 29 17:44:23 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::ListenerMixin#known_class): define to
+ work with ruby 1.8.x too.
+
+Sun Jun 29 17:41:42 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb (RSS::Maker::RSSBase#to_feed): raise
+ exception not return nil if RSS::Maker.make can't get required
+ information.
+
+ * test/rss/rss-assertions.rb: follow the above change.
+
+Sun Jun 29 17:37:23 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb (RSS::Maker::RSSBase#make): require block.
+
+ * test/rss/test_maker_{0.9,1.0,2.0}.rb: follow the above change.
+
+Sun Jun 29 17:33:34 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb, lib/rss/maker/itunes.rb: don't use
+ instance_eval to initialize variables. (speed up)
+
+Sun Jun 29 17:31:15 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, test/rss/test_version.rb (RSS::VERSION):
+ 0.2.4 -> 0.2.5.
+
+Sun Jun 29 11:36:20 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * dir.rb: fix resource leak.
+
+Sun Jun 29 09:43:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (@@systmpdir): prior LOCAL_APPDATA if possible, and
+ should be clean. based on a patch from arton <artonx AT
+ yahoo.co.jp> at [ruby-dev:35269]
+
+Sun Jun 29 07:53:08 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (date2time_str): fix the overflow in
+ some situation. [ruby-bugs-20793]
+
+Sat Jun 28 21:25:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (struct RRegexp): new field usecnt. replace
+ str and len by src.
+
+ * gc.c (gc_mark_children): mark src field of regexp.
+ (obj_free): don't free str field.
+
+ * re.c (REG_BUSY): removed.
+ (rb_reg_initialize): prohibit re-initialize regexp.
+ (rb_reg_search): use usecnt to prevent freeing regexp currently
+ using. this prevents SEGV by:
+ r = /\A((a.)*(a.)*)*b/
+ r =~ "ab" + "\xc2\xa1".force_encoding("euc-jp")
+ t = Thread.new { r =~ "ab"*8 + "\xc2\xa1".force_encoding("utf-8")}
+ sleep 0.2
+ r =~ "ab"*8 + "\xc2\xa1".force_encoding("euc-jp")
+
+Sat Jun 28 21:15:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_str_new2, rb_tainted_str_new2,
+ rb_usascii_str_new2): use inline versions only for constant
+ literals.
+
+Sat Jun 28 13:12:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/rubygems/test_gem.rb (test_self_path_APPLE_GEM_HOME): don't use
+ fixed /tmp/apple_gem_home directory.
+
+Sat Jun 28 08:40:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: check String encoding when
+ converting String to VT_BSTR in OLE.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Sat Jun 28 01:08:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_timespec): fix rounding negative float.
+
+Fri Jun 27 21:38:57 2008 Tanaka Akira <akr@fsij.org>
+
+ * struct.c: __size__ removed. use the length of __members__ instead.
+ (num_members): new function.
+
+Fri Jun 27 21:19:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/inlinetest.rb (InlineTest.in_progname): workaround for frozen
+ $0. [ruby-dev:35261]
+
+ * lib/test/unit/ui/console/testrunner.rb (TestRunner#finished): ditto.
+
+Fri Jun 27 17:45:17 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/erb.rb: adjust line number for magic comment.
+
+ * test/erb/test_erb.rb: add tests for def_method.
+
+Fri Jun 27 14:29:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): empty not should call '!' on nil.
+ cf [ruby-dev:35227]
+
+Fri Jun 27 14:25:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_eval_body): if thrown exception is frozen, reraise it to
+ create a new instance.
+
+Fri Jun 27 13:29:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_str_new2, rb_tainted_str_new2,
+ rb_usascii_str_new2): use with-length versions with strlen to
+ optimize strlen, if optimized.
+
+Fri Jun 27 12:28:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/un.rb (mkmf): new command to create makefile.
+
+Fri Jun 27 11:06:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/un.rb (wait_writable): added help message.
+
+Fri Jun 27 06:52:54 2008 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in: need a ",".
+
+ * process.c (rb_fork): check CANNOT_FORK_WITH_PTHREAD macro.
+
+Fri Jun 27 06:50:56 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (vm_call_super): fix to call method_missing.
+ [ruby-core:15719], [ruby-core:17340]
+
+Fri Jun 27 00:00:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_arg0, ruby_prog_init): freeze $0. a patch from Keita
+ Yamaguchi <keita.yamaguchi at gmail.com>.
+
+Thu Jun 26 23:58:29 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (rb_str_index_m, rb_str_rindex_m, rb_str_include): fix
+ rdoc.
+
+Thu Jun 26 17:43:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_f_trace_var): should not be allowed at safe level 4.
+ a patch from Keita Yamaguchi <keita.yamaguchi at gmail.com>.
+
+Thu Jun 26 11:04:30 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.2.0 r1824. Incorporates patch by
+ Yusuke ENDOH [ruby-core:17353].
+
+Thu Jun 26 00:48:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): not operand might be empty. [ruby-dev:35227]
+
+Wed Jun 25 21:54:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): make functional-style not operator to act
+ like function. see <http://d.hatena.ne.jp/ku-ma-me/20080624/p1>.
+
+Wed Jun 25 15:28:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_fill): not depend on unspecified behavior at integer
+ overflow. reported by Vincenzo Iozzo <snagg AT openssl.it>.
+
+Wed Jun 25 13:42:44 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Compiler:Buffer#new): push magic comment first.
+
+ * lib/erb.rb (ERB::Compiler#compile): fix for broken input.
+
+Wed Jun 25 12:10:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Compiler#compile): magic comment needs LF.
+
+Wed Jun 25 09:31:11 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Compiler#compile): output magic comment.
+
+Tue Jun 24 22:14:36 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_eval.c (eval_string_with_cref): preserve parse_in_eval even if
+ exception raised.
+
+Tue Jun 24 22:09:18 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(ole_invoke): fix memory leak.
+ [ruby-bugs-20792]
+
+Tue Jun 24 17:20:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_fork_with_pthread): check after check for
+ pthread library, and define the macro when checked only.
+
+Tue Jun 24 17:04:39 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/io/wait/extconf.rb: check sys/socket.h for cygwin.
+
+Tue Jun 24 16:51:51 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_reopen): remove cygwin handling because it seems to be for
+ C's stdio.
+ fixed [ruby-dev:35183]
+
+Tue Jun 24 11:12:33 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/win32.c (rb_w32_getppid): now support
+ getppid() on win32 (but only Win2k or later).
+
+ * process.c (get_ppid): remove win32 special logic.
+
+Tue Jun 24 09:40:47 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (init_sock): socket is binmode on platforms
+ which support binmode.
+
+Tue Jun 24 00:21:53 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_build_from_ary): initialize arg_opts, a patch from
+ Adam Strzelecki <ono at java.pl> in [ruby-core:17220].
+
+Tue Jun 24 00:10:53 2008 wanabe <s.wanabe@gmail.com>
+
+ * compile.c (iseq_build_from_ary): fix expression to obtain
+ iseq->local_size and iseq->local_table_size. [ruby-dev:35205]
+
+Mon Jun 23 11:31:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Rational::power2): removed incomplete method.
+ see [ruby-dev:35195]. [ruby-core:17293]
+
+Sun Jun 22 14:16:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/extconf.rb (have_readline_func): readline on Mac OS X
+ needs headers to detect some functions.
+
+Sun Jun 22 09:51:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_class_superclass): rdoc improvement, a patch from
+ Gaston Ramos <ramos.gaston AT gmail.com> in [ruby-core:17371].
+
+Sun Jun 22 09:22:32 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * README.EXT: translated README.EXT.ja
+
+Sun Jun 22 00:42:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_osid, rb_w32_osver, CreateChild): XP is
+ is different from Vista about pipe handle inheritance.
+ fixed [ruby-core:17367], reported by Lars Christensen <larsch at
+ belunktum.dk>
+
+Sun Jun 22 00:38:45 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT.ja: add note about mark and free.
+
+Sun Jun 22 00:01:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_binmode_p, argf_binmode_p, Init_IO): new method
+ IO#binmode? and ARGF.binmode? [ruby-dev:35148]
+
+Sat Jun 21 17:33:50 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn): no longer support P_WAIT.
+
+Sat Jun 21 16:46:09 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (native_sleep): must block reentrance when accessing
+ th->unblock.
+ fixed [ruby-core:17341], reported by Bill Kelly <billk at cts.com>
+
+Sat Jun 21 16:29:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (call_args2, open_args): removed.
+
+ * parse.y (parser_yylex): unified warnings at space between method
+ name and argument parenthesis. [ruby-dev:33943]
+
+Sat Jun 21 16:21:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_round): get rid of overflow.
+
+Sat Jun 21 15:57:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc#collect_first_comment): skip
+ magic comment.
+
+Sat Jun 21 15:54:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check if fork works with pthread.
+
+Sat Jun 21 15:31:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: ported to ruby.
+
+ * tool/make-snapshot: fixed digests.
+
+Sat Jun 21 04:36:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/jacobian.rb (Jacobian::dfdxi):
+ typo fixed (raize -> raise). [ruby-list:45101]
+
+ * enumerator.c (enum_each_cons): typo in RDoc fixed.
+
+Sat Jun 21 00:45:34 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * tool/make-snapshot: do not use sha256sum; use BASERUBY instead
+
+ * common.mk (dist): use tool/make-snapshot instead
+
+Fri Jun 20 16:34:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (Init_process): Process::Status#to_int removed.
+ (PST2INT): defined.
+ (pst_to_s): use PST2INT.
+ (pst_inspect): ditto.
+ (pst_equal): ditto.
+ (pst_bitand): ditto.
+ (pst_rshift): ditto.
+ (pst_wifstopped): ditto.
+ (pst_wstopsig): ditto.
+ (pst_wifsignaled): ditto.
+ (pst_wtermsig): ditto.
+ (pst_wifexited): ditto.
+ (pst_wexitstatus): ditto.
+ (pst_success_p): ditto.
+ (pst_wcoredump): ditto.
+ (rb_f_system): ditto.
+
+Fri Jun 20 15:40:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_store, rb_ary_splice): not depend on unspecified
+ behavior at integer overflow.
+
+ * string.c (str_buf_cat): ditto.
+
+Fri Jun 20 12:39:55 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_detach_process): store detached process ID in the
+ thread local storage. moved from lib/open3.rb.
+
+Fri Jun 20 11:57:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_sub_bang): should preserve replacement points
+ since they may be altered in the yielded block.
+
+Fri Jun 20 11:07:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_memhash): randomize hash to avoid algorithmic
+ complexity attacks.
+ (rb_str_hash): use rb_memhash.
+
+ * include/ruby/intern.h (rb_reset_random_seed): declared.
+
+ * thread.c (rb_thread_atfork): call rb_reset_random_seed.
+
+ * inits.c (rb_call_inits): call Init_RandomSeed at first.
+
+ * random.c (seed_initialized): defined.
+ (fill_random_seed): extracted from random_seed.
+ (make_seed_value): extracted from random_seed.
+ (rb_f_rand): initialize random seed at first.
+ (initial_seed): defined.
+ (Init_RandomSeed): defined.
+ (Init_RandomSeed2): defined.
+ (rb_reset_random_seed): defined.
+ (Init_Random): call Init_RandomSeed2.
+
+Wed Jun 18 21:52:38 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * array.c (ary_new, rb_ary_initialize, rb_ary_store,
+ rb_ary_splice, rb_ary_times): integer overflows should be
+ checked. based on patches from Drew Yao <ayao at apple.com>
+ fixed CVE-2008-2726
+
+ * string.c (rb_enc_cr_str_buf_cat): fixed unsafe use of alloca,
+ which led memory corruption. based on a patch from Drew Yao
+ <ayao at apple.com> fixed CVE-2008-2726
+
+Fri Jun 20 03:26:00 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_f_fork): NetBSD 4.0 or later can fork.
+
+Fri Jun 20 03:19:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/testunit/collector/test_dir.rb: r15825 made it unnecessary to
+ change String to Symbol.
+
+ * test/testunit/collector/test_objectspace.rb: ditto.
+
+Fri Jun 20 03:14:31 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*, test/rubygems/*: Update to RubyGems 1.1.1 r1784 (pre
+ 1.2).
+
+Fri Jun 20 03:01:59 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c: try to remove false positive of deadlock detection (second
+ trial).
+
+Fri Jun 20 02:16:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Rational::power2): typo fixed. [ruby-core:17293]
+
+Fri Jun 20 02:11:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): should preserve last successful match
+ data. [ruby-dev:35182]
+
+Fri Jun 20 01:07:28 2008 Koichi Sasada <ko1@atdot.net>
+
+ * KNOWNBUGS.rb, bootstraptest/pending.rb: move a bug (?) to pending.
+
+Fri Jun 20 00:40:08 2008 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (proc_new): fix to return Proc object if block is already
+ in heap. [ruby-core:15711]
+
+ * bootstraptest/test_proc.rb: add a test.
+
+Fri Jun 20 00:18:04 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread_win32.c (native_sleep): fix to decrement sleeper count.
+
+Thu Jun 19 23:48:45 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/net/http/test_http.rb: compare encodings of two strings before
+ comparing themself, which suppress too big error output.
+
+Thu Jun 19 23:46:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/json/ext/parser/parser.rl, ext/json/ext/parser/parser.c: JSON
+ text SHALL be encoded in Unicode.
+
+Thu Jun 19 23:17:56 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c, thread_win32.c, vm_core.h: try to remove false positive of
+ deadlock detection.
+
+Thu Jun 19 21:38:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): check if compile before showing message.
+
+Thu Jun 19 21:35:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: supported multiple snapshots.
+
+Thu Jun 19 20:37:00 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/net/pop.rb (Net::POP3#set_all_uids): speed
+ up. a patch from <m-sumi AT techfirm.co.jp> [ruby-list:45047]
+
+Thu Jun 19 17:44:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/etc/etc.c (Init_etc): define constant aliases Etc::Passwd
+ and Etc::Group. [ruby-dev:35150]
+
+Thu Jun 19 17:37:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_alloc): specify 'inline' modifier.
+
+ * string.c (str_alloc): remove cSymbol hack that no longer
+ necessary.
+
+ * string.c (scan_once): avoid retrieving encoding info unless
+ necessary.
+
+Thu Jun 19 17:19:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_scan): String#scan should preserve last
+ successful match data. [ruby-dev:35106]
+
+Thu Jun 19 16:49:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * missing/acosh.c (atanh): should set ERANGE to errno if parameter
+ is the boundary case. fixed [ruby-dev:35155]
+
+Thu Jun 19 16:06:01 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/tile/treeview.rb: cannot configure tags.
+
+Thu Jun 19 11:48:33 2008 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_enumerator.rb: fix to skip "with_memo" test.
+
+Thu Jun 19 11:40:55 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_throw): fix "return" process from "lambda".
+
+ * bootstraptest/test_proc.rb: add a test.
+
+ * bootstraptest/pending.rb: add a pending bug.
+
+Thu Jun 19 00:33:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb: avoid infinite loop. [ruby-dev:35158]
+
+Wed Jun 18 23:07:19 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * gc.c (rb_newobj): prohibit call of rb_newobj() during gc.
+ a patch from Sylvain Joyeux in [ruby-core:12099].
+
+Wed Jun 18 21:08:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (verbose_setter, opt_W_getter): fixed prototypes.
+
+Wed Jun 18 19:20:00 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (opt_W_getter): use ruby_verbose directly instead of parameter
+ because ruby_verbose is not a real variable, so the address of
+ parameter is not collect.
+
+Wed Jun 18 18:31:03 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (errmap): add some pipe errors.
+
+ * win32/win32.c (rb_w32_write): set errno when CRT's errno is EINVAL
+ for pipe errors.
+
+Wed Jun 18 18:09:08 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (poll_child_status): set EINVAL to errno when
+ GetExitCodeProcess() fails with ERROR_INVALID_HANDLE.
+
+Wed Jun 18 15:01:18 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_open_file): fs_encoding and fname_encoding is
+ rb_encoding *.
+ fixed [ruby-dev:35151]
+
+Wed Jun 18 14:30:06 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_open_file): not rb_enc_get_index but rb_enc_get.
+
+Wed Jun 18 13:49:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (pipe): now pipe is textmode. although this
+ change is experimental, it will be spec if no compatibility problem
+ is reported.
+
+Wed Jun 18 12:05:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object, marshal_dump, r_object0, marshal_load): search
+ public methods only. [ruby-core:17283]
+
+ * object.c (convert_type): ditto.
+
+ * lib/singleton.rb (Singleton#_dump): conversion method should be
+ public.
+
+Wed Jun 18 10:18:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_passwd, etc_group): fixed rdoc. a patch from
+ okkez <okkez000 AT gmail.com> in [ruby-dev:35141].
+
+Wed Jun 18 08:58:16 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/*: Fix errors for 1.9.
+
+ * gem_prelude.rb: Only remove methods from gem_prelude.rb when
+ loading real RubyGems.
+
+Wed Jun 18 07:03:30 2008 Eric Hodel <drbrain@egment7.net>
+
+ * lib/rubygems/*: Update to RubyGems r1778 (pre 1.2).
+
+Wed Jun 18 04:27:58 2008 Koichi Sasada <ko1@atdot.net>
+
+ * KNOWNBUGS.rb, bootstraptest/pending.rb: move pending bug.
+
+Wed Jun 18 04:24:20 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_insnhelper.c: fix escape process with "break" and "return"
+ syntax in "lambda". [ ruby-Bugs-19304 ], [ruby-core:17164]
+
+ * KNOWNBUGS.rb, bootstraptest/test_proc.rb: add/move solved test.
+
+Wed Jun 18 01:51:10 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: cannot access class variable from
+ singleton method.
+
+Wed Jun 18 00:03:33 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c (Init_Dir): dir_foreach() takes variable argument.
+
+Tue Jun 17 23:04:24 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/net/telnet.rb: Fixing Telnet#wairfor() which was broken by
+ changes to the Kernel::Integer() method. [ruby-core:17272]
+
+Tue Jun 17 23:02:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (opt_W_getter): made a hooked variable.
+
+Tue Jun 17 22:04:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enc/euc_jp.c (property_name_to_ctype): core dumped when sizeof(int)
+ differs from sizeof(long). [ruby-dev:35131]
+
+ * enc/shift_jis.c (property_name_to_ctype): ditto.
+
+ * enc/unicode.c (onigenc_unicode_property_name_to_ctype): ditto.
+
+Tue Jun 17 20:32:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (miniruby$(EXEEXT)): $(PREP) isn't always same as
+ miniruby, and tests, debug, etc have no meaning when
+ cross-compiling.
+
+Tue Jun 17 18:39:11 2008 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * common.mk: fixed dependencies on miniruby.
+
+Tue Jun 17 18:11:01 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (pipe): expand pipe buffer size.
+
+Tue Jun 17 17:07:35 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): no need to inherit handles here because
+ spawn'ed child cannot detect that STDIN is closed.
+
+Tue Jun 17 06:32:55 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (dir_data): add intenc and extenc.
+
+ * dir.c (dir_s_alloc): ditto.
+
+ * dir.c (dir_initialize): now accept internal_encoding and
+ external_encoding.
+
+ * dir.c (dir_s_open): changed for dir_initialize.
+
+ * dir.c (dir_open_dir): ditto.
+
+ * dir.c (dir_foreach): changed for dir_open_dir.
+
+ * dir.c (dir_entries): changed for dir_open_dir.
+
+ * dir.c (dir_enc_str): defined.
+
+ * dir.c (dir_path): use dir_enc_str.
+
+ * dir.c (dir_read): ditto.
+
+ * dir.c (dir_each): ditto.
+
+Tue Jun 17 06:28:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_set_encoding): defined.
+
+ * io.c (rb_open_file): convert path on Windows and Mac OS X.
+
+ * io.c (open_key_args): use io_set_encoding and now accept
+ internal_encoding and external_encoding.
+
+Tue Jun 17 06:26:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_filesystem_encoding): defined.
+
+ * include/ruby/encoding.h (rb_filesystem_encoding): added.
+
+Tue Jun 17 06:24:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/syck/rubyext.c: add encoding header.
+
+Tue Jun 17 01:52:50 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: SEGV when exit.
+
+ * ext/tk/lib/tk.rb: add a check for safety to Tk.exit.
+
+ * ext/tk/sample/irbtkw.rbw: freezes when receives SIGINT.
+
+Mon Jun 16 21:58:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_each, strio_readlines): IO#each and
+ IO#readlines do not affect $_. [ruby-core:17277]
+
+Mon Jun 16 18:52:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/thwait.rb (ThreadsWait): Exception2MessageMapper no longer has
+ extend_to method. [ruby-core:17267]
+
+Mon Jun 16 14:46:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/e2mmap.rb (E2MM.def_e2message): typo.
+
+Mon Jun 16 09:43:27 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_with_object, Init_Enumerator):
+ Temporarily back out with_memo, for which we need a better name.
+
+Mon Jun 16 07:14:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_readline, strio_each)
+ (strio_readlines): set lastline. [ruby-core:17257]
+
+Mon Jun 16 01:49:39 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_f_block_given_p): fix to skip class frame.
+ [ruby-core:14813]
+
+ * KNOWNBUGS.rb, bootstraptest/test_method.rb: move solved test.
+
+Mon Jun 16 01:48:08 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c (vm_stack_dump_raw): disable verbose debug output.
+
+Mon Jun 16 01:33:08 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, thread.c: rename global_interpreter_lock to
+ global_vm_lock.
+
+Sun Jun 15 18:40:35 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/syck/rubyext.c (yaml_org_handler): associate encoding.
+
+ * ext/syck/rubyext.c (syck_genericresolver_node_import): ditto.
+
+Sun Jun 15 18:17:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_vm_t), vm.c (rb_vm_mark): moved preallocated special
+ exceptions.
+
+ * eval.c (Init_eval), gc.c (Init_GC), proc.c (Init_Proc): freeze
+ preallocated special exceptions.
+
+ * eval.c (rb_longjmp): duplicate the thrown exception to set backtrace
+ if it was frozen.
+
+ * gc.c (rb_memerror): raise nomem_error without backtrace if failed to
+ make backtrace.
+
+Sat Jun 14 22:52:35 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_sysread): should not raise at empty
+ read. a patch from Arthur Schreiber at [ruby-core:17245].
+
+Sat Jun 14 16:55:46 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): no need to expand root path which has no
+ short file name. [ruby-dev:35095]
+
+Sat Jun 14 11:59:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.h (STACK_UPPER): moved from gc.c
+
+ * thread.c, thread_{pthread,win32}.c (ruby_init_stack,
+ ruby_thread_init_stack): moved stack initialization from gc.c.
+
+Sat Jun 14 11:57:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.h (STACK_UPPER): moved from gc.c
+
+ * thread.c, thread_{pthread,win32}.c (ruby_init_stack,
+ ruby_thread_init_stack): moved stack initialization from gc.c.
+
+Sat Jun 14 07:52:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (ruby_initial_gc_stress): defined.
+ (ruby_initial_gc_stress_ptr): defined.
+
+ * debug.c (set_debug_option): use ruby_initial_gc_stress_ptr for
+ gc_stress option.
+
+Sat Jun 14 00:09:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (ruby_gc_stress): moved to rb_objspace_t.
+
+ * gc.c (gc_stress_get, gc_stress_set): VM local attribute.
+
+ * signal.c (sigsegv): ditto.
+
+Fri Jun 13 21:55:48 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_equal_p): Rational(0,x) and 0 are equivalent,
+ anyway.
+
+Fri Jun 13 21:26:39 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (string_to_c, nucomp_s_convert): preserve the current
+ backref.
+
+ * rational.c (string_to_r, nurat_s_convert): ditto.
+
+ * include/ruby/intern.h (rb_match_busy): added a declaration.
+
+Fri Jun 13 18:08:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.xmlschema): don't accept decimal dot without
+ fractional digits. fractional digits handling simplified.
+
+Fri Jun 13 17:20:40 2008 wanabe <s.wanabe@gmail.com>
+
+ * complex.c (string_to_c_internal): save and restore backref.
+ fixed [ruby-dev:34991]
+
+Fri Jun 13 17:06:20 2008 wanabe <s.wanabe@gmail.com>
+
+ * rational.c (string_to_r_internal): save and restore backref.
+ fixed [ruby-dev:34990]
+
+Fri Jun 13 14:41:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT.ja: update about Fixnum. reported in
+ <http://www.tmtm.org/ja/tdiary/?date=20080611#p01>
+
+ * README.EXT.ja: describe about StringValueCStr().
+
+ * README.EXT: ditto.
+
+Fri Jun 13 14:24:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_memerror): exit with EXIT_FAILURE instead of magic number.
+
+ * gc.c (ruby_stack_check): STACK_LENGTH should be less than
+ STACK_LEVEL_MAX.
+
+Fri Jun 13 12:55:37 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (sort_by_i): use NODE_DOT2 instead of NODE_MEMO to avoid
+ extra calls to is_pointer_to_heap() in GC.
+
+ * enum.c (enum_zip): ditto.
+
+Fri Jun 13 00:41:58 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_thread.rb: add a test.
+
+Thu Jun 12 23:30:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (mutex_unlock): fix cond_notified consistency.
+
+Thu Jun 12 22:19:45 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (native_sleep): fixed previous commit.
+
+Thu Jun 12 21:59:17 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c, vm_core.h, vm.c, thread_pthread.c, thread_win32.c: add
+ deadlock detection. [ruby-dev:35044]
+
+ * bootstraptest/test_thread.rb: add tests for above.
+
+Thu Jun 12 21:39:55 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: refactoring.
+
+ * rational.c: ditto.
+
+Thu Jun 12 17:11:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regint.h: undefine USE_CAPTURE_HISTORY which is mentioned as
+ unsupported in the Onigiruma document.
+
+Thu Jun 12 13:36:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (rb_intern): use rb_intern2 with strlen for
+ constant symbols to optimize strlen.
+
+Thu Jun 12 08:47:51 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): should use io_read_encoding(), not
+ io_input_encoding().
+
+ * io.c (rb_io_getline_1): reduce calling of io_read_encoding().
+
+ * string.c (rb_str_scan): need not to restore $~ value, so avoid
+ pinning match object.
+
+Thu Jun 12 02:49:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/stringio/stringio.c (strio_init): rewind when reopened.
+
+Thu Jun 12 02:43:27 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_zip): ANSI style.
+
+Thu Jun 12 02:25:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_reopen): clear read buffer.
+
+Thu Jun 12 00:56:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk: check proper conditions. [ruby-dev:35047]
+
+Wed Jun 11 23:33:13 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fread): bypass buffered read if reading buffer is empty.
+
+ * io.c (remain_size): do not add extra one byte.
+
+Wed Jun 11 12:15:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_normal_exit): hide stderr output
+ when success.
+
+Wed Jun 11 09:26:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (encs): need to pass miniruby path for windows.
+
+Wed Jun 11 05:53:20 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, eval_intern.h (PASS_PASSED_BLOCK):
+ set a VM_FRAME_FLAG_PASSED flag to skip this frame when
+ searching ruby-level-cfp.
+
+ * eval.c, eval_intern.h, proc.c: fix to check cfp. if there is
+ no valid ruby-level-cfp, cause RuntimeError exception.
+ [ruby-dev:34128]
+
+ * vm_core.h, vm_evalbody.c, vm.c, vm_dump.c, vm_insnhelper.c,
+ insns.def: rename FRAME_MAGIC_* to VM_FRAME_MAGIC_*.
+
+ * KNOWNBUGS.rb, bootstraptest/test*.rb: move solved bugs.
+
+Wed Jun 11 05:55:31 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: SEGV when tcltk-stubs is enabled.
+
+ * ext/tk/tcltklib.c: avoid error on a shared object.
+
+ * ext/tk/extconf.rb: support --with-tcltkversion
+
+ * ext/tk/README.tcltklib: add document about --with-tcltkversion
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb, ext/tk/lib/remote-tk.rb:
+ not work on $SAFE==4
+
+ * ext/tk/lib/multi-tk.rb: Object#methods returns Symbols on Ruby1.9.
+
+ * ext/tk/lib/tk/timer.rb: add TkTimer#at_end(proc) to register the
+ procedure which called at end of the timer.
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/itemfont.rb, ext/tk/lib/font.rb:
+ support __IGNORE_UNKNOWN_CONFIGURE_OPTION__ about font options.
+
+ * ext/tk/lib/*: treat __IGNORE_UNKNOWN_CONFIGURE_OPTION__
+
+ * ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb,
+ ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb,
+ ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: bug fix.
+
+ * ext/tk/lib/tk/text.rb: typo. call a wrong method.
+
+ * ext/tk/lib/tk/itemconfig.rb: ditto.
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/itemconfig.rb,
+ ext/tk/lib/tk/canvas.rb: support alias names of option keys.
+
+ * ext/tk/lib/tk/grid.rb: lack of module-method definitions.
+
+ * ext/tk/lib/tk/pack.rb, ext/tk/lib/tk/grid.rb: increase supported
+ parameter patterns of configure method.
+
+ * ext/tk/lib/tk.rb: add TkWindow#grid_anchor, grid_column, grid_row.
+
+ * ext/tk/lib/tk/wm.rb: methods of Tk::Wm_for_General module cannot
+ pass the given block to methods of Tk::Wm module.
+
+ * ext/tk/lib/tk/wm.rb: Wm#overrideredirect overwrites argument to
+ an invalid value.
+
+ * ext/tk/lib/tk.rb: fix memory (object) leak bug.
+
+ * ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: fix memory leak.
+
+ * ext/tk/sample/demos-jp/aniwave.rb, ext/tk/sample/demos-en/aniwave.rb:
+ bug fix.
+
+ * ext/tk/lib/tkextlib/blt/component.rb,
+ ext/tk/lib/tkextlib/tile/tentry.rb,
+ ext/tk/lib/tkextlib/tile/treeview.rb: ditto.
+
+ * ext/tk/lib/tkextlib/tile/tpaned.rb: improve TPaned#add.
+
+ * ext/tk/sample/demos-jp/widget, ext/tk/sample/demos-en/widget,
+ ext/tk/sample/demos-jp/style.rb, ext/tk/sample/demos-en/style.rb,
+ ext/tk/sample/demos-jp/bind.rb, ext/tk/sample/demos-en/bind.rb:
+ bug fix.
+
+ * ext/tk/sample/ttk_wrapper.rb: ditto.
+
+ * ext/tk/sample/ttk_wrapper.rb: support "if __FILE__ == $0" idiom.
+
+ * ext/tk/sample/tktextio.rb: add binding for 'Ctrl-u' at console mode.
+
+ * ext/tk/lib/tkextlib/tile.rb, ext/tk/lib/tkextlib/tile/style.rb,
+ ext/tk/sample/ttk_wrapper.rb: improve treating and control themes.
+ add Tk::Tile.themes and Tk::Tile.set_theme(theme).
+
+ * ext/tk/lib/tkextlib/tile.rb: lack of autoload definitions.
+
+ * ext/tk/lib/tkextlib/tile/tnotebook.rb: cannot use kanji (not UTF-8)
+ characters for headings.
+
+ * ext/tk/lib/tkextlib/tkDND/shape.rb: wrong package name.
+
+ * ext/tk/tkutil/tkutil.c: improve handling callback-subst-keys.
+ Now, support longnam-keys (e.g. '%CTT' on tkdnd-2.0; however, still
+ not support tkdnd-2.0 on tkextlib), and symbols of parameters (e.g.
+ :widget=>'%W', :keycode=>'%k', '%x'=>:x, '%X'=>:root_x, and so on;
+ those are attributes of event object). It means that Ruby/Tk accepts
+ not only "widget.bind(ev, '%W', '%k', ...){|w, k, ...| ... }", but
+ also "widget.bind(ev, :widget, :keycode, ...){|w, k, ...| ... }".
+ It is potentially incompatible, when user passes symbols to the
+ arguments of the callback block (the block receives the symbols as
+ strings). I think that is very rare case (probably, used by Ruby/Tk
+ experts only). When causes such trouble, please give strings instead
+ of such symbol parameters (e.g. call Symbol#to_s method).
+
+ * ext/tk/lib/tk/event.rb, ext/tk/lib/tk/validation.rb,
+ ext/tk/lib/tkextlib/blt/treeview.rb,
+ ext/tk/lib/tkextlib/winico/winico.rb: ditto.
+
+ * ext/tk/tkutil/tkutil.c: strings are available on subst_tables on
+ TkUtil::CallbackSubst class (it is useful on Ruby 1.9).
+
+ * ext/tk/lib/tk/spinbox.rb, ext/tk/lib/tkextlib/iwidgets/hierarchy.rb,
+ ext/tk/lib/tkextlib/iwidgets/spinner.rb,
+ ext/tk/lib/tkextlib/iwidgets/entryfield.rb,
+ ext/tk/lib/tkextlib/iwidgets/calendar.rb,
+ ext/tk/lib/tkextlib/blt/dragdrop.rb,
+ ext/tk/lib/tkextlib/tkDND/tkdnd.rb,
+ ext/tk/lib/tkextlib/treectrl/tktreectrl.rb,
+ ext/tk/lib/tkextlib/tktable/tktable.rb: disable code piece became
+ unnecessary by reason of the changes of ext/tk/tkutil/tkutil.c.
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/multi-tk.rb: change strategy to define
+ the constant WITH_ENCODING.
+
+ * ext/tk/lib/tk.rb: fix bug on Tk::Encoding.tk_encoding_names.
+
+Wed Jun 11 03:40:37 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/find.rb (Find#find): Return an enumerator if no block is
+ given.
+
+Wed Jun 11 01:28:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/intern.h, proc.c: revert rb_proc_call() and
+ create rb_proc_call_with_block() instead.
+
+ * include/ruby/ruby.h, eval_jump.c, thread.c, vm_insnhelper.c:
+ rb_blockptr should not be exposed.
+
+Tue Jun 10 21:07:19 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_float.rb: add tests. [ruby-dev:35009]
+
+Tue Jun 10 20:55:57 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_convert): need not to initialize optional
+ argument for rb_scan_args().
+
+Tue Jun 10 20:13:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: negate default of --without-ext if --with-ext is
+ given.
+
+ * ext/extmk.rb: negate default of --without-ext.
+
+Tue Jun 10 17:43:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle_bang): update RDoc. [ruby-dev:35034]
+
+Tue Jun 10 17:30:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_obj_instance_exec, rb_mod_module_exec):
+ added prototypes.
+
+Tue Jun 10 17:00:29 2008 wanabe <s.wanabe@gmail.com>
+
+ * util.c (ruby_strtod): ruby_strtod don't allow a trailing
+ decimal point like "7.". [ruby-dev:34835] [ruby-dev:35009]
+
+Tue Jun 10 13:48:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rational.c (nurat_s_convert): need not to initialize optional
+ argument for rb_scan_args().
+
+Tue Jun 10 12:58:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/wait/wait.c (FIONREAD_POSSIBLE_P): suppress warnings.
+
+Tue Jun 10 12:43:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (CONST_ID_CACHE): fixed statement expression.
+
+Tue Jun 10 11:25:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (rb_argv0): revised for ext/tk.
+
+ * include/ruby/encoding.h: not to use varargs.h since requiring C89.
+
+Tue Jun 10 00:50:51 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * include/ruby/ruby.h, vm_core.h: add a type rb_blockptr.
+
+ * vm_insnhelper.c (vm_yield_with_cfunc): vm_yield_with_cfunc receives
+ blockptr and passes it to iterating block.
+
+ * proc.c (rb_proc_call), include/ruby/intern.h: rb_proc_call receives
+ blockptr. "rb_proc_call(self, args, blockptr)" in C corresponds to
+ "self.call(*args, &block)" in Ruby.
+
+ * proc.c (proc_call): pass blockptr to block that is written in C.
+
+ * proc.c (curry): receive blockptr and pass it to original proc.
+ [ruby-core:15551]
+
+ * vm.c (invoke_block_from_c): fix for change of vm_yield_with_cfunc.
+
+ * thread.c (call_trace_proc), eval_jump.c (rb_call_end_proc): fix for
+ change of rb_proc_call.
+
+Tue Jun 10 00:10:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk (test-knownbug): give $(OPTS) for bootstraptest/runner.rb.
+
+Mon Jun 9 23:10:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (Init_stack): don't declare. it is a macro now.
+
+Mon Jun 9 22:46:47 2008 wanabe <s.wanabe@gmail.com>
+
+ * compile.c : treat []&&= in virtually the same way as []||=.
+ [ruby-dev:34679]
+
+Mon Jun 9 21:17:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (clean): remove build directories.
+
+ * test_knownbug.rb -> KNOWNBUGS.rb: renamed.
+
+ * common.mk: apply above change.
+
+Mon Jun 9 21:14:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): set flags.
+
+Mon Jun 9 21:09:02 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb -> ./test_knownbug.rb: moved.
+
+ * common.mk: add a rule "test-knownbug".
+
+Mon Jun 9 21:00:32 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_s_convert): can accept Complex('i').
+ [ruby-dev:34991]
+
+Mon Jun 9 18:25:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (CONST_ID): constant ID cache for non-gcc.
+
+ * *.c: no cache in init functions.
+
+Mon Jun 9 17:56:30 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#delete_if): Call to_a.
+ (SortedSet#delete_if, TC_SortedSet#test_sortedset): Use super to
+ yield elements in sorted order; [ruby-core:17144] by Arthur
+ Schreiber.
+ (SortedSet#each, SortedSet#each, TC_Set#test_each)
+ (TC_SortedSet#test_sortedset): Return self; [ruby-dev:35002] by
+ Arthur Schreiber.
+
+Mon Jun 9 17:47:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fptr_finalize): close IO object if fd is already closed.
+ (rb_p): call rb_io_write just once.
+
+Mon Jun 9 15:37:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (require_libraries): req_list may be NULL. [ruby-dev:35008]
+
+Mon Jun 9 14:18:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct rb_vm_struct): moved src_encoding_index,
+ ruby_debug, ruby_verbose, and rb_progname.
+
+ * ruby.c (rb_argv0): no longer used.
+
+ * ruby.c (struct cmdline_options): moved setids and req_list, and the
+ latter is now an array, to prevent memory leak.
+
+ * ruby.c (cmdline_options_init): added.
+
+ * ruby.c (add_modules, require_libraries, init_ids, forbid_setid): use
+ struct cmdline_options.
+
+ * vm.c (vm_init2): initialize src_encoding_index.
+
+ * vm.c: getters/setters for ruby_{debug,verbose}.
+
+Mon Jun 9 09:54:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (Init_stack): make to call ruby_init_stack.
+
+Mon Jun 9 08:12:40 2008 wanabe <s.wanabe@gmail.com>
+
+ * vm_insnhelper.c, vm.c, proc.c : revert r17021. [ruby-dev:34997]
+
+Mon Jun 9 03:12:23 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/pending.rb: move/remove solved issues.
+
+ * bootstraptest/test_class.rb: ditto.
+
+Mon Jun 9 02:32:58 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/zlib/zlib.c (rb_deflate_init_copy): Copy buffers as well.
+ [ruby-list:45018]
+
+Sun Jun 8 22:22:20 2008 wanabe <s.wanabe@gmail.com>
+
+ * vm_insnhelper.c, vm.c, proc.c (proc_call): allow call method with
+ block that both is written in C. [ruby-dev:34273] [ruby-core:15551]
+
+ * proc.c (curry): use proc_call instead of rb_proc_call.
+ [ruby-dev:34273] [ruby-core:15551]
+
+Sun Jun 8 21:50:27 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/zlib/test_zlib.rb: add tests to achieve over 90% test coverage
+ of zlib.
+
+Sun Jun 8 20:12:47 2008 wanabe <s.wanabe@gmail.com>
+
+ * vm_insnhelper.c (vm_throw): regard break as return in lambda.
+ [ruby-dev:34646]
+
+Sun Jun 8 19:17:59 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c: add a build option "CALC_EXACT_MALLOC_SIZE".
+ This option enables to calculate exact size of current
+ allocated size by malloc(). You can access these information
+ with GC.malloc_allocated_size and GC.malloc_allocations.
+ This option consume additional memory as a header of each memory
+ object. This option also helps to find out xmalloc()/xfree()
+ consistency. If you get trouble with this option, some extension
+ using "free()" instead of "xfree()".
+ This options is disabled by default.
+
+Sun Jun 8 18:15:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * array.c, bignum.c, cont.c, dir.c, dln.c, encoding.c, enumerator.c,
+ enumerator.c (enumerator_allocate), eval_jump.c, file.c, hash.c,
+ io.c, load.c, pack.c, proc.c, random.c, re.c, ruby.c, st.c,
+ string.c, thread.c, thread_pthread.c, time.c, util.c, variable.c,
+ vm.c, gc.c:
+ allocated memory objects by xmalloc (ruby_xmalloc) should be
+ freed by xfree (ruby_xfree).
+
+ * ext/curses/curses.c, ext/dbm/dbm.c, ext/digest/digest.c,
+ ext/gdbm/gdbm.c, ext/json/ext/parser/parser.c,
+ ext/json/ext/parser/unicode.c, ext/openssl/ossl_cipher.c,
+ ext/openssl/ossl_hmac.c, ext/openssl/ossl_pkey_ec.c,
+ ext/sdbm/init.c, ext/strscan/strscan.c, ext/zlib/zlib.c:
+ ditto.
+
+Sun Jun 8 01:15:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * hash.c (hash_i): make Hash#hash order insensitive.
+ (rb_hash_dup): use DUPSETUP.
+
+Sat Jun 7 23:47:35 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/zlib/zlib.c (rb_deflate_initialize, Init_zlib): Fix up
+ initialize_copy; [ruby-list:45016].
+
+Sat Jun 7 22:15:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (VENDOR_DIR): use LIBDIR instead of PREFIX as well as
+ SITE_DIR. a patch from Richard Brown <rbrown AT exherbo.org> in
+ [ruby-core:17129].
+
+Sat Jun 7 21:37:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_f_open), re.c (rb_reg_search), transcode.c (str_transcode):
+ suppress warnings.
+
+ * util.c (quorem, rv_alloc, nrv_alloc): only used in dtoa().
+
+Sat Jun 7 16:06:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CFLAGS, CXXFLAGS): append default flags.
+
+Sat Jun 7 01:23:59 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_open_file, rb_io_s_sysopen): fmode should be unsigned int.
+ fixed [ruby-dev:34979]
+
+Fri Jun 6 23:46:19 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_callee_setup_arg): check simple flag before
+ calling setup_arg function(). this change reduce function call.
+
+Fri Jun 6 21:51:46 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (COMMON_HEADERS): include ws2tcpip.h.
+
+ * ext/socket/addrinfo.h (addrinfo, getaddrinfo, getnameinfo,
+ freehostent, freeaddrinfo): undef before define because these are
+ macros in some versions of Windows SDK.
+
+ merged from ruby_1_8.
+
+Fri Jun 6 18:25:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/iconv/utils.rb (default_test): override not to croak.
+
+Fri Jun 6 16:41:45 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: include ws2tcpip.h. fixed [ruby-Bugs-20528]
+
+Fri Jun 6 15:05:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (count_objects): clear hash after counting objects.
+
+Fri Jun 6 12:43:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_dir.rb (TestDir::test_glob): glob file names not sorted.
+
+Fri Jun 6 00:05:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.xmlschema): don't use float. fix
+ http://rubyforge.org/tracker/index.php?func=detail&group_id=426&atid=1698&aid=20504
+
+Thu Jun 5 23:56:18 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_gc.rb: add tests to achieve over 90% test coverage of
+ gc.c.
+
+ * test/ruby/test_objectspace.rb: ditto.
+
+ * test/ruby/test_marshal.rb: ditto.
+
+Thu Jun 5 23:40:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * gc.c (rb_objspace_alloc): this function is needed only when
+ ENABLE_VM_OBJSPACE macro is defined.
+
+ * vm.c: ditto.
+
+Thu Jun 5 23:31:21 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/stringio/test_stringio.rb: add tests to achieve over 95% test
+ coverage of stringio.
+
+ * test/strscan/test_stringscanner.rb: ditto for strscan.
+
+Thu Jun 5 23:25:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (ruby_finalize_0): clear trace_func after executing END
+ procs.
+
+ * thread.c: fix typo.
+
+Thu Jun 5 22:50:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (os_obj_of): heaps may be modified in yield.
+
+Thu Jun 5 21:46:50 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * st.c (st_reverse_foreach): comment out unused function.
+
+ * util.c (dtoa): ditto.
+
+Thu Jun 5 20:30:46 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_initialize):
+ Add a null check for ssl; submitted by akira yamada
+ in [ruby-dev:34950].
+
+ * ext/openssl/ossl_ssl.c (Init_ossl_ssl): Define OP_NO_TICKET if
+ SSL_OP_NO_TICKET is present; submitted by akira yamada
+ in [ruby-dev:34944].
+
+ * test/openssl/test_ssl.rb (OpenSSL#test_server_session): Add a
+ workaround for the case where OpenSSL is configured with
+ --enable-tlsext; submitted by akira yamada in [ruby-dev:34944].
+
+Thu Jun 5 20:24:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (thread_set_trace_func_m): fix check for proc argument.
+
+Thu Jun 5 20:17:29 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/rexml/document.rb (REXML::Document:write): leaky modification
+ trans -> transitive. [ruby-dev:32040], r13686
+
+ * lib/rexml/text.rb (Text.check): fix check for illegal character.
+
+Thu Jun 5 14:03:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_create): find encoding without options.
+
+Thu Jun 5 07:48:32 2008 Koichi Sasada <ko1@atdot.net>
+
+ * string.c (hash): should be "static".
+
+Thu Jun 5 01:47:18 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_transcode.rb: add tests for iso-2022-jp.
+
+Thu Jun 5 01:27:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb: add tests.
+
+Wed Jun 4 23:10:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/zlib/zlib.c (rb_gzfile_set_mtime): fix typo.
+
+Wed Jun 4 18:53:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_alloc): RDoc updated. a patch from Gaston
+ Ramos <ramos.gaston at gmail.com> in [ruby-core:17073].
+
+Wed Jun 4 18:36:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc.rb: massive spelling correction patch from Evan Farrar
+ <evanfarrar at gmail.com> in [ruby-doc:1382] applied.
+
+Wed Jun 4 17:52:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_iconv): fix for length argument and now
+ allows range. [ruby-core:17092]
+
+Wed Jun 4 15:45:41 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_with_index, enumerator_with_memo): Fix
+ grammo in rdoc.
+
+Wed Jun 4 13:06:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CFLAGS, CXXFLAGS): include additional flags to
+ CFLAGS and CXXFLAGS while configuration.
+
+Tue Jun 3 23:06:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/strscan/strscan.c (strscan_scan_full, strscan_search_full): fix
+ document.
+
+Tue Jun 3 22:37:26 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ext/strscan/strscan.c (strscan_exist_p): fix document.
+
+Tue Jun 3 22:33:29 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_dir.rb: add tests to achieve over 90% test coverage
+ of dir.c.
+
+ * test/ruby/test_encoding.rb: add tests for dummy?, name_list and
+ aliases.
+
+ * test/ruby/test_marshal.rb: add some tests.
+
+Tue Jun 3 22:25:51 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/etc/test_etc.rb: new tests for etc.
+
+Tue Jun 3 19:35:02 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_with_memo): New method: with_memo().
+
+Tue Jun 3 20:04:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (miniruby$(EXEEXT)): miniruby cannot be
+ written by miniruby itself.
+
+Tue Jun 3 19:33:22 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_init_copy): Take care of
+ initialize_copy as well as initialize.
+
+Tue Jun 3 16:06:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): fix for non-existent files and SFN of
+ symlinks. [ruby-talk:303736]
+
+Tue Jun 3 15:12:01 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#classify): Back out the `group_by' alias.
+ Better think twice.
+
+Tue Jun 3 15:00:22 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#collect, Set#select): Back out. I thought it
+ was consistent but turned out to be wrong.
+
+Tue Jun 3 13:41:08 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#collect, Set#select): Override Enumerable
+ methods and make them return a set. [ruby-core:17055]
+ (Set#delete_if, Set#collect!, Set#reject!, Set#classify)
+ (Set#divide, Set#delete_if): Return an enumerator if no block is
+ given.
+ (Set#classify): Define an alias `group_by' to override that of
+ Enumerable.
+
+Tue Jun 3 13:35:40 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (run_exec_pgroup): C99 ism.
+
+Tue Jun 3 12:51:57 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_allocate, enumerator_ptr): Properly
+ detect if the object is initialized and raise error when
+ appropriate.
+ (enumerator_initialize): Fix a typo in rdoc. [ruby-core:17052]
+
+Tue Jun 3 01:21:51 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_method.rb: add a test.
+
+Tue Jun 3 00:26:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * marshal.c (w_object): add a check for modification of array during
+ its dump.
+
+Mon Jun 2 22:27:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enc/iso_8859_5.c: Large omicron should lowercase to small omicron.
+
+ * test/ruby/test_big5.rb, test/ruby/test_cp949.rb,
+ test/ruby/test_euc_jp.rb, test/ruby/test_euc_kr.rb,
+ test/ruby/test_euc_tw.rb, test/ruby/test_gb18030.rb,
+ test/ruby/test_gbk.rb, test/ruby/test_iso_8859.rb,
+ test/ruby/test_koi8.rb, test/ruby/test_shift_jis.rb,
+ test/ruby/test_windows_1251.rb: new tests for encoding.
+
+ * test/ruby/test_utf16.rb, test/ruby/test_utf32.rb,
+ test/ruby/test_regexp.rb: add tests.
+
+Mon Jun 2 21:56:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_file.rb: add tests for uninitialized object.
+
+ * test/ruby/test_class.rb: ditto.
+
+ * test/ruby/test_thread.rb: ditto.
+
+Mon Jun 2 21:44:15 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * re.c: fix SEGV by Regexp.allocate.names, Match.allocate.names, etc.
+
+ * test/ruby/test_regexp.rb: add tests for above.
+
+ * io.c: fix SEGV by IO.allocate.print, etc.
+
+ * test/ruby/test_io.rb: add tests for above.
+
+Mon Jun 2 19:17:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_argf.rb (teardown): remove renamed temporary files.
+
+Mon Jun 2 18:51:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/un.rb (wait_writable): wait until target files can be
+ written actually.
+
+ * win32/Makefile.sub (LDSHARED_0, LINK_SO): get rid of failure of
+ mt.exe.
+
+Mon Jun 2 16:26:17 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/delegate.rb (Delegator::MethodDelegation#respond_to):
+ respond_to? should now take optional second argument; submitted
+ by Jeremy Kemper <jeremy at bitsweat.net> in [ruby-core:17045].
+
+Mon Jun 2 16:14:18 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/erb.rb (ERB::Compiler::TrimScanner#scan_line): Oops. This
+ change did not apply to trunk. Backed out.
+
+Mon Jun 2 16:08:24 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/erb.rb (ERB::Compiler::TrimScanner#scan_line): Fix a bug
+ where tokens are not yielded one by one.
+
+ * test/erb/test_erb.rb (TestERBCore#_test_01)
+ (TestERBCore#test_02_safe_04): The expected value should come
+ first for assert_equal().
+
+Mon Jun 2 13:06:38 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * mkconfig.rb: hide build path from rbconfig.rb.
+
+Mon Jun 2 08:46:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod, dtoa): initialize more variables for error
+ handling.
+
+Mon Jun 2 04:55:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * suppress warnings on cygwin, mingw and mswin.
+
+Mon Jun 2 04:35:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/gb18030.c (gb18030_code_to_mbc): add 0x80000000
+ for 4bytes character.
+
+Mon Jun 2 03:52:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_arg0): reverted used variable definition.
+
+Mon Jun 2 03:23:25 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/gb18030.c (gb18030_mbc_to_code): mask by 0x7FFFFFFF
+ because OnigCodePoint will be used as 32bit signed int.
+ Masking by 0x7FFFFFFF is ok on GB18030;
+ Minimum 4bytes character is 0x81308130.
+
+Sun Jun 1 22:29:35 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * rational.c (string_to_r_internal): use rb_isdigit.
+
+ * marshal.c (long_toobig): use %zd.
+
+ * ruby.c (set_arg0): move unused variable definition.
+
+Sun Jun 1 12:18:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * insns.def (DEFINE_INSN): subtract of pointers is ptrdiff_t.
+ this is not int on 64bit system.
+
+ * vm_dump.c (control_frame_dump): ditto.
+
+ * vm_dump.c (stack_dump_each): ditto.
+
+ * vm_dump.c (debug_print_register): ditto.
+
+ * vm_dump.c (debug_print_pre): ditto.
+
+ * transcode.c (str_transcode): ditto.
+
+Sun Jun 1 10:32:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): show coredump status.
+
+Sat May 31 23:33:34 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * README, README.ja: Add a note about default C flags.
+
+Sat May 31 23:02:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (count_objects): clear given hash.
+
+Sat May 31 20:28:10 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_regexp.rb: add tests.
+
+Sat May 31 19:11:39 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_16{be,le}.c (utf16{be,le}_code_to_mbc):
+ fix codepoint to bytes.
+
+Sat May 31 18:28:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * suppress warnings with -Wwrite-string.
+
+Sat May 31 18:26:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete_if): should return enumerator if no block
+ is given. [ruby-dev:34901]
+
+Sat May 31 15:58:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in (warnflags): defaulted to -Wall
+ -Wno-parentheses with gcc. [ruby-dev:34810]
+
+Sat May 31 15:17:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/mvm.h: new header file for MVM, and moved rb_vm_t and
+ rb_thread_t from vm_core.h.
+
+Sat May 31 12:02:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): show pid when fail.
+
+Fri May 30 23:55:56 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_rubyoptions.rb: add a test of RUBY_DESCRIPTION.
+
+Fri May 30 22:47:17 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_regexp.rb: add tests.
+
+Fri May 30 22:40:53 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_signal.rb: add tests to achieve over 80% test
+ coverage of signal.c.
+
+Fri May 30 22:28:03 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * signal.c (esignal_signo): fix SignalException#signo which returned
+ nil absolutely.
+
+ * signal.c (esignal_init): always prepend "SIG" to a string that is
+ returned by SignalException#signm.
+
+Fri May 30 22:17:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_argf.rb: rename a conflicting method name.
+
+ * test/ruby/test_string.rb: ditto.
+
+ * test/ruby/test_io.rb: ditto.
+
+Fri May 30 22:14:37 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (defined_expr): fix SEGV by defined?([1]).
+
+Fri May 30 12:18:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (prelude.c): simply depends on PREP. [ruby-dev:34877]
+
+ * enc/make_encdb.rb, enc/trans/make_transdb.rb: ditto.
+
+Fri May 30 10:55:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct rb_unblock_callback), thread.c
+ (set_unblock_function), thread_{pthread,win32}.c (native_sleep):
+ extracted from struct rb_thread_struct.
+
+ * thread.c (reset_unblock_function): not check interrupts at leaving
+ blocking region. [ruby-dev:34874]
+
+Fri May 30 06:09:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_8.c: add UTF8-MAC (UTF-8-MAC).
+
+Fri May 30 04:17:13 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (enum_count, count_all_i, Init_Enumerable),
+ array.c (rb_ary_count): If no argument or block is given, count
+ the number of all elements.
+
+Fri May 30 03:12:18 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/openssl/ossl_bn.c (ossl_bn_s_rand, ossl_bn_s_pseudo_rand):
+ Int should be enough here.
+
+Fri May 30 02:35:00 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/openssl/ossl_bn.c (ossl_bn_s_rand, ossl_bn_s_pseudo_rand),
+ ext/openssl/ossl_pkey_dh.c (ossl_dh_s_generate)
+ (ossl_dh_initialize),
+ ext/openssl/ossl_pkey_dsa.c (ossl_dsa_s_generate),
+ ext/openssl/ossl_rand.c (ossl_rand_bytes)
+ (ossl_rand_pseudo_bytes, ossl_rand_egd_bytes),
+ ext/openssl/ossl_x509store.c (ossl_x509stctx_set_error): Do not
+ use FIX2INT() without checking the value type. Use NUM2INT()
+ instead; found by akr in [ruby-dev:34890].
+
+Fri May 30 02:08:20 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * signal.c (esignal_init): handle a non-integer argument correctly,
+ allowing SignalException.new(:INT).
+
+Fri May 30 00:59:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_regexp.rb: add tests.
+
+Thu May 29 22:51:05 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_require.rb: add a test for load with wrap flag, to
+ achieve 100% test coverage of eval_jump.c.
+
+Thu May 29 22:47:53 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_argf.rb: new tests for ARGF, to achieve over 85% test
+ coverage of file.c.
+
+ * test/ruby/test_io.rb: add tests.
+
+Thu May 29 22:41:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (argf_readchar): raise EOFError, synchronizing IO#readchar.
+
+Thu May 29 22:29:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * io.c (argf_external_encoding, argf_internal_encoding): fix SEGV by
+ ARGF.external_encoding.
+
+Thu May 29 17:52:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/extconf.rb: search zlib1, and regard mswin32 later than VC6
+ as WIN32. [ruby-core:16984]
+
+Wed May 28 18:05:28 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_nitems, Init_Array): Axe Array#nitems().
+ cf. [ruby-dev:34676]-[ruby-dev:34713]
+
+Wed May 28 17:50:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/mkexports.rb (Exports#objdump, Exports#each_line): extracted.
+
+Wed May 28 17:41:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (MKPREP): appended $(RBCONFIG).
+
+ * common.mk (enc.mk, prelude.c): not depend on $(RBCONFIG) on mswin32
+ to get of compiling twice each time.
+
+ * win32/Makefile.sub (prelude.c): not depend on $(PREP).
+
+Wed May 28 17:37:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb (Exports::Mswin#each_export): speed up.
+
+Wed May 28 16:41:59 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_slice_bang): Call rb_ary_modify_check() at the
+ beginning. [rubyspec]
+
+Wed May 28 16:12:44 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb (WEBrick::HTTPServlet::CGIHandler#do_GET):
+ Set the HTTP status code to 302 if a Location header field is
+ present and the status code is not valid as a client
+ redirection. cf. RFC 3875 6.2.3, 6.2.4.
+
+Wed May 28 15:53:52 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/trans/japanese.c (to_SHIFT_JIS_EF_infos): typo.
+
+Wed May 28 15:18:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/singleton.rb (SingletonClassMethods): _load should be public.
+
+Wed May 28 13:30:43 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c: add workaround for Unicode to CP932.
+ U+2015->0x815C, U+2225->0x8161, U+FF0D->0x817C, U+FF3C->0x815F,
+ U+FF5E->0x8160, U+FFE0->0x8191, U+FFE1->0x8192, U+FFE2->0x81CA
+
+Wed May 28 12:52:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object, marshal_dump, r_object0, marshal_load): search
+ private methods too. [ruby-dev:34671]
+
+ * object.c (convert_type): ditto.
+
+Wed May 28 08:42:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c: "%" is required before PRI?VALUE.
+
+Tue May 27 22:10:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.c (error_handle): SystemExit and SignalException throws
+ TAG_RAISE but not TAG_FATAL.
+
+ * thread.c (rb_thread_execute_interrupts): delay interrupts during
+ raising exceptions. [ruby-dev:34855]
+
+Tue May 27 20:18:30 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_slice_bang): Return an empty array instead of
+ nil when pos is valid and len is adjusted from a valid value to
+ zero; caught by RubySpec.
+
+Tue May 27 19:12:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (MKPREP), common.mk, win32/Makefile.sub (prelude.c): get
+ rid of depending PREP with nmake.
+
+ * common.mk (encs): depends on libruby.
+
+Tue May 27 19:00:22 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/stringio/stringio.c (strio_each_char, Init_stringio): Add
+ StringIO#{each_char,chars}.
+ (Init_stringio): Fix StringIO#bytes.
+
+Tue May 27 17:54:35 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/stringio/stringio.c (strio_each_byte): Return self instead
+ of nil as the rdoc says.
+
+Tue May 27 15:36:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (check_int): use PRIxVALUE format specifier.
+
+ * numeric.c (check_uint, rb_num2fix, int_chr): ditto.
+
+ * numeric.c (num_fdiv): fallback to_f should always return float
+ result. should not use #quo that may return rational.
+
+ * numeric.c (num_div): should raise ZeroDivisionError.
+
+ * numeric.c (fix_divide): ditto.
+
+ * test/ruby/test_numeric.rb (TestNumeric::test_divmod): avoid
+ ZeroDivisionError in tests.
+
+Tue May 27 13:14:53 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (enum_to_a): Pass arguments through to #each().
+ (enum_sort): Follow the enum_to_a signature change.
+ (enum_reverse_each): Add #reverse_each().
+
+Tue May 27 13:12:37 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * io.c (Init_IO): Define ARGF.{lines,bytes,chars}.
+
+Tue May 27 12:06:37 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (BUFCHECK): wrong condition. [ruby-core:16921]
+
+ * file.c (file_expand_buf): shouldn't use buflen for length of string.
+
+Mon May 26 18:24:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (BUFCHECK): no resize if enough room.
+
+ * file.c (file_expand_path): use BUFCHECK.
+
+Mon May 26 17:48:42 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (struct enumerator, enumerator_init)
+ (enumerator_init_copy, enumerator_each): Eliminate iter.
+ (enumerator_ptr): Do not hardcode the class name.
+ (enumerator_with_index): Delay variable initialization after
+ RETURN_ENUMERATOR().
+
+Mon May 26 17:23:49 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (file_expand_path): add more space for '/'.
+
+ * file.c (file_expand_path): should reset address of p after calling
+ rb_str_resize(). [ruby-dev:34800]
+
+Mon May 26 16:49:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode): use run-hooks if run-mode-hook is
+ not available. a patch from Kazuhiro NISHIYAMA <zn at mbf.nifty.com>
+ in [ruby-dev:34853].
+
+Mon May 26 16:41:35 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (ntfs_tail): filename which starts with '.' is valid.
+
+ * file.c (file_expand_path): cygwin symlink support.
+
+Mon May 26 07:15:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): rb_make_backtrace has no arguments.
+
+Mon May 26 01:17:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): signal description
+ refined.
+
+Mon May 26 00:52:52 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c (env_each_key, env_each_value, env_reject_bang)
+ (rb_env_clear, env_replace): Omit duplicated secure level check.
+
+Mon May 26 00:37:16 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c (env_each_value): Do not call env_values() twice.
+
+Sun May 25 17:54:36 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_compile): set local_table for
+ ISEQ_TYPE_DEFINED_GUARD.
+
+Sun May 25 17:52:25 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_build_body): remove side effect from
+ VM::InstructionSequence.load.
+
+Sun May 25 04:30:45 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_module.rb (remove_json_mixins): change judgment
+ condition.
+
+Sun May 25 03:54:39 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_module.rb (test_ancestors, test_included_modules):
+ ignore json mixins.
+
+Sun May 25 02:37:25 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.c: renamed from vm_method.c. "vm_method.c" is included
+ by "vm.c".
+
+ * vm_eval.c: added. Some codes are moved from "eval.c"
+
+ * common.mk: fix for above changes.
+
+ * compile.c: make a vm_eval(0)
+
+ * eval.c, eval_error.c, eval_intern.h, eval_jump.c, proc.c, vm.c,
+ id.c, id.h, vm_core.h, vm_dump.c, vm_evalbody.c, vm_insnhelper.c,
+ blockinlining.c: fix for above changes. and do some refactoring.
+ this changes improve rb_yield() performance.
+
+Sat May 24 22:32:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): clear errno at the top of our own
+ implementation of strtod(3). [ruby-dev:34834] [ruby-dev:34839]
+
+Sat May 24 15:26:16 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (iseq_set_exception_table, NODE_WHILE, NODE_NEXT): remove
+ special handling that decrements sp in CATCH_TYPE_NEXT for NODE_WHILE.
+
+ * vm.c (vm_eval_body), vm_insnhelper.c (vm_throw): remove unused code.
+
+Sat May 24 08:13:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (rb_str_transcode): argc is 1, and argv is &to.
+
+Fri May 23 17:55:11 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_slice_bang): Be consistent with Array#slice()
+ and String#slice!(). Just return nil when a negative length or
+ out of boundary index is given instead of raising an exception
+ via internal functions.
+
+Fri May 23 16:44:34 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (Init_Enumerator): Override
+ Enumerable::Enumerator#each_with_index with #with_index.
+
+Fri May 23 12:23:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_num_t): moved form vm.h.
+
+ * tool/instruction.rb (RubyVM::Instruction#sp_increase_c_expr),
+ tool/instruction.rb (RubyVM::VmBodyGenerator#make_header_operands):
+ omit unused variables.
+
+Fri May 23 08:47:02 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_equal): == operator should be transitional.
+ [ruby-dev:34808]
+
+ * error.c (syserr_eqq): === should be able to handle delegated
+ objects as well.
+
+Fri May 23 06:15:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_compile_with_option): get rid of segv.
+
+Fri May 23 02:29:14 2008 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_gt|ge|lt|le): use values directly to compare.
+
+Fri May 23 01:15:09 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, eval_intern.h, include/ruby/intern.h, include/ruby/ruby.h,
+ vm.c, vm_core.h, vm_insnhelper.c: remove pointless "const".
+
+Thu May 22 23:45:17 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * compile.c (get_destination_insn, get_next_insn, get_prev_insn):
+ peephole optimization should not ignore ISEQ_ELEMENT_ADJUST.
+
+Thu May 22 20:20:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (check_dump_arg, check_load_arg): check if reentered.
+ [ruby-dev:34802]
+
+Thu May 22 20:14:28 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * iseq.c (iseq_load, iseq_data_to_ary): support
+ ISEQ_TYPE_DEFINED_GUARD.
+
+Thu May 22 19:01:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_get_ruby_level_cfp): moved from eval_intern.h.
+
+ * vm.c (sdr, nsdr): define methods only if VMDEBUG is defined.
+
+Thu May 22 17:18:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * array.c (rb_ary_compact_bang): fix reallocation size.
+
+Thu May 22 15:20:20 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval_intern.h, vm_core.h, include/ruby/intern.h, include/ruby/ruby.h,
+ vm.c: need to add const to prototypes, of course.
+
+Thu May 22 13:24:43 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm.c, vm_core.h, vm_insnhelper.c: specify "const".
+
+ * vm_opts.h: add a OPT_TOKEN_THREADED_CODE macro.
+
+Thu May 22 12:51:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * insns.def (newhash): fix a variable definition: "const k".
+
+Thu May 22 12:40:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (flatten): check if reentered. [ruby-dev:34798]
+
+Thu May 22 11:39:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (assert_normal_exit): capture stdout and stderr
+ of the child process.
+
+Thu May 22 08:28:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (flatten): free memo hash table before raising exception.
+ [ruby-dev:34789]
+
+Thu May 22 06:30:10 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * array.c (flatten): fix memory leak.
+
+Thu May 22 06:21:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_str_caseeql): added.
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_enc_find_index): use nkf_str_caseeql.
+
+Thu May 22 05:45:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (proc_dup): should copy safe_level from src proc
+ properly. a patch from Keita Yamaguchi
+ <keita.yamaguchi at gmail.com>
+
+Thu May 22 02:46:08 2008 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: do not use Thread#raise. [ruby-dev:34739]
+
+Thu May 22 00:30:06 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_require.rb: new tests for library requiring, to
+ achieve over 90% test coverage of dln.c.
+
+ * test/ruby/test_class.rb: add tests to achieve over 90% test coverage
+ of class.c.
+
+ * test/ruby/test_module.rb: ditto.
+
+Thu May 22 00:15:44 2008 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm_insnhelper.c: specify "const".
+
+Wed May 21 23:20:21 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_eval.rb: fix syntax.
+
+Wed May 21 17:46:17 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_enc_find_index):
+ use strcasecmp. [ruby-dev:34787]
+
+Wed May 21 16:48:22 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_compact_bang): avoid forceful realloc.
+
+Wed May 21 07:42:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_usascii_str_new): use rb_str_new.
+
+ * string.c (rb_enc_str_new): ditto.
+
+ * string.c (rb_usascii_str_new2): use rb_str_new2.
+
+Wed May 21 07:22:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c, include/ruby/encoding.h
+ (rb_enc_associate, rb_enc_associate_index):
+ returns obj. [ruby-dev:34778]
+
+Wed May 21 04:20:20 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_ascii8bit_encoding): use ENCINDEX_ASCII.
+
+ * encoding.c, include/ruby/encoding.h (rb_ascii8bit_encindex):
+ added.
+
+ * encoding.c (rb_locale_encoding): use rb_usascii_encoding().
+
+Wed May 21 01:45:58 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file_exhaustive.rb (setup): workaround for Windows
+ Vista.
+
+ * test/ruby/envutil.rb (rubyexec): now Open3.open3 is supported on
+ Windows.
+
+ * test/ruby/test_process.rb: use ``||'' instead of ``;'' because
+ cmd.exe not support it.
+
+Wed May 21 01:28:47 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c, include/ruby/encoding.h (rb_str_transcode):
+ C API of encoding conversion for Ruby object.
+ VALUE rb_str_transcode(VALUE str, VALUE to).
+
+ * transcode.c (str_encode, str_encode_bang):
+ rename from rb_tr_transcode or rb_str_transcode_bang.
+
+Tue May 20 23:26:05 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: fix tests for 64bit CPU.
+
+Tue May 20 20:59:56 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (rb_nkf_convert) (nkf_enc_without_bom):
+ reverted. nkf-utf8/nkf.c should be independent of ruby.
+
+ * ext/nkf/nkf.c (options):
+ moved from nkf-utf8/nkf.c.
+ override nkf's original settings for Unicode BOM.
+
+Tue May 20 13:20:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_convert), ext/nkf/nkf-utf8/nkf.c
+ (nkf_enc_without_bom): BOM is not a part of encodings.
+
+ * ext/nkf/nkf.c (Init_nkf), ext/nkf/nkf-utf8/nkf.c (options):
+ UTF-{16,32} without endian have no sense.
+
+Tue May 20 12:13:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options, process_options): --dump option.
+
+Tue May 20 11:36:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (PRI[diouxX]VALUE): printf format for VALUE.
+
+ * gc.c (assign_heap_slot): suppress a warning.
+
+Tue May 20 03:42:43 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm_insnhelper.c: fix cref in instance_eval
+ and cvar_base search protocol.
+
+ * bootstraptest/test_knownbug.rb, test_eval.rb: move solved test
+ and add new tests.
+
+ * test/ruby/test_eval.rb: fix tests for spec.
+
+Tue May 20 01:43:44 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: fix a test.
+ "block_given?" returns true if "yield" can be used.
+
+Tue May 20 01:07:19 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (assignable_gen): when "self = 1" was evaluated, unnecessary
+ error message was output, which might cause null pointer access.
+
+Tue May 20 08:38:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_enc_strlen_cr): need to set ENC_CODERANGE_7BIT if
+ search_nonascii() fails. [ruby-dev:34751]
+
+ * string.c (rb_str_reverse): preserve coderange info if the
+ receiver is 7bit string.
+
+ * string.c (rb_str_reverse_bang): ditto.
+
+ * string.c (rb_str_reverse_bang): should have called
+ single_byte_optimizable before rb_str_modify() that clears
+ coderange info.
+
+ * string.c (tr_trans): handle single bytes more eagerly.
+
+Mon May 19 23:32:12 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (invoke_block_from_c): fix call flow.
+
+Mon May 19 23:19:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * regexec.c (slow_search): check the case when the length is 1.
+ The behavior of memcmp is undefined if the third argument is 0.
+
+Mon May 19 21:07:48 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (native_thread_apply_priority):
+ fix argument range check. [ruby-dev:33124]
+
+Mon May 19 18:22:35 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/openssl/ossl_pkcs5.c (ossl_pkcs5_pbkdf2_hmac): Fix the type
+ of md; pointed out by Takahiro Kambe <taca at back-street.net>
+ in [ruby-dev:34748].
+
+Mon May 19 17:23:55 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regparse.c (PINC): use optimized enclen() instead of
+ ONIGENC_MBC_ENC_LEN().
+
+ * regparse.c (PFETCH): ditto.
+
+ * regparse.c (PFETCH): small optimization.
+
+ * regexec.c (slow_search): single byte encoding optimization.
+
+ * regenc.h (enclen): avoid calling function when encoding's
+ min_len == max_len.
+
+ * re.c (rb_reg_regsub): rb_enc_ascget() optimization for single
+ byte encoding.
+
+ * re.c (rb_reg_search): avoid allocating new re_registers if we
+ already have MatchData.
+
+ * re.c (match_init_copy): avoid unnecessary onig_region_free()
+ before onig_region_copy.
+
+ * encoding.c (rb_enc_get_index): remove implicit enc_capable check
+ each time.
+
+ * encoding.c (rb_enc_set_index): ditto.
+
+ * encoding.c (enc_compatible_p): small refactoring.
+
+ * include/ruby/encoding.h (rb_enc_dummy_p): inline
+ rb_enc_dummy_p() and export related code.
+
+Mon May 19 14:32:03 2008 Koichi Sasada <ko1@atdot.net>
+
+ * version.h: fix strange change by version.h update tool.
+
+Mon May 19 14:18:13 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: move solved tests.
+
+ * bootstraptest/test_eval.rb, test_literal.rb, test_syntax.rb,
+ test_thread.rb: ditto.
+
+ * test/ruby/test_m17n.rb, test_proc.rb, test_sprintf.rb,
+ test_string.rb, test/ruby/test_struct.rb: ditto.
+
+Mon May 19 13:23:03 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_spawn_internal): set last_status when status == -1
+ because there is no path to set it on win32. this patch is derived
+ from [ruby-core:16787], submitted by Luis Lavena <luislavena at
+ gmail.com>
+
+Mon May 19 11:32:47 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, insns.def, eval.c, vm_insnhelper.c: fix CREF handling.
+ VM value stack frame of block contains cref information.
+ (dfp[-1] points CREF)
+
+ * compile.c, eval_intern.h, eval_method.c, load.c, proc.c,
+ vm_dump.h, vm_core.h: ditto.
+
+ * include/ruby/ruby.h, gc.c: remove T_VALUES because of above
+ changes.
+
+ * bootstraptest/test_eval.rb, test_knownbug.rb: move solved test.
+
+Sun May 18 22:26:51 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/filehandler.rb: should normalize path
+ name in path_info to prevent script disclosure vulnerability on
+ DOSISH filesystems. (fix: CVE-2008-1891)
+ Note: NTFS/FAT filesystem should not be published by the platforms
+ other than Windows. Pathname interpretation (including short
+ filename) is less than perfect.
+
+ * lib/webrick/httpservlet/abstract.rb
+ (WEBrick::HTTPServlet::AbstractServlet#redirect_to_directory_uri):
+ should escape the value of Location: header.
+
+ * lib/webrick/httpservlet/cgi_runner.rb: accept interpreter
+ command line arguments.
+
+Sun May 18 02:54:46 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * pack.c (pack_pack): check errno to detect error of ruby_strtoul.
+
+ * pack.c (pack_unpack): ditto.
+
+ * test/ruby/test_pack.rb: add a test for above.
+
+Sat May 17 23:53:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): fix for short file name on Cygwin.
+
+Sat May 17 18:03:52 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * vm.c (Init_VM): removed the definition of Thread#initialize,
+ which is overwritten in Init_Thread and is never used.
+
+Sat May 17 14:01:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): should not free shared pointer, and set
+ shared. [ruby-dev:34732]
+
+Sat May 17 12:34:54 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * thread_pthread.c (Init_native_thread): Kernel#.sleep used never to
+ sleep on Mac OS X. Reported by arton <artonx AT yahoo.co.jp>.
+
+ * thread_pthread.c (native_sleep): added error checks.
+
+Sat May 17 11:29:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): first dot is not an extension name.
+
+Sat May 17 03:21:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): stop memory leak. [ruby-dev:34726]
+
+ * re.c (rb_reg_search): need to free allocated buffer in re_register.
+
+ * regexec.c (onig_region_new): more pedantic malloc check.
+
+ * regexec.c (onig_region_resize): ditto.
+
+ * regexec.c (STATE_CHECK_BUFF_INIT): ditto.
+
+ * regexec.c (onig_region_copy): use onig_region_resize.
+
+Fri May 16 12:48:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (to_flo): rb_Float() accepts even strings for input.
+
+ * complex.c (nucomp_to_f): fix wrong message.
+
+ * complex.c (nucomp_to_r): ditto.
+
+ * object.c (rb_Float): do not check NaN for error. NaN is a part
+ of valid float values.
+
+Thu May 15 23:36:09 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_string.rb: add tests to achieve over 90% test
+ coverage of string.c.
+
+ * test/ruby/test_m17n.rb: ditto.
+
+ * test/ruby/test_symbol.rb: ditto.
+
+ * test/ruby/test_pack.rb: ditto.
+
+Thu May 15 23:01:06 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * string.c (tr_find): String#delete returned wrong result when multiple
+ utf-8 arguments are passed.
+
+ * test/ruby/test_m17n.rb (test_delete): add a test for above.
+
+Thu May 15 22:37:56 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (ripper_warningS): now used.
+
+Thu May 15 15:33:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): support for alternative data stream
+ and ignored trailing garbage of NTFS.
+
+ * file.c (rb_file_s_basename): ditto.
+
+ * file.c (rb_file_s_extname): ditto.
+
+Thu May 15 13:43:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): no need for forceful warning when
+ converting to float. overflow is a nature of float values.
+
+ * parse.y (parser_yylex): ditto.
+
+Thu May 15 13:23:20 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_prepare_enc): error condition was updated for non
+ ASCII compatible strings.
+
+Thu May 15 12:19:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/openssl/openssl_missing.c (HMAC_CTX_copy): adopted
+ prototype change in openssl bundled with newer OpenBSD.
+ a patch from Takahiro Kambe <taca at back-street.net> in
+ [ruby-dev:34691].
+
+Wed May 14 22:09:25 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ChangeLog: fix typo.
+
+Wed May 14 21:49:14 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_object.rb: new tests to achieve over 90% test
+ coverage of object.c, eval.c and eval_method.c.
+
+ * test/ruby/test_module.rb: ditto.
+
+ * test/ruby/test_trace.rb: ditto.
+
+ * test/ruby/test_integer.rb: ditto.
+
+ * test/ruby/test_float.rb: ditto.
+
+ * test/ruby/test_method.rb: ditto.
+
+ * test/ruby/test_variable.rb: ditto.
+
+ * test/ruby/test_eval.rb: ditto.
+
+ * test/ruby/test_exception.rb: ditto.
+
+ * test/ruby/test_class.rb: ditto.
+
+Wed May 14 12:46:37 2008 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (insn_operand_intern): remove Qundef related code.
+
+Wed May 14 12:42:36 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_count): Override Enumerable#count for better
+ performance.
+
+Wed May 14 11:29:06 2008 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: add a "putcbase" instruction.
+
+ * compile.c, insns.def: fix to use putcbase instruction for
+ class search. Qundef should not be used.
+
+Wed May 14 07:49:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): defer calling of rb_frame_self() until it
+ become really necessary.
+
+ * eval.c (rb_call): ditto.
+
+Wed May 14 00:55:56 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_io_m17n.rb: remove a duplicative method.
+
+ * test/ruby/test_utf16.rb: rename a conflicting method name.
+
+ * test/ruby/test_array.rb: ditto.
+
+ * test/ruby/test_file_exhaustive.rb: ditto.
+
+ * test/ruby/test_hash.rb: ditto.
+
+ * test/ruby/test_env.rb: ditto.
+
+ * test/ruby/test_fixnum.rb: ditto.
+
+ * test/ruby/test_rational.rb: ditto.
+
+Wed May 14 00:45:58 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval_method.c (rb_add_method): fix check for warning when
+ Object#initialize is redefined. (same as 1.8)
+
+Tue May 13 23:32:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_yield): use rb_yield_values2.
+
+ * enum.c (DEFINE_ENUMFUNCS): macro to define enumerator and yielding
+ functions.
+
+ * enum.c (enum_all_func, enum_any_func, enum_one_func,
+ enum_none_func): reduced duplicate code.
+
+Tue May 13 15:09:38 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c: Update rdoc.
+ (enumerator_initialize): Discourage the use.
+ (enum_each_slice, enum_each_cons, enumerator_each)
+ (enumerator_with_index): Add a note about a call without a block.
+
+Tue May 13 08:25:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_f_gets): re-enable rdoc.
+ (rb_f_readline): ditto.
+ (rb_f_readlines): ditto.
+
+Tue May 13 07:56:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cat): fixed buffer overrun reported by
+ Christopher Thompson <cthompson at nexopia.com> in [ruby-core:16746]
+
+Mon May 12 23:37:57 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (collect_local_variables_in_env): remove unnecessary check
+ which causes: x=1;proc{local_variables}.call #=> []
+
+ * test/ruby/test_variable.rb: add a test for above.
+
+Mon May 12 23:05:24 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c, include/ruby/intern.h (rb_run_exec_options): externed.
+
+ * process.c (save_redirect_fd, save_env_i, save_env, run_exec_dup2,
+ run_exec_open, run_exec_pgroup, run_exec_rlimit, rb_run_exec_options):
+ save parent's process environments.
+
+ * process.c (rb_spawn_internal): remove calling run_exec_options()
+ because cannot restore after spawn.
+
+ * io.c (pipe_open): ditto.
+
+ * test/ruby/test_process.rb (test_execopts_env): upcase environment
+ variable name for case insensitive platforms.
+
+ * win32/win32.c (init_env): set USER environment variable only when
+ USERNAME is available.
+
+Mon May 12 22:23:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/date.rb (once): use Object#object_id instead of Symbol#to_i.
+
+Mon May 12 21:34:46 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/envutil.rb (rubybin): return expanded rubyexe instead of
+ expanded ruby if available.
+
+Mon May 12 20:19:55 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (grep_i): Be aware of multiple values;
+ fix [ruby-dev:34653].
+ (grep_iter_i): Ditto.
+ (count_i): Ditto.
+ (find_i): Ditto.
+ (find_index_i): Ditto.
+ (find_all_i): Ditto.
+ (reject_i): Ditto.
+ (inject_i): Ditto.
+ (inject_op_i): Ditto.
+ (partition_i): Ditto.
+ (group_by_i): Ditto.
+ (first_i): Ditto.
+ (sort_by_i): Ditto.
+ (all_i): Ditto.
+ (all_iter_i): Ditto.
+ (any_i): Ditto.
+ (any_iter_i): Ditto.
+ (one_i): Ditto.
+ (one_iter_i): Ditto.
+ (none_i): Ditto.
+ (none_iter_i): Ditto.
+ (min_i): Ditto.
+ (min_ii): Ditto.
+ (max_i): Ditto.
+ (max_ii): Ditto.
+ (minmax_i): Ditto.
+ (minmax_ii): Ditto.
+ (min_by_i): Ditto.
+ (max_by_i): Ditto.
+ (minmax_by_i): Ditto.
+ (member_i): Ditto.
+ (take_i): Ditto.
+ (take_while_i): Ditto.
+ (drop_i): Ditto.
+ (drop_while_i): Ditto.
+ (cycle_i): Ditto.
+
+ * enum.c (each_with_index): Update rdoc. each_with_index() takes
+ arguments that are passed through to each(), and a hash preserves
+ key order.
+
+Mon May 12 19:05:24 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_spawn_internal): remove calling run_exec_options()
+ because cannot restore after spawn. we'll fix this later.
+
+Mon May 12 18:16:44 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_spawn_internal): need to call run_exec_options() before
+ spawn if the platform doesn't have fork. [ruby-dev:34647]
+
+Mon May 12 15:20:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (ruby_vm_xmalloc): increase malloc_increase only if malloc
+ succeeds. failed malloc size can be huge. it may increase
+ malloc_limit too big which cause less GC and memory full.
+ (ruby_vm_xrealloc): ditto.
+ (rb_objspace): make params.limit and params.increase size_t.
+
+Mon May 12 15:04:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_prepare_re): made non static with small refactoring.
+
+ * ext/strscan/strscan.c (strscan_do_scan): should adjust encoding
+ before regex searching.
+
+Mon May 12 13:57:19 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): add NODE_OP_ASGN_{OR,AND}. "defined?(a||=1)"
+ should not operate assignment. [ruby-dev:34645]
+
+Mon May 12 13:29:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (bigzero_p): check from MSB to LSB. [ruby-dev:34649]
+
+Mon May 12 12:32:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUBYOPT): affected BASERUBY too. [ruby-talk:301514]
+
+Mon May 12 12:27:55 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (assign_heap_slot): fix condition for number of objects in
+ a heap.
+
+Mon May 12 12:24:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_to_i): really removed. [ruby-dev:34641]
+
+Mon May 12 11:15:55 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gc.c (assign_heap_slot): put the binary search routine in order.
+
+Mon May 12 10:52:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_init_gems), gem_prelude.rb: check if Gem is defined
+ instead of Gem::Enable.
+
+ * gem_prelude.rb (load_full_rubygems_library, const_missing): prevent
+ infinite recursion. [ruby-dev:34539]
+
+Sun May 11 23:19:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (all_iter_i, any_iter_i): reduced duplicated code.
+
+Sun May 11 22:54:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb (main): leave -I options for purelib.rb
+ untouched.
+
+ * bootstraptest/runner.rb (main): handle relative path -r options.
+
+Sun May 11 19:04:06 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_thread.rb: kill and join temporal threads that are
+ created in each test.
+
+Sun May 11 17:58:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_process.rb (TestProcess#with_stdin): defined.
+ (TestProcess#test_argv0_noarg): don't use redirect_fds.
+ [ruby-dev:34647]
+
+Sun May 11 17:57:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MINIRUBY): should not include extension library path.
+
+Sun May 11 14:40:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (SIZET2NUM): new macro.
+ (NUM2SIZET): new macro.
+
+ * gc.c (struct rb_objspace): use size_t for increment, length and
+ used for 64bit.
+ (allocate_heaps): ditto.
+ (assign_heap_slot): ditto.
+ (set_heaps_increment): ditto.
+ (gc_mark_all): ditto.
+ (is_pointer_to_heap): ditto.
+ (free_unused_heaps): ditto.
+ (gc_sweep): ditto.
+ (os_obj_of): ditto.
+ (rb_gc_call_finalizer_at_exit): ditto.
+ (count_objects): ditto.
+
+Sun May 11 13:14:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (thread_cleanup_func_before_exec): extracted from
+ thread_cleanup_func not to touch pthread data.
+ pthread_cond_destroy in forked process may cause deadlock on
+ Debian GNU/Linux Etch on x86, x86-64 and IA64.
+ this doesn't cause resource leak because the process will exec soon.
+ (terminate_atfork_before_exec_i): defined.
+ (rb_thread_atfork_before_exec): defined.
+
+ * include/ruby/intern.h (rb_thread_atfork_before_exec): declared.
+
+ * process.c (rb_exec_atfork): call rb_thread_atfork_before_exec
+ instead of rb_thread_atfork.
+
+ * io.c (popen_exec): call rb_thread_atfork_before_exec instead of
+ rb_thread_atfork.
+
+Sat May 10 22:14:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_trans): single '^' does not mean negation.
+ [ruby-dev:34632]
+
+ * string.c (tr_trans): should check src size, not str size.
+ [ruby-dev:34637]
+
+ * string.c (tr_trans): should not turn on modify flag if no
+ modification happens. [ruby-dev:34631]
+
+Sat May 10 18:11:18 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_line): zero length record separator should
+ split a string into paragraphs. [ruby-dev:34586]
+
+ * string.c (rb_str_each_line): RDoc updated.
+
+Sat May 10 11:36:20 2008 Tanaka Akira <akr@fsij.org>
+
+ * vm.c (env_mark): mark env->block.self. prevent SEGV when GC occur
+ in prepare_iseq_build with gcc version 3.4.6 [FreeBSD] 20060305 on
+ FreeBSD/amd64.
+
+Fri May 9 19:16:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (timeofday): use monotonic clock. based on a patch
+ from zimbatm <zimbatm at oree.ch> in [ruby-core:16627].
+
+Fri May 9 07:47:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * cont.c (cont_restore_0): dynamic stack direction code should be
+ consistent with static one. [ruby-talk:301152]
+
+Fri May 9 00:03:50 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): operator assignment "a += b rescue c" should be
+ parsed as "a += (b rescue c)" just like normal assignment.
+ [ruby-talk:301000]
+
+Thu May 8 18:14:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_and): bit-wise operation should not take float
+ values. [ruby-dev:34612]
+
+ * bignum.c (rb_big_or): ditto.
+
+ * bignum.c (rb_big_xor): ditto.
+
+Thu May 8 17:44:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, ext/extmk.rb, lib/mkmf.rb: use absolute path for RUBYOPT.
+
+ * file.c (rb_find_file_ext): guard load_path from GC.
+ gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) optimizes
+ load_path by holding only RARRAY_LEN(load_path) and
+ RARRAY_PTR(load_path) in registers on IA64 GNU/Linux Etch.
+
+Thu May 8 16:41:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MINIRUBY), common.mk (RUBYOPT): add purelib.rb.
+ [ruby-core:16642]
+
+Thu May 8 16:00:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): ! and ? at the bottom are no longer part
+ of valid symbol names. [ruby-dev:34590]
+
+Thu May 8 15:36:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (rb_gc_save_machine_context): call FLUSH_REGISTER_WINDOWS
+ to mark the register stack from GC on another thread.
+
+Thu May 8 15:14:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sort_bang): freeze temporary array.
+
+Thu May 8 13:19:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_thread_mark): mark stat_insn_usage only when ptr is not
+ null.
+
+Thu May 8 10:44:04 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (sort_reentered): reentered check may be called from
+ Array#sort.
+
+Thu May 8 09:51:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (sort_1, sort_2): check for reentered and if elements are
+ accessible. [ruby-core:16679]
+
+Thu May 8 06:43:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_exe_r, dln_find_file_r): reentrant versions.
+
+ * file.c (rb_find_file_ext, rb_find_file), process.c (proc_exec_v),
+ (rb_proc_exec, proc_spawn_v, proc_spawn), ruby.c (process_options):
+ use reentrant versions.
+
+Thu May 8 06:27:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_key_p): thread local storage stores ID.
+
+Thu May 8 01:10:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_trans): should squeeze properly. [ruby-dev:34587]
+
+ * string.c (tr_trans): had a bug in treating multi-byte character
+ replacement.
+
+ * string.c (rb_str_delete_bang): need not to do anything for empty
+ strings.
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_delete): add
+ test for empty receiver.
+
+Wed May 7 20:19:18 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (process_options, ruby_set_argv): set encoding of rb_argv
+ after Init_prelude() because cannot load encoding extensions before
+ it.
+
+Wed May 7 20:00:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (bit_coerce): float should not be a valid operand of
+ bitwise operations. [ruby-dev:34583]
+
+Wed May 7 19:35:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_thread_key_p): should always convert symbol to ID.
+ [ruby-dev:34588]
+
+Wed May 7 19:30:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_divide): float division should floor() before
+ rounding into integer. [ruby-dev:34584]
+
+Wed May 7 18:02:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_to_i): remove obsolete method. preparation for
+ symbol GC.
+
+ * numeric.c (fix_to_sym): ditto.
+
+ * numeric.c (fix_id2name): ditto.
+
+Wed May 7 17:43:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_puts_ary): check recursion first. [ruby-dev:34580]
+
+Wed May 7 17:41:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_eval_body): initialize retval. [ruby-dev:34576]
+
+Wed May 7 13:02:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_fdiv): flo.fdiv(NaN) should result NaN.
+
+ * numeric.c (num_quo): renamed and moved from bignum.c.
+ [ruby-dev:34582]
+
+ * bignum.c (rb_big_fdiv): update RDoc description
+
+ * rational.c (nurat_s_new_m): small refactoring.
+
+ * bignum.c (rb_big2dbl): no need for forceful warning when
+ converting to float. overflow is a nature of float values.
+
+Wed May 7 00:54:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzreader_gets): may cause infinite loop.
+ a patch from Kouya <kouyataifu4 at gmail.com> in
+ [ruby-reference-manual:762].
+
+Tue May 6 02:08:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/io/nonblock/test_flush.rb: don't set Thread.abort_on_exception.
+
+ * test/net/imap/test_imap.rb: ensure disconnecting imap to terminate
+ receiver thread.
+
+Tue May 6 00:29:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * iseq.c (insn_operand_intern): should handle Qundef embedded in
+ operand. [ruby-core:16656]
+
+Tue May 6 00:00:02 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): should call compile_cpath() for
+ modules as well. [ruby-dev:34585]
+
+ * insns.def (defineclass): add undef handling.
+
+Mon May 5 23:49:40 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (defineclass): was using wrong variable. [ruby-dev:34592]
+
+Mon May 5 20:07:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fflush): IO#flush problem within threads. a patch from
+ <s.wanabe at gmail.com> in [ruby-dev:34595].
+
+Mon May 5 19:58:44 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): protect some expression from
+ segmentation fault. a patch from wanabe <s.wanabe at gmail.com>
+ in [ruby-dev:34593].
+
+Mon May 5 19:49:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_s_def): Struct.new(0) should not SEGV.
+ based on the patch from wanabe <s.wanabe at gmail.com> in
+ [ruby-dev:34594].
+
+ * struct.c (make_struct): call to_str on name object.
+
+Mon May 5 17:17:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (ruby_cleanup): wrap ruby_finalize_0 by SAVE_ROOT_JMPBUF to
+ avoid SEGV by at_exit { Fiber.new{}.resume } on IA64.
+
+Mon May 5 12:12:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_slice_bang): should adjust length before making
+ sub-array.
+
+Mon May 5 11:36:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_dup): should dupe corresponding information.
+ [ruby-dev:34581]
+
+Mon May 5 11:13:50 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (compile_cpath): use Qundef to denote cbase lookup.
+
+ * insns.def (defineclass): Qundef is passed for cbase.
+
+ * insns.def (setconstant): ditto.
+
+ * vm_insnhelper.c (vm_check_if_namespace): use rb_inspect()
+ instead of rb_obj_as_string() for better description.
+
+Mon May 5 02:10:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (set_heaps_increment): fix memory allocation strategy by
+ determining heaps_inc from heaps_used, not objects_delta.
+ (struct rb_objspace): delta removed. change increment, length and
+ used to long for LP64.
+ (objects_delta): removed.
+ (allocate_heaps): add next_heaps_length argument.
+ (init_heap): renamed from add_heap.
+ (garbage_collect): use heaps_increment in dont_gc.
+
+Sun May 4 21:09:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/getoptlong.rb: use $stderr instead of $deferr.
+
+Sun May 4 16:04:28 2008 Tanaka Akira <akr@fsij.org>
+
+ * time.c (obj2nsec): fix string argument.
+
+Sun May 4 14:29:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (rb_obj_respond_to): check the result of respond_to? method
+ by RTEST.
+
+Sun May 4 12:57:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_each_line): return original string.
+
+Sat May 3 20:57:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_normal_exit):
+ new method.
+
+Sat May 3 18:10:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_timespec): raise TypeError for nil and other objects
+ which has no divmod method.
+
+Fri May 2 23:59:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (internal_read_func, internal_write_func): split from
+ internal_io_func.
+
+Fri May 2 23:55:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * variable.c (rb_define_hooked_variable): guard *var from GC to
+ prevent collecting argf under RUBY_DEBUG=gc_stress.
+
+Fri May 2 17:29:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): call to_int if step is not a numeric
+ value. [ruby-dev:34575]
+
+Fri May 2 16:10:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): do not forcefully convert steps into
+ integers. [ruby-dev:34571]
+
+Fri May 2 14:52:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el: move fontifying code from hook. a patch from
+ Phil Hagelberg <phil at hagelb.org> in [ruby-core:16636].
+
+Fri May 2 14:10:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): step may be bignum.
+
+Fri May 2 13:52:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (Init_Regexp): remove MatchData#select. [ruby-dev:34563]
+
+Thu May 1 23:59:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_divide), numeric.c (fix_divide): check for result
+ domain. [ruby-dev:34559]
+
+Thu May 1 23:57:06 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/net/telnet.rb: This patch from Brian Candler adds a FailEOF mode which
+ can be activated to have net/telnet raise EOFError exceptions when the
+ remote connection is closed. The default behavior remains unchanged though.
+
+Thu May 1 23:43:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_step): check if step can be converted to an integer.
+ [ruby-dev:34558]
+
+ * range.c (range_step): allow float step bigger than zero but less
+ than one. [ruby-dev:34557]
+
+Thu May 1 23:20:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_divide): return an integer for idiv.
+ [ruby-dev:34553]
+
+Thu May 1 20:47:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): should access converted hash value.
+ [ruby-dev:34555]
+
+Thu May 1 20:31:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_parse.rb (TestParse::test_void_expr_stmts_value):
+ shut up warning.
+
+ * rational.c (nurat_to_f): no need for forceful warning when
+ converting to float. overflow is a nature of float values.
+
+Thu May 1 16:10:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (env_delete_if): return enumerator if no block given.
+ [ruby-dev:34554]
+
+Wed Apr 30 21:36:40 2008 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (url_encode): [ruby-dev:34497] ERB::Util#url_encode
+ bug fix. Reported by rubikitch.
+
+ * test/erb/test_erb.rb: ditto
+
+Wed Apr 30 20:11:36 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/net/telnet.rb: Fixing a bug where line endings would not be properly
+ escaped when the two character ending was broken up into separate TCP
+ packets. Issue reported and patched by Brian Candler.
+
+Wed Apr 30 18:03:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_load_path), vm_core.h (rb_vm_t): moved to VM.
+
+ * load.c (rb_get_load_path): returns absolute load path.
+
+ * load.c (load_path_getter): $LOAD_PATH getter.
+
+ * file.c (rb_find_file_ext, rb_find_file), ruby.c (push_include,
+ ruby_init_loadpath): use the accessor.
+
+ * vm.c (rb_vm_mark): mark load_path.
+
+Wed Apr 30 17:47:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_search): use local variable. a patch from wanabe
+ <s.wanabe AT gmail.com> in [ruby-dev:34537]. [ruby-dev:34492]
+
+Wed Apr 30 16:10:18 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval_intern.h: specify the values of the enumeration constants
+ explicitly. [ruby-dev:34489]
+
+Wed Apr 30 12:32:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (check_exec_redirect_fd): prohibit duplex IO.
+ (check_exec_fds): record maxhint even if close_others is not
+ specified.
+ (rb_exec_arg_fixup): renamed from rb_exec_arg_fix.
+
+Mon Apr 28 20:24:27 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_marshal_load): checks the given
+ denominator. [ruby-dev:34536]
+
+Mon Apr 28 14:21:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (POSFIXABLE): use FIXNUM_MAX+1 instead of
+ FIXNUM_MAX to make it possible to convert to double accurately on
+ environments with 64bit VALUE and 64bit double.
+ It assumes FLT_RADIX is 2.
+ fix RubyForge bug #14102.
+
+Mon Apr 28 12:48:57 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_exec_arg_addopt, rb_exec_arg_addopt): now can specify
+ close_exec on having no fork environment (but still meaningless).
+
+Mon Apr 28 11:11:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (run_exec_options): don't call FIX2INT for nil.
+
+Mon Apr 28 11:11:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (method_name): should return symbols instead of strings.
+ [ruby-dev:34531]
+
+Mon Apr 28 09:02:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_exec_arg_init): declared.
+ (rb_exec_arg_addopt): declared.
+ (rb_exec_arg_fix): declared.
+ (rb_exec_initarg): removed.
+ (rb_exec_getargs): removed.
+ (rb_exec_initarg2): removed.
+
+ * io.c (struct popen_arg): make execarg as a pointer.
+ (popen_exec): follow popen_arg change.
+ (pipe_open): add eargp argument. extract argc and argv from eargp.
+ use rb_exec_arg_addopt to add redirect options.
+ (pipe_open_v): set up struct rb_exec_arg.
+ (pipe_open_s): set up struct rb_exec_arg.
+
+ * process.c (rb_exec_arg_addopt): new function extracted from
+ check_exec_options_i.
+ (check_exec_options_i): use rb_exec_arg_addopt.
+ (rb_check_exec_options): opthash is always a hash now.
+ (rb_exec_getargs): make it static.
+ (rb_exec_fillarg): renamed from rb_exec_initarg2. don't set up
+ redirect_fds.
+ (rb_exec_arg_init): new function.
+ (rb_exec_arg_fix): new function.
+ (rb_f_exec): use rb_exec_arg_init and rb_exec_arg_fix. use
+ rb_exec_arg_addopt to set close_others option.
+ (run_exec_options): make close_others by default.
+ (rb_spawn_internal): use rb_exec_arg_init and rb_exec_arg_fix. use
+ rb_exec_arg_addopt to set close_others option.
+
+Sun Apr 27 18:59:04 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_expt): use f_rational_new2. [ruby-dev:34524]
+
+Sun Apr 27 15:23:40 2008 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_count): add a GC.count method. This method returns
+ a GC invoking count.
+
+Sun Apr 27 12:20:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_vm_t), gc.c (rb_objspace, rb_newobj), vm.c
+ (Init_BareVM): per-VM object space support, which is disabled now.
+
+ * gc.c (rb_objspace_alloc), vm.c (Init_BareVM): should not use ruby
+ malloc here.
+
+ * gc.c (garbage_collect, etc): performance improvement by passing the
+ reference instead of referring the global variable in each functions.
+
+Sun Apr 27 08:06:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (ruby_set_argv): ARGV should be locale encoding.
+ [ruby-list:44861]
+
+Sun Apr 27 01:46:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb (Open3.popen3w): removed.
+ (Open3.popen3): notice wait_thr.
+
+Sun Apr 27 01:13:05 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc, test/rdoc: Update to RDoc 2.0.0 r56.
+
+Sat Apr 26 21:30:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_hash_dup): declared.
+
+ * hash.c (rb_hash_dup): new function.
+
+ * process.c (rb_spawn_internal): don't modify option hash.
+
+Sat Apr 26 18:36:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c, signal.c, thread.c, thread_win32.c, include/ruby/intern.h:
+ suppress warnings.
+
+Sat Apr 26 17:42:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (builtin_types), gc.c (count_objects): added Complex and
+ Rational.
+
+Sat Apr 26 17:35:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_eNOERROR): renamed.
+
+Sat Apr 26 17:30:11 2008 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h, gc.c: remove T_BLOCK.
+
+ * include/ruby/ruby.h: re-number T_xxx.
+
+Sat Apr 26 17:31:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_cProcessTms, rb_cProcessStatus): renamed.
+
+ * error.c (builtin_types), signal.c (siglist), st.c (primes),
+ struct.c (ref_func), time.c (months): constified.
+
+Sat Apr 26 13:00:41 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open3.rb: double fork is replaced by spawn with Process.detach.
+ (Open3.popen3w): new method to access the thread returned by
+ Process.detach.
+
+Sat Apr 26 00:47:43 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_spawn_internal): new function to specify
+ default_close_others.
+ (rb_spawn): specify default_close_others true.
+ (rb_f_system): call rb_spawn_internal with default_close_others as
+ false.
+
+Sat Apr 26 12:26:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_each): use INT2FIX() for fixnum values.
+
+Fri Apr 25 17:56:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (free_unused_heaps): preserve last used heap segment to
+ reduce malloc() call.
+
+Fri Apr 25 17:54:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (HEAP_SIZE): use smaller heap segment (2K) for more chance
+ to be freed. based on patch from authorNari <authornari at gmail.com>.
+
+ * gc.c (rb_newobj_from_heap): eventually allocate heap segments.
+
+Fri Apr 25 15:35:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_spawn): rb_exec_initarg() returns new argc and argv in
+ earg.
+
+Fri Apr 25 12:37:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (flatten): returns an instance of same class.
+ [ruby-core:16554]
+
+Fri Apr 25 10:52:27 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h: define mode_t for umask.
+
+ * process.c (check_exec_options_i, check_exec_fds, run_exec_options):
+ support "close_others" only when fork(2) is available.
+
+Fri Apr 25 00:16:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c: include sys/stat.h for umask.
+
+Thu Apr 24 23:25:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_env_clear): declared.
+ (rb_io_mode_modenum): declared.
+ (rb_close_before_exec): declared.
+ (struct rb_exec_arg): add options and redirect_fds field.
+ (rb_check_argv): removed.
+ (rb_exec_initarg): declared.
+ (rb_exec_getargs): declared.
+ (rb_exec_initarg2): declared.
+ (rb_fork): add third argument: fds.
+
+ * io.c (max_file_descriptor): new static variable to record maximum
+ file descriptor ruby used.
+ (UPDATE_MAXFD): new macro.
+ (UPDATE_MAXFD_PIPE): new macro.
+ (rb_io_mode_modenum): externed.
+ (rb_sysopen): update max_file_descriptor.
+ (rb_close_before_exec): new function.
+ (popen_exec): redirection removed because it is done by extended
+ spawn mechanism.
+ (pipe_open): generate a hash for spawn options to specify
+ redirections.
+ (pipe_open_v): use rb_exec_getargs.
+ (pipe_open_s): use rb_exec_getargs.
+ (rb_io_initialize): update max_file_descriptor.
+
+ * process.c (hide_obj): new function.
+ (check_exec_redirect_fd): new function.
+ (check_exec_redirect): new function.
+ (check_exec_options_i): new function.
+ (check_exec_fds): new function.
+ (rb_check_exec_options): new function.
+ (check_exec_env_i): new function.
+ (rb_check_exec_env): new function.
+ (rb_exec_getargs): new function.
+ (rb_exec_initarg2): new function.
+ (rb_exec_initarg): new function.
+ (rb_f_exec): use rb_exec_initarg.
+ (intcmp): new function.
+ (run_exec_dup2): new function.
+ (run_exec_close): new function.
+ (run_exec_open): new function.
+ (run_exec_pgroup): new function.
+ (run_exec_rlimit): new function.
+ (run_exec_options): new function.
+ (rb_exec): call run_exec_options.
+ (move_fds_to_avoid_crash): new function.
+ (pipe_nocrash): new function.
+ (rb_fork): use pipe_nocrash to avoid file descriptor conflicts.
+ (rb_spawn): use rb_exec_initarg.
+ (rlimit_resource_name2int): extracted from rlimit_resource_type.
+ (rlimit_type_by_hname): new function.
+ (rlimit_type_by_lname): new function.
+ (rlimit_resource_type): use rlimit_type_by_hname.
+ (proc_daemon): add fds argument for rb_fork.
+
+ * hash.c (rb_env_clear): renamed from env_clear and externed.
+
+ [ruby-dev:34086]
+
+Thu Apr 24 23:00:58 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_thread.rb: fix typos.
+
+ * test/ruby/envutil.rb (rubyexec): move Open3.popen3 call into timeout
+ block.
+
+Thu Apr 24 22:34:52 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_comparable.rb: new tests for Comparable, to achieve
+ 100% test coverage of compar.c.
+
+Thu Apr 24 17:19:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (process_options): set safe_level before loading script.
+ [ruby-dev:34421]
+
+Thu Apr 24 14:15:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (dln_find_1): prior files with extensions to files sans
+ extensions. [ruby-core:16517]
+
+Thu Apr 24 00:26:06 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/descriptions.rb: fixed wrong class nestings.
+
+Thu Apr 24 00:20:01 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_settracefunc.rb: add a test for set_trace_func.
+
+ * test/ruby/envutil.rb: move "rubyexec" method from test_rubyoptions.rb.
+
+ * test/ruby/test_rubyoptions.rb: use rubyexec in envutil.rb.
+
+ * test/ruby/test_thread.rb: add tests to achieve over 90% test coverage
+ of thread.c.
+
+Wed Apr 23 15:28:52 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create): failed
+ notice moved from comment to assertion message. [ruby-dev:29127]
+
+Wed Apr 23 11:49:54 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#each, SortedSet#each, TC_Set#test_each): Return
+ an enumerator if no block is given.
+
+Wed Apr 23 00:36:03 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/openssl/test_ssl.rb (start_server): add timeout to server.join.
+
+Wed Apr 23 00:18:45 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_symbol.rb (TestSymbol#test_to_proc): Improve
+ tests of Symbol#to_proc.
+
+Tue Apr 22 22:40:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/drb/drb.rb (DRb::DRbServer::check_insecure_method): should
+ check method names by symbols, not by strings. a patch from
+ Kazuhiro NISHIYAMA <zn at mbf.nifty.com> in [ruby-dev:34487].
+
+Tue Apr 22 22:15:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-{case,label}-indent): up list from
+ indentation point.
+
+Tue Apr 22 21:09:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (score_table_A0, score_table_F0):
+ type of content is unsigned char.
+
+ * ext/nkf/nkf-utf8/nkf.c (push_broken_buf): 'c' is nkf_char.
+
+ * ext/nkf/nkf-utf8/nkf.c (push_broken_buf): enc is 0 or pointer.
+
+ * ext/nkf//nkf.c (options): type of option is unsigned char.
+
+Tue Apr 22 20:51:58 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (z_conv): characters must be nkf_char.
+
+Tue Apr 22 19:23:05 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c (enumerator_initialize): Remove an undocumented
+ feature (passing a block to the constructor) that's broken.
+ This is not what I intended.
+
+Tue Apr 22 17:54:05 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm_core.h (exec_event_hooks): ``inline'' is a type modifier, not
+ a type itself.
+
+Tue Apr 22 16:24:27 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): do not use C++ comments.
+
+Tue Apr 22 16:23:53 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: use AC_USE_SYSTEM_EXTENSIONS.
+
+Tue Apr 22 16:23:16 2008 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm_evalbody.c (DECL_SC_REG): use __asm__ instead.
+
+Tue Apr 22 16:18:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_evalbody.c (DECL_SC_REG): typo fixed.
+
+Tue Apr 22 15:25:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (struct timespec): needs time.h according to POSIX.
+
+Tue Apr 22 13:19:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_thread_stop_timer_thread): should clear
+ timer_thread_id after stopping it.
+
+Tue Apr 22 13:12:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_join): remove the current thread from the join list
+ of the target thread.
+
+Tue Apr 22 12:03:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_ev_const): search from the base klass if it
+ is given.
+
+Tue Apr 22 09:58:13 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c: avoid warnings.
+
+Tue Apr 22 09:56:51 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (eaccess): workaround for recent msvcrt's behavior.
+ [ruby-core:16460]
+
+Mon Apr 21 19:08:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_body): call rb_io_check_readable and
+ rb_io_check_writable.
+
+Mon Apr 21 17:45:27 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dbm/dbm.c (fdbm_each_value, fdbm_each_key, fdbm_each_pair):
+ GDBM#{each,each_pair,each_key,each_value}: Return an enumerator
+ if no block is given.
+
+ * ext/gdbm/gdbm.c (fgdbm_each_value, fgdbm_each_key,
+ fgdbm_each_pair): GDBM#{each,each_pair,each_key,each_value}:
+ Return an enumerator if no block is given.
+
+ * ext/openssl/ossl_config.c (ossl_config_each):
+ OpenSSL::Config#each: Return an enumerator if no block is given.
+
+ * ext/readline/readline.c (hist_each): Readline::HISTORY#each:
+ Return an enumerator if no block is given.
+
+ * ext/sdbm/init.c (fsdbm_each_value, fsdbm_each_key,
+ fsdbm_each_pair): SDBM#{each,each_pair,each_key,each_value}:
+ Return an enumerator if no block is given.
+
+ * ext/stringio/stringio.c (strio_each_byte, strio_each):
+ StringIO#{each,each_line,each_byte}: Return an enumerator if no
+ block is given.
+
+ * ext/stringio/stringio.c (Init_stringio): Add #lines and #bytes,
+ which are aliases to #each_line and #each_byte, respectively.
+
+ * ext/win32ole/win32ole.c (fole_each): WIN32OLE#each: Return an
+ enumerator if no block is given.
+
+ * ext/zlib/zlib.c (rb_gzreader_each_byte, rb_gzreader_each):
+ Zlib::GzipReader#{each,each_line,each_byte}: Return an
+ enumerator if no block is given.
+
+ * ext/zlib/zlib.c (Init_zlib): Add Zlib::GzipReader#lines and
+ #bytes, which are aliases to #each_line and #each_byte,
+ respectively.
+
+Mon Apr 21 17:01:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_compile_with_option): check if src is a string.
+ [ruby-core:16453]
+
+Mon Apr 21 16:06:47 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_init): preserve the method name in ID.
+
+ * enumerator.c (enumerator_each): need not to call rb_to_id().
+
+ * enumerator.c (enumerator_with_index): ditto.
+
+Mon Apr 21 11:00:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): capture exception during defined?
+ evaluation. a patch from wanabe <s.wanabe at gmail.com> in
+ [ruby-dev:34461]. [ruby-core:16010]
+
+Mon Apr 21 10:06:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c: should include <errno.h> to refer to errno.
+
+Mon Apr 21 09:58:04 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (rb_strftime): check errno to detect strftime(3)'s error.
+ this is workaround for recent version of MSVCRT.
+ [ruby-dev:34456]
+
+Mon Apr 21 08:54:30 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (ruby_xmalloc): use size_t for malloc argument instead of long.
+
+Sun Apr 20 21:00:21 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c, include/ruby/ruby.h: Export rb_cEnumerator.
+
+Sun Apr 20 20:47:50 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enumerator.c: Resolve the method every time an enumeration
+ method is run, not once when the enumerator is initialized as it
+ was before, so that method_missing() and method (re)definition
+ afterwards are both in effect; pointed out in: [ruby-core:16441]
+
+Sun Apr 20 15:11:00 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_rbuf_to_dst): removed.
+ (copy_stream_fallback_body): don't bypass write method.
+ (copy_stream_body): simplified.
+
+Sun Apr 20 15:01:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct iseq_compile_data): moved label_no from
+ new_label_body().
+
+ * compile.c (iseq_set_exception_table): allocates catch_table only
+ when entries exist.
+
+ * compile.c (struct iseq_link_element, struct iseq_insn_data): made
+ enum for debuggers.
+
+Sun Apr 20 14:44:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): fix for splat in when and rescue.
+ a patch from wanabe <s.wanabe AT gmail.com> in [ruby-dev:34429].
+ [ruby-core:14537]
+
+Sun Apr 20 13:55:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_fallback): write directly (bypassing write method)
+ if possible.
+
+Sun Apr 20 12:49:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_fallback): read directly (bypassing readpartial
+ method) if possible.
+
+Sun Apr 20 04:45:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_body): use readpartial and write method for
+ non-IOs such as StringIO and ARGF.
+
+Fri Apr 18 20:57:33 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_array.rb: add tests to achieve over 95% test coverage
+ of array.c.
+
+Fri Apr 18 17:37:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_mark_locations): get rid of underflow.
+
+ * gc.c (mark_current_machine_context): check if the main thread stack
+ position may shrink under the initialized position. [ruby-core:16436]
+
+Thu Apr 17 22:20:52 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enc/trans/utf_16_32.c (fun_so_to_utf_16be, fun_so_to_utf_16le): add
+ parentheses to remove warnings of gcc.
+
+ * io.c (rb_io_getc): remove unused variables.
+
+ * compile.c (NODE_NEXT, NODE_REDO): remove unused labels.
+
+ * ext/nkf/nkf.c (rb_nkf_convert): remove unused variables.
+
+ * ext/syck/rubyext.c (syck_resolver_initialize,
+ syck_resolver_detect_implicit, syck_emitter_emit): remove unused
+ variables.
+
+Thu Apr 17 20:12:47 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rubyoptions.rb (test_search): enable some assertions.
+
+ * test/ruby/test_rubyoptions.rb: flunk message in win32.
+
+Thu Apr 17 16:07:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (ruby): run in C locale.
+
+ * test/ruby/test_rubyoptions.rb (test_encoding): --encoding does not
+ affect source code.
+
+Thu Apr 17 00:45:41 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb (test_rlimit_nofile): reset RLIMIT_NOFILE
+ before exit (for gcov).
+
+ * test/ruby/test_rubyoptions.rb: new tests for option of ruby
+ interpreter, to achieve over 95% test coverage of ruby.c.
+
+Wed Apr 16 02:40:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): preludes and parser need to run in safe
+ level 0. [ruby-dev:34407]
+
+Wed Apr 16 02:26:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): dln_find_file returns the pointer to a
+ static buffer, so should copy it. [ruby-dev:34409]
+
+Tue Apr 15 23:08:46 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/xmlrpc/client.rb: fix cookie handling. [ruby-dev:34403]
+
+ * test/xmlrpc/test_cookie.rb: add a test for the above fix.
+
+Tue Apr 15 19:20:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c: #undef rb_argv moved before #define.
+
+Tue Apr 15 18:02:17 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_argv): replaced with rb_get_argv().
+ [ruby-Bugs-19514]
+
+Tue Apr 15 17:10:59 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/net/http.rb, lib/net/smtp.rb, lib/net/pop.rb: update
+ URLs of Japanese documents.
+
+Tue Apr 15 16:45:14 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_symbol.rb (TestSymbol#test_to_proc): add tests.
+
+Tue Apr 15 15:38:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-encoding-map): added shift-jis for older
+ versions.
+
+ * misc/ruby-mode.el (ruby-mode-set-encoding):
+ coding-system-to-mime-charset is not a standard function.
+ [carbon-emacs:795]
+ fix for the case that magic comment exists but coding system is
+ absent.
+
+ * misc/ruby-mode.el (ruby-mode): use write-contents-functions or
+ write-contents-hooks for older versions.
+
+Tue Apr 15 07:21:21 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_div): [ruby-dev:34357]
+
+ * complex.c (nucomp_abs): use hypot.
+
+ * complex.c (nucomp_quo): do not force conversion.
+
+ * test/ruby/test_complex.rb: omitted some meaningless tests.
+
+Mon Apr 14 23:25:50 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_objectspace.rb: add a test for
+ ObjectSpace.count_objects.
+
+Mon Apr 14 22:44:24 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (SET_EXTERNAL_ENCODING): avoid call rb_enc_check() on
+ half-baked result string.
+
+ * re.c (rb_reg_search): make search reentrant. [ruby-dev:34223]
+
+ * test/ruby/test_parse.rb (TestParse::test_global_variable):
+ should preserve $& variable.
+
+Mon Apr 14 17:23:27 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * hash.c (rb_hash_delete_if, rb_hash_reject_bang, env_delete_if,
+ env_reject_bang): Return an enumerator if no block is given.
+
+Mon Apr 14 14:33:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c, compile.h (compile_debug): made runtime option.
+
+ * debug.c (ruby_debug_print_indent): returns if debug_level exceeds
+ the threshold.
+
+ * debug.c (ruby_debug_printf): printf to stderr.
+
+ * iseq.c (make_compile_option, make_compile_option_value): added
+ debug_level option.
+
+ * vm_core.h (rb_compile_option_t): added debug_level.
+
+ * vm_core.h (struct iseq_compile_data): added node_level.
+
+Mon Apr 14 12:52:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (Init_stack): use ruby_init_stack. [ruby-dev:34350]
+
+ * gc.c (rb_objspace_t): packed globals. [ruby-dev:34348]
+
+ * gc.c (finalizers): removed. [ruby-dev:34349]
+
+Mon Apr 14 11:30:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_new): new integer overflow check condition.
+ suggested by TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com> in
+ [ruby-dev:34156].
+
+ * array.c (rb_ary_initialize): ditto.
+
+Mon Apr 14 00:51:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_parse.rb: add tests to achieve over 95% test coverage
+ of parse.y.
+
+Sun Apr 13 23:53:58 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (enum_cycle): Make Enumerable#cycle do a finite loop when
+ the number of cycles is specified.
+
+ * array.c (rb_ary_cycle): Ditto for Array#cycle.
+
+Sun Apr 13 18:52:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (lock_func): should not check interrupts in
+ blocking region. [ruby-dev:34378]
+
+Sat Apr 12 12:41:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_exec_node, ruby_run_node), ruby.c (process_options):
+ use iseq instead of NODE.
+
+ * gc.c (source_filenames): removed.
+
+ * include/ruby/intern.h, parse.y (yycompile, parser_mark, parser_free,
+ ripper_initialize): rb_source_filename() is no longer used.
+
+ * compile.c, compile.h (ERROR_ARGS), parse.y (node_newnode, fixpos,
+ parser_warn, e_option_supplied, warn_unless_e_option, range_op,
+ cond0): nd_file is no longer used.
+
+Sat Apr 12 12:17:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * prelude.rb (require_relative): move require_relative from
+ lib/require_relative.rb. [ruby-core:16356]
+
+ * lib/require_relative.rb: removed.
+
+Sat Apr 12 05:55:57 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*, test/rubygems*: Update to RubyGems 1.1.1 r1701.
+
+Sat Apr 12 03:13:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): set external encoding.
+
+ * file.c (rb_file_s_basename, rb_file_s_dirname, rb_file_s_extname):
+ copy encoding.
+
+Fri Apr 11 17:35:06 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (count_i): modified to shut warning up.
+
+Fri Apr 11 17:25:09 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (count_i, count_iter_i, enum_count, enum_find_index):
+ Reduce code.
+
+Fri Apr 11 17:06:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (find_index_i): modified to shut warning up.
+
+ * enum.c (find_index_iter_i): ditto.
+
+Fri Apr 11 16:44:43 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * enum.c (enum_find_index): Add support for find_index(obj);
+ [ruby-dev:34313].
+
+ * array.c (rb_ary_index): Define find_index as an alias to index.
+
+Fri Apr 11 16:42:33 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/yaml/store.rb (YAML::load): modified to support empty
+ database.
+
+Fri Apr 11 08:05:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): add volatile to avoid potential GC bug. a
+ patch from Tomoyuki Chikanaga <chikanag at nippon-control-system.co.jp>
+ in [ruby-dev:34312].
+
+Thu Apr 10 23:08:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/pstore.rb (PStore::dump, PStore::load): allow subclass
+ overriding. [ruby-dev:34305]
+
+ * lib/yaml/store.rb (YAML::Store::marshal_dump_supports_canonical_option?):
+ add a method to support faster PStore.
+
+Thu Apr 10 20:36:45 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/rdebug.el, misc/README: Remove rdebug.el as per request
+ from the maintainer and mention the ruby-debug project at
+ RubyForge in README; bug#19043.
+
+Thu Apr 10 19:41:00 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * eval.c (rb_f_loop): Mention StopIteration in the document.
+
+Thu Apr 10 19:23:55 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_pop_m, rb_ary_shift_m): Update documents for
+ #pop() and #shift().
+
+ * array.c (rb_ary_slice_bang): Update document. Assigning
+ array[*args]= nil no longer removes elements.
+
+Thu Apr 10 16:58:44 2008 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (w_object): TYPE_USERDEF assigns id for ivars first.
+ [ruby-dev:34159] by nagachika.
+
+Thu Apr 10 15:03:47 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/generator.rb: removed obsolete library. [ruby-core:16233]
+
+ * test/test_generator.rb: removed as well. [ruby-dev:34306]
+
+ * lib/pstore.rb: replaced by Hongli Lai's faster version.
+
+Thu Apr 10 10:27:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (native_sleep): sleep_cond is initialized at
+ creation. [ruby-Patches-19361].
+
+Wed Apr 9 14:43:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (lock_func): optimized and checks for interrupt_flag.
+ based on a patch from Sylvain Joyeux in [ruby-Patches-19361] and
+ [ruby-Patches-19362].
+
+Wed Apr 9 12:12:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_thread.rb: new tests from Sylvain Joyeux in
+ [ruby-Patches-19361].
+
+Tue Apr 8 21:36:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_mutex_sleep): ensures to re-acquire at waking up.
+ [ruby-Patches-19361]
+
+Tue Apr 8 11:00:14 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/complex.rb: remove Math first before overwriting by CMath.
+
+Tue Apr 8 10:34:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * load.c (rb_require_safe): should check fname path after $SAFE is
+ properly set. [ruby-dev:34268]
+
+ * re.c (rb_reg_quote): should always copy the quoting string.
+ [ruby-core:16235]
+
+Tue Apr 8 10:30:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (prelude.c): depends on enc/prelude.rb.
+
+ * enc/prelude.rb: fixed initial library names.
+
+Tue Apr 8 03:39:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_provided): check expanded path for relative path
+ features, loading or loaded features are already expanded in 1.9.
+
+ * variable.c (rb_autoload_load): no needs to check if provided before
+ rb_require_safe. [ruby-dev:34266]
+
+Mon Apr 7 22:41:21 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * numeric.c: cancelled recent changes (except to remove rdiv).
+
+ * bignum.c: ditto.
+
+ * bignum.c: added rb_big_idiv.
+
+Mon Apr 7 15:51:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_init_db): moved to enc/encdb.c.
+
+ * transcode.c (init_transcoder_table): moved to enc/trans/transdb.c.
+
+ * enc/depend (enc/encdb.o enc/trans/transdb.o): depend on
+ corresponding headers.
+
+ * common.mk (COMMONOBJS): moved transcode.o from OBJS
+
+Mon Apr 7 12:26:32 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: add a known-bug.
+
+Mon Apr 7 12:15:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_each_func): should not leave a variable
+ uninitialized, which could cause SEGV.
+
+ * range.c (range_step): removed duplicated and unreachable code.
+
+Mon Apr 7 02:12:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): need not to check if tainted.
+ [ruby-dev:34219]
+
+Sun Apr 6 09:45:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_tell): check if closed. [ruby-core:16223]
+
+Sat Apr 5 23:17:20 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb: new.
+
+ * lib/complex.rb: depends lib/cmath.rb.
+
+ * lib/rational.rb: added rdiv.
+
+ * complex.c: removed some math functions.
+
+Sat Apr 5 05:50:57 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_rb.rb: Fix uninitialized variable warnings.
+
+ * lib/rdoc/generator/html.rb: ditto.
+
+ * lib/rdoc/options.rb: Fix shadowed variable warning.
+
+ * lib/webrick/httprequest.rb: Fix redefined method warning.
+
+Sat Apr 5 02:13:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cmpint): moved from compar.c, to check bignum
+ zero.
+
+Fri Apr 4 23:24:06 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_memsearch_qs): wrong boundary condition.
+
+ * re.c (rb_memsearch_qs_utf8): ditto.
+
+Fri Apr 4 14:11:36 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_memsearch_qs): wrong boundary condition. a patch from
+ wanabe <s.wanabe AT gmail.com> in [ruby-dev:34248].
+
+Fri Apr 4 05:57:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/pop.rb (Net::POP3::do_finish): clear @n_mails and
+ @n_bytes as well. [ruby-core:16144]
+
+Fri Apr 4 01:59:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): add step for each iteration if begin and
+ end are numeric. [ruby-core:15990]
+
+Fri Apr 4 00:42:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (Init_Bignum): rdiv method removed. [ruby-dev:34242]
+
+ * complex.c (nucomp_quo): ditto.
+
+ * numeric.c (num_rdiv): ditto.
+
+ * rational.c (nurat_div): ditto.
+
+ * complex.c (nucomp_fdiv): fdiv implementation restored.
+
+ * numeric.c (num_quo): RDoc updated.
+
+Thu Apr 3 21:51:45 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_int_check): function for DRY real check.
+
+ * complex.c (nucomp_{add,sub,mul,div,expt}): use rb_num_coerce_bin().
+
+Thu Apr 3 19:59:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defineclass): check if cbase is a class or a module.
+ [ruby-core:16118]
+
+Thu Apr 3 14:42:11 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (INSNS): add insns_info.inc.
+
+ * common.mk (INSNS): make incs separately for nmake.
+
+Thu Apr 3 13:20:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (endb.h, transdb.h, prelude.c): depend on $(PREP) and
+ check if really changed. [ruby-core:16102]
+
+ * Makefile.in, common.mk, configure.in, {win32,bcc32}/Makefile.sub
+ (MINIOBJS, ARCHMINIOBJS): separated.
+
+Thu Apr 3 09:00:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_sequence, iseq_insns_unification,
+ insn_data_to_s_detail): constified.
+
+ * iseq.c (insn_operand_intern, ruby_iseq_disasm_insn): ditto.
+
+ * template/{insns_info,opt_sc,optunifs}.inc.tmpl: ditto.
+
+ * tool/instruction.rb (OptUnifsIncGenerator): ditto.
+
+Thu Apr 3 08:46:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_include): add RDoc to describe that comparison
+ for numeric is done according magnitude of values.
+ [ruby-core:15907]
+
+Wed Apr 2 22:29:35 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rational.c (nurat_int_check): function for DRY integer check.
+
+ * numeric.c (num_rdiv): should always return rational number.
+
+ * rational.c (nurat_add, nurat_sub, nurat_mul, nurat_fdiv,
+ nurat_cmp): use rb_num_coerce_bin().
+
+ * rational.c (nurat_division): does / and rdiv.
+
+ * .gdbinit (rp): no longer use rb_p().
+
+Wed Apr 2 06:52:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * .gdbinit (rp): supports rational and complex numbers. it's
+ cheating since it uses rb_p().
+
+Wed Apr 2 06:24:06 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/node.h: add new constants for rb_call()'s scope.
+
+ * eval.c (iterate_method): use CALL_* scope constant to specify
+ proper scope value.
+
+ * eval.c (rb_each, rb_apply, rb_funcall, rb_funcall2, rb_funcall3):
+ ditto.
+
+Tue Apr 1 21:19:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rational.c: need to include <float.h> just once.
+
+Tue Apr 1 16:40:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big2dbl): more precise conversion at edge cases.
+ [ruby-dev:34195]
+
+Tue Apr 1 14:43:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: get rid of empty expansion.
+
+ * configure.in: _setjmp is available but _longjmp is not on mingw.
+
+Tue Apr 1 09:41:22 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc,win}32/Makefile (config.h): need to define RUBY_SETJMP, etc.
+
+Tue Apr 1 07:31:58 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems* test/rubygems*: Import RubyGems 1.1.0.
+
+Tue Apr 1 03:20:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_SETJMP, RUBY_LONGJMP, RUBY_JMP_BUF): prefers
+ _setjmp over setjmp and sigsetjmp. [ruby-core:16023]
+ __builtin_setjmp cannot handle a variable.
+
+ * configure.in (--with-setjmp-type): new option to override the
+ default rule in the above.
+
+ * eval_intern.h (ruby_setjmp, ruby_longjmp), gc.c (rb_setjmp),
+ vm_core.h (rb_jmpbuf_t): use RUBY_SETJMP, RUBY_LONGJMP and
+ RUBY_JMP_BUF.
+
+Tue Apr 1 01:55:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::Config.default_config_hash): requires
+ win32/resolv to use Win32::Resolv. [ruby-dev:34138]
+
+Tue Apr 1 01:40:58 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: adopted the ruby's style.
+
+ * rational.c: ditto.
+
+Tue Apr 1 00:17:35 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: revert.
+
+Mon Mar 31 18:57:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub (config.h): define ssize_t.
+
+ * io.c (copy_stream_body): some platform don't have O_NOCTTY.
+
+Mon Mar 31 18:42:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check for ssize_t. [ruby-dev:34184]
+
+Mon Mar 31 14:45:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_quo): should convert its operand to Rational.
+
+ * rational.c (string_to_r_strict): should raise TypeError.
+
+ * bignum.c (Init_Bignum): should not redefine Bignum#div.
+ Numeric#div will do. [ruby-dev:34066]
+
+Mon Mar 31 04:05:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_getc): set coderange while getting characters.
+
+Sun Mar 30 23:16:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (proc_dup): should copy is_lambda attribute as well.
+ [ruby-talk:296244]
+
+Sun Mar 30 15:33:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c: IO.copy_stream implemented. [ruby-dev:33843]
+
+ * thread.c (rb_fd_select): new function.
+
+ * configure.in (sys/sendfile.h): check the header file.
+ (sendfile): check the function.
+ (pread): check the function.
+
+Sat Mar 29 14:18:41 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/*: full update Ruby/Tk to support Ruby(1.9|1.8) and Tc/Tk8.5.
+
+ * ext/tk/lib/tkextlib/tile.rb: [incompatible] remove TileWidgets'
+ instate/state/identify method to avoid the conflict with standard
+ widget options. Those methods are renamed to ttk_instate/ttk_state/
+ ttk_identify (tile_instate/tile_state/tile_identify are available
+ too). Although I don't recommend, if you really need old methods,
+ please define "Tk::USE_OBSOLETE_TILE_STATE_METHOD = true" before
+ "require 'tkextlib/tile'".
+
+ * ext/tk/lib/tkextlib/tile.rb: "Tk::Tile::__Import_Tile_Widgets__!"
+ is obsolete. It outputs warning. To control default widget set,
+ use "Tk.default_widget_set = :Ttk".
+
+ * ext/tk/lib/tk.rb: __IGNORE_UNKNOWN_CONFIGURE_OPTION__ method and
+ __set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!(mode) method are defined
+ as module methods of TkConfigMethod. It may help users to wrap old
+ Ruby/Tk scripts (use standard widgets) to force to use Ttk widgets.
+ Ttk widgets don't have some options of standard widgets which are
+ control the view of widgets. When set ignore-mode true, configure
+ method tries to ignore such unknown options with no exception.
+ Of course, it may raise other troubles on the GUI design.
+ So, those are a little danger methods.
+
+ * ext/tk/lib/tk/itemconfig.rb: __IGNORE_UNKNOWN_CONFIGURE_OPTION__
+ method and __set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!(mode) method
+ are defined as module methods of TkItemConfigMethod as the same
+ purpose as TkConfigMethod's ones.
+
+ * ext/tk/sample/ttk_wrapper.rb: A new example. This is a tool for
+ wrapping old Ruby/Tk scripts (which use standard widgets) to use
+ Ttk (Tile) widgets as default.
+
+ * ext/tk/sample/tkextlib/tile/demo.rb: use ttk_instate/ttk_state
+ method instead of instate/state method.
+
+ * ext/tk/lib/tk/root, ext/tk/lib/tk/namespace.rb,
+ ext/tk/lib/tk/text.rb, ext/tk/lib/tkextlib/*: some 'instance_eval's
+ are replaced to "instance_exec(self)".
+
+ * ext/tk/lib/tk/event.rb: bug fix on KEY_TBL and PROC_TBL (?x is not
+ a character code on Ruby1.9).
+
+ * ext/tk/lib/tk/variable.rb: support new style of operation argument
+ on Tcl/Tk's 'trace' command for variables.
+
+ * ext/tk/sample/demos-jp/widget, ext/tk/sample/demos-en/widget: bug fix
+
+ * ext/tk/sample/demos-jp/textpeer.rb,
+ ext/tk/sample/demos-en/textpeer.rb: new widget demo.
+
+ * ext/tk/tcltklib.c: decrease SEGV troubles (probably)
+
+ * ext/tk/lib/tk.rb: remove Thread.critical access if Ruby1.9
+
+ * ext/tk/lib/tk/multi-tk.rb: support Ruby1.9 (probably)
+
+ * ext/tk/lib/tkextlib/tile.rb: add method to define Tcl/Tk command
+ to make Tcl/Tk theme sources (based on different version of Tile
+ extension) available.
+ (Tk::Tile::__define_LoadImages_proc_for_compatibility__)
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/wm.rb: support dockable frames
+ (Tcl/Tk8.5 feature). 'wm' command can treat many kinds of widgets
+ as toplevel widgets.
+
+ * ext/tk/lib/tkextlib/tile/style.rb: ditto.
+ (Tk::Tile::Style.__define_wrapper_proc_for_compatibility__)
+
+ * ext/tk/lib/tk/font.rb: add actual_hash and metrics_hash to get
+ properties as a hash. metrics_hash method returns a boolean value
+ for 'fixed' option. But metrics method returns numeric value
+ (0 or 1) for 'fixed' option, because of backward compatibility.
+
+ * ext/tk/lib/tk/timer.rb: sometimes fail to set callback procedure.
+
+ * ext/tk/lib/tk.rb: add Tk.sleep and Tk.wakeup method. Tk.sleep
+ doesn't block the eventloop. It will be better to use the method
+ in event callbacks.
+
+ * ext/tk/sample/tksleep_sample.rb: sample script about Tk.sleep.
+
+Thu Mar 27 20:44:22 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (f_lcm): removed.
+
+ * rational.c (rb_lcm, rb_gcdlcm): added.
+
+ * lib/complex.rb (gcd, lcm, gcdlcm): removed.
+
+ * lib/rational.rb (gcd, lcm, gcdlcm): ditto.
+
+Wed Mar 26 18:11:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_constants): rdoc updated. a patch from
+ Florian Gilcher <flo AT andersground.net> in [ruby-core:16009].
+
+Wed Mar 26 00:55:28 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rand.rb: add tests to achieve over 95% test coverage
+ of random.c.
+
+Wed Mar 26 00:28:55 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_rational.rb: add tests to achieve over 90% test
+ coverage of rational.c.
+
+ * test/ruby/test_complex.rb: ditto for complex.c.
+
+Tue Mar 25 19:34:05 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bootstraptest/test_knownbug.rb: add tests. [ruby-dev:34128]
+
+Tue Mar 25 19:09:04 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (ary_new): fix size check. [ruby-dev:34123]
+
+ * array.c (rb_ary_take, rb_ary_drop): check negative size and use
+ NUM2LONG instead of FIX2LONG. [ruby-dev:34123]
+
+ * enum.c (enum_take, enum_drop): check negative size.
+
+ * test/ruby/test_array.rb: add tests for above.
+
+Tue Mar 25 16:32:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): checks if the word is empty.
+
+ * ruby.c (process_options): typo fixed. [ruby-dev:34122]
+
+Tue Mar 25 15:26:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (defined_expr): false short-circuit destination label may
+ be needed. [ruby-talk:295296]
+
+ * compile.c (iseq_compile_each): put nil if false short-circuit is
+ created.
+
+ * compile.c (compile_massign_opt): no need to use alloca.
+
+Mon Mar 24 19:23:52 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * parse.y (debug_lines): Always prepare a new array for each
+ file's SCRIPT_LINES__ storage, instead of appending source lines
+ every time a file is re-loaded; submitted by Rocky Bernstein in
+ #18517.
+
+Mon Mar 24 10:25:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: sitearch should use target_cpu. [ruby-core:15986]
+
+Sun Mar 23 02:51:57 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rlimit_resource_value): use NUM2RLIM.
+
+Sun Mar 23 02:28:01 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: fixed. [ruby-dev:34109]
+
+ * rational.c: ditto.
+
+Fri Mar 21 21:32:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_f_gets, rb_f_readline, rb_f_readlines): delegates to ARGF
+ as well as puts and putc. [ruby-dev:34100]
+
+Fri Mar 21 21:26:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::Hosts): should not use win32/resolv on cygwin.
+ [ruby-dev:29945], [ruby-dev:34095]
+
+ * lib/win32/registry.rb (Win32::Registry.expand_environ): try upcased
+ name too for cygwin. [ruby-dev:29945]
+
+ * lib/win32/resolv.rb (Win32::Resolv.get_hosts_path): use expand_path.
+
+Fri Mar 21 21:10:00 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb: Say that I am the current maintainer.
+
+ * lib/set.rb: Ditto.
+
+ * lib/shellwords.rb: Ditto.
+
+ * ext/syslog/syslog.txt: Ditto.
+
+Fri Mar 21 09:24:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (open_for_install): write block result and rewrite only
+ if changed from existing file.
+
+Fri Mar 21 08:29:33 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (nurat_to_f): rearrangement.
+
+Fri Mar 21 06:44:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * rational.c (nurat_to_f): C99.
+
+Fri Mar 21 01:40:27 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * complex.c (nucomp_sub, nucomp_expt): call corresponding functions.
+
+Fri Mar 21 01:21:43 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * missing/tgamma.c: include config.h before math.h. [ruby-dev:34075]
+
+Thu Mar 20 21:46:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_getline): use receiver.
+
+Thu Mar 20 21:20:19 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: some improvements (include Shin-ichiro HARA's
+ effort).
+
+ * complex.c: some improvements.
+
+ * test/ruby/test_rational2.rb: new.
+
+Thu Mar 20 00:21:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_initialize_copy): get rid of segfault.
+
+ * io.c (argf_tell, argf_seek_m, argf_set_pos, argf_rewind,
+ argf_fileno, argf_to_io, argf_eofl, argf_getc, argf_getbyte,
+ argf_readchar, argf_readbyte, argf_each_line): use receiver.
+
+Wed Mar 19 23:52:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_putc, rb_io_puts): output directly if the receiver is
+ rb_stdout to get rid of infinite recursion. [ruby-dev:34059]
+
+Wed Mar 19 22:27:41 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c: added rb_gcd.
+
+ * complex.c: use rb_gcd.
+
+Wed Mar 19 18:37:00 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: revert.
+
+ * rational.c: revert.
+
+Wed Mar 19 17:31:20 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_intern.h (TH_EXEC_TAG): need not to FLUSH_REGISTER_WINDOWS.
+ [ruby-core:15871], [ruby-dev:34088]
+
+Wed Mar 19 14:53:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (nucomp_to_s, nucomp_inspect): get rid of making
+ unnecessary intermediate objects.
+
+ * complex.c (make_patterns, string_to_c): do not treat successive
+ underscores as a part of numeric like as literals. [ruby-dev:34085]
+
+ * rational.c (make_patterns, string_to_r): ditto.
+
+Wed Mar 19 14:36:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_cstr_to_inum): treat successive underscores as
+ nondigit. [ruby-dev:34089]
+
+Wed Mar 19 14:08:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_check_encoding): should not load autoloaded encoding
+ directly, instead use rb_enc_find_index() which deal with alias and
+ replica. [ruby-core:15957]
+
+Wed Mar 19 11:49:47 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regint.h (include): include ruby.h instead of defines.h and config.h.
+
+Wed Mar 19 10:17:12 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regint.h (CHECK_INTERRUPT_IN_MATCH_AT): add interrupt check
+ during match. [ruby-talk:295002]
+
+Tue Mar 18 16:24:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (literal_concat_gen): bail out at different encoding.
+
+Tue Mar 18 04:00:27 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_memsearch_ss): simple shift search.
+
+ * re.c (rb_memsearch_qs): quick search.
+
+ * re.c (rb_memsearch_qs_utf8): quick search for UTF-8 string.
+
+ * re.c (rb_memsearch_qs_utf8_hash): hash functions for above.
+
+ * re.c (rb_memsearch): use above functions.
+
+ * string.c (rb_str_index): give enc to rb_memsearch.
+
+ * include/ruby/intern.h (rb_memsearch): move to encoding.h.
+
+ * include/ruby/encoding.h (rb_memsearch): move from intern.h.
+
+ * common.mk (PREP): add dependency.
+
+Mon Mar 17 22:23:54 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_take, rb_ary_take_while, rb_ary_drop,
+ rb_ary_drop_while): new methods. [ruby-dev:34067]
+
+ * test/ruby/test_array.rb: add tests for above.
+
+Mon Mar 17 17:11:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode): should use `run-mode-hooks' instead
+ of calling `run-hooks' directly to run the mode hook. patch from
+ Chiyuan Zhang <pluskid AT gmail.com> in [ruby-core:15915]
+
+Mon Mar 17 16:41:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: unset GREP_OPTIONS. [ruby-core:15918]
+
+Sun Mar 16 18:07:07 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/utf_16_32.c: bug fix (some invalid UTF-8 sequences
+ were legal)
+
+ * test/ruby/test_transcode.rb: test for above bug
+
+Sun Mar 16 17:28:07 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (LIBRUBY_SO): add dependency to $(BUILTIN_ENCOBJS).
+
+Sun Mar 16 08:51:41 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * include/ruby/intern.h: added some declarations.
+
+ * include/ruby/ruby.h: ditto.
+
+ * common.mk: added some entries.
+
+ * configure.in: added a check for signbit.
+
+ * lib/complex.rb: nearly all of core definitions have been removed.
+
+ * lib/rational.rb: ditto.
+
+ * lib/mathn.rb: some trivial adjustments.
+
+ * complex.c: new.
+
+ * rational.c: ditto.
+
+ * numeric.c (flo_{quo,rdiv}, fix_fdiv): added.
+
+ * numeric.c ({num,int}_{numerator,denominator}): ditto.
+
+ * bignum.c (rb_big_fdiv): ditto.
+
+ * numeric.c (fix_{quo,pow}): now may yield rational number.
+
+ * bignum.c (rb_big_{quo,pow}): ditto.
+
+ * numeric.c (rb_{int,flo}_induced_from): now can accept rational.
+
+ * gc.c (gc_mark_children, obj_free): now detects complex and rational.
+
+ * inits.c (rb_call_inits): now calls Init_{Complex,Rational}.
+
+ * test/ruby/test_complex.rb: new.
+
+ * test/ruby/test_rational.rb: ditto.
+
+Sat Mar 15 17:48:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_associate_index): pass unnecessary enc_capable().
+
+ * string.c (rb_str_cmp): reduce invocation of rb_enc_compatible().
+
+Fri Mar 14 17:04:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (inttypes.h): includes always if available.
+
+ * string.c, ext/digest/defs.h: moved inttypes.h to ruby.h.
+
+Fri Mar 14 16:59:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_LIB_PREFIX): fix for prefix.
+
+Fri Mar 14 16:35:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie::initialize): performance patch from
+ Makoto Kuwata <kwa@kuwata-lab.com> in [ruby-dev:34048].
+
+Fri Mar 14 15:49:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_LIB_PREFIX): use libdir.
+
+Fri Mar 14 14:24:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/defs.h: inttypes.h is still needed.
+
+Fri Mar 14 11:34:12 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub: follow below changes.
+
+Fri Mar 14 11:24:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-encoding-map, ruby-use-encoding-map): added
+ to customize.
+
+Fri Mar 14 10:37:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (int8_t, uint8_t, int16_t, uint16_t int32_t,
+ uint32_t int64_t, uint64_t, int128_t, uint128_t,
+ intptr_t, uintptr_t): check if defined.
+
+ * win32/Makefile.sub: follow configure.in.
+
+ * ext/digest/defs.h: remove checks for uint8_t, uint32_t and uint64_t.
+
+Fri Mar 14 10:12:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_VARTYPE): should not indent preprocessor
+ directives.
+
+Fri Mar 14 10:03:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (UNALIGNED_WORD_ACCESS): IA64 cannot access unaligned word.
+
+Thu Mar 13 21:00:50 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_slice_bang): should not use rb_ary_subseq()
+ which shares internal pointer. splice modifies the receiver
+ right after subseq. [ruby-dev:34005]
+
+ * bootstraptest/test_struct.rb: some test moved from test to shut
+ warning up.
+
+Thu Mar 13 19:42:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub (config.h): define uint32_t.
+
+Thu Mar 13 14:14:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * trunk/configure.in (AC_CHECK_HEADERS): stdint.h is not needed to
+ check.
+
+ * trunk/configure.in (rb_cv_type_uint32_t): unquoted. [ruby-dev:34030]
+
+ * trunk/string.c (hash): use inttypes.h instead of stdint.h.
+
+Thu Mar 13 10:42:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_divmod): should return integer division. [ruby-dev:34006]
+
+ * enum.c (zip_ary): wrong boundary condition.
+
+ * test/ruby/test_numeric.rb (TestNumeric::test_num2long): bit-and
+ should not raise RangeError.
+
+Thu Mar 13 03:12:48 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/cmd/help.rb: should be updated for new ri structure.
+ [ruby-core:15825]
+
+ * lib/rdoc/ri/driver.rb (RDoc::initialize): allow options to be optional.
+
+ * lib/rdoc/ri/driver.rb (RDoc::class_cache): map_dirs may be
+ empty.
+
+ * lib/rdoc/ri/driver.rb (RDoc::get_info_for): revive get_info_for
+ method. maybe broken.
+
+ * lib/rdoc/ri/util.rb (RDoc::initialize): should not use RiError
+ no more.
+
+Thu Mar 13 01:45:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (stdint.h): check if presence.
+
+ * configure.in (uint32_t): check if defined.
+
+ * string.c (hash): fix for portability. [ruby-dev:34020]
+
+Wed Mar 12 17:33:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): fix for a mere underscore.
+
+Wed Mar 12 14:47:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (rb_thread_raised_set): use generic flags.
+
+ * eval.c (rb_longjmp): clear all raised flags.
+
+ * eval.c (stack_check): leave clearing flag to rb_longjmp.
+
+ * gc.c (rb_memerror): use thread raised flag instead of static flag.
+
+Tue Mar 11 23:38:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_combination): argument check before creating
+ Enumerator.
+
+ * array.c (rb_ary_permutation): ditto.
+
+ * enum.c (enum_zip): optimize if all arguments are arrays.
+
+Tue Mar 11 19:48:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_coerce): try conversion before type check.
+ [ruby-core:15838]
+
+Tue Mar 11 12:39:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (clean-local): WINMAINOBJ is Windows specific.
+
+Tue Mar 11 10:19:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (hash): replaced by MurmurHash described in
+ <http://murmurhash.googlepages.com/>.
+
+Tue Mar 11 09:52:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): empty strings in any encoding are
+ compatible each other.
+
+Tue Mar 11 00:46:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (usage): remove some unimportant lines to fit -h message
+ in a page. [ruby-dev:34018]
+
+Mon Mar 10 17:11:00 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_local_variables): local_variables should return an
+ array of symbols. [ruby-dev:34008]
+
+ * vm.c (collect_local_variables_in_env): ditto.
+
+Mon Mar 10 15:53:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.c (MKSTR): make US-ASCII. [ruby-dev:34010]
+
+Mon Mar 10 02:08:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_index): if t == s + pos, the character beginning
+ from s + pos is valid.
+
+Sun Mar 9 13:51:21 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generator.rb: Restore missing line to #params. Patch by
+ Lincoln Stoll <lstoll at lstoll.net>
+
+Sun Mar 9 09:52:00 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/code_objects.rb: Remove debugging Kernel#p. Patch by
+ Lincoln Stoll <lstoll at lstoll.net>
+ * lib/rdoc/generator/html.rb: Fully qualify AllReferences. Patch by
+ Lincoln Stoll <lstoll at lstoll.net>
+ * lib/rdoc/ri/writer.rb: Fix 1.8 backwards compatibility.
+
+Sat Mar 8 18:50:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (isdirsep): backslash is valid path separator on cygwin too.
+
+Sat Mar 8 06:53:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (search_nonascii): Use VALUE instead of unsigned long
+ because VALUE can be the fastest unsigned integer type.
+ On LLP64 unsigned long isn't the fastest.
+ * string.c (str_strlen): ditto.
+ * string.c (str_utf8_nth): ditto.
+ * string.c (count_utf8_lead_bytes_with_ulong): ditto.
+
+ * string.c (count_utf8_lead_bytes_with_word): renamed.
+
+Fri Mar 7 21:27:43 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c: fix indent.
+
+Fri Mar 7 21:12:19 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (power_cache_init, power_cache_get_power0, Init_Bignum):
+ delayed initializing power cache per base. [ruby-dev:34003]
+
+Fri Mar 7 20:30:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_restore_0): fixed typo. [ruby-core:15821]
+
+Fri Mar 7 19:56:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: rdoc added. [ruby-Patches-9762]
+
+Thu Mar 6 17:26:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): space flag is in effect for Inf/NaN too.
+ [ruby-dev:34002]
+
+Thu Mar 6 15:44:20 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): casting double to long is undefined
+ if the integer part of double is out of the range of long.
+
+Thu Mar 6 15:11:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): ignore 0 flag for NaN and Inf.
+ [ruby-dev:33994]
+
+Thu Mar 6 15:05:25 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32}/Makefile.sub (RUNRUBY): use $(PROGRAM) instead of
+ ruby$(EXEEXT).
+ suggested by KIMURA Koichi <kimura.koichi at canon.co.jp>.
+ [ruby-dev:34000]
+
+Thu Mar 6 14:46:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/lgamma_r.c (loggamma): return 0 for 1 and 2.
+
+ * test/ruby/test_math.rb: accept errors by functions under missing/.
+
+Thu Mar 6 14:29:44 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (rb_str_transcode_bang): set coderange.
+
+ * transcode.c (rb_str_transcode): use rb_str_transcode_bang.
+
+Thu Mar 6 14:00:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/missing.h (cbrt): add declaration.
+
+Thu Mar 6 11:14:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-add-log-current-method): use ruby style
+ method name format.
+
+Thu Mar 6 11:12:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): no need of loop.
+
+Thu Mar 6 08:30:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_freeze): call rb_class_name() directly.
+ [ruby-core:15802]
+
+Thu Mar 6 04:32:06 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (count_utf8_lead_bytes_with_ulong): fix shift size.
+ [ruby-dev:33993]
+
+ * string.c (str_utf8_nth) fix wrong counting.
+
+Thu Mar 6 00:34:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): size_t returned from strlen() can be
+ unsigned.
+
+Thu Mar 6 00:31:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (make_struct): preserve encoding of struct name.
+
+Wed Mar 5 22:49:20 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (is_utf8_lead_byte, count_utf8_lead_bytes_with_ulong):
+ defined for UTF-8 optimization.
+
+ * string.c (str_strlen): use is_utf8_lead_byte and
+ count_utf8_lead_bytes_with_ulong.
+
+ * string.c (str_utf8_nth) ditto.
+
+Wed Mar 5 17:53:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_flock): returns false on EAGAIN if non-blocking.
+ [ruby-core:15795]
+
+Wed Mar 5 17:43:43 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c (transcode_loop): Adjusted detection of invalid
+ (ill-formed) UTF-8 sequences. Fixing potential security issue, see
+ http://www.unicode.org/versions/Unicode5.1.0/#Notable_Changes.
+
+ * test/ruby/test_transcode.rb: Added two tests for above fix.
+
+Wed Mar 5 14:00:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_to_s): avoid rb_scan_args() when no argument
+ given.
+ * bignum.c (rb_big_to_s): ditto.
+ * enum.c (enum_first): ditto.
+ * eval_jump.c (rb_f_catch): ditto.
+ * io.c (rb_obj_display): ditto.
+ * class.c (rb_obj_singleton_methods): ditto.
+ * object.c (rb_class_initialize): ditto.
+ * random.c (rb_f_srand): ditto.
+ * range.c (range_step): ditto.
+ * re.c (rb_reg_s_last_match): ditto.
+ * string.c (rb_str_to_i): ditto.
+ * string.c (rb_str_each_line): ditto.
+ * string.c (rb_str_chomp_bang): ditto.
+ * string.c (rb_str_sum): ditto.
+
+ * string.c (str_modifiable): declare inline.
+ * string.c (str_independent): ditto.
+
+Wed Mar 5 11:50:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/debug.rb: require 'continuation' to implement "restart"
+ command. [ruby-dev:33992]
+
+ * lib/debug.rb (Context::debug_command): remove local variable
+ shadowing to shut up warnings. [ruby-dev:33992]
+
+ * lib/debug.rb (Context::display_list): ditto.
+
+ * lib/debug.rb (Context::resume): ditto.
+
+ * lib/debug.rb (Context::get_thread): no longer use #index for Hash.
+
+Tue Mar 4 21:35:59 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb.rb (IRB::Irb::eval_input): SyntaxError should not be
+ considered as IRB bug. [ruby-dev:33991]
+
+ * lib/irb/workspace.rb (IRB::WorkSpace::filter_backtrace): should
+ filter 'irb.rb' as well for context mode 2 and 3.
+
+Tue Mar 4 19:10:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_aset): should not copy key string when
+ compare_by_identity is set. [ruby-dev:33604]
+
+ * hash.c (hash_equal): two hash tables are different when internal
+ comparison table differ. [ruby-dev:33989]
+
+Tue Mar 4 16:29:06 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): disallow non digits '0o' expression.
+
+Tue Mar 4 14:35:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (open_key_args): use rb_io_open_with_args instead of rb_f_open.
+ [ruby-core:15763]
+
+Tue Mar 4 13:41:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (add_heap): fix previous change. [ruby-dev:33988]
+
+Tue Mar 4 10:21:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (add_heap): use binary search to find the place to insert the
+ new heap slot. [ruby-dev:33983]
+
+Tue Mar 4 05:30:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (open_key_args): use rb_io_open instead of rb_f_open.
+ [ruby-core:15746]
+
+Mon Mar 3 23:28:37 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/filehandler.rb: should normalize path
+ separators in path_info to prevent directory traversal
+ attacks on DOSISH platforms.
+ reported by Digital Security Research Group [DSECRG-08-026].
+
+ * lib/webrick/httpservlet/filehandler.rb: pathnames which have
+ not to be published should be checked case-insensitively.
+
+Mon Mar 3 17:25:45 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (add_heap): sort heaps array in ascending order to use
+ binary search.
+
+ * gc.c (is_pointer_to_heap): use binary search to identify object
+ in heaps. works better when number of heap segments grow big.
+
+Mon Mar 3 17:15:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_regsub): remove too strict encoding check.
+ [ruby-dev:33966]
+
+Mon Mar 3 16:14:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_any_hash): shrinks all results in Fixnum range.
+ [ruby-core:15713]
+
+Sun Mar 2 23:03:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_ungetc): reduce redundant call.
+
+Sun Mar 2 10:13:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file): parse shebang in us-ascii. a patch from
+ sheepman <sheepman AT sheepman.sakura.ne.jp> in [ruby-dev:33955]
+
+Sun Mar 2 00:08:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): check for successive underscores.
+ [ruby-dev:33952]
+
+Sat Mar 1 17:59:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (struct argf): packed ARGF stuffs.
+
+ * ruby.c (proc_options): use ruby_set_inplace_mode().
+
+Sat Mar 1 17:51:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (recursive_collect): do not always
+ include all test_*.rb.
+
+Sat Mar 1 14:14:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * development snapshot 1.9.0-1 released.
+
+Sat Mar 1 13:46:26 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * tool/make-snapshot: make prereq uses MINIRUBY.
+
+ * tool/make-snapshot: allow packaging like 1.9.0-1 by second
+ command-line argument.
+
+Sat Mar 1 13:11:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/allpairs.rb: new file for all pairs method.
+
+ * test/ruby/test_m17n_comb.rb: use allpairs.rb to reduce test cases.
+
+ * test/ruby/test_sprintf_comb.rb: ditto.
+
+Sat Mar 1 12:34:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_inspect): use rb_str_inspect() instead of
+ rb_str_dump(). [ruby-dev:33946]
+
+Sat Mar 1 12:15:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_method.c (rb_get_method_body): ent->method may be freed by
+ GC. [ruby-dev:31819]
+
+ * thread.c (remove_event_hook): should not access freed memory.
+ [ruby-dev:31820]
+
+Sat Mar 1 10:31:19 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (read_all, rb_io_getline_fast): encoding is io_input_encoding.
+
+Sat Mar 1 10:09:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (tr_setup_table, rb_str_split_m, rb_str_chomp_bang):
+ simplified with rb_enc_ascget(). [ruby-dev:33944]
+
+Sat Mar 1 10:01:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_coderange_scan_restartable): should not return
+ offset in the middle of a character.
+
+ * string.c (rb_str_coderange_scan_restartable): should not return
+ invalid cr value.
+
+Sat Mar 1 09:36:08 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): "%#.0o" should keep prefix where
+ "%#.0x" should not.
+
+Sat Mar 1 02:35:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big2str_find_n1): check integer overflow.
+
+Sat Mar 1 00:29:07 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_dummy_p): bootstrap encodings can not be dummy.
+
+ * encoding.c (rb_enc_ascget): no needs to call rb_enc_precise_mbclen()
+ twice.
+
+Fri Feb 29 23:14:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_chomp): test
+ updated.
+
+Fri Feb 29 20:58:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (TestIterator::test_enumerator):
+ adjust test for zip behavior reversion.
+
+Fri Feb 29 20:25:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): now works on UTF-16.
+
+ * string.c (tr_setup_table): negation should work on non ASCII
+ compatible strings as well.
+
+ * string.c (rb_str_split_m): awk split should work on non ASCII
+ compatible strings as well.
+
+Fri Feb 29 18:08:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_strftime): format should be ascii compatible.
+
+ * parse.y (rb_intern3): non ASCII compatible symbols.
+
+ * re.c (rb_reg_regsub): add encoding check.
+
+ * string.c (rb_str_chomp_bang): ditto.
+
+ * test/ruby/test_utf16.rb (TestUTF16::test_chomp): raises exception.
+
+Fri Feb 29 15:16:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_rpartition): calculation was done in byte indexing.
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_start_with):
+ allow start_with? matching on broken strings.
+
+Fri Feb 29 15:12:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (opt_block_param): command can start just after block param
+ definition. [ruby-list:44479]
+
+Fri Feb 29 03:22:19 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_time.rb (test_readers): fix typo.
+ (test_strftime): "UTC" is also ok for time.gmtime.strftime("%Z").
+
+Fri Feb 29 02:50:07 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (str_new): remove encoding assumption of empty string.
+
+ * hash.c ( rb_f_getenv, env_fetch, env_inspect): result of ENV should
+ be always ASCII-8BIT.
+
+ * object.c (nil_to_s): nil.to_s should be US-ASCII.
+
+Fri Feb 29 02:24:22 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: forgot to update RELEASE_DATE
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/text.rb,
+ ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: remove adhoc check
+ of Ruby's features (use existence of some classes instead of
+ comparing with RUBY_VERSION)
+
+ * ext/tk/lib/tk/root.rb, ext/tk/lib/tk/autoload.rb: make TkRoot
+ (Tk::Root) unswitchable
+
+ * ext/tk/lib/multi-tk.rb: partial bug fix (still not work!!)
+
+Thu Feb 28 23:37:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI::Meta#meta_setup_encoding): use ASCII-8BIT
+ for charset unspecified non-text data.
+
+Thu Feb 28 22:19:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_capable): IMMEDIATE_P doesn't include Qnil and Qfalse.
+ use SPECIAL_CONST_P.
+
+Thu Feb 28 19:45:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (enc_find): check type of argument and convert to String
+ if it is StringValue. [ruby-cvs:22866]
+
+Thu Feb 28 18:07:52 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI::Meta#meta_setup_encoding): setup encoding
+ by charset.
+ (OpenURI::Meta#meta_add_field): call meta_setup_encoding when
+ content-type.
+
+Thu Feb 28 15:29:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast): scan coderange.
+
+Thu Feb 28 14:36:46 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_str_copy): removed.
+
+Thu Feb 28 13:51:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (stack_check): made flag per threads.
+
+ * thread.c (rb_thread_set_raised, rb_thread_reset_raised): prefixed.
+
+Thu Feb 28 11:43:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_flock): immediately returns on EAGAIN if
+ non-blocking. [ruby-core:15672]
+
+Thu Feb 28 11:23:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline_1): get rid of segfault. [ruby-dev:33938]
+
+Thu Feb 28 11:19:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_reverse_bang): removed unused variables.
+
+ * include/ruby/encoding.h (rb_str_coderange_scan_restartable): added
+ prototype.
+
+ * string.c (rb_str_coderange_scan_restartable, rb_str_times): removed
+ unused variables.
+
+ * string.c (rb_str_reverse_bang): ditto
+
+ * string.c (rb_enc_str_copy): unused now. may be used in future?
+
+Thu Feb 28 03:03:32 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/*: make default widget set
+ switchable between Tk (standard Tcl/Tk widget set) and
+ Ttk (Tile). Initial default widget set is Tk. Now, toplevel
+ widget classes are removed and defined as aliases.
+ For example, "TkButton" is an alias of the "Tk::Button" class.
+ Those aliases are replaced when switching default widget set.
+ "Tk.default_widget_set=" is the method for switching default
+ widget set. "Tk.default_widget_set = :Ttk" defines Ttk (Tile)
+ widget set as default. It means that "TkButton" denotes
+ "Tk::Tile::Button" class. And then, "TkButton.new" creates
+ a Tk::Tile::Button widget. Of course, you can back to use
+ standard Tk widgets as the default widget set by calling
+ "Tk.default_widget_set = :Tk", whenever you want. Based on
+ the feature, you can use Ttk widget styling engine on your
+ old Ruby/Tk application without modifying its source, if you
+ don't use widget options unsupported on Ttk widgets (At first,
+ call "Tk.default_widget_set = :Ttk", and next load and run
+ your application).
+ This is one step for supporting Tcl/Tk8.5 features.
+
+Wed Feb 27 22:55:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_coderange_scan_restartable): coderange scanning
+ for partial read.
+
+ * io.c (read_all): set coderange when not convert encoding.
+
+Wed Feb 27 03:55:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, enc/make_encmake.rb: load current mkmf.rb even if
+ cross-compiling.
+
+ * ext/extmk.rb, enc/make_encmake.rb, lib/mkmf.rb: need to be 1.8
+ compatible for cross-compiling.
+
+Tue Feb 26 16:53:13 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-calculate-indent): should distinguish
+ comment and # in strings. [ruby-dev:33874]
+
+Tue Feb 26 16:41:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (combi_len, rb_ary_product): check for overflow.
+ [ruby-Bugs-18355]
+
+Tue Feb 26 16:38:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (recursive_cmp): compare minimal length parts.
+
+Tue Feb 26 16:06:00 2008 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_{ec,dh,dsa,rsa}.c: Remove useless warnings.
+
+ * ext/openssl/ossl_asn1.c: Simplify code.
+
+ * ext/openssl/ossl_ssl_session.c Fix compiler warnings.
+ Undefine #id if SSL_SESSION_get_id is not supported.
+
+Tue Feb 26 15:50:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (value_expr_gen): removed inappropriate warning.
+ [ruby-core:15660]
+
+Tue Feb 26 15:43:42 2008 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (tokadd_escape): refactored. [ruby-core:15657]
+
+Tue Feb 26 15:30:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_eql, rb_ary_cmp): get rid of stack overflow with
+ self-recursive constructs. [ruby-Bugs-18356]
+
+Tue Feb 26 01:16:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (ROBJECT_NUMIV): renamed from ROBJECT_LEN.
+ (ROBJECT_IVPTR): renamed from ROBJECT_PTR.
+
+ * variable.c: follow the above renaming.
+
+ * object.c: ditto.
+
+ * gc.c: ditto.
+
+ * marshal.c: ditto.
+
+Mon Feb 25 17:30:29 2008 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/digest.c ext/openssl/lib/openssl/digest.rb:
+ Commit patch #9280 from Akinori MUSHA.
+ Simplify the OpenSSL::Digest class and make use of the
+ existing Digest framework.
+ Enhance performance.
+
+Mon Feb 25 15:33:29 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (big2str_karatsuba): initialize cache if not initialized.
+
+ * bignum.c (Init_Bignum): delayed initializing cache.
+ [ruby-dev:33930]
+
+Mon Feb 25 13:40:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (Init_process): share bignum objects for RLIM_INFINITY,
+ RLIM_SAVED_MAX and RLIM_SAVED_CUR if they are equal.
+
+Mon Feb 25 10:41:41 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * encoding.c (Encoding#dummy): minor grammatical fixes
+ in rdoc documentation.
+
+Mon Feb 25 00:01:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (clean-local): should be double-colon.
+
+Sun Feb 24 23:39:59 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, {bcc,win}32/Makefile.sub (clean-local): remove
+ intermediate files.
+
+ * cygwin/GNUmakefile.in (clean-local): remove def file.
+
+Sun Feb 24 06:49:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c (ruby_set_debug_option): separated ruby_each_words().
+
+ * util.c (ruby_each_words): extracted from ruby_set_debug_option().
+
+ * ruby.c (enable_option, disable_option): allow all for all known
+ features.
+
+ * ruby.c (proc_options): generalized enable/disable options.
+
+ * ruby.c (ruby_init_gems): take enabled flag. [ruby-core:14840]
+
+ * ruby.c (process_options): added --disable-rubyopt flag.
+
+ * include/ruby/util.h (ruby_each_words): prototype.
+
+Sun Feb 24 05:25:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): check if argument for -E exists.
+
+Sun Feb 24 05:09:43 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-label-indent): fix for labels inside
+ blocks in switch.
+
+Sun Feb 24 03:52:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (valid_filename): use O_EXCL to get rid of clobbering
+ existing files in race conditions.
+
+Sat Feb 23 21:36:13 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (ole_init_cp): should return value.
+
+Sat Feb 23 20:16:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (str_sublen): removed.
+
+ * string.c (rb_str_reverse, rb_str_reverse_bang): use
+ single_byte_optimizable.
+
+Sat Feb 23 19:25:18 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_copy_for_substr): renamed from
+ rb_enc_cr_str_copy.
+
+ * string.c: use rb_enc_cr_str_copy_for_substr and keep coderange.
+
+Sat Feb 23 18:50:17 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_encoding2cp): remove US-ASCII
+ mapping.
+
+Sat Feb 23 01:09:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rlimit_resource_type): new function.
+ (rlimit_resource_value): new function.
+ (proc_getrlimit): use rlimit_resource_type to accept
+ symbol and string as resource type.
+ (proc_setrlimit): use rlimit_resource_type and rlimit_resource_value
+ to accept symbol and string as resource type and values.
+
+Fri Feb 22 21:12:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_copy): check string's coderange is 7bit or
+ valid.
+
+Fri Feb 22 19:50:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (BIGZEROP): fix for longer Bignum zeros. [ruby-Bugs-17454]
+
+Fri Feb 22 15:47:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_mbclen): return minlen instead of 1 when
+ a character is not found properly.
+
+ * string.c (rb_enc_strlen): round up string length with fixed
+ multibyte encoding such as UTF-32.
+ (rb_enc_strlen_cr): ditto.
+ (rb_str_substr): fix substring with fixed multibyte encoding.
+ (rb_str_justify): check number of characters.
+
+Fri Feb 22 12:11:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_inspect): string of ascii incompatible encoding
+ should be escaped and returned as US-ASCII encoding.
+
+Fri Feb 22 11:16:55 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_substr): copy encoding although empty string.
+
+Fri Feb 22 04:48:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_times): empty string's coderange is CODERANGE_7BIT.
+
+ * string.c (rb_str_substr): ditto.
+
+ * encoding.c (rb_enc_compatible): empty string is compatible with not
+ only nonasciicompatible strings. [ruby-dev:33895]
+
+Thu Feb 21 17:15:15 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: Added basic support for passing options to String#encode
+ via a hash. Currently only one option, with one value, is supported:
+ invalid: :ignore (dropping invalid byte sequences instead of
+ producing an error). Option naming is not yet stable!
+
+ * test/ruby/test_transcode.rb: Added a single test for invalid: :ignore
+ option. Not more tests because most data does not yet distinguish
+ between INVALID and UNKNOWN.
+
+Thu Feb 21 16:35:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_unshift_m): expands enough for argc. [ruby-dev:33880]
+
+Thu Feb 21 14:49:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_set_encoding): uses current_file after check if next
+ input is available.
+
+Thu Feb 21 14:13:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_putc): invoke stdout method so that redefining putc
+ may take effect. [ruby-talk:291844]
+
+ * io.c (rb_f_puts): ditto.
+
+Thu Feb 21 11:10:49 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c: replace rb_enc_copy by rb_enc_cr_str_copy or
+ rb_enc_cr_str_exact_copy.
+
+Thu Feb 21 10:35:04 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_asciicompat): dummy encoding is not
+ ascii compatible. [ruby-dev:33878]
+
+Thu Feb 21 00:01:34 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RPATHFLAG): -R option of HP-UX ld is not for runtime
+ load path. [ruby-list:44600]
+
+Wed Feb 20 23:55:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_map_errno): exported.
+
+Wed Feb 20 23:28:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/readline/extconf.rb (rl_event_hook): workaround for native
+ windows.
+
+Wed Feb 20 19:42:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_associate_index): doesn't clear coderange
+ when new encoding equals to old one.
+
+Wed Feb 20 19:15:38 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_str_copy): added for wrapper for rb_enc_copy.
+ this also copy coderange when ptr and len is equal.
+
+ * string.c (rb_enc_cr_str_copy): added for wrapper for rb_enc_copy.
+ this always copy coderange.
+
+ * string.c (str_replace_shared): use rb_enc_str_copy.
+
+ * string.c (str_new3): don't rb_enc_copy because encoding is copied
+ at str_replace_shared.
+
+Wed Feb 20 13:08:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (parse_args): added --dir-mode, --script-mode and
+ --cmd-type options. [ruby-dev:33816]
+
+ * instruby.rb (parse_args): added bin-arch and bin-comm to install
+ type, for compiled files and script files.
+
+ * instruby.rb (parse_args): deal with make style command line macros,
+ and count as long style options if prefixed with INSTALL_.
+
+ * instruby.rb (makedirs): use $dir_mode. [ruby-dev:33805]
+
+ * instruby.rb (open_for_install): set file mode, which is now
+ permission mode instead of access mode.
+
+ * instruby.rb (bin-comm): installs scripts with replacing shebang
+ lines.
+
+Wed Feb 20 10:04:22 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (open_key_args): set arg->io even if no options passed.
+ [ruby-dev:33072]
+
+Tue Feb 19 21:11:49 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_strlen_cr): get length with coderange scan.
+
+ * string.c (str_strlen): use rb_enc_strlen_cr. [ruby-dev:33849]
+
+Tue Feb 19 20:49:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_raise_jump): moved adjustment for control frame.
+
+Tue Feb 19 18:34:32 2008 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (STACK_LENGTH) [SPARC] : 0x80 offset removed. [ruby-dev:33857]
+
+Tue Feb 19 14:27:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_event): prevent polling. based on
+ a patch from error errorsson in [ruby-Bugs-17675].
+
+Tue Feb 19 11:14:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_exec_node): no thread starts inside iseq compilation.
+
+ * eval.c (rb_f_raise): skip current control frame. [ruby-core:15589]
+
+ * insns.def (opt_div): raise as the ordinary method. [ruby-core:15589]
+
+Mon Feb 18 15:16:30 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_each_line): fix newline size.
+
+Mon Feb 18 13:06:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/irb/locale.rb (IRB::Locale#lc2kconv): check ja_JP.EUC-JP as well.
+
+Mon Feb 18 11:51:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (re_warn): defined to restore warnings for /[a-c-e]/, etc.
+
+Mon Feb 18 10:17:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/lib/expect.rb (IO#expect): check if peer is closed.
+ [ruby-Bugs-17940]
+
+Mon Feb 18 00:33:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_regsub): don't repeat repl twice with
+ "X".sub!(/./, sprintf("\\%c", 255)).
+
+Sun Feb 17 23:06:55 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/cgi.rb (CGI::escapeHTML): use gsub with Hash. [ruby-dev:33828]
+
+Sun Feb 17 21:38:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (ENC_CODERANGE_AND): fix broken case. [ruby-dev:33826]
+
+ * string.c (rb_str_times): fix broken case. [ruby-dev:33826]
+
+Sun Feb 17 20:45:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_prepare_re): add enable_warning parameter.
+ (rb_reg_adjust_startpos): disable warning by rb_reg_prepare_re.
+ (rb_reg_search): follow rb_reg_prepare_re parameter change.
+
+Sun Feb 17 20:12:41 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_regexp.rb: add tests to achieve over 90% test
+ coverage of re.c.
+
+Sun Feb 17 15:25:08 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (ENC_CODERANGE_AND): added.
+
+ * string.c (rb_str_plus, rb_str_times): keep coderange.
+
+ * parse.y (STR_NEW0) use rb_usascii_str_new.
+
+Sun Feb 17 14:07:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (str_strlen): rb_enc_strlen doesn't fail.
+
+Sun Feb 17 13:03:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (str_sublen): use rb_enc_strlen.
+
+Sun Feb 17 12:17:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/{euc_jp.c,gbk.c,iso_8859_1.c,iso_8859_11.c,iso_8859_13.c,
+ iso_8859_2.c,iso_8859_6.c,iso_8859_7.c,iso_8859_8.c,iso_8859_9.c,
+ shift_jis.c,windows_1251.c}: add document about encodings.
+
+ * enc/cp949.c: divided into new file.
+
+Sun Feb 17 10:59:04 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_quote): return US-ASCII string consistently.
+
+Sun Feb 17 09:17:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_times): reduce loop overhead.
+
+Sun Feb 17 03:37:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/re.h (struct rmatch_offset): new struct for character
+ offsets.
+ (struct rmatch): new struct.
+ (struct RMatch): reference struct rmatch.
+ (RMATCH_REGS): new macro.
+
+ * re.c (match_alloc): initialize struct rmatch.
+ (pair_byte_cmp): new function.
+ (update_char_offset): update character offsets.
+ (match_init_copy): copy regexp and character offsets.
+ (match_sublen): removed.
+ (match_offset): use update_char_offset.
+ (match_begin): ditto.
+ (match_end): ditto.
+ (rb_reg_search): make character offset updated flag false.
+ (match_size): use RMATCH_REGS.
+ (match_backref_number): ditto.
+ (rb_reg_nth_defined): ditto.
+ (rb_reg_nth_match): ditto.
+ (rb_reg_match_pre): ditto.
+ (rb_reg_match_post): ditto.
+ (rb_reg_match_last): ditto.
+ (match_array): ditto.
+ (match_aref): ditto.
+ (match_values_at): ditto.
+ (match_inspect): ditto.
+
+ * string.c (rb_str_subpat_set): use RMATCH_REGS.
+ (rb_str_sub_bang): ditto.
+ (str_gsub): ditto.
+ (rb_str_split_m): ditto.
+ (scan_once): ditto.
+
+ * gc.c (obj_free): free character offsets.
+
+Sun Feb 17 03:13:40 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/resource.rb: made version infos confirm to OS spec.
+
+ * {bcc32,win32}/Makefile.sub (*.rc): add dependency.
+
+Sat Feb 16 20:49:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_substr): optimized for UTF-8.
+
+Sat Feb 16 18:13:53 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_compatible): check encoding incapable arguments.
+
+Sat Feb 16 20:12:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (match_inspect): avoid SEGV with MatchData.allocate.inspect.
+
+Sat Feb 16 19:04:17 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (str_strlen): revert r15507. [ruby-dev:33810]
+
+Sat Feb 16 18:25:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (str_strlen): little more optimization.
+ (rb_enc_nth): remove needless variable 'c'.
+
+Sat Feb 16 18:00:13 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_compatible): empty strings are always compatible.
+
+ * string.c (rb_enc_cr_str_buf_cat): ditto.
+
+Sat Feb 16 16:14:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_strlen): UTF-8 character count moved to str_strlen.
+ (str_strlen): UTF-8 character count is only applicable for valid
+ UTF-8 string. [ruby-dev:33807]
+
+Sat Feb 16 13:16:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_sub_bang): stringize replacing hash values.
+ (str_gsub): ditto.
+
+Sat Feb 16 13:01:33 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_strlen): add search_nonascii like character
+ counter for UTF-8.
+
+Sat Feb 16 11:53:35 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_strlen): moved to string.c.
+
+ * string.c (rb_enc_strlen): use search_nonascii.
+ (str_strlen): don't use search_nonascii.
+
+Sat Feb 16 11:45:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/require_relative.rb: check require_relative call in eval.
+
+Sat Feb 16 08:00:01 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (process_options): set default_external before loading
+ libraries. [ruby-dev:33801]
+
+Sat Feb 16 05:49:54 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/iso_8859_{4,13}.c: Windows-1257 is replica of ISO-8859-13.
+
+ * string.c (single_byte_optimizable): rb_enc_mbminlen must be 1
+ when rb_enc_mbmaxlen is 1.
+
+Sat Feb 16 03:43:18 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_nth): moved to string.c.
+
+ * string.c (rb_enc_nth): moved from string.c. use search_nonascii
+ for ASCII compatible string.
+ (str_nth): wrong optimization removed to fix
+ "a".force_encoding("EUC-JP").slice!(0,10) returns
+ "a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+
+Sat Feb 16 00:21:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (rb_range_beg_len): check if responds to "begin" and "end"
+ methods for non-Range object.
+
+Fri Feb 15 20:29:42 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_init_cp): initialize WIN32OLE.codepage
+ according to Encoding.default_external.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Fri Feb 15 19:31:23 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/node.h (NODE_FL_NEWLINE): renamed from NODE_NEWLINE
+ to denote its a flag. [ruby-core:15529]
+
+Fri Feb 15 18:23:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_sub_bang, str_gsub): allows hash for replacement.
+
+Fri Feb 15 17:12:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_strlen): use search_nonascii() for performance.
+
+ * string.c (str_nth): ditto.
+
+Fri Feb 15 16:22:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (open_key_args): allow specifying both :mode and :encoding.
+
+Fri Feb 15 15:34:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_getbyte): new method.
+ (rb_str_setbyte): new method.
+
+Fri Feb 15 15:29:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/require_relative.rb: new file.
+
+Fri Feb 15 15:23:12 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_convert): check upper bound. a patch from
+ Daniel Luz at [ruby-Bugs-17910].
+
+Fri Feb 15 10:35:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_quote): set US-ASCII for ASCII-only string.
+ [ruby-dev:33785]
+
+Fri Feb 15 10:27:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {win,bcc}32/Makefile.sub (config.h): added HAVE_FTRUNCATE.
+ [ruby-dev:33786]
+
+Fri Feb 15 09:44:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reg_compile_gen): reg_fragment_setenc might not raise an
+ exception before rb_reg_compile.
+
+Fri Feb 15 07:37:40 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/paths.rb: Preserve compatibility with 1.8.
+
+Fri Feb 15 02:42:25 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ftruncate): check if available.
+
+ * file.c (rb_file_truncate): check if ftruncate instead of truncate.
+
+Fri Feb 15 02:40:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (sigsetmask): check when signal semantics is not POSIX.
+
+ * signal.c (USE_TRAP_MASK): set true if sigprocmask or sigsetmask is
+ available.
+
+Thu Feb 14 23:56:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.c (error_print): append a newline to rest lines.
+
+ * parse.y (reg_compile_gen): appends error message from
+ rb_reg_compile() to one from reg_fragment_setenc().
+
+Thu Feb 14 21:00:14 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_reopen): check STDIN, STDOUT and STDERR mode according to
+ stdio streams.
+
+Thu Feb 14 16:07:40 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_math.rb: actual-expected argument ordering for
+ test_math.rb fixed. a patch from Tadashi Saito
+ <shiba AT mail2.accsnet.ne.jp> in [ruby-dev:33770].
+
+Thu Feb 14 16:02:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_utime): inhibits with secure level 2 or higher.
+
+Thu Feb 14 12:30:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_preprocess_dregexp): use non-preprocessed regexp source
+ for result.
+
+Thu Feb 14 01:43:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/timeout.rb (Timeout::timeout): made sensitive to location on the
+ stack. [ruby-core:15458]
+
+Thu Feb 14 00:49:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (INSTRUBY_ARGS): pass mode to install. [ruby-dev:33766]
+
+ * instruby.rb (parse_args): added --data-mode and --prog-mode options.
+
+Thu Feb 14 00:02:19 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * eval.c (eval): allow to eval in a binding that has a singleton method.
+ [ruby-dev:33763]
+
+ * test/ruby/test_proc.rb: add tests to achieve over 70% test coverage
+ of proc.c.
+
+ * test/ruby/test_method.rb: ditto.
+
+Wed Feb 13 22:46:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/pathname.rb (Pathname#sub_ext): new method. [ruby-list:44608]
+
+Wed Feb 13 21:50:32 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (proc_curry): new method. [ruby-dev:33676]
+
+ * test/ruby/test_proc.rb: add tests for above.
+
+Wed Feb 13 20:48:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (RObject): add iv_index_tbl for shortcut of
+ RCLASS_IV_INDEX_TBL(rb_obj_class(obj)).
+ (ROBJECT_IV_INDEX_TBL): defined.
+
+ * object.c (init_copy): initialize iv_index_tbl in struct RObject.
+
+ * variable.c (ivar_get): use ROBJECT_IV_INDEX_TBL.
+ (rb_ivar_defined): ditto.
+ (obj_ivar_each): ditto.
+ (rb_obj_remove_instance_variable): ditto.
+ (rb_ivar_set): update iv_index_tbl in struct RObject.
+
+Wed Feb 13 16:21:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb: revert r15442. 2nd argument of String#sub parse
+ escapes. [ruby-dev:33726]
+
+ * bootstraptest/test_method.rb, enc/depend, instruby.rb, lib/mkmf.rb,
+ mkconfig.rb: revert r15443. ditto.
+
+Wed Feb 13 11:20:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: fix typo.
+
+ * lib/mkmf.rb: revert r15443. "\\1#{sep}\\2" is wrong if sep is ended
+ with "\\".
+
+Wed Feb 13 08:57:21 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/inline.rb: Allow inline markup to have a leading
+ '#' or '\', or trailing punctuation. i.e. *#freeze?*, *\foo?*.
+
+Wed Feb 13 07:21:23 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/to_html_hyperlink.rb: Moved linking to to_html.rb, move
+ crossref to to_html_crossref.rb
+
+Wed Feb 13 04:15:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (arg_concat_gen, arg_append_gen): optimize for array push.
+
+ * parse.y (arg_concat_gen): optimize for array concat.
+
+ * parse.y (arg_add_gen): removed since identical to arg_append_gen.
+
+Tue Feb 12 21:04:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (exc_list): should use mrhs if non array.
+
+Tue Feb 12 20:32:50 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/rational.rb (floor, ceil, truncate, round): do not use
+ definitions of Numeric.
+
+ * lib/rational.rb (to_i): should returns truncated self.
+
+ * lib/complex.rb (numerator): requires
+ Integer#{numerator,denominator}.
+
+ * lib/complex.rb (quo): do not use definition of Numeric.
+
+ * lib/complex.rb (>, >=, <, <=, between?, div, divmod, modulo,
+ floor, ceil, truncate, round): undef'ed.
+
+ * lib/mathn.rb (Rational#inspect): removed.
+
+Tue Feb 12 16:48:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (args, mrhs): flattens literal array splats.
+
+ * parse.y (exc_list): splat literal array.
+
+Tue Feb 12 15:27:19 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * bootstraptest/runner.rb, bootstraptest/test_method.rb, enc/depend,
+ instruby.rb, lib/mkmf.rb, lib/test/unit/util/procwrapper.rb,
+ mkconfig.rb, sample/test.rb, template/vm.inc.tmpl,
+ test/ruby/test_stringchar.rb: fixes around String#gsub.
+
+Tue Feb 12 15:11:47 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/lib/json/pure/generator.rb,
+ ext/json/lib/json/pure/parser.rb, ext/openssl/lib/openssl/x509.rb,
+ ext/win32ole/sample/olegen.rb, lib/date/format.rb, lib/irb/context.rb,
+ lib/irb/workspace.rb, lib/net/http.rb, lib/net/imap.rb,
+ lib/rdoc/generator.rb, lib/rdoc/markup/to_html.rb,
+ lib/rdoc/markup/to_latex.rb, lib/rdoc/parsers/parse_c.rb,
+ lib/rdoc/ri/formatter.rb, lib/rexml/parsers/baseparser.rb,
+ lib/rexml/quickpath.rb, lib/rexml/text.rb, lib/rss/parser.rb,
+ lib/uri/common.rb, lib/uri/generic.rb, lib/webrick/httpresponse.rb,
+ lib/webrick/httpservlet/filehandler.rb, lib/yaml/baseemitter.rb,
+ lib/yaml/encoding.rb: performance tuning around String#gsub.
+
+Tue Feb 12 12:16:45 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_hash_cmp): lighter version of rb_str_cmp() for
+ hash comparison function.
+
+ * hash.c (rb_any_cmp): use rb_str_hash_cmp().
+
+ * string.c (rb_str_casecmp): should return nil for incompatible
+ comparison.
+
+Tue Feb 12 12:13:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * instruby.rb: specify file mode to install. a patch from
+ pegacorn <subscriber.jp AT gmail.com> in [ruby-dev:33699].
+
+Tue Feb 12 11:38:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (rb_num_coerce_bin): add ID argument to specify
+ caller's method name. [ruby-dev:33663]
+
+ * numeric.c (rb_num_coerce_cmp): ditto.
+
+ * numeric.c (rb_num_coerce_relop): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (DoSomeOne): add function name argument.
+
+Tue Feb 12 10:25:02 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/rdoc.rb: Wrap parse_files' read in version check for
+ backwards compatibility.
+
+Tue Feb 12 10:15:14 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (load_file): enc must effect source encoding.
+ [ruby-core:15496]
+
+Tue Feb 12 10:16:47 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/paths.rb: Restore require rubygems check.
+
+Tue Feb 12 02:42:27 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_include): specialize single character string
+ case (e.g. (?a ..?z).include(?x)) for performance.
+ [ruby-core:15481]
+
+ * string.c (rb_str_upto): specialize single character case.
+
+ * string.c (rb_str_hash): omit coderange scan for performance.
+
+ * object.c (rb_check_to_integer): check Fixnum first.
+
+ * object.c (rb_to_integer): ditto.
+
+ * string.c (rb_str_equal): inline memcmp to avoid unnecessary
+ rb_str_comparable().
+
+ * parse.y (rb_intern2): use US-ASCII encoding.
+
+ * parse.y (rb_intern_str): ditto.
+
+Mon Feb 11 17:21:18 2008 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb:
+ 0.2.3 -> 0.2.4.
+
+ * lib/rss/maker.rb, lib/rss/maker/, test/rss/test_maker_2.0.rb:
+ fixed a bug that RSS::Maker.make("0.9")'s item doesn't make some
+ elements if description is missed.
+ Reported by Michael Auzenne. Thanks!!!
+
+ * lib/rss/maker/0.9.rb, test/rss/test_maker_0.9.rb:
+ RSS::Maker.make("0.9") generates RSS 0.92 not RSS 0.91.
+
+Mon Feb 11 10:43:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (load_file): the encoding of DATA follows the source
+ file encoding. [ruby-dev:33693]
+
+Mon Feb 11 06:50:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_pack.rb: fix tests for 64bit CPU.
+
+ * test/ruby/test_bignum.rb: ditto.
+
+ * test/ruby/test_file_exhaustive.rb: ditto.
+
+ * test/ruby/test_integer.rb: ditto.
+
+ * test/ruby/test_time.rb: ditto.
+
+ * test/ruby/test_numeric.rb: ditto.
+
+ * test/ruby/test_fixnum.rb: ditto.
+
+Mon Feb 11 00:18:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/benchmark.rb (Job::Benchmark#item): fix typo.
+
+Sun Feb 10 21:58:32 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (encdb, transdb): depend on $(PREP).
+
+Sun Feb 10 16:58:20 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*, test/rubygems*, gem_prelude.rb: Import RubyGems
+ r1601. [ruby-core:15381]
+
+Sun Feb 10 15:07:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc32,win32,wince}/Makefile.sub (MISSING): added cbrt.obj.
+
+Sun Feb 10 12:58:33 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/code_objects.rb: Make some attributes accessible for reuse.
+ * lib/rdoc/generator/html.rb: Pull out ContextUser classes and related
+ methods for reuse.
+ * lib/rdoc/generator.rb: Move ContextUser classes to
+ RDoc::Generator::Context for reuse.
+ * lib/rdoc/rdoc.rb: Make RDoc::RDoc initialization a little easier.
+ * lib/rdoc/options.rb: Make RDoc::Options easier to use without
+ parsing an ARGV.
+ * lib/rdoc/markup/to_*.rb: Subclass RDoc::Markup::Formatter.
+ * lib/rdoc/markup/formatter.rb: Add RDoc::Markup::Formatter to make
+ RDoc markup conversion easier.
+ * lib/rdoc/markup/fragments.rb: Make RDoc::Markup::ListItem easier to
+ test.
+ * lib/rdoc/markup/to_html_hyperlink.rb: Pulled out of the HTML
+ generator for easier reusability.
+ * lib/rdoc/markup.rb: Fix bug with labeled lists containing bullet
+ lists.
+ * lib/rdoc/generators/html/html.rb: Fix Constant display.
+
+Sat Feb 9 23:44:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/tgamma.c (tgamma): use lgamma_r if available.
+
+Sat Feb 9 23:22:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/extconf.rb: simplified the condition.
+
+Sat Feb 9 21:20:28 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_math.rb: add tests for Math.gamma, Math.lgamma and
+ Math.cbrt, and use assert_in_delta instead of assert.
+
+Sat Feb 9 18:34:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * math.c (math_cbrt): new method Math.cbrt.
+
+ * configure.in (cbrt): check for replacement functions.
+
+ * missing/cbrt.c: new file.
+
+Sat Feb 9 17:51:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): use strtod() for more
+ precision. [ruby-talk:290296]
+
+ * ext/bigdecimal/bigdecimal.c (BASE_FIG): made constant.
+
+ * ext/bigdecimal/extconf.rb: ditto. [ruby-dev:33658]
+
+Sat Feb 9 12:06:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/tgamma.c (tgamma): add error check.
+
+Sat Feb 9 11:47:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * math.c (math_gamma): add error check.
+ (math_lgamma): ditto.
+
+Sat Feb 9 11:09:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/lgamma_r.c (lgamma_r): return HUGE_VAL for non-positive
+ integers.
+
+Sat Feb 9 10:03:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_new4): copy encoding from orig, instead of shared
+ one.
+
+Sat Feb 9 01:01:38 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (lchmod_internal): fix warning cast from pointer to integer of
+ different size.
+
+Sat Feb 9 00:44:52 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb.rb (IRB::Irb::eval_input): rescues Interrupt and other than
+ SystemExit and SignalException. [ruby-core:15359]
+
+Fri Feb 8 23:51:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/lgamma_r.c (lgamma_r): use smaller argument for sin function.
+
+Fri Feb 8 22:10:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI.open_http): rescue URI::InvalidURIError by
+ URI.parse for location URI.
+
+Fri Feb 8 19:22:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (rb_str_derive): uses rb_str_subseq() for byte
+ length. [ruby-dev:33653]
+
+ * ext/iconv/iconv.c (iconv_convert): added toidx argument to set
+ encoding of successfully converted string. [ruby-dev:33221]
+
+Fri Feb 8 15:09:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (xsystem): expand macros like as make.
+
+Fri Feb 8 09:27:57 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/ri/driver.rb (read_yaml): remove SM* for compatibility.
+
+Fri Feb 8 00:07:24 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_hash.rb: follow the change of Hash#flatten.
+
+ * test/ruby/test_time.rb: add tests to achieve over 70% test coverage
+ of time.c.
+
+ * test/ruby/test_prec.rb: ditto over 90% for prec.c.
+
+Thu Feb 7 19:11:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_dup): reverted unneeded change. [ruby-dev:33634]
+
+ * string.c (rb_str_replace): makes frozen shared string before
+ sharing.
+
+Thu Feb 7 16:33:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_reopen): don't change access mode for stdin, stdout and
+ stderr. [ruby-core:15360]
+
+Thu Feb 7 16:33:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_replace_shared): replaces string with sharing.
+
+ * string.c (rb_str_new4, rb_str_associate, rb_str_associated): allows
+ associated strings shared.
+
+ * string.c (rb_str_dup, rb_str_substr, rb_str_replace): shares memory.
+ [ruby-core:15400]
+
+Thu Feb 7 15:42:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_end_with): compares with the suffix.
+
+Thu Feb 7 15:03:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/korean.c: add support for CP949 by Park Ji-In.
+ [ruby-dev:33626]
+
+Thu Feb 7 11:11:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * missing/lgamma_r.c (lgamma_r): some compilers don't permit dividing
+ by literal 0.0. use const variable instead.
+
+ * {bcc32,win32,wince}/Makefile.sub (MISSING): add lgamma_r.obj and
+ tgamma.obj.
+
+Thu Feb 7 10:39:21 2008 Tanaka Akira <akr@fsij.org>
+
+ * math.c (math_gamma): new method Math.gamma.
+ (math_lgamma): new method Math.lgamma.
+
+ * include/ruby/missing.h (tgamma): declared unless HAVE_TGAMMA.
+ (lgamma_r): declared unless HAVE_LGAMMA_R.
+
+ * configure.in (tgamma): check for replacement functions.
+ (lgamma_r): ditto.
+
+ * missing/tgamma.c: new file. based on gamma.c from
+ "C-gengo niyoru saishin algorithm jiten" (New Algorithm handbook
+ in C language) (Gijyutsu hyouron sha, Tokyo, 1991)
+ by Haruhiko Okumura.
+
+ * missing/lgamma_r.c: ditto.
+
+ * LEGAL (missing/tgamma.c): describe as public domain.
+ (missing/lgamma_r.c): ditto.
+
+Thu Feb 7 09:05:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_enc_from_index): BINARY does not
+ have in-bound encoding index.
+
+Thu Feb 7 04:26:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/korean.c: add EUC-KR conversion support by Park Ji-In.
+ [ruby-dev:33621]
+
+Wed Feb 6 01:47:39 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_flatten): do not flatten recursively by default.
+ [ruby-dev:33603]
+
+Wed Feb 6 00:50:19 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insns.def (adjuststack): never use INC_SP with minus value because
+ some compilers cannot deal it correctly. use DEC_SP instead.
+
+Wed Feb 6 00:48:41 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_hash.rb: add tests to achieve over 90% test coverage
+ of hash.c.
+
+ * test/ruby/test_env.rb: ditto.
+
+Wed Feb 6 00:24:49 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * hash.c (env_rassoc): remove access to free'd environment on mswin32.
+
+Tue Feb 5 21:57:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm.c (rb_call_super): pass a passed block when super is called via
+ rb_call_super. [ruby-dev:33598]
+
+Tue Feb 5 11:14:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (INSTALL_DIRS, install_dirs): added BINDIR.
+
+ * lib/mkmf.rb (install_files): rejects files matching to
+ $NONINSTALLFILES.
+
+ * lib/mkmf.rb (init_mkmf): defaults $NONINSTALLFILES to backup and
+ temporary files.
+
+Mon Feb 4 21:52:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (DelegateClass): use define_method instead of
+ module_eval to improve performance. [ruby-dev:33586]
+
+Mon Feb 4 16:44:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (darwin): NSIG is not defined if _XOPEN_SOURCE > 500L.
+ [ruby-dev:33584]
+
+Mon Feb 4 14:51:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_enc_symname2_p): support "!", "!=" and "!~".
+ [ruby-dev:33592]
+
+Mon Feb 4 13:58:42 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator.preserved, DelegateClass.methods): extend
+ shouldn't be delegated. [ruby-dev:32987], etc.
+
+Mon Feb 4 08:59:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::[]): no more transition
+ extend(CGI::Value). a patch from <tommy AT tmtm.org> in
+ [ruby-dev:33583].
+
+Sun Feb 3 21:13:13 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_numeric.rb: forgot to add this (at r15360).
+
+ * test/ruby/test_file_exhaustive.rb: add tests to achieve over 80% test
+ coverage of file.c.
+
+Sat Feb 2 20:06:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/benchmark.rb (Benchmark::realtime): make Benchmark#realtime
+ a bit faster. a patch from Alexander Dymo <dymo AT ukrpost.ua> in
+ [ruby-core:15337].
+
+Sat Feb 2 17:40:21 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * time.c (time_cmp): Time.<=> no longer supports comparison with
+ numeric. [ruby-core:15332]
+
+Sat Feb 2 09:53:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (darwin): disabled fat-binary support which confuses
+ configure much, since ``universal'' implies hidden cross-compiling.
+ TODO: ruby and libruby.bundle might be possible to bound with `lipo'
+ after builds for each archs. Anyway, config.h and rbconfig.rb must
+ be separated definitely at least.
+
+Sat Feb 2 09:28:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * random.c (limited_big_rand): fix buffer overflow when SIZEOF_BDIGITS
+ is 2. fixed by Kenta Murata. [ruby-dev:33565]
+
+Fri Feb 1 21:42:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (darwin): _XOPEN_SOURCE is necessary to make ucontext_t
+ consistent with the library implementation of MacOS X 10.5.
+ [ruby-dev:33461]
+
+ * configure.in (darwin): ucontext on PowerPC MacOS X 10.5 is broken.
+
+Fri Feb 1 11:44:22 2008 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb (C_ESC): use octal escape to avoid
+ "\x09for (;;) ..." to be interpret the first character 0x9f.
+
+Thu Jan 31 23:06:42 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_bignum.rb: suppress warnings during test.
+
+ * test/ruby/test_enum.rb: ditto.
+
+ * test/ruby/test_integer.rb: add tests to achieve over 90% test
+ coverage of numeric.c.
+
+ * test/ruby/test_float.rb: ditto.
+
+ * test/ruby/test_fixnum.rb: ditto.
+
+ * test/ruby/test_numeric.rb: ditto.
+
+ * test/ruby/test_pack.rb: add tests to achieve over 90% test coverage
+ of pack.c.
+
+Thu Jan 31 17:30:42 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * marshal.c (r_object0): no need to call r_entry for immediate values.
+
+Thu Jan 31 15:46:30 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/formatter.rb (output): add accessor.
+
+ * lib/rdoc/ri/display.rb (page): replace @formatter.output instead of
+ $stdout.
+
+Thu Jan 31 15:06:50 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * marshal.c (r_object0): call r_entry/r_leave to call proc when
+ TYPE_FIXNUM, TYPE_NIL, TYPE_TRUE, TYPE_FALSE, TYPE_SYMBOL.
+
+Thu Jan 31 14:03:38 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/display.rb (display_method_list, display_class_list):
+ use @formatter.raw_print_line instead of puts.
+
+ * lib/rdoc/ri/driver.rb (select_methods): new method to collect all
+ instance/class methods which match with passed pattern.
+
+ * lib/rdoc/ri/driver.rb (run): use class_cache's result directly
+ instead of select_classes' because it's removed now.
+
+ * lib/rdoc/ri/driver.rb (run): search methods when passed name is not
+ class name. [ruby-core:15309]
+
+Thu Jan 31 08:31:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ext/extmk.rb, instruby.rb): inlined $(MAKE) so that can
+ be executed even with -n.
+
+Thu Jan 31 06:24:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_close_read): replaces fptr with the tied writer if
+ duplex.
+
+ * io.c (rb_io_close_write): unties the tied IO for writing if duplex.
+ [ruby-dev:33532]
+
+Thu Jan 31 02:22:04 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (open_key_args): allow encoding key to take two encoding
+ names. a patch from <rubikitch AT ruby-lang.org>. [ruby-dev:33540]
+
+Thu Jan 31 02:15:49 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (dsym): allow empty symbols. [ruby-core:15248]
+
+Thu Jan 31 00:01:51 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (select_internal): fix SEGV by `select [STDIN],nil,[STDIN]'.
+ fixed by Petr Chromec.
+ http://rubyforge.org/tracker/index.php?func=detail&aid=17275&group_id=426&atid=1698
+
+Wed Jan 30 17:32:49 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/*.c: add GB12345, UCS-{2,4}{BE,LE}.
+
+Wed Jan 30 14:32:18 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/driver.rb (cache_file_for): shouldn't use `:' in filename.
+
+Wed Jan 30 14:27:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_succ): use wrapped character as a carry for
+ ASCII incompatible encoding.
+
+Wed Jan 30 12:26:59 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/utf_16be.c (UTF16_IS_SURROGATE_FIRST): avoid branch.
+ (UTF16_IS_SURROGATE_SECOND): ditto.
+ (UTF16_IS_SURROGATE): defined.
+ (utf16be_mbc_enc_len): validation implemented.
+
+ * enc/utf_16le.c (UTF16_IS_SURROGATE_FIRST): avoid branch.
+ (UTF16_IS_SURROGATE_SECOND): ditto.
+ (UTF16_IS_SURROGATE): defined.
+ (utf16le_mbc_enc_len): validation implemented.
+
+Wed Jan 30 12:06:43 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * bignum.c (rb_cstr_to_inum): '0_2' is a valid representation.
+
+Wed Jan 30 11:57:50 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * bootstraptest/runner.rb: fix -I../../hoge case.
+
+Wed Jan 30 01:25:16 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_range.rb: add tests to achieve over 90% test coverage
+ of range.c.
+
+Wed Jan 30 00:09:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/euc_tw.c (euctw_mbc_enc_len): validation implemented.
+
+Tue Jan 29 22:58:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_enumerator.rb: add tests to achieve over 90% test
+ coverage of enumerator.c.
+
+ * test/ruby/test_enum.rb: add for enum.c.
+
+Tue Jan 29 22:29:48 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enumerator.c: fix documents.
+
+Tue Jan 29 22:27:11 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * range.c: fix SEGV by ("a" .. "z").step(2 ** 30) { }.
+
+Tue Jan 29 21:59:16 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/euc_tw.c (euctw_islead): 0x8e is a leading byte.
+
+Tue Jan 29 21:55:35 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c: move object allocation out of blocking_region.
+ [ruby-dev:33139]
+
+Tue Jan 29 20:37:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/make_transdb.rb: add for make transdb.h.
+
+ * dmytranscode.c: add for miniruby.
+
+ * enc/gbk.c (gbk_left_adjust_char_head, gbk_is_allowed_reverse_match):
+ fix odd regexp match. [ruby-dev:33502]
+
+Tue Jan 29 20:17:06 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32}/Makefile.sub (MINIOBJS): add dmytranscode.$(OBJEXT).
+
+Tue Jan 29 19:39:40 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in, common.mk: fix rule for dmytranscode.o.
+
+Tue Jan 29 19:03:16 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/japanese.c (rb_to_Windows_31J): to 'Windows-31J'.
+
+ * common.mk: add rules for transdb.h.
+
+ * transcode.c (init_transcoder_table): use transdb.h.
+
+Tue Jan 29 18:05:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (encdb_{replicate,alias,dummy,declare}): define only if
+ NO_ENCDB_H is not defined.
+
+Tue Jan 29 17:54:11 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/gbk.c (EncLen_gbk): too short. [ruby-dev:33497]
+
+Tue Jan 29 17:25:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dmyencoding.c, encoding.c (enc_init_db, NO_ENCDB_H):
+ miniruby doesn't use encdb.
+
+ * common.mk: encdb.h use miniruby.
+
+Tue Jan 29 17:37:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/gb18030.c (gb18030_mbc_enc_len): validation implemented.
+
+Tue Jan 29 17:01:07 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/ifchange: remove $temp when unchanged.
+
+Tue Jan 29 16:59:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * insns.def (toregexp): generate a regexp from strings instead of one
+ string.
+
+ * re.c (rb_reg_new_ary): defined for toregexp. it concatenates
+ strings after each string is preprocessed.
+
+ * compile.c (compile_dstr_fragments): split from compile_dstr.
+ (compile_dstr): call compile_dstr_fragments.
+ (compile_dregx): defined for dynamic regexp.
+ (iseq_compile_each): use compile_dregx for dynamic regexp.
+
+ [ruby-dev:33400]
+
+Tue Jan 29 16:25:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk, ext/extmk.rb: always make encdb.h.
+
+Tue Jan 29 12:53:39 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/gbk.c: add GBK, CP936 and CP949.
+
+ * enc/euc_kr.c: remove CP949.
+
+ * enc/euc_cn.c: remove CP936 and rename to gb2312.c
+
+ * enc/gb2312.c: GB2312 is preferred MIME name.
+
+Tue Jan 29 03:01:29 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (reg_fragment_setenc_gen): US-ASCII script special code.
+
+ * parse.y (reg_fragment_check_len, reg_compile_gen): no need such
+ trick.
+ [ruby-dev:33399]
+
+ * test/ruby/test_m17n.rb (test_regexp_usacii_literal): add tests.
+
+Tue Jan 29 01:38:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk ($(srcdir)/revision.h): no need to show ifchange execution
+ because ifchange echos updated or unchanged.
+
+Tue Jan 29 01:26:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (up): use last changed revision.
+
+ * common.mk (up): force to update revision.h.
+
+Tue Jan 29 00:12:17 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): should be US-ASCII.
+
+Tue Jan 29 00:10:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-set-encoding): updates magic comment.
+
+Mon Jan 28 23:47:52 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (rb_id2str, ripper_initialize, Init_ripper):
+ use rb_usascii_str_new2. [ruby-dev:33449]
+
+Mon Jan 28 19:37:08 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (ole_cp2encoding): new function.
+
+ * ext/win32ole/win32ole.c (ole_wc2vstr, ole_variant2val, fole_missing):
+ set encoding to result.
+
+ * ext/win32ole/win32ole.c (fole_s_set_code_page, Init_win32ole): set
+ default encoding.
+ [ruby-dev:33433]
+
+Mon Jan 28 11:17:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c, parse.y, re.c: use rb_ascii8bit_encoding.
+
+Mon Jan 28 17:54:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_7.h: add dummy encoding UTF-7 and its alias CP65000.
+
+Mon Jan 28 17:41:19 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/utf_8.c: add alias CP65001.
+
+Mon Jan 28 15:33:23 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/big5.c (big5_mbc_enc_len): validation implemented.
+
+Mon Jan 28 13:02:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/euc_kr.c (euckr_mbc_enc_len): validation implemented.
+
+Mon Jan 28 11:24:49 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_str_new): encoding of UTF-8 literal string in
+ US-ASCII script is UTF-8. [ruby-dev:33406]
+
+Mon Jan 28 10:25:59 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_m17n.rb (test_magic_comment): add test.
+
+Mon Jan 28 09:34:54 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (help): use double quotes for nmake.
+
+Mon Jan 28 00:39:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_set_encode): check if encoding is ASCII compatible.
+
+Mon Jan 28 01:21:15 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_open_file): should check NUL in path.
+ <http://www.rubyist.net/~matz/20080125.html#c01>.
+
+ * io.c (rb_io_s_popen): ditto.
+
+ * io.c (rb_io_reopen): ditto.
+
+ * io.c (next_argv): ditto.
+
+Sun Jan 27 23:33:35 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): fix for left justify flag.
+
+ * sprintf.c (rb_str_format): zero-precision zero bug revised.
+ [ruby-dev:33419]
+
+Sun Jan 27 23:20:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h: precise mbclen API redesigned to avoid
+ inline functions.
+ (onigenc_mbclen_charfound): removed.
+ (onigenc_mbclen_needmore): removed.
+ (onigenc_mbclen_recover): removed.
+ (ONIGENC_MBCLEN_CHARFOUND): removed.
+ (ONIGENC_MBCLEN_CHARFOUND_P): defined.
+ (ONIGENC_MBCLEN_CHARFOUND_LEN): defined.
+ (ONIGENC_MBCLEN_INVALID): removed.
+ (ONIGENC_MBCLEN_INVALID_P): defined.
+ (ONIGENC_MBCLEN_NEEDMORE): removed.
+ (ONIGENC_MBCLEN_NEEDMORE_P): defined.
+ (ONIGENC_MBCLEN_NEEDMORE_LEN): defined.
+ (ONIGENC_MBC_ENC_LEN): use onigenc_mbclen_approximate.
+
+ * regenc.c (onigenc_mbclen_approximate): defined.
+
+ * include/ruby/encoding.h (MBCLEN_CHARFOUND): removed.
+ (MBCLEN_INVALID): removed.
+ (MBCLEN_NEEDMORE): removed.
+ (MBCLEN_CHARFOUND_P): defined.
+ (MBCLEN_INVALID_P): defined.
+ (MBCLEN_NEEDMORE_P): defined.
+ (MBCLEN_CHARFOUND_LEN): defined.
+ (MBCLEN_NEEDMORE_LEN): defined.
+
+ * encoding.c: use new API.
+
+ * re.c: ditto.
+
+ * string.c: ditto.
+
+ * parse.y: ditto.
+
+Sun Jan 27 22:55:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (value_expr_gen): reverted r12880. [ruby-dev:33388]
+
+Sun Jan 27 22:33:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): fix for octal with precision.
+ [ruby-dev:33411]
+
+Sun Jan 27 22:31:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-mode-set-encoding): automatically insert
+ encoding magic comment.
+
+ * misc/ruby-mode.el (ruby-mode): set ruby-mode-set-encoding to buffer
+ local before-save-hook.
+
+Sun Jan 27 19:51:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_inspect): avoid exception by
+ "\#\xa1".force_encoding("euc-jp").inspect.
+
+Sun Jan 27 19:07:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_succ): warning suppressed.
+
+Sun Jan 27 18:18:13 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (help): show major targets.
+
+Sun Jan 27 17:54:48 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c: raise error when no output encoding is given.
+
+Sun Jan 27 17:20:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_succ): don't increment/decrement codepoint.
+
+Sun Jan 27 16:03:42 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex#buf_input): use chars.to_a.
+
+Sun Jan 27 16:27:22 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8: update nkf.
+
+Sun Jan 27 16:25:27 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * re.c (rb_reg_source): set encoding as regexp encoding.
+
+Sun Jan 27 05:56:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_preprocess): force fixed encoding when ASCII
+ incompatible source string.
+
+Sat Jan 26 23:46:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): zero-precision zero should be empty.
+ [ruby-dev:33363]
+
+ * sprintf.c (rb_str_format): not prepend octal prefix to negative or
+ zero value. [ruby-dev:33363], [ruby-dev:33367]
+
+Sat Jan 26 23:42:15 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assignable_gen, keyword_to_name): __ENCODING__ was missing.
+
+Sat Jan 26 19:08:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (w_object): dump string encoding in USERDEF.
+ [ruby-dev:33401]
+
+Sat Jan 26 17:42:23 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): validate argument expr of "next"
+ statement.
+
+ * bootstraptest/test_syntax.rb: add a test.
+
+Sat Jan 26 17:22:46 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, compile.h: fix to calculate correct stack depth
+ at each instruction.
+
+Sat Jan 26 09:41:02 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/doctype.rb, test/rss/test_maker_itunes.rb: replace
+ multi-byte string.
+
+ * test/json/{test_json.rb, test_json_unicode.rb}:
+ add magic comment.
+
+Sat Jan 26 09:30:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_usascii_encindex): added prototype.
+
+ * include/ruby/intern.h (rb_usascii_str_new, rb_usascii_str_new2):
+ ditto.
+
+Sat Jan 26 09:17:13 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_new): set US-ASCII and ENC_CODERANGE_7BIT when
+ empty string (len == 0).
+
+Sat Jan 26 03:41:53 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_initialize): set default script encoding as US-ASCII.
+
+ * ruby.c (load_file): ditto.
+
+ * ruby.c (process_options): set script encoding of -e from locale
+ except when -K is specified.
+
+ * ruby.c (load_file): set script encoding of stdin from locale except
+ when -K is specified. [ruby-dev:33375]
+
+Sat Jan 26 02:51:06 2008 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, compile.h: fix stack pointer issues.
+ calculate correct stack depth at compile time.
+
+ * insns.def (emptstack): remove it and add a new insn "adjuststack".
+
+ * bootstraptest/test_knownbug.rb: move/remove fixed test.
+
+ * bootstraptest/test_syntax.rb: ditto.
+
+Sat Jan 26 00:17:18 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_usascii_new{,2}: defined.
+ (rb_str_new): set US-ASCII and ENC_CODERANGE_7BIT when empty
+ string.
+
+ * encoding.c (rb_usascii_encoding, rb_usascii_encindex): defined.
+ (rb_enc_inspect, enc_name, rb_locale_charmap, rb_enc_name_list_i):
+ use rb_str_ascii_new.
+
+ * array.c (recursive_join, inspect_ary): ditto.
+
+ * object.c (nil_to_s, nil_inspect, true_to_s, false_to_s,
+ rb_mod_to_s): ditto.
+
+ * hash.c (inspect_hash, rb_hash_inspect, rb_f_getenv, env_fetch,
+ env_clear, env_to_s, env_inspect): ditto.
+
+ * numeric.c (flo_to_s, int_chr, rb_fix2str): ditto.
+
+ * bignum.c (rb_big2str): ditto.
+
+ * file.c (rb_file_ftype, rb_file_s_dirname, rb_file_s_extname,
+ file_inspect_join, Init_file): ditto.
+
+ * test/ruby/test_ruby_m17n.rb: add checks for encoding of string.
+
+Sat Jan 26 01:35:46 2008 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (r_byte): use getbyte instead of getc.
+ (marshal_load): ditto.
+ [ruby-dev:33264]
+
+Sat Jan 26 00:43:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_getline_fast): don't care ASCII incompatible encoding.
+ (prepare_getline_args): generate a newline according to IO encoding
+ when necessary.
+ (rb_io_getline_1): call rb_io_getline_fast only for ASCII
+ compatible encoding.
+
+Fri Jan 25 21:49:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_buf_cat_ascii): use rb_enc_cr_str_buf_cat.
+
+Fri Jan 25 19:38:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (version.$(OBJEXT)): depends on $(srcdir)/revision.h.
+
+ * common.mk (revision.h): extracts revision number with ``svn info''.
+
+ * common.mk (up): target to update from the repository.
+
+ * Makefile.in, {win,bcc}32/Makefile.sub (IFCHANGE): tool to update a
+ file if changed.
+
+ * tool/ifchange: for unixen.
+
+ * win32/ifchange.bat: some fix
+
+Fri Jan 25 17:12:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file): set default to ASCII-8BIT explicitly if -K
+ option is not given.
+
+Fri Jan 25 16:31:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_str_buf_cat_ascii): declared.
+
+ * string.c (rb_str_buf_cat_ascii): defined.
+
+ * re.c (rb_reg_s_union): use rb_str_buf_cat_ascii to support ASCII
+ incompatible encoding.
+
+Fri Jan 25 16:11:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options, load_file, rb_load_file): propagates script
+ encoding by -K to libraries. [ruby-dev:33156]
+
+Fri Jan 25 15:56:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (cmdline_arguments): split argc and argv from cmdline_options.
+
+ * ruby.c (process_options): not set encoding of -e option from -E
+ option if they are not compatible.
+
+Fri Jan 25 13:15:23 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (proc_options, process_options, load_file): shouldn't effect
+ --encoding to script encoding. [ruby-dev:33169]
+
+Fri Jan 25 10:31:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * */*.bat: set svn:mime-type to text/batch.
+
+Thu Jan 24 23:23:06 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * enum.c (enum_one, enum_take_while, enum_drop_while): fix documents.
+
+Thu Jan 24 21:46:24 2008 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (reg_fragment_setenc_gen): associate ASCII-8BIT only if
+ str has only ASCII characters.
+
+Thu Jan 24 20:46:17 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_m17n.rb: follow to the following changes.
+
+Thu Jan 24 20:21:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parser.y (parser_str_new): automatically update string literal's
+ encoding from US-ASCII to ASCII-8BIT when script encoding is US-ASCII
+ and the string includes non-ascii bytes. [ruby-dev:33348]
+
+ * parser.y (reg_fragment_check_gen, reg_compile_gen): automatically
+ update regexp literal's encoding from US-ASCII to ASCII-8BIT when
+ script encoding is US-ASCII, the regexp has no kcode option and the
+ regexp includes non-ascii bytes. [ruby-dev:33353]
+
+Thu Jan 24 19:36:22 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic::inspect): use Kernel#to_s instead
+ object_id with printf. [ruby-dev:33347]
+
+Thu Jan 24 19:29:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (remove_sign_bits): returns pointer to the first char to
+ be used, instead of copying.
+
+ * sprintf.c (rb_str_format): negative indicator dots should come
+ before sign digits always. [ruby-dev:33224]
+
+Thu Jan 24 18:19:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_is_newline): parenthesized arguments.
+
+Thu Jan 24 18:14:14 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (rb_reg_fixed_encoding_p): no need to treat ASCII-8BIT specially.
+
+Thu Jan 24 16:53:06 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): 7bit clean regexp should be US-ASCII.
+ [ruby-dev:33346]
+
+Thu Jan 24 16:31:04 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast): the end point of left_char_head()
+ must be the last character. [ruby-cvs:22445]
+
+Thu Jan 24 16:24:25 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (reg_fragment_setenc_gen): recognize regexp with option n as
+ as ASCII-8BIT instead of US-ASCII. [ruby-dev:33339]
+
+Thu Jan 24 15:44:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (collect_bang_i): use rb_ary_store() to avoid potential
+ memory corruption. a patch from Yusuke Endoh <mame@tsg.ne.jp>
+ in [ruby-dev:33328].
+
+ * array.c (ITERATE): remove unnecessary macro.
+
+ * array.c (sort_1): remove ary_sort_check(). in-place sort keep
+ original elements even when it's modified.
+
+ * array.c (sort_2): ditto.
+
+Thu Jan 24 15:09:40 2008 Tanaka Akira <akr@fsij.org>
+
+ * time.c (make_time_t): revert round trip test. [ruby-dev:33058]
+
+Thu Jan 24 11:14:56 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): ASCII incompatible encoding is
+ not compatible with any other encoding.
+
+Thu Jan 24 07:34:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (STR_NEW0): set encoding as US-ASCII.
+
+Thu Jan 24 03:47:41 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rexml/text.rb, lib/rubygems/open-uri.rb, lib/open-uri.rb,
+ test/logger/test_logger.rb, test/ruby/test_regexp.rb:
+ fix tests. [ruby-dev:33336]
+
+Thu Jan 24 03:23:44 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_line): use memchr(3) for faster newline
+ search.
+
+ * io.c (appendline): remove unused arguments
+
+ * io.c (rb_io_getline_fast): make much simpler (and faster).
+
+Thu Jan 24 02:13:07 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * insns.def (expandarray): fix stack inc. [ruby-dev:32892]
+
+ * bootstraptest/test_knownbug.rb, test_massign.rb: move a fixed test.
+
+Thu Jan 24 01:00:34 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.{c, h} (rb_usascii_encoding): added.
+
+ * parse.y (parser_str_new, rb_intern3): ascii only string literal is
+ US-ASCII.
+
+ * ruby.c (proc_optionc): -Kn means ASCII-8BIT.
+
+Wed Jan 23 23:54:40 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * sprintf.c: fix comment. [ruby-dev:33275]
+
+ * math.c: fix comment. [ruby-dev:33276]
+
+Wed Jan 23 22:47:34 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_struct.rb: add tests to achieve over 90% test
+ coverage of struct.c.
+
+ * test/ruby/test_sprintf.rb: ditto for sprintf.c.
+
+ * test/ruby/test_math.rb: ditto for math.c.
+
+Wed Jan 23 22:14:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/japanese.c (rb_from_Windows_31J, rb_to_Windows_31J):
+ provisional workaround for Windows-31J. [ruby-dev:33320]
+
+Wed Jan 23 15:25:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_strftime): copy encoding from format. [ruby-dev:33303]
+
+Wed Jan 23 15:04:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_make_independent): should set length.
+
+ * string.c (rb_str_associate): hide associated array from ObjectSpace.
+
+ * string.c (rb_str_associated): return associated array with freezing
+ instead of false. [ruby-dev:33282]
+
+ * string.c (rb_str_freeze): freeze associated array together.
+
+Wed Jan 23 13:39:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_prepare_re): fix SEGV by
+ /a/ =~ "aa".force_encoding("utf-16be").
+
+Wed Jan 23 11:53:26 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_mod_check, str_nth, str_offset): constified.
+
+ * string.c (rb_str_dump): dump in ASCII-8BIT always.
+
+Wed Jan 23 10:18:10 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_method.c (rb_export_method): set ruby_vm_redefined_flag for
+ visibility change as well. reported by K.Kosako in
+ http://d.hatena.ne.jp/kkos/20080122#1201012720.
+
+Tue Jan 22 22:26:23 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_bignum.rb: change some tests because rational
+ redefines Bignum#quo and Bignum#**.
+
+Tue Jan 22 20:58:15 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): need to output sodir rule.
+
+Tue Jan 22 19:37:16 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): lib files shouldn't depend on install
+ dir because if the dir is newer than lib files, lib files will be
+ always copied.
+
+Tue Jan 22 17:52:52 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/utf_16_32.c: Streamline parentheses, add more
+ 'static' qualifiers.
+
+Tue Jan 22 12:57:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in (MINIRUBY): remove -I$(EXTOUT)/$(arch) from
+ MINIRUBY since miniruby might not be able to load DLL.
+
+ * test/ruby/test_m17n.rb: move tests from bootstrap test.
+
+ * encoding.c (enc_find): should check name if ASCII compatible.
+
+ * string.c (rb_str_end_with): should check character boundary.
+
+ * encoding.c (rb_enc_compatible): encoding must be ASCII
+ compatible before checking ENC_CODERANGE_7BIT.
+
+ * encoding.c (rb_enc_compatible): wrong compatibility condition.
+ [ruby-dev:33273]
+
+Tue Jan 22 09:26:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_each_char): iterates over a shadow.
+ [ruby-dev:33243]
+
+Tue Jan 22 08:59:52 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/formatter.rb: Indent labeled lists like note lists.
+
+ * test/rdoc/test_rdoc_ri_overstrike_formatter.rb: Added.
+
+ * test/rdoc/test_rdoc_ri_formatter.rb: Added tests.
+
+Tue Jan 22 04:40:28 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_intern3): do not call rb_enc_mbclen() if *m is
+ ASCII. [ruby-talk:287225]
+
+ * string.c (rb_str_each_line): use rb_enc_is_newline() to gain
+ performance if the record separator ($/) is not modified.
+
+Tue Jan 22 01:15:51 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ChangeLog: format-time-string under C locale. [ruby-dev:33261]
+
+Tue Jan 22 00:45:12 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_bignum.rb: add tests for bignum.c.
+
+Tue Jan 22 00:30:08 2008 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * bignum.c (big_shift): fix a bug that caused infinite loop when
+ left shifting.
+
+Mon Jan 21 20:09:38 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (marshal_load): initialize the cache.
+
+Mon Jan 21 19:42:42 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c, enc/trans/utf_16_32.c, test/ruby/test_transcode.rb:
+ added UTF-32BE and UTF-32LE conversions.
+
+Mon Jan 21 14:36:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_transcode): initialize transcoder in
+ rb_transcoding. [ruby-dev:33234]
+
+ * transcode_data.h (rb_transcoding): transcoder constified.
+
+Mon Jan 21 12:50:02 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c, gc.c (setjmp): sigsetjmp is a macro on cygwin.
+
+Mon Jan 21 12:35:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_loop, str_transcoding_resize): use unsigned
+ char. [ruby-dev:33232]
+
+ * transcode_data.h (rb_transcoding, rb_transcoder): removed callback
+ parameters.
+
+ * enc/trans/japanese.c: ditto.
+
+ * enc/trans/utf_16_32.c: parenthesized bit-or operands.
+
+Mon Jan 21 11:59:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_each_char): move forward. [ruby-dev:33231]
+
+Mon Jan 21 06:40:03 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_dispatch): constified return value.
+
+ * transcode_data.h (rb_transcoding): include pointer to rb_transcoder
+ and auxiliary data.
+
+ * transcode_data.h (rb_transcoder): all callback functions should have
+ their own parameters.
+
+ * enc/trans/{japanese,single_byte}.c: constified.
+
+Mon Jan 21 03:45:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_each_char): advance offset before get next char
+ length. [ruby-dev:33211]
+
+Sun Jan 20 20:00:20 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c, enc/trans/utf_16_32.c, test/ruby/test_transcode.rb:
+ added UTF-16LE conversions.
+
+ * fixed changelog for last commit
+
+Sun Jan 20 17:54:00 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * added changelog for last commit
+
+Sun Jan 20 15:08:08 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/trans/utf_16_32.c: new file, currently implementing
+ UTF-16BE conversions only.
+
+ * test/ruby/test_transcode.rb: Added tests for UTF-16BE;
+ made check_both_ways() use force_encoding differently.
+
+ * transcode_data.h, transcode.c: Support for more conversion
+ functions.
+
+Sun Jan 20 13:06:01 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_each_char): performance improvement, and stop if
+ shortened in the block. [ruby-dev:33189]
+
+Sun Jan 20 09:12:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk: use -Ks when read insns.def. [ruby-dev#33185]
+
+ * parse.y: fix -e and stdin strings aren't set encoding.
+
+Sun Jan 20 05:12:44 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/make_encdb.rb: fix duplication check.
+
+Sun Jan 20 05:03:46 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ascii.c: remove definition of replica KOI8-U.
+
+Sun Jan 20 00:33:59 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/koi8_u.c: added.
+
+ * regenc.c, enc/utf_8.c, enc/unicode.c, enc/gb18030.c: add ARG_UNUSED.
+
+Sat Jan 19 22:41:39 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (coderange_scan): don't call mbclen functions for ASCII
+ characters with ASCII compatible encoding.
+
+Sat Jan 19 21:00:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/rdoc/template.rb (RDoc): defined to avoid uninitialized constant
+ error by `./ruby test/rubygems/test_gem_server.rb'.
+
+Sat Jan 19 20:41:29 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (enc_new): don't free rb_encoding to avoid SEGV by
+ `miniruby -e exit' on x86_64 GNU/Linux.
+
+Sat Jan 19 18:40:19 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (once): use an instance variable which points a hash
+ as cache. [experimental]
+
+Sat Jan 19 17:21:29 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: parse's hints as an
+ experimental function has been removed.
+
+Sat Jan 19 11:21:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (sigsetjmp): check if available.
+
+ * eval.c, gc.c (setjmp): do not use _setjmp if sigsetjmp is available.
+
+Sat Jan 19 11:10:11 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: Remove wrong assumptions about Cygwin. a patch from
+ Corinna Vinschen in [ruby-Bugs-17018].
+
+Sat Jan 19 09:23:14 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_set_safe_array): should not use
+ recursive calling.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+Sat Jan 19 08:58:47 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup: Remove ListBase and Line constants.
+
+ * lib/rdoc/ri: Allow output IO to be specified.
+
+ * test/rdoc/parser/test_parse_c.rb: Move up one level, fixed.
+
+ * test/rdoc/parser/test_rdoc_markup_attribute_manager.rb: Renamed to
+ match new class name, updated to match new classes.
+
+ * test/rdoc/test_rdoc_ri_formatter.rb: Start of RI formatting tests.
+
+ * test/rdoc/test_rdoc_ri_attribute_manager.rb: Start of
+ RDoc::RI::AttributeManager tests.
+
+ * test/rdoc/test_simple_markup.rb: Moved to match new class name.
+
+Sat Jan 19 08:35:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_prepare): get encoding from the first line.
+ [ruby-dev:33168]
+
+ * ruby.c (load_file): set encoding to input with set_encoding.
+
+Sat Jan 19 03:46:42 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (thread_create_core): prohibit thread creation in the
+ frozen thread group. a patch in [ruby-dev:33176] from sheepman
+ <sheepman AT sheepman.sakura.ne.jp>.
+
+ * thread.c (thread_create_core): should inherit ThreadGroup from
+ the current thread.
+
+Sat Jan 19 00:37:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): set result encoding for wider width.
+
+Sat Jan 19 00:13:19 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (w32_wait_events): shouldn't invoke interrupt handle
+ by timer_thread.
+
+Fri Jan 18 23:49:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_create_core): set thread group before creating
+ thread.
+
+Fri Jan 18 20:19:51 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (ripper_initialize): too early to set parser->enc.
+
+Fri Jan 18 20:03:05 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak (BASERUBY): nmake cannot execute ruby correctly
+ if the path of ruby.exe is quoted.
+
+ * win32/setup.mak ($(ARCH)): if a macro is appended by $(APPEND),
+ a space will be inserted on the top of the line.
+
+Fri Jan 18 17:56:09 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h, insnhelper.h, thread_pthread.h, vm_core.h, vm_opts.h:
+ prefixed include guards with RUBY.
+
+ * id.h: added include guard.
+
+ * regenc.h, regint.h, regparse.h: prefixed include guards with
+ ONIGURUMA.
+
+Fri Jan 18 15:57:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_cleanup_func): ignore errors from destroying mutex
+ of dead thread. [ruby-core:15069]
+
+ * thread_pthread.c, thread_win32.c (native_thread_destroy): ditto.
+
+Fri Jan 18 15:56:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_name_list_i, rb_enc_aliases_enc_i): freeze
+ element strings to be returned.
+
+Fri Jan 18 14:36:34 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_m17n.rb (test_str_dump): added test for
+ String#dump. [ruby-dev:33142]
+
+Fri Jan 18 12:25:13 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (load_encoding): check if successfully loaded.
+
+ * encoding.c (rb_enc_find_index): use original encoding name to
+ replicate loaded encoding instead alias.
+
+Fri Jan 18 09:43:02 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * re.c (rb_char_to_option_kcode): Regexp switch `s' should mean
+ Windows-31J, as wells as `-Ks'.
+
+Fri Jan 18 09:22:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_initialize): explicitly call rb_ascii8bit_encoding().
+
+ * parse.y (parser_prepare): lex_input may not be have encoding (e.g. IO).
+
+ * parse.y (rb_parser_compile_string): set encoding from input string.
+
+ * encoding.c (rb_enc_find_index): use ASCII-8BIT if loading known
+ encoding failed.
+
+ * parse.y (ripper_initialize): move parser->enc initialization.
+
+ * encoding.c (rb_enc_aliases_enc_i): exclude non alias names from
+ Encoding.aliases.
+
+ * encoding.c (rb_enc_find_index): use original encoding name to
+ load DLL.
+
+Fri Jan 18 07:06:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (Init_IO): stdin/stdout may not be duplex.
+
+Fri Jan 18 04:27:57 2008 Eric Hodel <drbrain@segment7.net>
+
+ * sample/rdoc/markup/rdoc2latex.rb: Fix for new namespacing.
+
+ * lib/rdoc/markup/to_latex.rb: Fix namespacing.
+
+Fri Jan 18 02:02:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb (assert_valid_syntax): added.
+
+ * bootstraptest/test_knownbug.rb: added test for [ruby-list:44479]
+
+Fri Jan 18 01:48:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): check argument number to
+ attr_reader. [ruby-core:15120]
+
+Fri Jan 18 00:49:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_check_readable): flush tied write IO too.
+
+ * io.c (Init_IO): tie stdin with stdout. [ruby-core:15107]
+
+Fri Jan 18 00:23:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_free): removed since rb_encoding may be used while
+ cleanup.
+
+Fri Jan 18 00:17:19 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/euc_cn.c: split from enc/euc_kr.c.
+
+Fri Jan 18 00:03:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_init): use default external encoding
+ if nothing is given. a patch from sheepman <sheepman AT
+ sheepman.sakura.ne.jp> in [ruby-dev:33159].
+
+Thu Jan 17 23:56:20 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encdb.h): give output file name to make_encdb.rb.
+
+ * encoding.c (enc_table): simplified.
+
+ * encoding.c (enc_register_at): lazy loading. [ruby-dev:33013]
+
+ * regenc.h (ENC_DUMMY): added.
+
+ * enc/make_encdb.rb: now emits macros only.
+
+ * enc/iso_2022_jp.h: split from encoding.c.
+
+Thu Jan 17 21:48:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_char_to_option_kcode): fixed typo.
+
+Thu Jan 17 21:01:25 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (Date::Infinity#<=>): didn't work. A patch from
+ Dirkjan Bussink <d.bussink AT gmail.com> [ruby-core:15098].
+ This is a bug obviously. However it didn't affect the library's
+ functions.
+
+ * lib/date.rb, lib/date/format.rb: some trivial changes.
+
+Thu Jan 17 13:07:18 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_dump): preserve the encoding of source string
+ if it is ASCII compatible. otherwise, add '.force_encoding()'
+ for ugly work around. maybe we should implement some other way
+ to keep non ASCII encoding in dumped string. [ruby-dev:33142]
+
+Thu Jan 17 10:30:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fwrite): always flush IO on tty, even without newlines.
+ [ruby-core:15107]
+
+Wed Jan 16 22:45:27 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_register_at): make own copy. [ruby-dev:33136]
+
+Wed Jan 16 18:03:10 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open, rb_io_s_popen): clear temporary object to release
+ and prevent from GC.
+
+Wed Jan 16 17:55:07 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (fix_quo): typo. a patch from Shin-ichiro HARA
+ <sinara AT blade.nagaokaut.ac.jp> in [ruby-dev:33130]
+
+Wed Jan 16 17:36:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/test_delegate.rb: add new test file for delegate.rb.
+
+Wed Jan 16 16:14:00 2008 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.1: Fix grammar.
+
+Wed Jan 16 15:26:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (sys_fail2): get rid of unlimited alloca.
+
+ * io.c (mode_enc, pipe_open, rb_io_s_popen): ditto.
+
+ * load.c (rb_feature_p): ditto.
+
+ * object.c (rb_cstr_to_dbl): ditto.
+
+ * io.c (mode_enc): fixed uninitialized variable.
+
+Wed Jan 16 12:51:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_str_tmp_new, rb_str_shared_replace):
+ prototype moved.
+
+Tue Jan 15 23:52:51 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/*: add ARG_UNUSED.
+
+ * enc/koi8_u.c: added.
+
+Tue Jan 15 23:00:08 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/utf_{16,32}{be,le}.c: remove some ARG_UNUSED. replace struct
+ OnigEncodingST by OnigEncoding.
+
+Tue Jan 15 22:30:43 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (ENC_REGISTER): use &OnigEncoding*.
+ (ENCINDEX_UTF_8): renamed from ENCINDEX_UTF8.
+ (rb_enc_init): use ENC_REGISTER.
+
+ * include/ruby/oniguruma.h (OnigEncodingUTF8, ONIG_ENCODING_UTF8):
+ removed.
+
+ * enc/*.c: remove use of &encoding_*; use enc argument instead.
+
+Tue Jan 15 18:44:46 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enc/utf_8.c: remove use of ONIG_ENCODING_UTF8 altogether; use
+ enc argument instead.
+
+Tue Jan 15 18:05:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/utf_8.c (ONIG_ENCODING_UTF8): reverted.
+
+Tue Jan 15 18:01:55 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (MKFILES): add dependencies.
+
+Tue Jan 15 18:00:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enc/utf_8.c (OnigEncodingDefine): encoding name should be kept
+ unchanged.
+
+Tue Jan 15 17:53:05 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/utf_8.c: renamed as IANA name.
+
+ * enc/Makefile.in: ditto.
+
+Tue Jan 15 16:59:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): encoding libraries cannot be loaded until
+ load path is set.
+
+Tue Jan 15 15:09:28 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/setup.mak: strip out empty lines from CPP output.
+
+Tue Jan 15 14:57:38 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {win,bcc}32/setup.mak (-basic-vars-): expand BASERUBY to full path
+ to get rid of ./ruby.exe.
+
+ * win32/enc-setup.mak: workaround for Borland make.
+
+Tue Jan 15 14:44:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): use ASCII-8BIT in miniruby.
+
+Tue Jan 15 13:54:41 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32}/Makefile.sub (RUNRUBY): need to set archdir when
+ invoking ruby.
+
+Tue Jan 15 13:43:18 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (us_ascii.o): add dependencies. [ruby-dev:33111]
+
+Tue Jan 15 03:41:42 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (eval): check if backtrace is empty. [ruby-core:15040]
+
+Tue Jan 15 01:28:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: simplified dummy objects dependencies.
+
+Tue Jan 15 01:19:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (OBJS): moved encoding.o from COMMONOBJS.
+
+ * common.mk (dmyencoding.o): added. [ruby-dev:33099]
+
+ * configure.in, {win,bcc}32/Makefile.sub (MINIOBJS): added
+ dmyencoding.o.
+
+ * dmyencoding.c (rb_locale_charmap): returns nil for miniruby.
+
+Tue Jan 15 00:05:50 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (appendline): specifying limit should not generate broken
+ byte sequence. strings should be rounded. [ruby-dev:33088]
+
+Mon Jan 14 23:33:02 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (Kconv.tolocale): argument is str.
+
+Mon Jan 14 23:31:05 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in (setup): add -I$(EXTOUT)/$(arch) to MINIRUBY.
+
+ * bootstraptest/runner.rb (main): expand -I directory path.
+
+Mon Jan 14 23:28:10 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/enc-setup.mak (BUILTIN_ENCOBJS): depends on enc/Makefile.in.
+
+Mon Jan 14 22:48:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_char_to_option_kcode): use rb_enc_find_index() instead
+ of using fixed index value.
+
+ * enc/Makefile.in (encsrcdir): make US-ASCII built-in.
+
+Mon Jan 14 22:25:02 2008 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * golf_prelude.rb: Shorter method name completion. Same method
+ used for const missing. do_while and do_until added. Enumerator
+ gains all of Array's abilities. Ex:
+ '123'.m{|i|i*2} #=> "112233"
+ '123'.pe #=> '123'.perm*' ' #=> "123 132 213 231 312 321"
+ base on a patch from Darren Smith <darrenks AT ml1.net>.
+
+Mon Jan 14 21:10:02 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enc/us_ascii.c: wrong alias name: ANSI_X3.4-1986.
+
+ * rubytest.rb: add -I#{srcdir} to load encoding DLL.
+
+Mon Jan 14 18:53:58 2008 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: clear thread structure.
+ (TODO: survey that child process should clear mutex or not).
+
+ * bootstraptest/test_knownbug.rb, test_thread.rb: move a fixed test.
+
+Mon Jan 14 18:43:38 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: add "flunk" method.
+
+ * bootstraptest/test_knownbug.rb: fix to use flunk.
+
+Mon Jan 14 18:10:59 2008 Koichi Sasada <ko1@atdot.net>
+
+ * vm.h: remove dangerous assembler sentence.
+
+Mon Jan 14 18:06:37 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_locale_encoding): return US-ASCII when charmap is
+ nil.
+
+Mon Jan 14 16:12:58 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/shellwords.rb: scape should be an alias to shellescape. a
+ patch from Masahiro Kawato <m-kawato AT mwb.biglobe.ne.jp> in
+ [ruby-dev:33060].
+
+Mon Jan 14 16:09:16 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.1: a patch to describe --encoding. a patch from Yugui
+ <yugui AT yugui.sakura.ne.jp> in [ruby-dev:33079].
+
+ * ruby.c: ditto.
+
+Mon Jan 14 13:49:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_prepare_re): initialize error message buffer.
+ (rb_reg_search): ditto.
+ (rb_reg_check_preprocess): ditto.
+ (rb_reg_new_str): ditto.
+ (rb_enc_reg_new): ditto.
+ (rb_reg_compile): ditto.
+ (rb_reg_initialize_m): ditto.
+ (rb_reg_s_union_m): ditto.
+
+Mon Jan 14 12:33:07 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup*: Renamespace from SM::SimpleMarkup to
+ RDoc::Markup.
+
+Mon Jan 14 10:45:45 2008 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * enc/ascii.c: Exchanged order of arguments for one ENC_ALIAS
+
+Mon Jan 14 09:19:07 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/time.rb: do not reference Time directly from the inside of
+ definitions. [ruby-dev:33059]
+
+Mon Jan 14 05:44:44 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/*.c: add replicas and aliases.
+
+ * enc/make_encdb.h: add duplicate and undefined check.
+
+Mon Jan 14 02:03:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/oniguruma.h: remove ONIG_ENCODING_* and OnigEncoding*
+ which are not builtin.
+
+ * regenc.{c,h} (onigenc_mb2_code_to_mbclen, onigenc_mb4_code_to_mbclen):
+ fix prototype.
+
+ * enc/big5.c, enc/euc_kr.c, enc/euc_tw.c, enc/gb18030.c,
+ enc/koi8_r.c, enc/windows_1251.c: imported from Oniguruma.
+
+Sun Jan 13 22:47:28 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/make_encdb.h: sort encoding names by original name.
+
+ * encoding.c, enc/*.c: define replicas and aliases.
+
+Sun Jan 13 20:24:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c: add documents.
+
+Sun Jan 13 18:41:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): moved initialization from encdb.h.
+
+ * enc/make_encdb.rb (enc_name_list): constified.
+
+ * enc/make_encdb.rb (enc_init_db): moved some functions to encoding.c.
+
+Sun Jan 13 13:53:00 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file): local variable was not initialized when -x flag
+ is given.
+
+ * ruby.c (load_file): script files should not be affected by locale.
+ [ruby-dev:33054]
+
+Sun Jan 13 12:01:32 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generators*: Reorganize RDoc generators.
+
+Sun Jan 13 11:41:11 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (ENCINDEX_EUC_JP, ENCINDEX_SJIS): removed.
+ (rb_enc_init): EUC-JP and Shift_JIS are not builtin now.
+
+ * enc/Makefile.in: ditto.
+
+ * common.mk: ditto.
+
+ * ruby.c (proc_options): ditto.
+
+ * enc/shift_jis.c, enc/euc_jp.c: fixes for remove from builtin.
+
+Sun Jan 13 10:21:40 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_table): packed all enc_table stuff.
+
+Sun Jan 13 09:58:17 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_init): revert removing SJIS.
+
+ * enc/sjis.c: move to enc/shift_jis.c, to make encoding name equal to
+ filename for convenience of loading lib.
+
+ * enc/shift_jis.c: moved from enc/sjis.c.
+
+ * common.mk: follows enc/shift_jis.c.
+
+ * enc/Makefile.in: ditto.
+
+Sun Jan 13 09:22:33 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (incs): includes encdb.h.
+
+Sun Jan 13 09:17:29 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub (MV): use move instead of ren. [ruby-Bugs-17019]
+
+Sun Jan 13 01:52:31 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enc/make_encdb.rb: should work on Ruby 1.8. [ruby-dev:33069]
+
+ * common.mk (encdb.h): pass enc dir from outside to make_encdb.rb.
+
+Sun Jan 13 00:01:07 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/make_encdb.rb: added. search enc/*.c and make encoding database.
+
+ * regenc.h (ENC_REPLICATE, ENC_ALIAS): added for defining replica
+ encoding and encoding alias.
+
+ * encoding.c (rb_enc_init): move alias definitions to enc/*.c.
+ (rb_enc_find_index): search original of replica and alias when no
+ encoding library.
+ (rb_enc_name_list, rb_enc_aliases_enc_i, rb_enc_aliases_str_i,
+ rb_enc_aliases, Encoding.name_list, Encoding.aliases): added.
+ (Init_Encoding): init encdb.
+
+ * enc/ascii.c, enc/us_ascii.c, enc/euc_jp.c, enc/sjis.c:
+ add replica encoding and encoding alias definition.
+
+ * common.mk (dist-clean-local): add rule for remove encdb.h.
+
+Sat Jan 12 18:27:41 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_define_alloc_func, rb_undef_alloc_func): should
+ define/undef on a singleton class. [ruby-core:09959]
+
+Sat Jan 12 12:44:36 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c: rdoc update.
+
+Sat Jan 12 12:01:49 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: tuning for performance.
+
+Sat Jan 12 11:29:45 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/test_proc.rb: fixed wrong expected result. pointed
+ out by Kornelius "murphy" Kalnbach <murphy AT rubychan.de> in
+ [ruby-core:15022].
+
+Sat Jan 12 04:38:38 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (process_options): -e'script' is locale encoding by default.
+ (load_file): ruby script from stdin is locale encoding by default.
+
+Sat Jan 12 04:31:59 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: fix bug: -m was -m0.
+
+Fri Jan 11 23:22:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (string.c): call rb_str_buf_append to update encoding of
+ str1, even if str2 is empty.
+
+Fri Jan 11 20:20:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_mark): needs to mark the receiver too. a patch from
+ Chris Heath <chris AT heathens.co.nz> in [ruby-core:14983].
+ [ruby-core:14885]
+
+Fri Jan 11 18:28:49 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/usage.rb: Removed.
+
+ * lib/getoptlong.rb: Update example to not use lib/rdoc/usage.rb.
+
+Fri Jan 11 18:17:10 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/driver.rb (read_yaml): Follow namespace change
+ [ruby-core:14964].
+
+Fri Jan 11 16:55:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_append): performance improvement.
+
+Fri Jan 11 12:35:56 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: moved broken syscall checks from process.c etc.
+
+ * defines.h (WORDS_BIGENDIAN): honor __BIG_ENDIAN__ than the result of
+ configure.
+
+ * lib/rdoc/options.rb (check_diagram): more precise check, darwin
+ is not Windows but mingw is on it.
+
+Fri Jan 11 09:59:05 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: update to r1.163.
+
+ * ext/nkf/nkf.c: ASCII's canonical name is US-ASCII.
+
+ * ext/nkf/lib/kconv.rb (Kconv.isjis): force_encoding('BINARY').
+
+Fri Jan 11 09:23:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (set_base_encoding): must use rb_enc_dummy_p.
+
+Fri Jan 11 06:13:14 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_to_encoding_index, rb_to_encoding): disallow nil.
+ [ruby-dev:33003]
+
+Fri Jan 11 01:08:01 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (rb_mutex_unlock): proper error message for unlocking
+ mutex that is not locked. a patch from Yusuke ENDOH
+ <mame at tsg.ne.jp> in [ruby-dev:33010].
+
+Thu Jan 10 18:00:41 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * prelude.rb (Mutex::synchronize): capture exception from unlock.
+ [ruby-dev:32935]
+
+Thu Jan 10 10:15:03 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_encoding_set): IO.pipe("euc-jp", nil) should work as
+ IO.pipe("euc-jp", nil). [ruby-dev:33000]
+
+ * io.c (io_encoding_set): handle nil for v1.
+
+Thu Jan 10 02:41:22 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_binmode): should not alter encoding. [ruby-dev:32918]
+
+ * io.c (io_read_encoding): need not to return ASCII-8BIT for
+ binary IO.
+
+Wed Jan 9 22:04:17 2008 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/mathn.rb (Prime#each): returns an enumerator if no block
+ given. [ruby-dev:32815]
+
+Wed Jan 9 22:03:26 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_replicate): replica of dummy is a dummy.
+
+Wed Jan 9 20:55:38 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/e2mmap.rb (Exception2MessageMapper::Raise): define fail.
+ [ruby-dev:32854]
+
+Wed Jan 9 20:35:42 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb: support X-Forwarded-* header fields.
+ WEBrick::HTTPRequest#{host,port,request_uri} is derived having
+ regards to X-Forwarded-Proto and X-Forwarded-Host.
+
+ * lib/webrick/httprequest.rb
+ (WEBrick::HTTPRequest#server_name?): new method.
+ (WEBrick::HTTPRequest#remote_ip?): new method.
+ (WEBrick::HTTPRequest#ssl?): new method.
+
+Wed Jan 9 18:24:39 2008 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * golf_prelude.rb (Array#to_s): alias to join.
+
+ * golf_prelude.rb (FalseClass#to_s): return "".
+
+Wed Jan 9 16:59:54 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): fix self appending.
+
+Wed Jan 9 15:54:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): give priority command line encoding option
+ to RUBYOPT, and enable -E option in RUBYOPT.
+
+ * ruby.c (load_file): deal with encoding option in shebang line if
+ nothing in command line and RUBYOPT.
+
+Wed Jan 9 14:55:36 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (yycompile0): remove setting parser->enc because it is set
+ in parser_prepare() by previous change of parser_prepare().
+
+Wed Jan 9 14:52:18 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat, rb_str_buf_append): deal with self
+ appending.
+
+Wed Jan 9 14:44:57 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_prepare): set parser->enc from lex_input for ripper.
+
+Wed Jan 9 13:45:52 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (WEBrick::HTTPServer#start):
+ :DoNotReverseLookup option had not been performed.
+
+Wed Jan 9 13:03:34 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): do not recalculate coderange
+ value if it's given from outside.
+
+Wed Jan 9 08:42:01 2008 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * enum.c: Updating the documentation of Enumerable#zip to reflect
+ the recent changes Matz made to the method.
+
+Wed Jan 9 01:35:10 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/Makefile.in (BUILTIN_ENCS): UTF-{16,32}{BE,LE} are not builtin.
+
+Tue Jan 8 23:55:15 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_init): UTF-{16,32}{BE,LE} are not builtin.
+
+Tue Jan 8 22:33:03 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c, Makefile.in, include/ruby/oniguruma.h,
+ enc/Makefile.in: fix rules for UTF-{16,32}{BE,LE}.
+
+Tue Jan 8 20:02:08 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win{32,ce}/Makefile.sub: merged.
+
+Tue Jan 8 19:48:15 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/driver.rb: Speed up Marshal.load. Fix bug with nested
+ classes' methods.
+
+Tue Jan 8 19:17:29 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/*: Clean up namespacing of RI's classes.
+
+Tue Jan 8 18:05:35 2008 Eric Hodel <drbrain@segment7.net>
+
+ * bin/ri, lib/rdoc/ri/*: Replace with Ryan Davis' cached ri.
+
+Tue Jan 8 17:32:07 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_zip): honor length of the receiver, not the
+ shortest length. [ruby-core:14738]
+
+ * enum.c (enum_zip): returns array not enumerator for no block
+ form. [ruby-core:14738]
+
+ * enumerator.c (next_ii): do not ignore multiple values yielded.
+
+ * array.c (rb_ary_zip): faster version without creating generators.
+
+Tue Jan 8 15:47:43 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/utf{16,32}_{be,le}.c: use &OnigEncodingName(*) instead of
+ ONIG_ENCODING_*.
+
+Tue Jan 8 15:40:31 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regenc.c (onigenc_strlen_null, onigenc_str_bytelen_null): suppressed
+ warnings.
+
+ * regenc.h, enc/unicode.c (onigenc_unicode_ctype_code_range): added
+ encoding argument.
+
+ * enc/utf{16,32}_{be,le}.c: added init functions.
+
+ * enc/utf{16,32}_{be,le}.c: imported from Oniguruma 5.9.1.
+
+Tue Jan 8 15:03:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (str_gsub): avoid appending empty pre-match substr.
+
+Tue Jan 8 13:05:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_build_from_ary), iseq.c (iseq_load): fix for format change.
+
+Tue Jan 8 07:56:11 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_buf_append): fix append itself.
+
+Tue Jan 8 01:13:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (STR_ENC_GET): defined. same as rb_enc_get without
+ enc_capable.
+ (coderange_scan): ASCII-8BIT test refined.
+ (rb_enc_cr_str_buf_cat): new internal function to accumulate
+ strings with encoding.
+ (rb_enc_str_buf_cat): use rb_enc_cr_str_buf_cat.
+ (rb_str_buf_append): ditto
+ (str_gsub): use rb_str_buf_append.
+ (rb_str_hash): use ENCODING_GET.
+ (rb_str_comparable): ditto.
+ (rb_str_cmp): compare encoding index, not rb_encoding address.
+
+Mon Jan 7 20:37:55 2008 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb: external encoding of
+ tempfiles is set to "ASCII-8BIT".
+
+Mon Jan 7 19:39:50 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/template.rb: Use ERB instead of custom template language.
+
+ * lib/rdoc/generators/template/html/old_html.rb: Remove.
+
+ * lib/rdoc/generators/template/*: Convert to ERB.
+
+Mon Jan 7 19:11:30 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (Init_String): sym_match arity spec was wrong. a patch
+ from Hiroyuki Iwatsuki <don at na.rim.or.jp> in [ruby-dev:32957].
+
+Mon Jan 7 18:10:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (str_gsub): move rb_enc_get(str) to out of loop.
+
+Mon Jan 7 15:52:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (OnigEncodingType): new member
+ ruby_encoding_index to avoid linear search in rb_enc_to_index.
+
+ * include/ruby/encoding.h (rb_enc_to_index): macro defined to use
+ ruby_encoding_index.
+
+ * encoding.c (rb_enc_to_index): removed.
+ (enc_register_at): initialize ruby_encoding_index member.
+
+Mon Jan 7 16:10:35 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/tokenstream.rb: Namespace under RDoc.
+
+Mon Jan 7 16:06:09 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/dot.rb: Namespace under RDoc.
+
+ * lib/rdoc/diagram.rb: Clean up formatting.
+
+Mon Jan 7 15:51:35 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/options.rb: Convert to OptionParser, clean up -h output,
+ namespace under RDoc.
+ * lib/rdoc/*: Namespace RDoc::Options.
+
+Mon Jan 7 15:42:46 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk, Makefile.in, */Makefile.sub (distclean-local): move
+ removing rule of ext/ripper/y.output from common.mk to Makefiles
+ that depend on platforms.
+
+Mon Jan 7 13:54:57 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_preprocess): fix fixed_enc condition.
+
+Mon Jan 7 11:51:49 2008 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generators/ri_generator.rb: Merge documentation from the
+ same class on output. Fixes bug where documentation could
+ disappear.
+
+ * lib/rdoc/options.rb: Fix typo.
+
+ * lib/rdoc/generators/*: Clean up some namespacing and make RDoc
+ consistent.
+
+Mon Jan 7 11:44:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_internal_get_index): extracted from
+ rb_enc_get_index.
+ (rb_enc_internal_set_index): extracted from rb_enc_associate_index
+
+ * include/ruby/encoding.h (ENCODING_SET): work over ENCODING_INLINE_MAX.
+ (ENCODING_GET): ditto.
+ (ENCODING_IS_ASCII8BIT): defined.
+ (ENCODING_CODERANGE_SET): defined.
+
+ * re.c (rb_reg_fixed_encoding_p): use ENCODING_IS_ASCII8BIT.
+
+ * string.c (rb_enc_str_buf_cat): use ENCODING_IS_ASCII8BIT.
+
+ * parse.y (reg_fragment_setenc_gen): use ENCODING_IS_ASCII8BIT.
+
+ * marshal.c (has_ivars): use ENCODING_IS_ASCII8BIT.
+
+Mon Jan 7 02:14:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (coderange_scan): avoid rb_enc_to_index.
+ (rb_enc_str_buf_cat): ditto.
+ (str_cat_char): use rb_enc_str_buf_cat.
+ (rb_str_inspect): ditto.
+
+Mon Jan 7 01:36:49 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (coderange_scan): optimize ASCII-8BIT string.
+ (rb_enc_str_buf_cat): don't call coderange_scan if possible.
+
+Mon Jan 7 01:05:45 2008 Tanaka Akira <akr@fsij.org>
+
+ * lib/erb.rb (ERB::Revision): cut off locale dependent string in Date
+ keyword.
+
+Mon Jan 7 00:48:02 2008 Tanaka Akira <akr@fsij.org>
+
+ * Date keyword removed to avoid inclusion of locale dependent
+ string. [ruby-dev:32940]
+
+Sun Jan 6 21:14:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_initialize_str): forbid raw non ASCII character
+ for ASCII-8BIT regexp in non ASCII-8BIT script.
+
+Sun Jan 6 18:19:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_enc_str_buf_cat): declared.
+
+ * string.c (coderange_scan): extracted from rb_enc_str_coderange.
+ (rb_enc_str_coderange): use coderange_scan.
+ (rb_str_shared_replace): copy encoding and coderange.
+ (rb_enc_str_buf_cat): new function for linear complexity string
+ accumulation with encoding.
+ (rb_str_sub_bang): don't conflict substituted part and replacement.
+ (str_gsub): use rb_enc_str_buf_cat.
+ (rb_str_clear): clear coderange.
+
+ * re.c (rb_reg_regsub): use rb_enc_str_buf_cat.
+
+Sun Jan 6 17:55:44 2008 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * lib/securerandom.rb: Add Win32 support.
+
+Sun Jan 6 09:32:58 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: introduced some constants
+ (for internal use) and aliases (minute and second).
+
+ * sample/cal.rb: trivial adjustments.
+
+Sun Jan 6 01:38:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_initialize_str): /\x80/n is not an error even if script
+ encoding is EUC-JP.
+
+Sun Jan 6 00:48:12 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::DNS#each_address): get A record and then AAAA
+ record. [ruby-dev:32925]
+
+Sat Jan 5 21:48:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * vm_insnhelper.c (vm_callee_setup_arg): it is not inlinable because
+ alloca is used.
+
+Sat Jan 5 16:50:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_resize): copy if old data is not empty
+ [ruby-core:14785]
+
+Sat Jan 5 13:04:24 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): no need for intermediate object.
+
+Sat Jan 5 11:48:19 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (Init_Encoding): alias csWindows31J to Windows-31J.
+ IE6 accepts csWindows31J but Windows-31J.
+
+Sat Jan 5 02:21:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (rb_intern): memorize interned ID for constant
+ string, using gcc's __builtin_constant_p and statement expression.
+
+Sat Jan 5 02:14:45 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (trnext): should enable backslash escape.
+
+Sat Jan 5 01:50:32 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): move instance_eval and instance_exec to
+ BasicObject. [ruby-core:14747]
+
+ * lib/delegate.rb: should preserve new methods in BasicObject.
+
+Sat Jan 5 01:46:29 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): update according to the last API revert.
+
+Sat Jan 5 01:30:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h, re.c (rb_reg_new): keep interface same as
+ 1.8. [ruby-core:14583]
+
+ * include/ruby/intern.h, re.c (rb_reg_new_str): renamed, and defines
+ HAVE_RB_REG_NEW_STR macro to tell if it is available.
+
+ * include/ruby/encoding.h (rb_enc_reg_new): added.
+
+ * insns.def (toregexp), marshal.c (r_object0): use rb_reg_new_str().
+
+ * re.c (rb_reg_regcomp, rb_reg_s_union): ditto.
+
+Fri Jan 4 23:08:48 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_arg): use converted object. [ruby-core:14759]
+
+Fri Jan 4 16:24:58 2008 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/lib/digest/hmac.rb (Digest::HMAC#initialize): use
+ String#bytesize to avoid test errors on EUC-JP environment.
+
+Fri Jan 4 14:00:50 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_prepare_re): check string encoding. Oniguruma doesn't
+ support invalid encoding.
+
+Fri Jan 4 10:22:25 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_search): avoid inner loop for reverse search.
+
+ * regexec.c: unset USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
+ which is turned on since oniguruma 5.9.1.
+
+Fri Jan 4 02:53:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/euc_jp.c: remove eucjp_ prefix. breakpoint can be specified as
+ euc_jp.c:mbc_enc_len. avoid needless conflict by merge.
+
+ * enc/sjis.c: remove sjis_ prefix.
+
+ * enc/utf8.c: remove utf8_ prefix.
+
+ * enc/iso_8859_1.c: remove iso_8859_1_ prefix.
+
+ * enc/iso_8859_2.c: remove iso_8859_2_ prefix.
+
+ * enc/iso_8859_3.c: remove iso_8859_3_ prefix.
+
+ * enc/iso_8859_4.c: remove iso_8859_4_ prefix.
+
+ * enc/iso_8859_5.c: remove iso_8859_5_ prefix.
+
+ * enc/iso_8859_6.c: remove iso_8859_6_ prefix.
+
+ * enc/iso_8859_7.c: remove iso_8859_7_ prefix.
+
+ * enc/iso_8859_8.c: remove iso_8859_8_ prefix.
+
+ * enc/iso_8859_9.c: remove iso_8859_9_ prefix.
+
+ * enc/iso_8859_10.c: remove iso_8859_10_ prefix.
+
+ * enc/iso_8859_11.c: remove iso_8859_11_ prefix.
+
+ * enc/iso_8859_13.c: remove iso_8859_13_ prefix.
+
+ * enc/iso_8859_14.c: remove iso_8859_14_ prefix.
+
+ * enc/iso_8859_15.c: remove iso_8859_15_ prefix.
+
+ * enc/iso_8859_16.c: remove iso_8859_16_ prefix.
+
+Fri Jan 4 02:47:06 2008 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_search): iterate onig_match for reverse mode.
+
+Fri Jan 4 01:20:21 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32.h: only VC6 needs extern "C++" for math.h. [ruby-talk:285660]
+
+Fri Jan 4 00:54:43 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/oniguruma.h: Oniguruma 5.9.1 merged.
+
+Fri Jan 4 00:20:47 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_ungetc): move data in buffer if it is required to store the
+ argument.
+
+Thu Jan 3 21:56:07 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (st_strcasecmp): declared for STRCASECMP.
+ (st_strncasecmp): declared for STRNCASECMP.
+
+Thu Jan 3 20:24:48 2008 Koichi Sasada <ko1@atdot.net>
+
+ * eval_jump.c (rb_f_catch): Restore cfp if caught thrown object.
+
+Thu Jan 3 19:45:57 2008 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_eval.rb, test_knownbug.rb: move a fixed test.
+
+Thu Jan 3 18:39:12 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c: (rb_tolower, rb_toupper): body was exchanged.
+
+Thu Jan 3 17:54:01 2008 Tanaka Akira <akr@fsij.org>
+
+ * regenc.h (onigenc_ascii_is_code_ctype): put back.
+
+Thu Jan 3 17:33:09 2008 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_isalnum): defined.
+ (rb_isalpha): ditto.
+ (rb_isblank): ditto.
+ (rb_iscntrl): ditto.
+ (rb_isdigit): ditto.
+ (rb_isgraph): ditto.
+ (rb_islower): ditto.
+ (rb_isprint): ditto.
+ (rb_ispunct): ditto.
+ (rb_isspace): ditto.
+ (rb_isupper): ditto.
+ (rb_isxdigit): ditto.
+ (rb_tolower): ditto.
+ (rb_toupper): ditto.
+
+ * include/ruby/ruby.h: don't include include/ruby/encoding.h.
+ (rb_isascii): defined.
+ (rb_isalnum): declared.
+ (rb_isalpha): ditto.
+ (rb_isblank): ditto.
+ (rb_iscntrl): ditto.
+ (rb_isdigit): ditto.
+ (rb_isgraph): ditto.
+ (rb_islower): ditto.
+ (rb_isprint): ditto.
+ (rb_ispunct): ditto.
+ (rb_isspace): ditto.
+ (rb_isupper): ditto.
+ (rb_isxdigit): ditto.
+ (rb_tolower): ditto.
+ (rb_toupper): ditto.
+ (ISASCII): simplified.
+ (ISPRINT): ditto.
+ (ISSPACE): ditto.
+ (ISUPPER): ditto.
+ (ISLOWER): ditto.
+ (ISALNUM): ditto.
+ (ISALPHA): ditto.
+ (ISDIGIT): ditto.
+ (ISXDIGIT): ditto.
+ (TOUPPER): ditto.
+ (TOLOWER): ditto.
+
+ * include/ruby/encoding.h (rb_isascii): removed.
+ (rb_isalnum): ditto.
+ (rb_isalpha): ditto.
+ (rb_isblank): ditto.
+ (rb_iscntrl): ditto.
+ (rb_isdigit): ditto.
+ (rb_isgraph): ditto.
+ (rb_islower): ditto.
+ (rb_isprint): ditto.
+ (rb_ispunct): ditto.
+ (rb_isspace): ditto.
+ (rb_isupper): ditto.
+ (rb_isxdigit): ditto.
+ (rb_tolower): ditto.
+ (rb_toupper): ditto.
+
+ * common.mk: dependency updated.
+
+Thu Jan 3 15:10:26 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_isascii): simplified.
+ (rb_isalnum): call onigenc_ascii_is_code_ctype without indirect call.
+ (rb_isalpha): ditto.
+ (rb_isblank): ditto.
+ (rb_iscntrl): ditto.
+ (rb_isdigit): ditto.
+ (rb_isgraph): ditto.
+ (rb_islower): ditto.
+ (rb_isprint): ditto.
+ (rb_ispunct): ditto.
+ (rb_isspace): ditto.
+ (rb_isupper): ditto.
+ (rb_isxdigit): ditto.
+
+ * include/ruby/oniguruma.h (onigenc_ascii_is_code_ctype): declaration
+ moved from regenc.h.
+
+Thu Jan 3 14:37:17 2008 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (parser_magic_comment): use STRNCASECMP.
+ (set_file_encoding): ditto.
+
+Thu Jan 3 11:44:37 2008 Tanaka Akira <akr@fsij.org>
+
+ * time.c: don't mention an obsolete library, ParseDate.
+
+Thu Jan 3 11:28:58 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (fptr_finalize): clear errno first. [ruby-talk:284492]
+
+Thu Jan 3 05:02:36 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/us_ascii.c: add us_ascii_ prefix for functions to ease
+ setting breakpoint when debugging.
+
+ * enc/euc_jp.c: add eucjp_ prefix.
+
+ * enc/sjis.c: add sjis_ prefix.
+
+ * enc/iso_8859_1.c: add iso_8859_1_ prefix.
+
+ * enc/iso_8859_2.c: add iso_8859_2_ prefix.
+
+ * enc/iso_8859_3.c: add iso_8859_3_ prefix.
+
+ * enc/iso_8859_4.c: add iso_8859_4_ prefix.
+
+ * enc/iso_8859_5.c: add iso_8859_5_ prefix.
+
+ * enc/iso_8859_6.c: add iso_8859_6_ prefix.
+
+ * enc/iso_8859_7.c: add iso_8859_7_ prefix.
+
+Thu Jan 3 02:44:34 2008 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (conv_digit): use ISDIGIT, ISLOWER and ISUPPER.
+
+Wed Jan 2 23:50:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * util.c (ruby_strtoul): "0x", "+" and "-" is not a valid integer.
+ end of integer should be just after "0", the beginning, the
+ beginning respectively.
+
+Wed Jan 2 15:23:15 2008 Tanaka Akira <akr@fsij.org>
+
+ * util.c (ruby_strtoul): locale independent strtoul is implemented to
+ avoid "i".to_i(36) cause 0 under tr_TR locale on Debian GNU/Linux
+ 4.0 (Etch).
+ This is newly implemented, not a copy of missing/strtoul.c.
+
+ * include/ruby/ruby.h (ruby_strtoul): declared.
+ (STRTOUL): defined to use ruby_strtoul.
+
+ * bignum.c, pack.c, ext/socket/socket.c: use STRTOUL.
+
+ * configure.in (strtoul): don't check.
+
+ * missing/strtoul.c: removed.
+
+ * include/ruby/missing.h (strtoul): removed.
+
+ * common.mk (strtoul.o): removed.
+
+ * LEGAL (missing/strtoul.c): removed.
+
+Wed Jan 2 14:41:08 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk (strcasecmp.o): removed.
+ (strncasecmp.o): removed.
+
+ * include/ruby/missing.h (strcasecmp): removed.
+ (strncasecmp): removed.
+
+Wed Jan 2 11:34:57 2008 Tanaka Akira <akr@fsij.org>
+
+ * missing/strcasecmp.c: removed. Ruby don't use locale dependent
+ strcasecmp.
+
+ * missing/strncasecmp.c: ditto.
+
+ * configure.in: don't check strcasecmp and strncasecmp.
+
+ * LEGAL: missing/strcasecmp.c and missing/strncasecmp.c removed.
+
+Wed Jan 2 10:13:54 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * sample/time.rb: use Process.times instead of Time.times.
+
+Wed Jan 2 09:09:53 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * sample/goodfriday.rb: examples for date are enough. retired.
+
+Wed Jan 2 08:58:54 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * sample/cal.rb: just updated with the newest version.
+
+Wed Jan 2 01:19:31 2008 Tanaka Akira <akr@fsij.org>
+
+ * enc/depend: dependency updated.
+
+Wed Jan 2 00:14:41 2008 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c, utf8tbl.c}: Update nkf.
+
+ * ext/nkf/nkf.c: fix documents.
+
+ * ext/nkf/lib/kconv.rb: fix documents.
+ (Kconv.is*): use valid_encoding?.
+ (Kconv.isjis): defined.
+
+Tue Jan 1 23:17:03 2008 Tanaka Akira <akr@fsij.org>
+
+ * common.mk: dependency updated.
+
+Tue Jan 1 21:11:33 2008 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_isascii): defined.
+ (rb_isalnum): ditto.
+ (rb_isalpha): ditto.
+ (rb_isblank): ditto.
+ (rb_iscntrl): ditto.
+ (rb_isdigit): ditto.
+ (rb_isgraph): ditto.
+ (rb_islower): ditto.
+ (rb_isprint): ditto.
+ (rb_ispunct): ditto.
+ (rb_isspace): ditto.
+ (rb_isupper): ditto.
+ (rb_isxdigit): ditto.
+ (rb_tolower): ditto.
+ (rb_toupper): ditto.
+
+ * include/ruby/st.h (st_strcasecmp): declared.
+ (st_strncasecmp): ditto.
+
+ * st.c (type_strcasehash): use st_strcasecmp instead of strcasecmp.
+ (st_strcasecmp): defined.
+ (st_strncasecmp): ditto.
+
+ * include/ruby/ruby.h: include include/ruby/encoding.h.
+ (ISASCII): use rb_isascii.
+ (ISPRINT): use rb_isprint.
+ (ISSPACE): use rb_isspace.
+ (ISUPPER): use rb_isupper.
+ (ISLOWER): use rb_islower.
+ (ISALNUM): use rb_isalnum.
+ (ISALPHA): use rb_isalpha.
+ (ISDIGIT): use rb_isdigit.
+ (ISXDIGIT): use rb_isxdigit.
+ (TOUPPER): defined.
+ (TOLOWER): ditto.
+ (STRCASECMP): ditto.
+ (STRNCASECMP): ditto.
+
+ * dir.c, encoding.c, file.c, hash.c, process.c, ruby.c, time.c,
+ transcode.c, ext/readline/readline.c: use locale insensitive
+ functions. [ruby-core:14662]
+
+Tue Jan 1 17:50:47 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_mode_enc): encoding spec is not allowed in binary mode.
+ [ruby-dev:32913]
+
+Tue Jan 1 14:41:56 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml: 1.9 patch from Sam Ruby mentioned in his blog:
+ <http://intertwingly.net/blog/2007/12/31/Porting-REXML-to-Ruby-1-9>
+ [ruby-core:14639]
+
+Tue Jan 1 14:15:04 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_substr): offset movement bug. a patch from
+ Vincent Isambart <vincent.isambart at gmail.com> in
+ [ruby-core:14647]. [ruby-core:14644]
+
+Tue Jan 1 01:29:04 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_to_encoding): raises for non-nil, non-encoding,
+ non-string object. [ruby-core:14634]
+
+Tue Jan 1 01:04:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): rejects dummy encoding.
+
+Mon Dec 31 23:53:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options, process_options): delays finding encoding
+ until load_path is set.
+
+Mon Dec 31 23:27:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_resize): embeds if ptr is null. [ruby-dev:32819]
+
+Mon Dec 31 23:17:22 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_service):
+ call do_XXX which correspond with request method.
+ (WEBrick::HTTPProxyServer#do_CONNECT,do_GET,do_POST,do_HEAD): added.
+
+ * test/webrick/test_httpproxy.rb: add test for WEBrick::HTTPProxyServer.
+
+Mon Dec 31 22:53:29 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread_pthread.c (native_sleep): timespec tv_sec may overflow on
+ some platform. a patch from zunda <zunda616e AT yahoo.co.jp> in
+ [ruby-dev:32904].
+
+Mon Dec 31 19:35:20 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (IS_7BIT): removed.
+ (single_byte_optimizable): new function to test optimizationability
+ using single byte string.
+ (str_strlen): use single_byte_optimizable instead of
+ is_ascii_string.
+ (str_nth): rename argument: asc -> singlebyte.
+ (str_offset): ditto.
+ (rb_str_substr): use single_byte_optimizable instead of IS_7BIT.
+ (rb_str_index): ditto.
+ (rb_str_rindex): ditto.
+ (rb_str_splice): ditto.
+ (rb_str_justify): ditto.
+
+Mon Dec 31 07:39:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * main.c, goruby.c (RUBY_MAIN_INIT): removed.
+
+ * goruby.c (goruby_run_node): run after ruby_init_loadpath() so that
+ require works, and protect the call.
+
+Mon Dec 31 06:50:38 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: not use -I$(srcdir)/lib with $(MINIRUBY) for cross
+ compiling.
+
+ * configure.in, {win,bcc}32/Makefile.sub (MINIRUBY): -I$(srcdir)/lib
+ moved.
+
+Mon Dec 31 06:08:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_sprintf, rb_enc_vsprintf): prototyped.
+
+ * sprintf.c (rb_enc_sprintf, rb_enc_vsprintf): new functions to format
+ arguments with encoding.
+
+Sun Dec 30 23:48:00 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (String#/): define / as split, as association of
+ Array#*.
+
+Sun Dec 30 23:19:06 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * golf_prelude.rb (@@golf_hash): for performance improvement.
+
+Sun Dec 30 22:44:50 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (_valid_time?): I'm not sure to recommend such an
+ expression. but anyway it is acceptable now. [ruby-core:14580]
+
+Sun Dec 30 21:54:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (program, yycompile0): too early to drop lex_lastline in
+ rules.
+
+Sun Dec 30 19:23:23 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bootstraptest/test_knownbug.rb: support DOSISH.
+
+Sun Dec 30 17:43:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): registered rb_encoding differs from
+ ONIG_ENCODINGs.
+
+Sun Dec 30 13:56:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (program): clear input strings after all process.
+
+ * parse.y (parser_nextc, parser_yylex): should not drop lex_lastline
+ while lex_p is valid. [ruby-dev:32896]
+
+Sun Dec 30 10:54:49 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: rm largefile.h.
+
+ * common.mk: clean golf, conf*, preludes, and so on.
+
+ * enc/depend: silent and ignore error for rm.
+
+ * enc/Makefile.in: should define prefix and exec_prefix.
+
+Sun Dec 30 06:31:11 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (Init_encoding): register Windows-31J and its alias.
+ [ruby-dev:32843]
+
+ * ruby.c (proc_options): -Ks options means Windows-31J, not Shift_JIS.
+
+Sun Dec 30 06:27:38 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (depend_rules): need to convert `/' to `\' for windows
+ native commands.
+
+Sun Dec 30 01:43:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (DLDFLAGS): like as extensions. [ruby-core:14567]
+
+Sat Dec 29 23:48:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fflush): don't retry when wbuf modified by other threads.
+
+Sat Dec 29 22:44:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_regsub): returns the given string itself if nothing
+ changed.
+
+ * string.c (rb_str_sub_bang): keeps code-range as possible.
+
+ * string.c (str_gsub): adjusts code-range. [ruby-core:14566]
+
+Sat Dec 29 21:54:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (clean, distclean, realclean): should include clean-enc
+ and others. [ruby-dev:32887]
+
+Sat Dec 29 13:29:29 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/test_knownbug.rb: add a test reported by
+ Kazuhiro NISHIYAMA. [ruby-dev:32819].
+ add a test reported by Frederick Cheung. [ruby-core:14556].
+
+ * test/ruby/test_m17n.rb (test_gsub): add a test reported by
+ Sam Ruby. [ruby-core:14566]
+
+Sat Dec 29 04:46:58 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert_throws):
+ throw won't raise NameError nor ThreadError but ArgumentError on 1.9.
+ (Test::Unit::Assertions#assert_not_throws): ditto.
+
+ * test/testunit/test_assertions.rb: add assertions for throwing some
+ objects other than Symbol.
+
+Sat Dec 29 03:10:12 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_unread): fix typo.
+
+Sat Dec 29 02:18:45 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_unread): adhoc workaround for non-binary mode of some DOSish
+ platforms. this is not perfect and safety, but works with most cases.
+
+Fri Dec 28 23:53:18 2007 Tanaka Akira <akr@fsij.org>
+
+ * ext/strscan/strscan.c (str_new): new function for allocate an string
+ with encoding propagation.
+ (extract_range): use str_new.
+ (extract_beg_len): ditto.
+ (strscan_peek): ditto.
+ (strscan_rest): ditto.
+
+Fri Dec 28 20:18:42 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * golf_prelude.rb (Object.say): derived from Perl 5.10.
+
+Fri Dec 28 19:39:34 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (rb_locale_encoding): should check return value from
+ rb_locale_charmap().
+
+ * ruby.c (locale_encoding): removed.
+
+ * ruby.c (process_options): use rb_locale_encoding() instead of
+ locale_encoding().
+
+ * ext/readline/readline.c (readline_readline): use locale encoding
+ instead of input IO's encoding. [ruby-dev:32872]
+
+Fri Dec 28 19:29:07 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline, readline_s_set_input):
+ use mReadline directly because self is not always same.
+
+Fri Dec 28 19:11:28 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_locale_encoding): defined.
+
+ * include/ruby/encoding.h (rb_locale_encoding): declared.
+
+Fri Dec 28 18:45:29 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): set encoding to result.
+
+ * ext/readline/readline.c (readline_s_set_input, Init_readline): save
+ input IO to hidden instance variable.
+
+Fri Dec 28 01:55:04 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c (transcode_dispatch): reverted some of the changes
+ in r14746.
+
+ * transcode.c, enc/trans/single_byte.c: Added conversions to/from
+ US-ASCII and ASCII-8BIT (using data tables).
+
+ * enc/trans/single_byte.c: Some spacing/ordering changes due to
+ automatic data file generation.
+
+ * transcode_data.h, transcode.c: Preliminary code for using
+ micro-conversion functions.
+
+ * test/ruby/test_transcode.rb: Added some tests for US-ASCII and
+ ASCII-8BIT conversions.
+
+Fri Dec 28 17:33:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * time.c (make_time_t): verify mktime and timegm result.
+
+Fri Dec 28 16:36:33 2007 NARUSE, Yui <naruse@airemix.com>
+
+ * lib/resolv.rb (Resolv::DNS#each_address): now returns IPv6 address.
+
+Fri Dec 28 16:10:00 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/dot/dot.rb: Move to lib/rdoc/dot.rb. Fix namespacing.
+
+ * lib/rdoc/diagram.rb: Update for 1.9.
+
+Fri Dec 28 15:38:29 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/sample/: Move to sample/rdoc/markup directory.
+
+Fri Dec 28 15:15:12 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/irb/completion.rb: Remove garbage ("X=1").
+
+Fri Dec 28 15:12:05 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc, test/rdoc: Move RDoc tests out of lib/.
+
+Fri Dec 28 15:10:47 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (set_base_encoding, enc_base_encoding): renamed
+ based_encoding as base_encoding.
+
+Fri Dec 28 13:57:49 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (Integer#each): use alias simply.
+
+Fri Dec 28 13:45:21 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * golf_prelude.rb (Object.const_missing): No need to delegate to
+ superclass. Just raise a NameError when none matches.
+
+Fri Dec 28 13:18:47 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, test/rss/test_version.rb: 0.2.2 -> 0.2.3.
+
+ * lib/rss/parser.rb, test/rss/test_parser.rb: supported "-" in tag name.
+ Reported by Ray Chen. Thanks.
+
+Fri Dec 28 13:07:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (os_obj_of): returns an enumerator if no block given. based on
+ a patch from Yugui <yugui AT yugui.sakura.ne.jp>. [ruby-dev:32828]
+
+Fri Dec 28 11:46:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/ytab.sed: skip yydestruct hack unless yymsg exists, for bison
+ 1.8 series. [ruby-dev:32825]
+
+Fri Dec 28 11:39:02 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (Object.quine): need to join because SCRIPT_LINES__[]
+ returns an array of lines.
+
+Fri Dec 28 11:16:53 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (Object.quine): get the script itself.
+
+Fri Dec 28 10:06:54 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * golf_prelude.rb (Object.const_missing): Auto-complete constants.
+
+Fri Dec 28 01:55:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_dispatch): allows transcoding from/to
+ ASCII-8BIT.
+
+Fri Dec 28 01:47:25 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (Integer): Integer is now enumerable on goruby.
+
+Fri Dec 28 01:27:47 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/rdoc/rdoc.rb (parse_files): don't depend on the default external
+ encoding.
+
+Fri Dec 28 00:01:57 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (golf_prelude.c): use MINIRUBY instead of BASERUBY because
+ tool/compile_prelude.rb requires rbconfig.rb.
+
+Thu Dec 27 23:56:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: should not use the libraries under the source directory
+ at cross compiling.
+
+Thu Dec 27 23:43:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (EXTOBJS): uses ruby.rc always for other than
+ rubyw.exe.
+
+Thu Dec 27 22:31:37 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/commands/update_command.rb (do_rubygems_update): use
+ portable and safely ENV operation. reported in
+ <http://slashdot.jp/developers/comments.pl?sid=384937&cid=1273085>.
+
+Thu Dec 27 21:47:04 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * mkconfig.rb (prefix): archdir is "1.9.0", not "1.9". reported in
+ <http://slashdot.jp/developers/comments.pl?sid=384937&cid=1273085>.
+
+Thu Dec 27 17:57:30 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y, transcode_data.h, transcode.c, lib/weakref.rb,
+ lib/irb/ruby-lex.rb, lib/irb/lc/error.rb, enc/trans/japanese.c:
+ change "illegal" to "invalid" in a context which doesn't against
+ a law.
+
+Thu Dec 27 16:37:06 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_s_union): show encodings in error message.
+
+Thu Dec 27 15:25:16 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_codelen): show codepoint in error message.
+
+ * include/ruby/encoding.h (rb_enc_codelen): comment it returns
+ positive integer.
+
+ * string.c (rb_str_concat): rb_enc_codelen doesn't return 0.
+
+Thu Dec 27 15:18:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_codelen): error message refined.
+
+Thu Dec 27 15:11:27 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_check): show encodings in error message.
+
+Thu Dec 27 15:02:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_casecmp): fixed using a wrong variable.
+ [ruby-list:44402]
+
+Thu Dec 27 14:34:38 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fflush): checks wbuf modification by other threads.
+ not perfect. it need locks.
+
+Thu Dec 27 10:44:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: a patch to support IRIX from Andrew
+ Thompson <andrew@hijacked.us> in [ruby-core:14447].
+
+Thu Dec 27 02:25:45 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_tmpsrc): retry to create file if Errno::EACCES
+ occurs. this is a workaround for mswin32.
+
+Wed Dec 26 22:47:31 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::DNS::Name.==): fix for other is array of
+ Resolv::DNS::Label::Str.
+
+ * lib/resolv.rb (Resolv::DNS::MessageEncoder#put_label): String#string
+ is not defined, so replace to_s.
+
+ * lib/resolv.rb (Resolv::IPv6#to_name): ip6.int is obsoleted by
+ ip6.arpa.
+
+Wed Dec 26 21:27:02 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (_xmlschema): some improvements.
+
+ * lib/date/format.rb (_parse): a new hint compfunc. [experimental]
+
+Wed Dec 26 17:31:08 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_fflush): check closed fptr after rb_write_internal to avoid
+ SEGV on MacOS X.
+
+Wed Dec 26 16:10:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (Init_String): defines chars method.
+
+Wed Dec 26 14:38:43 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: install goruby if exists.
+
+Wed Dec 26 13:55:02 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Cleaned up some code with Ruby 1.9 idioms.
+
+Wed Dec 26 13:29:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (tmpbuf): use rb_str_tmp_new().
+
+Wed Dec 26 00:57:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/json/ext/generator/generator.c (Init_generator): requires
+ json/common.rb for GeneratorError, when static linked. a patch from
+ Kenta Murata <muraken AT gmail.com> in [ruby-dev:32789].
+
+Tue Dec 25 23:33:55 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * development version 1.9.0 released.
+
+Tue Dec 25 23:25:29 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/node.rb (REXML::Node::indent): should initialize rv
+ variable. a patch from Tadayoshi Funaba <tadf AT dotrb.org> in
+ [ruby-dev:32783].
+
+Tue Dec 25 23:16:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): encoding option in shebang and RUBYOPT did not
+ work, do not store alloca()ed string in a parent scope struct.
+
+Tue Dec 25 22:56:52 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): keep this file.
+
+Tue Dec 25 22:55:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (TIMEZONE_VOID): typo.
+
+Tue Dec 25 22:45:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns2vm.rb: add encoding option to shebang.
+
+Tue Dec 25 22:13:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/pending.rb: add pending issue.
+
+Tue Dec 25 22:12:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: remove Thread.critical(=).
+
+Tue Dec 25 21:44:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: add version number.
+
+Tue Dec 25 21:32:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix stack consistency error
+ (break is compiled to throw instead of jump insn).
+ these problems are reported by Yusuke ENDOH <mame AT tsg.ne.jp>
+
+ * bootstraptest/test_knownbug.rb, test_syntax.rb: move fixed test.
+
+Tue Dec 25 21:32:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (struct parser_params): make parser_ruby_sourcefile common
+ field. it is used by node_newnode.
+ new field parser_ruby_sourcefile_string for ripper.
+ (parser_initialize): initialize parser_ruby_sourcefile in ripper.
+ (ripper_initialize): initialize parser_ruby_sourcefile_string.
+
+Tue Dec 25 21:26:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.c): depends on tool/ytab.sed.
+
+ * tool/ytab.sed: hack for bison 2.1.
+
+Tue Dec 25 20:24:58 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_ssl.c: Only show a warning if the default
+ DH callback is actually used.
+
+ * ext/openssl/ossl_rand.c: New method: random_add().
+
+Tue Dec 25 20:24:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/make-snapshot: argument check, and cleanup exported directory.
+
+Tue Dec 25 20:07:13 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * tool/make-snapshot: more portable.
+
+Tue Dec 25 19:01:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.h (rb_enc_mbc_to_codepoint): wrapper for
+ ONIGENC_MBC_TO_CODE().
+
+ * string.c (rb_str_succ): deal with invalid sequence as binary.
+
+Tue Dec 25 18:40:46 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c: all methods need $SAFE < 1.
+
+ vm.c: comment out debug functions.
+
+Tue Dec 25 18:37:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (appendline): move RS comparison to rb_io_getline_1().
+
+Tue Dec 25 18:27:51 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_each_line): don't call rb_enc_codepoint with empty
+ string.
+
+Tue Dec 25 18:06:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_inspect): don't call rb_enc_codepoint with empty
+ string. fix '#'.inspect.
+
+ * encoding.c (rb_enc_codepoint): raise on empty string.
+
+Tue Dec 25 17:48:28 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm.c (rb_frame_method_id_and_class): new function to get the
+ method id and class of the current frame.
+
+Tue Dec 25 17:32:04 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb (create_makefile): Add a missing dependency on the
+ target directory for each .rb file. This will hopefully fix
+ parallel make (-jN). Tested on FreeBSD.
+
+Tue Dec 25 16:51:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/japanese.c (rb_{from,to}_{SHIFT_JIS,EUC_JP}): inversed
+ from_encoding and to_encoding.
+
+Tue Dec 25 16:41:57 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * golf_prelude.rb (h): add new method for all golfers.
+
+Tue Dec 25 16:37:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/trans/japanese.c (rb_to_EUC_JP): fixed typo.
+
+Tue Dec 25 16:34:58 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/depend: add dependencies. [ruby-dev:32760]
+
+Tue Dec 25 16:26:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h, thread.c: rename is_ruby_native_thread() to
+ ruby_native_thread_p().
+
+ * ext/tk/tcltklib.c: apply it.
+
+Tue Dec 25 16:15:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (clean-enc): clean encoding objects.
+
+Tue Dec 25 16:04:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, goruby.c, golf_prelude.rb: for golfers.
+
+ * main.c (main): hook for embedding applications.
+
+ * tool/compile_prelude.rb: can change initialize function name.
+
+Tue Dec 25 15:59:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_register): do not use based_encoding to check if
+ dummy encoding.
+
+Tue Dec 25 15:55:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_succ): fix for string with non-alphanumeric chars.
+
+Tue Dec 25 15:42:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_external_encoding): should return nil for
+ pass-through write IO. [ruby-dev:32740]
+
+Tue Dec 25 15:24:57 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (appendline): initialize rslen to 1 if rsptr is 0.
+ rslen is the length of the delimiter.
+ if only delim is given, it should be 1.
+ [ruby-dev:32746]
+
+Tue Dec 25 15:21:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_dispatch): fix for multistep transcode.
+
+Tue Dec 25 15:07:51 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/trans/single_byte.c (Init_single_byte): renamed.
+
+Tue Dec 25 15:00:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_yield): when multiple values yielded from #each
+ pack them into an array. [ruby-dev:32708]
+
+ * enum.c: all method but all?, any?, one? and none? passed packed
+ multiple values to the block.
+
+ * enum.c (collect_all): should pack all values. [ruby-core:14410]
+
+Tue Dec 25 14:57:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (COMMONOBJS): transcode_data_*.c moved under enc/trans.
+
+ * transcode_data.h (rb_transcoding, rb_transcoder): prefixed.
+
+ * transcode.c (rb_register_transcoder, rb_declare_transcoder): split
+ declaration and registration. [ruby-dev:32704]
+
+ * transcode.c (transcode_dispatch): autoload pre-declared transcoder.
+
+ * transcode.c (str_transcode): use rb_define_dummy_encoding().
+
+ * transcode.c (Init_transcode): initialize transcoder tables.
+
+ * enc/trans/single_byte.c, enc/trans/japanese.c: moved from top.
+
+Tue Dec 25 14:20:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mkmf.rb (map_dir): should generate path including $top_srcdir.
+
+Tue Dec 25 14:09:16 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Fixed test failures caused by changes to Ruby.
+
+ * test/csv/tc_serialization, test/csv/tc_csv_parsing, test/csv/tc_features:
+ Fixed test failures caused by changes to Ruby.
+
+Tue Dec 25 14:11:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_encoding_set): missing return type.
+
+Tue Dec 25 14:03:48 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rinda/test_rinda.rb (MockClock#{_forward, forward, sleep}):
+ Change default value of n as @reso from nil. If default value is
+ nil, n.+ is not defined.
+
+Tue Dec 25 13:54:01 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io_m17n.rb (test_pipe): fixed.
+ [ruby-dev:32743]
+
+Tue Dec 25 13:44:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_wait_fd_rw): should check EBADF on select().
+
+Tue Dec 25 13:30:03 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c, thread_pthread.h, thread_win32.c,
+ thread_win32.c: make some functions static functions.
+ a patch from Tadashi Saito <shiba AT mail2.accsnet.ne.jp>
+ in [ruby-core:14407]
+
+Tue Dec 25 13:23:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io_m17n.rb (test_write_noenc): don't mix text and
+ binary mode. [ruby-dev:32743]
+
+Tue Dec 25 13:13:09 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * README.EXT.ja, dir.c, eval.c, eval_intern.h, lex.c.src,
+ lex.c.blt, keywords, load.c, thread.c: more ANSI'ize.
+ a patch from Tadashi Saito <shiba AT mail2.accsnet.ne.jp>
+ in [ruby-dev:32725]
+
+Tue Dec 25 13:07:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, thread.c, cont.c: add RUBY_VM_SET_INTERRUPT(),
+ RUBY_VM_SET_TIMER_INTERRUPT(), RUBY_VM_INTERRUPTED().
+
+ * thread.c, thread_pthread.c, thread_win32.c: fix to ignore time slice
+ event until sleep.
+
+ * bootstraptest/test_thread.rb: add a test for time limited join test.
+
+Tue Dec 25 12:42:59 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (Init_VM): remove unused code.
+ [ruby-dev:32732]
+
+Tue Dec 25 12:32:32 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: Moving a static counter from inside register_transcoder()
+ and register_functional_transcoder() to outside the functions, renaming
+ from n to next_transcoder_position. Fixes 3) in [ruby-dev:32715].
+
+Tue Dec 25 12:22:17 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * sample/from.rb: follow Ruby 1.9 libraries.
+
+Tue Dec 25 12:21:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (method_inspect): preserve encoding of the method name.
+
+Tue Dec 25 12:07:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (BASERUBY): delayed error until BASERUBY is used.
+
+Tue Dec 25 11:48:35 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/README: removed obsoleted files: dbmtest.rb,
+ getopts.test, mrshtest.rb, regx.rb.
+
+Tue Dec 25 11:45:34 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb: Import the FasterCSV source as the new CSV class.
+
+ * test/csv/*: Added all applicable tests from FasterCSV.
+
+Tue Dec 25 11:33:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (report_bug): uses ruby_description.
+
+Tue Dec 25 11:20:38 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix stack consistency error.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp> [ruby-dev:32720]
+
+ * bootstraptest/test_syntax.rb: add 2 tests for above.
+
+Tue Dec 25 11:14:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c, vm_core.h: comment out unused fields.
+
+Tue Dec 25 11:02:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: check frame is FINAL when creating env.
+ [ruby-core:14395]
+
+ * bootstraptest/test_block.rb: add a test for above.
+
+Tue Dec 25 09:12:13 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/: Enable RDoc debugging only with $DEBUG_RDOC.
+
+Tue Dec 25 08:37:43 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/csv.rb, test/csv/test_csv.rb: Removed in preparation for
+ FasterCSV code import.
+
+Tue Dec 25 08:27:43 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Fix test failures.
+
+ * test/rubygems/test_gem.rb: Fix test failure.
+
+Tue Dec 25 06:23:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb, test_literal.rb: move fixed test.
+
+Tue Dec 25 06:19:04 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * sample/biorhythm.rb: follow Ruby 1.9 libraries.
+
+Tue Dec 25 06:15:01 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: add dummy toplevel frame.
+
+Tue Dec 25 05:44:56 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Fix uninitialized variable warning.
+ [ruby-talk:284582]
+
+ * lib/irb/output-method.rb: Remove unused #foo method.
+ [ruby-talk:284582]
+
+Tue Dec 25 05:24:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile): clear local table if node == 0.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp> [ruby-dev:32530]
+
+ * vm.c: clear VM stack.
+
+Tue Dec 25 04:23:32 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (rb_id2str): fill klass of returned string as rb_cString.
+ some strings are allocated before rb_cString is created.
+ This prevents a "called on terminated object" error by
+ ObjectSpace.each_object(Module) {|m| p m.name }.
+
+Tue Dec 25 03:51:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix stack consistency bug.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
+
+Tue Dec 25 03:19:47 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * tool/make-snapshot: must create configure and lex.c.
+
+Tue Dec 25 03:16:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_pipe): now takes up to two arguments. allow its
+ external/internal encoding by Encoding objects.
+
+ * io.c (rb_io_set_encoding): new method to set encoding of the IO.
+
+ * io.c (argf_set_encoding): ditto.
+
+Tue Dec 25 03:08:53 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * pack.c (pack_pack): use NUM2LONG instead of NUM2INT.
+
+ * numeric.c (fix_lshift, fix_aref): use SIZEOF_LONG instead of
+ SIZEOF_VALUE.
+
+ * bignum.c (big2ulong, rb_big_aref): ditto.
+
+Tue Dec 25 02:55:26 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/rexml/element.rb (REXML::Elements#each): yield in each
+ should be called with one parameter. [ruby-dev:32708]
+
+Tue Dec 25 02:15:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): add a "pop" insn after break
+ to fix stack consistency error. [ruby-core:14385]
+
+ * bootstraptest/test_syntax.rb: add tests for above.
+
+ * bootstraptest/test_knownbug.rb: remove fixed bug.
+
+Tue Dec 25 01:54:36 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * id.c (Init_id): remove several unused symbols. [ruby-core:14362]
+
+ * compile.c (iseq_specialized_instruction): do not use
+ VM_CALL_SEND_BANG flag any longer.
+
+Tue Dec 25 01:42:41 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/rdoc/rdoc.rb (parse_files): interpret coding cookie.
+
+Tue Dec 25 01:38:04 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (method_name): preserve Symbol's encoding.
+
+ * numeric.c (fix_id2name): ditto.
+
+Tue Dec 25 01:19:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/encoding.h (rb_enc_left_char_head): new utility macro.
+
+ * include/ruby/encoding.h (rb_enc_right_char_head): ditto.
+
+ * io.c (appendline): does multibyte RS search in the function.
+
+ * io.c (prepare_getline_args): RS may be nil.
+
+ * io.c (rb_io_getc): should process character based on external
+ encoding, when transcoding required.
+
+Tue Dec 25 01:07:57 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/irb/output-method.rb: translate a comment to English to
+ avoid mix of EUC-JP comment and UTF-8 Date keyword.
+ svn substitute Date keyword with UTF-8 weekday on UTF-8 locale.
+
+Tue Dec 25 00:27:28 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservley/cgihandler.rb
+ (WEBrick::HTTPServlet::CGIHandler#do_GET): m17nized.
+
+Mon Dec 24 23:55:29 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/cgi.rb (CGI::escape): m17nized.
+ (CGI::unescape): ditto.
+ (CGI::escapeHTML): ditto.
+ (CGI::unescapeHTML): ditto.
+
+Mon Dec 24 23:32:24 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * transcode_data_japanese.c (select_iso_2022_mode): '\e' is not valid.
+
+Mon Dec 24 23:13:09 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/rdoc/diagram.rb (RDoc::Diagram#initialize): use fileuitls
+ instead of ftools.
+
+Mon Dec 24 23:04:57 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/ftools.rb: removed obsoleted lib. use fileutils instead (by eban).
+
+ * lib/rdoc/rdoc.rb, lib/rdoc/generators/*, lib/rake.rb: let it use
+ fileutils instead of ftools.
+
+ * lib/shell/command-processor.rb: removed unused references to ftools.
+
+ * lib/parsedate.rb: removed. see [ruby-core:12535], [ruby-dev:31969].
+
+ * lib/README: updated.
+
+Mon Dec 24 23:01:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI::Buffer): use Meta ===. [ruby-core:14295]
+
+Mon Dec 24 22:46:42 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c: register_functional_transcoder() added.
+ (init_transcoder_table(: register ISO-2022-JP.
+ (str_transcode): add preprocessor and postprocessor.
+
+ * transcode_data_japanese.c: add ISO-2022-JP support.
+
+ * transcode_data.h: moved transcoder and transcoding definition from
+ transcode.c.
+
+Mon Dec 24 20:29:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/io/nonblock/test_flush.rb: fix test for 1.9.
+
+Mon Dec 24 20:23:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/rinda/test_rinda.rb: revert last commit because this test seems
+ to have timing problem to halt all tests.
+
+Mon Dec 24 20:18:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/rinda/test_rinda.rb: enable rinda test.
+
+Mon Dec 24 20:16:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * instruby.rb: fix rdoc install dir.
+
+Mon Dec 24 18:37:32 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_prepare_re): show regexp encoding in the error message.
+
+Mon Dec 24 18:23:32 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (rb_exc_raise): ANSI style.
+ (rb_exc_fatal): ditto.
+ (rb_raise_jump): ditto.
+ (rb_jump_tag): ditto.
+ (rb_block_given_p): ditto.
+
+ * variable.c (original_module): ditto.
+
+Mon Dec 24 18:05:09 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (Init_ISeq): disable ISeq.load() because there is no verifier.
+
+ * iseq.c, proc.c: add ISeq.disasm(method).
+
+Mon Dec 24 18:06:03 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval_method.c (Init_eval_method): extracted from Init_eval
+ for rdoc to find rb_mod_remove_method, rb_mod_undef_method and
+ rb_mod_alias_method.
+
+ * eval.c (Init_eval): call Init_eval_method.
+
+Mon Dec 24 17:59:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_lock): reverted.
+
+ * thread.c (rb_barrier_wait): check for recursive wait.
+
+Mon Dec 24 17:50:54 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (function_call_may_return_twice_jmp_buf): removed.
+ (function_call_may_return_twice_false): removed.
+ [ruby-core:14335]
+
+Mon Dec 24 17:40:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (node_name.inc, miniprelude.c, prelude.c): nmake cannot
+ handle target vpath in other than implicit rules.
+
+Mon Dec 24 17:20:34 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/{mailread.rb,getopts.rb,parsearg.rb}: removed.
+ see [ruby-core:12535], [ruby-dev:31969].
+
+Mon Dec 24 17:12:57 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h, random.c, array.c:
+ change exported name.
+ genrand_int32 -> rb_genrand_int32.
+ genrand_real -> rb_genrand_real.
+ [ruby-core:14335]
+
+Mon Dec 24 17:06:37 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * {lib,test}/{soap,wsdl,xsd}: removed soap4r along to the discussion
+ at ruby-core and ruby-dev. see [ruby-core:12535], [ruby-dev:31969].
+
+Mon Dec 24 17:06:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_feature_p): returns loading path name too.
+
+ * load.c (search_required): returns path too if feature is being
+ loaded. [ruby-dev:32048] [TODO: refactoring]
+
+Mon Dec 24 16:29:12 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * sample/openssl: reviewed and remove dependency on getopts.rb.
+
+Mon Dec 24 16:18:57 2007 Koichi Sasada <ko1@atdot.net>
+
+ * mkconfig.rb: add teeny to CONFIG['ruby_version'].
+
+Mon Dec 24 15:55:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * tool/compile.rb, getrev.rb, runruby.rb: remove unused tools.
+
+Mon Dec 24 15:42:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, cygwin/GNUmakefile.in, */Makefile.sub,
+ djgpp/config.hin.: version dependent directory names now contain
+ teeny.
+
+Mon Dec 24 15:29:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/serb.rb: removed.
+
+Mon Dec 24 13:55:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_proc_new), vm.c (invoke_block): removed u3.state magic.
+ [ruby-core:14310]
+
+ * test/ruby/test_symbol.rb (test_to_proc): a test from Frederick
+ Cheung <frederick.cheung AT gmail.com>.
+
+Mon Dec 24 13:43:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_atfork): should not leave living_threads
+ referring freed table while allocating new table.
+
+Mon Dec 24 12:49:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in, lib/mkmf.rb, */Makefile.sub: specify
+ compiled output file name explicitly.
+
+ * enc/Makefile.in, enc/depend: now makes compiler to put generated
+ files under directories corresponding to the each source.
+ enc/trans supported.
+
+ * enc/make_encmake.rb: evaluates depend file before Makefile.in so
+ that the former can influence to CONFIG.
+
+Mon Dec 24 12:35:03 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win{32,ce}/Makefile.sub (MFLAGS): defaulted to -l.
+
+Mon Dec 24 12:08:10 2007 Eric Hodel <drbrain@segment7.net>
+
+ * /, ext/: Add svn:ignore for OS X Xcode 3's conftest.dSYM
+ directories.
+
+Mon Dec 24 11:56:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: should not pass MAKEFLAGS to recursive make.
+ + normal make: MFLAGS are set and command line options and macros
+ are all passed silently.
+ + GNU make: ditto, and all options and macros in MAKEFLAGS are in
+ effect.
+ + nmake: MFLAGS is not set and MAKEFLAGS has only options without
+ hyphen, no macros exist in any variables.
+ + Borland make: ditto, and command line macros cannot override
+ macros in makefile, so passing them is vain.
+
+ * {bcc32,win{32,ce}}/Makefile.sub (SET_MAKE): set MFLAGS which is not
+ set by default, to get rid of chaotic situation of MFLAGS/MAKEFLAGS.
+
+Mon Dec 24 11:32:44 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): fixed to keep transitivity.
+ [ruby-dev:32693]
+
+Mon Dec 24 11:20:31 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/ri_options.rb: Fix display of GEMDIRS, make command
+ examples match ri's name.
+
+ * lib/rdoc/ri/ri_paths.rb: Only allow latest ri dirs in ri output.
+
+Mon Dec 24 10:49:04 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri/mailto.rb, lib/uri/common.rb: Fix Regexp warnings. Patch
+ #16524 from Kornelius Kalnbach, [ruby-core:14302].
+
+Mon Dec 24 10:37:38 2007 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Remove methods from Gem, not QuickLoader, to fix
+ warnings.
+
+Mon Dec 24 09:45:45 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c, transcode_data_one_byte.c, transcode_data_japanese.c:
+ added rb_ prefix to external data symbols.
+
+Mon Dec 24 05:32:22 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): updated documentation. a patch from Keita
+ Yamaguchi <keita.yamaguchi AT gmail.com> in [ruby-dev:32686].
+
+ * README.EXT: updated. a patch from Tadashi Saito
+ <shiba AT mail2.accsnet.ne.jp> in [ruby-core:14328].
+
+ * array.c (rb_ary_at): updated documentation. a patch from Tadashi
+ Saito <shiba AT mail2.accsnet.ne.jp> in [ruby-core:14330].
+
+Mon Dec 24 05:13:04 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_trans): should associate new encoding if modified.
+
+Mon Dec 24 04:04:12 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/net/http/test_https.rb: should rescue LoadError.
+
+Mon Dec 24 03:57:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c, vm.h: fix to support sparc machine.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
+
+Mon Dec 24 03:35:19 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: remove additional "-".
+
+Mon Dec 24 02:59:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_check_readable): should not fill fptr->enc always.
+ read-write IO (e.g. socket) does not work. [ruby-dev:32685]
+
+ * io.c (io_read_encoding): retrieve reading encoding.
+
+ * io.c (prepare_getline_args): convert RS to external encoding.
+
+ * string.c (str_new_shared): was setting embedding flag of wrong
+ string object. [ruby-dev:32685]
+
+ * io.c (io_enc_str): should preserve default_external encoding.
+
+ * io.c (appendline): should do multibyte aware RS search.
+
+Mon Dec 24 02:06:35 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_open): documentation update.
+
+ * io.c (rb_io_s_pipe): ditto.
+
+ * io.c (io_fwrite): wrong encoding destination.
+
+ * io.c (rb_io_external_encoding): should return the encoding of
+ the file reading.
+
+ * io.c (rb_io_internal_encoding): should return the encoding of
+ read string.
+
+Mon Dec 24 01:46:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_pipe): allow specifying read-side encoding.
+
+ * io.c (io_enc_str): wrong encoding destination.
+
+Mon Dec 24 01:03:17 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): comparison including broken
+ coderange strings do not consider encoding.
+
+Mon Dec 24 00:57:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (open_key_args): IO direct methods (foreach, readlines,
+ read) now takes keyword argument: encoding, mode, open_args.
+
+Mon Dec 24 00:52:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_read): encoding argument reverted.
+
+ * io.c (mode_enc): independent function to share code.
+
+ * io.c (rb_io_internal_encoding): new method.
+
+Mon Dec 24 00:47:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb (TestBeginEndBlock::test_endblockwarn):
+ rename endblockwarn.rb to endblockwarn_rb to avoid unnecessary
+ warning in make test.
+
+Sun Dec 23 23:03:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_codepoint): implemented to raise invalid
+ encoding.
+
+ * include/ruby/encoding.h (rb_enc_codepoint): macro is replaced as a
+ declaration.
+
+Sun Dec 23 19:45:22 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.httpdate): fix 2 digits year for 20xx.
+ reported by Tadayoshi Funaba. [ruby-dev:32687]
+
+Sun Dec 23 19:33:42 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/open-uri.rb: Fix method redefined warning. [ruby-core:14304]
+
+Sun Dec 23 18:31:49 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_enc_get): use rb_define_dummy_encoding.
+
+ * ext/nkf/nkf.c (Init_nkf): use rb_nkf_enc_get("ASCII").
+
+ * ext/nkf/nkf-utf8/nkf.c: Update 1.161.
+
+ * ext/nkf/nkf-utf9/config.h: default output encoding is now UTF-8.
+
+ * ext/nkf/lib/kconv.rb (Kconv.kconv): replace Encoding#name by
+ Encoding#to_s.
+
+Sun Dec 23 18:02:52 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/gem_open_uri.rb: Fix version check.
+
+Sun Dec 23 17:24:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_init): add eucJP as an alias of EUC-JP.
+
+Sun Dec 23 17:00:23 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/time.rb (Time.httpdate): use Time.utc for
+ "day-of-week, dd-mon-yy HH::MM:SS GMT" format.
+
+Sun Dec 23 16:12:40 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Fix 1.9 warnings.
+
+Sun Dec 23 15:28:37 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems, test/rubygems: Fix new 1.9 warnings.
+
+Sun Dec 23 14:43:10 2007 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Use require to load rubygems.rb so the correct path
+ is in $LOADED_FEATURES on RubyGems upgrade.
+
+Sun Dec 23 11:26:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_call): use exact argument array interface.
+ [ruby-core:14279]
+
+Sun Dec 23 11:01:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_binmode_m): removed C99ism.
+
+Sun Dec 23 10:23:23 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode_data_one_byte.c: Better (and more honest) optimization.
+
+ * transcode_data_japanese.c: First optimization step.
+
+Sun Dec 23 09:07:02 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h, encoding.c, re.c, io.c, parse.y, numeric.c,
+ ruby.c, transcode.c, ext/nkf/nkf.c: rename rb_ascii_encoding to
+ rb_ascii8bit_encoding. rb_ascii_encoding is ambiguous with
+ ASCII-8BIT and US-ASCII.
+
+Sun Dec 23 03:35:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.h: use patchlevel if revision is not set.
+
+ * {bcc32,win{32,ce}}/setup.mak (-version-): skip including revision.h.
+
+ * common.mk (srcs): new target to generated sources.
+
+ * common.mk (encs, ext/ripper/ripper.c): MAKEFLAGS needs -.
+
+ * enc/depend, enc/make_encmake.rb: use erb.
+
+Sun Dec 23 01:56:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_mode_enc): do not set encoding unless explicitly
+ specified.
+
+ * io.c (rb_io_check_readable): fill fptr->enc by default_external
+ if it's empty.
+
+ * io.c (io_enc_str): fptr->enc is always set for reading IO (by
+ rb_io_check_readable(fptr)).
+
+Sun Dec 23 01:18:06 2007 David Flanagan <david@davidflanagan.com>
+
+ * io.c, io.h: temporary patch to partially implement
+ transcode-on-read and transcode-on-write
+
+Sun Dec 23 00:48:05 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/net/imap/test_imap.rb: added tests for SSL.
+
+Sat Dec 22 21:10:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_genericresolver_node_import): should
+ not set instance variable "@kind" before initializing it.
+ [ruby-dev:32677]
+
+Sat Dec 22 19:52:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_objectspace.rb: fix condition.
+
+Sat Dec 22 19:17:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ext/probeprofiler/: removed.
+
+Sat Dec 22 19:14:38 2007 Koichi Sasada <ko1@atdot.net>
+
+ * process.c (rb_f_fork): Unsupport Kernel.fork() on NetBSD.
+
+Sat Dec 22 18:20:13 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (version.o): add dependency. [ruby-dev:32680]
+
+Sat Dec 22 17:45:11 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (Init_nkf): use rb_ascii_encoding() for
+ rb_nkf_enc_get("US-ASCII").
+ * if use rb_nkf_enc_get("US-ASCII"), ruby will crash - this is bug?
+
+Sat Dec 22 17:39:03 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb ($extmk): fixed broken condition.
+
+Sat Dec 22 17:35:59 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8.c: Update nkf.c rev:1.157.
+
+ * ext/nkf/nkf.c (rb_nkf_enc_get): replicate proper based encoding.
+
+ * ext/nkf/kconv.c (Kconv#kconv, to*): use self.encoding as from_enc
+ when from_enc isn't given.
+
+Sat Dec 22 17:06:50 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/net/ssl.rb (OpenSSL::SSL::SSLContext.build): removed.
+
+ * ext/openssl/lib/net/ssl.rb (OpenSSL::SSL::SSLContext#set_params):
+ new method to set suitable SSL parameters.
+
+ * lib/net/pop.rb, lib/net/http.rb, lib/net/imap.rb,
+ test/openssl/test_ssl.rb: follow above change.
+
+ * test/net/http/test_https.rb: refine error case.
+
+Sat Dec 22 16:58:49 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (encode_utf7): accept UTF-8 strings.
+
+ * lib/net/imap.rb (decode_utf7): return UTF-8 strings.
+
+Sat Dec 22 15:56:36 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * transcode_data_japanese: typo.
+
+Sat Dec 22 15:54:54 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * ChangeLog: Information for last patch got lost, fixed
+
+ * test/ruby/test_transcode.rb: Added simple tests for
+ EUC-JP and Shift_JIS and tests for ASCII-only range
+
+Sat Dec 22 15:45:45 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode_data_one_byte: slightly optimized
+
+ * transcode_data_japanese: new data file for EUC-JP and SHIFT_JIS
+ (not yet optimized; tests to follow; data from
+ http://nkf.sourceforge.jp/ucm/{SJIS|eucJP}-nkf.ucm)
+
+ * common.mk, transcode.c: Adjusted for transcode_data_japanese
+
+Sat Dec 22 15:30:13 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * */Makefile.sub (MFLAGS): define unless defined.
+
+Sat Dec 22 15:17:40 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb ($extmk): set true only when under ext/ or tool/.
+
+Sat Dec 22 15:14:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encs, ext/ripper/ripper.c): needs MFLAGS.
+
+ * configure.in (STRINGIZE): stringizing macro.
+
+ * include/ruby/defines.h (STRINGIZE): fallback.
+
+ * tool/make-snapshot: new file.
+
+ * version.c (ruby_description, ruby_copyright): string constants for
+ -v option.
+
+Sat Dec 22 15:03:37 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (initialize): fixed documentation.
+
+Sat Dec 22 15:01:16 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/pop.rb (enable_ssl): use OpenSSL::SSL::SSLContext.build
+ instead of SSLContext.new (default verify mode is now
+ OpenSSL::SSL::VERIFY_PEER).
+
+Sat Dec 22 14:45:21 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: shouldn't freeze nil. [ruby-dev:32677]
+
+Sat Dec 22 14:27:27 2007 Tanaka Akira <akr@fsij.org>
+
+ * regenc.c (onigenc_ascii_is_code_ctype): moved from enc/ascii.c.
+
+ * regenc.h (onigenc_ascii_is_code_ctype): declared.
+
+ * enc/ascii.c: use onigenc_ascii_is_code_ctype.
+
+ * enc/us_ascii.c: new file for US-ASCII.
+
+Sat Dec 22 14:30:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reg_named_capture_assign_iter): allows non-ascii names and
+ get rid of reserved word IDs.
+
+Sat Dec 22 14:18:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_float.rb, test_sprintf.rb: fix test place.
+
+Sat Dec 22 14:17:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_objectspace.rb: skip frozen string.
+
+Sat Dec 22 14:02:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_permutation): add volatile to avoid GC problem.
+
+Sat Dec 22 11:47:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_obj_instance_eval): use class of immediate objects.
+
+ * test/ruby/test_eval.rb: fix a test.
+
+Sat Dec 22 11:37:06 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): win32 support.
+
+Sat Dec 22 11:31:14 2007 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Place bin dir before lib dir so gem bin stubs work.
+
+Sat Dec 22 11:05:44 2007 Jim Weirich <jim@tardis.local>
+
+ * lib/rake.rb (Rake): Added Rake and related libraries to the
+ source code base.
+
+Sat Dec 22 10:30:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * tool/insns2vm.rb: moved from lib/vm/instruction.rb.
+
+Sat Dec 22 10:25:44 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (reg_named_capture_assign_iter): captured name should
+ not be reserved word. a patch from Keita Yamaguchi
+ <keita.yamaguchi AT gmail.com> in [ruby-dev:32675].
+
+ * parse.y (reg_named_capture_assign_iter): just ignore the
+ captures that do not have valid local variable name.
+
+Sat Dec 22 10:19:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_method_name): now __method__ and __callee__ are
+ aliases. [ruby-core:14244]
+
+Sat Dec 22 08:29:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_buf_append): improvement for non-broken coded
+ strings.
+
+Sat Dec 22 06:30:04 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_fork.rb: skip if fork is not unsupported.
+
+ * bootstraptest/test_io.rb: skip if require failed.
+
+Sat Dec 22 06:09:12 2007 David Flanagan <david@davidflanagan.com>
+
+ * io.c: fix typo in rdoc comment
+
+Sat Dec 22 05:09:43 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_str_new, rb_intern3): rb_default_encoding() renamed.
+
+ * ext/nkf/nkf.c (rb_nkf_putchar): ditto.
+
+Sat Dec 22 03:54:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_ascii_encoding): renamed from previous
+ rb_default_encoding().
+
+Sat Dec 22 02:49:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (command): block from cmd_brace_block was ignored.
+ [ruby-dev:32644]
+
+ * re.c (rb_reg_prepare_re): stop ENCODING_NONE warning if the
+ encoding of the str is ASCII-8BIT.
+
+Sat Dec 22 01:52:11 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_ungetc): avoid buffer relocation, which might cause
+ serious problem under concurrent situation.
+
+Sat Dec 22 01:35:41 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (ARG_ENCODING_NONE): defined for /.../n option.
+ (REG_ENCODING_NONE): ditto.
+ (rb_char_to_option_kcode): return ARG_ENCODING_NONE for n.
+ (rb_reg_prepare_re): warn /ascii/n =~ "non-ascii".
+ (rb_reg_initialize): set REG_ENCODING_NONE from ARG_ENCODING_NONE.
+
+Sat Dec 22 01:23:10 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/json/test_json_addition.rb (test_core): do not use Time.now
+ because JSON can't hold nsec.
+
+Sat Dec 22 01:10:30 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tk/sample/tkextlib/vu/canvSticker2.rb,
+ ext/tk/sample/demos-{en,jp}/bind.rb: fix typo. [ruby-dev:32668]
+
+Sat Dec 22 00:56:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/test.rb (valid_syntax): force_encoding input script.
+
+Fri Dec 21 23:48:38 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (depend_rules): suffixes list broken. fixed.
+
+Fri Dec 21 20:18:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_mul0): remove unused variable.
+
+ * bignum.c (bigdivrem): ditto.
+
+Fri Dec 21 20:13:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_catch_obj, rb_throw_obj): prototyped.
+
+ * include/ruby/intern.h (rb_fiber_alive_p): prototyped.
+
+Fri Dec 21 20:09:18 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_succ): retry increasing until valid char is found.
+
+Fri Dec 21 20:00:02 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_replicate): now creates first class encoding.
+
+ * encoding.c (rb_define_dummy_encoding): always based on the default
+ encoding.
+
+ * encoding.c (rb_enc_dummy_p): check if dummy.
+
+ * encoding.c (enc_inspect): shows if dummy.
+
+ * encoding.c (Init_Encoding): added dummy? method
+
+ * include/ruby/encoding.h (ENCODING_INLINE_MAX): increased.
+
+Fri Dec 21 18:40:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * io.c: write() should be in blocking region.
+
+ * bootstraptest/test_io.rb, test_knownbug.rb: move a fixed test.
+
+Fri Dec 21 17:56:30 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: provisional support on Ruby-VM.
+
+ * ext/tk/MANUAL_tcltklib.eng, ext/tk/MANUAL_tcltklib.eucj:
+ modify document about new functions.
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/labelframe.rb,
+ ext/tk/lib/tk/frame.rb, ext/tk/lib/tk/toplevel.rb,
+ ext/tk/lib/tk/scrollbar.rb, ext/tk/lib/tk/message.rb,
+ ext/tk/lib/tk/listbox.rb, ext/tk/lib/tk/text.rb,
+ ext/tk/lib/tk/scale.rb, ext/tk/lib/tk/entry.rb,
+ ext/tk/lib/tk/ttk_selector.rb, ext/tk/lib/tk/menu.rb,
+ ext/tk/lib/tk/label.rb, ext/tk/lib/tk/spinbox.rb,
+ ext/tk/lib/tk/textmark.rb, ext/tk/lib/tk/winpkg.rb,
+ ext/tk/lib/tk/checkbutton.rb, ext/tk/lib/tk/panedwindow.rb,
+ ext/tk/lib/tk/texttag.rb, ext/tk/lib/tk/root.rb,
+ ext/tk/lib/tk/textimage.rb, ext/tk/lib/tk/radiobutton.rb,
+ ext/tk/lib/tk/package.rb, ext/tk/lib/tk/macpkg.rb,
+ ext/tk/lib/tk/composite.rb, ext/tk/lib/tk/autoload.rb,
+ ext/tk/lib/tk/canvas.rb, ext/tk/lib/tk/button.rb,
+ ext/tk/lib/tk/textwindow.rb,
+ ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb,
+ ext/tk/lib/tkextlib/tile/style.rb,
+ ext/tk/lib/tkextlib/tile/tscrollbar.rb,
+ ext/tk/lib/tkextlib/tile/tpaned.rb, ext/tk/lib/tkextlib/tile.rb,
+ ext/tk/extconf.rb: support Tcl/Tk8.5 (partial, not complete).
+
+ * ext/tk/sample/demos-jp/widget,
+ ext/tk/sample/demos-jp/pendulum.rb,
+ ext/tk/sample/demos-jp/bind.rb,
+ ext/tk/sample/tkextlib/vu/canvSticker2.rb,
+ ext/tk/sample/demos-en/pendulum.rb,
+ ext/tk/sample/demos-en/bind.rb: remove $KCODE and minor bug fix.
+
+Fri Dec 21 17:49:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_str_transcode_bang): returns self if no conversion.
+ [ruby-dev:32662]
+
+Fri Dec 21 17:44:47 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Update to RubyGems 1.0.1, r1581
+
+Fri Dec 21 17:32:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/pending.rb: renamed from featurebug.rb.
+ This file contains bugs which is known but will not be
+ fixed in days.
+
+Fri Dec 21 17:31:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.c (dummy_gdb_enums.various): added ENCODING and CODERANGE
+ constants.
+
+ * .gdbinit: use enum constants.
+
+Fri Dec 21 17:28:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/featurebug.rb: added.
+
+ * bootstraptest/test_knownbug.rb: move a feature bug.
+
+Fri Dec 21 17:25:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_atfork): fix to mark thread object.
+ [ruby-dev:32404]
+
+ * bootstraptest/test_knownbug.rb, test_fork.rb: move a fixed test.
+
+Fri Dec 21 17:07:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * gc.h: extern variable should not be initialized.
+
+ * thread_pthread.c: add a parameter.
+
+Fri Dec 21 16:50:43 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (Init_Encoding): use enc_name as to_s.
+ (enc_inspect): renamed from enc_to_s. add "#" at beginning.
+
+Fri Dec 21 16:37:43 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/config.h (MIME_DECODE_DEFAULT, X0201_DEFAULT):
+ defined as FALSE. nkf and kconv don't decode MIME encoded string
+ and don't convert JIS X 0201 Katakana.
+
+ * test/nkf/test_kconv.rb: fix tests.
+
+Fri Dec 21 16:33:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_iter_i): adjusted for rb_block_call_func.
+
+ * include/ruby/ruby.h (rb_block_call_func): function to be called back
+ as block.
+
+Fri Dec 21 16:25:25 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * common.mk, transcode_data_iso_8859.c: renamed to
+ transcode_data_one_byte.c.
+
+Fri Dec 21 16:10:30 2007 Shigeo Kobayashi <shigeo@tinyforest.jp>
+
+ * ext/bigdecimal/bigdecimal.c (VpMidRound): Round method bug
+ pointed by Ryan Platte fixed(Patch to the patch from "NATORI
+ Shin"). [ruby-talk:273360]
+
+Fri Dec 21 16:06:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (append_utf8): use rb_utf8_encoding() instead of
+ rb_enc_find("utf-8").
+
+Fri Dec 21 15:59:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_init): use enc_register_at() directly.
+
+ * encoding.c (rb_utf8_encoding): returns utf-8 encoding.
+
+ * include/ruby/encoding.h (rb_utf8_encoding): prototyped.
+
+ * parse.y (UTF8_ENC): uses rb_utf8_encoding().
+
+Fri Dec 21 15:31:59 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_read): allow specifying encoding explicitly.
+
+ * io.c (rb_io_binmode): specifies encoding to ASCII-8BIT (binary).
+
+ * io.c (rb_io_s_read): IO should be in binary mode when offset is
+ specified.
+
+ * encoding.c (rb_to_encoding): returns default encoding if no
+ corresponding encoding found.
+
+Fri Dec 21 15:24:22 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (initialize): accept service name. changed
+ the default value of the old style +verify+ argument to true.
+
+Fri Dec 21 15:15:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (rb_garbage_collect): new function for debugging.
+
+Fri Dec 21 15:16:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_to_encoding_index): should return error instead of
+ exception even if type is incorrect.
+
+Fri Dec 21 14:58:27 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_init_copy): prohibit cloning of
+ generators since Fibers cannot be copied.
+
+ * enumerator.c (enumerator_init_copy): typo fixed.
+
+Fri Dec 21 14:46:07 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (Init_IO): define IO::BINARY even if O_BINARY is not exist.
+
+Fri Dec 21 14:01:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_system.rb (TestSystem::valid_syntax): apply
+ ASCII-8BIT encoding explicitly.
+
+ * re.c (rb_reg_prepare_re): add encoding name in the message.
+
+Fri Dec 21 13:54:05 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c: change "character encodings differ" error messages.
+
+Fri Dec 21 13:46:58 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_register): set encoding constant.
+
+ * encoding.c (rb_enc_find_index): replace non-alphanumeric chars with
+ underscores, so that initialize function can be called.
+
+ * encoding.c (rb_enc_find_index): extension libraries have lower case
+ names conventionally.
+
+ * ruby.c (proc_options, process_options): finds encoding after
+ load_path is initialized.
+
+Fri Dec 21 13:10:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_external_encoding): new method.
+
+ * encoding.c (rb_enc_from_encoding): returns Qnil for NULL
+ encoding.
+
+ * io.c (rb_io_external_encoding): should fill delayed
+ initialization for STDIN.
+
+Fri Dec 21 13:09:11 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_locale_charmap): return nil if no locale information.
+
+Fri Dec 21 12:55:39 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/runit, lib/rubyunit.rb, test/testunit/runit: removed.
+
+Fri Dec 21 12:45:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_chomp_bang): avoid unnecessary loop using
+ ONIGENC_LEFT_ADJUST_CHAR_HEAD().
+
+Fri Dec 21 12:32:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (Init_File): File.exists? revived.
+
+ * dir.c (Init_Dir): Dir.exists? again.
+
+Fri Dec 21 12:26:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: remove "illegal".
+
+Fri Dec 21 12:22:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * keywords, parse.y (__ENCODING__): represent script encoding.
+
+Fri Dec 21 12:16:50 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_is_ascii_only_p): new method ascii_only?.
+
+Fri Dec 21 12:11:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_mode_enc): set default external encoding if no
+ encoding specified explicitly.
+
+Fri Dec 21 12:00:34 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: check langinfo.h and locale.h.
+
+ * encoding.c: use langinfo.h only if available.
+
+ * main.c: use locale.h only if available.
+
+Fri Dec 21 11:47:56 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c: include locale.h
+ (rb_locale_charmap): new method Encoding.locale_charmap for
+ nl_langinfo(CODESET).
+
+ * include/ruby/encoding.h (rb_locale_charmap): declared.
+
+ * main.c (main): call setlocale with LC_CTYPE.
+
+ * ruby.c (locale_encoding): use rb_locale_charmap.
+
+Fri Dec 21 11:35:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_dump.c: fix typo. Reported by Yuki Mitsui.
+
+Fri Dec 21 11:28:00 2007 Tanaka Akira <akr@fsij.org>
+
+ * regerror.c, string.c, io.c, lib/getoptlong.rb, lib/net/imap.rb,
+ compile.c, sprintf.c, parse.y, ext/win32ole/win32ole.c,
+ ext/tk/sample/demos-en/entry3.rb, ext/tk/lib/tcltk.rb,
+ ext/openssl/ossl_bn.c, numeric.c, vm.c,
+ benchmark/bm_so_meteor_contest.rb, bignum.c, ruby.c: don't "illegal"
+ for non law violation context.
+
+Fri Dec 21 11:23:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (enc.mk): depends on $(RBCONFIG) instead of rbconfig.rb.
+
+ * encoding.c (Init_Encoding): ISO-8859-1 is no longer a replica.
+
+ * regenc.h (OnigEncodingDefine): names of extension and encoding can
+ differ.
+
+ * enc/Makefile.in: always shared.
+
+ * enc/depend (deffile): should not upcase.
+
+ * enc/{ascii,euc_jp,sjis,utf8,iso_8859_{1..16}}.c: fix for Init.
+
+Fri Dec 21 09:26:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: use erb.
+
+Fri Dec 21 08:07:35 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_next): should call next_init() if fiber
+ is dead already. [ruby-dev:32459]
+
+Fri Dec 21 01:21:49 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLContext.build):
+ enable CRL checking by default.
+
+Fri Dec 21 01:20:56 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/http.rb (Net::HTTP#connect): use
+ OpenSSL::SSL::SSLContext.build instead of SSLContext.new (default
+ verify mode is now OpenSSL::SSL::VERIFY_PEER).
+
+ * lib/net/https.rb: SSL parameters are defined by attr_accessor.
+
+ * test/net/http/test_https.rb: add test for HTTPS features.
+
+Fri Dec 21 01:11:37 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * io.c (select_internal): should return original value.
+
+Fri Dec 21 00:26:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_trans): wrong encoding check for tree strings.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_tr_s): "invalid mbstring
+ sequence" is not an error to be tested.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_tr): ditto.
+
+Thu Dec 20 19:29:07 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (initialize): the second argument is an option
+ hash now. use SSLContext.build to specify SSL parameters.
+
+Thu Dec 20 19:11:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (native_thread_apply_priority): check
+ _POSIX_PRIORITY_SCHEDULING for OpenBSD.
+
+Thu Dec 20 18:33:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in: add libthr for FreeBSD.
+
+Thu Dec 20 18:17:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk, *.ci: renamed to *.c.
+
+ * eval_load.c: renamed to load.c.
+
+Thu Dec 20 17:36:01 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Import RubyGems 1.0.0, r1575.
+
+Thu Dec 20 17:18:38 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c: support Proc#binding.
+
+ * sample/test.rb: add a test.
+
+Thu Dec 20 17:15:15 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * pack.c: Slight change to documentation ('character' ->
+ 'byte (C char)'). [ruby-core:13126], see also [ruby-core:13998].
+
+Thu Dec 20 17:07:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (enc.mk): depends on rbconfig.rb.
+
+ * regenc.h (OnigEncodingDefine): external encoding definition macro.
+
+ * enc/Makefile.in: fix for linking.
+
+ * enc/depend, enc/make_encmake.rb: fix for Windows.
+
+ * enc/{ascii,euc_jp,sjis,utf8,iso_8859_{1..16}}.c: renamed.
+
+Thu Dec 20 16:42:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (find_line_no): return 0 if not found.
+
+Thu Dec 20 16:04:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci, vm.c, vm_core.h: change interface of
+ vm_invoke_block() to specify block ptr. [ruby-talk:266422]
+
+ * cont.c, eval_jump.ci, insns.def, proc.c, signal.c, thread.c:
+ apply above change.
+
+ * bootstraptest/test_knownbug.rb: move fixed bug.
+
+ * bootstraptest/test_block.rb: ditto. and add a test.
+
+Thu Dec 20 15:47:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/iso_8859_{1..16}.c: renamed.
+
+Thu Dec 20 09:59:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_expandarray): fix sp increase place.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-dev:32581].
+
+ * bootstraptest/test_massign.rb: add a test for above.
+
+ * bootstraptest/test_syntax.rb: fix last committed test.
+
+Thu Dec 20 09:47:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_syntax.rb: add a test.
+
+Thu Dec 20 09:40:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each/NODE_RETURN): fix stack consistency.
+
+Thu Dec 20 09:42:11 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (big2str_orig): access beyond memory region cause crash
+ on interrupt. a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in
+ [ruby-dev:32651]. [ruby-dev:32641]
+
+Thu Dec 20 09:06:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_index): wrong starting position.
+
+Thu Dec 20 06:34:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): add pop after throw as return.
+
+ * bootstraptest/test_knownbug.rb, test_syntax.rb: move resolved test.
+
+ * vm_core.h, iseq.c, compile.h: add debug output code.
+
+Thu Dec 20 04:57:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): remove unused retry entry.
+
+Thu Dec 20 04:15:41 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * */Makefile.sub (DEFS, RM): output to config.status.
+
+Thu Dec 20 02:59:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * common.mk (encs): create encoding directory.
+
+Thu Dec 20 02:50:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/iso8859_{1..16}.c: adjust for ruby.
+
+Thu Dec 20 02:28:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/iso8859_{1..16}.c: imported from Onigiruma 5.9.0.
+
+Thu Dec 20 02:23:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (RM): added.
+
+ * enc/depend (encs): sort in alpha-numeric order.
+
+ * enc/depend (clean, distclean): added.
+
+Thu Dec 20 01:10:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): should handle upper level eval iseq
+ from break/next, and COMPILE_ERROR() breaks only one block.
+ [ruby-dev:31372]
+
+Thu Dec 20 00:07:36 2007 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/drbtest.rb (test_07_public_private_protected_missing):
+ followed current Ruby specification.
+
+Wed Dec 19 23:57:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_inspect, dir_path, dir_tell): check for frozen and closed
+ is not needed. [ruby-dev:32640]
+
+Wed Dec 19 22:59:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_sublen): adjust position if position is not at the
+ head of a character.
+
+ * string.c (rb_str_chomp_bang): check if match start at the head
+ of a character.
+
+ * string.c (rb_str_chomp_bang): wrong adjust condition.
+
+ * string.c (rb_str_rindex): comparison length should be based on
+ bytes, not characters.
+
+ * string.c (rb_str_rindex_m): too much adjustment.
+
+ * re.c (reg_match_pos): pos adjustment should be based on
+ characters.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_str_insert): test updated
+ to check negative offset behavior.
+
+ * string.c (rb_str_each_line): should consider rslen.
+
+ * string.c (rb_str_buf_append): should propagate encoding.
+
+ * string.c (rb_str_each_line): ditto.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_str_each_line): should
+ check encoding as well.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_str_each_line): empty
+ array can not propagate encoding; should not check.
+
+Wed Dec 19 21:42:18 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_regsub): should set checked encoding.
+
+ * string.c (rb_str_sub_bang): applied r14212 too.
+
+Wed Dec 19 20:40:01 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (bigmul1): C99ism.
+
+ * bignum.c (bigdivrem1): need dummy return value.
+
+Wed Dec 19 19:18:06 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Updated.
+
+ * ext/nkf/nkf.c (rb_nkf_enc_get): added.
+ (find encoding or replicate default encoding)
+
+ * ext/nkf/nkf.c (NKF::<ENCODING>): redefine encoding constant.
+
+ * ext/nkf/lib/kconv.rb (Kconv::<ENCODING>): redefined as Encoding.
+
+ * ext/nkf/lib/kconv.rb: refactoring.
+
+Wed Dec 19 19:11:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_mul0): blocking check for bigger numbers.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-dev:32632].
+
+ * bignum.c (bigdivrem): ditto.
+
+Wed Dec 19 17:34:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): remove "retry" in block.
+ ("iter{retry}" cause syntax error)
+ Currently, "begin; ...; rescue; iter{retry}; end" cause
+ syntax error too.
+
+ * bootstraptest/test_jump.rb: ditto.
+
+ * lib/drb/invokemethod.rb: ditto.
+
+ * sample/drb/darrayc.rb: ditto.
+
+ * sample/test.rb: ditto.
+
+ * test/drb/drbtest.rb: ditto.
+
+ * test/ruby/test_iterator.rb: ditto.
+
+ * sample/test.rb: add a 'test' directory on the SYSTEM test.
+
+Wed Dec 19 17:12:59 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb, test_block.rb:
+ move fixed bug.
+
+ * bootstraptest/test_m17n.rb: added.
+
+Wed Dec 19 16:59:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (errinfo_place): skip if error is Fixnum. [ruby-dev:32608]
+
+ * bootstraptest/test_exception.rb, test_known_bug.rb: move fixed bug.
+
+Wed Dec 19 16:31:58 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reg_named_capture_assign_iter): remove C99 dependency.
+
+ * parse.y (reg_named_capture_assign_iter): get rid of creating
+ unnecessary ID.
+
+ * parse.y (rb_enc_symname2_p): check for non-nul-terminated string.
+
+Wed Dec 19 15:37:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insnhelper.ci (vm_yield_with_cfunc): call cfunc with
+ (argv[0], data, argc, argv) to pass all arguments.
+
+ * enumerator.c (enumerator_each_i): adapted to new calling
+ convention.
+
+Wed Dec 19 15:13:20 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_justify): should propagate encoding from pad
+ string too.
+
+Wed Dec 19 13:57:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (TIMEZONE_VOID): check whether timezone requires zero
+ arguments. [ruby-dev:32631]
+
+Wed Dec 19 13:22:14 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (NKF::_ENCODING): removed.
+
+ * ext/nkf/nkf.c (rb_nkf_kconv): renamed to rb_nkf_convert.
+
+ * ext/nkf/nkf.c (rb_nkf_convert): set encoding.
+
+ * ext/nkf/nkf.c (rb_nkf_guess1): removed.
+
+ * ext/nkf/nkf.c (rb_nkf_guess2): renamed to rb_nkf_guess.
+
+ * ext/nkf/nkf.c (rb_nkf_guess):
+ guess method now returns encoding object.
+
+ * ext/nkf/nkf-utf8/nkf.c: Update to nkf 2.0.8 2007-12-19.
+
+Wed Dec 19 10:52:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_cstr_to_inum): an underscore succeeding after octal
+ prefix is allowed. [ruby-core:14139]
+
+Wed Dec 19 00:09:19 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_cstr_to_inum): wrong radix check. a patch from
+ Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-dev:32628].
+
+ * bignum.c (big2str_find_n1): ditto.
+
+Tue Dec 18 23:53:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): fix for segfault. [ruby-dev:31372]
+
+Tue Dec 18 23:44:32 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/net/http/utils.rb: split TestNetHTTPUtils module from
+ test/net/http/test_http.rb. and start HTTP server in each test case.
+
+Tue Dec 18 23:27:51 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#accept_client):
+ should rescue Errno::EINVAL from TCPServer#accept. this exception
+ might occur if the server socket is not in ready to listen.
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#accept_client):
+ don't call TCPServer#close if the :ShutdownSocketWithoutClose is set.
+
+ * lib/webrick/config.rb (WEBrick::Config::General): add new parameter
+ :ShutdownSocketWithoutClose.
+
+Tue Dec 18 22:51:47 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#shutdown):
+ new method which calls TCPSocket#shutdown of the underlying socket.
+
+Tue Dec 18 22:11:50 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/rss/parser.rb, lib/rss/atom.rb, lib/rss/rss.rb,
+ test/rss/rss-assertions.rb, test/rss/test_atom.rb: use
+ pack/unpack("m") instead of base64 library.
+
+ * lib/webrick/httpproxy.rb: use delete("\n") instead of chomp/chop
+ because the result of pack("m") might be multi-line.
+
+Tue Dec 18 22:12:35 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci, vm.c: rewrite sp manipulation around method/block
+ invocation. [ruby-dev:32547]
+
+Tue Dec 18 22:11:23 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/win32/lib/win32/sspi.rb: use pack/unpack("m") instead of
+ base64 library which was already removed.
+
+Tue Dec 18 21:09:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (invoke_block): merge 2 stack overflow checks.
+
+Tue Dec 18 20:58:35 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insnhelper.ci, insns.def, object.c, vm.c, vm.h:
+ optimize !@, != method invocation.
+
+ * id.c, id.h: ditto.
+
+ * bootstraptest/test_syntax.rb: add tests for above.
+
+Tue Dec 18 18:10:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: add issues.
+
+Tue Dec 18 20:22:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (arg tMATCH arg): call reg_named_capture_assign_gen if regexp
+ literal is used.
+ (reg_named_capture_assign_gen): assign the result of named capture
+ into local variables.
+ [ruby-dev:32588]
+
+ * re.c: document the assignment by named captures.
+
+Tue Dec 18 18:09:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_splice): propagate encoding.
+
+ * string.c (rb_str_subpat_set): ditto.
+
+Tue Dec 18 17:27:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_freeze): preserve frozen state of immediate
+ values in internal hash table, a la generic_ivar.
+
+ * object.c (rb_obj_frozen_p): check immediate values too.
+
+ * variable.c (generic_ivar_set): add frozen check fro immediate
+ values.
+
+Tue Dec 18 17:04:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_str_transcode_bang, rb_str_transcode): set new
+ encoding even if no conversion is done because of 7bit only.
+ [ruby-dev:32591]
+
+Tue Dec 18 15:43:59 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encs, ext/ripper/ripper.c): other options must come
+ before MAKEFLAGS in GNU make.
+
+Tue Dec 18 15:19:55 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_rb.rb: Don't call private fail anymore.
+
+Tue Dec 18 15:17:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encs, ext/ripper/ripper.c): pass MAKEFLAGS.
+
+Tue Dec 18 14:45:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (op_tbl): remove duplication to avoid symbol aliases.
+
+Tue Dec 18 14:39:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_nth): need not to raise out-of-range exception.
+
+ * test/ruby/test_m17n.rb (TestM17N::test_str_aref_len): removed
+ debug print.
+
+Tue Dec 18 14:05:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend: get rid of target expanded as empty for nmake.
+
+Tue Dec 18 07:56:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * proc.c (rb_obj_public_method): Object#public_method to retrieve
+ public method object.
+
+ * proc.c (rb_mod_public_instance_method): Module#public_instance_method
+ to retrieve public instance method from class / module.
+
+ * proc.c (mnew): visibility check added.
+
+ * eval_error.ci (rb_print_undef): add rb_ prefix.
+
+ * eval_error.ci (rb_print_undef): add visibility in the error
+ message.
+
+Tue Dec 18 05:54:26 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/Env.rb, lib/base64.rb, lib/importenv.rb, lib/eregex.rb: removed.
+
+ * lib/ping.rb, lib/readbytes.rb: removed
+
+Tue Dec 18 02:30:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (BUILTIN_ENCS): removed.
+
+ * common.mk (enc.mk): pass BUILTIN_ENCS from command line.
+
+ * enc/depend: ditto.
+
+ * enc/make_encmake.rb: ditto.
+
+Tue Dec 18 01:46:48 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): need to clear output buffer to avoid
+ broken encoding compatibility check.
+
+Tue Dec 18 01:40:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (depend_rules): inserts ruby to only headers.
+
+Tue Dec 18 01:21:19 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_encode_length): chomp eol style modifiers.
+
+ * parse.y (parser_magic_comment): ditto.
+
+ * parse.y (set_file_encoding): ditto.
+
+Tue Dec 18 01:15:44 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encs): added dependencies.
+
+ * enc/Makefile.in, enc/depend, enc/make_encmake.rb: moved serb code.
+
+ * lib/mkmf.rb (depend_rules): now takes content string, not file name.
+
+ * win32/enc-setup.mak: overrides default target.
+
+Tue Dec 18 00:26:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): raise error if non-Unicode fixed
+ encoding option is specified for regexp literals with \u{}
+ escapes.
+
+ * string.c (rb_str_squeeze_bang): should squeeze multibyte
+ characters as well.
+
+Mon Dec 17 21:41:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/enc-setup.mak: extracts BUILTIN_ENCOBJS.
+
+ * tool/compile_prelude.rb: needs srcdir.
+
+Mon Dec 17 21:24:04 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * common.mk (miniprelude.c): add -I$(srcdir).
+
+Mon Dec 17 20:53:27 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_set_ssl_version):
+ new method OpenSSL::SSL::SSLContext#ssl_version to wrap
+ SSL_CTX_set_ssl_version.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_get_verify_result):
+ new method OpenSSL::SSL::SSLSocket#verify_result to wrap
+ SSL_get_verify_result.
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLContext.build):
+ new method to build OpenSSL::SSL::SSLContext with Hash parameters.
+ this method provides safety default parameters than SSLContext.new.
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL.verify_certificate_identity):
+ new module function: pull out identity verification process
+ from OpenSSL::SSL::SSLSocket#post_connection_check.
+
+Mon Dec 17 18:42:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (scan_once): need no encoding compatibility check.
+ it's done inside of re_reg_search().
+
+ * string.c (rb_str_split_m): ditto.
+
+ * re.c (rb_reg_regsub): ditto.
+
+Mon Dec 17 17:50:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_index): check if substring is broken.
+
+ * string.c (rb_str_rindex): ditto.
+
+ * string.c (rb_str_succ): should carry over.
+
+Mon Dec 17 17:47:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (encs): new target to compile external encodings.
+
+ * enc/Makefile.in: became a serb template.
+
+ * enc/make_encmake.rb: creates enc.mk from enc/Makefile.in using serb.
+
+ * lib/mkmf.rb (relative_from): moved from ext/extmk.rb.
+
+ * lib/mkmf.rb ($extmk): true if under to top source directory, not
+ only ext.
+
+ * lib/mkmf.rb (depend_rules): extracted from create_makefile.
+
+ * tool/serb.rb (serb): splitted from tool/compile_prelude.rb.
+
+Mon Dec 17 17:32:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MAKEFILES): removed enc/Makefile.
+
+ * configure.in (EXTERNAL_ENCOBJS, ENCSOS): removed.
+
+ * enc/Makefile.in (BUILTIN_ENCS): includes .c suffix.
+
+ * enc/depend: splitted from Makefile.in.
+
+ * {bcc32,win32,wince}/setup.mak (-encs-): extracts BUILTIN_ENCOBJS.
+
+Mon Dec 17 17:07:53 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_str_asciionly_p): use rb_enc_str_coderange.
+
+Mon Dec 17 16:39:25 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_enc_str_coderange): set ENC_CODERANGE_BROKEN using
+ rb_enc_precise_mbclen.
+ (rb_str_valid_encoding_p): just check coderange is
+ ENC_CODERANGE_BROKEN or not.
+
+Mon Dec 17 16:04:16 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#gets): added second
+ optional argument to specify maximum length limit.
+
+Mon Dec 17 16:02:30 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb, lib/webrick/cgi.rb: Request-Line or
+ header fields should be read with maximum length. [ruby-talk:231745]
+
+Mon Dec 17 14:03:39 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (ENC_CODERANGE_VALID): rename from
+ ENC_CODERANGE_8BIT.
+
+ * string.c (rb_enc_str_coderange): follow the renaming.
+
+Mon Dec 17 13:56:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_find): wrong condition fixed.
+
+ * sprintf.c (rb_str_format): check encoding based on result, not
+ the format string.
+
+ * string.c (rb_str_upto): add encoding check.
+
+Mon Dec 17 12:21:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (RUNRUBY): added RUNRUBYOPT.
+
+Mon Dec 17 11:38:59 2007 Tanaka Akira <akr@fsij.org>
+
+ * thread_win32.ci (native_thread_create): initialize
+ th->machine_stack_maxsize as rb_gc_stack_maxsize.
+
+Sun Dec 16 17:07:35 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c (transcode_loop): removed special case (-1)
+ for undefined conversions.
+
+ * transcode_data_iso_8859.c: Changed from character constants
+ ('\xC2') to integer constants (0xC2) for shorter files and
+ better readability; eliminated duplicated tables; changed
+ from -1 offset to actual UNDEF entry (not yet distinguishing
+ UNDEF and ILLEGAL correctly).
+
+ * test/ruby/test_transcode.rb: added a test for UNDEF conversion.
+
+Sun Dec 16 14:51:59 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (MAKEFILES): should be enc/Makefile, not GNUmakefile.
+ [ruby-dev:32609]
+
+ * configure.in (BUILTIN_ENCS): removed escapes for OpenBSD.
+
+Sat Dec 15 23:58:46 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/openssl/test_pair.rb (SSLPair#ssl_pair): join the thread, even
+ on an error.
+
+Sat Dec 15 23:50:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/xmlrpc/webrick_testing.rb: join webrick server thread.
+
+Sat Dec 15 22:27:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (BUILTIN_ENCS): splitted command line instead of
+ semicolons for Solaris.
+
+Sat Dec 15 21:38:24 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/timeout.rb: join the background thread to make sure it is dead.
+
+Sat Dec 15 20:20:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (enc/Makefile): add external encoding objects list.
+
+ * common.mk (BUILTIN_ENCOBJS): renamed from ENCOBJS.
+
+ * configure.in (BUILTIN_ENCS): [] needs to be enclosed because of m4.
+
+ * Makefile.in (BUILTIN_ENCOBJS): substituted by autoconf.
+
+ * enc/Makefile.in: new file to compile external encoding sources.
+
+ * encoding.c (rb_enc_find_index): auto-load external encoding objects
+ as "ext/ENCODING_NAME". [ruby-dev:32606]
+
+Sat Dec 15 13:04:30 2007 Tanaka Akira <akr@fsij.org>
+
+ * vm_core.h (rb_thread_t): new member machine_stack_maxsize and
+ machine_register_stack_maxsize.
+
+ * gc.c (rb_gc_stack_maxsize): new global variable for the thread size
+ of the main thread.
+ (STACK_LEVEL_MAX): use machine_stack_maxsize of current thread.
+ (ruby_stack_check): check IA64 register stack.
+ (ruby_set_stack_size): set rb_gc_stack_maxsize.
+ (Init_stack): set rb_gc_stack_maxsize.
+
+ * thread_pthread.ci (native_thread_create): initialize
+ th->machine_stack_maxsize and th->machine_register_stack_maxsize.
+
+ * vm.c (Init_BareVM): initialize th->machine_stack_maxsize and
+ th->machine_register_stack_maxsize.
+
+ * thread_win32.ci (native_thread_create): initialize
+ th->machine_stack_maxsize. not tested. just a guess at all.
+
+ [ruby-dev:32604]
+
+Sat Dec 15 12:58:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_register, rb_enc_replicate, rb_enc_alias): check
+ if already registered.
+
+Sat Dec 15 01:57:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc/options.rb (Options::parse): do not access $KCODE any
+ longer. [ruby-core:14079]
+
+ * lib/irb/init.rb (IRB::IRB.parse_opts): ditto.
+
+ * lib/cgi.rb (CGI::CGI): ditto.
+
+Fri Dec 14 18:18:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * thread_pthread.ci (native_thread_create): twice the stack size.
+ 512KB is not enough to complete test-all on Debian GNU/Linux on
+ IA64.
+
+Fri Dec 14 16:10:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_p): RDoc update. a patch from murphy <murphy AT rubychan.de>.
+ [ruby-core:14010]
+
+Fri Dec 14 16:06:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_cmp): encoding aware comparison.
+
+ * string.c (rb_str_casecmp): ditto.
+
+Fri Dec 14 15:25:30 2007 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c (encoding_equal): new function.
+
+ * transcode.c (str_transcode, transcode_dispatch): added two-step
+ conversion logic via UTF-8.
+
+ * transcode.c: some minor formatting fixes
+
+ * transcode_data.h, transcode_data_iso_8859.c: Shortened
+ extremely frequently used macros to shorten file length.
+
+ * test/ruby/test_transcode.rb: Fixed name of test class;
+ added setup method to ensure all necessary encodings exist;
+ split tests into more test methods; added tests; fixed ordering
+ of arguments in assert_equal to have expected result first.
+
+Fri Dec 14 13:47:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ruby.imp): fix for circular dependency. a patch from
+ Yutaka Kanemoto <kinpoco AT gmail.com> in [ruby-dev:32590].
+
+ * regint.h, st.c, ext/json/ext/generator/generator.c: suppress
+ warnings on AIX.
+
+Fri Dec 14 12:36:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CHECK_VARTYPE): check if a variable is defined
+ and its type.
+
+ * configure.in (timezone, altzone): check for recent cygwin.
+
+ * missing/strftime.c (strftime): fix for timezone. [ruby-dev:32536]
+
+ * lib/mkmf.rb (try_var): should fail for functions.
+
+ * ext/readline/extconf.rb: should use have_func for functions instead
+ of have_var.
+
+Fri Dec 14 10:25:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/e2mmap.rb (Exception2MessageMapper::E2MM.Raise): $! no
+ longer modifiable in 1.9.
+
+Fri Dec 14 08:17:24 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (rb_protect): restore root_jmpbuf even if proc exits by
+ break such as dbm.delete_if { break }.
+
+Fri Dec 14 02:55:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_nth): direct jump if string is 7bit only. great
+ performance boost for worst case.
+
+ * string.c (str_strlen): direct size if string is 7bit only.
+
+Fri Dec 14 02:29:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): 1st argument (typically the
+ receiver) would have higher priority in encoding detection.
+
+Fri Dec 14 02:05:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_synchronized): should check if initialized.
+ [ruby-dev:32585]
+
+Fri Dec 14 00:54:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): embedded string may override encoding
+ of the regular expression.
+
+ * re.c (rb_reg_initialize): fix encoding of regular expression if
+ embedded string has its own encoding specified.
+
+Thu Dec 13 22:16:46 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): encoding should never fall back
+ to ASCII-8BIT unless both encodings are ASCII-8BIT.
+
+Thu Dec 13 20:31:28 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (rb_str_shared_replace): make str noembed after free.
+
+Thu Dec 13 20:09:09 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (rb_protect): restore root_jmpbuf to avoid SEGV by
+ 'IO.pipe; [].each.next' with gcc version 3.3.5 (Debian 1:3.3.5-13)
+ on IA64.
+
+Thu Dec 13 17:51:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_split_m): need not to check encoding if regexp
+ is empty.
+
+ * string.c (rb_str_justify): associate encoding of original to the
+ result.
+
+ * string.c (rb_str_chomp_bang): need to check encoding of record
+ separator.
+
+ * string.c (str_gsub): should copy encoding to the result.
+
+ * sprintf.c (rb_str_format): ditto.
+
+ * string.c (rb_str_succ): should not enter infinite loop for
+ non-ASCII, non-alphanumeric character at the bottom.
+
+Thu Dec 13 17:03:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): should swap encoding indexes too.
+
+Thu Dec 13 16:41:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): should not judge compatibility
+ based on rb_enc_asciicompat().
+
+Thu Dec 13 13:09:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/io.h (MakeOpenFile): fptr->enc should be
+ initialized to zero. [ruby-dev:32569]
+
+Thu Dec 13 08:56:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getc): use default external encoding if fptr->enc is
+ not set. [ruby-dev:32565]
+
+ * lib/rubygems/package.rb (Gem::TarReader::Entry::rewind): typo fixed.
+ [ruby-dev:32565]
+
+Thu Dec 13 08:24:16 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): should associate default external encoding.
+
+ * io.c (io_read): should NOT associate default external encoding.
+
+Wed Dec 12 23:22:58 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c, regerror.c, string.c, parse.y, ruby.c, file.c:
+ use capital letter for \xHH notation. [ruby-dev:32511]
+
+Wed Dec 12 22:21:34 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_mode_enc): allow specifying external encoding in
+ open mode, e.g. open(path, "r:utf-8").
+
+Wed Dec 12 21:26:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_method.ci (rb_alias): no need to skip aliasing when new
+ equals to old. [ruby-core:13990]
+
+Wed Dec 12 16:34:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_check_readable): set default external encoding to
+ STDIN.
+
+ * io.c (io_enc_str): associate encoding to output string.
+
+Wed Dec 12 12:44:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (expr): 'not' and '!' should act as conditional
+ expression. [ruby-dev:32548]
+
+Wed Dec 12 12:11:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_regsub): should copy encoding.
+
+ * string.c (rb_str_sub_bang, str_gsub): should check and copy encoding
+ to be replaced.
+
+Tue Dec 11 23:04:17 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): RDoc update. a patch from Gary Wright
+ <radar2002 AT gmail.com>. [ruby-core:13998]
+
+ * pack.c (pack_unpack): ditto.
+
+Tue Dec 11 16:37:47 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_ascget): renamed from rb_enc_get_ascii.
+
+ * include/ruby/encoding.h: follow the renaming.
+
+ * re.c: ditto.
+
+Tue Dec 11 16:19:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, */Makefile.sub (CP, MV): added.
+
+ * common.mk (.y.c): not discard the old target until successfully
+ created.
+
+Tue Dec 11 15:20:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): singleton_method_{added,removed,undefined}
+ hooks should be defined for BasicObject. [ruby-dev:32531]
+
+ * eval.c (Init_eval): method_missing should be defined for all
+ objects; moved to BasicObject.
+
+Tue Dec 11 14:27:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (transcode_loop): get rid of SEGV at sequence can not be
+ converted.
+
+ * transcode.c (rb_str_transcode_bang): copy encoding. [ruby-dev:32532]
+
+ * test/ruby/test_transcode.rb: added tests from Martin Duerst <duerst
+ AT it.aoyama.ac.jp>. [ruby-dev:32532]
+
+Tue Dec 11 12:05:51 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_get_ascii): add an argument to provide the
+ length of the returned character.
+
+ * include/ruby/encoding.h (rb_enc_get_ascii): add the argument.
+
+ * re.c (rb_reg_expr_str): modify rb_enc_get_ascii call.
+ (rb_reg_quote): ditto.
+ (rb_reg_regsub): ditto.
+
+Tue Dec 11 09:40:21 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/oniguruma.h (ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE):
+ parenthesize an argument.
+
+Tue Dec 11 02:23:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_method_missing): RDoc update patch from Hugh Sasse
+ <hgs AT dmu.ac.uk>. [ruby-core:12932]
+
+Tue Dec 11 01:51:34 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP::get): now supports gzip
+ content-encoding. a patch from Hugh Sasse <hgs AT dmu.ac.uk>.
+ [ruby-core:13451]
+
+Tue Dec 11 01:21:21 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (shadowing_lvar_gen): no duplicate error for "_".
+
+Mon Dec 10 22:08:47 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * array.c (rb_ary_slice_bang): If an invalid range is given, do
+ not raise an exception but return nil just like slice() does.
+
+Mon Dec 10 21:47:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_transcode): allow non-registered encodings.
+ [ruby-dev:32520]
+
+Mon Dec 10 21:00:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_slice_bang): should return nil if position out
+ of range. a patch from Akinori MUSHA <knu AT iDaemons.org>.
+ [ruby-dev:32518]
+
+Mon Dec 10 19:02:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_match): should calculate offset by converted
+ operand. [ruby-cvs:21416]
+
+Mon Dec 10 18:28:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::REGEXP::PATTERN): typo in REG_NAME
+ regular expression. a patch from Ueda Satoshi
+ <s-ueda AT livedoor.jp>. [ruby-dev:32514]
+
+Mon Dec 10 17:46:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_tmp_new): creates hidden temporary buffer.
+
+ * transcode.c (transcoding): added a pointer to function to flush.
+
+ * transcode.c (transcode_loop): do not use string internal.
+ [ruby-dev:32512]
+
+ * transcode.c (str_transcode): allow Encoding objects.
+
+ * transcode_data.h (BYTE_LOOKUP): use actual struct name.
+
+Mon Dec 10 16:52:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_insert): should not add length in bytes to index in
+ chars.
+
+Mon Dec 10 14:33:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_public_send): rename invoke_method to public_send.
+ it now invokes public method only no matter how it's called.
+
+Mon Dec 10 14:00:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * transcode.c: new file to provide encoding conversion features.
+ code contributed by Martin Duerst.
+
+Mon Dec 10 13:50:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_search): return byte offset. [ruby-dev:32452]
+
+ * re.c (rb_reg_match, rb_reg_match2, rb_reg_match_m): convert byte
+ offset to char index.
+
+ * string.c (rb_str_index): return byte offset. [ruby-dev:32472]
+
+ * string.c (rb_str_split_m): calculate in byte offset.
+
+Mon Dec 10 09:56:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm1_neq.rb, bm_vm1_not.rb: added.
+
+Mon Dec 10 07:48:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): wrong token was generated. [ruby-dev:32498]
+
+ * object.c (rb_obj_not_match): wrong test.
+
+Mon Dec 10 06:44:47 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_expr_str): use \xHH instead of \OOO.
+
+ * regerror.c (to_ascii): ditto.
+ (onig_snprintf_with_pattern): ditto.
+ (onig_snprintf_with_pattern): ditto.
+
+ * string.c (rb_str_inspect): ditto.
+ (rb_str_dump): ditto.
+
+ * parse.y (parser_yylex): ditto.
+
+ * ruby.c (proc_options): ditto.
+
+ * file.c (rb_f_test): ditto.
+
+ [ruby-dev:32495]
+
+Mon Dec 10 06:41:00 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_names): new method Regexp#names.
+ (rb_reg_named_captures): new method Regexp#named_captures
+ (match_regexp): new method MatchData#regexp.
+ (match_names): new method MatchData#names.
+
+ * lib/pp.rb (MatchData#pretty_print): show names of named captures.
+
+ [ruby-dev:32493]
+
+Mon Dec 10 01:35:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (expr): redefinable not (!) operator.
+
+ * parse.y (arg): ditto.
+
+ * object.c (rb_obj_not): new method "!".
+
+ * object.c (rb_obj_not_equal): new method "!=".
+
+ * object.c (rb_obj_not_match): new method "!~".
+
+Sun Dec 9 22:31:36 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_s_last_match): accept named capture's name.
+
+Sun Dec 9 15:57:53 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (match_backref_number): new function for converting a backref
+ name/number to an integer.
+ (match_offset): use match_backref_number.
+ (match_begin): ditto.
+ (match_end): ditto.
+ (name_to_backref_number): raise IndexError instead of RuntimeError.
+ (match_inspect): show capture index.
+
+Sun Dec 9 14:59:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h (CHECK_STACK_OVERFLOW): reserve frame size.
+ [ruby-dev:32485]
+
+Sun Dec 9 14:38:25 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (rb_thread_mark): use rb_gc_mark_maybe() for
+ VM stack specified by mark_stack_len. [ruby-dev:32462]
+
+ * insnhelper.ci: clear vm stack extended by opt value.
+
+Sun Dec 9 14:08:47 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (FilePathStringValue): defined. similar to
+ FilePathValue but no taint check.
+
+ * file.c (rb_get_path_no_checksafe): implementation of
+ FilePathStringValue.
+ (rb_file_s_basename): use FilePathStringValue.
+ (rb_file_s_dirname): ditto.
+ (rb_file_s_extname): ditto.
+ (rb_file_s_split): ditto.
+ (rb_file_join): ditto.
+
+ * dir.c (file_s_fnmatch): ditto.
+
+Sun Dec 9 12:49:34 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (append_utf8): check unicode range.
+
+Sun Dec 9 12:39:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi.rb (read_multipart): exclude blanks from header values.
+ [ruby-list:44327]
+
+Sun Dec 9 12:18:19 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_get_path): use the original object if to_path method is
+ not defined. [ruby-dev:32473]
+
+ * io.c (rb_f_open): call to_open on non-string objects, instead of
+ to_str. [ruby-dev:32473]
+
+Sun Dec 9 12:12:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (tr_find): returns true if no characters to be removed is
+ specified.
+
+Sun Dec 9 12:03:16 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_magic_comment): delimits with a semicolon.
+
+Sun Dec 9 11:29:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (tr_trans): get rid of segfaults when has multibytes but
+ source sets have no multibytes.
+
+Sun Dec 9 04:01:28 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_mbclen): return 1 if underlying implementation
+ returns a length longer than e-p.
+ (rb_enc_precise_mbclen): return needmore if underlying
+ implementation returns a length longer than e-p.
+
+Sat Dec 8 17:59:40 2007 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (posix_signal): return value.
+
+Sat Dec 8 17:22:16 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/openssl/test_pkcs7.rb: Remove redundant module namespace.
+
+Sat Dec 8 17:07:10 2007 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (proc_options): make rb_raise format as a string literal to
+ avoid warning.
+
+Sat Dec 8 16:18:16 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_check_preprocess): new function for validating regexp
+ fragment.
+
+ * parse.y (regexp): invoke reg_fragment_check.
+ (reg_fragment_check): defined.
+ (reg_fragment_check_gen): defined.
+
+Sat Dec 8 11:06:29 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_mbclen): make it never fail.
+ (rb_enc_nth): don't check the return value of rb_enc_mbclen.
+ (rb_enc_strlen): ditto.
+ (rb_enc_precise_mbclen): return needmore(1) if e <= p.
+ (rb_enc_get_ascii): new function for extracting ASCII character.
+
+ * include/ruby/encoding.h (rb_enc_get_ascii): declared.
+
+ * include/ruby/regex.h (ismbchar): removed.
+
+ * re.c (rb_reg_expr_str): use rb_enc_get_ascii.
+ (unescape_escaped_nonascii): use rb_enc_precise_mbclen to determine
+ the termination of escaped non-ASCII character.
+ (unescape_nonascii): use rb_enc_precise_mbclen.
+ (rb_reg_quote): use rb_enc_get_ascii.
+ (rb_reg_regsub): use rb_enc_get_ascii.
+
+ * string.c (rb_str_reverse) don't check the return value of
+ rb_enc_mbclen.
+ (rb_str_split_m): don't call rb_enc_mbclen with e <= p.
+
+ * parse.y (is_identchar): use ISASCII.
+ (parser_ismbchar): removed.
+ (parser_precise_mbclen): new macro.
+ (parser_isascii): new macro.
+ (parser_tokadd_mbchar): use parser_precise_mbclen to check invalid
+ character precisely.
+ (parser_tokadd_string): use parser_isascii.
+ (parser_yylex): ditto.
+ (is_special_global_name): don't call is_identchar with e <= p.
+ (rb_enc_symname_p): ditto.
+
+ [ruby-dev:32455]
+
+ * ext/tk/sample/tkextlib/vu/canvSticker2.rb: remove coding cookie
+ because the encoding is not UTF-8. [ruby-dev:32475]
+
+Fri Dec 7 20:21:35 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/net/ftptls.rb, ext/openssl/lib/net/telnets.rb:
+ half-finished libraries are discontinued.
+
+Fri Dec 7 15:44:40 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb: use Hash for recursion check as inspect.
+
+Fri Dec 7 15:04:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (flatten): some performance improvements, based on a patch
+ from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-core:13877].
+ [ruby-core:13851]
+
+ * thread.c (rb_exec_recursive): use Hash instead of Array for
+ performance improvement. [ruby-core:13898]
+
+ * thread.c (recursive_pop): use object ID.
+
+Thu Dec 6 19:52:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): typo fixed ("!" -> "|") in the ripper code.
+
+Thu Dec 6 19:48:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): tUPLUS no longer works as identity operation any
+ more. inspired by [ruby-talk:265532].
+
+Thu Dec 6 18:22:11 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_precise_mbclen): new function for mbclen with
+ validation.
+
+ * include/ruby/encoding.h (rb_enc_precise_mbclen): declared.
+ (MBCLEN_CHARFOUND): new macro.
+ (MBCLEN_INVALID): new macro.
+ (MBCLEN_NEEDMORE): new macro.
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): replace mbc_enc_len
+ by precise_mbc_enc_len.
+ (ONIGENC_PRECISE_MBC_ENC_LEN): new macro.
+ (ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND): new macro.
+ (ONIGENC_CONSTRUCT_MBCLEN_INVALID): new macro.
+ (ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE): new macro.
+ (ONIGENC_MBCLEN_CHARFOUND): new macro.
+ (ONIGENC_MBCLEN_INVALID): new macro.
+ (ONIGENC_MBCLEN_NEEDMORE): new macro.
+ (ONIGENC_MBC_ENC_LEN): use ONIGENC_PRECISE_MBC_ENC_LEN.
+
+ * enc/euc_jp.c: validation implemented.
+
+ * enc/sjis.c: ditto.
+
+ * enc/utf8.c: ditto.
+
+ * string.c (rb_str_inspect): use rb_enc_precise_mbclen for invalid
+ encoding.
+ (rb_str_valid_encoding_p): new method String#valid_encoding?.
+
+ * io.c (rb_io_getc): use rb_enc_precise_mbclen.
+
+ [ruby-dev:32438]
+
+Thu Dec 6 01:37:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (i_apply_case_fold): fix for negative character class. a
+ patch from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-core:13884].
+
+Thu Dec 6 01:00:38 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_s_list): support NetBSD/Citrus iconv.
+
+Wed Dec 5 16:18:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_proc_s_new): call initialize. [ruby-core:13824]
+
+ * proc.c (rb_proc_location): return file name and line number where
+ the proc is defined.
+
+ * thread.c (thread_s_new): call initialize. [ruby-core:13835]
+
+ * thread.c (thread_initialize): split initialize method.
+
+Wed Dec 5 15:25:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern3): fix to changing encoding to default, and
+ uncommented r13835, which is rare but not impossible.
+
+Wed Dec 5 15:15:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (step_i, range_step): support non-fixnum steps.
+ [ruby-talk:282100]
+
+Wed Dec 5 14:25:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix typo.
+
+Wed Dec 5 13:41:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yycompile): get rid of tracing while parsing.
+ [ruby-dev:31351]
+
+ * thread.c (ruby_suppress_tracing): added a new parameter, which
+ directs to call func always.
+
+Tue Dec 4 19:56:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_convert): should not set encoding unless
+ the target encoding is supported. [ruby-dev:32451]
+
+Tue Dec 4 17:34:17 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (tojis, tosjis, toeuc, toutf8):
+ set encoding. [ruby-dev:32447]
+
+Tue Dec 4 17:07:25 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/json.rb, lib/json/*: moved to ext/json/lib.
+
+Tue Dec 4 16:34:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_create): achieve target encoding.
+
+ * ext/iconv/iconv.c (iconv_convert, iconv_finish, iconv_iconv,
+ iconv_conv): set result string encoding. [ruby-dev:32446]
+
+ * ext/iconv/iconv.c (iconv_initialize, iconv_s_open): set encoding to
+ Iconv instance.
+
+Tue Dec 4 14:34:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): reverted c flag.
+
+Tue Dec 4 11:23:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_cstr_to_inum): trailing spaces may exist at squeezing
+ preceding 0s. [ruby-core:13873]
+
+Mon Dec 3 11:51:53 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/*: removed or moved to ext/dl/win32.
+
+ * ext/dl/win32/*: new. [ruby-dev:32387]
+
+Sun Dec 2 22:08:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_mbchar): fix for ASCII chars. [ruby-dev:32432]
+
+ * parse.y (parser_parse_string, parser_here_document): prevent false
+ error messages.
+
+Sun Dec 2 20:43:22 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (unescape_escaped_nonascii): fix mbclen argument.
+
+Sun Dec 2 15:47:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_mbchar): check insufficient multibyte char.
+ [ruby-dev:32429]
+
+Sun Dec 2 15:42:16 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, test/rss/test_version.rb: 0.2.1 -> 0.2.2.
+
+ * lib/rss/maker/itunes.rb: fixed new_itunes_category.
+ * lib/rss/maker/taxonomy.rb: new_taxo_topic -> new_topic because
+ of consistency.
+
+ * test/rss/test_maker_itunes.rb, test/rss/test_itunes.rb: removed
+ needless UTF-8 characters.
+
+Sun Dec 2 15:18:37 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_callee_setup_arg): fix error message.
+ [ruby-dev:32430]
+
+Sun Dec 2 09:12:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (regexp): fix /#{}\xa1\xa2/e to be EUC-JP.
+ (reg_fragment_setenc_gen): extracted from reg_compile_gen.
+
+Sun Dec 2 01:39:51 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_uv_to_utf8): declared.
+
+ * re.c (rb_reg_preprocess): new function for dynamic regexp with
+ \u{} such as Regexp.new("\\u{6666}").
+ (rb_reg_prepare_re): preprocess regexp for recompiling.
+ (read_escaped_byte): new function.
+ (unescape_escaped_nonascii): new function.
+ (append_utf8): new function.
+ (unescape_unicode_list): new function.
+ (unescape_unicode_bmp): new function.
+ (unescape_nonascii): new function.
+ (rb_reg_initialize): preprocess regexp.
+
+ * pack.c (rb_uv_to_utf8): renamed from uv_to_utf8.
+
+ * parse.y (STR_NEW3): take func instead of has8 and hasmb.
+ (parser_str_new): use default coderange mechanism except for regexp.
+ (parser_tokadd_utf8): copy regexp source as-is.
+ (parser_read_escape): UTF-8 stuff removed.
+ (parser_tokadd_escape): has8bit and hasmb removed.
+ (parser_tokadd_string): fix 8-bit single byte character with \u.
+ (parser_parse_string): has8bit and hasmb removed.
+ (parser_here_document): has8bit and hasmb removed.
+ (parser_yylex): call parser_tokadd_utf8 instead of read_escape for
+ UTF-8 character.
+
+Wed Dec 2 01:00:07 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb (XMLRPC::Server#server): Improve signal handling so
+ pressing control-c in the controlling terminal or sending SIGTERM stops
+ the XML-RPC server.
+
+Sat Dec 1 23:04:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c: rename primary_encoding -> default_external (encoding).
+
+Sat Dec 1 19:52:57 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (Time#to_datetime): use nsec instead of usec.
+
+ * lib/date.rb (DateTime#to_time): second minute as an argument to
+ Time::utc contains fractional part in rational; hence Time
+ object may keep resolution at most nanosecond.
+
+Sat Dec 1 14:36:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: move fixed bugs.
+
+ * test/ruby/test_sprintf.rb: ditto.
+
+ * test/yaml/test_yaml.rb: ditto.
+
+Sat Dec 1 13:24:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_yield_with_cfunc): fix to passing argc on third
+ parameter of IFUNC. [ruby-dev:32329]
+
+ * enumerator.c: fix to pass exact number of argument.
+
+ * eval.c (rb_yield_values2): added.
+
+ * include/ruby/ruby.h: ditto.
+
+ * bootstraptest/test_knownbug.rb: move a fixed test.
+
+ * bootstraptest/test_block.rb: ditto.
+
+Sat Dec 1 10:45:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_open): use to_open for every non-string object. path
+ object may use method_missing.
+
+Sat Dec 1 09:44:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (concatarray, splatarray): use to_a instead of
+ to_splat.
+
+ * insnhelper.ci (caller_setup_args): ditto.
+
+Sat Dec 1 03:34:32 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (newline_node): always remove NODE_BEGIN.
+
+Fri Nov 30 23:48:07 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (ruby_signal): use SA_SIGINFO if available.
+ [ ruby-Patches-6418 ]
+
+Fri Nov 30 22:52:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (trap_signm): SIGVTALRM no longer used for green
+ thread. [ruby-talk:281318]
+
+ * signal.c (ruby_sig_finalize): do not install SIG_DFL handler if
+ previous handler is sighandler().
+
+Fri Nov 30 21:02:15 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/json.rb, lib/json/add/{core.rb, rails.rb},
+ test/json/test_json_rails.rb: additional files of JSON 1.1.2.
+ [ruby-dev:32405]
+
+Fri Nov 30 19:33:38 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (rb_syck_mktime): avoid segmentation fault.
+ [ruby-core:13735]
+
+Fri Nov 30 19:05:55 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_count): precise argument number check.
+
+ * enum.c (enum_count): return Enumerator if no block given.
+
+Fri Nov 30 16:42:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_take_while): returns Enumerator if no block given.
+
+ * enum.c (enum_drop_while): ditto.
+
+Thu Nov 29 16:59:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): remove unnecessary NODE_BEGIN. [ruby-core:13814]
+
+Thu Nov 29 06:45:48 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_eql): recursive comparison should be based on
+ eql? [ruby-core:13803]
+
+Wed Nov 28 18:08:00 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json, lib/json, test/json: Update to JSON 1.1.2.
+ (RubyForge#15447)
+
+ * math.c: fix typo.
+
+Wed Nov 28 16:29:35 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_invoke_block): should splat args.
+ [ruby-dev:32392]
+
+ * test/ruby/test_yield.rb: add tests for above.
+
+Wed Nov 28 14:43:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): use dldflags instead of DLDFLAGS to
+ get rid of mixing $LDFLAGS and $ARCH_FLAG.
+
+ * lib/mkmf.rb (configuration): ditto.
+
+ * lib/mkmf.rb (create_makefile): support for extensions which has no
+ shared object.
+
+Wed Nov 28 02:42:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big2str_find_n1): removed extraneous element.
+ [ruby-dev:32351], [ruby-dev:32365]
+
+ * bignum.c (big2str_find_n1): returns necessary digits now.
+
+ * sprintf.c (remove_sign_bits): extends sign bit first.
+
+Tue Nov 27 15:53:43 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): "when *[],1" dumps core.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32350]
+
+ * bootstraptest/test_syntax.rb: add a test for above.
+
+Tue Nov 27 15:40:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): "a[*b] += 1" dumps core.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32354]
+
+ * bootstraptest/test_syntax.rb: add a test for above.
+
+Tue Nov 27 12:47:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def: change return value of "defined?"
+ for $&, $1, ... . If such variables are defined,
+ return "global-variable".
+
+ * test/ruby/test_defined.rb: add tests.
+
+ * bootstraptest/test_syntax.rb: fix a test.
+
+Tue Nov 27 11:54:46 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: fix typo.
+
+Tue Nov 27 11:23:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test_beginendblock.rb: add loop to wait signal.
+ [ruby-dev:32332]
+
+Tue Nov 27 11:14:57 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h, encoding.c, re.c, string.c, parse.y:
+ rename ENC_CODERANGE_SINGLE to ENC_CODERANGE_7BIT.
+ rename ENC_CODERANGE_MULTI to ENC_CODERANGE_8BIT.
+ Because single byte 8bit character, such as Shift_JIS 1byte katakana,
+ is represented by ENC_CODERANGE_MULTI even if it is not multi byte.
+
+Tue Nov 27 10:45:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_method_missing): fix stack trace.
+
+ * bootstraptest/test_knownbug.rb: move solved tests.
+
+ * bootstraptest/test_method.rb, test/ruby/test_regexp.rb: ditto.
+
+Tue Nov 27 09:57:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, compile.c: fix to allow dsym for alias/undef.
+ [ruby-dev:32355]
+
+ * bootstraptest/test_method.rb: add tests for above.
+
+Mon Nov 26 23:18:46 2007 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/extserv.rb (initialize, stop_service): synchronize with
+ ExtServManager.
+
+ * test/drb/test_drb.rb (TestDRbEval): ignored.
+
+Mon Nov 26 17:32:16 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (Init_Regexp): new method Regexp#fixed_encoding?
+ [ruby-dev:32361]
+
+Mon Nov 26 13:28:14 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/complex.rb: be able to create Complex(0, -0.0). [ruby-list:44268]
+
+Mon Nov 26 11:24:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_fixed_encoding_p): extracted from rb_reg_prepare_re and
+ rb_reg_s_union.
+ (rb_reg_s_union): refactored.
+
+Mon Nov 26 10:44:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_read_internal, rb_sysopen_internal): remove C99 dependency.
+
+Sun Nov 25 22:21:35 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/encoding.h (rb_enc_str_asciionly_p): declared.
+ (rb_enc_str_asciicompat_p): defined.
+
+ * re.c (rb_reg_initialize_str): use rb_enc_str_asciionly_p.
+ (rb_reg_quote): return ascii-8bit string if the argument is
+ ascii-only to generate encoding generic regexp if possible.
+ (rb_reg_s_union): fix encoding handling. [ruby-dev:32094]
+
+ * string.c (rb_enc_str_asciionly_p): defined.
+
+Sun Nov 25 12:12:03 2007 Eric Hodel <drbrain@segment7.net>
+
+ * gem_prelude.rb: Import fast-loading gem_prelude.rb from RubyGems.
+
+ * lib/rubygems*: Import RubyGems r1516.
+
+Sat Nov 24 23:25:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_eval.rb (TestEval::test_instance_eval_cvar):
+ updated not to modify class variable of Object class.
+
+Fri Nov 23 17:34:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * io.c: add rb_read_internal() as blocking function.
+
+Fri Nov 23 17:33:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: fix comment.
+
+Fri Nov 23 17:26:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: move solved tests.
+
+ * bootstraptest/test_io.rb, test_marshal.rb, test_objectspace.rb:
+ ditto.
+
+ * test/ruby/test_integer.rb, test_regexp.rb: ditto.
+
+Fri Nov 23 15:59:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * struct.c (rb_struct_alloc_noinit): new function.
+ (rb_struct_define_without_accessor): add allocator to the arguments.
+
+ * range.c (range_alloc): re-introduced using rb_struct_alloc_noinit.
+
+Fri Nov 23 15:27:43 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (REG_CASESTATE): unused macro removed.
+ (rb_reg_prepare_re): check encoding difference.
+ (rb_reg_initialize): check 8bit byte.
+
+ * parse.y (parser_tokadd_escape): fix has8bit.
+
+ [ruby-dev:32113]
+
+Fri Nov 23 15:16:48 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_f_global_variables): variable names should not
+ duplicate. [ruby-dev:32344]
+
+Fri Nov 23 13:34:08 2007 Tanaka Akira <akr@fsij.org>
+
+ * struct.c (rb_struct_define_without_accessor): new function.
+
+ * range.c (range_alloc): removed.
+ (Init_Range): use rb_struct_define_without_accessor.
+
+ based on [ruby-dev:32327].
+
+Fri Nov 23 11:01:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (match_begin): should return offset by character.
+ [ruby-dev:32331]
+
+ * re.c (match_end): ditto.
+
+ * re.c (rb_reg_search): ditto.
+
+Fri Nov 23 10:44:24 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): defined(method(x)) dumped core. a
+ patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32335]
+
+Wed Nov 21 18:03:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: fix to recycle thread data (VM stack).
+
+ * thread.c: ditto.
+
+ * benchmark/bm_vm3_thread_create_join.rb: add loop count.
+
+Wed Nov 21 18:02:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: add path to trunk/lib if driver runner is
+ in build directory.
+
+Wed Nov 21 16:39:21 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/fileutils/fileasserts.rb (assert_equal_timestamp): new assert
+ to test tv_sec only for filestamp resolution portability.
+ (assert_same_entry): use assert_same_entry for mtime comparison.
+
+Wed Nov 21 14:55:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * array.c (rb_ary_permutation): add gc guard codes.
+
+Wed Nov 21 11:16:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insnhelper.ci (vm_search_normal_superclass): rename function.
+
+ * insnhelper.ci (vm_search_superclass): ditto.
+
+ * proc.c (struct METHOD): rename rklass -> rclass.
+
+Wed Nov 21 03:12:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_system): returns nil on execution failure.
+ [ruby-core:13715]
+
+Wed Nov 21 01:04:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (nil_plus): remove unused function. [ruby-core:13737]
+
+Tue Nov 20 21:46:46 2007 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_mload): ignore invalid digits in submicro.
+
+Tue Nov 20 20:33:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: rename RFloat#double_value -> float_value.
+
+ * numeric.c, parse.y: ditto.
+
+Tue Nov 20 19:36:21 2007 Koichi Sasada <ko1@atdot.net>
+
+ * gc.h, vm_core.h: decl of rb_gc_save_machine_context()
+ should be at vm_core.h.
+
+ * include/ruby/ruby.h, intern.h: remove type rb_thread_t.
+
+ * include/ruby/intern.h: change rb_unblock_function_t,
+ rb_unblock_function_t.
+
+ * file.c, process.c: apply above changes.
+
+ * thread.c, thread_pthread.ci, thread_win32.ci: ditto.
+
+ * io.c: support blocking open (2). [ruby-core:13614]
+
+Tue Nov 20 17:10:11 2007 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_close_on_exec_p): new method IO#close_on_exec?.
+ (rb_io_set_close_on_exec): new method IO#close_on_exec=.
+ [ruby-dev:32323]
+
+Tue Nov 20 16:24:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (gc_mark_children): obj->as.file.fptr may be 0 for T_FILE.
+
+Tue Nov 20 15:09:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_read_escape): has8bit flag may be set with control
+ escape. [ruby-core:13722]
+
+ * parse.y (parser_prepare): set begging after BOM if exists.
+ [ruby-core:13718]
+
+Tue Nov 20 14:55:37 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Update to RubyGems 0.9.5.
+
+Tue Nov 20 13:00:44 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h win32/win32.c (rb_w32_pipe_exec): use dual fd
+ instead of socketpair when mode is RDWR.
+
+ * io.c (pipe_open): pass &write_fd to rb_w32_pipe_exec().
+
+ * io.c (popen_redirect): define only when HAVE_FORK.
+
+Tue Nov 20 12:12:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/io.h (rb_io_t): add tied_io_for_writing member.
+
+ * io.c: use tied_io_for_writing for duplex popen.
+
+ * gc.c: mark tied_io_for_writing.
+
+ * common.mk: gc.o depends io.h.
+
+ [ruby-dev:32205]
+
+Tue Nov 20 11:59:33 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/drb/test_drb.rb: rename TestRubyYield to TestDRbRubyYield to
+ avoid name crash with test/ruby/test_yield.rb.
+ TestRuby18Yield is renamed to TestDRbRuby18Yield too.
+
+Tue Nov 20 03:24:42 2007 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/extservm.rb: merged from ruby_1_8 branch.
+
+ * lib/drb/acl.rb: ditto.
+
+ * lib/drb/ssl.rb: ditto.
+
+ * lib/drb/unix.rb: ditto.
+
+ * lib/drb/drb.rb: ditto.
+
+ * lib/drb/observer.rb: ditto.
+
+ * lib/drb/invokemethod.rb: ditto.
+
+ * test/drb/test_drbssl.rb: ditto.
+
+ * test/drb/test_drb.rb: ditto.
+
+ * test/drb/drbtest.rb: ditto.
+
+ * test/drb/test_drbunix.rb: ditto.
+
+Tue Nov 20 00:52:46 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/fileutils/fileasserts.rb (assert_equal_time): show nsec if
+ assertion fails but time.to_s equals.
+ (assert_same_entry): use assert_equal_time.
+
+ * test/fileutils/test_fileutils.rb (test_install): use
+ assert_equal_time.
+
+Mon Nov 19 18:46:49 2007 Tanaka Akira <akr@fsij.org>
+
+ * file.c (utime_internal): fallback utimensat to utimes.
+
+Mon Nov 19 17:51:27 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: check struct timespec, clock_gettime, utimensat,
+ struct stat.st_atim,
+ struct stat.st_atimespec,
+ struct stat.st_atimensec,
+ struct stat.st_mtim,
+ struct stat.st_mtimespec,
+ struct stat.st_mtimensec,
+ struct stat.st_ctim,
+ struct stat.st_ctimespec,
+ struct stat.st_ctimensec.
+
+ * include/ruby/missing.h: provide struct timespec if not available.
+
+ * time.c: support nanosecond-resolution using struct timespec.
+ (time_nsec): new method: Time#nsec and Time#tv_nsec.
+
+ * include/ruby/intern.h: provide rb_time_nano_new.
+
+ * file.c (utime_internal): use utimensat if available.
+ (rb_file_s_utime): refactored.
+ (rb_f_test): use stat_atime, stat_mtime, stat_ctime.
+ (rb_stat_cmp): check tv_nsec.
+ (stat_atimespec): new function.
+ (stat_atime): ditto.
+ (stat_mtimespec): ditto.
+ (stat_mtime): ditto.
+ (stat_ctimespec): ditto.
+ (stat_ctime): ditto.
+ (rb_stat_atime): use stat_atime.
+ (rb_file_s_atime): ditto.
+ (rb_file_atime): ditto.
+ (rb_stat_mtime): use stat_mtime.
+ (rb_file_s_mtime): ditto.
+ (rb_file_mtime): ditto.
+ (rb_file_ctime): use stat_ctime.
+ (rb_file_s_ctime): ditto.
+ (rb_stat_ctime): ditto.
+
+ * variable.c (rb_copy_generic_ivar): clear clone's instance variables
+ if obj has no instance variable.
+
+ * marshal.c (w_object): dump instance variables of generated string
+ for TYPE_USERDEF, even if original object has instance variables.
+
+ * lib/time.rb (Time#xmlschema): use nsec instead of usec.
+
+ [ruby-dev:32306]
+
+Mon Nov 19 17:48:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_class_superclass): should not raise exception for
+ BasicObject. [ruby-Bugs-15668]
+
+Mon Nov 19 16:04:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_permutation): gives all permutations of elements
+ if no argument given. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>.
+ [ruby-dev:32309]
+
+Mon Nov 19 02:44:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): alias and undef accept dsyms as well
+ as literals. [ruby-dev:32308]
+
+Mon Nov 19 02:31:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_method.ci (rb_add_method): no redefinition warning for undef.
+
+Mon Nov 19 01:53:11 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_read_escape): disallow control and meta modifiers
+ for non-ASCII characters. [ruby-core:13685]
+
+Sun Nov 18 20:47:41 2007 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (mark_dump_arg): it may be called after dump_ensure.
+
+Sun Nov 18 18:27:47 2007 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_minus): fix Time.at(2**60+1) - Time.at(2**60).
+
+Sun Nov 18 17:28:49 2007 Tanaka Akira <akr@fsij.org>
+
+ * time.c (time_arg): show actual year in 2-3 digits year warning.
+ (time_mdump): show actual year in "year too big to marshal" error.
+
+Sun Nov 18 14:03:44 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_method.ci (rb_alias): do not call hook functions until
+ initialization finishes. [ruby-talk:279538]
+
+Sun Nov 18 09:09:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (String#tr_cpp): make preprocessor identifiers.
+
+Sun Nov 18 05:19:46 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/mkmf.rb (have_struct_member): define HAVE_type_member.
+
+Sat Nov 17 23:51:29 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke): bug fix. [ruby-talk:279100]
+
+Sat Nov 17 23:21:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): should clear parser->tokp as well.
+ [ruby-dev:32250]
+
+ * parse.y: remove NEED_ASSOC that break test_parser_events.
+
+ * parse.y (parser_yylex): should not decrement line numbers at the
+ end of file.
+
+ * file.c (rb_find_file_ext): search .rb files first through in the
+ loadpath.
+
+Fri Nov 16 23:31:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_odd_p): new method added. a patch from Tadashi
+ Saito <shiba AT mail2.accsnet.ne.jp>. [ruby-dev:32305]
+
+ * bignum.c (rb_big_even_p): ditto.
+
+Fri Nov 16 17:41:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (Document-class): moved the simplest example to
+ the top.
+
+ * ext/iconv/iconv.c (iconv_s_iconv): Document-method: needs class
+ prefix for class method. [ruby-core:13542]
+
+ * ext/iconv/iconv.c (iconv_iconv): also instance method needs to be
+ qualified.
+
+Fri Nov 16 16:26:57 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * include/ruby/ruby.h: added some declarations for event hooks.
+
+ * lib/profile.rb: set VM::InstructionSequence.compile_option.
+
+Fri Nov 16 11:16:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb (String#is_binary_data?): use Integer#fdiv.
+
+Fri Nov 16 03:36:01 2007 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: Node#value defined twice.
+
+ * lib/yaml/: several method redefinitions causing warnings.
+
+Fri Nov 16 03:01:00 2007 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/types.rb: Likewise, pass self to YAML::quick_emit.
+
+Fri Nov 16 02:51:59 2007 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb (quick_emit): use combination of object_id and hash to
+ identify repeated object references, since GC will reuse memory of
+ objects during output of YAML. [ruby-Bugs-8548] [ruby-Bugs-3698]
+
+Thu Nov 15 19:49:03 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/curses/extconf.rb: check macro if cannot find func.
+ [ruby-list:44224]
+
+Thu Nov 15 18:04:06 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: fix TMP_RUBY_PREFIX for relative load path
+ environment.
+
+Thu Nov 15 17:28:21 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: absolute path may not start with a slash.
+ pointed by usa.
+
+Thu Nov 15 17:07:54 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: fix first substitution.
+ use constant for prefix.
+ pointed by Richard Kilmer.
+
+Thu Nov 15 14:29:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (prereq): added auto generated sources. [ruby-dev:32280]
+
+Thu Nov 15 12:31:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: use constant for prefix.
+
+Thu Nov 15 12:24:39 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: use simple template system for source
+ code generation.
+
+Thu Nov 15 12:19:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::FileStore::restore): use
+ lockfile for exclusive locks. a patch from <tommy AT tmtm.org>.
+ [ruby-dev:32296]
+
+Thu Nov 15 12:14:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * tool/compile_prelude.rb (c_esc): need to escape closing brace.
+
+Thu Nov 15 11:52:16 2007 Tanaka Akira <akr@fsij.org>
+
+ * tool/compile_prelude.rb: adjust RbConfig::CONFIG paths relative
+ to the installation path.
+
+Thu Nov 15 11:25:20 2007 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (usage): fix typo on --disable-gems option.
+ pointed by Richard Kilmer.
+
+Wed Nov 14 16:16:17 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/net/http/test_https_proxy.rb
+ (HTTPSProxyTest::test_https_proxy_authentication): initialize
+ local variable 't' first. [ruby-dev:32253]
+
+Wed Nov 14 15:39:24 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/socket/test_socket.rb: update not to use 1.8 assignment to
+ external local variable in the block parameters. [ruby-dev:32251]
+
+ * test/strscan/test_stringscanner.rb: avoid $KCODE, and use
+ String#force_encoding(). [ruby-dev:32251]
+
+Wed Nov 14 14:04:42 2007 Tanaka Akira <akr@fsij.org>
+
+ * common.mk, Makefile.in: rename prelude.c to miniprelude.c.
+ rename ext_prelude.c to prelude.c
+
+ * win32/Makefile.sub: ditto.
+
+ * bcc32/Makefile.sub: ditto.
+
+Wed Nov 14 07:09:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c, compile.c, compile.h, debug.c, debug.h,
+ id.c, insnhelper.h, insns.def, thread.c, thread_pthread.ci,
+ thread_pthread.h, thread_win32.ci, thread_win32.h, vm.h,
+ vm_dump.c, vm_evalbody.ci, vm_opts.h: fix comments and
+ copyright year.
+
+Wed Nov 14 07:07:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * tool/makedocs.rb, template/insnstbl.html: removed.
+
+Wed Nov 14 02:50:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.c): dependency also needs vpath.
+
+ * common.mk (node_name.inc, prelude.c): VPATH in nmake does not
+ work for targets of explicit rules.
+
+Wed Nov 14 02:11:38 2007 Tanaka Akira <akr@fsij.org>
+
+ * missing/isinf.c (isinf): don't define if the macro is defined.
+
+ * configure.in: no need to set ac_cv_func_isinf=yes on non-gcc
+ solaris.
+
+Wed Nov 14 01:34:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (round): fallback definition.
+
+ * numeric.c (flo_divmod, flo_round): use round() always.
+ [ruby-dev:32269]
+
+Wed Nov 14 00:33:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: introduce 2 macros:
+ RFLOAT_VALUE(v), DOUBLE2NUM(dbl).
+ Rename RFloat#value -> RFloat#double_value.
+ Do not touch RFloat#double_value directly.
+
+ * bignum.c, insns.def, marshal.c, math.c, numeric.c, object.c,
+ pack.c, parse.y, process.c, random.c, sprintf.c, string.c,
+ time.c: apply above changes.
+
+ * ext/dl/mkcallback.rb, ext/json/ext/generator/generator.c:
+ ditto.
+
+Wed Nov 14 00:15:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/ytab.sed: get rid of GNU sed feature. a patch from Laurent
+ Sansonetti <laurent.sansonetti AT gmail.com> in [ruby-core:13470].
+
+Tue Nov 13 21:41:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (parse.c), ext/ripper/depend (ripper.c): process after
+ bison with sed. [ruby-dev:32204]
+
+ * ruby.c (proc_options): use yydebug in cmdline_options.
+
+ * ruby.c (process_options): set yydebug flag of parser.
+
+ * parse.y (yydebug): moved into struct parser_params.
+
+ * parse.y (rb_parser_get_yydebug, rb_parser_set_yydebug): parser
+ generic methods.
+
+ * */Makefile.sub (parse.c): moved to common.mk.
+
+ * tool/ytab.sed: comment out yydebug definition, and substitute
+ yyerror with parser_yyerror.
+
+Tue Nov 13 16:33:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flodivmod): work around for infinity.
+
+ * numeric.c (flo_divmod): work around for platforms have no round().
+ [ruby-dev:32247]
+
+Tue Nov 13 15:26:33 2007 Tanaka Akira <akr@fsij.org>
+
+ * lex.c.blt: moved from lex.c.
+
+ * lex.c.src: copied from keywords. This is the source of lex.c.blt.
+
+ * Makefile.in (lex.c): use lex.c.blt if keywords is same as lex.c.src.
+
+ * win32/Makefile.sub (lex.c): re-introduce copy rule.
+
+ * bcc32/Makefile.sub (lex.c): ditto.
+
+ * wince/Makefile.sub (lex.c): ditto.
+
+Tue Nov 13 15:21:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_specialized_instruction): check argc.
+
+Tue Nov 13 14:44:32 2007 why the lucky stiff <why@ruby-lang.org>
+
+ * test/yaml/test_yaml.rb: fixed the failing YAML Struct test
+ at ko1's request.
+
+Tue Nov 13 02:57:04 2007 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
+
+ * numeric.c (flo_divmod): round to the nearest integer.
+ [ ruby-Bugs-14540 ]
+
+Tue Nov 13 00:36:16 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb: fixed tests for set_trace_func.
+
+Mon Nov 12 19:47:29 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (call_trace_proc): should return value.
+
+Mon Nov 12 19:45:18 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub (miniruby): use $(COMMONOBJS) and $(DMYEXT)
+ instead of $(LIBRUBY_A).
+
+Mon Nov 12 18:32:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc,win}32/Makefile.sub (MINIOBJS): added prelude.$(OBJEXT).
+
+Mon Nov 12 17:13:23 2007 Tanaka Akira <akr@fsij.org>
+
+ * Makefile.in, common.mk: add prelude.o to MINIOBJS.
+
+Mon Nov 12 16:52:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): rdoc about srcprefix. a patch from
+ Daniel Berger <djberg96 AT gmail.com> in [ruby-core:13378].
+
+Mon Nov 12 16:48:09 2007 Tanaka Akira <akr@fsij.org>
+
+ * Makefile.in, common.mk: add ext_prelude.o to OBJS.
+
+Mon Nov 12 13:57:39 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (MINIDLNOBJS): removed.
+ (MINIOBJS): set to dln.o if dmydln.o is not used.
+
+ * Makefile.in (miniruby): use MINIOBJS instead of MINIDLNOBJS.
+
+Mon Nov 12 13:53:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): handle stringified
+ symbols properly using ruby-forward-string.
+
+Mon Nov 12 12:17:59 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in (MINIDLNOBJS): defined.
+
+ * Makefile.in (miniruby): use MINIDLNOBJS and COMMONOBJS instead of
+ MINIOBJS and OBJS to avoid linking both dmydln.o and dln.o.
+
+Sun Nov 11 20:32:45 2007 Tanaka Akira <akr@fsij.org>
+
+ * {win32,wince,bcc32}/Makefile.sub: delete lex.c rule.
+
+Sun Nov 11 19:40:52 2007 Tanaka Akira <akr@fsij.org>
+
+ * Makefile.in (lex.c): simplified.
+
+Sun Nov 11 18:31:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * Makefile.in (lex.c): touch lex.c if gperf failed but lex.c exists.
+ Although this may cause non-updated lex.c,
+ svn co may generate keywords newer than lex.c especially on
+ a file system which can record fractional mtime such as XFS.
+
+Sun Nov 11 17:32:46 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * insnhelper.ci (vm_call_method): pass mn->nd_clss to
+ vm_call_cfunc() instead of klass.
+
+ * vm.c (rb_thread_method_id_and_klass): traverse parent_iseq.
+
+ * thread.c (call_trace_proc): use rb_thread_method_id_and_klass().
+
+Sun Nov 11 16:54:25 2007 Tanaka Akira <akr@fsij.org>
+
+ * lex.c: renamed from lex.c.blt.
+
+ * Makefile.in (lex.c): use find command to check mtime.
+
+Sun Nov 11 05:34:13 2007 Eric Hodel <drbrain@segment7.net>
+
+ * bin/gem: Add forgotten gem command.
+
+Sat Nov 10 23:50:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * string.c (tr_trans): cast to unsigned char after dereference
+ a pointer to a char to avoid SEGV with "\377".tr("a", "b").
+ on FreeBSD/amd64.
+
+Sat Nov 10 23:08:53 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in, common.mk, Makefile.in: don't generate
+ libminiruby-static.a.
+
+Sat Nov 10 19:46:54 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in, common.mk, Makefile.in: generate libminiruby-static.a
+ which contains prelude.o for miniruby.
+
+Sat Nov 10 18:10:07 2007 Tanaka Akira <akr@fsij.org>
+
+ * gem_prelude.rb: new file for gem libraries. currently empty.
+
+ * common.mk: generate ext_prelude.c by prelude.rb and gem_prelude.rb.
+ ruby (not miniruby) is linked with ext_prelude.o instead of
+ prelude.o.
+
+ * inits.c (rb_call_inits): don't call Init_prelude.
+
+ * ruby.c: support --disable-gems option.
+ (ruby_init_gems): new function to define Gem::Enable and
+ invoke Init_prelude.
+ (process_options): call ruby_init_gems just after
+ ruby_init_loadpath.
+
+ * tool/compile_prelude.rb: support multiple files.
+
+Sat Nov 10 17:27:55 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * thread.c (call_trace_proc): don't call ID2SYM() for ID_ALLOCATOR
+ to avoid SEGV.
+
+Sat Nov 10 16:37:07 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems revision 1493.
+
+ * lib/rubygems.rb: ditto.
+
+ * lib/ubygems.rb: ditto.
+
+ * lib/rbconfig/datadir.rb: ditto.
+
+ * test/rubygems: ditto.
+
+Sat Nov 10 16:34:21 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/soap/property.rb: Don't override Enumerable#inject for 1.9.
+
+Sat Nov 10 14:43:30 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * parse.y: use ASCII encoding for string literals that are
+ 7-bit clean, fixing regression from my previous patch
+
+Sat Nov 10 13:18:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc32,win32}/Makefile.sub: vendor_ruby support.
+
+Fri Nov 9 23:33:16 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_nextc): added single line read forward buffer.
+
+ * parse.y (parser_yylex): adjust line number for fluent interface.
+
+Fri Nov 9 22:04:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.h (FRAME_MAGIC_MASK_BITS): bits of FRAME_MAGIC_MASK.
+
+ * insnhelper.ci (vm_call_cfunc, vm_cfunc_flags): use shift operations.
+
+Fri Nov 9 21:46:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (eval): should be volatile value for GC.
+
+Fri Nov 9 17:48:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (locale_encoding): guesstimate encoding from environment
+ variables. [ruby-core:13315]
+
+ * ruby.c (process_options): set primary encoding from environment.
+
+Fri Nov 9 16:51:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_each_byte): should update rbuf_off and rbuf_len for
+ each iteration. [ruby-dev:31659][ruby-dev:32192]
+
+ * variable.c (rb_cvar_set): cvar assignment obey same rule to cvar
+ reference. [ruby-dev:32192]
+
+Fri Nov 9 15:52:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_check_encoding, rb_set_primary_encoding): ENCODING
+ is no longer in FL_USERS flags.
+
+Fri Nov 9 15:20:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_squeeze_bang): initialize squeezing table if no
+ arguments given.
+
+Fri Nov 9 13:57:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (each_with_index_i): use rb_yield_values() for
+ compatibility with Enumerator#with_index(). a patch from Yusuke
+ ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32195]
+
+Fri Nov 9 13:45:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (TestIterator::IterTest::each):
+ #each_pair is now alias to #each. [ruby-dev:32192]
+
+ * test/ruby/test_iterator.rb (TestIterator::test_assoc_yield):
+ ditto
+
+Fri Nov 9 12:56:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_load.c (loaded_feature_path): check with type of given feature.
+
+Fri Nov 9 12:43:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_basicinstructions.rb: updated for new class
+ behavior. [ruby-dev:32192]
+
+ * encoding.c (enc_name): Encoding should not rely on ENCODING in
+ the FL_USERS flags.
+
+ * encoding.c (rb_enc_from_encoding): do not call rb_enc_associate
+ for encoding itself.
+
+ * encoding.c (enc_register_at): ditto.
+
+ * marshal.c (r_ivar): do not set real instance variable for
+ encoding data associated.
+
+Fri Nov 9 10:43:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (send_internal): use self in the previous frame to check for
+ protected methods. [ruby-core:13254]
+
+ * insnhelper.ci (vm_call_method): send! method has gone.
+
+Fri Nov 9 10:38:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * marshal.c (w_object): should be SPECIAL_CONST_P() instead of
+ IMMEDIATE_P().
+
+Fri Nov 9 10:29:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_invoke_method): check if invoked in function style.
+ [ruby-core:13245]
+
+ * insnhelper.ci (vm_call_cfunc, vm_cfunc_flags): stores and returns VM
+ calling flags.
+
+ * vm.c (rb_vm_cfunc_funcall_p): returns if the current method is
+ invoked in function style.
+
+Fri Nov 9 10:10:21 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: add rb_context_t#type.
+
+Fri Nov 9 10:05:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (set_arg0): fix breaking environ bugs.
+
+Fri Nov 9 07:26:04 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c: update MT URL.[ruby-core:13305].
+
+Thu Nov 8 17:09:55 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * object.c: improve docs for Object.tap
+
+ * ChangeLog: fix bogus dates on my previous entries
+
+Thu Nov 8 15:13:56 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * parse.y: fix segfault with \x escapes in regexps
+ delete unused #if 0 code regions from previous patch
+
+Thu Nov 8 12:12:10 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_read_escape): remove C99/gcc-ism.
+
+Thu Nov 8 07:54:22 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * parse.y: patch, based on Nobu's, work to support \u escapes
+ also modifications for better coderange detection
+
+ * test/ruby/test_unicode_escapes.rb: test cases
+
+ * test/ruby/test_mixed_unicode_escapes.rb: mixed encoding test cases
+
+Thu Nov 8 07:14:37 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * parse.y (rb_intern3): commented out broken code that prevented
+ correct interning of multi-byte symbols. Without this patch
+ :x==:x is false when x is a multi-byte character.
+
+Thu Nov 8 07:04:31 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * string.c (tr_setup_table, tr_trans): fix test failures
+ in test/ruby/test_string.rb
+
+Wed Nov 7 15:07:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_each_with_index): make different arrays at each
+ iteration. [ruby-dev:32181]
+
+Wed Nov 7 05:17:24 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * eval.c: fix typo in invoke_method documentation
+
+Wed Nov 7 03:52:26 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_product): core dumped with non array arguments.
+ a patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32180]
+
+Wed Nov 7 03:32:38 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/encodings/SHIFT-JIS.rb (REXML::Encoding): place -x for
+ nkf conversion. a patch from <moonwolf AT moonwolf.com>.
+ [ruby-dev:32183]
+
+Wed Nov 7 02:59:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_each_index): should return meaningful value.
+
+Tue Nov 6 16:37:47 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_load.c (loaded_feature_path): need to expand relative paths.
+
+ * eval_load.c (rb_feature_p): check if the feature is loading with
+ load path. [ruby-dev:31932]
+
+ * eval_load.c (load_lock): check the result of barrier waiting.
+
+ * thread.c (rb_barrier_wait): check if owned by the current thread.
+
+ * thread.c (rb_barrier_release): ditto.
+
+Mon Nov 5 08:01:22 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): move #send to Kernel module from BasicObject.
+
+Mon Nov 5 05:17:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Switch::summarize): fix for long form
+ option with very long argument. a patch from Kobayashi Noritada
+ <nori1 AT dolphin.c.u-tokyo.ac.jp> in [ruby-list:44179].
+
+Mon Nov 5 01:20:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (call_args): remove "parenthesize argument(s) for future
+ version" warning. when I added this warning, I had a plan to
+ reimplement the parser that is simpler than the current one.
+ since we abandoned the plan, warning no longer required.
+
+Mon Nov 5 01:02:56 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTPHeader#initialize): provide default
+ User-Agent to fix 500 error on some corrupted HTTP servers.
+ [ruby-core:13135]
+
+Mon Nov 5 00:32:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_send): allow send/__send__ to call methods of all
+ visibility again. we no longer provide __send, __send!.
+
+ * eval.c (rb_invoke_method): new method to honor private
+ visibility. if it's invoked in a function call style, it calls
+ private methods as well (previous 1.9 send behavior).
+
+Mon Nov 5 00:24:24 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: vendor_ruby support.
+
+ * configure.in (RUBY_LIB): duplicated.
+
+Mon Nov 5 00:01:33 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_quote): quote \v as well.
+
+Sun Nov 4 23:51:59 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_initialize_m): use StringValuePtr instead of
+ StringValueCStr because \0 exists when Regexp.new("\0").
+
+Sun Nov 4 08:11:19 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (count_objects): count TOTAL.
+
+Sun Nov 4 03:58:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_setup_table): use C array for characters that fit
+ in a byte to gain performance.
+
+ * string.c (rb_str_delete_bang): ditto.
+
+ * string.c (rb_str_squeeze_bang): ditto.
+
+ * string.c (rb_str_count): ditto.
+
+ * string.c (tr_trans): ditto.
+
+Sun Nov 4 00:06:40 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (count_objects): ObjectSpace.count_objects implemented.
+ [ruby-core:12301]
+
+Sat Nov 3 22:49:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_each_pair): make Hash#each to be alias to
+ Hash#each_pair for compatibility and clarity.
+
+ * hash.c (env_each_pair): ditto.
+
+Sat Nov 3 22:41:05 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: --with-vendor-hdrdir implemented.
+
+ * lib/mkmf.rb: check --vendor argument.
+
+ * README.EXT: explain --vendor option for extconf.rb
+
+ * README.EXT.ja: ditto.
+
+Sat Nov 3 20:30:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: --with-vendordir implemented.
+
+ * mkconfig.rb: add config to vendorlibdir and vendorarchdir.
+
+ * instruby.rb: make vendor library directories.
+
+ * ruby.c: insert vendor library directories into load path.
+
+Fri Nov 2 20:55:49 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/content.rb, lib/rss/content/, lib/rss/maker/content.rb,
+ test/rss/test_content.rb, test/rss/test_maker_content.rb,
+ test/rss/rss-testcase.rb (RSS::TestCase): supported
+ content:encoded with RSS 2.0.
+ Suggested by Sam Lown. Thanks.
+
+Fri Nov 2 20:47:04 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, test/rss/test_version.rb: 0.2.0 -> 0.2.1.
+
+Thu Nov 1 21:56:45 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (Init_Exception): make NameError to be subclass of
+ StandardError again.
+
+ * error.c (Init_Exception): make SecurityError to be subclass of
+ Exception, since it's too important to be handled implicitly.
+
+Thu Nov 1 14:51:39 2007 David Flanagan <davidflanagan@ruby-lang.org>
+ * enum.c (take_while_i, drop_while_i) add RTEST to handle nil return
+
+Thu Nov 1 02:12:50 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (prereq): update the path of prelude.c.
+
+ * common.mk (prelude.c): rollback a part of r13675, because it is not
+ documented and causes build error.
+
+Thu Nov 1 01:52:23 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enum.c (enum_drop): fix typo.
+
+Thu Nov 1 01:51:01 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_core.h (ruby_current_thread): RUBY_EXTERN'ed for probeprofiler.
+
+Thu Nov 1 00:46:30 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat, setup.mak: now can recognize OS even if
+ the ``--target'' option of configure is omitted.
+
+ * win32/README.win32: update the descriptions about compiler.
+
+Wed Oct 31 03:13:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_take_while): separate with-block form.
+
+ * enum.c (drop_while_i): ditto.
+
+ * enum.c (enum_butfirst): abandon butfirst method. reverted.
+
+Tue Oct 30 10:03:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_butfirst): add a new method to iterates over
+ elements but first n. RDoc need to be updated.
+
+ * enumerator.c (Init_Enumerator): remove unnecessary symbol
+ initialization.
+
+Mon Oct 29 18:42:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (bvar): block-local variable can shadow outer variable.
+ [ruby-core:13036]
+
+Mon Oct 29 17:58:16 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_substr): performance improvement. [ruby-dev:31806]
+
+Mon Oct 29 17:20:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_replicate): new function to replicate encoding.
+
+ * encoding.c (enc_based_encoding): Encoding#base_encoding returns
+ based encoding of replica.
+
+Mon Oct 29 17:18:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): ASCII encoding is compatible with
+ ASCII-compatible encoding, even for non-string objects.
+
+Sun Oct 28 21:50:02 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: :redirect option implemented to disable redirects.
+ (OpenURI::HTTPRedirect): new exception class for redirection.
+
+Fri Oct 26 17:38:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (int_chr): take an optional encoding parameter.
+ [ruby-core:12816]
+
+Fri Oct 26 17:14:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_pow): returns 1.0 for 0**0.0.
+
+ * numeric.c (fix_pow): returns infinity for 0**-1. [ruby-dev:32084]
+
+Fri Oct 26 15:00:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-{case,label}-indent): adjust for
+ labels inside switch block.
+
+Fri Oct 26 05:48:57 2007 David Flanagan <davidflanagan@ruby-lang.org>
+ * array.c: raise IndexError for negative length in rb_ary_fill
+
+Wed Oct 25 07:12:03 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/net/telnet.rb (Net::Telnet#login): Allowing "passphrase" in
+ addition to "password" for Telnet login prompts. [ruby-Bugs-10746]
+
+Wed Oct 25 06:34:11 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/net/telnet.rb (Net::Telnet#login): Making the password prompt
+ pattern case insensitive. [ruby-Bugs-10746]
+
+Fri Oct 26 04:21:36 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/pop.rb (Net::POP3::do_start): type fixed. a patch from
+ Dan Zwell <dzwell AT zwell.net> in [ruby-core:12941].
+
+Fri Oct 26 01:48:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_assoc): check and convert inner arrays (assocs)
+ using #to_ary.
+
+ * hash.c (rb_hash_s_create): check and convert argument hash
+ using #to_hash.
+
+ * hash.c (rb_hash_s_create): Hash#[] now takes assocs as source of
+ hash conversion.
+
+Thu Oct 25 16:46:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): dot at the head of the line denote line
+ continuation from previous one to support fluent interface.
+ [experimental]
+
+ * misc/ruby-mode.el (ruby-calculate-indent): support fluent dot.
+
+Thu Oct 25 14:19:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_tell, rb_io_seek): check errno too. [ruby-dev:32093]
+
+Thu Oct 25 13:59:53 2007 David Flanagan <davidflanagan@ruby-lang.org>
+
+ * parse.y (parser_tokspace): increment tokidx
+ fixes test failure at [test/ruby/test_stringchar.rb:72]
+
+Thu Oct 25 09:49:49 2007 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri.rb, lib/uri/ldaps.rb: added LDAPS
+ scheme. [ruby-dev:31896]
+
+Wed Oct 25 06:23:14 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/parser.rb (XMLRPC::Convert::dateTime): Fixing a bug that
+ caused time zone conversion to fail for some ISO 8601 date formats.
+ [ruby-Bugs-12677]
+
+Wed Oct 25 04:59:28 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client#do_rpc): Explicitly start
+ the HTTP connection to support keepalive requests. [ruby-Bugs-9353]
+
+Wed Oct 25 04:46:53 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client#do_rpc): Improving the error
+ message for Content-Type check failures. [ruby-core:12163]
+
+Wed Oct 25 03:45:08 2007 James Edward Gray II <jeg2@ruby-lang.org>
+
+ * lib/xmlrpc/utils.rb (XMLRPC::ParseContentType#parse_content_type):
+ Making Content-Type checks case insensitive. [ruby-Bugs-3367]
+
+Wed Oct 24 17:09:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokspace): make space in token buffer.
+
+ * parse.y (parser_yylex): fix encoding of single character literal.
+
+Tue Oct 23 13:44:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (call_args2): nd_head of NODE_BLOCK_PASS should be a list.
+ [ruby-core:12850]
+
+Tue Oct 23 10:42:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): encoding set by command line option takes
+ priority over the encoding in the source, as the primary encoding.
+
+Mon Oct 22 19:24:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): allow space after -E (encoding) option.
+
+Mon Oct 22 11:03:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_check_encoding): returns index now.
+
+ * encoding.c (rb_enc_compatible): check if two objects have compatible
+ encodings.
+
+ * encoding.c (enc_compatible_p): added Encoding.compatible?.
+
+ * include/ruby/encoding.h (rb_enc_compatible): prototype.
+
+Sun Oct 21 18:29:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_default, rb_enc_primary): return pointers to
+ rb_encoding of default and primary respectively. [ruby-core:12795]
+
+ * encoding.c (set_primary_encoding): removed primary_encoding setter.
+
+Sat Oct 20 13:17:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_cycle): hide temporary array from ObjectSpace.
+ [ruby-core:12762]
+
+Sat Oct 20 11:49:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_get_path): returns frozen string.
+
+ * file.c (rb_file_s_chown, rb_file_s_lchown): use uid_t and gid_t.
+
+Fri Oct 19 20:08:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_id_encoding): returns ID "encoding".
+
+ * marshal.c (w_encoding): dump encoding name.
+
+ * marshal.c (r_ivar): load encoding.
+
+Fri Oct 19 16:41:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_regx_options, reg_compile_gen): relaxened encoding
+ matching rule.
+
+ * re.c (rb_reg_initialize): always set encoding of Regexp.
+
+ * re.c (rb_reg_initialize_str): fix encoding for non 7bit-clean
+ strings.
+
+ * re.c (rb_reg_initialize_m): use ascii encoding for 'n' option.
+
+Fri Oct 19 11:09:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_options): set primary encoding from the parser
+ always. [ruby-core:12758]
+
+ * ruby.c (load_file): should not discard the parser parameter.
+
+Fri Oct 19 10:55:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_last): removed unused variables.
+
+Thu Oct 18 17:08:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_find_index): update RDoc. a patch from David Flanagan
+ <david AT davidflanagan.com> in [ruby-core:12710].
+
+ * enum.c (enum_take, enum_drop): ditto.
+
+ * enum.c (enum_cycle): should not cause infinite loop for empty
+ arrays. [ruby-core:12710]
+
+ * range.c (Init_Range): typo fixed.
+
+Thu Oct 18 16:39:34 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/source.rb (REXML::SourceFactory::SourceFactory): more
+ duck typed. better performance on JRuby.
+ http://headius.blogspot.com/2007/10/another-performance-discovery-rexml.html
+
+Thu Oct 18 09:33:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_first): takes first n element if argument is
+ given. [ruby-core:12697]
+
+ * range.c (range_last): returns last n elements if argument is
+ given.
+
+ * array.c (rb_ary_subseq, rb_ary_last): export.
+
+Wed Oct 17 17:39:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): fixed reversed condition. [ruby-core:12722]
+
+Wed Oct 17 13:54:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_s_union): the last check was not complete.
+
+Wed Oct 17 11:30:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_from_encoding, rb_enc_register): associate index
+ to self.
+
+ * encoding.c (enc_capable): Encoding objects are encoding capable.
+
+ * re.c (rb_reg_s_union): check if encoding matching by exact encoding
+ objects.
+
+Wed Oct 17 06:18:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_alias, rb_enc_find_index): changed
+ enc_table_alias to a name-to-index hash.
+
+ * encoding.c (rb_enc_init): use upper case names for aliases to use as
+ constant names.
+
+ * encoding.c (enc_find): allow symbols.
+
+ * encoding.c (Init_Encoding): define encoding constants.
+
+ * st.c (strcasehash): fix wrong code range condition.
+
+Wed Oct 17 05:07:18 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_primary_encoding): added Encoding.primary_encoding.
+
+ * parse.y (rb_parser_encoding): added.
+
+ * ruby.c (proc_options): added -E and --encoding options.
+
+ * ruby.c (process_options): set primary encoding from command line
+ option if set, or source encoding.
+
+ * include/ruby/encoding.h (rb_enc_from_encoding,
+ rb_get_primary_encoding, rb_set_primary_encoding): prototypes.
+
+ * include/ruby/node.h (rb_parser_encoding): prototype.
+
+Wed Oct 17 03:37:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_desc): set encoding.
+
+ * re.c (rb_reg_s_union): check encodings.
+
+ * enc/utf8.c (utf8_code_to_mbclen): 0xfe and 0xff are valid Unicode to
+ be encoded to 2bytes in UTF-8. [ruby-core:12700]
+
+Wed Oct 17 02:50:49 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_ord): use encoding.
+
+Wed Oct 17 01:57:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_initialize_m): allow binary encoding option.
+ [ruby-dev:32083]
+
+Tue Oct 16 19:48:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_reg_s_union): check for encoding of original object.
+
+Tue Oct 16 18:28:51 2007 Tanaka Akira <akr@fsij.org>
+
+ * debug.c: use enum for constants for gdb if possible.
+
+Tue Oct 16 18:20:10 2007 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c, debug.c: move debug enum and constants to debug.c.
+
+Tue Oct 16 18:16:15 2007 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (RUBY_ENCODING_SHIFT): added as enum.
+
+ * .gdbinit (rp): show encoding and coderange for strings.
+
+Tue Oct 16 14:48:38 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_regx_options): check if regexp encoding option
+ matches to current encoding.
+
+ * re.c (char_to_option, rb_char_to_option_kcode): 'n' is not kcode
+ option now.
+
+ * re.c (rb_reg_to_s, rb_reg_error_desc): copy encoding rather than
+ append as an option.
+
+ * re.c (make_regexp, rb_reg_prepare_re): use encoding of Regexp and
+ String instead of kcode.
+
+ * re.c (rb_reg_initialize): set fixed option if none is set.
+
+ * re.c (rb_reg_regcomp): ditto.
+
+ * re.c (rb_reg_equal): check if encodings are equal.
+
+ * re.c (rb_reg_initialize_m): encoding option is obsolete.
+
+ * re.c (rb_kcode, rb_get_kcode, rb_set_kcode): removed.
+
+ * re.c (Init_Regexp): removed Regexp#kcode method.
+
+ * ruby.c (proc_options): allow long encoding name.
+
+Tue Oct 16 14:03:09 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_s_union): encoding of all regexp objects should
+ match. [ruby-dev:32076]
+
+Tue Oct 16 13:49:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (enc_to_s): rename function.
+
+Tue Oct 16 13:25:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_new4): should copy encoding. a patch from NARUSE,
+ Yui <naruse AT airemix.com>. [ruby-dev:32076]
+
+Tue Oct 16 01:31:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): RDoc update. a patch from David Flanagan
+ <david AT davidflanagan.com> in [ruby-core:12710].
+
+Tue Oct 16 01:25:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (Init_Encoding): define #to_s to show encoding name
+ in to_s representation as well as #inspect.
+
+Mon Oct 15 13:24:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_round): should be number but not rounding factor.
+ [ruby-dev:32060]
+
+Mon Oct 15 11:45:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_bytes0): refined length check. [ruby-dev:32059]
+
+Mon Oct 15 10:24:19 2007 Tanaka Akira <akr@fsij.org>
+
+ * process.c (pst_to_s): returns a string such as "pid 10220 exit 1"
+ instead of "256". [ruby-dev:32053]
+ (pst_inspect): change format
+ "#<Process::Status: pid=10220,exited(1)>" to
+ "#<Process::Status: pid 10220 exit 1>".
+
+Mon Oct 15 09:58:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_bytes0): check if source has enough data.
+ [ruby-dev:32054]
+
+Mon Oct 15 01:15:09 2007 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (s_accept_nonblock): make accepted fd
+ nonblocking. [ruby-talk:274079]
+
+Sun Oct 14 17:31:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_obj_encoding): rdoc update. a patch from David
+ Flanagan <david AT davidflanagan.com>. [ruby-core:12664]
+
+ * encoding.c (enc_dump, enc_load): marshaling feature. a patch from
+ David Flanagan. [ruby-core:12665]
+
+ * encoding.c (Init_Encoding): undefine allocator of Encoding.
+ [ruby-core:12665], [ruby-core:12666]
+
+ * test/ruby/test_encoding.rb: tests for Encoding from David Flanagan
+ [ruby-core:12665]
+
+Sun Oct 14 11:09:09 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (PP::PPMethods#pp_hash): don't sort keys because hash is
+ ordered.
+ (ENV.pretty_print): call pp_hash with sorted hash.
+
+Sun Oct 14 04:08:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (AC_SYS_LARGEFILE): keep results also in command
+ options, to vail out of mismatch. [ruby-list:44114]
+
+ * mkconfig.rb, lib/mkmf.rb (configuration): add DEFS.
+
+Sun Oct 14 03:55:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/mkexports.rb: deal with __fastcall name decorations.
+ [ruby-list:44111]
+
+Sun Oct 14 02:20:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_cEncoding): new Encoding class.
+
+ * encoding.c (rb_to_encoding, rb_to_encoding_index): helper functions.
+
+ * encoding.c (rb_obj_encoding): return Encoding object now.
+
+ * gc.c (garbage_collect): mark Encoding objects.
+
+ * inits.c (rb_call_inits): call Init_Encoding.
+
+ * string.c (rb_str_force_encoding): accept Encoding object as well as
+ encoding name.
+
+ * include/ruby/encoding.h (rb_to_encoding_index, rb_to_encoding):
+ prototypes.
+
+Sun Oct 14 01:03:30 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (OpenURI.open_http): fix :ssl_ca_cert option.
+
+Sat Oct 13 21:23:21 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (foletype_s_ole_classes,
+ foletype_s_typelibs): refactoring.
+
+ * test/win32ole/test_win32ole_type.rb: add some test.
+
+ * ext/win32ole/win32ole.c (Init_win32ole): change method name
+ WIN32OLE_TYPELIB.ole_types from WIN32OLE_TYPELIB.ole_classes.
+
+ * test/win32ole/test_win32ole_typelib.rb: ditto.
+
+ * test/win32ole/test_folderitem2_invokeverb.rb: check create
+ shortcut string more strictly (This test is invoked in Japanese
+ Windows environment).
+
+Sat Oct 13 09:11:58 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (set_file_encoding): case-insensitive search, a patch from
+ David Flanagan <david AT davidflanagan.com> [ruby-core:12629]
+
+Sat Oct 13 09:02:16 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc,win}32/mkexports.rb: explicit data. [ruby-list:44108]
+
+Sat Oct 13 00:17:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/document.rb (REXML::Document::write): leaky
+ modification trans -> transitive. [ruby-dev:32040]
+
+Sat Oct 13 00:00:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: encoding specifier should work if the line matches
+ /coding[:=] ?/, a la Python PEP-263, so that VIM comments like
+ "# vim: set fileencoding=<encoding name>" should be recognized.
+
+Fri Oct 12 15:04:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (magic_comments): add "encoding" as same as "coding".
+
+ * parse.y (set_file_encoding): special file encoding handling.
+
+ * parse.y (parser_yylex): ditto.
+
+Fri Oct 12 12:44:11 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_combination): fixed memory corruption due to too
+ small memory allocation
+
+ * array.c (rb_ary_product): accessing out of memory bounds.
+ condition fixed.
+
+Fri Oct 12 11:22:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (match_values_at): make #select to be alias to #values_at
+ to adapt RDoc description. [ruby-core:12588]
+
+Thu Oct 11 21:10:17 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/node.h (NOEX_LOCAL): remove unused local visibility.
+
+ * class.c (ins_methods_push): ditto.
+
+ * class.c (rb_class_local_methods): method removed.
+
+Thu Oct 11 14:29:31 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * */Makefile.sub (COMMON_MACROS): workaround for old SDK's bug.
+ [ruby-core:12584]
+
+Thu Oct 11 06:35:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, */Makefile.sub (VPATH): add enc directory.
+
+ * common.mk (ENCOBJS): encoding objects.
+
+ * enc: directory for encodings.
+
+Thu Oct 11 00:04:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): add OnigEncoding
+ parameter to every function members.
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): add auxiliary
+ data member to provide user defined data for an encoding.
+
+Wed Oct 10 23:32:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_s_quote): no longer takes optional second argument
+ that has never been documented.
+
+Wed Oct 10 15:39:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * encoding.c (rb_enc_init): don't alias iso-8859-1 to ascii.
+
+ * ascii.c (OnigEncodingASCII): change the name US-ASCII to ASCII-8BIT.
+
+Wed Oct 10 14:31:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_enc_str_coderange): fixed check for non-ascii.
+
+Tue Oct 9 21:35:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_permutation, rb_ary_combination): missing type
+ names.
+
+ * array.c (rb_ary_permutation): used buffer should be t1.
+
+ * array.c (rb_ary_permutation): use frozen shared hidden array.
+ [ruby-dev:31985]
+
+Tue Oct 9 16:58:10 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c: remove to_a completely.
+
+ * array.c (tmpbuf): keep DRY to clear klass of temporary objects.
+
+Tue Oct 9 16:33:32 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_permutation, rb_ary_combination, rb_ary_product):
+ hide internal buffer objects. [ruby-dev:31982]
+
+Tue Oct 9 16:00:32 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (parser_read_escape, parser_tokadd_escape): check code range.
+ [ruby-dev:31980]
+
+Tue Oct 9 15:40:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (STR_NEW3): check for if single byte sequence.
+
+Mon Oct 8 20:06:29 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/imap.rb, lib/net/smtp.rb, lib/net/pop.rb: hostname should
+ be verified against server's identity as presented in the server's
+ certificate. [ruby-dev:31960]
+
+ * ext/openssl/lib/net/telnets.rb, ext/openssl/lib/net/ftptls.rb: ditto.
+
+Sun Oct 7 22:37:47 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_taxonomy.rb, test/rss/test_parser_1.0.rb,
+ test/rss/test_image.rb, test/rss/rss-testcase.rb: ensured
+ declaring XML namespaces.
+
+Sun Oct 7 22:00:01 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/node.h: make node flags as VALUE type.
+ enum ruby_node_flags removed.
+
+ * ruby.c: define RUBY_NODE_* as const for gdb.
+
+Sun Oct 7 18:57:12 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h: enum ruby_value_flags removed. [ruby-dev:31959]
+
+ * ruby.c: define RUBY_FL_* as const VALUE for gdb.
+
+Sun Oct 7 17:50:14 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/http.rb: remove enable_post_connection_check flag.
+
+ * lib/open-uri.rb: ditto.
+
+Sun Oct 7 15:48:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_eq): fix to use rb_str_equal().
+
+Sat Oct 6 23:14:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_to_i): update RDoc since base can be any value
+ between 2 and 36. [ruby-talk:272879]
+
+Sat Oct 6 16:24:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_free): check Fiber or Continuation.
+
+ * bootstraptest/test_knownbug.rb: remove a fixed test.
+
+Sat Oct 6 14:56:02 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_register): returns new index or -1 if failed.
+
+ * encoding.c (rb_enc_alias): check if original name is registered.
+
+ * encoding.c (rb_enc_init): register in same order as kcode options in
+ re.c. added new aliases.
+
+ * string.c (rb_str_force_encoding): check if valid encoding name.
+
+Sat Oct 6 14:32:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (opt_eq): get rid of gcc bug.
+
+Sat Oct 6 02:34:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/defines.h: no longer provide DEFAULT_KCODE.
+
+Fri Oct 5 21:24:59 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (rb_reg_s_union_m): Regexp.union accepts single argument which
+ is an array of patterns. [ruby-list:44084]
+
+Fri Oct 5 16:42:27 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_not_match): new method.
+
+Fri Oct 5 16:15:52 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in: Turn on --enable-pthread by default for FreeBSD
+ 5.2.1-RELEASE and later, and remove pthread support for older
+ versions which has never worked perfectly.
+
+Fri Oct 5 16:11:50 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * time.c (time_to_s): Fix documentation. Time format changed.
+
+Fri Oct 5 04:02:39 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb (in_addr, in6_addr, addr_mask): Make some minor
+ code optimization.
+
+Fri Oct 5 03:25:51 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb (<=>): Implement IPAddr#<=> and make IPAddr
+ comparable.
+
+ * lib/ipaddr.rb (succ): Implement IPAddr#succ. You can now create
+ a range between two IPAddr's, which (Range) object is
+ enumerable.
+
+ * lib/ipaddr.rb (to_range): A new method to create a Range object
+ for the (network) address.
+
+Fri Oct 5 03:14:45 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb (coerce_other): Support type coercion and make &,
+ |, == and include? accept a string or an integer instead of an
+ IPAddr object as the argument.
+
+ * lib/ipaddr.rb (initialize): Give better error messages.
+
+ * lib/ipaddr.rb: Improve documentation.
+
+Thu Oct 4 20:45:53 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (Init_process): win32 has our own WNOHANG definition, so
+ remove unnecessary #ifdef guard.
+
+Thu Oct 4 20:17:19 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (rb_ary_permutation, rb_ary_product): support non C99
+ compilers.
+
+Thu Oct 4 17:33:18 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (kcode_setter): Perl-ish global variable `$=' no longer
+ effective.
+
+ * io.c (Init_IO): remove obsolete variables: $defout, $deferr.
+
+ * re.c (Init_Regexp): remove obsolete const alias: MatchingData.
+
+ * time.c (Init_Time): remove obsolete Time::times.
+
+ * re.c (ignorecase_setter): change warning message.
+
+ * re.c (ignorecase_getter): now gives warning.
+
+ * string.c (rb_str_cmp_m): update RDoc document.
+
+ * re.c (kcode_setter): restore erroneously removed setter.
+
+Thu Oct 4 16:28:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_obj_encoding): returns encoding of the given object.
+
+ * parse.y (reg_compile_gen): copy encoding from source string if
+ non-empty.
+
+ * re.c (Init_Regexp): new method Regexp#encoding.
+
+ * string.c (str_encoding): moved to encoding.c
+
+Thu Oct 4 15:49:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_permutation): remove C99 dependency.
+ [ruby-dev:31934]
+
+ * array.c (rb_ary_product): ditto.
+
+Wed Oct 3 23:37:17 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/nkf/nkf.c, bin/ri, bin/irb: fixed typos in doc and comments.
+ a patch from Eugene Ossintsev <eugoss AT gmail.com>.
+ [ruby-core:12375]
+
+Wed Oct 3 17:56:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: enable specify label to executable.
+ (-e "ruby1::/path/to/ruby1; ruby2::/path/to/ruby2; ...")
+
+Wed Oct 3 16:58:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_str_new, parser_yylex, rb_intern3): set code-range
+ bits.
+
+ * parse.y (parser_tokadd_string): check code-range.
+
+ * parse.y (parser_parse_string, parser_here_document): ditto.
+
+ * parse.y (parser_set_encode): check if valid encoding.
+
+Wed Oct 3 15:43:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_set): check whether class variable is
+ defined in superclasses. root classes have higher priority.
+ removes lower class variable entry from IV_TBL (if it's defined
+ in classes, not modules).
+
+ * variable.c (rb_cvar_get): ditto.
+
+Wed Oct 3 10:06:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_process_options): push frame with program name.
+ [ruby-core:12351]
+
+Tue Oct 2 20:16:55 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_env): refactoring. remove unused code.
+
+Tue Oct 2 12:30:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_product): generalized product, now takes
+ arbitrary number of arrays. a patch from David Flanagan
+ <david AT davidflanagan.com>. [ruby-core:12346]
+
+Tue Oct 2 08:25:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_permutation): implementation contributed from
+ David Flanagan. [ruby-core:12344]
+
+ * array.c (rb_ary_combination): RDoc update to clarify. a patch
+ from David Flanagan. [ruby-core:12344]
+
+ * array.c (rb_ary_permutation): small dirty hack by Matz to avoid
+ arrays on stack.
+
+Tue Oct 2 07:01:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (proc_dup): proc->block.proc should be self.
+
+ * bootstraptest/test_knownbug.rb, test_method.rb:
+ move a fixed test.
+
+Mon Oct 1 16:17:44 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/test_method.rb: use assert_normal_exit to test
+ [ruby-dev:31818].
+
+Mon Oct 1 15:57:49 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (id2ref): skip ICLASS.
+
+Mon Oct 1 15:29:35 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_normal_exit): use `` instead of
+ system.
+
+Mon Oct 1 15:17:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (id2ref): T_VALUES is less than T_BLOCK. [ruby-dev:31911]
+
+Mon Oct 1 10:58:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (require_libraries): use require method instead of calling
+ rb_require directly. [ruby-dev:31322]
+
+Mon Oct 1 10:52:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_options), ruby.c (proc_options, process_options): not
+ call exit(2) directly. [ruby-dev:31912]
+
+ * eval.c (ruby_run_node): deal with direct exit code.
+
+Sun Sep 30 17:12:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_append): always set encoding, and coderange
+ cache bits.
+
+ * include/ruby/encoding.h (ENC_CODERANGE_SET): fixed a bug not to
+ set cache bits.
+
+Sun Sep 30 11:52:11 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (pretty): don't show beginning empty line.
+
+Sun Sep 30 11:32:34 2007 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c: use #ifdef for test LONG_LONG_VALUE.
+
+Sun Sep 30 04:30:55 2007 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c: use SIZEOF_LONG instead of SIZEOF_ULONG which is not
+ defined.
+
+Sun Sep 30 04:03:43 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (Init_Regexp): test DEFAULT_KCODE in C code because
+ KCODE_EUC, etc. are enum.
+
+Sun Sep 30 00:55:40 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * variable.c (obj_ivar_each): get rid of warning.
+
+Sat Sep 29 17:45:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * main.c (main): use platform-independent per-process initialization.
+ [ruby-dev:31900]
+
+ * ruby.c (ruby_sysinit): new function for per-process initialization.
+
+ * include/ruby/ruby.h (RUBY_GLOBAL_SETUP): toplevel setup declaration.
+
+ * include/ruby/win32.h, win32/mkexports.rb: alias NtInitialize
+ ruby_sysinit.
+
+ * win32/win32.c (rb_w32_sysinit): renamed from NtInitialize.
+
+Sat Sep 29 17:31:04 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_combination): new method to give all combination
+ of elements from an array. [ruby-list:42671]
+
+ * array.c (rb_ary_product): a new method to get all combinations
+ of elements from two arrays. can be extended to combinations of
+ n-arrays, e.g. a.product(b,c,d). anyone volunteer?
+
+ * array.c (rb_ary_permutation): empty function body to calculate
+ permutations of array elements. need volunteer.
+
+Sat Sep 29 17:14:44 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_leave): move proc invocation from r_entry() to
+ avoid potential crash.
+
+Sat Sep 29 12:28:08 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_normal_exit): new method.
+
+ * bootstraptest/test_knownbug.rb: add test for Marshal.load.
+
+Sat Sep 29 10:12:20 2007 Tanaka Akira <akr@fsij.org>
+
+ * variable.c (rb_ivar_set): fix class instance variable.
+
+ * object.c (rb_class_real): cl argument may be 0.
+
+Sat Sep 29 09:12:02 2007 Tanaka Akira <akr@fsij.org>
+
+ * object.c (rb_class_real): use BUILTIN_TYPE instead of TYPE.
+ access flags directly instead of FL_TEST.
+ they are enough because cl argument is a class.
+
+Sat Sep 29 08:57:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (strcasecmp): needed for type_strcasehash.
+
+Sat Sep 29 06:47:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (struct cmdline_options): static variables packed.
+
+Sat Sep 29 05:29:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_fdopen): create IO object from fd.
+
+ * parse.y (yycompile): use encoding of the source as default.
+
+ * ruby.c (proc_options, load_file): ditto.
+
+Sat Sep 29 04:27:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_alias): allow encodings multiple aliases.
+
+ * encoding.c (rb_enc_find_index): search the encoding which has the
+ given name and return its index if found, or -1.
+
+ * st.c (type_strcasehash): case-insensitive string hash type.
+
+ * string.c (rb_str_force_encoding): force encoding of self. this name
+ comes from [ruby-dev:31894] by Martin Duerst. [ruby-dev:31744]
+
+ * include/ruby/encoding.h (rb_enc_find_index, rb_enc_associate_index):
+ prototyped.
+
+ * include/ruby/encoding.h (rb_enc_isctype): direct interface to ctype.
+
+ * include/ruby/st.h (st_init_strcasetable): prototyped.
+
+Sat Sep 29 03:53:26 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: Thread local storage should be fiber local.
+
+ * bootstraptest/test_knownbug.rb, test/ruby/test_fiber.rb:
+ move a fixed test.
+
+Fri Sep 28 23:15:31 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insnhelper.ci (vm_call_method): allow send! to call protected
+ methods as well. [ruby-core:12280]
+
+Fri Sep 28 22:33:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_so_fasta.rb: added.
+
+ * benchmark/bm_so_k_nucleotide.rb: added.
+
+ * benchmark/bm_so_reverse_complement.rb: added.
+
+ * benchmark/make_fasta_output.rb: added.
+
+ * benchmark/prepare_so_k_nucleotide.rb: added.
+
+ * benchmark/prepare_so_reverse_complement.rb: added.
+
+Fri Sep 28 19:14:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: fix notations.
+
+ * benchmark/bm_loop_whileloop.rb: ditto.
+
+ * benchmark/bm_loop_whileloop2.rb: ditto.
+
+ * benchmark/bm_app_uri.rb: added.
+
+ * benchmark/bm_vm1_ivar_set.rb: ditto.
+
+ * benchmark/bm_so_binary_trees.rb: added from Computer Language
+ Benchmarks Game (http://shootout.alioth.debian.org/).
+
+ * benchmark/bm_so_fannkuch.rb: ditto.
+
+ * benchmark/bm_so_mandelbrot.rb: ditto.
+
+ * benchmark/bm_so_meteor_contest.rb: ditto.
+
+ * benchmark/bm_so_nbody.rb: ditto.
+
+ * benchmark/bm_so_nsieve.rb: ditto.
+
+ * benchmark/bm_so_nsieve_bits.rb: ditto.
+
+ * benchmark/bm_so_partial_sums.rb: ditto.
+
+ * benchmark/bm_so_pidigits.rb: ditto.
+
+ * benchmark/bm_so_spectralnorm.rb: ditto.
+
+Fri Sep 28 16:22:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_core.h (rb_vm_struct): fix typo: bufferd -> buffered.
+
+Fri Sep 28 15:47:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: fix to output benchmark results
+ to file "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}".
+
+ * benchmark/bm_io_file_create.rb: remove useless codes.
+
+ * benchmark/bm_vm2_eval.rb: added.
+
+Fri Sep 28 15:05:24 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h: export rb_ivar_foreach.
+
+ * include/ruby/ruby.h: modify struct RObject and RClass for optimizing
+ T_OBJECT space. [ruby-dev:31853]
+ (ROBJECT_LEN, ROBJECT_PTR)
+ (RCLASS_IV_TBL, RCLASS_M_TBL, RCLASS_SUPER, RCLASS_IV_INDEX_TBL)
+ (RMODULE_IV_TBL, RMODULE_M_TBL, RMODULE_SUPER): abstract accessor
+ defined.
+
+ * variable.c: support the modified RObject and RClass.
+
+ * object.c: ditto.
+
+ * class.c: ditto.
+
+ * gc.c: ditto.
+
+ * marshal.c: ditto.
+
+ * eval_method.ci: use the abstract accessor.
+
+ * insns.def: ditto.
+
+ * proc.c: ditto.
+
+ * struct.c: ditto.
+
+ * eval.c: ditto.
+
+ * error.c: ditto.
+
+ * vm.c: ditto.
+
+ * insnhelper.ci: ditto.
+
+ * ext/digest/digest.c: ditto.
+
+Fri Sep 28 13:20:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast, rb_io_getline_1): set encoding to the
+ result string, as well as getc.
+
+Fri Sep 28 12:51:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_app_erb.rb: added.
+
+ * benchmark/bm_io_file_(create|read|write).rb: added.
+
+Fri Sep 28 12:49:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: fix file selection algorithm.
+
+Fri Sep 28 02:05:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_comparable): need not to check asciicompat here.
+
+ * encoding.c (rb_enc_check): ditto.
+
+ * string.c (rb_enc_str_coderange): tuned a bit; no broken check.
+
+ * encoding.c (rb_enc_check): new encoding comparison criteria.
+
+Thu Sep 27 17:36:28 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/REAMDE.win32: follow recent changes.
+
+Thu Sep 27 16:01:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: fix to output some helpful messages.
+
+Thu Sep 27 15:44:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: added.
+
+ * common.mk: fix to use above driver.
+
+ * benchmark/prepare_so_count_words.rb: added.
+
+ * benchmark/bm_so_count_words.rb: fix benchmark process.
+
+Thu Sep 27 15:42:34 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ext/fiber/fiber.c: modify prototype declaration.
+ [ruby-core:12247]
+
+Thu Sep 27 09:42:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (strings, xstring, regexp, dsym): empty strings have
+ US-ASCII encoding.
+
+Thu Sep 27 07:39:13 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_finish): new method.
+
+ * bootstraptest/test_knownbug.rb: add test for [ruby-dev:31866] using
+ assert_finish.
+
+Thu Sep 27 04:46:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_associate_index): deal with ASCII compatible
+ flags.
+
+ * encoding.c (rb_enc_check): allow ASCII compatible strings.
+
+ * parse.y (rb_intern_str): use ASCII encoding for ASCII string.
+
+ * string.c (rb_enc_str_coderange): check for code-range.
+
+ * string.c (rb_str_modify): clear code-range flags.
+
+ * string.c (rb_str_hash, rb_str_eql): ASCII compatible strings are
+ comparable.
+
+ * include/ruby/encoding.h: added code-range flags.
+
+Thu Sep 27 04:40:47 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_mark_set): new function to mark keys.
+
+ * marshal.c (struct dump_arg, struct load_arg): added wrappers to mark
+ data and compat_tbl entries. [ruby-dev:31870]
+
+Thu Sep 27 03:17:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_waitpid): no needs to poll. [ruby-dev:31871]
+
+Wed Sep 26 20:11:46 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: remove a fixed test.
+
+Wed Sep 26 20:00:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: move fixed tests.
+
+ * bootstraptest/test_method.rb: ditto.
+
+ * test/ruby/test_io.rb: ditto.
+
+Wed Sep 26 19:36:26 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (eval): fix to check stack overflow.
+ [ruby-dev:31850]
+
+ * eval_intern.h, vm.h: move CHECK_STACK_OVERFLOW() macro.
+
+Wed Sep 26 19:27:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_throw): fix to move increment point.
+ [ruby-dev:31840]
+
+Wed Sep 26 19:23:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: Fiber as SemiCoroutine on default. [ruby-core:12146]
+
+ * ext/fiber/fiber.c: enable Fiber#transfer.
+
+Wed Sep 26 18:38:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_check): check for ASCII-compatibilities.
+
+ * parse.y (parser_tokadd_string, parser_parse_string,
+ parser_here_document, parser_yylex): set encoding to US-ASCII.
+
+ * parse.y (rb_enc_symname_p): check if valid with encoding.
+
+ * parse.y (rb_intern3): let symbols have encoding.
+
+ * string.c (rb_str_hash): add encoding index.
+
+ * string.c (rb_str_comparable, rb_str_equal, rb_str_eql): check if
+ compatible encoding.
+
+ * string.c (sym_inspect): made encoding aware.
+
+ * insns.def (opt_eq): compare with encoding.
+
+ * include/ruby/encoding.h (rb_enc_asciicompat): check if ASCII
+ compatible.
+
+ * include/ruby/encoding.h (rb_enc_get_index): added prototype.
+
+ * include/ruby/intern.h (rb_str_comparable, rb_str_equal): ditto.
+
+Wed Sep 26 15:01:16 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_method.ci (rb_get_alloc_func): cast to suppress a warning.
+
+ * eval_method.ci (remove_method): local variable to be initialized.
+
+Wed Sep 26 08:36:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (ext/extinit.o): use $(OUTFLAG) as well as other
+ objects. [ruby-Bugs-14228]
+
+Wed Sep 26 05:12:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yyerror): limit error message length.
+ [ruby-dev:31848]
+
+Tue Sep 25 15:11:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_ungetc): reallocate internal buffer if pushing data
+ excess capacity. [ruby-dev:31650]
+
+Tue Sep 25 13:43:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_method.ci (remove_method): should not remove undef place
+ holder. [ruby-dev:31816], [ruby-dev:31817]
+
+Tue Sep 25 09:51:31 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_longjmp): source file information may be NULL.
+ [ruby-dev:31849]
+
+ * eval.c (ruby_finalize_0): clear trace_func before finalization.
+
+Mon Sep 24 22:36:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_equal): should handle recursive array.
+
+ * hash.c (hash_equal): should handle recursive hash.
+
+Mon Sep 24 22:14:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/weakref.rb (WeakRef): remove debug print. [ruby-dev:31799]
+
+ * hash.c (hash_i): avoid too frequent hash conflict where key and
+ value are same. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>.
+ [ruby-dev:31802]
+
+Mon Sep 24 17:56:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/strscan/strscan.c (strscan_initialize, strscan_getch): use the
+ encoding of the target string instead of setting to StringScanner
+ instance. [ruby-dev:31831]
+
+Mon Sep 24 16:52:11 2007 Urabe Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/net/http.rb: fix typo.
+
+Mon Sep 24 06:49:15 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/http.rb: an SSL verification (the server hostname should
+ be matched with its certificate's commonName) is added.
+ this verification can be skipped by
+ "Net::HTTP#enable_post_connection_check=(false)".
+ suggested by Chris Clark <cclark at isecpartners.com>
+
+ * lib/net/open-uri.rb: use Net::HTTP#enable_post_connection_check to
+ perform SSL post connection check.
+
+ * ext/openssl/lib/openssl/ssl.c
+ (OpenSSL::SSL::SSLSocket#post_connection_check): refine error message.
+
+Sun Sep 23 09:05:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (os_obj_of, os_each_obj): hide objects to be finalized.
+ [ruby-dev:31810]
+
+Sun Sep 23 08:58:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_method.ci (rb_attr): should not use alloca for unknown size
+ input. [ruby-dev:31818]
+
+ * parse.y (rb_intern_str): prevent str from optimization.
+
+Sun Sep 23 06:16:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_method.ci (remove_method): check for undefined method.
+ [ruby-dev:31816]
+
+Sun Sep 23 05:42:35 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/rdoc/options.rb (Options::check_diagram): dot -V output
+ changed. [ ruby-Bugs-11978 ], Thanks Florian Frank.
+
+Sat Sep 22 06:02:11 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::List::summarize): use each_line if
+ defined rather than each. [ruby-Patches-14096]
+
+Sat Sep 22 05:19:49 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_init): separate from strio_initialize
+ to share with strio_reopen properly. [ruby-Bugs-13919]
+
+Fri Sep 21 14:51:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (gc_mark_rest): copy just used part.
+
+ * gc.c (gc_mark_children): mark u1 and u2 of NODE_ARGSCAT.
+
+ * gc.c (os_obj_of): hide T_VALUES too. [ruby-dev:31804]
+
+ * gc.c (run_final): freeze temporary argument array.
+
+Fri Sep 21 04:58:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-label-indent): fix for function top
+ level labels.
+
+Fri Sep 21 02:11:22 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_match_m): evaluate a block if match. it would make
+ condition statement much shorter, if no else clause is needed.
+
+ * string.c (rb_str_match_m): ditto.
+
+Fri Sep 21 02:02:34 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (hash_equal): should call rb_eql when argument eql is set.
+
+Thu Sep 20 17:28:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (popen_exec), process.c (rb_spawn): stop other threads before
+ exec. [ruby-core:08262]
+
+Tue Sep 18 22:08:42 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/matrix.rb: fix a coerce bug of Vector. [ruby-core: 12190]
+
+Mon Sep 17 21:06:03 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTP::GenericRequest#initialize): check path is
+ not nil. [ruby-dev:31149]
+
+Mon Sep 17 21:00:51 2007 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (ripper): rename event: arglist_* -> args_*.
+
+ * parse.y (ripper): rename event: restparam -> rest_param.
+
+ * parse.y (ripper): rename event: constpath_* -> const_path_*.
+
+ * parse.y (ripper): rename event: topconst_* -> top_const_*.
+
+ * parse.y (ripper): rename event: iter_block -> method_add_block.
+
+ * parse.y (ripper): support block local parameter declaration.
+
+ * parse.y (ripper): introduce new macro params_new.
+
+ * ext/ripper/lib/ripper/sexp.rb: should not dispose event
+ arguments whose name ends with "_new" but arity != 0.
+
+Sat Sep 15 23:36:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (struct parser_params): common members in the parser and
+ ripper must be placed at each same location.
+
+Sat Sep 15 18:25:15 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * string.c (rb_str_rstrip_bang): fixed too much rstrip. [ruby-dev:31786]
+
+Sat Sep 15 17:32:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_initialize): set default encoding. [ruby-dev:31787]
+
+ * ruby.c (load_file): make new parse instance after processing shebang
+ line options.
+
+Sat Sep 15 17:04:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_associate_index, rb_enc_get_index): check if
+ object is encoding capable. [ruby-dev:31780]
+
+ * string.c (rb_str_subpat_set): check for if the argument is a String.
+
+Sat Sep 15 13:31:21 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss.rb, lib/rss/, test/rss/:
+ - 0.1.9 -> 0.2.0.
+ - supported Slash module.
+
+Fri Sep 14 22:20:01 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fev_unadvise): no needs to reset
+ event handlers.
+
+Fri Sep 14 17:28:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_io.rb: tests which cause SEGV should not be
+ added.
+
+ * bootstraptest/test_knownbug.rb: add above test to known bug.
+
+Fri Sep 14 16:24:04 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_expandarray): assignment should be placed
+ after creating new array.
+
+Fri Sep 14 16:17:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: add a stress test (-s).
+
+Fri Sep 14 16:14:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.h, eval_intern.h: move some macros to eval_intern.h.
+
+ * eval_jump.ci (rb_f_throw): fix to use NEW_THROW_OBJECT().
+
+ * eval.c (rb_f_loop): remove additional macro.
+
+Fri Sep 14 16:12:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_expandarray): should be volatile value for GC.
+
+Thu Sep 13 15:42:03 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): inline cache entries are overwritten
+ in iseq_build_body().
+
+Thu Sep 13 14:00:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (brace_block): should use compstmt. patch submitted by
+ Kirill A. Shutemov <k.shutemov AT gmail.com> [ruby-core:12154].
+
+Thu Sep 13 13:47:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_id2str): fixed typo.
+
+Wed Sep 12 23:12:22 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (proc_options): -W should be allowed in RUBYOPT
+ environment variable. [ruby-core:12118]
+
+Wed Sep 12 15:19:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_s_sysopen): should not use alloca for unknown size
+ input. [ruby-dev:31775]
+
+ * parse.y (rb_id2str): ditto.
+
+ * marshal.c (w_float): use snprintf instead of sprintf.
+
+Tue Sep 11 17:28:00 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb (Tempfile::make_tmpname): Allow to specify a
+ suffix for a temporary file name.
+
+ * lib/tempfile.rb (Tempfile::make_tmpname): Make temporary file
+ names less predictable by including a random string.
+ [inspired by: akr]
+
+Tue Sep 11 17:25:59 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb: Add shellescape() and shelljoin().
+
+ * lib/shellwords.rb: Rename shellwords() to shellsplit() and make
+ the former an alias to the latter.
+
+ * lib/shellwords.rb: Add escape(), split(), join() as class
+ methods, which are aliases to their respective long names
+ prefixed with `shell'.
+
+ * lib/shellwords.rb: Add String#shellescape(), String#shellsplit()
+ and Array#shelljoin() for convenience.
+
+Mon Sep 10 15:48:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * range.c: represent initialized state using EXCL instead of FL_USER3.
+
+ * range.c (range_dumper): make uninitialized range dumpable.
+ (range_loader): make uninitialized range loadable.
+
+Mon Sep 10 13:44:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_cycle): avoid infinite loop for empty array.
+ based on a patch from David Flanagan. [ruby-core:12085]
+
+Mon Sep 10 01:21:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): struct allocation first to check if a
+ class is a struct. compatibility check should come next.
+
+Mon Sep 10 01:05:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_step): fixed integer overflow. [ruby-dev:31763]
+
+Sun Sep 9 08:57:27 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (_strptime): now also attaches an element
+ which denotes leftover substring if exists.
+
+Sun Sep 9 01:59:08 2007 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (r_object0): check T_STRUCT type for structs.
+
+Sun Sep 9 01:17:05 2007 Tanaka Akira <akr@fsij.org>
+
+ * marshal.c (r_object0): don't call user-defined initialize for
+ T_STRUCT objects.
+
+ * include/ruby/intern.h (rb_struct_initialize): declared.
+
+ * struct.c (rb_struct_initialize): export.
+
+Sat Sep 8 23:55:56 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval_method.ci (rb_get_alloc_func): new function to get allocation
+ function.
+
+ * include/ruby/intern.h (rb_alloc_func_t): declared.
+ (rb_define_alloc_func): declared.
+ (rb_marshal_define_compat): declared.
+
+ * range.c: use T_STRUCT for Range.
+
+ * inits.c: move Init_marshal() prior to Init_Range() because
+ Init_Range calls rb_marshal_define_compat which needs
+ marshal's compat_allocator_tbl initialized.
+
+ * marshal.c: support marshal format compatibility layer designed for
+ marshaling T_STRUCT Range using T_OBJECT format.
+ (rb_marshal_define_compat): defined.
+
+ [ruby-dev:31710]
+
+Sat Sep 8 10:05:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_s_members): check if __members__ is an
+ array to prevent segmentation fault. [ruby-dev:31759]
+
+Sat Sep 8 09:33:09 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (str[fp]time): now check specifications more
+ strictly.
+
+Sat Sep 8 02:56:31 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_fiber.rb (TestFiber::test_throw): uncaught throw
+ now raise ArgumentError exception.
+
+Sat Sep 8 02:45:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_s_members): should raise TypeError instead
+ of call rb_bug(). [ruby-dev:31709]
+
+ * marshal.c (r_object0): no nil check require any more.
+
+Sat Sep 8 01:46:36 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regenc.c, regenc.h (onigenc_single_byte_mbc_enc_len): should take
+ two arguments. [ruby-dev:31754]
+
+Fri Sep 7 00:58:16 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix typo.
+
+Fri Sep 7 00:28:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getc): forgot to commit rb_enc_mbclen() fix.
+
+ * ext/stringio/stringio.c (strio_getc): rb_enc_mbclen() fix.
+
+ * ext/stringio/stringio.c (strio_ungetc): ditto.
+
+Thu Sep 6 22:57:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_::copy): prevent self copy of
+ directories.
+
+ * lib/fileutils.rb (FileUtils::fu_each_src_dest0): use try_convert.
+
+ * lib/fileutils.rb (FileUtils::fu_update_option): ditto.
+
+Thu Sep 6 21:36:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/oniguruma.h (OnigEncodingTypeST): add end parameter
+ to mbc_enc_len.
+
+ * euc_jp.c (mbc_enc_len), sjis.c (mbc_enc_len),
+ utf8.c (utf8_mbc_enc_len): ditto.
+
+ * encoding.c (rb_enc_mbclen): add end parameter.
+
+Thu Sep 6 21:31:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_cycle): typo in rdoc. a patch from Yugui
+ <yugui@yugui.sakura.ne.jp>. [ruby-dev:31748]
+
+Thu Sep 6 12:42:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_succ, rb_str_chop_bang, rb_str_chop): m17n support.
+ [ruby-dev:31734]
+
+Wed Sep 5 22:02:27 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_subseq): need integer overflow check.
+ [ruby-dev:31736]
+
+ * array.c (rb_ary_splice): ditto. [ruby-dev:31737]
+
+ * array.c (rb_ary_fill): ditto. [ruby-dev:31738]
+
+ * string.c (rb_str_splice): integer overflow for length.
+ [ruby-dev:31739]
+
+Tue Sep 4 20:43:44 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_EVENT#unadvise.
+
+ * test/win32ole/test_win32ole_event.rb: ditto.
+
+Mon Sep 3 15:37:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (vm.o): depends on st.h too.
+
+Sun Sep 2 23:38:29 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/st.h (struct st_table): make num_entries bitfield
+ instead of num_bins for speed. num_entries has less access.
+
+Sun Sep 2 00:37:57 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (_parse): improved parsing of ordinal dates.
+
+ * lib/date/format.rb (_parse): use named character classes in some
+ regular expressions.
+
+Sat Sep 1 23:44:26 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_jump.ci (rb_f_throw): wrap tag and TAG_THROW in a NODE_MEMO
+ node to make throw instruction to work well.
+
+Sat Sep 1 20:56:07 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/ruby.h (struct RBignum): embed digits in RBignum for
+ small bignums.
+
+ * bignum.c: RBignum embedded digits implemented.
+
+ * include/ruby/intern.h: declare rb_big_resize.
+
+ * gc.c: don't free embedded digits.
+
+ * numeric.c: replace direct bignum field accessor by abstract field
+ accessor such as RBIGNUM(val)->sign to RBIGNUM_SIGN(val).
+
+ * sprintf.c: ditto.
+
+ * compar.c: ditto.
+
+ * marshal.c: ditto.
+
+ * random.c: ditto.
+
+ * .gdbinit: support embedded small bignums.
+
+ [ruby-dev:31689]
+
+Sat Sep 1 19:59:43 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_event_free): IConnectionPoint should be
+ released.
+
+ * ext/win32ole/win32ole.c (EVENTSINK_Destructor): ITypeInfo should be
+ released.
+
+ * ext/win32ole/win32ole.c (fev_initialize): refactoring.
+
+Sat Sep 1 16:26:09 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/socket/test_tcp.rb (test_recvfrom): same as mswin32 on mswin64.
+
+Sat Sep 1 14:24:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_numcmp, st_numhash): use st_data_t instead of long, because
+ the former may be larger than the latter.
+
+ * include/ruby/st.h (CHAR_BIT): get rid of magic number.
+
+ * include/ruby/st.h (rb_index_t): use st_data_t for the platforms it
+ is larger than int.
+
+Sat Sep 1 10:43:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_jump.ci (rb_f_catch): generate new tag object if no argument is
+ given. backported from MatzRuby. [ruby-dev:31609]
+
+ * eval_jump.ci (rb_catch): call #catch without arguments if tag
+ string is NULL.
+
+ * eval_jump.ci (rb_f_throw): allow throwing non-symbol object.
+
+ * eval_jump.ci (rb_catch_obj): new function to wait throw with arbitrary
+ object.
+
+ * eval_jump.ci (rb_throw_obj): new function to throw arbitrary object.
+
+ * variable.c (check_autoload_table): prevent multiple calls from
+ RSTRING_PTR().
+
+Fri Aug 31 07:12:24 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (SQRT_LONG_MAX): use SIZEOF_LONG instead of SIZEOF_VALUE
+ because SIZEOF_VALUE > SIZEOF_LONG on some platforms.
+
+Fri Aug 31 04:18:03 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_norm_arg, f_arg_item): not croak already erred names.
+ [ruby-dev:31687]
+
+ * parse.y (assignable_gen): ignore already erred names.
+
+ * parse.y (shadowing_lvar_gen): always make new block local variable
+ when shadowing outer local variable. [ruby-dev:31507]
+
+Thu Aug 30 19:40:33 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regenc.h: check RUBY_EXTERN before including config.h and defines.h
+
+ * common.mk: update header dependency.
+
+Thu Aug 30 14:06:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_obj_define_method): reverted. [ruby-talk:266637]
+
+Thu Aug 30 13:49:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: initialize $top_srcdir always. [ruby-dev:31682]
+
+ * lib/mkmf.rb (try_const, have_const): check for a const is defined.
+ [ruby-core:04422]
+
+Thu Aug 30 08:00:12 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h: declare rb_hash_tbl.
+
+ * include/ruby/ruby.h (RHash): delay st_table allocation.
+ rename tbl field to ntbl to detect direct reference to the st_table
+ as a compile error.
+ (RHASH_TBL): abstract accessor defined.
+ (RHASH_ITER_LEV): ditto.
+ (RHASH_IFNONE): ditto.
+ (RHASH_SIZE): ditto.
+ (RHASH_EMPTY_P): ditto.
+ (hash_alloc0, hash_alloc): unified because hash_alloc doesn't
+ allocate st_table now.
+
+ * hash.c: delay st_table allocation.
+
+ * gc.c: replace tbl by ntbl.
+
+ * array.c: replace direct field accessor by abstract field accessor
+ such as RHASH(hash)->tbl to RHASH_TBL(hash).
+
+ * marshal.c: ditto.
+
+ * insns.def: ditto.
+
+ * ext/iconv/iconv.c: ditto.
+
+ * ext/json/ext/generator/generator.c: ditto.
+
+ * ext/json/ext/parser/parser.c: ditto.
+
+ * ext/json/ext/parser/parser.rl: ditto.
+
+ * ext/syck/rubyext.c: ditto.
+
+ * ext/tk/tkutil/tkutil.c: ditto.
+
+ [ruby-dev:31678]
+
+Wed Aug 29 18:36:06 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: add :ftp_active_mode option. [ruby-dev:31677]
+
+Wed Aug 29 14:55:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): should not use mbclen2() which has broken API.
+
+ * re.c: remove rb_reg_mbclen2().
+
+Wed Aug 29 12:48:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (aref_args): args may not be a list. [ruby-dev:31592]
+
+Wed Aug 29 11:30:10 2007 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/st.h (struct st_table): add entries_packed 1-bit
+ bitfield. decrease num_bins 1-bit.
+
+ * st.c: pack numhash which have 5 or less entries in bins.
+ (st_init_table_with_size): setup entries_packed flag.
+ (st_clear): support packed mode.
+ (st_lookup): ditto.
+ (st_insert): ditto.
+ (st_add_direct): ditto.
+ (st_copy): ditto.
+ (st_delete): ditto.
+ (st_foreach): ditto.
+ (st_reverse_foreach): ditto.
+ (unpack_entries): new function for converting to unpacked mode.
+
+ [ruby-list:43954]
+
+Wed Aug 29 10:46:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/defines.h (flush_register_windows): call "ta 0x03"
+ even on Linux/Sparc. [ruby-dev:31674]
+
+Tue Aug 28 19:16:00 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_type_progid): progid getted by
+ ProgIDFromCLSID should be freed by CoTaskMemFree. Thanks, arton.
+
+ * test/win32ole/test_win32ole.rb (test_raise_message): set negative
+ compareMode value to raise WIN32OLERuntimeError.
+
+ * test/win32ole/test_win32ole_type.rb (test_implemented_ole_types):
+ support some environment which returns IShellDispatch5 instead
+ of IShellDispatch.
+
+Tue Aug 28 15:42:09 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_subseq): retrieve substring based on byte offset.
+
+ * string.c (rb_str_rindex_m): was confusing character offset and
+ byte offset.
+
+Tue Aug 28 14:23:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_splice_0): should check to modify. [ruby-dev:31665]
+
+Tue Aug 28 14:21:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_prepare): set parser encode too when BOM exists.
+
+Tue Aug 28 00:51:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: fix Mutex to be interruptable lock.
+
+ * thread_win32.ci, thread_win32.h, thread_pthread.ci, thread_pthread.h:
+ prepare native_cond_*() which are based on pthread_cond_*() spec.
+
+ * prelude.rb: fix Mutex#synchronize method.
+
+ * vm_core.h, include/ruby/intern.h: change unblock function interface
+ (to pass some user data).
+
+ * file.c, process.c: ditto.
+
+ * benchmark/bm_vm2_mutex.rb: add a benchmark for mutex.
+
+ * benchmark/bm_vm3_thread_mutex.rb: add a benchmark for mutex
+ with contention.
+
+ * benchmark/run.rb: fix to remove ENV['RUBYLIB'] for matzruby.
+
+ * test/ruby/test_thread.rb: add a test.
+
+ * common.mk: fix benchmark options.
+
+Mon Aug 27 23:14:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_rstrip_bang): wrong strip point. [ruby-dev:31652]
+
+ * string.c (rb_str_each_line): should swallow sequence of newlines
+ if rs (optional argument) is an empty string. [ruby-dev:31652]
+
+Mon Aug 27 22:39:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c (rb_enc_codelen): raises invalid sequence exception
+ if ONIGENC_CODE_TO_MBCLEN() returns zero. [ruby-dev:31661]
+
+ * encoding.c (rb_enc_mbclen): check invalid sequence.
+
+Mon Aug 27 20:27:59 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_type_progid): fix the bug.
+ [ruby-dev:31576]
+
+ * test/win32ole/test_win32ole_type.rb (test_initialize):
+ remove duplicate assertions.
+
+Mon Aug 27 19:10:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getlogin): update documentation to note
+ security issue. [ruby-Bugs-11821]
+
+Mon Aug 27 15:56:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (sym_encoding): return the encoding of a Symbol.
+
+Mon Aug 27 15:33:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (IEEE_BIG_ENDIAN): use configured value. [ruby-dev:31623]
+
+ * util.c (Llong): set to LONG_LONG if available.
+
+Mon Aug 27 13:11:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (tr_trans): wrong condition for mbmaxlen==1 strings.
+ [ruby-dev:31652]
+
+Mon Aug 27 00:41:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_each_byte): caused infinite loop. [ruby-dev:31652]
+
+ * io.c (rb_io_getc): should return nil at EOF, not EOFError.
+
+ * lib/delegate.rb (SimpleDelegator::__setobj__): use raise
+ argument to specify backtrace.
+
+ * test/ruby/test_fnmatch.rb (TestFnmatch::bracket_test):
+ String#include? no longer works for Fixnum. use #chr.
+ [ruby-dev:31652]
+
+Sun Aug 26 12:27:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: fix to remove Fiber.new until fiber.so is not loaded.
+
+ * test/ruby/test_continuation.rb: fix to use resume.
+
+Sun Aug 26 06:51:46 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_wc2mb, reg_enum_key): allocate
+ buffer should be NULL terminated.
+
+Sun Aug 26 06:04:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_setup_method): reorder code for branch prediction.
+
+Sun Aug 26 05:54:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_call_method): fix to relaxant safe level check
+ ($SAFE > 2). [ruby-core:11998]
+
+ * bootstraptest/test_method.rb: add tests for above.
+
+Sun Aug 26 05:52:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_fiber.rb: fix to require 'continuation'.
+
+Sat Aug 25 23:52:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_next): message changed.
+
+Sat Aug 25 23:22:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/encoding.h: remove unused rb_enc_ismbchar().
+
+Sat Aug 25 22:50:14 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_event_free, EVENTSINK_Destructor,
+ fev_initialize): remove the connection ole_event_free and
+ EVENTSINK_Destructor.
+
+Sat Aug 25 17:52:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * string.c, include/ruby/intern.h: export rb_str_length().
+
+ * insns.def: use rb_str_length() in opt_length.
+
+Sat Aug 25 17:48:51 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: rename FIBER_STACK_SIZE to FIBER_VM_STACK_SIZE.
+
+Sat Aug 25 17:05:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (swallow): removed condition using an unset variable.
+
+ * parse.y, re.c: re-applied revision 13092.
+
+ * string.c (rb_str_splice): return from void function.
+
+ * include/ruby/encoding.h (rb_enc_str_new): prototype added.
+
+Sat Aug 25 11:45:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * encoding.c: provide basic features for M17N.
+
+ * parse.y: encoding aware parsing.
+
+ * parse.y (pragma_encoding): encoding specification pragma.
+
+ * parse.y (rb_intern3): encoding specified symbols.
+
+ * string.c (rb_str_length): length based on characters.
+ for older behavior, bytesize method added.
+
+ * string.c (rb_str_index_m): index based on characters. rindex as
+ well.
+
+ * string.c (succ_char): encoding aware succeeding string.
+
+ * string.c (rb_str_reverse): reverse based on characters.
+
+ * string.c (rb_str_inspect): encoding aware string description.
+
+ * string.c (rb_str_upcase_bang): encoding aware case conversion.
+ downcase, capitalize, swapcase as well.
+
+ * string.c (rb_str_tr_bang): tr based on characters. delete,
+ squeeze, tr_s, count as well.
+
+ * string.c (rb_str_split_m): split based on characters.
+
+ * string.c (rb_str_each_line): encoding aware each_line.
+
+ * string.c (rb_str_each_char): added. iteration based on
+ characters.
+
+ * string.c (rb_str_strip_bang): encoding aware whitespace
+ stripping. lstrip, rstrip as well.
+
+ * string.c (rb_str_justify): encoding aware justifying (ljust,
+ rjust, center).
+
+ * string.c (str_encoding): get encoding attribute from a string.
+
+ * re.c (rb_reg_initialize): encoding aware regular expression
+
+ * sprintf.c (rb_str_format): formatting (i.e. length count) based
+ on characters.
+
+ * io.c (rb_io_getc): getc to return one-character string.
+ for older behavior, getbyte method added.
+
+ * ext/stringio/stringio.c (strio_getc): ditto.
+
+ * io.c (rb_io_ungetc): allow pushing arbitrary string at the
+ current reading point.
+
+ * ext/stringio/stringio.c (strio_ungetc): ditto.
+
+ * ext/strscan/strscan.c: encoding support.
+
+Sat Aug 25 10:59:19 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: separate Continuation and Fiber from core.
+
+ * ext/continuation/*, ext/fiber/*: ditto.
+
+ * include/ruby/ruby.h: remove rb_cFiber.
+
+ * include/ruby/intern.h: add the rb_fiber_new() declaration.
+
+ * enumerator.c (next_init): fix to use rb_fiber_new().
+
+ * test/ruby/test_enumerator.rb: remove next? tests.
+
+ * test/ruby/test_continuation.rb: add a require 'continuation'.
+
+ * test/ruby/test_fiber.rb: add a require 'fiber'.
+
+Sat Aug 25 10:20:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (prelude.o): depends on vm_core.h now.
+
+ * common.mk (prelude.c): depends on tool/compile_prelude.rb too.
+
+ * common.mk (prereq): updates all auto-generated sources.
+
+ * tool/compile_prelude.rb: separated dynamic and static portions.
+
+Sat Aug 25 10:05:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * prelude.rb: add Thread.exclusive. This class method
+ is different from 1.8's. Thread.exclusive only does
+ synchronize with VM global mutex.
+
+Sat Aug 25 09:39:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_s_try_convert): more document description.
+
+ * re.c (rb_reg_s_try_convert): typo fixed.
+
+Sat Aug 25 08:54:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * id.h, id.c: remove idFuncall.
+
+ * compile.c (iseq_specialized_instruction): ditto.
+
+Sat Aug 25 08:47:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * tool/compile_prelude.rb: fix to include "vm_core.h".
+
+Sat Aug 25 03:49:14 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/sentence.rb (Sentence): include Enumerable.
+ (Sentence#each): defined.
+
+ * test/ruby/test_assignment.rb: use Sentence#expand.
+
+Sat Aug 25 03:08:57 2007 Koichi Sasada <ko1@atdot.net>
+
+ * prelude.rb: fix Mutex#synchronize definition.
+
+Sat Aug 25 02:08:45 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_s_try_convert): a new class method to convert
+ object or nil if it's not target-type. this mechanism is used
+ to convert types in the C implemented methods.
+
+ * hash.c (rb_hash_s_try_convert): ditto.
+
+ * io.c (rb_io_s_try_convert): ditto.
+
+ * re.c (rb_reg_s_try_convert): ditto.
+
+ * string.c (rb_str_s_try_convert): ditto.
+
+Sat Aug 25 00:49:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_loop_generator.rb: added.
+
+Sat Aug 25 00:22:31 2007 Koichi Sasada <ko1@atdot.net>
+
+ * prelude.rb: added. run this script on startup.
+
+ * tool/compile_prelude.rb: compile prelude.rb to C string.
+ (prelude.rb -> prelude.c)
+
+ * common.mk: fix to build with prelude.c.
+
+ * inits.c (rb_call_inits): ditto.
+
+ * thread.c (Init_Thread): move definition of Mutex#synchronize
+ to prelude.rb.
+
+Sat Aug 25 00:08:43 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_massign_opt): fix to skip massign optimization
+ with global variables.
+
+ * bootstraptest/test_massign.rb: add some tests for above.
+
+Fri Aug 24 18:42:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_dir.rb (TestDir::setup): ?c now makes a string.
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::initialize):
+ initialize @workdir to stop warning.
+
+Fri Aug 24 18:30:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/drb/drb.rb (DRb::DRbServer::InvokeMethod::perform_without_block):
+ replace funcall by send!. other files in the distribution as well.
+
+Fri Aug 24 17:06:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_send_bang): abandon the name funcall for private
+ aware method call.
+
+Fri Aug 24 15:27:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_next): stop pre-fetching.
+
+ * enumerator.c (Init_Enumerator): remove next? method.
+
+Fri Aug 24 15:14:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_loop): now handles StopIteration exception.
+
+Thu Aug 23 20:31:31 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: optimize simple massign.
+
+Thu Aug 23 20:02:25 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (reg_get_value): use RegQueryValueEx instead
+ of RegQueryValueEx.
+
+ * ext/win32ole/win32ole.c (typelib_file_from_clsid): fix the bug
+ that the function always returns Qnil.
+
+ * test/win32ole/test_win32ole_type.rb (test_initialize): add some test.
+
+Thu Aug 23 17:25:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (group_member): check if presents.
+
+ * configure.in (XCFLAGS): add _GNU_SOURCE on linux.
+
+ * file.c (group_member): use system routine if available.
+
+ * process.c: moved _GNU_SOURCE macro to Makefile.
+
+Thu Aug 23 16:59:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (compile_massign), insnhelper.ci (vm_throw): not use C99
+ comment.
+
+ * cont.c (rb_cont_call, fiber_switch, rb_fiber_resume, rb_fiber_yield):
+ suppress warnings.
+
+ * cont.c (rb_fiber_start): change on non-volatile variable between
+ setjmp and longjmp may not has an effect.
+
+ * enumerator.c (sym_call): initialize first.
+
+ * enumerator.c (enum_iter): typedefed.
+
+ * enumerator.c (next_i): suppress a warning.
+
+Thu Aug 23 16:04:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def, parse.y: fix massign order. This change
+ causes performance problem. Try vm1_swap benchmark.
+ [ruby-dev:31522]
+
+ * insns.def, insnhelper.ci: move process body of expandarray insn to
+ vm_expandarray().
+
+ * bootstraptest/test_knownbug.rb, bootstraptest/test_massign.rb:
+ move a solved test.
+
+Thu Aug 23 15:51:19 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_norm_arg): ripper has no shadowing check.
+
+ * parse.y (f_block_arg): dispatch blkarg_mark.
+
+Thu Aug 23 15:48:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (make_masgn_lhs, iseq_compile_each): fixed indent.
+
+ * compile.c (iseq_translate_threaded_code),
+ vm_evalbody.ci (get_insns_address_table),
+ template/vmtc.inc.tmpl (insns_address_table): constified.
+
+ * vm_evalbody.ci (vm_eval),
+ template/insns_info.inc.tmpl (insn_stack_increase, insn_ret_num):
+ suppress warnings.
+
+Thu Aug 23 13:19:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_norm_arg): check also nested arguments. [ruby-dev:31502]
+
+Thu Aug 23 00:06:48 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c: updated for ANSI C only. applied a patch from
+ <snakagawa AT infoteria.co.jp>. [ruby-dev:31591]
+
+Thu Aug 23 00:04:45 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/strtod.c: removed. [ruby-dev:31588]
+
+ * LEGAL: updated.
+
+Wed Aug 22 15:59:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb:
+ fix typo of filename (test_knownbug.rb).
+
+Wed Aug 22 14:04:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_knownbug.rb: added. This file will contain
+ test cases which point out known bug. If bug is fixed, tests
+ should move to the suitable place.
+
+ * bootstraptest/test_massign.rb: move a test which show known bug
+ to test_knownbug.rb.
+
+Wed Aug 22 13:02:26 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (in_temporary_working_directory):
+ don't remove the directory specified by --dir.
+
+Wed Aug 22 05:51:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): replaced by the implementation by David
+ M. Gay inspired by William D. Clinger's paper "How to Read Floating
+ Point Numbers Accurately" [Proc. ACM SIGPLAN '90, pp. 92-101].
+ a patch from Satoshi Nakagawa <snakagawa AT infoteria.co.jp>.
+ [ruby-dev:31582]
+
+ * test/ruby/test_float.rb (TestFloat::test_float): add test for
+ precision.
+
+Wed Aug 22 03:51:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: add Fiber#resume and Fiber.yield.
+ and Fiber::Core class to realize Coroutine.
+
+ * include/ruby/intern.h: declare rb_fiber_yield(), rb_fiber_resume().
+
+ * enumerator.c: use above api.
+
+ * test/ruby/test_fiber.rb: fix and add tests for above changes.
+
+Tue Aug 21 21:09:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/tmpdir.rb (Dir.mktmpdir): make directory suffix specifiable.
+ suggested by knu. [ruby-dev:31568]
+
+Tue Aug 21 15:00:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * st.c (st_clear): reset num_entries too.
+
+Tue Aug 21 13:57:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (st_foreach_func, rb_foreach_func): typedefed.
+
+ * hash.c (rb_hash_clear): use st_clear() unless iterating.
+
+ * st.c (struct st_table_entry): add new members, fore and back, to
+ iterate in inserted order.
+
+ * include/ruby/st.h (struct st_table): ditto.
+
+Tue Aug 21 04:09:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm2_case.rb: add a new benchmark.
+ YARV optimize case/when syntax. If every conditions
+ are literal (such as Symbol, Fixnum, String), dispatch
+ calc order will be O(1).
+
+Tue Aug 21 04:08:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_enumerator.rb: fix last commit.
+
+Tue Aug 21 03:59:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test_enumerator.rb (enum_test): fix to return sorted
+ array (for Hash test).
+
+Tue Aug 21 03:55:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * enumerator.c (next_i): fix to return with Fiber#yield at
+ the end of each block. [ruby-dev:31470]
+
+ * enumerator.c (enumerator_next_p): call init_next if not
+ initialized. [ruby-dev:31514]
+
+ * test/ruby/test_enumerator.rb: add tests for Enumerator.
+
+Mon Aug 20 23:28:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (Init_String): remove Symbol.intern and Symbol#dump.
+ [ruby-dev:31525]
+
+ * dir.c (dir_foreach): return Enumerator if no block given.
+ [ruby-dev:31525]
+
+ * io.c (rb_io_s_foreach): argument count check before making
+ Enumerator. [ruby-dev:31525]
+
+Mon Aug 20 23:17:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (struct rb_thread_struct): removed first_func_arg and
+ reuse first_args instead.
+
+Sun Aug 19 13:31:40 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c: use VALGRIND_MAKE_MEM_UNDEFINED to detect use of collected
+ objects if valgrind is available. It cannot detect first 2 words
+ because they are used as the free list.
+
+Sun Aug 19 13:13:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each/NODE_RESBODY): fix to add
+ additional nop to prevent tailcall optimization.
+
+ * vm_opts.h: clean up comments.
+
+Sun Aug 19 12:58:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_call_bmethod): fix to propagate information
+ that this proc is "from Method". [ruby-dev:31490]
+
+ * proc.c (method_proc, rb_mod_define_method): ditto.
+
+ * vm.c (vm_invoke_proc_core): removed.
+
+ * vm_core.h: ditto.
+
+Sun Aug 19 12:36:11 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/sentence.rb: new method Sentence().
+
+Sun Aug 19 12:32:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_callee_setup_arg): fix to mark enough VM stack.
+ [ruby-dev:31492]
+
+Sat Aug 18 19:02:34 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_yield.rb (TestYieldGen): relax array size check
+ in nested parameters.
+ [ruby-dev:31485]
+
+Sat Aug 18 17:44:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tcltklib.c (Init_tcltklib): use rb_set_end_proc().
+
+Sat Aug 18 17:40:11 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (is_ruby_native_thread): check properly. [ruby-dev:31166]
+
+Sat Aug 18 16:44:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_call_bmethod),
+ vm.c (vm_invoke_proc_core): fix to do not restore
+ $SAFE when proc invoked by bmethod.
+
+ * vm_core.h: ditto.
+
+Sat Aug 18 16:44:49 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.ci (ruby_error_print): call error_print.
+
+ * eval_jump.ci, process.c (rb_exit, rb_f_exit, rb_f_abort): moved.
+
+Sat Aug 18 15:59:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (detach_process_watcher): should not pass the pointer
+ to an auto variable to the thread to be created. pointed and
+ fix by KUBO Takehiro <kubo at jiubao.org> [ruby-dev:30618]
+
+Sat Aug 18 15:52:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insnhelper.ci (vm_send_optimize): use MEMMOVE to shift values inside
+ an array.
+
+Sat Aug 18 15:45:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insnhelper.ci (vm_yield_setup_args): rsize and psize should not be
+ negative.
+
+Sat Aug 18 14:35:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insnhelper.ci (vm_callee_setup_arg, vm_send_optimize,
+ vm_yield_setup_args): bulk copy for arguments.
+
+Sat Aug 18 13:55:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix to allow self.x=
+ if x= is private.
+
+ * bootstraptest/test_method.rb: add a test for above.
+
+Sat Aug 18 14:05:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reg_compile_gen): obtain error info from errinfo.
+
+ * re.c (rb_reg_error_desc): make RegexpError for initialization error.
+
+ * re.c (rb_reg_compile): return nil and set errinfo if error.
+
+Sat Aug 18 13:23:01 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c: $! should not be writable.
+
+ * eval.c (rb_rubylevel_errinfo): added. rb_errinfo() returns
+ rb_thread_t#errinfo. rb_rubylevel_errinfo() returns $! value.
+
+Sat Aug 18 13:14:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_callee_setup_arg): fix to check arguments
+ correctly. [ruby-dev:31472]
+
+Sat Aug 18 13:13:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_exception.rb: add escape character ("\") for
+ editors.
+
+Sat Aug 18 12:42:50 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_yield.rb (TestYieldGen): add test for yielding to
+ lambda using lambda parameter passing emulator.
+
+Sat Aug 18 12:24:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/test.rb, test/ruby/test_system.rb(valid_syntax?): keep
+ comment lines first.
+
+Sat Aug 18 11:44:59 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_set_arguments), insnhelper.ci
+ (vm_callee_setup_arg, vm_yield_setup_args):
+ fix to cause raise on "lambda{|a|}.call(1, 2)".
+ [ruby-dev:31464]
+
+ * bootstraptest/test_block.rb: add tests for above.
+
+Sat Aug 18 01:12:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (frame_func_id): return proper method ID.
+
+Fri Aug 17 22:43:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): massign should return rvalue(s).
+
+Fri Aug 17 22:10:19 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_basicinstructions.rb: fix old tests.
+ class variables should be inherited.
+
+Fri Aug 17 21:20:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_call), eval_method.ci (rb_add_method, rb_alias),
+ insnhelper.ci (vm_call_method): fix to save safelevel for
+ method node.
+
+ * include/ruby/node.h: ditto.
+
+ * bootstraptest/test_method.rb: add a test for above.
+
+Fri Aug 17 16:02:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_terminate_all): fix to ignore
+ exceptions.
+
+ * thread.c (thread_start_func_2): fix
+ abort_on_exception process. [ruby-dev:31394]
+
+Fri Aug 17 14:38:36 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (in_temporary_working_directory): use
+ Dir.mktmpdir to create and remove temporary directory.
+ (Dir.mktmpdir): define if not available.
+ [ruby-dev:31431]
+
+Fri Aug 17 03:07:37 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix throw insn option of next.
+
+Fri Aug 17 01:25:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_set_arguments), insnhelper.ci
+ (vm_callee_setup_arg, vm_yield_setup_args): fix
+ block parameter problems. [ruby-dev:31437], [ruby-dev:31440]
+
+ * bootstraptest/test_block.rb: add a test of [ruby-dev:31440].
+
+Fri Aug 17 01:24:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (ruby_iseq_disasm): fix to show arg_simple value.
+
+Fri Aug 17 01:21:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (throw): insert a RUBY_VM_CHECK_INTS(). [ruby-dev:31361]
+
+Thu Aug 16 20:40:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bigtrunc): RBIGNUM(x)->len may be zero. out of bound
+ access. [ruby-dev:31404]
+
+ * sprintf.c (rb_str_format): small float should not call
+ rb_dbl2big().
+
+Thu Aug 16 22:10:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix next/redo stack consistency.
+ [ruby-dev:31373]
+
+ * bootstraptest/test_syntax.rb: add tests for above.
+
+ * sample/test.rb: fix to use __FILE__ instead of $0 to know basedir.
+
+Thu Aug 16 21:14:06 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (BASERUBY): need AC_SUBST. [ruby-dev:31438]
+
+Thu Aug 16 19:18:26 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/sentence.rb: Sentence class implemented
+ based on sentgen.rb
+
+ * test/ruby/sentgen.rb: removed.
+
+ * test/ruby/test_assignment.rb: use sentence.rb.
+
+ * test/ruby/test_yield.rb: block parameter passing emulator
+ implemented.
+
+Thu Aug 16 16:48:47 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (BASERUBY): check if base ruby is runnable first.
+ [ruby-core:11900]
+
+Thu Aug 16 16:46:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (aix): enable shared by default.
+
+ * configure.in (aix): for 64bit-mode AIX. [ruby-dev:31401]
+ + use CC for LDSHARED if non-gcc,
+ + moved -G option from *LDFLAGS to LDSHARED,
+ + set -brtl only in XLDFLAGS.
+
+Thu Aug 16 13:06:08 2007 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (big_lshift): make shift offset long type.
+ (big_rshift): ditto.
+ (rb_big_lshift): ditto.
+ (big_rshift): ditto.
+ [ruby-dev:31434]
+
+Thu Aug 16 06:29:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_readpartial): argf_forward needs argc and argv.
+
+Thu Aug 16 02:47:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_m_yield): added. use this function
+ for Fiber#yield instead of rb_fiber_yield.
+
+Thu Aug 16 00:36:52 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/tmpdir.rb (Dir.mktmpdir): new method. [ruby-dev:31416]
+
+Wed Aug 15 18:57:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (os_live_obj): fix to skip T_VALUES.
+
+ * sample/test.rb: add an ObjectSpace test.
+
+Wed Aug 15 16:49:04 2007 Koichi Sasada <ko1@atdot.net>
+
+ * inits.c (rb_call_inits): change initializing order.
+ [ruby-dev:31420]
+
+Wed Aug 15 16:44:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (ARGF_FORWARD): wrongly compares with current_file with
+ rb_stdout. should be rb_stdin. [ruby-cvs:20177]
+
+Wed Aug 15 14:59:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_initialize, argf_each_line, argf_each_byte): suppress
+ warnings.
+
+Wed Aug 15 14:22:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: remove "//" type comment.
+
+Wed Aug 15 13:42:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: fix rules around f_margs. "make test" passes all tests.
+
+ * bootstraptest/test_block.rb: add some tests for above.
+
+Wed Aug 15 13:50:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_delete_key): delete the entry without calling block.
+
+ * hash.c (rb_hash_shift): should consider iter_lev too.
+
+ * hash.c (delete_if_i): use rb_hash_delete_key() so that the block
+ isn't called twice. [ruby-core:11556]
+
+Wed Aug 15 13:39:25 2007 Koichi Sasada <ko1@atdot.net>
+
+ * process.c (proc_geteuid): fix strange conversion. [ruby-dev:31417]
+
+Wed Aug 15 01:05:55 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_check): don't call newtest.
+ (assert_equal): call newtest.
+ (assert_match): ditto.
+
+Tue Aug 14 21:43:39 2007 Tanaka Akira <akr@fsij.org>
+
+ * bootstraptest/runner.rb (assert_check): new method.
+ (assert_match): new method.
+ (assert_equal): use assert_check.
+ (pretty): give failure description as an argument.
+
+ * bootstraptest/test_exception.rb: use assert_match to describe the
+ test for [ruby-dev:31407]. [ruby-dev:31412]
+
+Tue Aug 14 19:53:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (Init_Proc), eval.c (Init_eval), eval_intern.h: move
+ init place of exception_error.
+
+ * inits.c: ditto.
+
+ * eval.c (Init_eval): set exception_error#throwed_state as TAG_FATAL.
+ [ruby-dev:31407]
+
+ * bootstraptest/test_exception.rb: add a test for above.
+
+Tue Aug 14 19:51:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: change test order (test -> btest).
+
+Tue Aug 14 00:04:27 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: 0.1.8 -> 0.1.9.
+
+ * test/rss/test_version.rb: followed the above change.
+
+ * lib/rss/parser.rb: fixed a bug that handles unintended elements.
+ Thanks to Takuo Yonezawa. [ruby-list:43841]
+
+Mon Aug 13 17:23:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_clear_trace_func, rb_thread_stop_timer_thread):
+ declarations for forward references.
+
+ * eval.c (rb_longjmp, eval): use local variable.
+
+ * eval.c (rb_longjmp): string object not to be optimized.
+
+Mon Aug 13 13:21:58 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: make ftp passive mode to avoid NAT problem.
+ [ruby-dev:31377]
+
+Mon Aug 13 09:18:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_getc): should returns
+ one-character string.
+
+ * ext/stringio/stringio.c: remove unnecessary prototypes.
+
+ * ext/stringio/stringio.c (strio_getbyte): new method.
+
+ * ext/stringio/stringio.c (strio_readbyte): new method.
+
+ * ext/stringio/stringio.c (strio_ungetc): should take a string as
+ an input.
+
+Mon Aug 13 08:19:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_close): always close via method.
+
+ * io.c (Init_IO): remove obsolete Kernel#getc.
+
+Mon Aug 13 05:03:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_raise): check if target thread is
+ thrown by another thread or not. [ruby-dev:31371]
+
+ * bootstraptest/test_thread.rb: add a test for above.
+
+Mon Aug 13 04:35:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_peephole_optimize): fix peephole optimization
+ bug. [ruby-dev:31360]
+
+ * bootstraptest/test_syntax.rb: add a test for above.
+
+Mon Aug 13 04:02:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c (debug_print_pre): fix to show control frame count.
+
+ * insns.def (opt_call_c_function): fix operand type.
+
+ * lib/vm/instruction.rb: ditto.
+
+ * insnhelper.ci (vm_push_frame, vm_pop_frame): fix to show
+ control stack status on if VMDEBUG == 2.
+
+ * vm.h: add a comment about VMDEBUG.
+
+ * iseq.c (find_prev_line_no): fix to skip bug report if
+ line is not found.
+
+ * lib/vm/instruction.rb: fix to use build_string() on
+ source code generators.
+
+Mon Aug 13 03:57:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * template/yasmdata.rb.tmpl: fix type and name.
+
+Sat Aug 11 23:27:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_each_line): should use #each_line, not #each.
+
+ * io.c (argf_each_line): simplified.
+
+ * io.c (argf_getline): should handle non T_FILE object in ARGV.
+
+ * io.c (argf_each_byte): each_byte should yield bytes not
+ one-character strings. [ruby-dev:31374]
+
+Sat Aug 11 07:24:55 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: reverted some wrongly erased "o" options
+ (pointed out by nobu).
+
+Sat Aug 11 00:01:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): not re-raise to main thread if it is
+ joining the current thread.
+
+Fri Aug 10 23:54:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_create_core): inherit the priority of creating
+ thread. submitted at [ruby-core:11873] by David Flanagan <david AT
+ davidflanagan.com>. [ruby-core:11876]
+
+Fri Aug 10 05:12:19 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): let abort_on_exception work.
+ [ruby-core:11873]
+
+Fri Aug 10 04:47:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (internal_id_gen): internal ID must be bigger than
+ tLAST_TOKEN.
+
+Thu Aug 9 16:04:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): check if rhs has value before assignment instead
+ inside node_assign_gen(). [ruby-dev:31293]
+
+ * parse.y (call_bin_op_gen, call_uni_op_gen): split call_op_gen.
+
+Thu Aug 9 14:01:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_marg_list): renamed from f_marg_head.
+
+ * parse.y (f_margs): allow multiple mandatory arguments after a splat.
+ [ruby-dev:31153]
+
+Thu Aug 9 02:02:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_cycle): typo fixed. a patch from Kazuhiro
+ NISHIYAMA <zn AT mbf.nifty.com>. [ruby-dev:31362]
+
+Wed Aug 8 19:17:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): no longer check
+ HAVE_RB_IO_STDIO_FILE.
+
+Wed Aug 8 15:52:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_next_p): should check correctly even when
+ e.next has not been called before.
+
+ * enumerator.c (enumerator_next): raise StopIteration (name taken
+ from Python) instead of IndexError.
+
+ * enum.c (enum_zip): catch StopIteration exception.
+
+ * enumerator.c (enumerator_with_index): return Enumerator if no
+ block is given.
+
+ * test/ruby/test_iterator.rb (TestIterator::test_enumerator): add
+ test for enumerators.
+
+Wed Aug 8 11:48:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): should not use RTEST for non-VALUE.
+
+Wed Aug 8 11:25:25 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): should preserve sign mark.
+
+Wed Aug 8 11:02:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (btest-miniruby, test-sample): split the test target
+ so that -k option works.
+
+Tue Aug 7 14:58:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (establishShell): handshaking before close slave
+ device. [ruby-talk:263410]
+
+ * ext/pty/pty.c (MasterDevice, SlaveDevice, deviceNo): constified.
+
+ * ext/pty/pty.c (SlaveName): removed static buffer.
+
+ * ext/pty/expect_sample.rb: support for autologin.
+
+Tue Aug 7 13:58:03 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (ruby_special_consts): added RUBY_SPECIAL_SHIFT.
+
+ * .gdbinit: some improvements.
+
+Tue Aug 7 13:28:32 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (node_name.inc): use $? instead of $< for nmake.
+ [ruby-dev:31356]
+
+Tue Aug 7 12:45:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_cv_func_isinf): set yes also on OpenSolaris.
+ [ruby-Bugs-12859]
+
+Tue Aug 7 12:31:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): fix for win32 platforms.
+
+Tue Aug 7 02:58:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): make Bignum#to_s even faster. a patch
+ from Kenta Murata <muraken AT gmail.com>. [ruby-dev:31354]
+
+Tue Aug 7 01:42:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_zip): zip no longer converts arguments into
+ arrays, uses enumerators.
+
+Tue Aug 7 01:27:47 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * cont.c (rb_fiber_yield): change argument ordering. export.
+
+ * cont.c (rb_fiber_current): export
+
+ * include/ruby/intern.h: export several functions from cont.c.
+
+ * enumerator.c (enumerator_next): new method to implement external
+ iterator (generator) using fiber.
+
+ * enumerator.c (enumerator_next_p): new method to check whether
+ any element is left in the generator sequence.
+
+ * enumerator.c (enumerator_rewind): a new method to rewind the
+ generator sequence.
+
+Tue Aug 7 01:15:24 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_cycle): new method to cycle enumerable forever.
+
+Tue Aug 7 00:05:38 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * irb/ruby-lex.rb: support for '\c'. [ruby-talk:263508]
+
+Mon Aug 6 20:29:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci, insns.def: move some statements to functions.
+
+ * vm.c, vm.h, vm_evalbody.ci: fix include/typedef places.
+
+Mon Aug 6 18:41:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * lib/vm/instruction.rb (make_header_analysys): fix last commit.
+
+Mon Aug 6 18:33:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * lib/vm/instruction.rb (make_header_analysys): add to separate
+ header addition process.
+
+Mon Aug 6 17:36:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rexml/encodings/{ISO-8859-15,CP-1252}.rb: fixed invalid syntax.
+
+Mon Aug 6 16:57:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * sample/test.rb: fix to output file name if it contains
+ invalid syntax.
+
+Mon Aug 6 16:41:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y (value_expr_gen): fix to cause "void value expression"
+ when jump expression such as "next" are shown on value_expr().
+ [ruby-dev:31119]
+
+ * bootstraptest/test_syntax.rb: fix to above change.
+
+Mon Aug 6 14:36:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: fix a f_marg rule. [ruby-dev:31160]
+
+Mon Aug 6 14:29:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb (assert_equal): add additional
+ message parameter.
+
+Mon Aug 6 13:34:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (INSNS): not chdir to srcdir.
+
+ * common.mk (node_name.inc): auto-generate node name list.
+
+ * iseq.c (ruby_node_name): ditto.
+
+ * iseq.c (iseq_s_compile_option_get, Init_ISeq): added a new
+ method VM::InstructionSequence::compile_option.
+
+ * lib/vm/instruction.rb (RubyVM::SourceCodeGenerator): --destdir
+ option.
+
+ * tool/node_name.rb: to auto-generate node name list.
+
+Sun Aug 5 11:51:39 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss, sample/rss, test/rss:
+ - 0.1.7 -> 0.1.8.
+ - supported <itunes:XXX>.
+ - reverted backward incompatibility API changes introduced 0.1.7.
+
+Sun Aug 5 04:56:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open_v, pipe_open_s): separate array and string
+ cases. [ruby-dev:31344]
+
+Fri Aug 3 11:05:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): save all CONFIG values.
+
+ * ext/extmk.rb (extmake): remove mkmf.log at clean, and extconf.h at
+ distclean, respectively.
+
+ * ext/extmk.rb: remove rdoc at clean, and installed list file at
+ distclean, respectively.
+
+Fri Aug 3 07:09:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: more verbose message. [ruby-Bugs-12766]
+
+ * lib/mkmf.rb (have_type): suppress a warning with -Wall.
+
+ * lib/mkmf.rb (find_type): new method.
+
+Fri Aug 3 00:00:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big2str_table): base cannot be 0 or 1.
+
+Thu Aug 2 23:42:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reg_compile_gen): set error if failed to compile regexp
+ literal. [ruby-dev:31336]
+
+ * re.c (option_to_str, arg_kcode, opt_kcode): options conversion
+ between int and string.
+
+ * re.c (rb_reg_compile): should not use regexp which could not get
+ initialized. [ruby-dev:31333]
+ return error message to let the parser know it.
+
+ * re.c (rb_reg_compile): append regexp options to error message.
+ [ruby-dev:31334]
+
+Thu Aug 2 22:05:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): faster Bignum#to_s using Karatsuba
+ algorithm. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
+ in [ruby-dev:31312], slightly modified by Kenta Murata
+ <muraken AT gmail.com> in [ruby-dev:31339].
+
+Thu Aug 2 13:46:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): should not check positional number as
+ width. [ruby-core:11838]
+
+Wed Aug 1 12:40:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * generic.rb (URI::Generic::merge_path): behave as RFC 3986.
+ [ruby-talk:252052]
+
+Tue Jul 31 23:38:09 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (_parse): now interprets slashed numerical
+ dates as a big endian (except dd/mm/yyyy). [experimental]
+
+Mon Jul 30 11:16:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_aref): check for Bignum index range.
+ [ruby-dev:31271]
+
+Sat Jul 28 09:35:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/digest/lib/digest.rb (Digest::self.const_missing): avoid
+ infinite recursive const_missing call. [ruby-talk:262193]
+
+Thu Jul 26 20:40:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_eqq): call_super() in === does not work well
+ since Enumerable#=== has different behavior. [ruby-dev:31296]
+
+Thu Jul 26 13:57:45 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (load_1, dln_find_1): constified.
+
+ * dln.c (conv_to_posix_path): removed.
+
+ * ruby.c (usage): constified.
+
+ * ruby.c (rubylib_mangled_path, rubylib_mangled_path2): return
+ VALUE instead of a pointer to static buffer.
+
+ * ruby.c (push_include_cygwin): fixed buffer overflow.
+ [ruby-dev:31297]
+
+ * ruby.c (ruby_init_loadpath): not convert built-in paths.
+
+Tue Jul 24 10:37:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_f_p): return nil if no argument. [ruby-dev:31285]
+
+Tue Jul 24 01:05:07 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regint.h (USE_MATCH_RANGE_IS_COMPLETE_RANGE): undef to achieve old
+ rindex behavior. [ruby-dev:31265]
+
+Mon Jul 23 18:37:14 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * include/ruby/oniguruma.h: upgrade to Oniguruma 5.9.0. fixes
+ some memory violation. [ruby-dev:31070]
+
+Sun Jul 22 20:09:49 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (Date._parse): now accepts some new
+ hints. [experimental]
+
+ * lib/parsedate.rb: followed the changes on
+ lib/date/format.rb. [experimental]
+
+Sun Jul 22 16:06:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (is_ruby_native_thread): made an int function as
+ well as version 1.8.
+
+ * include/ruby/ruby.h (is_ruby_native_thread): moved prototype
+ from intern.h as well as version 1.8.
+
+Sun Jul 22 14:33:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_rename): deleted code to get rid of a bug of
+ old Cygwin.
+
+ * file.c (rb_file_truncate): added prototype of GetLastError()
+ on cygwin. [ruby-dev:31239]
+
+ * include/ruby/intern.h (is_ruby_native_thread): prototype.
+
+ * missing/strftime.c (strftime): fix printf format and actual
+ arguments.
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): ditto.
+
+ * ext/tk/tcltklib.c (ip_finalize): ditto.
+
+ * ext/win32ole/win32ole.c (lcid_installed): ditto.
+
+ * ext/socket/getnameinfo.c: include stdio.h always.
+
+Sat Jul 21 21:39:12 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb (Date._parse): now can take some
+ hints (its aim must be mainly determination of endianness of
+ date). [experimental]
+
+ * lib/date.rb, lib/date/format.rb (Date._parse): now completes
+ truncated year as default action. [experimental]
+
+ * lib/date.rb, lib/date/format.rb: added ::iso8601, ::rfc3339,
+ ::xmlschema, ::rfc2822, ::httpdate, ::jisx0301, #xmlschema,
+ #httpdate. [experimental]
+
+Sat Jul 21 17:48:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: inverted rules order.
+
+ * thread_win32.ci (w32_create_thread): bcc does not have
+ _beginthreadex().
+
+ * lib/mkmf.rb (create_makefile): make OBJS depend on RUBY_EXTCONF_H
+ only if extconf.h is created.
+
+ * bcc32/Makefile.sub: headers have moved.
+
+ * bcc32/{Makefile.sub,configure.bat,setup.mak: configure_args
+ support.
+
+ * bcc32/setup.mak: check runtime version.
+
+ * win32/win32.c (rb_w32_open_osfhandle): prototype has changed
+ in bcc 5.82.
+
+ * {win32,wince,bcc32}/setup.mak (-version-): no RUBY_EXTERN magic.
+
+ * win32/resource.rb: include patchlevel number.
+
+Sat Jul 21 12:06:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (init_mkmf): should remove mkmf.log too.
+
+Sat Jul 21 01:45:03 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (Date._parse): completes calendar week based year.
+
+ * lib/date/format.rb (Date._parse): detects year of ordinal date in
+ extended format.
+
+Fri Jul 20 16:30:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_sequence): raise SyntaxError instead of rb_bug
+ since this function can be called from VM::InstructionSequence.load.
+
+ * compile.c (insn_set_sc_state, iseq_set_sequence_stackcaching): ditto.
+
+Fri Jul 20 16:11:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c, compile.h (DECL_ANCHOR, INIT_ANCHOR): split not to
+ initialize aggregations with dynamic values. [ruby-talk:259306]
+
+ * eval.c (rb_protect): not to initialize aggregations with dynamic
+ values. [ruby-talk:259306]
+
+ * gc.c (mark_current_machine_context): ditto.
+
+ * thread.c (thgroup_list, call_trace_func): ditto.
+
+ * vm.c (vm_init_redefined_flag): ditto.
+
+Fri Jul 20 15:22:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_config.c (ossl_config_set_section): do not
+ initialize aggregations with dynamic values. [ruby-talk:259306]
+
+Fri Jul 20 10:39:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt, mlhs_node, lhs, arg, var_ref): return dummy
+ NODE_BEGIN after errors. [ruby-dev:31100], [ruby-dev:31118]
+
+ * parse.y (remove_begin): keep empty NODE_BEGIN, instead of null.
+ [ruby-dev:31252], [ruby-dev:31263]
+
+Fri Jul 20 09:50:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb (get_result_string): check $?.coredump?
+ first.
+
+ * bootstraptest/runner.rb (cleanup_coredump, check_coredump): see
+ stackdump file too.
+
+Thu Jul 19 20:39:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (value_expr_gen): warn for empty expression ().
+ [ruby-dev:31252]
+
+Thu Jul 19 19:24:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.ci (get_backtrace): check the result more.
+ [ruby-dev:31261] [ruby-bugs-12398]
+
+Thu Jul 19 14:38:45 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_lshift, rb_big_rshift): separated functions
+ to get rid of infinite recursion. fixed calculation in edge
+ cases. [ruby-dev:31244]
+
+ * numeric.c (rb_fix_lshift, rb_fix_rshift): ditto.
+
+Wed Jul 18 16:57:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): refine overflow check. [ruby-dev:31242]
+
+Wed Jul 18 09:19:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_parser_append_print, rb_parser_while_loop): moved check
+ for node to the head.
+
+ * ruby.c (proc_options): do nothing for -p/-n options if tree is null.
+ submitted by Yusuke ENDOH <mame AT tsg.ne.jp> at [ruby-dev:31243].
+
+Wed Jul 18 08:47:09 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_succ): Time#succ should return a time object in the
+ same timezone mode to the original. [ruby-talk:260256]
+
+Mon Jul 16 23:07:51 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/base64.rb (Base64::b64encode): should not specify /o option
+ for regular expression. [ruby-dev:31221]
+
+Mon Jul 16 22:57:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): make %u behave like %d for negative
+ values, since decimal format does not work with preceding dots.
+ [ruby-core:11575]
+
+Mon Jul 16 18:29:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_rindex_m): accept string-like object convertible
+ with #to_str method, as well as rb_str_index_m. [ruby-core:11692]
+
+Mon Jul 16 07:17:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (getspecial): lfp_svar_get() requires int for special
+ global variables.
+
+Mon Jul 16 05:45:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): more checks for format argument.
+ [ruby-core:11569], [ruby-core:11570], [ruby-core:11571],
+ [ruby-core:11573]
+
+Mon Jul 16 00:26:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): removed invariant variable. [ruby-dev:31236]
+
+Sun Jul 15 22:24:37 2007 pegacorn <subscriber.jp AT gmail.com>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): adjust format. [ruby-dev:31222]
+
+ * ext/digest/digest.c (rb_digest_instance_update,
+ rb_digest_instance_finish, rb_digest_instance_reset,
+ rb_digest_instance_block_length): %s in rb_raise() expects char*.
+ [ruby-dev:31222]
+
+ * ext/openssl/ossl.h: include ossl_pkcs5.h. [ruby-dev:31231]
+
+ * ext/openssl/ossl_pkcs5.h: new file for PKCS5. [ruby-dev:31231]
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_to_s): use ossl_raise()
+ instead of rb_raise(). [ruby-dev:31222]
+
+ * ext/sdbm/_sdbm.c: DOSISH platforms need io.h. [ruby-dev:31232]
+
+ * ext/syck/syck.h: include stdlib.h for malloc() and free().
+ [ruby-dev:31232]
+
+ * ext/syck/syck.h (syck_parser_set_input_type): prototype added.
+ [ruby-dev:31231]
+
+ * win32/win32.c: include mbstring.h for _mbspbrk(). [ruby-dev:31232]
+
+ * include/ruby/win32.h (rb_w32_getcwd): prototype added.
+ [ruby-dev:31232]
+
+Sun Jul 15 21:07:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (bigtrunc): do not empty Bignum. [ruby-dev:31229]
+
+Sun Jul 15 19:05:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_cstr_to_inum): check leading non-digits.
+ [ruby-core:11691]
+
+Sun Jul 15 04:42:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (get2comp): do nothing for empty Bignum. [ruby-dev:31225]
+
+Sat Jul 14 22:49:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_pow): integer power calculation: 0**n => 0,
+ 1**n => 1, -1**n => 1 (n: even) / -1 (n: odd).
+
+ * test/ruby/test_fixnum.rb (TestFixnum::test_pow): update test
+ suite. pow(-3, 2^64) gives NaN when pow(3, 2^64) gives Inf.
+
+Sat Jul 14 18:46:35 2007 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: add --with-valgrind.
+
+ * gc.h (SET_MACHINE_STACK_END): new macro to replace
+ rb_gc_set_stack_end. it find out accurate stack boundary by
+ asm using gcc on x86.
+
+ * thread.c (rb_gc_set_stack_end): don't define if asm-version
+ SET_MACHINE_STACK_END is available.
+
+ * gc.c (mark_current_machine_context): extracted from garbage_collect.
+ it use SET_MACHINE_STACK_END to not scan out of stack area.
+ it notify conservative GC information to valgrind if
+ --with-valgrind.
+
+Sat Jul 14 14:04:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (sort_by_cmp): check if reentered. [ruby-dev:24291]
+
+Sat Jul 14 11:08:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/json/ext/generator/generator.c (check_max_nesting): wrong
+ format specifier. a patch from pegacorn <subscriber.jp AT gmail.com>.
+ [ruby-dev:31217]
+
+Sat Jul 14 02:27:43 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_pow): overflow detection using FIT_SQRT_LONG().
+ [ruby-dev:31215]
+
+Sat Jul 14 02:05:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (opt_div): LONG2FIX() may not work for corner cases,
+ use LONG2NUM() instead. [ruby-dev:31210]
+
+Sat Jul 14 00:34:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_round): should not return false, but self.
+ [ruby-dev:31212]
+
+Fri Jul 13 18:31:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/intern.h: remove unused function declarations.
+
+ * include/ruby/ruby.h: ditto.
+
+Fri Jul 13 17:32:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm.c (vm_free): clear free'ed living_threads field.
+ [ruby-dev:31163]
+
+ * insns.def (opt_succ): use cast to shut a warning up.
+
+Fri Jul 13 16:10:00 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): use ENV.to_hash to access
+ http_proxy environment variable to avoid case insensitive
+ environment search.
+
+Fri Jul 13 15:02:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): enclose command line except for
+ command.com which can not handle quotes. [ruby-talk:258939]
+
+Fri Jul 13 11:33:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_max, range_min): return nil for empty set as well as
+ 1.8 and Enumerable. [ruby-dev:31198]
+
+Fri Jul 13 11:28:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (bvar): semicolon was lost for ripper description.
+ [ruby-dev:31140]
+
+Fri Jul 13 11:25:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (program, stmt, primary): reduced duplicated code.
+
+ * parse.y (dsym): convert also literals containing NUL to
+ symbol.
+
+ * parse.y (debug_lines): use rb_hash_lookup() to get rid of
+ call of Hash#default.
+
+ * parse.y (ripper_warningS): unused in ripper right now.
+
+Fri Jul 13 10:33:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_flatten_bang): check argument if valid
+ integer. [ruby-dev:31197]
+
+Fri Jul 13 10:10:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (link_command, cc_command, cpp_command): do not expand
+ ::CONFIG which is an alias of MAKEFILE_CONFIG.
+
+Thu Jul 12 21:38:02 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insns.def (opt_succ): use LONG_MAX as maximum Fixnum VALUE.
+ [ruby-dev:31199]
+
+Thu Jul 12 18:42:18 2007 Tanaka Akira <akr@fsij.org>
+
+ * range.c (range_max): use FIX2LONG instead of FIX2INT to avoid
+ RangeError by ((-0x80000001)...(-0x80000001)).max on LP64.
+
+ * insns.def (opt_plus): use FIX2LONG instead of FIX2INT to avoid
+ RangeError by 0x3fffffffffffffff+1 on LP64.
+
+ * insns.def (opt_succ): don't use 0x80000000 which assumes 32bit VALUE.
+ use FIX2LONG instead of FIX2INT.
+ [ruby-dev:31190]
+
+Thu Jul 12 17:03:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (rb_struct_init_copy): disallow changing the size.
+ [ruby-dev:31168]
+
+Thu Jul 12 12:58:21 2007 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c: remove "yarv" prefix.
+
+ * array.c, numeric.c: ditto.
+
+ * insnhelper.ci, insns.def, vm_evalbody.ci: ditto.
+
+ * yarvcore.c: removed.
+
+ * yarvcore.h: renamed to core.h.
+
+ * cont.c, debug.c, error.c, process.c, signal.c : ditto.
+
+ * ext/probeprofiler/probeprofiler.c: ditto.
+
+ * id.c, id.h: added.
+
+ * inits.c: ditto.
+
+ * compile.c: rename internal functions.
+
+ * compile.h: fix debug flag.
+
+ * eval.c, object.c, vm.c: remove ruby_top_self.
+ use rb_vm_top_self() instead.
+
+ * eval_intern.h, eval_load: ditto.
+
+ * gc.c: rename yarv_machine_stack_mark() to
+ rb_gc_mark_machine_stack().
+
+ * insnhelper.h: remove unused macros.
+
+ * iseq.c: add iseq_compile() to create iseq object
+ from source string.
+
+ * proc.c: rename a internal function.
+
+ * template/insns.inc.tmpl: remove YARV prefix.
+
+ * thread.c: use rb_iseq_eval() and rb_str_new2().
+
+ * vm.c (rb_iseq_eval): added.
+
+ * vm.c: move some functions from yarvcore.c.
+
+ * vm_dump.c: fix to remove compiler warning.
+
+Thu Jul 12 12:24:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (opt_succ): fixed typo. [ruby-dev:31189]
+
+Thu Jul 12 10:30:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): moved prototye from thread_*.ci.
+
+ * thread_pthread.ci (thread_start_func_2): not use a directive
+ inside a macro argument. [ruby-talk:258763]
+
+ * thread.c (thread_join): pthread_t may not be pointer.
+
+ * thread_pthread.ci (ubf_select_each): ditto.
+
+Thu Jul 12 05:32:28 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h (FIX2ULONG): drop sign bit for LLP64 platform.
+
+Tue Jul 10 19:34:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * hash.c (rb_hash_lookup): added. this function is similar to
+ rb_hash_aref(), but doesn't call Hash#default when no entry
+ exists.
+
+ * include/ruby/intern.h: ditto.
+
+ * insnhelper.ci (lfp_svar_get): use rb_hash_lookup().
+
+Tue Jul 10 19:16:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, insnhelper.ci, vm.c: change cref index (-1 -> 2).
+
+Tue Jul 10 18:49:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (exec_under): add proper casts.
+
+Tue Jul 10 16:58:16 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, insnhelper.ci: fix svar interface.
+
+ * compile.c (iseq_compile_each), yarvcore.h: fix to use new
+ svar interface for flip flop.
+
+ * eval.c: ditto.
+
+ * insns.def: ditto.
+
+ * include/ruby/intern.h: remove "rb_svar()" declaration.
+
+Tue Jul 10 16:52:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (rb_iseq_compile): formatted if/else to switch statement.
+
+Tue Jul 10 15:57:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/test_flip.rb: new test for flip-flop operator.
+
+Tue Jul 10 14:50:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/{Makefile.sub,setup.mak}: remove surplus slash from srcdir.
+
+Mon Jul 9 02:17:36 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * cont.c (cont_restore_1): workaround for x64-mswin64's SEH.
+
+Sun Jul 8 02:08:53 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/json.rb, lib/json/, ext/json/: import JSON 1.1.1
+
+Sat Jul 7 21:59:29 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (PP::PPMethods#pp_hash): sort condition changed:
+ all keys have a same class which is kind of Comparable.
+
+Sat Jul 7 17:12:37 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: use rb_bug() instead of rb_compile_error().
+
+Sat Jul 7 16:12:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: fix node construction (around f_margs).
+ [ruby-dev:31143]
+
+ * bootstraptest/test_block.rb: add a test for above.
+
+ * insnhelper.ci: fix indent.
+
+Sat Jul 7 15:36:50 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb (PP::PPMethods#pp_hash): sort if
+ all keys are strings, symbols or integers.
+
+Sat Jul 7 15:30:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_yield_setup_args), vm.c, insns.def:
+ fix to pass nil as block parameter to yielded block.
+ [ruby-dev:31147]
+
+ * bootstraptest/test_block.rb: add a test for above.
+
+Fri Jul 6 19:55:10 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb.rb: typo. Thanks, Giles Bowkett.
+
+ * lib/irb/completion.rb: support Ruby1.9 changing return value
+ String to Symbol for Object#methods, etc. [ruby-dev:31148].
+
+Fri Jul 6 18:20:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: fix load path.
+
+ * common.mk: fix "test" rule to run with "btest".
+
+ * rubytest.rb, sample/test.rb: fix to show tests progress.
+
+Fri Jul 6 15:37:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_iterator.rb: fix test to 1.9 spec.
+
+Fri Jul 6 15:21:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_interrupt): suppress a gcc's officious warning.
+
+Fri Jul 6 14:57:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (keyword_to_name): constified.
+
+ * ext/ripper/eventids2.c (token_to_eventid): ditto.
+
+Fri Jul 6 14:50:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb: added --quiet option.
+
+Fri Jul 6 14:35:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_marg): wrap f_norm_arg assignment node with NODE_LIST.
+ [ruby-dev:31141]
+
+Fri Jul 6 12:15:01 2007 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/sentgen.rb: new file.
+
+ * test/ruby/test_assignment.rb: tests implemented using assignment
+ generator and emulator.
+
+Fri Jul 6 03:06:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: remove unused code.
+
+ * compile.c (compile_massign): fix to invoke to_splat on
+ splat rhs (example: *a = *nil). [ruby-dev:31136]
+
+ * bootstraptest/test_massign.rb: add tests for above.
+
+ * compile.c (iseq_compile_each): disable excess optimization.
+ [ruby-dev:31126]
+
+Fri Jul 6 02:08:25 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: fix to invoke nil.to_splat on NODE_ARGSCAT.
+ [ruby-dev:31138].
+
+ * bootstraptest/test_literal.rb: add tests for above.
+
+Thu Jul 5 19:45:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h: rename rb_control_frame_t#magic to flag.
+
+ * vm.h: add VM_FRAME_TYPE() and VM_FRAME_FLAG().
+
+ * cont.c, insnhelper.ci, insns.def, vm.c, vm_dump.c,
+ vm_evalbody.ci, yarvcore.c: apply above changes.
+
+Thu Jul 5 19:16:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_basicinstructions.rb: remove an assertion using
+ unsupported hash literal (such as {1, 2}).
+
+ * test/ruby/test_hash.rb: ditto.
+
+Thu Jul 5 19:12:22 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c: Qfalse is VALUE, not pointer.
+
+Thu Jul 5 18:42:01 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): add break catch point.
+
+ * insns.def (throw): support correct "break" and "return".
+ this commit achieve that "make test" passes all tests.
+
+ * vm.c: ditto.
+
+Thu Jul 5 18:44:12 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (mlhs_basic): use mlhs_post after tSTAR.
+ [ruby-dev:31109]
+
+Thu Jul 5 18:27:58 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/{intern,ruby}.h, compile.[ch], error.c, eval.c,
+ eval_load.c, gc.c, iseq.c, main.c, parse.y, re.c, ruby.c,
+ yarvcore.[ch] (ruby_eval_tree, ruby_sourcefile, ruby_sourceline,
+ ruby_nerrs): purge global variables.
+
+ * ruby.c (proc_options): moved do_print and do_loop options
+ handling from ruby_process_options().
+
+Thu Jul 5 16:37:34 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (int_pow): fix previous nubu's commit.
+
+ * test/ruby/test_fixnum.rb: new test.
+
+Thu Jul 5 15:56:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (int_pow): even number multiplication never be negative.
+
+Thu Jul 5 10:42:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/{node,ruby}.h, ruby.c: added enum constants for gdb
+ support. [ruby-dev:31066]
+
+ * .gdbinit: some improvements.
+
+Thu Jul 5 10:13:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (global_symbols.last_id): reduce unused ID numbers.
+
+ * include/ruby/st.h, st.c (st_init_table, st_init_table_with_size):
+ constified.
+
+Wed Jul 4 23:36:27 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/httpauth/authenticator.rb
+ (WEBrick::HTTPAuth::Authenticator#check_scheme): auth-scheme must be
+ treated as a case-insensitive token according to RFC 2617 section 1.2.
+
+Wed Jul 4 18:30:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (mlhs_inner): new rule. [ruby-dev:31132]
+
+Wed Jul 4 05:11:57 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (set_relation): added.
+
+Wed Jul 4 04:58:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (caller_setup_args): fix to show correct class
+ on an error message (ex: m(&1)). [ruby-dev:31101]
+
+Wed Jul 4 04:30:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_array, iseq_compile_each): fix about array
+ generation in void context. [ruby-dev:31102]
+
+ * bootstraptest/test_literal.rb: add a test for above.
+
+Wed Jul 4 04:07:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_array): ignore NODE_ZARRAY.
+ [ruby-dev:31110]
+
+ * bootstraptest/test_method.rb: add a test for above.
+
+Wed Jul 4 04:04:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.h: fix debug print level.
+
+Wed Jul 4 03:52:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): support v[&b]= type method call.
+ [ruby-dev:31094]
+
+ * bootstraptest/test_method.rb: add a test for above.
+
+Wed Jul 4 03:43:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_massign): fix massign compilation
+ (example: a, *v, (*x) = ...). [ruby-dev:31107]
+
+ * bootstraptest/test_massign.rb: add tests for above.
+
+Tue Jul 3 23:12:29 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/onigiruma.h (ONIG_EXTERN): use RUBY_EXTERN if defined.
+
+ * regenc.h: include ruby/defines.h.
+
+ * regint.h: x64-mswin64 support.
+
+Tue Jul 3 13:47:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_save_machine_stack): clear saved_thread.machine_stack*.
+
+Mon Jul 2 21:45:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: rename iseq_translate_direct_threaded_code()
+ to iseq_translate_threaded_code().
+
+ * eval_intern.h, yarvcore.h: mv EXEC_EVENT_HOOK() and
+ exec_event_hooks() to yarvcore.h.
+
+ * insnhelper.ci, vm.c: mv yarv_finish_insn_seq to vm.c.
+
+ * insns.def (opt_call_c_function): fix to use RESTORE_REGS().
+
+ * iseq.c (rb_iseq_build_for_ruby2cext): fix to allocate iseq.
+
+Mon Jul 2 11:59:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defineclass): suppress a warning.
+
+ * insns.def (opt_call_c_function): should raise the thrown exception
+ instead of returning it.
+
+Mon Jul 2 08:53:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h, yarvcore.h: move declaration of sysstack_error
+ to yarvcore.h.
+
+ * iseq.c: fix symbol name (:toplevel -> :top).
+
+ * lib/vm/instruction.rb, template/vm.inc.tmpl: replaceable
+ current file name.
+
+Mon Jul 2 05:29:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, iseq.c: fix iseq some of load/store process.
+
+Mon Jul 2 03:09:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, compile.c, insnhelper.ci, iseq.c, vm.c:
+ rename structure names and field names.
+
+ * insnhelper.h, insns.def: add GET_CONST_INLINE_CACHE().
+
+ * iseq.c: add rb_iseq_build_for_ruby2cext().
+
+ * yarvcore.h, vm.h: move declaration of rb_insn_func_t
+ to yarvcore.h.
+
+Sun Jul 1 03:25:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.h, vm.h: some refactoring.
+ remove useless comments, etc.
+
+Sun Jul 1 03:02:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h: some refactoring on rb_iseq_t.
+ rename some variable names, add comments, etc.
+
+ * compile.c, iseq.c, proc.c, vm.c: ditto.
+
+Sun Jul 1 02:57:57 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.h: rename insn_func_type to rb_insn_func_type.
+
+ * vm_evalbody.ci: ditto.
+
+ * insns.def: add opt_call_native_compiled instruction
+ instead of opt_call_native_compiled.
+
+Sat Jun 30 00:17:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): return non-valid token for an invalid
+ instance/class variable name. a patch from Yusuke ENDOH
+ <mame AT tsg.ne.jp>. [ruby-dev:31095]
+
+Fri Jun 29 23:38:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmts): fix for ripper.
+
+Fri Jun 29 21:55:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y: fix to show line number of blank block.
+ [ruby-dev:31093]
+
+Fri Jun 29 20:51:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/cgi/session.rb (create_new_id): don't cut off md5.hexdigest to
+ follow Ruby 1.8.
+
+Fri Jun 29 17:10:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * debug.h: constified.
+
+ * debug.c (ruby_set_debug_option): separated from main.c.
+
+ * gc.c (ruby_gc_stress), signal.c (ruby_enable_coredump): prefixed.
+
+Fri Jun 29 16:39:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (proc_new): fix to return a proc object
+ which block is contained ([ruby-dev:31056]).
+
+Fri Jun 29 15:43:59 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_pow): get rid of division by zero. reported by
+ Yusuke ENDOH <mame AT tsg.ne.jp> [ruby-dev:31040]
+
+ * numeric.c (int_round): do nothing when rounding by zeroth digit.
+ check underflow. [ruby-dev:31043]
+
+Fri Jun 29 15:32:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in: add fastcall attribute check.
+
+Fri Jun 29 14:51:24 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assoc_list): remove expanded hash literal (no splat).
+
+ * lib/webrick/httpstatus.rb (WEBrick::HTTPStatus::EOFError): adapt
+ to new syntax.
+
+Fri Jun 29 14:48:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * tool/insns2vm.rb, lib/vm/instruction.rb: move process body
+ to lib/vm/instruction.rb.
+
+ * common.mk: fix aotc rule.
+ experimental. bin/ruby2cext is not added yet.
+
+Fri Jun 29 11:23:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (dsym): return non-null NODE even if yyerror(). based on a
+ patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:31085]
+
+Thu Jun 28 23:29:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assoc_list): odd number check only for NODE_ARRAY.
+ [ruby-dev:31082]
+
+Thu Jun 28 22:24:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * win32/Makefile.sub: define FUNC_FASTCALL macro.
+
+ * vm.h: fix to use FUNC_FASTCALL macro.
+ TODO: add FUNC_FASTCALL macro by configure.
+
+Thu Jun 28 19:38:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: fix to remove -Wall warnings on gcc.
+
+ * compile.c (make_name_with_str): removed. use rb_sprintf() instead.
+
+Thu Jun 28 18:53:01 2007 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_hash): fix hash area.
+
+Thu Jun 28 15:00:06 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_getline): local variable to be
+ initialized. [ruby-dev:31077]
+
+Thu Jun 28 11:30:39 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (rb_obj_id): use SIGNED_VALUE instead of long.
+
+Thu Jun 28 05:01:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk (run.gdb): fix to load $(srcdir)/.gdbinit
+
+ * vm.c (rb_vm_set_finish_env): add a cast.
+
+ * vm.h: support __fastcall for MSVC.
+
+Thu Jun 28 02:12:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: fix to untouch $:.
+
+Thu Jun 28 02:03:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (setup_args): change parameter type.
+
+Thu Jun 28 02:03:39 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (rb_intern2): unconstify cast.
+
+Thu Jun 28 01:44:31 2007 Tanaka Akira <akr@fsij.org>
+
+ * parse.y (rb_intern2): don't allocate a string object at first.
+ [ruby-dev:31064]
+
+Thu Jun 28 01:24:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: fix to show file name.
+
+ * bootstraptest/test_*.rb: add bootstrap tests.
+
+Thu Jun 28 01:22:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/node.h, parse.y, gc.c, iseq.c: remove NODE_CREF.
+
+Thu Jun 28 01:19:43 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix popped backref and others.
+ ([ruby-dev:31068]).
+
+ * compile.c (iseq_compile_each): remove needless statements.
+
+Wed Jun 27 23:51:33 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c: remove unused functions.
+
+Wed Jun 27 20:46:05 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/Makefile.sub, win32/configure.bat,
+ win32/mkexports.rb, win32/setup.mak, win32/win32.c: import
+ x64-mswin64 port.
+
+Wed Jun 27 20:31:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_translate_direct_threaded_code): fix prototype
+ function name.
+
+ * vm.h: add correct cast.
+
+Wed Jun 27 17:08:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_evalbody.ci: support OPT_CALL_THREADED_CODE.
+
+ * insns.def, vm.c, vm.h: ditto.
+
+ * vm.h: add VM_CFP_CNT() and VM_SP_CNT().
+
+Wed Jun 27 04:23:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix type error.
+
+Wed Jun 27 03:26:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_massign), insns.def (expandarray): support
+ postarg with massign (a, *b, c = ...).
+
+ * bootstraptest/test_massign.rb: add tests for above.
+
+ * compile.h: fix debug macro names.
+
+Wed Jun 27 00:18:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_clear): need to check STR_EMBED_P() before
+ free()ing memory. a patch from Yusuke ENDOH <mame AT tsg.ne.jp>.
+ [ruby-dev:31062]
+
+Tue Jun 26 16:39:01 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_getgroups): use GIDT2NUM for rb_gid_t.
+
+Tue Jun 26 16:28:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_wait_fd_rw): terminate fdset.
+
+Tue Jun 26 16:26:58 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regint.h: IL32LLP64 support.
+
+Tue Jun 26 16:22:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (ruby_node_name): update node names.
+
+Tue Jun 26 15:21:20 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/ruby.h: IL32LLP64 support.
+
+ * bignum.c (bigfixize, rb_cstr_to_inum): ditto.
+
+ * insns.def (opt_plus, opt_minus, opt_mult): ditto.
+
+Tue Jun 26 15:04:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_s_new): revert initializing VM stack.
+
+ * yarvcore.c (th_init2): ditto.
+
+ * vm.c, vm.h: fix to stop using Qundef on VM stack. According to
+ this change, VM stack should not include Qundef value.
+
+ * insns.def (putundef): removed.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * eval.c (eval): fix spacing.
+
+Tue Jun 26 04:03:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (vm_yield_with_cfunc), proc.c: fix Method#to_proc
+ to return lambda Proc ([ruby-dev:31021], [ruby-dev:31037]).
+
+Tue Jun 26 03:46:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_s_new): fix to clear rb_thread_t#tag.
+ [ruby-dev:30995]
+
+Tue Jun 26 03:38:31 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_s_new), yarvcore.c (th_init2): fix to clear
+ VM stack ([ruby-dev:31046]).
+
+Tue Jun 26 03:15:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: rename setup_arg() to setup_args().
+ fix to use setup_args() at processing NODE_YIELD.
+
+Tue Jun 26 02:50:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (setup_arg): support kind of "m(*ary, x)" method call.
+ ([ruby-dev:31048]).
+
+Tue Jun 26 00:28:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci, vm.c: complete block parameter support.
+ post arguments, optional arguments, block argument.
+
+ * compile.c, parse.y: fix {|a|} parameter.
+
+ * insnshelper.ci, insns.def: revert caller_setup_args() option
+ (need_block_check) parameter.
+
+Mon Jun 25 20:18:44 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (RVALUE): in RVALUE and RBasic, flags must be the same type.
+
+Mon Jun 25 18:02:55 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/pty/extconf.rb: skip wince and win64.
+
+Mon Jun 25 17:59:32 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/node.h (NODE_LMASK, nd_line): shouldn't use int and/or
+ long carelessly.
+
+Mon Jun 25 11:36:35 2007 Koichi Sasada <ko1@atdot.net>
+
+ * gc.h: add RUBY_ prefix to debug macros.
+
+ * cont.c, proc.c, yarvcore.c,
+
+ * gc.c: define ruby_gc_debug_indent variable to debug mark/free.
+
+ * vm.c, insnhelper.ci: rename some functions to vm_* or rb_vm_*.
+ move some functions, definitions, declarations to suitable files.
+
+ * eval.c, yarvcore.h, eval_error.ci, insnhelper.ci: ditto.
+
+Mon Jun 25 09:45:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.ci, eval_jump.ci, eval_method.ci, eval_safe.ci: c-mode.
+
+Mon Jun 25 05:27:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c: remove ruby_current_node and change eval() prototype.
+ fix to use rb_sourcefile/line() instead of ruby_sourcefile/line.
+
+ * error.c, eval_error.ci, eval_load.c, eval_safe.ci, gc.c,
+ include/ruby/intern.h, parse.y, process.c, ruby.c: ditto.
+
+ * vm.c: fix spaces.
+
+Mon Jun 25 04:20:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_*.h: rename to eval_*.ci.
+
+ * common.mk: ditto.
+
+ * eval_error.ci: remove ruby_set_current_source().
+
+ * error.c, eval.c, ruby.c: ditto.
+
+ * eval_safe.c, proc.c: remove unused macros.
+
+Mon Jun 25 03:37:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.ci (caller_setup_args): add need_block_check option.
+
+ * insns.def: ditto.
+
+ * yarvcore.h: add GetCoreDataFromValue().
+
+Mon Jun 25 02:14:30 2007 Koichi Sasada <ko1@atdot.net>
+
+ * call_cfunc.ci: removed.
+
+ * insnhelper.ci: added. this function includes all functions that
+ vm insns need.
+
+ * common.mk: ditto.
+
+ * insnhelper.h, vm.h, vm.c: move some declaration.
+
+ * gc.h: remove GC_CHECK() macro because GC.stress is more useful.
+
+ * compile.c, iseq.c, vm_dump: ditto.
+
+ * gc.h, thread.c: move a prototype declaration.
+
+ * debug.c, debug.h: rename some functions.
+
+ * compile.h: ditto.
+
+Mon Jun 25 00:45:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (invokesuper): fix error message.
+
+Mon Jun 25 00:14:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: some refactoring.
+ * rename th_* to vm_*.
+ * remove unused variables functions.
+ * add prototypes.
+
+ * blockinlining.c, compile.c, cont.c, eval.c, eval_intern.h,
+ eval_jump.h, eval_load.c, inits.c, insns.def, iseq.c, parse.y,
+ proc.c, process.c, signal.c, thread.c, vm.c, vm_dump.c,
+ vm_evalbody.ci, yarvcore.c, yarvcore.h: ditto.
+
+Sun Jun 24 22:32:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h (rb_add_method): fix to check 0.
+
+Sun Jun 24 22:00:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insn_send.ci: removed.
+
+ * common.mk: ditto.
+
+ * vm.c (vm_call_bmethod), isnsn.def: added. fix to use this
+ function instead of using goto.
+
+ * vm.c (vm_call_bmethod): renamed from th_invoke_bmethod().
+
+ * vm.c (vm_method_missing): renamed from eval_method_missing().
+
+ * vm_evalbody.ci: remove tmp_* variables.
+
+ * insnhelper.h: add some macros.
+
+ * insns.def: forbid zsuper from method defined by define_method().
+
+ * test/ruby/test_super.rb: ditto.
+
+Sun Jun 24 20:01:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_macro.def: removed.
+
+ * insn_send.ci: added. this file includes send instruction body.
+
+ * common.mk: ditto.
+
+ * insns.def: ditto.
+
+ * tool/insns2vm.rb: ditto.
+
+ * vm.c: ditto.
+
+Sun Jun 24 19:30:37 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.h (RESTORE_REGS): add do/while(0) around macro.
+
+ * vm.c, vm_macro.def: remove macro_eval_invoke_func() and
+ add vm_setup_method(). use it instead.
+
+Sun Jun 24 19:02:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, vm_macro.def : remove macro_eval_invoke_cfunc() and
+ add vm_call_cfunc().
+
+Sun Jun 24 17:54:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm.c: add/fix stack overflow check.
+
+Sun Jun 24 17:28:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.h: change CHECK_STACK_OVERFLOW() to throw exception.
+
+ * vm.c (caller_setup_arg), vm_macro.def: remove
+ macro_eval_setup_send_arguments and add caller_setup_arg().
+
+ * insns.def: ditto.
+
+ * bootstraptest/test_method.rb: add splat arg tests.
+
+Sun Jun 24 16:35:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_to_s): used a variable before initialized.
+
+Sun Jun 24 16:05:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (callee_setup_arg): added. support correct post arg.
+
+ * vm_macro.def (macro_eval_invoke_func): fix to use
+ callee_setup_arg.
+
+ * compile.c (set_arguments): adjust for above changes.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * iseq.c (ruby_iseq_disasm): ditto.
+
+ * yarvcore.h: add rb_iseq_t#post_arg_start and arg_size.
+
+ * bootstraptest/test_method.rb: add post arg tests.
+
+Sun Jun 24 16:10:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_to_s): suppress warning, and reduced duplicated code.
+
+Sun Jun 24 15:33:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/runner.rb: set default directory to
+ '/tmp/bootstraptest.tmpwd' and add --dir option.
+ fix to output driver and target information.
+
+ * common.mk: fix to run btest on BASERUBY and
+ add OPTS to pass option ("make btest OPTS=...").
+
+Sun Jun 24 03:05:00 2007 Tanaka Akira <akr@fsij.org>
+
+ * enum.c (enum_minmax): fix SEGV by [].minmax.
+
+Sat Jun 23 17:18:19 2007 Tanaka Akira <akr@fsij.org>
+
+ * re.c (match_inspect): MatchData#inspect implemented.
+
+Sat Jun 23 15:00:16 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_minmax): new method to get the minimum and maximum
+ values from the enumerable at once.
+
+ * enum.c (enum_minmax_by): ditto.
+
+Sat Jun 23 01:25:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_assoc): new method.
+
+ * hash.c (rb_hash_rassoc): ditto.
+
+ * hash.c (rb_hash_flatten): ditto.
+
+Fri Jun 22 23:55:59 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): add optional argument to specify
+ exclusiveness.
+
+ * range.c (range_step): use String#upto with optional argument.
+
+ * range.c (range_each): ditto.
+
+Fri Jun 22 19:55:51 2007 Tanaka Akira <akr@fsij.org>
+
+ * proc.c (proc_to_s): revert the change from %p to %lx at YARV
+ merge time.
+
+Fri Jun 22 19:33:49 2007 Tanaka Akira <akr@fsij.org>
+
+ * proc.c (proc_to_s): show is_lambda.
+
+Thu Jun 21 20:36:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_sort): remove hash specific implementation.
+
+Thu Jun 21 20:28:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_select): returns new hash, not assoc array.
+ [ruby-core:11504]
+
+ * hash.c (env_select): ditto.
+
+Thu Jun 21 23:08:19 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_intern2): ID_JUNK test based on len, not by NUL.
+
+Thu Jun 21 19:42:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * yarvcore.c (rb_thread_mark): mark also thrown_errinfo.
+
+Thu Jun 21 17:13:44 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern2): name may not be NUL-terminated.
+
+Wed Jun 20 08:27:57 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval_error.h (error_print): show full stacktrace on
+ non-SystemStackError.
+
+Wed Jun 20 04:45:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern2): use rb_intern2 to intern without trailing
+ equal sign.
+
+ * parse.y (rb_intern2, ripper_id2sym): fixed indent.
+
+Tue Jun 19 10:55:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_load.c (load_ext, rb_require_safe): pass VALUE instead of
+ pointer. [ruby-Bugs-11659]
+
+Mon Jun 18 08:47:54 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/{extconf.rb,ossl_ssl_session.c}:
+ Fix ruby-Bugs-11513.
+
+ * ext/openssl/ossl_pkey_ec.c
+ New methods EC::Point.[eql,make_affine!,invert!,on_curve?,infinity?]
+ By default output the same key form as the openssl command.
+
+ * ext/openssl/ossl_rand.c
+ New method Random.status?
+
+ * test/openssl/test_ec.rb
+ New tests.
+
+Mon Jun 18 17:04:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_load.c (rb_require_safe, ruby_init_ext): load with ruby level
+ cfp. [ruby-core:10779]
+
+ * eval_intern.h, vm.c (rb_vm_call_cfunc): new function to call a
+ function with ruby level cfp.
+
+Mon Jun 18 16:57:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (yycompile): disable trace while creating ruby_debug_lines.
+ [ruby-talk:253586]
+
+ * thread.c (ruby_suppress_tracing): new function to call a function
+ with suppressing trace.
+
+ * lib/debug.rb, lib/tracer.rb: for YARV.
+
+Mon Jun 18 13:54:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): return EXIT_FAILURE if any exceptions occurred
+ in at_exit blocks. [ruby-core:11263]
+
+Mon Jun 18 02:49:16 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (env_mark): fix to mark block.proc.
+
+ * vm.c (th_make_proc_from_block): set created proc to block->proc.
+
+Mon Jun 18 02:48:12 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c (vm_stack_dump_raw): hide VM stack trace.
+
+Mon Jun 18 02:43:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * signal.c (sigsegv): clear gc_stress flag on SEGV.
+
+Mon Jun 18 01:14:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_path2class): get rid of dangling pointer caused by
+ optimized out value.
+
+ * variable.c (rb_global_entry, rb_f_untrace_var, rb_alias_variable,
+ rb_generic_ivar_table, generic_ivar_get, generic_ivar_set,
+ generic_ivar_defined, generic_ivar_remove, rb_mark_generic_ivar,
+ rb_free_generic_ivar, rb_copy_generic_ivar,
+ rb_obj_instance_variables): suppress warnings.
+
+Sun Jun 17 11:11:07 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval.c (rb_method_missing): avoid a warning "too many arguments
+ for format string" on "./ruby -ve 'def m() super end; m'".
+
+Sat Jun 16 22:24:17 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (garbage_collect): re-introduce ruby_current_node marking code.
+ [ruby-dev:31005]
+
+Sat Jun 16 21:37:43 2007 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (gc_sweep): re-introduce heap extension strategy change.
+ [ruby-dev:31005]
+
+Fri Jun 15 22:59:37 2007 Tanaka Akira <akr@fsij.org>
+
+ * .gdbinit: new file to ease debugging using gdb.
+
+Fri Jun 15 22:33:55 2007 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (default_handler): func argument removed.
+ (trap_handler): support SYSTEM_DEFAULT. call default_handler
+ internally.
+ (sig_trap): don't call default_handler.
+ [ruby-dev:30999]
+
+Fri Jun 15 22:33:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (realclean): separate local and ext.
+
+ * ext/extmk.rb: not remove unrelated directories.
+
+Fri Jun 15 20:50:02 2007 Tanaka Akira <akr@fsij.org>
+
+ * keywords: enclose C code in declaration section by %{ and %} to
+ avoid extra semicolon after #ifdef RIPPER.
+ pointed by eban.
+
+Fri Jun 15 18:56:52 2007 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (trap_handler): trap("SIGSEGV", "DEFAULT") may cause wrong
+ trap error because SIG_DFL may be zero.
+
+Fri Jun 15 15:55:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (setconstant, toregexp): fix to mark object correctly.
+
+Fri Jun 15 13:24:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * hash.c: exchange semantics of Hash#each and Hash#each_pair.
+ pointed out by [ruby-dev:30997].
+
+ * test/ruby/test_iterator.rb: ditto.
+
+ * test/ruby/test_yield.rb: ditto.
+
+Fri Jun 15 12:38:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_iterator.rb: remove debug code (GC.stress=true).
+
+Fri Jun 15 12:25:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (th_yield_setup_args): |v| should work as |v,|.
+ ex) def m;yield 1, 2; end; m{|v| p v} #=> 1
+
+ * parse.y: apply above change for "for" statement.
+
+ * test/ruby/test_assignment.rb: ditto
+
+ * test/ruby/test_basicinstructions.rb: ditto.
+
+ * test/ruby/test_iterator.rb: ditto.
+
+ * test/ruby/test_yield.rb: ditto.
+
+ * compile.c (iseq_compile_each): fix debug.
+
+Fri Jun 15 12:22:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (ruby_finalize_1): rb_thread_t#errinfo should be clear with
+ Qnil.
+
+Fri Jun 15 12:20:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_cont_call): forbid cross fiber continuation call.
+
+ * test/ruby/test_fiber.rb: ditto.
+
+Fri Jun 15 12:14:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * sample/test.rb: fix to show line information whether test succeeds.
+
+Thu Jun 14 17:16:05 2007 Tanaka Akira <akr@fsij.org>
+
+ * eval_load.c (Init_load): delay allocating an array for rb_load_path
+ to avoid GC problem in very early stage.
+ (RUBY_GC_STRESS causes GC in such stage.)
+
+ * variable.c (rb_gc_mark_global_tbl): rb_global_tbl may be 0 in
+ very early stage.
+
+ * thread.c (thread_cleanup_func) [IA64]: clear register stack position.
+ (thread_start_func_2) [IA64]: record the beginning of register
+ stack using extra argument.
+ (rb_gc_save_machine_context) [IA64]: record the end of register
+ stack.
+
+ * gc.c [IA64] (SET_STACK_END): record the end of register stack.
+ (garbage_collect) [IA64]: use recorded register stack area for
+ GC marking.
+ (yarv_machine_stack_mark) [IA64]: GC mark from the register stack
+ area.
+
+ * yarvcore.c [IA64] (rb_gc_register_stack_start): defined.
+ (Init_VM): store th->self on stack to fix GC problem.
+ (Init_yarv) [IA64]: initialize the beginning of register stack.
+
+ * yarvcore.h (struct rb_thread_struct) [IA64]: new members for
+ register stack area.
+
+ * thread_pthread.ci (thread_start_func_1) [IA64]: call
+ thread_start_func_2 with the end of register stack.
+
+ * cont.c (struct rb_context_struct) [IA64]: new members for register
+ stack area.
+ (cont_mark) [IA64]: GC mark from register stack area.
+ (cont_free) [IA64]: free saved register stack.
+ (cont_save_machine_stack) [IA64]: record the position and contents
+ of the register stack.
+ (cont_capture): store cont->self on stack to fix GC problem.
+ (cont_restore_1) [IA64]: restore the register stack.
+ [IA64] (register_stack_extend): new function.
+ (cont_restore_0) [IA64]: call register_stack_extend instead of
+ cont_restore_1.
+
+ [ruby-dev:30982]
+
+Thu Jun 14 17:09:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser): handle more
+ extensions. [ruby-dev:30972]
+
+Thu Jun 14 14:40:42 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb: document updated.
+ suggested by NaHi. [ruby-dev:30966]
+
+Wed Jun 13 22:42:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (garbage_collect): update IA64 register stack code.
+ [ruby-dev:30971]
+
+Wed Jun 13 06:05:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (darwin): prohibit loading extension libraries to
+ miniruby.
+
+Tue Jun 12 21:50:51 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (call_args): no allow splat after assocs. takes
+ consistency over compatibility.
+
+ * parse.y (call_args2): ditto
+
+Tue Jun 12 14:53:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (Logging.quiet, Logging.message): added quiet flag and
+ use it. [ruby-core:10909]
+
+ * lib/mkmf.rb (find_header): use header names in the message.
+
+Sun Jun 10 18:37:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/probeprofiler/probeprofiler.c: clean warnings.
+
+Sun Jun 10 18:32:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/isinf.c, missing/dup2.c, missing/strtod.c, missing/x68.c,
+ missing/alloca.c: use "ruby/config.h".
+
+Sun Jun 10 17:49:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (install_recursive): should check parent directories of
+ the destination. [ruby-dev:30947]
+
+Sun Jun 10 16:59:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (do_block, brace_block): fix line numbers. [ruby-dev:30831]
+
+Sun Jun 10 16:57:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (install_recursive): add :glob option rather than
+ using FNM_DOTMACH.
+
+ * instruby.rb (ext-comm): make header directory first.
+
+Sun Jun 10 16:10:58 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb: typo.
+
+Sun Jun 10 16:07:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (install_recursive): skip .svn directories.
+
+Sun Jun 10 15:44:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): rubyhdrdir was missing.
+
+Sun Jun 10 15:26:36 2007 Tanaka Akira <akr@fsij.org>
+
+ * Makefile.in: use --output-file for gperf to not leave lex.c.tmp.
+
+Sun Jun 10 15:11:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (XCFLAGS): -I. is needed for *.inc.
+
+ * ext/extmk.rb: prepend also topdir to mflags at last.
+
+Sun Jun 10 13:47:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb (test_should_propagate_signaled):
+ get rid of invoking shell. [ruby-dev:30942]
+
+Sun Jun 10 12:56:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby: moved public headers.
+
+ * instruby.rb (install_recursive): skip backup files.
+
+ * instruby.rb (ext-comm): install only current platform headers.
+
+Sun Jun 10 10:42:04 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb: renamed from lib/secrand.rb.
+ suggested by NaHi. [ruby-dev:30934]
+
+Sat Jun 9 06:40:05 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/secrand.rb: rename SecRand() to SecRand.random_number.
+ suggested by NaHi. [ruby-dev:30934]
+
+Fri Jun 8 16:34:20 2007 Tanaka Akira <akr@fsij.org>
+
+ * ext/zlib/zlib.c (gzfile_s_open): use FilePathValue to support
+ to_path.
+
+Fri Jun 8 16:11:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_jump.h: th->errinfo should clear with nil.
+
+Fri Jun 8 14:53:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (call_args): allow splat argument after unpacked
+ assocs like 1.8 does.
+
+ * parse.y (call_args): ditto.
+
+Fri Jun 8 14:26:18 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/secrand.rb: new file for secure random interface.
+
+ * lib/cgi/session.rb: use secrand for generating cookies.
+
+Fri Jun 8 12:44:37 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {win32,wince}/Makefile.sub: add lex.c rule.
+
+Fri Jun 8 11:54:18 2007 Tanaka Akira <akr@fsij.org>
+
+ * lex.c.blt: moved from lex.c.
+
+ * Makefile.in: use lex.c.blt if gperf is not available.
+ [ruby-list:8212], [ruby-list:8214], [ruby-list:24667],
+ [ruby-talk:120857], [ruby-dev:28102]
+
+Thu Jun 7 21:38:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_execute_interrupts): invoke ensure when
+ main thread exits.
+
+Thu Jun 7 19:02:48 2007 Tanaka Akira <akr@fsij.org>
+
+ * lib/pp.rb: call original "method" method instead of redefined one.
+
+Thu Jun 7 17:20:57 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (prepare_iseq_build): freeze filename and name string.
+
+ * variable.c: freeze class name string.
+
+Thu Jun 7 12:48:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_restore_1): fix to check root fiber [ruby-dev:30911].
+
+ * test/ruby/test_fiber.rb: add a test.
+
+Thu Jun 7 07:24:36 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/json/common.rb: Ponder offering parse! method.
+
+ * lib/json/editor.rb: be a bit more robust while loading data.
+
+ * ext/json/ext/{generator,parser}/extconf.rb:
+ add a have_header directive for st.h
+
+ * test/json: fix some tests.
+
+Thu Jun 7 03:29:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test_fiber.rb: add a test (Continuation and Fiber).
+
+Thu Jun 7 03:17:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_new): add debug message.
+
+ * cont.c (cont_restore_1): copy stack information from fiber.
+
+ * cont.c (rb_fiber_s_new): fix to mark created fiber.
+
+ * test/ruby/test_fiber.rb: add some tests around Thread and Fiber.
+
+ * yarvcore.c (thread_free): fix to skip freeing stack if root fiber
+ is available.
+
+Thu Jun 7 01:03:20 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h, eval.c (ruby_init): remove POP_TAG_INIT().
+
+ * cont.c (rb_fiber_start): remove zero-clearing tag.
+
+Wed Jun 6 20:23:46 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (invokeblock): fix of splat argument.
+ (splat same as normal method dispatch)
+
+Wed Jun 6 16:27:25 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insns.def: fixed indentation.
+
+Wed Jun 6 10:58:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_yield): fix to check Qundef.
+
+Wed Jun 6 10:57:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_continuation.rb: add a test for last commit.
+
+Wed Jun 6 10:55:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_cont_call): forbid calling dead fiber with
+ Continuation#call.
+
+Wed Jun 6 10:50:01 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix around yield arguments
+ (with NODE_ARGSCAT).
+
+Wed Jun 6 02:50:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_start): clear th->tag and check error to fix
+ [ruby-dev:30888] and [ruby-dev:30889].
+
+ * eval_intern.h: fix rb_fiber_start() prototype.
+
+ * test/ruby/test_fiber.rb: add tests for above.
+
+Wed Jun 6 02:40:20 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insnhelper.h, insns.def (DEC_SP): shouldn't use unary minus operator
+ in pointer operation. some compilers (such as VC++8 x64) cannot deal
+ it with expected way.
+
+Wed Jun 6 02:19:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y (new_yield), compile.c (iseq_compile_each): fix
+ passing parameter.
+
+ * eval.c, eval_jump.h: simplify rb_yield*.
+
+ * proc.c (proc_mark): fix to mark proc->block.proc.
+
+ * proc.c (Init_Proc): add Proc#lambda?
+
+ * test/ruby/test_lambda.rb: add some tests.
+
+ * vm.c (invoke_block): fix to check lambda block or not.
+
+ * vm.c (th_yield_setup_args): fix to check arguments size
+ when lambda block.
+
+Tue Jun 5 16:30:38 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_p): returns arguments to intervene. [ruby-dev:29736]
+
+Tue Jun 5 14:07:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (invokeblock): check block is created by lambda
+ or Proc.new.
+
+ * vm.c (block_proc_is_lambda): added.
+
+Tue Jun 5 14:47:52 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/pp.rb (PP::PPMethods::seplist): revert last change to work
+ around wrapper bug. [ruby-dev:30840]
+
+Tue Jun 5 14:11:15 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (kanji_convert): Fix guess fallback.
+
+Tue Jun 5 13:32:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c, dir.c, eval.c, eval_jump.h, eval_method.h, numeric.c,
+ pack.c, parse.y, re.c, thread.c, vm.c, vm_dump.c, call_cfunc.ci,
+ thread_pthread.ci, thread_win32.ci: fixed indentation.
+
+ * call_cfunc.ci: protoized.
+
+ * thread_win32.ci: fixed typo.
+
+Tue Jun 5 13:17:11 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * call_cfunc.ci, compile.c, dir.c, eval.c, eval_jump.h, numeric.c,
+ pack.c, re.c, thread.c, thread_win32.ci, vm.c, vm_dump.c: fixed
+ indentation.
+
+Mon Jun 4 21:15:45 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/json.rb, lib/json, ext/json, test/json:
+ import JSON library.
+
+ * ext/nkf: import nkf.c rev:1.124
+ Support CP10001.
+
+Mon Jun 4 20:52:58 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_round): should not just truncate.
+
+Sat Jun 2 16:48:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (Fiber#pass): rename to Fiber#yield. Block parameter
+ of fiber body receive first yield values.
+ e.g.: Fiber.new{|x| p x}.yield(:ok) #=> :ok
+
+ * cont.c: rename rb_context_t#retval to rb_context_t#value.
+
+ * test/ruby/test_fiber.rb: ditto.
+
+Sat Jun 2 16:45:21 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (Init_Proc): remove a line break.
+
+Sat Jun 2 01:27:27 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_round): small optimization to handle bignums.
+
+Fri Jun 1 13:02:35 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * insnhelper.h (INC_SP): shouldn't cast ``x'' to unsigned type because
+ it might be a negative value.
+
+ * insnhelper.h, insns.def: shouldn't use unary minus operator in index
+ operator. some compilers (such as VC++8 x64) cannot deal it with
+ expected way.
+
+Fri Jun 1 11:33:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (num_round): should convert self to Float.
+ [ruby-dev:30860]
+
+Fri Jun 1 02:01:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_round): now takes optional argument to specify
+ number of digits, like round() in Python/PHP.
+
+ * numeric.c (num_round): ditto.
+
+Fri Jun 1 01:58:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (each_with_index_i): should work well with continuation.
+ a patch from sheepman <sheepman AT sheepman.sakura.ne.jp>.
+ [ruby-dev:30846]
+
+Thu May 31 17:27:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/benchmark.rb (Benchmark::Job::item): avoid modifying the
+ argument unintentionally. [ruby-talk:253676]
+
+Wed May 30 14:43:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (cont_capture): store all local variables in heap
+ ([ruby-dev:30832]).
+
+ * vm.c (th_stack_to_heap): added.
+
+ * test/ruby/test_continuation.rb: add a test for above.
+
+ * eval_intern.h (th_get_ruby_level_cfp): fix to clean code.
+
+Wed May 30 13:32:34 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (ResponseParser#next_token): fixed
+ error message.
+
+ * lib/net/imap.rb (ResponseParser#parse_error): fixed
+ the condition not to refer to @token.symbol unexpectedly.
+ Thanks, Dick Monahan.
+
+Wed May 30 13:24:33 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#transfercmd): skip 2XX
+ responses for some FTP servers.
+
+Wed May 30 04:18:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval_cmd): just return if no exceptions.
+ [ruby-dev:30820]
+
+Wed May 30 02:14:25 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (interrupt_init): needs to pass nil for Interrupt.
+ [ruby-core:11038]
+
+ * signal.c (trap): fixed segfaults. [ruby-dev:30830]
+
+Wed May 30 00:50:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_source_filename, obj_free): suppress warnings.
+
+ * gc.c (garbage_collect, yarv_machine_stack_mark): fixed typo.
+ http://bugs.debian.org/426267
+
+Wed May 30 00:24:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (open_args, arg_ambiguous, parser_warning): should not use
+ rb_warning in the parser.
+
+Tue May 29 12:31:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_opendir): removed duplicated code.
+
+Tue May 29 10:55:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: fix bug around Continuation and Fiber.
+
+ * test/ruby/test_continuation.rb: add tests for Continuation.
+
+Tue May 29 10:54:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_opendir, rb_w32_readdir): eliminate magic
+ numbers.
+
+Mon May 28 10:27:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c: fixed a function name.
+
+Mon May 28 03:56:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: support Fiber. Check test/ruby/test_fiber.rb for detail.
+ Fiber is known as "Micro Thread", "Coroutine", and other terms.
+ At this time, only Fiber#pass is supported to change context.
+ I want to know more suitable method name/API for Fiber (... do you
+ know more suitable class name instead of Fiber?) as "suspend/resume",
+ "call", "yield", "start/kick/stop/restart", ....
+
+ * eval.c, eval_intern.h, thread.c, yarvcore.c, yarvcore.h: ditto.
+
+Sat May 26 00:38:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_exec_internal): do nothing if no code.
+
+ * compile.c (rb_iseq_compile): check node if NULL before check
+ nd_type. [ruby-talk:252956]
+
+Sat May 26 00:05:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb (test_should_propagate_signaled):
+ skip tests for exitstatus and termsig on the platforms where
+ signals not supported.
+
+Fri May 25 16:04:47 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * yarvcore.c (Init_VM): wrap already initialized structs to use
+ it directly.
+
+Fri May 25 11:09:47 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regint.h (include): on some platform, defines.h redefines
+ SIZE_OF_LONG_LONG so shouldn't re-include config.h after included
+ defines.h.
+
+ * regint.h (vsnprintf): ruby on windows already have vsnprintf macro.
+
+Thu May 24 12:07:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: check across trap violation.
+
+ * eval.c, yarvcore.h: ditto.
+
+Thu May 24 11:46:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c, yarvcore.c: fix to mark VM structure on startup.
+
+ * yarvcore.h: disable USE_CACHED_VALUE.
+
+Thu May 24 01:54:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c: support callcc which everyone love.
+ incomplete. please give me bug reports.
+
+ * common.mk, inits.c, thread.c: ditto.
+
+ * yarvcore.c: export thread_mark().
+
+ * yarvcore.h: disable value cache option.
+
+ * eval_intern.h: set th_get_ruby_level_cfp to inline.
+
+Wed May 23 15:39:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * common.mk: add a rule for regsyntax.c.
+
+Wed May 23 10:31:53 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * oniguruma.h: updated to Oniguruma 5.7.0.
+
+ * regsyntax.c, unicode.c: new files along with Oniguruma 5.x.
+
+Wed May 23 06:51:46 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * lib/cgi.rb (CGI#[]): get rid of exceptions being raised.
+ [ruby-dev:30740], Thanks Kentaro KAWAMOTO.
+
+Wed May 23 05:49:49 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, ext/purelib.rb, lib/mkmf.rb, runruby.rb: clear default
+ load path to get rid of load pre-installed extensions/libraries.
+ [ruby-core:11017]
+
+Tue May 22 16:37:36 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (set_arg0): support RSTRING_LEN on HP-UX. a patch from
+ WATANABE Tetsuya <Tetsuya.WATANABE AT nifty.com>. [ruby-dev:30806]
+
+Mon May 21 13:40:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, vm_macro.def: support tail call optimization
+ (on default, this feature is not enabled).
+
+ * iseq.c, compile.c, vm_opts.h: add "tailcall_optimization"
+ option.
+
+ * sample/test.rb (test_ok): fix to adjust tailcall stack layout.
+
+ * insns.def, vm.c, compile.c, yarvcore.c, yarvcore.h:
+ add opt_gt, opt_le instructions.
+
+Mon May 21 03:34:06 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: CRAM-MD5 authentication did not work.
+ [ruby-dev:30770]
+
+Sat May 19 10:26:01 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (Date._parse): detects some OFX dates
+ (Of course not fully).
+
+Sat May 19 03:08:05 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_inject): minor improvement. [ruby-dev:30792]
+
+ * enum.c (one_i): no needs to iterate once the result became false.
+
+ * enum.c (enum_one): fix for an example.
+
+ * enum.c (one_iter_i, none_iter_i): DRY.;
+
+Sat May 19 01:07:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): it is now can work without block. you
+ have to specify two argument method name as the first argument.
+
+ * enum.c (Init_Enumerable): reduce is new alias to inject.
+
+Sat May 19 01:05:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (Init_File): method definition mismatch.
+
+Fri May 18 16:44:04 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (Init_File): add to_path method to File objects.
+
+Fri May 18 11:12:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (DllMain, ruby_init_loadpath): use DLL instance handle given
+ to DllMain instead of VirtualQuery so that loadpath becomes relative
+ from the DLL on WinCE too.
+
+Thu May 17 17:03:11 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el (ruby-style-label-indent): for yacc rules.
+
+Thu May 17 13:30:27 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_arg): remove typo from ripper description.
+
+Thu May 17 13:23:38 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y, compile.c (set_arguments): fix to support in-paren
+ parameter (ex: def foo((a, b))).
+
+Thu May 17 13:01:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (ruby_iseq_disasm): fix to show post arg info.
+
+Thu May 17 12:56:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * debug.c (ruby_debug_node): fix to show node line.
+
+Wed May 16 21:48:44 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb (Logger::Application): remove meaningless logdev
+ attribute and added logger attribute instead. [ruby-core:11143]
+ also added Logger#formatter rdoc comment.
+
+Tue May 15 16:40:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb (test_endblockwarn): now parser
+ warnings emit source names and line numbers.
+
+Tue May 15 15:01:38 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_stdhandle): stderr should be without buffering,
+ but mswin32 use buffering when stderr is not connected to tty.
+
+Mon May 14 02:12:07 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_zip): a.zip(b,c) should return an array, not
+ enumerator.
+
+ * array.c (rb_ary_zip): a.zip(b,c) should return array with size
+ truncated to the size of its shortest argument array.
+ [incompatible]
+
+Mon May 14 01:54:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_choice): should return nil when the array is
+ empty.
+
+Sat May 12 18:26:36 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (tokens): forgot to add strip. [ruby-core:11120]
+
+ * test/net/http/test_http.rb: test Net::HTTP.post_form.
+
+Fri May 11 15:27:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_data_to_ary): internal IDs must not be exposed.
+ [ruby-core:11073]
+
+ * parse.y (internal_id_gen): now returns scope local ID instead of
+ global one.
+
+Thu May 10 15:15:53 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_super.rb: add tests.
+
+Thu May 10 15:14:05 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_s_conv): rdoc fix.
+
+Thu May 10 15:09:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (POINTER_P): pointer may be larger than long.
+
+ * parse.y (vtable_size, vtable_included, vtable_tblcpy,
+ vtable_to_tbl): constified.
+
+Thu May 10 10:13:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_priority): rdoc fix; the initial value is
+ inherited from the creating thread. [ruby-core:10607]
+
+Wed May 9 12:28:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (Init_Bignum), numeric.c (Init_Numeric): added fdiv as
+ aliases of quo. [ruby-dev:30771]
+
+Tue May 8 23:39:09 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (Date._parse): revised treatment of
+ hyphened/separatorless dates.
+
+ * lib/date/format.rb: some trivial adjustments.
+
+Tue May 8 20:23:07 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: reverted.
+
+Tue May 8 19:32:18 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/rational.rb: fix high-precision Rationals cannot be
+ converted to Floats. [ruby-Bugs:10502], [ruby-core:11069],
+ [ruby-dev:30743]
+
+Mon May 7 10:59:55 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/image.rb, test/rss/test_image.rb: fixed Image module
+ namespace URI. reported by Dmitry Borodaenko. Thanks.
+
+Sun May 6 18:44:11 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (Net::HTTP.post_form): allow an Array of String
+ for pairs argument. [ruby-Bugs:10340]
+
+ * lib/net/http.rb (Net::HTTP#set_form_data): ditto.
+
+Sun May 6 17:54:36 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: Connection header field might include both of
+ "keep-alive" token and "close" token. [ruby-core:10818]
+
+Sat May 5 16:26:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/date/format.rb (Format::Bag#method_missing): get rid of
+ modifying original argument. [ruby-core:11090]
+
+Thu May 3 22:20:08 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, defines.h, eval_load.c (rb_feature_p, rb_provided,
+ search_required, rb_require_safe), ext/extmk.rb: Fix
+ a bug where a statically linked extension cannot be autoloaded.
+ [ruby-dev:30023] / [ruby-dev:30239]
+
+ * thread.c: added an internal class, Barrier.
+
+ * thread.c: copied rdocs from fastthread.
+
+ * yarvcore.h (struct rb_vm_struct): moved loading_table from global.
+
+Thu May 3 18:10:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_evalbody.ci, insns.def, vm.c, tool/insns2vm.rb (rb_num_t):
+ renamed to get rid of name clash. [ruby-dev:30504]
+
+ * yarvcore.c (ruby_thread_init): ditto.
+
+Wed May 2 18:52:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, yarvcore.h, yarvcore.c, insns.def: fix to mark VM stack
+ in correct range.
+
+Wed May 2 17:13:26 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_quo): now calculate in integer. [ruby-dev:30753]
+
+Wed May 2 15:14:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h: add redefine checks ([ruby-dev:30751]).
+
+Wed May 2 11:22:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: use Qtrue instead of 2.
+
+ * vm.c, insns.def: support "lambda" calling convention.
+
+Wed May 2 06:46:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c, parse.y, ruby.h (rb_compile_warn, rb_compile_warning): warn
+ for compilation. the parser should no longer use rb_warn() and
+ rb_warning(). [ruby-dev:30121]
+
+Wed May 2 05:45:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assoc): result of assoc_new needs to be an assoc.
+
+Wed May 2 05:40:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): improvement by calculating from MSB and using
+ factorization. <http://yowaken.dip.jp/tdiary/20070426.html#p01>
+
+Tue May 1 18:45:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * sample/test.rb: import matzruby's sample/test.rb.
+
+Tue May 1 17:46:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_choice): a new method to choose an element
+ randomly from an array.
+
+ * array.c (rb_ary_choice): fixed mistake from RDoc.
+
+Tue May 1 13:59:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (proc_arity): fix an arity bug ([ruby-core:11060]).
+
+Tue May 1 13:12:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, compile.c (set_arguments): support post arguments.
+
+ * test/ruby/test_method.rb: add tests for above.
+
+ * test/ruby/test_proc.rb: ditto.
+
+ * proc.c: fix an arity bug ([ruby-core:11029]).
+
+ * vm.c, vm.h, insns.def, vm_dump.h: fix bmethod process.
+
+ * vm.c: support block argument on block parameter.
+
+Fri Apr 27 17:05:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (int_pow): bugfix of overflow detection.
+
+ * numeric.c (int_pow): rb_big_pow() may return other than Bignum.
+
+Fri Apr 27 01:51:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: support multiple splat (e.g, [a, *b, *c, e, *f]).
+
+Fri Apr 27 00:03:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): truncate all zero BDIGITs. [ruby-dev:30733]
+
+Thu Apr 26 17:31:00 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): reduce multiplying for even number.
+
+ * numeric.c (int_pow): calculate power in Fixnum as possible.
+ [ruby-dev:30726]
+
+Thu Apr 26 17:18:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y: fixes for ripper.
+
+ * parse.y (primary): reduced duplicated code.
+
+ * parse.y (f_arg_item): should not override by meaningless value.
+
+ * parse.y (f_arg, assocs): should not use $$ before assigned.
+
+ * parse.y (assoc_list): dispatch assoclist_from_args for assocs as
+ well as args.
+
+ * parse.y (assoc): return assoc if dispatched result is $1.
+
+Thu Apr 26 13:54:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-style.el: new file. C/C++ style for ruby source code.
+
+Wed Apr 25 19:49:16 2007 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (unix_send_io, unix_recv_io): use CMSG_DATA to
+ align file descriptor appropriately.
+
+Wed Apr 25 15:23:29 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (NtInitialize, exit_handler): add initializing and
+ cleanup of critical section object for select.
+
+ * win32/win32.c (do_select): block reentrance.
+
+ * win32/win32.c (rb_w32_select): 0 sec polling of socket. this is
+ workaround because winsock cannot do select at same socket at the
+ same time by two or more threads.
+
+Wed Apr 25 14:10:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ext/probeprofiler/probeprofiler.c: fix function name and
+ return value.
+
+Wed Apr 25 12:42:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h: remove rb_control_frame_t#callee_id.
+
+ * vm_macro.def: ditto.
+
+ * eval_intern.h (exec_event_hooks): fix to check event flags
+
+ * eval_intern.h (EXEC_EVENT_HOOK): fix to re-check event flags.
+
+ * ext/probeprofiler : added. this profiler is sampling based
+ profiler.
+
+ * vm.c: add rb_thread_current_status() API for probeprofiler.
+
+ * thread.c (rb_thread_execute_interrupts): add comments.
+
+Wed Apr 25 10:36:03 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_intern.h (PUSH_TAG): no argument now.
+
+ * eval.c, eval_error.h, eval_jump.h, eval_load.c, proc.c, thread.c:
+ ditto.
+
+ * thread.c (alloc_event_hook, rb_thread_remove_event_hook): should
+ return value.
+
+Tue Apr 24 09:33:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (do_stat, do_lstat, do_opendir): should not warn ENOTDIR.
+ [ruby-talk:248288]
+
+Mon Apr 23 22:14:42 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb ($ruby): add extout directory to include path.
+ [ruby-core:11003]
+
+ * lib/mkmf.rb (libpathflag): not to append RPATHFLAG to current
+ directory.
+
+ * lib/mkmf.rb (init_mkmf): add current directory to default
+ library path with highest priority. [ruby-core:10960]
+
+ * lib/mkmf.rb (LINK_SO): LIBPATH to be placed before DLDFLAGS.
+
+Fri Apr 20 16:05:22 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBPATHFLAG, RPATHFLAG): no needs to be quoted,
+ it is done by libpathflag in mkmf.rb.
+
+Fri Apr 20 12:27:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb: fix to override conv proc.
+
+Fri Apr 20 12:21:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): fixed access to out of bound, and inverted
+ the order of errinfos.
+
+Fri Apr 20 10:33:23 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h: add prototypes of rb_sourceline() and
+ rb_sourcefile().
+
+Fri Apr 20 02:37:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): re-send signal. [ruby-dev:30516]
+
+ * eval_error.h (error_handle): no message when exiting by signal.
+
+ * intern.h (rb_thread_signal_raise, ruby_default_signal): prototypes.
+
+ * signal.c (esignal_init): takes a signal number and an optional
+ signal name.
+
+ * signal.c (interrupt_init): pass SIGINT always.
+
+ * signal.c (ruby_default_signal): invoke system default signal
+ handler.
+
+ * signal.c (rb_f_kill): use NUM2PIDT instead of NUM2INT.
+
+ * signal.c (rb_signal_exec, trap): handle SIGTERM. [ruby-dev:30505]
+
+ * thread.c (rb_thread_signal_raise): now takes signal number instead
+ of signal name.
+
+ * thread.c (rb_thread_signal_exit): since rb_make_exception() calls
+ #exception method, rb_class_new_instance() is not needed here.
+
+ * yarvcore.h (struct rb_vm_struct), eval_jump.h (terminate_process):
+ exit_code is no longer stored in VM.
+
+Thu Apr 19 18:37:49 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, node.h, thread.c, yarvcore.[ch], eval_intern.h:
+ support set_trace_func (incomplete. id and klass
+ don't be passed). And support Thread#set_trace_func
+ which hook only specified thread and Thread#add_trace_func
+ which add new trace func instead of replace old one.
+ C level API was modified. See thread.c (logic) and
+ yarvcore.h (data structures).
+
+ * vm.c, vm_macro.def: add hook points.
+
+ * compile.c, insns.def: fix "trace" instruction.
+
+ * iseq.c, vm_macro.h: add compile option "trace_instruction".
+
+ * test/ruby/test_settracefunc.rb: hook "c-return" of set_trace_func.
+
+Thu Apr 19 20:57:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (symbol): symbols should be followed by EXPR_ENDARG.
+
+ * parse.y (dsym): ditto.
+
+ * parse.y (parser_yylex): strings should be followed by
+ EXPR_ENDARG.
+
+ * parse.y (parser_yylex): ditto for numbers.
+
+ * parse.y (parser_yylex): EXPR_ENDARG after ']' and '}'.
+
+Thu Apr 19 17:46:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * lib/optparse.rb: fix to override conv proc.
+
+Wed Apr 18 10:41:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod): exponent is radix 10. [ruby-talk:248272]
+
+Wed Apr 18 02:50:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * yarvcore.c (th_init2): push initial blockptr value for
+ rb_block_given_p() outside ruby_exec(). [ruby-core:10923]
+
+Wed Apr 18 02:30:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LDFLAGS): prepend -L. instead appending it to
+ XLDFLAGS. [ruby-core:10933]
+
+ * configure.in (Makefile): remove $U for automake from MISSING.
+ [ruby-talk:248171]
+
+Mon Apr 16 22:56:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/pty/expect_sample.rb: avoid symbolic link representation for
+ expect. a patch from Kazuhiro NISHIYAMA <zn at mbf.nifty.com>.
+ [ruby-dev:30714]
+
+Mon Apr 16 22:51:11 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample: replace TRUE, FALSE with true, false respectively.
+ a patch from Kazuhiro NISHIYAMA <zn at mbf.nifty.com>.
+ [ruby-dev:30713]
+
+Mon Apr 16 17:08:02 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (make_switch): do not clobber converter if pattern
+ has no convert method. reported by sheepman in [ruby-dev:30709].
+
+Mon Apr 16 16:49:32 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_seek): consistent behavior with
+ IO#seek. patch by sheepman in [ruby-dev:30710].
+
+Mon Apr 16 16:34:08 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): should set command_start after block
+ starting "do"s and braces. [ruby-core:10916]
+
+Mon Apr 16 10:51:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_each_with_index): each_with_index to forward
+ arguments to each. [ruby-core:10921]
+
+Mon Apr 16 10:43:10 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_arg): should allow to specify 24:00.
+ [ruby-core:10915]
+
+Sun Apr 15 09:12:54 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: added some zone names.
+
+ * lib/date/format.rb (_parse): now interprets doted numerical
+ dates as a big endian (except dd.mm.yyyy).
+
+Thu Apr 12 17:13:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (mutex_try_lock): check and set owner thread.
+
+ * thread_pthread.ci: fix to show error code in error message.
+
+Thu Apr 12 17:11:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_rescue2): restore cfp ([ruby-dev:30582]).
+
+Thu Apr 12 16:06:48 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_protect): restore cfp ([ruby-dev:30671]).
+
+Thu Apr 12 16:04:31 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): check node->nd_state == 1, not !0.
+
+Wed Apr 11 16:35:16 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch] (rb_w32_enter_critical, rb_w32_leave_critical): no
+ need to reject reentrance. removed.
+
+ * rubysig.h (RUBY_CRITICAL): follow above changes.
+
+ * rubysig.h (TRAP_BEG, TRAP_END): no need to save errno.
+
+Tue Apr 10 17:02:17 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_fclose, rb_w32_close): need to save errno
+ before calling original fclose()/close().
+
+Tue Apr 10 16:14:22 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.ci (w32_wait_events): check whether interrupt_event is
+ valid handle or not.
+
+ * thread_win32.ci (native_thread_destroy): clear interrupt_event when
+ close it.
+
+Tue Apr 10 15:53:17 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_pthread.ci (native_thread_create): initialize sleep_cond.
+ fixed: [ruby-dev:30675]
+
+Mon Apr 9 18:48:57 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (do_select): ubf_select() is not necessary. interrupt is
+ checked in the loop.
+
+Mon Apr 9 18:27:26 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (do_select): use ubf_select() as UBF on windows.
+
+ * win32/win32.c (do_select): shouldn't call catch_interrupt() here.
+ fixed: [ruby-dev:30674], reported by wanabe.
+
+Mon Apr 9 09:24:32 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (disconnect): call shutdown for
+ SSLSocket. Thanks, Technorama Ltd.
+
+Sun Apr 8 13:28:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (defined_expr): test arguments of NODE_CALL and so
+ on as well as NODE_ATTRASGN. [ruby-core:10886]
+
+Fri Apr 6 10:56:29 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_key_get_group): get rid of
+ warning. we are aware of it.
+
+Fri Apr 6 04:00:24 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_{bn,x509{attr,cert,name,store}}.c:
+ Add documentation.
+
+Thu Apr 5 17:59:19 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (defined_expr): support for assignment.
+ [ruby-core:10867]
+
+ * compile.h (ADD_CATCH_ENTRY): removed temporary variable.
+
+Thu Apr 5 15:13:34 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_alloc): should
+ return value.
+
+Thu Apr 5 14:58:49 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_pkcs5.c: New module.
+
+ * ext/openssl/ossl_{cipher,digest,pkcs7,pkcs12}.c:
+ Remove redundant module namespace.
+
+ * ext/openssl/lib/openssl/{cipher,digest}.rb
+ Add backwards compatible classes for rearranged classes.
+
+ * ext/openssl/ossl_{pkcs7,pkcs12}.c: Add documentation.
+
+Thu Apr 5 00:42:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_notimplement), io.c (pipe_open): removed definite
+ articles and UNIX manual section from messages. [ruby-dev:30690]
+
+Wed Apr 4 17:09:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): refined the message of NotImplementedError.
+ [ruby-dev:30685]
+
+Wed Apr 4 12:29:02 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * error.c (rb_notimplement): should show the name of this func,
+ not callee.
+
+Wed Apr 4 10:18:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (popen_exec): should not close close-on-exec FDs.
+ [ruby-dev:30679]
+
+ * io.c (pipe_open): raise NotImplementedError for command "-" on
+ platforms where fork(2) is not available. [ruby-dev:30681]
+
+Tue Apr 4 04:17:18 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_ssl.c: Add documentation.
+
+Tue Apr 3 16:22:24 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: check for functions added in 1.9.
+
+ * ext/openssl/ruby_missing.h: check per features instead by
+ checking version code. [ruby-core:10845]
+
+Tue Apr 3 16:02:44 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_bn.c: More documentation.
+
+ * ext/openssl/lib/ossl_{pkey,pkey_ec}.[ch]: Add elliptic curves.
+
+Tue Apr 3 15:50:41 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (s_recv, s_recvfrom): some systems (such as
+ windows) doesn't set fromlen if the socket is connection-oriented.
+ reported by Bram Whillock in [ruby-core:10512] [ruby-Bugs#9061]
+
+Tue Apr 3 09:36:55 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ruby_missing.h: need to include version.h to check
+ RUBY_VERSION_CODE.
+
+Mon Apr 3 07:10:12 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_{ssl.[ch],ssl_session.c},
+ ext/openssl/lib/openssl/lib/openssl/ssl.rb:
+ New SSL::Session class. Add session cb's, getter/setters,
+ config, and statistics methods.
+
+Mon Apr 3 04:00:23 2007 Technorama Ltd. <oss-ruby@technorama.net>
+
+ * ext/openssl/{ossl.[ch],ossl_pkey.c} Add documentation.
+
+ * ext/openssl/ossl_hmac.c Add reset method.
+
+ * ext/openssl/ossl_cipher.c (Cipher#update) Take additional
+ buffer argument.
+
+ * ext/openssl/{ossl_bio.c,ossl_ssl.c,ruby_missing.h}
+ compatibility with 1.8.
+
+Mon Apr 2 21:55:12 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (throw), thread.c, yarvcore.h (throwed_errinfo): fixed
+ typo.
+
+Fri Mar 30 11:46:51 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_cmdvector): fixed buffer size. reported by
+ wanabe [ruby-dev:30672]
+
+ * win32/win32.c (init_env, insert, rb_w32_get_environ): use strdup
+ instead of malloc + strlcpy. suggested by nobu [ruby-dev:30673]
+
+Fri Mar 30 02:29:04 2007 Technorama <oss-ruby@technorama.net>
+
+ * ext/openssl/ossl_{bn,cipher,digest,hmac,rand,pkey_{dh,dsa,rsa}}.c:
+ Add Documentation for various methods.
+
+ * ext/openssl/lib/openssl/cipher.rb: Ditto
+
+ * ext/openssl/ossl_bn.c: add lshift! and rshift! methods.
+
+ * ext/openssl/ossl_digest.c: GetDigestPtr() also accept a string.
+
+Fri Mar 23 11:28:24 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (init_env, insert, cmdglob, rb_w32_cmdvector,
+ rb_w32_opendir, rb_w32_readdir, rb_w32_strerror, rb_w32_stati64,
+ rb_w32_get_environ): use strlcpy() and strlcat().
+
+ * win32/win32.c (rb_w32_opendir): use realloc() instead of xrealloc().
+
+ * win32/win32.c (rb_w32_closedir): check NULL before free pointers.
+
+Fri Mar 23 00:24:52 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/shell: commit miss(support for ruby 1.9(YARV) thread model).
+
+Thu Mar 22 13:32:17 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (LIBS): remove an unnecessary library.
+
+Thu Mar 22 10:27:58 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_bignum.rb (test_to_s): add tests for Bignum#to_s.
+
+Wed Mar 21 20:38:06 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * marshal.c (w_short, w_long, w_object): get rid of VC++ warnings.
+
+Wed Mar 21 20:05:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, parse.y, eval.c, intern.h, iseq.c, lex.c, node.h,
+ proc.c, vm.c, vm_macro.def, vm_macro.def, yarvcore.c, yarvcore.h,
+ debug.c, debug.h: merge half-baked-1.9 changes. The biggest change
+ is to change node structure around NODE_SCOPE, NODE_ARGS. Every
+ scope (method/class/block) has own NODE_SCOPE node and NODE_ARGS
+ represents more details of arguments information. I'll write a
+ document about detail of node structure.
+
+Wed Mar 21 17:04:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): round up for the most significant digit.
+ [ruby-core:10686]
+
+Tue Mar 21 08:20:00 2007 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * test/testunit/collector/test_dir.rb: Fixed test/unit tests that
+ were breaking due to Module#public_instance_methods now
+ returning a Symbol instead of a String.
+
+ * test/testunit/collector/test_objectspace.rb: Ditto.
+
+Tue Mar 20 22:54:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_extended): erroneous check condition when dump
+ method is defined. [ruby-core:10646]
+
+Tue Mar 20 21:36:47 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/shell.rb, lib/shell: support for ruby 1.9(YARV) thread model.
+
+Tue Mar 20 16:36:08 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * distruby.rb: Add zip generation.
+
+Tue Mar 20 16:20:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_callee_name): add __method__ and __callee__ again.
+ __callee__ need to rework to adopt YARV. [ruby-core:10671]
+
+Tue Mar 20 11:09:00 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Revise rdoc.
+
+ * lib/set.rb (Set#freeze, Set#taint, Set#untaint): Implement
+ Set#freeze, Set#taint, and Set#untaint; requested by: Dan
+ Hutchings <dan AT moltoagitato.com> in [ruby-bugs:PR#9359].
+
+Tue Mar 20 09:13:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork): flush stdouts always before fork(2).
+ fixed: [ruby-dev:30612]
+
+Tue Mar 20 01:38:48 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (thread_start_func_2): store the result of first_func
+ as well as first_proc.
+
+ * thread.c (thread_create_core): block is not used if first_func
+ is given.
+
+Mon Mar 19 16:58:52 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * missing/{strlcat,strlcpy}.c, missing.h: new functions.
+
+ * LEGAL: add copyright notice about above files.
+
+ * configure.in: check whether strlcat and strlcpy are exist or not.
+
+ * {bcc32,win32,wince}/Makefile.sub: use above files.
+
+Mon Mar 19 14:12:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/matrix.rb (Matrix::inverse_from): adding partial pivoting to
+ the Gauss-Jordan algorithm, making it stable. a patch from
+ Peter Vanbroekhoven. [ruby-core:10641]
+
+Mon Mar 19 12:13:36 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regparse.c, etc.: K&R to ANSI code cleanup patch from Stefan
+ Huehner <stefan at huehner.org>. [ruby-core:10543]
+
+Mon Mar 19 11:27:13 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb (rbuf_read): extend buffer size for speed.
+
+Sun Mar 18 08:31:51 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/dir.h, win32/win32.c (rb_w32_opendir, rb_w32_readdir,
+ rb_w32_closedir): get rid of possible buffer-overflows.
+
+Sat Mar 17 19:10:39 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss, test/rss:
+ - supported Atom.
+ - bumped version 0.1.6 to 0.1.7.
+ * sample/rss/convert.rb: added new sample.
+
+Fri Mar 16 22:32:20 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: change default verification mode from
+ VERIFY_PEER to VERIFY_NONE because most POPS server does not have
+ true certification.
+
+Fri Mar 16 22:19:24 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE#ole_activex_initialize,
+ a little bit supporting ActiveX control. [ruby-talk:241188]
+
+Fri Mar 16 22:16:58 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: merge Ruby-SSPI patch contributed by Justin
+ Bailey.
+
+ * ext/Win32API/lib/win32/sspi.rb: new file.
+
+Wed Mar 14 12:30:00 2007 Shigeo Kobayashi <shigeo@tinyforest.jp>
+
+ * ext/bigdecimal/bigdecimal.c: BigDecimal("-.31") is now
+ treated as ("-0.31") not as ("0.31").
+
+Tue Mar 13 19:04:30 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/sync.rb: support for ruby 1.9(YARV) thread model.
+
+Tue Mar 13 09:25:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (clear-installed-list): separated from install-prereq.
+
+Tue Mar 13 07:23:20 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb (mon_try_enter): call @mon_muetx.try_lock.
+ Thanks, Keiju ISHITSUKA. [ruby-dev:30507]
+
+Tue Mar 13 02:42:58 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/cgi.rb (CGI::header): IIS >= 5.0 does not need the nph
+ assumption any more; submitted by MIYASAKA Masaru <alkaid AT
+ coral.ocn.ne.jp> in [ruby-dev:30537].
+
+Mon Mar 12 10:53:28 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/openssl/ossl_asn1.c (Init_ossl_asn1): Let rdoc know about
+ externally defined modules; submitted by Technorama
+ Ltd. <oss-ruby AT technorama.net> in [ruby-bugs:PR#4704].
+
+ * ext/openssl/ossl_bn.c (Init_ossl_bn): Ditto.
+
+ * ext/openssl/ossl_cipher.c (Init_ossl_cipher): Ditto.
+
+ * ext/openssl/ossl_digest.c (Init_ossl_digest): Ditto.
+
+ * ext/openssl/ossl_hmac.c (Init_ossl_hmac): Ditto.
+
+ * ext/openssl/ossl_pkey.c (Init_ossl_pkey): Ditto.
+
+ * ext/openssl/ossl_pkey_dh.c (Init_ossl_dh): Ditto.
+
+ * ext/openssl/ossl_pkey_dsa.c (Init_ossl_dsa): Ditto.
+
+ * ext/openssl/ossl_pkey_rsa.c (Init_ossl_rsa): Ditto.
+
+ * ext/openssl/ossl_rand.c (Init_ossl_rand): Ditto.
+
+ * ext/openssl/ossl_ssl.c (Init_ossl_ssl): Ditto.
+
+Sun Mar 11 18:42:01 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-mode.el (ruby-block-end-re): Support for the
+ experimental ';;' terminator had been dropped.
+
+Sun Mar 11 05:45:46 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/README, misc/rdebug.el: Add rdebug.el, Emacs ruby-debug
+ interface based on rubydb3x.el; submitted by Martin Nordholts
+ <enselic AT gmail.com> in [ruby-bugs:PR#9023].
+
+Sat Mar 10 07:20:28 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_TYPELIB#library_name,
+ WIN32OLE_TYPELIB#visible?.
+
+ * test/win32ole/test_win32ole_typelib.rb: ditto.
+
+Thu Mar 8 09:17:59 2007 Minero Aoki <aamine@loveruby.net>
+
+ * compile.c: iseq_compile -> rb_iseq_compile.
+
+ * iseq.c: ditto.
+
+ * intern.h: provide function prototype of Init_jump.
+
+ * eval_jump.h (Init_jump): declare function type.
+
+ * thread.c: platform-dependent functions should be surrounded by #ifdef.
+
+ * iseq.c (iseq_data_to_ary): remove unused variable.
+
+ * compile.c (set_arguments): ditto.
+
+ * thread.c (set_unblock_function): ditto.
+
+ * thread_pthread.ci: reduce printf warning.
+
+ * vm_dump.c: ditto.
+
+Tue Mar 6 16:35:04 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/shell/process-controller.rb: fix thread synchronization problem for [ruby-dev:30477].
+
+Tue Mar 6 11:53:25 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/irbtkw.rbw: fails to exit process.
+
+Tue Mar 6 10:23:09 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: added --pure (turned on by default) and --debugger
+ options.
+
+Mon Mar 5 09:19:33 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/timeout.rb (Timeout.timeout): should return the block value
+ always.
+
+ * lib/timeout.rb (Timeout.timeout): should yield sec argument
+ always.
+
+ * lib/timeout.rb (Timeout.timeout): fix document.
+
+Mon Mar 5 09:16:40 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: support automatic STARTTLS.
+
+ * lib/net/smtp.rb: check server advertisement.
+
+ * lib/net/smtp.rb: introduce new class SMTP::Response.
+
+ * lib/net/smtp.rb (getok): should not use sprintf.
+
+ * lib/net/smtp.rb (get_response): ditto.
+
+ * lib/net/protocol.rb: reduce syntax warning on 1.9.
+
+Mon Mar 5 07:13:28 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: reconstruct SMTPS/STARTTLS interface. New
+ interface is incompatible from current 1.9 interface at all.
+
+ * lib/net/smtp.rb: All SSL-related class methods are removed; use
+ instance methods instead.
+
+ * lib/net/smtp.rb: rename methods: *ssl -> *tls (with alias
+ "ssl").
+
+ * lib/net/smtp.rb: rename methods: *tls -> *starttls.
+
+Mon Mar 5 01:36:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex), win32/win32.c (rb_w32_utime): fixed
+ indentation broken at YARV merger.
+
+Sun Mar 4 23:41:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_uid, rb_stat_gid, eaccess): use rb_uid_t and
+ rb_gid_t instead of int.
+
+ * file.c (rb_stat_s_utime): fixed a commit miss for the platforms
+ where utimes() does not exist.
+
+ * lib/fileutils.rb (touch): ditto.
+
+Sun Mar 4 14:46:56 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * util.c (push_element): should return a int value.
+
+Sun Mar 4 01:01:25 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#^, Set#&): Correct documentation. Those methods
+ return sets, not arrays; noted by Oliver Frank Wittich <nietz AT
+ mangabrain.de>.
+
+Sat Mar 3 22:54:33 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (touch): last #touch change causes error when
+ :mtime option was not given.
+
+Sat Mar 3 22:51:29 2007 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mv): could not move directory between
+ different file systems. [ruby-dev:30411]
+
+Sat Mar 3 22:37:02 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_utime): allow nil to set the current time.
+
+ * lib/fileutils.rb (touch): ditto, and added :mtime and :nocreate
+ options. fixed: [ruby-talk:219037]
+
+Sat Mar 3 15:52:26 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * object.c (instance_variable_get): Restore rdoc markups lost in
+ the last commit.
+
+Fri Mar 2 21:17:14 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (get_ptr_of_variant, ole_set_safe_array,
+ ole_val2ptr_variant, ole_val2olevariantdata, ole_variant2val,
+ ): fix some bugs of WIN32OLE_VARIANT.new when variant type is
+ VT_ARRAY|VT_BSTR or VT_BYREF.
+
+ * ext/win32ole/win32ole.c (folevariant_s_array, folevariant_initialize):
+ WIN32OLE_VARIANT#[], WIN32OLE_VARIANT#[]=, WIN32OLE_VARIANT#value=
+ is defined as instance method of WIN32OLE_VARIANT.
+
+ * test/win32ole/test_win32ole_variant.rb: add some test for
+ VT_ARRAY, VT_BYREF variant type.
+
+Fri Mar 2 07:58:24 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_ivar_set): RDoc updated according to a
+ suggestion from Brian Candler <B.Candler AT pobox.com>.
+ [ruby-core:10469]
+
+Thu Mar 1 21:38:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt, arg): should not omit lhs of OP_ASGN1 even if
+ empty. [ruby-dev:30455]
+
+Thu Mar 1 02:55:25 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (get_digest_base_metadata): Allow inheriting
+ Digest::Base subclasses, which was unintentionally made
+ impossible while restructuring Digest classes.
+
+Thu Mar 1 02:05:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb (patchlevel): read from version.h.
+
+Wed Feb 28 21:15:00 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (ac_cv_func_fcntl): fcntl support for MinGW.
+
+ * missing/flock.c: workaround for MinGW.
+
+Wed Feb 28 20:51:32 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * pack.c (pack_unpack): properly ignore non-base64 octets such as
+ UTF-8 encoded BOMs; submitted by SOUMA Yutaka <holon@radastery.jp>
+ to fix [ruby-core:10437]
+
+Wed Feb 28 18:31:51 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: no need to check unistd.h and sys/time.h.
+ they are already checked at configure.
+ reported by KOBAYASHI Yasuhiro [ruby-list:43225]
+
+Wed Feb 28 18:23:43 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb ($DEFLIBPATH): default library paths ($(topdir), etc)
+ should be the first elements of library paths list.
+ reported by KOBAYASHI Yasuhiro [ruby-list:43225]
+
+Wed Feb 28 10:33:58 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in, */Makefile.sub (THREAD_MODEL): system
+ specific thread model.
+
+ * compile.h, regint.h, vm.h, array.c: removed unnecessary #include.
+
+Wed Feb 28 04:03:03 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (take_i): small cosmetic / documentation patch from
+ Tadashi Saito <shiba AT mail2.accsnet.ne.jp>. [ruby-dev:30446]
+
+Wed Feb 28 01:20:18 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/{dbm,gdbm}/test_{dbm,gdbm}.rb: shouldn't use host_os. use
+ target_os instead. reported by KOBAYASHI Yasuhiro [ruby-list:43225]
+
+Wed Feb 28 00:08:11 2007 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
+
+ * mkconfig.rb (RbConfig): add CONFIG['PATCHLEVEL']
+
+ * common.mk: new target dist
+
+ * distruby.rb: new file
+
+Tue Feb 27 22:18:45 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (--enable-auto-image-base): avoid the necessity to
+ rebase the shared libs as much as possible;
+ submitted by Corinna Vinschen <spam at vinschen.de> in
+ [ruby-talk:240964].
+
+Tue Feb 27 21:36:47 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * util.c (__crt0_glob_function): use ruby_glob() instead of rb_globi().
+
+Tue Feb 27 21:33:04 2007 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (ac_cv_func_setrlimit): workaround for djgpp.
+
+Tue Feb 27 20:35:28 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (error.c, process.c): depend on yarvcore.h and rubysig.h.
+
+Tue Feb 27 19:26:31 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/nkf/nkf.c (rb_str_resize, rb_nkf_kconv, rb_nkf_guess1,
+ rb_nkf_guess2): Silence warnings regarding char * vs. unsigned
+ char * mismatch; submitted by Lyle Johnson
+ <lyle.johnson@gmail.com> in [ruby-core:10416].
+
+Tue Feb 27 19:15:01 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/base64.rb (Base64::b64encode): Fix documentation; submitted
+ by David Symonds <dsymonds@gmail.com> in [ruby-core:10432].
+
+Tue Feb 27 18:59:42 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_load): Silence warnings
+ regarding char * vs. unsigned char * mismatch; submitted by Lyle
+ Johnson <lyle.johnson@gmail.com> in [ruby-core:10416].
+
+ * ext/digest/sha1/sha1ossl.c (SHA1_Finish): Ditto.
+
+ * ext/digest/rmd160/rmd160ossl.c (RMD160_Finish): Ditto.
+
+ * ext/digest/digest.c (rb_digest_base_finish,
+ rb_digest_base_update): Ditto.
+
+Tue Feb 27 18:12:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_take): new method. [ruby-dev:30407]
+
+ * enum.c (enum_drop): ditto.
+
+Tue Feb 27 07:47:24 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, vm.h: rename th_invoke_yield() to th_yield().
+
+ * blockinlining.c: ditto.
+
+ * eval.c: ditto.
+
+ * vm.c, insns.def: rename th_invoke_yield_cfunc()
+ to th_yield_with_cfunc().
+
+ * yarvcore.h, yarvcore.c: rename theYarvVM to ruby_current_vm and
+ yarvCurrentThread to ruby_current_thread. remove yarvVMArray.
+
+Tue Feb 27 00:45:23 2007 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_optimization.rb: restore method before calling
+ assert_equal.
+
+Mon Feb 26 00:58:39 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h: add rb_thread_t#top_wrapper, top_self.
+
+ * eval_load.c (rb_load): support eval in wrapper module
+ (load(file, true)).
+
+ * eval.c: ditto.
+
+ * eval_jump.h: ditto.
+
+ * iseq.c: ditto.
+
+ * vm.c: ditto.
+
+ * yarvcore.c: ditto.
+
+ * insns.def: add a empty line.
+
+Mon Feb 26 00:54:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: change "gdb" rule. You can debug miniruby with
+ $(srcdir)/test.rb on gdb by this rule (type "make gdb").
+ If you write break points to "breakpoints.gdb" on $srcdir,
+ gdb runs with this file.
+
+Sun Feb 25 11:46:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * win32/Makefile.sub: enable -Zi (debug) option.
+
+Sun Feb 25 11:38:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.h: define RUBY_VM macro and remove NATIVETHREAD* macros.
+
+ * intern.h: ditto.
+
+ * signal.c (posix_signal): remove unused function
+ posix_nativethread_signal().
+
+Sun Feb 25 11:31:13 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_run): fix to ANSI style.
+
+Sun Feb 25 11:09:16 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: show source code in error message.
+
+Sun Feb 25 09:39:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h:
+ rename:
+ rb_iseq_t#file_name -> filename
+ rb_iseq_t#local_tbl -> local_table
+ add:
+ rb_iseq_t#local_table_size
+
+ * compile.c: separate local_table_size and local_size
+ (local variable size)
+
+ * blockinlining.c: apply above rename.
+
+ * compile.h: ditto.
+
+ * eval.c: ditto.
+
+ * iseq.c: ditto.
+
+ * proc.c: ditto.
+
+ * vm.c: ditto.
+
+ * vm_dump.c: ditto.
+
+Sun Feb 25 10:27:17 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: add lib/ to load path.
+
+Sat Feb 25 10:16:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * rubyio.h (HAVE_RB_IO_T): macro to tell if rb_io_t is defined.
+
+Sat Feb 24 19:39:16 2007 Minero Aoki <aamine@loveruby.net>
+
+ * common.mk: new target "btest", to run bootstraptests.
+
+Sat Feb 24 19:30:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c, gc.c, io.c, ruby.h, rubyio.h, win32/win32.h (rb_io_t):
+ renamed from OpenFile.
+
+ * ext/dl/cptr.c, ext/io/wait/wait.c, ext/openssl/ossl.h,
+ ext/openssl/ossl_bio.c, ext/openssl/ossl_ssl.c, ext/pty/pty.c,
+ ext/readline/readline.c, ext/socket/socket.c: ditto.
+
+Sat Feb 24 19:28:23 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: new option -v,--verbose.
+
+Sat Feb 24 18:55:50 2007 Minero Aoki <aamine@loveruby.net>
+
+ * yarvtest/test_method.rb: removed (merged to bootstraptest).
+
+ * yarvtest/test_class.rb: ditto.
+
+Sat Feb 24 18:44:39 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/test_class.rb: new file.
+
+ * bootstraptest/test_method.rb: add tests.
+
+Sat Feb 24 18:44:30 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (rb_thread_blocking_region): add prototype.
+
+ * file.c (rb_thread_flock, rb_file_flock): use UBF feature.
+
+ * process.c (rb_waitpid_blocking, rb_waitpid): use UBF feature.
+
+ * thread.c (rb_thread_debug): added runtime debugging flag.
+
+ * thread.c (BLOCKING_REGION): restore previous UBF.
+
+ * thread.c (rb_thread_blocking_region): default UBF to interrupt
+ in system dependent way by RB_UBF_DFL.
+ + ubf_select() on posix system
+ + ubf_handle() on Win32
+ + none on cygwin
+
+ * thread_win32.ci (rb_w32_wait_events_blocking): blocking version.
+
+ * win32/win32.c (waitpid): use rb_w32_wait_events_blocking().
+
+Sat Feb 24 17:45:48 2007 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (f_arg, opt_f_block_arg): ripper should export VALUE.
+
+Sat Feb 24 16:52:55 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: fix syntax error.
+
+Sat Feb 24 16:51:09 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest/runner.rb: new option --help.
+
+Sat Feb 24 16:47:33 2007 Minero Aoki <aamine@loveruby.net>
+
+ * bootstraptest: new test suite.
+
+ * bootstraptest/runner.rb: new file.
+
+ * bootstraptest/test_literal.rb: new file.
+
+ * bootstraptest/test_method.rb: new file.
+
+Sat Feb 24 16:29:15 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (StartSocket): remove unnecessary code.
+
+Sat Feb 24 16:04:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (struct local_vars): remove unused nofree member from
+ struct.
+
+ * parse.y (parser_free): ditto.
+
+Sat Feb 24 15:57:19 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/thread.rb (ConditionVariable#broadcast): use Mutex
+ instead of Thread.exclusive.
+
+ * lib/monitor.rb (MonitorMixin#mon_exit): unset @mon_owner
+ before calling Mutex#unlock.
+
+Sat Feb 24 15:51:45 2007 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (program): remove useless assignment to reduce warning.
+
+Sat Feb 24 15:41:51 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (lambda): remove unused clause from the rule to stop
+ warning.
+
+Sat Feb 24 15:41:22 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/thread.rb: do not redefine Mutex#synchronize.
+
+Sat Feb 24 15:14:02 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb: rewritten using Mutex/ConditionVariable.
+
+Sat Feb 24 13:25:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * lib/soap/mapping/factory.rb: catch up with spec changes (return
+ Symbols instead of Strings).
+
+ * lib/soap/mapping/mapping.rb: ditto.
+
+Sat Feb 24 10:49:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y, node.h, compile.c: change node tree structure. a purpose
+ of this change is to unify argument structure of method and block.
+ this change prohibits duplicate block parameter name.
+ new argument information:
+ NODE_ARGS [m: int, o: NODE_OPT_ARG, ->]
+ NODE_ARGS_AUX [r: ID, b: ID, ->]
+ NODE_ARGS_AUX [Pst: id, Plen: int, init: NODE*]
+ optarg information:
+ NODE_OPT_ARGS [idx, expr, ->]
+
+ * vm_macro.def: ditto.
+
+ * gc.c: ditto.
+
+ * iseq.c: ditto.
+
+ * compile.h: fix debug function name.
+
+ * test/ripper/test_scanner_events.rb: |_,_,foo| -> |_1,_2,foo|
+
+ * test/ruby/test_lambda.rb: disable test temporarily.
+
+Sat Feb 24 10:46:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/testunit/test_testcase.rb: catch up with current instance
+ variable spec.
+
+Sat Feb 24 10:32:59 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: change vm_macro.def rule.
+
+Sat Feb 24 10:38:05 2007 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/cparse.c (cparse_params_mark): remove useless
+ rb_gc_mark. Thanks Tomoyuki Chikanaga. [ruby-dev:30405]
+
+Sat Feb 24 07:31:35 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_VARIANT.array,
+ WIN32OLE_VARIANT#value=, refactoring.
+
+ * test/win32ole/test_win32ole_variant.rb: add some test for
+ WIN32OLE_VARIANT.array, WIN32OLE_VARIANT#value=.
+
+Fri Feb 23 18:37:55 2007 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_yield.rb: new test.
+
+ * yarvtest/test_yield.rb: removed (moved to test_yield.rb).
+
+Fri Feb 23 18:27:17 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (rb_thread_polling): check interrupts here.
+
+ * thread_win32.ci (w32_wait_events): rename from w32_wait_event(), and
+ now receive multiple event handles.
+
+ * win32/win32.c (wait_events, rb_w32_main_context): removed.
+
+ * thread_win32.ci (rb_w32_wait_events): new function.
+
+ * thread_win32.ci, win32/win32.c (rb_w32_sleep, rb_w32_Sleep): move
+ from win32/win32.c to thread_win32.ci, and use w32_wait_events().
+
+Fri Feb 23 18:13:22 2007 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_optimization.rb: new test (merges test_opts.rb).
+
+ * yarvtest/test_opts.rb: removed.
+
+Fri Feb 23 16:59:39 2007 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_assignment.rb: merge yarvtest/test_massign.
+
+ * yarvtest/test_massign.rb: removed (merged to
+ test_assignment.rb).
+
+Fri Feb 23 15:58:20 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * signal.c (sighandler): need to re-install sighandler on some
+ platforms.
+
+Fri Feb 23 15:05:57 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (set_pioinfo_extra): simplified.
+
+Fri Feb 23 14:23:20 2007 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_literal.rb: new test.
+
+Fri Feb 23 12:40:12 2007 James Edward Gray II <james@grayproductions.net>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client::do_rpc): Make the
+ Content-Length parameter optional for responses in
+ xmlrpc/client.rb; suggested by Daniel Berger
+ <Daniel.Berger@qwest.com> and approved by the maintainer.
+
+ * lib/xmlrpc/create.rb (XMLRPC::Create::conv2value): Add DateTime
+ support to xmlrpc; approved by the maintainer.
+
+Fri Feb 23 12:24:46 2007 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (lambda): add ripper event. This fixes bus error on
+ "make test-all".
+
+ * ext/ripper/extconf.rb: do not stop build.
+
+Fri Feb 23 12:16:05 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: remove dyna_check_gen() prototype.
+
+Fri Feb 23 11:41:21 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y, compile.c, gc.c, insns.def, intern.h, iseq.c, node.h,
+ object.c, string.c, variable.c, vm_macro.def: revert private
+ instance variable feature, which is postponed until next major
+ release.
+
+ * marshal.c: TYPE_SYMBOL2 removed; MARSHAL_MINOR reverted back to
+ 8th version.
+
+Fri Feb 23 10:53:21 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * thread_pthread.ci (native_mutex_lock): do not call
+ pthread_mutex_trylock().
+
+Fri Feb 23 10:31:16 2007 Minero Aoki <aamine@loveruby.net>
+
+ * dln.c: use dlopen on Mac OS X 10.3 or later.
+
+Fri Feb 23 10:03:49 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_ord): need not to check string length; ord
+ returns a codepoint for the first character in the string.
+
+Wed Feb 21 22:29:45 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * numeric.c (fix_equal): A bit more optimization.
+
+Wed Feb 21 17:40:37 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_equal): remove FIX2LONG() to optimize. suggested
+ in http://t-a-w.blogspot.com/2007/02/making-ruby-faster.html.
+ [ruby-talk:240223]
+
+ * numeric.c (fix_cmp): ditto.
+
+Wed Feb 21 09:14:04 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_load.c (rb_require_safe): should restore safe level.
+
+Tue Feb 20 21:19:29 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (installed_code_page_proc,
+ ole_variant2val): small refactoring.
+
+Tue Feb 20 15:11:42 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm.c, yarvcore.h: move definition of rb_call_super() to
+ vm.c from eval.c. change th_call_super() to static function.
+
+Tue Feb 20 15:08:25 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/io/nonblock/test_flush.rb: YARV doesn't raise any errors if
+ another thread close IO object which current thread is blocking with.
+
+Tue Feb 20 15:03:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (do_select, rb_thread_wait_fd_rw): raise sys error if
+ errno is not 0 and EBADF.
+
+Mon Feb 19 22:15:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_REPLACE_TYPE): cache convertible type info.
+
+ * intern.h (rb_detach_process): use rb_pid_t instead of pid_t.
+
+ * ruby.h (PIDT2NUM, NUM2PIDT, UIDT2NUM, NUM2UIDT, GIDT2NUM, NUM2GIDT):
+ defaulted to conversion using long.
+
+Mon Feb 19 17:14:28 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (unix_peeraddr): wrong syscall name in error
+ message for #peeraddr. a patch from Sam Roberts
+ <sroberts at uniserve.com>. [ruby-core:10366]
+
+Sun Feb 18 22:56:07 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getgrgid): missed to replace a macro.
+
+Sun Feb 18 19:33:00 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: updated based on date2 4.0.3.
+
+Sun Feb 18 13:11:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (pid_t, uid_t, gid_t): check if defined.
+
+ * intern.h, process.c, rubyio.h, ext/etc/etc.c, ext/pty/pty.c: use
+ rb_{pid,uid,gid}_t instead of plain int. [ruby-dev:30376]
+
+ * ext/etc/extconf.rb (PIDT2NUM, NUM2PIDT, UIDT2NUM, NUM2UIDT, GIDT2NUM,
+ NUM2GIDT): moved to configure.in.
+
+Fri Feb 16 21:34:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * object.c (rb_obj_ivar_set/get/defined): fix to check :@_v/C id.
+
+ * test/testunit/test_testcase.rb: fix to use instance_variable_get()
+ to access @_result.
+
+Fri Feb 16 20:59:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * intern.h: add a prototype of rb_sym_to_s().
+
+Fri Feb 16 19:24:22 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (math_log): update document to mention second optional
+ argument for logarithm base.
+
+Fri Feb 16 19:19:21 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (mrhs): need to append by arg_append().
+ [ruby-talk:239385]
+
+Fri Feb 16 11:18:21 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/.document: Apply patch for irb, e2mmap and README by Hugh Sasse
+ <hgs at dmu.ac.uk> from [ruby-core:10135]
+
+ * lib/prettyprint.rb: Suppress RDoc for PrettyPrint test suite.
+
+Thu Feb 15 20:48:36 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (set_pioinfo_extra): new function for VC++8 SP1
+ workaround. [ruby-core:10259]
+
+ * win32/win32.c (NtInitialize): call above function.
+
+Thu Feb 15 16:25:54 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/uri/generic.rb (URI::Generic::userinfo): Considering how
+ `scheme://user:@...', `scheme://:password@...' and
+ `scheme://:@...' are parsed, an empty user name or password
+ should be allowed and represented as it is.
+
+Thu Feb 15 01:52:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.(c|h), yarvcore.(c|h) (yarvGlobalStateVersion): rename to
+ ruby_vm_global_state_version.
+
+Thu Feb 15 01:50:26 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/fileutils/test_fileutils.rb (check_singleton): fix to use
+ symbol instead of string.
+
+ * test/io/nonblock/test_flush.rb: enable tests.
+
+ * test/xmlrpc/test_webrick_server.rb: ditto.
+
+Thu Feb 15 01:43:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * lib/delegate.rb: catch up with class local variable (@_v) spec.
+
+ * lib/singleton.rb: ditto.
+
+Wed Feb 14 22:52:43 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_variant2val): VC++6 does not
+ support VT_I8, VT_UI8.
+
+Wed Feb 14 22:10:21 2007 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in: change stack limit to 2MB from 32MB.
+
+ * win32/Makefile.sub: ditto.
+
+Wed Feb 14 21:39:36 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest.rb (Digest::self.const_missing): Drop
+ autoloads for sha2 classes in favor of handling in
+ const_missing(), to work around a problem exposed on OS X.
+
+Wed Feb 14 21:19:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.ci (native_thread_create): adjust 4KB (page size)
+ alignment.
+
+Wed Feb 14 21:12:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.ci (CHECK_ERR): call rb_bug()
+ instead of printf() and exit().
+
+Wed Feb 14 16:48:56 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/date/format.rb (Date::Format::Bag::method_missing): need not
+ to use instance variables corresponding each method; use Hash
+ instead.
+
+Wed Feb 14 13:12:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (reg_operand): allow symbols to be operands for regular
+ expression matches.
+
+ * string.c (Init_String): allow Symbol#===.
+
+ * lib/date/format.rb (Date::Format::Bag::to_hash): string
+ added prefixes.
+
+Wed Feb 14 12:58:38 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (do_select): fix to iterate select().
+ on cygwin/mswin32, iterate in unblocking region.
+
+ * thread.c (rb_thread_select): don't iterate on this function.
+ (iterate in do_select).
+
+Wed Feb 14 11:39:18 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (set_unblock_function): fix function interface.
+
+Wed Feb 14 11:12:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_load.c, yarvcore.h: use rb_vm_t#loaded_features instead of
+ rb_features (global variable).
+
+ * yarvcore.c: mark rb_vm_t#loaded_features.
+
+Wed Feb 14 08:46:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compile.c (defined_expr): no longer distinguish ordinary local
+ variables and in-block local variables in defined? value.
+
+Wed Feb 14 03:14:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic::userinfo): should support
+ empty password. [ruby-core:10290]
+
+ * lib/uri/generic.rb (URI::Generic::set_password): password can be
+ cleared by nil. [ruby-core:10290]
+
+Wed Feb 14 03:10:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (struct local_vars): no need to warn out-of-scope
+ variables; remove dnames member from struct.
+
+Wed Feb 14 03:04:10 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: RVarmap no longer used as yytype; removed.
+
+ * parse.y (dyna_push_gen): no longer need return value.
+
+ * parse.y (dyna_pop_gen): no longer need argument.
+
+ * parse.y (local_push_gen): initialize nofree.
+
+Wed Feb 14 00:30:07 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (init_unixsock): path may contain NUL for
+ abstract unix sockets. [ruby-core:10288]
+
+Tue Feb 13 02:21:12 2007 Sam Roberts <sroberts@uniserve.com>
+
+ * io.c (rb_f_syscall): Fix buffer overflow with syscall
+ arguments. [ruby-bugs:PR#8541]
+
+Mon Feb 12 13:57:30 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_variant2val): support VT_I8, VT_UI8.
+
+Mon Feb 12 11:48:52 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/dublincore.rb, lib/rss/maker/dublincore.rb: dc_rightses
+ -> dc_rights_list. dc_rightses still exists for backward
+ compatibility. [ruby-core:8350]
+
+ * test/rss/test_maker_dc.rb: added tests for dc_rights_list.
+
+Sun Feb 11 22:40:17 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_ptrtype2val): ole_type, ole_type_detail
+ should not return "VARIANT,VARIANT".
+
+Sun Feb 11 22:11:05 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#initialize):
+ kept backward compatibility.
+
+Sun Feb 11 22:10:08 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::ListenerMixin#start_else_element): used
+ const_defined? instead of constants.include?.
+
+Sun Feb 11 18:47:14 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata):
+ WIN32OLE_VARIANT#new accepts nil when variant type is VT_ARRAY.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+ * ext/win32ole/win32ole.c: small refactoring.
+
+Sun Feb 11 07:42:25 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): Properly parse
+ a quoted-string in a Content-Disposition value.
+
+Sat Feb 10 20:21:29 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE#ole_query_interface.
+ thanks to Mikael Pahmp.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Sat Feb 10 17:46:52 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: targets which depend on yarvcore.h now depend on
+ rubysig.h too.
+
+ * yarvcore.h (rb_vm_t): use rb_atomic_t instead of int.
+
+Sat Feb 10 00:13:11 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fix typo (TkConfigMethod::__confinfo_cmd,
+ __conv_keyonly_opts).
+
+Fri Feb 9 12:33:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_win32.ci (w32_show_error_message): renamed to w32_error.
+ this function do rb_bug().
+
+ * thread_win32.ci (w32_set_event, w32_reset_event, w32_close_handle,
+ w32_resume_thread): added. fix to use these functions instead calling
+ win32api directly.
+
+ * thread_win32.ci (w32_create_thread): create suspend thread
+ (caller must call w32_resume_thread()).
+
+Fri Feb 9 11:03:40 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_readpartial.rb: tests are working on mswin32/cygwin.
+
+Fri Feb 9 05:08:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, thread_pthread.ci, thread_win32.ci (thread_start_func_1):
+ move cleanup function to thread_start_func_2().
+
+ * thread.c, thread_pthread.ci, thread_win32.ci:
+ add more destruct functions.
+ (native_thread_destroy() and native_mutex_destroy())
+
+ * thread_pthread.ci, thread_pthread.h: make native_mutex_* functions
+ (check error, etc), it's not macro any more.
+
+ * thread_win32.ci (thread_start_func_1): store some values before
+ running thread (to release these after running thread).
+
+ * thread_win32.ci (native_thread_create): fix spaces.
+
+Thu Feb 8 22:44:04 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_set_safe_array, ole_variant2val,
+ ole_val_ary2variant_ary): fix WIN32OLE_VARIANT.new bug when
+ 1st argument is empty array, and when 2nd argument is
+ VT_ARRAY|VT_BYREF.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+Thu Feb 8 22:39:09 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvtest/yarvtest.rb: check target command names.
+
+Thu Feb 8 22:31:45 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_clone.rb: fix to current spec
+ (Module should not be occur many times in ancestors).
+
+Thu Feb 8 22:26:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_string.rb: ("foo" == :foo) and ("foo" === :foo)
+ should be false.
+
+ * ChangeLog: fix last messages.
+
+Thu Feb 8 22:24:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_module.rb: fix to use Symbol instead of String.
+
+ * test/ruby/test_module.rb: remove space before argument parentheses.
+
+Thu Feb 8 22:02:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/marshaltestlib.rb: eval(sym) -> eval(sym.to_s)
+
+Thu Feb 8 21:35:16 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_propertyputref.rb (setup): fix typo.
+
+ * test/win32ole/test_win32ole_event.rb: should not use
+ InternetExplorer.gohome to test.
+
+Thu Feb 8 21:02:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (GVL_UNLOCK_RANGE): rename to BLOCKING_REGION().
+
+ * thread.c (rb_thread_run_parallel): rename to
+ rb_thread_blocking_region().
+
+Thu Feb 8 15:48:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, thread.c: fix to use pthread on cygwin.
+
+ * yarvcore.h, thread.c: move GVL_UNLOCK_BEGIN() and GVL_UNLOCK_END()
+ from yarvcore.h to thread.c.
+
+ * thread.c: change GVL_UNLOCK_RANGE() arguments
+ (adding ubf as 2nd argument).
+
+ * thread.c: fix to use polling in select on cygwin and mswin32.
+
+ * thread.c, thread_pthread.ci, thread_win32.ci, yarvcore.h:
+ rename:
+ * rb_thread_t#interrupt_function -> unblock_function
+ * rb_interrupt_function_t -> rb_unblock_function
+ * some interrupt function name -> ubf_*
+ * yarv_* -> *
+
+Thu Feb 8 16:08:02 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix to use RUNRUBY instead of BASERUBY if possible.
+
+ * common.mk ($(INSNS) rule): remove $(PROGRAM) first.
+
+Thu Feb 8 15:43:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * process.c: fix to use rb_status_line_set/get/clear().
+
+ * eval_intern.h: fix line break.
+
+Thu Feb 8 15:00:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c, error.c, eval.c, eval_error.h, eval_intern.h,
+ eval_jump.h, eval_load.c, eval_safe.h, gc.c, proc.c, signal.c,
+ thread.c, thread_pthread.ci, thread_win32.ci, vm.c, vm.h,
+ vm_dump.c, vm_evalbody.ci, yarvcore.c, yarvcore.h:
+ fix typo (rb_thead_t -> rb_thread_t).
+
+ * eval_intern.h: remove unused definitions.
+
+ * common.mk: fix around vm_opts.h path
+ and remove harmful argument passed to insns2vm.rb.
+
+Thu Feb 8 03:11:47 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::unescapeHTML): invalid decoding for single
+ unescaped ampersand. a patch from Tietew
+ <tietew+ruby-dev at tietew.net> in [ruby-dev:30292].
+ fixed: [ruby-dev:30289]
+
+Wed Feb 7 23:25:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (specific_eval): suppress warning.
+
+ * thread_win32.h: undefine _WIN32 on cygwin. [ruby-dev:30303]
+
+Wed Feb 7 22:41:34 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h: remove UNSUPPORTED() macro.
+
+ * thread.c: fix to define Continuation methods
+ (they only do rb_notimplement()).
+
+Wed Feb 7 22:33:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h, yarvcore.h: remove unused macro definition.
+
+Wed Feb 7 22:30:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c: fixed to use ANSI function style.
+
+Wed Feb 7 09:35:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * this commit is a result of refactoring. only renaming functions,
+ moving definitions place, add/remove prototypes, deleting
+ unused variables and removing yarv.h.
+ This commit doesn't change any behavior of ruby/vm.
+
+ * yarv.h, common.mk: remove yarv.h (contents are moved to yarvcore.h).
+
+ * error.c, eval_intern.h: include yarvcore.h instead yarv.h
+
+ * rename some functions:
+ * debug.[ch]: debug_*() -> ruby_debug_*()
+ * iseq.c: iseq_*() -> rb_iseq_*(), ruby_iseq_disasm()
+ * iseq.c: node_name() -> ruby_node_name()
+ * vm.c: yarv_check_redefinition_opt_method() ->
+ rb_vm_check_redefinition_opt_method()
+
+ * some refactoring with checking -Wall.
+
+ * array.c: remove rb_ary_ptr() (unused) and remove unused
+ local variables.
+
+ * object.c: add a prototype of rb_mod_module_exec().
+
+ * eval_intern.h (ruby_cref): set it inline.
+
+ * eval_load.c (rb_load), yarvcore.c: yarv_load() -> rb_load_internal().
+
+ * parse.y: add a prototype of rb_parse_in_eval() (in eval.c).
+
+ * process.c: add a prototype of rb_thread_stop_timer_thread() (in thread.c).
+
+ * thread.c: remove raw_gets() function (unused) and fix some format
+ mismatch (format mismatches have remained yet. this is todo).
+
+ * thread.c (rb_thread_wait_fd_rw): fix typo on label name.
+
+ * thread_pthread.ci: comment out codes with USE_THREAD_CACHE.
+
+ * vm.c (rb_svar, rb_backref_get, rb_backref_get,
+ rb_lastline_get, rb_lastline_set) : moved from yarvcore.c.
+
+ * vm.c (yarv_init_redefined_flag): add a prototype and rename
+ yarv_opt_method_table to vm_opt_method_table.
+
+ * vm.c (rb_thread_eval): moved from yarvcore.c.
+
+ * yarvcore.c: remove unused global variables and fix to use nsdr().
+
+Wed Feb 7 03:39:32 2007 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c, compile.c, compile.h, error.c, eval.c,
+ eval_intern.h, eval_jump.h, eval_load.c, eval_method.h,
+ eval_safe.h, gc.c, insnhelper.h, insns.def, iseq.c, proc.c,
+ process.c, signal.c, thread.c, thread_pthread.ci, thread_win32.ci,
+ vm.c, vm.h, vm_dump.c, vm_evalbody.ci, vm_macro.def,
+ yarv.h, yarvcore.h, yarvcore.c: change type and macro names:
+ * yarv_*_t -> rb_*_t
+ * yarv_*_struct -> rb_*_struct
+ * yarv_tag -> rb_vm_tag
+ * YARV_* -> RUBY_VM_*
+
+ * proc.c, vm.c: move functions about env object creation
+ from proc.c to vm.c.
+
+ * proc.c, yarvcore.c: fix rb_cVM initialization place.
+
+ * inits.c: change Init_ISeq() order (after Init_VM).
+
+ * ruby.h, proc.c: change declaration place of rb_cEnv
+ from proc.c to ruby.c.
+
+Tue Feb 6 22:06:45 2007 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c,utf8tbl.c}:
+ imported nkf 2007-01-28.
+ * Fixed: can't decode MIME encode JIS string.
+ * Fixed: Fullwidth-halfwidth conversion.
+ * Support DoCoMo's and Softbank's EMOJI
+ * Support CP932, CP5022x, eucJP-ms UDC
+ * Support UTF-32 encoding
+ * Support beyond BMP
+ [ruby-dev:29700] [ruby-dev:29922] [ruby-dev:30144]
+
+Tue Feb 6 20:36:19 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, lib/rss/parser.rb: followed current Ruby
+ specification. [ruby-dev:30274]
+
+Tue Feb 6 20:29:44 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb, lib/rss/parser.rb: removed needless code for
+ backward compatibility.
+
+Tue Feb 6 18:43:17 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb: moved fixes for EPIPE to the correct
+ place. [ruby-core:10204]
+
+Tue Feb 6 16:38:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm_opts.h: set properties:
+ svn:keywords: Author Date Id Revision
+ svn:eol-style: native
+
+Tue Feb 6 15:55:46 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (ivar_i): need to support class local instance
+ variables.
+
+Tue Feb 6 15:44:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): fix setting is_local flag.
+
+ * yarvtest/test_class.rb: add a test for class local instance variable.
+
+Tue Feb 6 14:15:34 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def: remove (get|set)instancevariable2 and add a
+ operand is_local to (get|set)instancevariable.
+
+ * yarvtest/test_class.rb: add a test for class local instance variable.
+
+ * parse.y (rb_decompose_ivar2): remove unused variable oid.
+
+ * tool/insns2vm.rb: remove needless require.
+
+Tue Feb 6 11:18:41 2007 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb: check the control connection on EPIPE.
+ Thanks, Simon Williams. [ruby-core:9547]
+
+Tue Feb 6 11:03:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * complement last commit.
+
+ * common.mk (*.inc): use VPATH.
+
+ * vm_opts.h: renamed from vm_opts.h.base.
+
+Tue Feb 6 10:02:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/insns2vm.rb: use vm_opts.h in VPATH.
+
+Tue Feb 6 03:47:58 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c: support Binding#eval.
+
+ * yarvtest/test_eval.rb: add a test for above change.
+
+Tue Feb 6 03:13:33 2007 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c: refactoring (remove K&R style, move Binding stuffs from
+ Init_Proc() to Init_Binding()).
+
+Tue Feb 6 01:07:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * intern.h: prepare rb_last_status_get() and rb_last_status_set().
+ Use these functions instead of rb_last_status ([ruby-dev:30264]).
+
+ * process.c: define above functions.
+
+ * ext/pty/pty.c: use above functions.
+
+ * io.c (pipe_finalize): ditto.
+
+ * process.c: ditto.
+
+Mon Feb 5 21:26:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.h: add a prototype of rb_id2str().
+
+Mon Feb 5 21:06:50 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_thread.c, common.mk: remove eval_thread.c.
+
+ * yarvcore.c: rename cYarvThread to rb_cThread.
+
+ * gc.c: remove YARV_* prefix.
+
+ * gc.h: add an include guard and prototype of rb_gc_set_stack_end().
+
+ * inits.c: fix to ANSI prototype style and reorder Init_*().
+
+ * io.c (pipe_finalize): TODO: comment out last_status.
+
+ * process.c, yarvcore.h: fix to use yarv_vm_t#last_status instead of
+ rb_last_status and make last_status_get() to access $?.
+
+ * yarvcore.c (vm_mark): mark yarv_vm_t#last_status.
+
+ * ruby.h: add declarations of rb_cISeq and rb_cVM.
+
+ * thread.c: move eval_thread.c codes to thread.c and remove yarv_*
+ function prefix.
+
+ * thread.c (thread_start_func_2): use yarv_thread_t#first_func if
+ it is not null.
+
+ * vm.c: fix copyright year.
+
+ * yarvcore.c (Init_vm): rename to Init_VM().
+
+Mon Feb 5 04:09:48 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_frame_callee): check if prev_cfp can be accessible.
+ a patch from Yoshinori Sano <yoshinori.sano at gmail.com> in
+ [ruby-dev:30252]. solves [ruby-dev:30200] and [ruby-core:9856].
+
+Sun Feb 4 20:34:41 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/rss-assertions.rb: removed needless code for backward
+ compatibility.
+
+Sun Feb 4 02:22:59 2007 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): Remove a debug
+ print.
+
+Sat Feb 3 23:51:58 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_compose_ivar2): function to create a new ivar2
+ symbol from a symbol and a class. back-ported from matzruby.
+
+ * parse.y (rb_decompose_ivar2): reverse function of
+ rb_compose_ivar2().
+
+ * marshal.c (w_symbol): support class local instance variables.
+
+ * marshal.c (r_object0): ditto.
+
+ * compile.c (defined_expr): ditto.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * insns.def: add two new instructions: getinstancevariable2 and
+ setinstancevariable2.
+
+Sat Feb 3 23:21:13 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (setclassvariable): remove unnecessary operand.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * common.mk (insns_info.inc): add dependency for insns_info.inc.
+
+Sat Feb 3 14:32:58 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata, ole_val2variant):
+ fix the bug of WIN32OLE_VARIANT.new when variant type is
+ VT_ARRAY.
+
+ * ext/win32ole/sample/excel1.rb: rewrite using WIN32OLE_VARIANT.
+
+ * test/win32ole/test_win32ole.rb: add some test.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+Sat Feb 3 03:35:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, */Makefile.sub, common.mk (vmasm): generalized.
+
+ * common.mk (runruby, benchmark, benchmark-each, tbench): use
+ PROGRAM for the file to be built.
+
+ * proc.c (yarv_proc_alloc): needs return.
+
+ * call_cfunc.ci, compile.c, compile.h, debug.h, eval.c,
+ eval_error.h, eval_jump.h, eval_load.c, eval_thread.c, gc.c,
+ insnhelper.h, insns.def, iseq.c, main.c, numeric.c, parse.y,
+ range.c, ruby.h, signal.c, thread.c, thread_win32.ci, vm.c,
+ vm.h, vm_dump.c, vm_evalbody.ci, yarvcore.c, yarvcore.h:
+ fixed indents and non-C90 comments.
+
+ * regenc.h: revert to before YARV.
+
+ * lib/mkmf.rb (create_makefile): make object files depend on
+ extconf.h even if depend file exists.
+
+Fri Feb 2 23:39:42 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * common.mk (bin): add more dependency. a patch from Tadashi
+ Saito <shiba at mail2.accsnet.ne.jp>. [ruby-dev:30245]
+
+Fri Feb 2 18:44:31 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (setclassvariable): remove warn argument.
+
+Fri Feb 2 18:36:40 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * common.mk (compile.$(OBJEXT)): add config.h to vm.c and
+ compile.c.
+
+Fri Feb 2 18:27:54 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: remove duplicated global variables rb_cProc and
+ rb_cBinding. [ruby-dev:30242]
+
+Fri Feb 2 00:13:44 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (SYMBOL_P): make Symbol immediate again for performance.
+
+ * string.c: redesign symbol methods.
+
+Thu Feb 1 23:25:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_id2str): store Strings for operator symbols.
+ [ruby-dev:30235]
+
+Thu Feb 1 21:04:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assignable_gen): no need to generate NODE_CVDECL.
+
+ * compile.c (iseq_compile_each): no NODE_CVDECL.
+
+Thu Feb 1 20:53:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm.c (eval_get_cvar_base): destination for class variable access
+ is now strictly innermost surrounding class or module. warned
+ if accessed from toplevel.
+
+ * variable.c (rb_cvar_get): new class variable look-up scheme:
+ 1) look up in the class. 2) if the class is singleton attached
+ to a class (i.e. metaclass) then start look up in the attached
+ class and its ancestors. 3) otherwise, look-up in ancestors of
+ the class.
+
+ * eval.c (cvar_cbase): destination for class variable access is
+ the class/module that holds the method, or cbase outside of
+ methods.
+
+Thu Feb 1 20:31:41 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_set): remove warn argument.
+
+Wed Jan 31 14:52:09 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (TestIterator::test_block_given_within_iterator):
+ add new test. [ruby-core:10125]
+
+Tue Jan 30 17:01:21 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_sub_bang): calling rb_str_modify() should be just
+ before actually modifying the string.
+ fixed: [ruby-dev:30211] (originally reported by zunda)
+
+Tue Jan 30 13:24:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_pred): add Integer#pred corresponding
+ Integer#succ. [RCR#5]
+
+Tue Jan 30 12:05:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: autoconf 2.61 support. [ruby-core:10016]
+
+Mon Jan 29 23:52:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * tool/compile.rb: replace YARVCore by VM class.
+
+Mon Jan 29 17:52:44 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/date/format.rb (Date::Format::Bag::method_missing): add
+ prefix to avoid making t class-local instance variable.
+
+Mon Jan 29 21:32:37 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE.locale=, WIN32OLE.locale,
+ WIN32OLE_VARIANT#vartype.
+
+ * test/win32ole/test_win32ole.rb: add test for WIN32OLE.locale=,
+ WIN32OLE.locale.
+
+ * test/win32ole/test_win32ole_variant.rb: add test for
+ WIN32OLE_VARIANT#vartype.
+
+Mon Jan 29 14:14:35 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * tool/parse.rb: replace YARVCore by VM class.
+ http://d.hatena.ne.jp/ysano2005/20070128
+
+Sun Jan 28 08:41:49 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: refactoring.
+
+Sat Jan 27 18:36:33 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata): bug fix.
+ WIN32OLE_VARIANT.new check that 1st argument should T_ARRAY
+ when variant type is VT_ARRAY.
+
+ * test/win32ole/test_win32ole_variant.rb: add some test.
+
+Fri Jan 26 23:55:56 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: bug fix of WIN32OLE_VARIANT when variant
+ type is VT_BYREF|VT_VARIANT.
+
+ * test/win32ole/test_win32ole_variant_with_ie.rb: ditto.
+
+Fri Jan 26 12:03:39 2007 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb (TkConfigMethod#__confinfo_cmd,
+ __conv_keyonly_optkeys): make them private [ruby-dev:30074].
+
+ * ext/tk/lib/tk/txtwin_abst.rb: fix typo [ruby-dev:30073].
+
+ * ext/tk/lib/tk/canvas.rb (TkCanvas#scan_dragto): lack of an argument.
+
+ * ext/tk/lib/tk/canvas.rb: clarify the including module name
+ [ruby-dev:30080].
+
+ * ext/tk/lib/tk/scrollable.rb: change primary name of modules
+ [ruby-dev:30080].
+
+Fri Jan 26 07:48:57 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_init_copy): need to copy internal
+ structure on clone and dup. [ruby-dev:30192]
+
+Wed Jan 24 20:34:51 2007 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/ruby/test_iterator.rb: removed a needless workaround.
+
+Wed Jan 24 18:05:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): fix
+ regexp font-lock bug. [ruby-talk:235758]
+
+Tue Jan 23 18:26:12 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): use == instead
+ of ===. [ruby-dev:30176]
+
+Tue Jan 23 15:39:25 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * Makefile.in, common.mk, configure.in, */{Makefile.sub, configure.bat,
+ setup.mak}: add --with-baseruby configure option.
+
+Mon Jan 22 14:57:25 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: fix errors in socket sample code.
+ [ruby-core:09992]
+
+Sat Jan 20 21:05:18 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fole_s_set_code_page): WIN32OLE.codepage=
+ accepts installed codepage.
+
+ * test/win32ole/test_win32ole.rb (test_s_codepage_changed): ditto.
+
+Sat Jan 20 11:18:49 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke, ole_invoke2, ole_propertyput):
+ modify WIN32OLERuntimeError message.
+
+ * test/win32ole/test_win32ole.rb: ditto.
+
+Sat Jan 20 06:45:21 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval_proc.c (method_receiver): add new method to get the bound
+ receiver of the method object. [ruby-talk:234949]
+
+ * eval_proc.c (method_name): new method to get the name of a
+ method.
+
+ * eval_proc.c (method_owner): a new method to get the class or
+ module that defines the method.
+
+Fri Jan 19 17:12:23 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (Init_win32ole): add WIN32OLE_VARIANT::Empty,
+ WIN32OLE_VARIANT::Null, WIN32OLE_VARIANT::Nothing.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+ * test/win32ole/test_nil2vtempty.rb(test_openSchema): ditto.
+
+Fri Jan 19 06:53:38 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (olevariant_free): fix memory leak.
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata):
+ WIN32OLE_VARIANT.new accepts nil as first argument for some VARIANT
+ TYPE.
+
+ * test/win32ole/test_win32ole_variant.rb: ditto.
+
+Wed Jan 17 17:31:28 2007 Koichi Sasada <ko1@atdot.net>
+
+ * some refactoring around yarvcore and proc.
+
+ * eval_proc.c: renamed to proc.c.
+
+ * common.mk: ditto.
+
+ * yarvcore.h, yarvcore.c: rename or remove some global variables
+ removed: mYarvCore, mYarvInsns
+ renamed: cYarvISeq -> rb_cISeq,
+ cYarvProc -> rb_cProc, cYarvBinding -> rb_cBinding
+ ::YarvCore module is removed and ::YarvCore::VM class becomes ::VM.
+ And change/remove some functions which added with YARV.
+
+ * compile.c: ditto.
+
+ * eval.c: ditto.
+
+ * iseq.c: ditto.
+
+ * vm.c: ditto.
+
+ * inits.c: rename Init_yarvcore to Init_vm.
+
+ * yarvcore.c, proc.c: move some functions and initialization
+ from yarvcore.c to proc.c.
+
+ * intern.h, proc.c: add global function rb_binding_new(void).
+
+Tue Jan 16 17:49:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (eval_search_super_klass): rename to search_super_klass() and
+ use it by th_call_super().
+
+ * insns.def: ditto.
+
+Tue Jan 16 17:48:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix ruby script path.
+
+Tue Jan 16 17:39:44 2007 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (invoke_block): fix to specify self.
+
+Tue Jan 16 12:12:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * env.h: removed
+
+Tue Jan 16 12:00:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_proc.c (rb_proc_new): added.
+
+ * string.c (sym_to_proc): supported.
+
+ * vm.c (invoke_block, th_invoke_yield, th_invoke_proc): fix to support
+ rb_proc_new.
+
+ * yarvcore.c: add a test code.
+
+Sat Jan 13 23:24:59 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_free, ole_type_free,
+ olemethod_free, olevariable_free, oleparam_free,
+ ole_event_free): fix memory leak. [ruby-core:09846]
+
+Wed Jan 10 00:10:23 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_replace): use ptr and len of orig instead of
+ shared. fixed: [ruby-dev:30116]
+
+Tue Jan 9 17:48:38 2007 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_find_file): should not call fpath_check() with NULL.
+ fixed: [ruby-core:09867]
+
+Tue Jan 9 12:29:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getpwuid, etc_getgrgid): fix to correctly
+ convert uid/gid from VALUE.
+
+ * ext/etc/etc.c (etc_getpwuid): ditto.
+
+Tue Jan 9 03:54:38 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): String#upto from empty string makes
+ infinite loop. [ruby-core:09864]
+
+ * string.c (rb_str_upto): use RSTRING_LEN().
+
+Sun Jan 7 18:36:05 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_stop_timer_thread(), rb_thread_reset_timer_thread(),
+ rb_thread_start_timer_thread()): added.
+
+ * thread_pthread.ci: add a native_thread_join() and move
+ rb_thread_reset_timer_thread() definition to thread.c.
+
+ * thread_win32.ci: ditto
+
+ * process.c: fix before_exec(), after_exec() to stop timer thread
+ (and restart timer thread if exec failed). and fix to reset
+ timer thread information when forked child process starts
+ (to fix [ruby-core:09822]).
+
+Sun Jan 7 18:28:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: add a "compare" rule and fix MATZRUBY variable
+
+Sun Jan 7 17:47:16 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole.rb: add test for WIN32OLE#[],
+ WIN32OLE#[]=.
+
+ * ext/win32ole/win32ole.c: update comment for rdoc of
+ WIN32OLE#[] and WIN32OLE#[]=.
+
+Sun Jan 7 12:13:26 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#find_class_comment):
+ Look for class and module comments above rb_define_class and
+ rb_define_module. Patch by Daniel Berger <djberg96 at gmail.com>
+
+Sun Jan 7 10:32:12 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#handle_constants):
+ Properly handle escaping of : in comments.
+ * test/rdoc/parsers/test_parse_c.rb:
+ Test RDoc::C_Parser#do_classes and Rdoc::C_Parser#find_class_comment.
+
+Sun Jan 7 09:31:18 2007 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: updated based on date2 4.0.1.
+
+Sat Jan 6 18:46:34 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline_fast, rb_io_getline): increase lineno
+ when met the delimiter or EOF. fixed: [ruby-dev:30081]
+
+ * io.c (prepare_getline_args, rb_io_getline_1): split
+ preparation of arguments and reading. [ruby-dev:30085]
+
+Sat Jan 6 13:48:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (send): fix to optimize send() with Symbol.
+
+ * yarvtest/test_method.rb: add another test.
+
+Sat Jan 6 13:43:55 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: add PHONY dependency to some rules
+
+Sat Jan 6 11:50:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_read): fix wrong replacement. [ruby-dev:30070]
+
+Sat Jan 6 09:10:52 2007 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: support direct method dispatch with "send" or "funcall".
+ This means that "obj.send :m" skips "BasicObject#send" invocation
+ (method frame creation, etc) and "obj.m" invokes directly.
+ If you make backtrace, there are no entries of "send" method.
+
+ * compile.c (iseq_specialized_instruction): fix to support above
+
+ * eval.c: ditto (remove "static" from rb_f_send and rb_f_funcall
+
+ * yarvcore.c: ditto (add a external IDs for compiler)
+
+ * yarvcore.h: ditto (add a VM_CALL_SEND_BIT macro)
+
+ * yarvtest/test_method.rb: add tests for above changes
+
+ * eval.c: remove unused "Kernel#send" declaration
+
+Sat Jan 6 08:29:17 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (Init_win32ole): add
+ WIN32OLE::VARIANT::VT_EMPTY, WIN32OLE::VARIANT::VT_NULL
+
+ * test/win32ole/test_win32ole_variant_m.rb (test_variant): ditto.
+
+Sat Jan 6 03:49:22 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run.rb: change option format
+
+ * common.mk: ditto
+
+Fri Jan 5 22:21:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_app_pentomino.rb: use Array#dup instead of
+ Array#clone
+
+ * benchmark/bmx_temp.rb: removed
+
+ * benchmark/run.rb: use run.rb instead of run_rite.rb
+
+ * common.mk: ditto
+
+ * benchmark/run_rite.rb: removed
+
+ * common.mk: use $(srcdir)/test.rb to run a test program
+ with "make run"
+
+ * benchmark/bmx_temp.rb: removed and
+ set svn:ignore (bmx_*.rb) to benchmark/
+
+ * test.rb: set svn:ignore
+
+Fri Jan 5 21:03:08 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarvtest/yarvtest.rb: fix to compare results
+
+Fri Jan 5 20:52:56 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, compile.h: add ADD_CALL_RECEIVER() macro.
+
+ * insns.def (send): use GET_SELF() direct if FCALL.
+
+ * eval.c (rb_f_send): check method dispatch type to permit
+ invoking private method when dispatch type is FCALL/VCALL
+
+ * insns.def (opt_ltlt): remove useless statement.
+
+ * vm.h: remove unused macros.
+
+Fri Jan 5 20:50:31 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run_rite.rb: fix to use readlines instead of
+ read(...).lines (because 1.8 doesn't have String#lines).
+
+Fri Jan 5 20:28:19 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_win32.ci (rb_thread_reset_timer_thread):
+ added ([ruby-dev:30086]).
+
+Fri Jan 5 20:20:36 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: add .SUFFIXES rule
+
+Fri Jan 5 15:58:15 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h (rb_alias): fix to check search result
+
+Fri Jan 5 13:59:53 2007 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h (rb_add_method): fix to check old_node
+
+Fri Jan 5 12:03:07 2007 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each, set_block_local_tbl):
+ support NODE_LAMBDA (partly).
+
+ * sample/test.rb: restore test of NODE_LAMBDA
+
+ * test/ruby/test_lambda.rb: ditto
+
+Fri Jan 5 12:31:23 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * thread_pthread.ci (native_sleep): fix tv_nsec overflow.
+
+Thu Jan 4 20:01:29 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: rename yarv-test-[all/each] to compare-test[/-each].
+ purpose of "compare-test" rule is to compare ruby (trunk) and
+ matzruby (branches/matzruby) binary in miniruby level. MATZRUBY
+ parameter means an path to miniruby of matzruby binary. to do this
+ comparison test, you should build matzruby branch.
+
+ * yarvtest/yarvtest.rb: fix to use command line option as
+ command names to be compared.
+
+ * yarvtest/runner.rb: remove a debug output.
+
+Thu Jan 4 19:12:27 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix to use test.rb script in build directory.
+ ($(srcdir)/test.rb -> test.rb)
+
+Thu Jan 4 17:28:05 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/utils.rb (WEBrick::Utils::TimeoutHandler#initialize):
+ Arrays could not be modified in its each block. [ruby-dev:30063]
+
+Thu Jan 4 16:57:14 2007 Koichi Sasada <ko1@atdot.net>
+
+ * yarv_version.h: removed.
+
+ * common.mk: remove yarv_version.h from rules
+
+ * yarvcore.h (Init_yarvcore): remove useless constants
+
+Thu Jan 4 17:00:06 2007 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (Init_ossl_asn1):
+ OpenSSL::ASN1::ASN1Data#value,#tag,#tag_class and
+ OpenSSL::ASN1::BitString#unused_bits should be public.
+
+Thu Jan 4 13:45:10 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.ci: fix last changes around PTHREAD_STACK_MIN.
+
+Thu Jan 4 13:42:47 2007 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: restore changes.
+
+Thu Jan 4 10:33:54 2007 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.ci: fix to skip using PTHREAD_STACK_MIN.
+ [ruby-dev:30063]
+
+Thu Jan 4 10:30:11 2007 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run_rite.rb (bm): fix to use lines.
+
+Wed Jan 3 18:49:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_getline): lineno update condition was wrong.
+ [ruby-dev:30065]
+
+ * io.c (rb_io_getline_fast): ditto.
+
+Wed Jan 3 11:36:51 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (ruby_dup): start GC on ENOMEM as well.
+
+Tue Jan 2 10:29:54 2007 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: fix to compile on YARV
+ ruby_errinfo -> rb_errinfo()
+
+Mon Jan 1 08:07:06 2007 Koichi Sasada <ko1@atdot.net>
+
+ * ext/tk/tcltklib.c: fix to compile on YARV
+ ruby_errinfo -> rb_errinfo(),
+ ruby_safe_level -> rb_safe_level().
+
+Mon Jan 1 07:57:17 2007 Koichi Sasada <ko1@atdot.net>
+
+ * test/drb/test_drbssl.rb: fix to skip drb tests.
+
+Mon Jan 1 06:13:11 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/c_parser.rb: Make Rdoc accessible. Update constant
+ value information.
+
+ * ext/bigdecimal/bigdecimal.c: Update constant comments to provide
+ values for RDoc.
+
+Mon Jan 1 06:05:55 2007 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#handle_constants):
+ Allow RDoc comment to give friendly value for rb_define_const. Patch
+ by Daniel Berger <djberg96 at gmail.com>, [ruby-patches-7499].
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#handle_constants): Fix
+ whitespace handling in constant comments.
+
+Mon Jan 1 00:00:00 2007 Koichi Sasada <ko1@atdot.net>
+
+ * Merge YARV
+
+Sun Dec 31 16:22:48 2006 Eric Hodel <drbrain@segment7.net>
+
+ * array.c: Fix Array#reject.
+
+Sun Dec 31 00:46:25 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date2.rb: removed.
+
+Sun Dec 31 00:15:13 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 4.0.
+
+Sat Dec 30 04:38:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_each_with_index): reuse array for yield parameters.
+
+ * enum.c (enum_min, enum_max): ditto.
+
+Sat Dec 30 04:25:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_inject): reuse array for yield parameters.
+
+Sat Dec 30 02:54:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_gets): accepts limit argument.
+
+ * ext/stringio/stringio.c (strio_readline, strio_each,
+ strio_readlines): ditto.
+
+Sat Dec 30 02:22:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_getline): add limit capability.
+
+ * io.c (rb_io_gets_m): accepts limit argument. [ruby-talk:231563]
+
+ * io.c (rb_io_readline, rb_io_readlines, rb_io_each_line, argf_getline):
+ ditto.
+
+ * io.c (appendline): add limit capability.
+
+ * io.c (rb_io_getline_fast, rb_io_getline): ditto.
+
+ * io.c (rb_io_getline): small refactoring for DRY.
+
+ * io.c (rb_io_s_foreach, rb_io_s_readlines): small refactoring.
+
+Thu Dec 28 15:27:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie::initialize): use Array() again.
+ [ruby-core:09781]
+
+Wed Dec 27 20:52:32 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: remove WIN32OLE::PROPERTY class.
+
+ * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+
+Wed Dec 27 10:04:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_Array): returns 1-element array if the argument
+ does not have to_ary nor to_a.
+
+Tue Dec 26 21:02:14 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_folderitem2_invokeverb.rb: The argument
+ of Shell.NameSpace should not be file path.
+
+Tue Dec 26 06:13:08 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/bigdecimal/bigdecimal.c: remove useless method
+ BigDecimal#!=. [ruby-dev:30050]
+
+Thu Dec 21 15:37:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_slice_bang): rdoc description bug fixed.
+ [ruby-core:09754]
+
+Wed Dec 20 12:54:31 2006 Koichi Sasada <ko1@atdot.net>
+
+ * Convert CVS repository to Subversion repository.
+
+Mon Dec 18 08:36:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie::initialize): Array(string) no longer
+ works. [ruby-core:09738]
+
+Fri Dec 15 00:19:53 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (COMPILE_RULES): latter rule has higher priority.
+
+ * lib/mkmf.rb (create_makefile): remove static library before update,
+ to get rid of sludge of Borland tlib.exe.
+
+Thu Dec 14 18:29:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/readline/readline.c: NetBSD editline does not have
+ rl_username_completion_function() and rl_completion_matches().
+ a patch from Takahiro Kambe <taca at back-street.net>.
+ [ruby-dev:30008]
+
+Thu Dec 14 18:20:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/locale.rb (IRB::Locale::puts): typo fixed. a patch from
+ NAKAMURA Usaku <usa@ruby-lang.org>. [ruby-dev:30012]
+
+Tue Dec 12 23:33:53 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (Switch#parse_arg, Switch#conv_arg): splat failures.
+
+Mon Dec 11 11:51:10 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha2/lib/sha2.rb: Moved one level up from under
+ the superfluous subdirectory digest/.
+
+Mon Dec 11 11:46:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_define_const): typo fixed.
+
+Mon Dec 11 09:36:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_aset): index double decode problem.
+ [ruby-core:09695]
+
+Sat Dec 9 21:39:24 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): keep the exception till after END blocks.
+ [ruby-core:09675]
+
+Sat Dec 9 11:22:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/locale.rb (IRB::Locale::search_file): use File.exist?
+ instead of File.exists?. a patch from Yutaka Kanemoto
+ <kinpoco at gmail.com> in [ruby-dev:30000].
+
+Fri Dec 8 18:11:18 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/optparse.rb: cannot put :nodoc: before method definition.
+ put after it.
+
+Fri Dec 8 17:00:13 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bin/rdoc: use File.exist? instead of File.exists?.
+
+Thu Dec 7 23:50:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): new method Dir.exist?(path).
+ [ruby-core:09663]
+
+ * file.c (Init_File): remove File.exists?; use File.exist?
+ instead.
+
+ * file.c: rename functions to test_* to rb_file_*_p.
+
+Thu Dec 7 09:29:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/weakref.rb (WeakRef::__setobj__): should support
+ marshaling. [ruby-talk:228508]
+
+Wed Dec 6 23:58:36 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk (NULLCMD): moved for platforms that empty
+ command does not run. fixed: [ruby-dev:29994]
+
+ * win32/win32.c (init_stdhandle): redirect unopened IOs to NUL.
+ [ruby-core:09572]
+
+Tue Dec 5 19:01:42 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (SITE_DIR): fixed to empty RUBY_SITE_LIB in config.h on
+ NetBSD. fixed: [ruby-dev:29358]
+
+Tue Dec 5 18:38:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/matrix.rb (Matrix::rank): use quo method to avoid integer
+ division problem. [ruby-core:09644]
+
+ * lib/matrix.rb (Matrix::rank_e): ditto.
+
+Tue Dec 5 00:59:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): need to parse "/=" as
+ self assignment operator, not regex. [ruby-talk:227324]
+
+Tue Dec 5 00:19:14 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h, object.c, variable.c (rb_mod_constants): added an optional
+ flag to search ancestors, which is defaulted to true, as well as
+ const_defined? and const_get. [ruby-dev:29989]
+
+Mon Dec 4 23:49:28 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (install_recursive): get rid of warning.
+
+ * lib/optparse.rb (CompletingHash#match): get rid of splat failure.
+
+Mon Dec 4 19:16:39 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Do alias << update.
+
+Mon Dec 4 10:48:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (OFFT2NUM): use LONG2NUM() if sizeof(long) equals to
+ sizeof(off_t).
+
+Mon Dec 4 08:32:25 2006 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): should quote
+ boundary. JVN#84798830
+
+Sun Dec 3 16:16:53 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Fix problems with update
+ timing. [Reported by: oss-ruby@technorama.net]
+
+Sat Dec 2 07:33:53 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils::FormData::<<):
+ HTTPUtils::parse_header() takes a string. [ruby-dev:29931]
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils::parse_header):
+ String does no longer have each method.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils::parse_form_data):
+ ditto.
+
+Sat Dec 2 07:09:04 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ocsp.c: OpenSSL::OCSP::OSCPError should be
+ subclass of OpenSSL::OpenSSLError. [ruby-dev:29980]
+
+Fri Dec 1 16:31:53 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: shouldn't run the killed thread at callback.
+ [ruby-talk: 227408]
+
+Tue Nov 28 17:25:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_iter_check): should check modification (size
+ change) during iteration.
+
+ * array.c (rb_ary_initialize, rb_ary_shift, rb_ary_unshift,
+ rb_ary_splice, rb_ary_reverse, rb_ary_sort, rb_ary_delete,
+ rb_ary_delete_at, rb_ary_reject_bang, rb_ary_replace,
+ rb_ary_clear, rb_ary_fill, rb_ary_uniq_bang, rb_ary_compact,
+ rb_ary_shuffle): add iteration check.
+
+Mon Nov 27 09:00:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_ord): typo fixed. reported from Kornelius
+ Kalnbach <murphy@rubychan.de>. [ruby-core:09621]
+
+Sun Nov 26 16:36:46 2006 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * version.h: addition of RUBY_PATCHLEVEL.
+ * version.c: ditto.
+
+Wed Nov 22 16:00:49 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: support --with-X11/--without-X11 option.
+
+ * ext/tk/README.tcltklib: add description about --with-X11-* option
+ [ruby-talk:225166] and --with-X11/--without-X11 option.
+
+ * ext/tk/tkutil/extconf.rb: able to be called manually
+ [ruby-talk:225950].
+
+Sat Nov 18 23:39:20 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_tap): a new method. [ruby-talk:224013]
+
+Wed Nov 15 23:22:54 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (test_grpowned, rb_stat_grpowned): should honor
+ supplementary group IDs. [ruby-core:09546]
+
+Tue Nov 7 18:35:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (formal_assign): need to pack rest arg information in
+ argc.
+
+Tue Nov 7 18:05:01 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/itemconfig.rb: minor bug fix.
+
+Tue Nov 7 17:52:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): revert duplicate inclusion of
+ modules. [ruby-dev:29793]
+
+Tue Nov 7 17:18:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_missing): update old argument adjustment.
+
+Tue Nov 7 16:41:21 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (when_check): need to splat for NODE_ARGSCAT as well.
+ [ruby-dev:29860]
+
+Mon Nov 6 22:23:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (Init_String): remove duplicated definition of
+ Symbol#to_s.
+
+Mon Nov 6 18:54:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_avalue): need to splat but no error.
+
+ * eval.c: new macros - YIELD_CALL, YIELD_VALUES.
+
+ * eval.c (rb_yield_values): specify YIELD_VALUES.
+
+ * eval.c (rb_yield_0): use new macros.
+
+ * eval.c (proc_invoke): slightly modified to separate YIELD_CALL
+ and YIELD_VALUES from YIELD_ARY_ARGS.
+
+ * object.c (Init_Object): add nil.to_splat => [].
+
+Mon Nov 6 15:41:55 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/itemconfig.rb: ext/tk/lib/tk/itemconfig.rb: bug
+ fix on 'itemconfiginfo' method, and modify to make it easy to
+ override 'itemconfiginfo' method.
+
+ * ext/tk/lib/tkextlib/tile/treeview.rb: support Tile 0.7.8.
+
+ * ext/tk/lib/tkextlib/version.rb: [new] add Tk::Tkextlib_RELEASE_DATE
+ to get the information from scripts.
+
+ * ext/tk/lib/tk.rb: load 'tkextlib/version.rb', and update RELEASE_DATE
+
+ * ext/tk/lib/tkextlib/SUPPORT_STATUS: update.
+
+ * ext/tk/sample/editable_listbox.rb: [new] the listbox with editable
+ items. It's one of the example about usage of Place geometry manager.
+
+ * ext/tk/sample/tktextio.rb: improve the functions of TkTextIO class.
+ Those are required by 'irbtkw.rbw'.
+
+ * ext/tk/sample/irbtkw.rbw: [new] IRB on Ruby/Tk. It doesn't need any
+ real console. IRB works on a text widget without I/O blocking. That
+ is, thread switching on IRB will work properly, even if on Windows.
+
+Mon Nov 6 00:42:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg_dup_check): vid may be nameless internal id.
+
+Sun Nov 5 19:52:19 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: updated based on date2 3.9.7.
+
+Sat Nov 4 13:09:31 2006 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: accept NOMODSEQ. [ruby-core:9002]
+
+Fri Nov 3 00:16:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_getnameinfo__aix): AF_INET6 workaround
+ for AIX. a patch from Yutaka Kanemoto <kinpoco AT gmail.com>.
+ [ruby-dev:29744]
+
+Thu Nov 2 14:19:44 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#^): Fix XOR operation against a container that
+ holds duplicate values. [ruby-core:9372]
+
+Thu Nov 2 10:00:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c: class Symbol is no longer subclass of String. also
+ covers [ruby-core:09366]
+
+Thu Nov 2 08:21:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc/create.rb (XMLRPC::Create::conv2value): Symbol should
+ come earlier than String.
+
+ * lib/soap/mapping/rubytypeFactory.rb (RubytypeFactory::obj2soap):
+ ditto.
+
+ * lib/set.rb (TC_Set::test_s_new): strings are no longer
+ Enumerable
+
+ * lib/soap/property.rb (Property::load): ditto.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils::parse_header): ditto.
+
+ * lib/soap/mimemessage.rb (MIMEMessage::Headers::parse): ditto.
+
+Thu Nov 2 09:08:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c: revert lfree shift/unshift boost patch to avoid unknown
+ memory error.
+
+Wed Nov 1 23:24:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (struct RArray): revert embedding ptr in RVALUE.
+
+ * array.c: ditto.
+
+Wed Nov 1 23:01:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (hash): use Bob Jenkins' hash algorithm.
+
+Wed Nov 1 02:22:31 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb (Digest::HMAC::update): Minor
+ optimization.
+
+ * ext/digest/digest.c (rb_digest_instance_equal): Allow comparing
+ a digest instance with another of a different class.
+
+Wed Nov 1 01:05:13 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_call0): fixed bug of zsuper with both of opt and rest.
+ fixed: [ruby-list:42928]
+
+Tue Oct 31 17:03:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_dup): duplicate the class of original time.
+ [ruby-core:09357]
+
+ * lib/time.rb (Time::make_time, Time::rfc2822, Time::httpdate):
+ should respect subclasses. [ruby-core:09357]
+
+Tue Oct 31 16:25:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_shared_first): should address offset after
+ ary_shared_array(). [ruby-core:09358]
+
+Mon Oct 30 23:40:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (miniruby): add XLDFLAGS.
+
+ * configure.in (aix): use -bE option for miniruby. [ruby-dev:29698]
+
+ * dir.c (glob_helper): get rid of possible memory leak.
+
+ * win32/win32.c (cmdglob, rb_w32_cmdvector, rb_w32_opendir,
+ rb_w32_get_environ): not to use GC before initialization.
+
+Mon Oct 30 19:28:02 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): use better approximation.
+
+Mon Oct 30 18:35:33 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big2str0): wrong allocation length. a patch from
+ U.Nakamura <usa at garbagecollect.jp> [ruby-dev:29710]
+
+Mon Oct 30 12:34:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): fix commit miss. [ruby-dev:29707]
+
+Mon Oct 30 11:15:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): should preserve leading zero
+ information for negative %b and %x. [ruby-talk:221347]
+
+Sun Oct 29 19:51:31 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * regexec.c: invalid offset value was used in STATE_CHECK_BUFF_INIT().
+
+Sat Oct 28 20:13:18 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.4.5
+
+ * regint.h: ditto.
+
+ * regerror.c: ditto.
+
+ * regexec.c: ditto.
+
+ * regcomp.c ditto.
+
+ * regparse.c ditto.
+
+Sat Oct 28 07:56:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): missing break. [ruby-core:09345]
+
+Fri Oct 27 17:30:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enum_each_cons): move RETURN_ENUMERATOR() after
+ argument check.
+
+Thu Oct 26 21:05:48 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkcs7.c (ossl_pkcs7_verify): should clear error.
+ (fix http://bugs.debian.org/394336)
+
+ * ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): ditto.
+
+Thu Oct 26 15:23:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c: remove by_slice and by_cons.
+
+Thu Oct 26 15:12:12 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/digest/digest.c (Init_digest): typo.
+
+Wed Oct 25 17:16:05 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/digest/test_digest_hmac.rb: added.
+
+Wed Oct 25 16:34:31 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/test.sh: make this script work again.
+
+Wed Oct 25 07:59:42 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: updated based on date2 3.9.6.
+ [ruby-core:09323]
+
+Wed Oct 25 00:58:19 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/mkexports.rb, win32/resource.rb: use unique variable names.
+
+Tue Oct 24 19:18:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_by_slice): new method added.
+
+ * enumerator.c (enumerator_by_cons): ditto.
+
+Tue Oct 24 18:56:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enum_each_slice, enum_each_cons): returns
+ Enumerable::Enumerator if no block is given. [ruby-dev:29246]
+
+ * enumerator.c: remove methods: enum_with_index, enum_slice,
+ enum_cons. [ruby-dev:29246]
+
+Tue Oct 24 18:51:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_zip): add RETURN_ENUMERATOR() to zip method.
+
+Mon Oct 23 04:30:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): use return value from proc given as the
+ second argument to Marshal#load() to allow value replacement in
+ the restoring data.
+
+Sun Oct 22 14:48:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (Init_signal): avoid duplicated installation of SIGCHLD
+ handler.
+
+Sun Oct 22 16:47:56 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_substr): should be infected with only original
+ string, but not the shared string. fixed: [ruby-core:09152]
+
+ * string.c (rb_str_new4): keep shared string untainted when original
+ string is tainted. fixed: [ruby-dev:29672]
+
+Sun Oct 22 07:55:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upcase, rb_str_downcase, rb_str_downcase,
+ rb_str_upcase_bang, rb_str_downcase_bang, rb_str_swapcase_bang):
+ add RDoc description that case conversion to be effective only
+ in ASCII region.
+
+Sun Oct 22 05:20:34 2006 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
+
+ * configure.in: alloca is broken; use C_ALLOCA instead.
+ [ruby-dev:29416]
+
+Sat Oct 21 17:50:40 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest.rb: Follow the framework updates.
+
+Fri Oct 20 22:00:43 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Complete half-boiled updates.
+
+ * ext/digest/sha2/lib/digest/sha2.rb: Fix #initialize_clone().
+
+Fri Oct 20 20:28:37 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest: Prefix C constants with RUBY_ and C type names with
+ rb_ to avoid name clash in writing extensions.
+
+ * ext/digest: Introduce Digest::Class and Digest::Instance for
+ ease of implementing subclasses and add-ons, inspired by
+ gotoyuzo.
+
+ * ext/digest: The Digest::Instance module now requires and assumes
+ that any instance be resettable and clonable, and add some
+ convenient instance methods such as "new()", for creating a new
+ copy, parameter taking "digest()" and "hexdigest()", for instant
+ calculation. These methods make digest instances work just like
+ digest classes.
+
+ * ext/digest/sha2/lib/digest/sha2.rb:
+ Add the Digest::SHA2 class to wrap up SHA2 variants: SHA256,
+ SHA384 and SHA512, hoping this module would make a decent
+ example of a digest subclass written in Ruby.
+
+ * ext/digest/lib/digest.rb: Adjust autoload entries for SHA2
+ classes.
+
+ * ext/digest/lib/digest/hmac.rb: Follow the framework updates.
+
+Fri Oct 20 10:47:43 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb: fixed the bug of handling COMMON_MACROS.
+
+Fri Oct 20 08:42:38 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (NULLCMD): dummy command.
+
+ * bcc32/Makefile.sub (post-install-*): Borland make cannot ignore
+ command-less double-colon rules. [ruby-dev:29676]
+
+Fri Oct 20 00:37:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/Makefile.sub ($(LIBRUBY_SO)): execute pre-link hook.
+
+ * ext/extmk.rb: workaround for Borland make.
+
+Wed Oct 18 23:02:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_shift): shorten copy size. fixed: [ruby-list:42907]
+
+ * signal.c (Init_signal): handle SIGTERM. fixed: [ruby-list:42895]
+
+ * win32/win32.c (rb_w32_utime): allow NULL to set the current time.
+ [ruby-talk:219248]
+
+Wed Oct 18 13:25:50 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_each_line): String#lines now works when a block
+ is given. in other words, lines become an alias to each_line.
+ [ruby-core:09218]
+
+ * string.c (rb_str_each_byte): ditto for bytes in place of lines.
+
+Wed Oct 18 00:55:33 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): use particular enums. [ruby-core:09221]
+
+Tue Oct 17 22:03:08 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/erb.rb: String#each was removed, use #each_line instead.
+
+Tue Oct 17 12:27:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_shared_array): should set NOEMBED flag for a copied
+ array.
+
+Tue Oct 17 08:04:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lines): now takes optional argument for the
+ line separator.
+
+ * io.c (rb_io_lines, rb_io_bytes): new methods.
+
+Mon Oct 16 23:33:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_unshift_m): a bug in lfree shift length
+ calculation.
+
+Mon Oct 16 08:30:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: *OBJS are not needed for extension libraries.
+
+ * {bcc32,wince,win32}/Makefile.sub (config.status): fixed typo,
+ missing comma.
+
+Mon Oct 16 00:44:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): execute block if given with unpacked value
+ instead of creating an array. an idea from Tim Bray.
+
+Sun Oct 15 01:03:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (Collector::Dir#collect): append base
+ directory but not prepend.
+
+ * lib/test/unit/collector/dir.rb (Collector::Dir#collect_file): do not
+ join with dot. fixed: [ruby-core:09179]
+
+Sat Oct 14 23:39:50 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (singleton): no need to re-create NODE_SELF() again.
+ [ruby-core:09177]
+
+Sat Oct 14 23:25:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_warning, parser_warn): some error message may
+ contain format specifiers. a patch from Akinori MUSHA <knu at
+ iDaemons.org>. [ruby-dev:29657]
+
+ * regparse.c (onig_rb_warning, onig_rb_warn): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (VpException): ditto.
+
+ * ext/dl/handle.c (rb_dlhandle_initialize): ditto.
+
+ * ext/gdbm/gdbm.c (rb_gdbm_fatal): ditto.
+
+Sat Oct 14 08:15:42 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c, ext/digest/digest.h,
+ ext/digest/md5/md5init.c, ext/digest/rmd160/rmd160init.c,
+ ext/digest/sha1/sha1init.c, ext/digest/sha2/sha2init.c:
+ Introduce API versioning.
+
+ * ext/digest/digest.c, ext/digest/digest.h,
+ ext/digest/md5/md5init.c, ext/digest/rmd160/rmd160init.c,
+ ext/digest/sha1/sha1init.c, ext/digest/sha2/sha2init.c: Remove
+ the constants DIGEST_LENGTH and BLOCK_LENGTH and turn them into
+ instance methods digest_length() and block_length(). Class
+ methods with the same names are also provided, which take extra
+ parameters for a digest method.
+
+ * ext/digest/lib/digest/hmac.rb: Completely redesign the somewhat
+ bizarre API, now that Digest classes can take hashing
+ parameters.
+
+Sat Oct 14 05:54:05 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c: Improve RDoc documentation further more.
+
+Sat Oct 14 04:33:33 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c: Improve RDoc documentation.
+
+ * ext/digest/digest.c (Init_digest, rb_digest_base_s_digest,
+ rb_digest_base_s_hexdigest): Make Digest::Base::digest() and
+ Digest::Base::hexdigest() take extra arguments, which are passed
+ through to the constructor in an internal call.
+
+ * ext/digest/bubblebabble/bubblebabble.c
+ (rb_digest_base_s_bubblebabble): Ditto for
+ Digest::Base::bubblebabble().
+
+Sat Oct 14 00:55:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/Makefile.sub (post-install-ext): no longer needed.
+
+ * bcc32/configure.bat: get rid of a quirk of Borland make, which
+ sets empty macro in command line to "1".
+
+Fri Oct 13 22:49:02 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: updated based on date2 3.9.5.
+
+Fri Oct 13 21:00:01 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest.rb (Digest): Try to auto-load non-standard
+ digest modules when a specified digest class is missing.
+
+ * ext/digest/lib/digest.rb: Define Digest(name) for ease of
+ dynamically selecting a hashing algorithm.
+
+Fri Oct 13 20:53:37 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (Init_digest): Digest::Base.new() does no
+ longer take an initial string to feed. This change allows
+ subclasses to take hashing parameters. A statement such as
+ ``md = Digest::MD5.new(s)'' can be easily rewritten as
+ ``md = Digest::MD5.new << s'' or
+ ``md = Digest::MD5.new.update(s)''.
+
+Fri Oct 13 20:51:55 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c, ext/digest/md5/md5init.c,
+ ext/digest/rmd160/rmd160init.c, ext/digest/sha1/sha1init.c,
+ ext/digest/sha2/sha2init.c: Add RDoc documentation.
+
+ * ext/digest/digest.txt, ext/digest/digest.txt.ja: Removed in
+ favor of embedded RDoc documentation.
+
+Fri Oct 13 20:38:12 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/bubblebabble, ext/digest/digest.c: Rip BubbleBabble
+ support out of the base class and have a separate module named
+ digest/bubblebabble.
+
+Fri Oct 13 19:53:59 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_equal): Again, should call
+ digest() of a subclass instead of the one defined in the base
+ class.
+
+Fri Oct 13 18:19:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c: Class#inherited RDoc added. a patch from Daniel
+ Berger <djberg96 at gmail.com> [ruby-core:08942]
+
+Fri Oct 13 02:42:00 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_equal): Should call digest()
+ of a subclass instead of the one defined in the base class.
+
+Fri Oct 13 02:30:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (Collector::Dir#collect): prepend
+ base directory to load path.
+
+ * lib/test/unit/collector/dir.rb (Collector::Dir#collect_file): should
+ use the given File-like interface, but not File directly.
+
+ * test/testunit/collector/test_dir.rb (TestDir::FileSystem): implement
+ File-like methods correctly.
+
+Fri Oct 13 01:48:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/date.rb (Date::self.complete_hash): need to check if g is
+ nil before dereference. [ruby-core:09116]
+
+Fri Oct 13 01:05:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_partition): RDoc update. a patch from
+ Mauricio Fernandez <mfp at acm.org>. [ruby-core:09160]
+
+ * hash.c (rb_hash_compare_by_id): ditto.
+
+Fri Oct 13 00:34:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_cvar_defined): wrong id check. a patch from
+ Mauricio Fernandez <mfp at acm.org>. [ruby-core:09158]
+
+ * object.c (rb_mod_cvar_get): typo fixed. [ruby-core:09168]
+
+ * object.c (rb_mod_cvar_set): ditto.
+
+Thu Oct 12 22:58:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_compare_by_id): somehow we lost renaming from
+ Hash#identical. [ruby-core:09163]
+
+Thu Oct 12 18:25:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/tk/tkutil/tkutil.c (cbsubst_table_setup): need to handle new
+ character literal (1 char string).
+
+ * lib/mkmf.rb: shut up some warnings from tk's extconf.rb.
+
+Thu Oct 12 02:15:24 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Make use of String#bytes.
+
+Thu Oct 12 02:12:31 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (get_digest_base_metadata): Use an instance
+ variable of a class object instead of a class variable for
+ metadata. This change is only crucial for ruby 1.8 because
+ class variables are inherited to subclasses prior to 1.9, but
+ applying it also to 1.9 will assure compatibilities.
+
+ * ext/digest/md5/md5init.c (Init_md5): Ditto.
+
+ * ext/digest/rmd160/rmd160init.c (Init_rmd160): Ditto.
+
+ * ext/digest/sha1/sha1init.c (Init_sha1): Ditto.
+
+ * ext/digest/sha2/sha2init.c (Init_sha2): Ditto.
+
+Wed Oct 11 21:36:47 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_alloc,
+ rb_digest_base_equal): Simplify the equality check and just
+ compare resulted digests since state-level equality should
+ not be so significant.
+
+ * ext/digest/digest.h: Ditto.
+
+ * ext/digest/*/*.[ch]: Ditto.
+
+Wed Oct 11 17:11:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_obj_define_method): add half boiled RDoc document.
+
+Wed Oct 11 16:57:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_replace): should shift lfree pointer before
+ calling xfree.
+
+Wed Oct 11 15:07:42 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb: Add digest/hmac, which implements
+ HMAC keyed-hashing algorithm.
+
+Wed Oct 11 15:03:55 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_reset): Do not make
+ recursive calls, but call initialize() when reset() is not
+ defined in a subclass.
+
+Wed Oct 11 14:56:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/digest/sha1/sha1ossl.h: libssl 0.9.8c-3 defines no
+ SHA_BLOCK_LENGTH.
+
+Wed Oct 11 14:03:31 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (rb_digest_base_reset, Init_digest): Add
+ Digest::Base#reset.
+
+ * ext/digest/digest.h: Update the header comment.
+
+ * ext/digest/md5/md5ossl.h, ext/digest/md5/md5init.c (Init_md5):
+ Define DIGEST_LENGTH and BLOCK_LENGTH.
+
+ * ext/digest/rmd160/rmd160init.c (Init_rmd160): Ditto.
+
+ * ext/digest/sha1/sha1init.c (Init_sha1): Ditto.
+
+ * ext/digest/sha2/sha2init.c (Init_sha2): Ditto.
+
+ * ext/digest/depend, ext/digest/extconf.rb: Use $INSTALLFILES
+ rather than adding make targets. [Pointed out by: nobu]
+
+Tue Oct 10 16:39:08 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (hexdigest_str_new, bubblebabble_str_new):
+ Perform StringValue() checks properly.
+
+Tue Oct 10 13:21:21 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/sha1/depend, ext/digest/sha2/depend: Remove obsolete
+ dependencies.
+
+Mon Oct 9 23:46:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/parsedate.rb: documentation patch from Konrad Meyer
+ <konrad.meyer@gmail.com>. [ruby-doc:1238]
+
+ * lib/open3.rb, lib/ping.rb: ditto.
+
+Mon Oct 9 23:40:58 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, lib/fileutils.rb, lib/mkmf.rb, lib/optparse.rb,
+ lib/shellwords.rb: get rid of shadowing outer local variable.
+
+Mon Oct 9 22:56:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/encoding.rb (REXML::Encoding::check_encoding): spaces
+ are allowed around equal sign. [ruby-core:09032]
+
+ * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser): ditto.
+
+Mon Oct 9 01:56:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_obj_define_method): add new method
+ Kernel#define_singleton_method. [ruby-list:42851]
+
+Sat Oct 7 23:53:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_scan): small documentation fix.
+ [ruby-core:09007]
+
+Sat Oct 7 23:44:33 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_rshift): a bug in right shift of negative
+ bignums. [ruby-core:09020]
+
+Sat Oct 7 23:33:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (formal_assign): packed post splat arguments may conflict
+ with normal arguments. [ruby-core:09021]
+
+ * eval.c (rb_call0): ditto.
+
+Sat Oct 7 11:53:04 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_initialize): since module_eval no longer passes
+ self, use module_exec instead. fixed: [ruby-dev:29637]
+
+Sat Oct 7 00:27:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c (rb_include_module): remove unnecessary check.
+ [ruby-talk:218402]
+
+Fri Oct 6 15:19:59 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/depend: Fix header installation when the build
+ directory is different from srcdir. [Pointed out by: eban]
+
+Fri Oct 6 09:56:31 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32,wince}/Makefile.sub (config.status): shouldn't use
+ copy command instead of install. use -run install.
+
+Fri Oct 6 06:53:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): small refactoring.
+
+ * parse.y (bparam_item): fixed bugs in handling parenthesized LHS.
+
+Fri Oct 6 04:47:07 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/depend: Install digest.h.
+
+Fri Oct 6 04:27:40 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/md5.rb, ext/digest/lib/sha1.rb: Remove those
+ compatibility stub libraries.
+
+ * sample/openssl/c_rehash.rb: Use digest/md5 instead of obsolete md5.
+
+Fri Oct 6 04:09:51 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c: Make hexdigest() always call digest() internally.
+
+ * ext/digest/digest.c: Add bubblebabble().
+
+Fri Oct 6 02:38:42 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c: Allow subclassing in Ruby.
+
+Fri Oct 6 02:06:10 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.c (hexdigest_str_new): Add a string size check.
+
+Thu Oct 5 19:28:35 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/digest.[ch]: Since the argument order of
+ hash_final_func_t was inconsistent with others, change it and
+ rename to hash_finish_func_t to avoid confusion.
+
+ * ext/digest/digest.[ch]: Remove and eliminate the use of
+ hash_end_func_t. Implement hexdigest conversion in the base
+ class.
+
+ * ext/digest/md5/md5.c, ext/digest/md5/md5.h,
+ ext/digest/md5/md5init.c, ext/digest/md5/md5ossl.c,
+ ext/digest/md5/md5ossl.h: Remove MD5_End() and change
+ MD5_Final() to MD5_Finish().
+
+ * ext/digest/rmd160/depend, ext/digest/rmd160/extconf.rb,
+ ext/digest/rmd160/rmd160.c, ext/digest/rmd160/rmd160.h,
+ ext/digest/rmd160/rmd160hl.c, ext/digest/rmd160/rmd160init.c,
+ ext/digest/rmd160/rmd160ossl.c, ext/digest/rmd160/rmd160ossl.h:
+ Remove unused functions RMD160_End(), RMD160_File(),
+ RMD160_Data() and change RMD160_Final() to RMD160_Finish().
+
+ * ext/digest/sha1/extconf.rb, ext/digest/sha1/sha1.c,
+ ext/digest/sha1/sha1.h, ext/digest/sha1/sha1hl.c,
+ ext/digest/sha1/sha1init.c, ext/digest/sha1/sha1ossl.c,
+ ext/digest/sha1/sha1ossl.h: Likewise.
+
+ * ext/digest/sha2/extconf.rb, ext/digest/sha2/sha2.c,
+ ext/digest/sha2/sha2.h, ext/digest/sha2/sha2hl.c,
+ ext/digest/sha2/sha2init.c: Likewise.
+
+Wed Oct 4 18:47:25 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/*: bugfix and update
+ (see ext/tk/ChangeLog.tkextlib).
+
+Wed Oct 4 17:25:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): check protected visibility based on real self,
+ not ruby_frame->self. [ruby-talk:217822]
+
+Wed Oct 4 15:46:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (block_param): should interpret single parenthesized
+ left hand side expression.
+
+Wed Oct 4 08:52:30 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/optparse/test_getopts.rb: changed the class name of test case
+ to get rid of conflict with test_optparse.rb.
+
+Tue Oct 3 21:04:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (dyna_in_block): inline using macro.
+
+ * parse.y (mlhs): simplifies the rule a bit.
+
+ * parse.y (block_param): restrict block parameters to be local
+ variables only.
+
+ * test/ruby/test_iterator.rb (TestIterator::test_nested_iterator):
+ update test suite to conform the last change.
+
+Tue Oct 3 02:31:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (splat_value): use "to_splat" instead of "to_ary" to
+ prepare splat values as an array.
+
+ * array.c (Init_Array): define to_splat.
+
+ * range.c (range_to_splat): new method.
+
+ * enumerator.c (enumerator_to_splat): ditto.
+
+Tue Oct 3 01:36:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lines): returns an Enumerator instead of an
+ array of lines.
+
+ * string.c (rb_str_bytes): a new method.
+
+Mon Oct 2 23:47:55 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::COLLECTORS):
+ base directory should be lower precedence. fixed: [ruby-dev:29622]
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner#options): typo.
+
+ * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir#collect_file):
+ load expanded path. fixed: [ruby-dev:29621]
+
+Mon Oct 2 15:47:55 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: batfile should be CRLF'ed.
+
+Mon Oct 2 01:24:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (test-all): separate directory where running test cases
+ from source tree.
+
+ * lib/test/unit/autorunner.rb (options): added --basedir, --workdir
+ and --load-path options.
+
+ * lib/test/unit/collector/dir.rb (recursive_collect, collect_file):
+ base directory support.
+
+Sun Oct 1 23:56:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk, ext/extmk.rb, win{32,ce}/Makefile.in: keep
+ LIBRUBY_SO unless need to be removed.
+
+Sun Oct 1 23:12:19 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#make_switch): pass arguments directly.
+
+Sat Sep 30 15:11:26 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.4.
+
+Fri Sep 29 13:18:24 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest.rb (Digest): Require digest.so and fix the
+ breakage. Point out by NAKAMURA Usaku in [ruby-dev:29619].
+
+Fri Sep 29 12:11:04 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * jcode.rb (succ!): call original succ! if $KCODE == 'n'.
+ fixed: [ruby-talk:216845]
+
+Fri Sep 29 11:43:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_func): revert fallback checking undeclared function.
+ fixed: [ruby-core:08949]
+
+Fri Sep 29 09:56:56 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: extout is needed for also clean.
+ fixed: [ruby-core:08944]
+
+ * lib/optparse.rb (OptionParser::Switch#conv_arg): unsplat by
+ Proc#call if no conversion is given.
+
+Thu Sep 28 23:59:31 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (struct thread): declare win32_exception_list on cygwin and
+ win32 regardless if it is implemented. Provisional fix for
+ [ruby-core:08917].
+
+Thu Sep 28 20:49:20 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/tmpdir.rb: use return value of getdir.call for length.
+
+Wed Sep 27 22:08:16 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/md5/md5init.c (Init_md5): Now that we have digest.rb,
+ require "digest" rather than "digest.so".
+
+ * ext/digest/rmd160/rmd160init.c (Init_rmd160): Ditto.
+
+ * ext/digest/sha1/sha1init.c (Init_sha1): Ditto.
+
+ * ext/digest/sha2/sha2init.c (Init_sha2): Ditto.
+
+Wed Sep 27 21:21:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_startwith): rename startwith? to start_with?,
+ endwith? to endwith?, respectively. [ruby-talk:216685]
+
+Wed Sep 27 13:29:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::TagMaker::nOE_element_def): replace to_s by
+ join. some other methods as well. [ruby-dev:29613]
+
+Wed Sep 27 01:04:49 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_func): check function pointer first and macro next.
+
+ * lib/mkmf.rb (have_type): simplified with typedef and sizeof.
+
+Wed Sep 27 00:08:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_shift): shift/unshift performance boost patch,
+ based on the patch from Eric Mahurin <eric_mahurin at yahoo.com>.
+ [ruby-core:05861]
+
+ * array.c (rb_ary_unshift_m): ditto.
+
+ * array.c (ary_make_shared): ditto.
+
+ * array.c (RESIZE_CAPA): ditto.
+
+ * array.c (rb_ary_free): new function to free memory. code moved
+ from gc.c.
+
+ * string.c (rb_str_free): ditto.
+
+Tue Sep 26 23:57:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#getopts): use strings as key.
+ fixed: [ruby-dev:29614]
+
+Tue Sep 26 15:29:55 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {win32,wince}/Makefile.sub (CPP): check predefined value.
+
+Tue Sep 26 07:55:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_shift): should not move memory region if array
+ body is shared. a patch from Kent Sibilev <ksruby at gmail.com>.
+ [ruby-core:08922]
+
+Mon Sep 25 23:10:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (rb_push_glob): need not to check by FilePathValue().
+ [ruby-dev:29599]
+
+ * dir.c (dir_globs): ditto.
+
+Mon Sep 25 22:26:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_path_end): skip root directory. fixed: [ruby-core:08913]
+
+ * lib/mkmf.rb (rm_f): get rid of NUL.
+
+ * lib/mkmf.rb (init_mkmf): set default $LDFLAGS. Patch by Michal
+ Suchanek <hramrach at centrum.cz>. [ruby-talk:216256]
+
+Mon Sep 25 15:06:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/test.rb: "print nil" now prints empty string.
+
+ * test/ruby/test_system.rb (TestSystem::test_system): ditto.
+
+Mon Sep 25 11:26:25 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (recursive_hash): remove unused local variable.
+
+ * parse.y (parser_yylex): ditto.
+
+ * parse.y (rb_gc_mark_symbols): fix unmatched prototype .
+
+ * file.c (rb_get_path): check NUL byte in the path string.
+
+Mon Sep 25 08:14:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_shift): should clear shifting top element.
+ [ruby-talk:216055]
+
+ * array.c (rb_ary_shift): avoid creating shared object if array
+ size is small.
+
+Mon Sep 25 08:11:35 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * random.c (rb_f_rand): RDoc typo fix. a patch from Frederick
+ Cheung <fred at 82ask.com>. [ruby-talk:216047]
+
+Sun Sep 24 21:19:24 2006 Guy Decoux <ts@moulon.inra.fr>
+
+ * gc.c (gc_mark_children): NODE_POSTEXE holds Ruby VALUE.
+ [ruby-core:08912]
+
+Sun Sep 24 22:28:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: extension library scripts moved into common directory.
+
+Sun Sep 24 12:10:04 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.3.
+
+Sun Sep 24 06:55:36 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_print): no special handling for nil as well as puts.
+ fixed: [ruby-dev:29586]
+
+Sun Sep 24 06:25:53 2006 why the lucky stiff <why@ruby-lang.org>
+
+ * eval.c (rb_thread_save_context, rb_thread_restore_context):
+ sandbox hook to save and restore sandbox state.
+
+ * eval.c (thread_no_ensure): added THREAD_NO_ENSURE thread flag.
+
+ * eval.c (rb_thread_kill_bang): Thread#kill! uses the above flag
+ to circumvent ensure, in order to prevent endless loops.
+ contributed by MenTaLguY. [ruby-core:08768]
+
+ * eval.c (rb_thread_kill): fix Thread#kill docs, which returns
+ the thread object in all cases.
+
+ * node.h: expose the rb_jmpbuf_t and rb_thread_t structs, along
+ with the thread flags. used by the sandbox extension.
+
+ * ruby.h: extern rb_eThreadError, so sandbox can swap it.
+
+Sat Sep 23 21:34:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): CGI content
+ may be empty. a patch from Jamis Buck <jamis at 37signals.com>.
+
+Sat Sep 23 20:54:28 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.4.4
+
+ * regexec.c: ditto.
+
+ * regcomp.c ditto.
+
+Sat Sep 23 08:35:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc/ri/ri_options.rb: prevent NameError. [ruby-dev:29597]
+
+Sat Sep 23 01:02:57 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.2.
+
+Fri Sep 22 18:07:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_partition): no need to call rb_call_super(),
+ since String is no longer includes Enumerable.
+
+Fri Sep 22 17:33:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_eql): new method to be used by Hash.
+
+ * hash.c (rb_hash_hash): ditto.
+
+Fri Sep 22 06:53:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_hash): use rb_memhash().
+
+ * numeric.c (flo_hash): simplified. klass need not to affect
+ resulting hash value.
+
+Fri Sep 22 02:06:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .cvsignore: ignore timestamp files and installed list file.
+
+Fri Sep 22 01:36:34 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb: include FileUtils unconditionally.
+
+Fri Sep 22 00:36:05 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): fix_odd_p and fix_even_p are for Fixnum.
+ patch from Ondrej Bilka <neleai at seznam.cz>. [ruby-core:08904]
+
+Thu Sep 21 22:56:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (no-install): not install rdoc actually.
+
+ * common.mk (install-doc, no-install-doc): use instruby.rb.
+
+ * instruby.rb: rdoc installation.
+
+ * ext/extmk.rb: expand ruby executable names.
+
+Thu Sep 21 20:19:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_new3): embed shorter strings more eagerly.
+
+Thu Sep 21 17:44:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_startwith): a new method to check if a string
+ starts with given prefix.
+
+ * string.c (rb_str_endwith): the opposite of String#startwith?.
+
+Thu Sep 21 16:29:02 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * rubytest.rb: use each_line instead of each.
+
+Thu Sep 21 15:06:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_odd_p): a new method to check even or odd.
+ [RCR#337]
+
+ * numeric.c (int_even_p): ditto.
+
+Thu Sep 21 13:55:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/etc/etc.c (etc_getpwuid): uid integer should be wrapped in
+ uid_t value. [ruby-core:08897]
+
+ * ext/etc/etc.c (etc_getpwuid): uid_t may be bigger than plain
+ 'int' type.
+
+Thu Sep 21 10:07:09 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_partition): RDoc typo fixed. [ruby-core:08898]
+
+ * string.c (rb_str_rpartition): fixed separation seek bug.
+
+Thu Sep 21 09:38:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_lines): new method to split a string into lines.
+
+ * string.c (Init_String): Strings are no longer Enumerable. use
+ each_line or lines method explicitly.
+
+ * string.c (Init_String): remove each method. use each_lines.
+
+Wed Sep 20 23:17:41 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (pre-install-doc): create data directory before install.
+
+ * lib/mkmf.rb (dir_re): fixed typo.
+
+ * lib/mkmf.rb (install_dirs): remove extra slash.
+
+Wed Sep 20 22:41:45 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_mul): typo again. patch from Tadashi Saito
+ <shiba at mail2.accsnet.ne.jp>. fixed: [ruby-core:08893]
+
+Wed Sep 20 19:32:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_partition): a new method to separate the string
+ by a separator. taken from Python 2.5.
+
+ * string.c (rb_str_rpartition): ditto.
+
+Wed Sep 20 09:49:40 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32,wince}/Makefile.sub (INSTALLED_LIST): need to define
+ this macro to install.
+
+Wed Sep 20 09:43:10 2006 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: allow extra spaces in responses.
+ Thanks, Tom Soderlund.
+
+Wed Sep 20 09:25:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/gdbm/gdbm.c: add RDoc documentation. a patch from Peter
+ Adolphs <futzilogik at users dot sourceforge dot net>.
+ [ruby-doc:1223]
+
+Tue Sep 19 00:42:15 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_obj_ivar_defined, rb_mod_cvar_defined): new methods,
+ Kernel#instance_variable_defined? and Module#class_variable_defined?.
+ [ruby-dev:29587]
+
+ * lib/date/format.rb (Date::Bag#method_missing): use new method,
+ instance_variable_defined? to check if an instance variable is
+ defined. fixed: [ruby-dev:29554]
+ -- This didn't fix anything.
+
+Tue Sep 19 00:07:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_eql): fail early to gain performance.
+
+ * string.c (sym_hash): cache hash value in aux.shared if possible.
+
+ * gc.c (rb_obj_id): no need to treat symbols specially.
+
+ * lib/fileutils.rb (FileUtils::FileUtils): singleton_methods() no
+ longer return an array of strings, but of symbols.
+
+ * lib/delegate.rb (DelegateClass): ditto.
+
+Mon Sep 18 15:29:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_glob): restore GC protection volatile variable.
+ [ruby-dev:29588]
+
+ * re.c (rb_reg_regcomp): ditto.
+
+Mon Sep 18 12:16:48 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_mul): get rid of shift overflow.
+
+Mon Sep 18 10:47:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_glob): remove unused variable.
+
+ * math.c (math_log): ditto.
+
+ * re.c (rb_reg_regcomp): ditto.
+
+ * eval.c (break_jump): ditto.
+
+ * eval.c (rb_thread_yield_0): remove unused function.
+
+Sun Sep 17 23:44:58 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc#document): scan only files modified
+ after the previous generation.
+
+Sun Sep 17 17:42:13 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (install-doc): reverted.
+
+ * instruby.rb: stores file name list without destdir prefix.
+
+ * lib/rdoc/generators/ri_generator.rb: do not chdir twice.
+
+Sun Sep 17 10:42:10 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (fix_mul): fixed typo. fixed: [ruby-core:08885]
+
+Sat Sep 16 19:47:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * README.EXT: should mention new macros: RSTRING_PTR, RSTRING_LEN,
+ RARRAY_PTR, RARRAY_LEN.
+
+ * README.EXT.ja: ditto.
+
+Sat Sep 16 16:39:23 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.in, instruby.rb, ext/extmk.rb, lib/mkmf.rb:
+ use instruby.rb to install extensions instead of ext/extmk.rb.
+
+ * instruby.rb: store installed list into the file.
+
+ * ext/dbm/extconf.rb: allow multiple candidates for dbm-type.
+
+ * ext/io/wait/extconf.rb: suspicious checking_for.
+
+ * ext/pty/pty.c (establishShell): parent pid is not used.
+
+ * ext/pty/pty.c (freeDevice): not used.
+
+ * lib/mkmf.rb (checking_for): improved the messages.
+
+Sat Sep 16 11:03:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (ary_shared_first): should create embedded copies
+ instead of sharing memory region for smaller arrays.
+
+Sat Sep 16 09:37:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (inspect_struct): do not display a class name for
+ anonymous struct. The member fields are sufficient.
+
+Fri Sep 15 20:22:15 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-8/nkf.c: imported nkf 2.0.8 rev.110.
+ * Fix: check_bom cuts \xfe\xff\xXX\xXX of UTF-32LE.
+ * Add support --ic=UTF-32.
+ * Fix: can't guess UTF-16 and UTF-32.
+ * Fix: can't decode beyond BMP of UTF-16LE.
+
+ * ext/nkf/nkf.c (guess): Support UTF-32.
+
+ * ext/nkf/lib/kconv.rb (kconv): Support UTF-32.
+
+ * ext/nkf/lib/kconv.rb (to_utf32): new method.
+
+Fri Sep 15 05:23:24 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-8/nkf.c: imported nkf 2.0.8 2006-09-15.
+ Add support for U+10000 - U+10FFFF
+ Add support UTF-32
+
+Fri Sep 15 00:03:07 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/lib/digest.rb (Digest::Base.file): open a file in binary
+ mode. suggested by Kazuhiro NISHIYAMA. [ruby-dev:29579]
+
+Thu Sep 14 17:21:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_mul): avoid bignum multiplication as far as
+ possible. a patch from Ondrej Bilka <neleai at seznam.cz>.
+ [ruby-core:08825]
+
+Thu Sep 14 16:34:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): allow zero length symbols.
+ [ruby-core:08861]
+
+Thu Sep 14 16:11:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): raise SecurityError only when $SAFE
+ level is greater than zero. [ruby-core:08862]
+
+ * parse.y (rb_interned_p): new function to check if a string is
+ already interned.
+
+ * string.c (str_to_id): use rb_str_intern().
+
+Thu Sep 14 14:37:45 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/lib/digest.rb (Digest::Base.file): new method.
+ [ruby-dev:29572]
+
+Thu Sep 14 08:30:02 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/digest.c (rb_digest_base_inspect): new method.
+ [ruby-dev:29573]
+
+Thu Sep 14 01:13:56 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (ruby_init_stack): decrease "stack level too deep" in Windows.
+ [ruby-dev:29569]
+
+Thu Sep 14 01:02:25 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/digest/lib/digest.rb: new file.
+ [ruby-dev:28689]
+
+Wed Sep 13 18:43:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * README.EXT: English adjustment. [ruby-core:08851] and
+ [ruby-core:08852]
+
+Wed Sep 13 18:25:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): better here-doc support.
+ a patch from Marshall T. Vandegrift <llasram at gmail.com>.
+ [ruby-core:08804]
+
+Wed Sep 13 16:43:36 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): prohibit interning tainted string.
+
+Wed Sep 13 01:14:02 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#getopts): works with pre-registered
+ options. [ruby-core:08826]
+
+Tue Sep 12 03:58:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_compare_by_identity): rename Hash#identical to
+ Hash#compare_by_identity.
+
+Mon Sep 11 16:52:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_identical): a new method to make a hash to
+ compare keys by their identity.
+
+ * hash.c (rb_hash_identical_p): new method to tell if a hash is
+ identical or not.
+
+ * st.c (st_numcmp, st_numhash): export hash type functions.
+
+Mon Sep 11 11:42:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rexml/source.rb (REXML::Source::encoding): should not
+ convert the body twice. [ruby-core:08828]
+
+ * lib/rexml/encoding.rb (REXML::Encoding::encoding):
+ Encoding#encoding= to return boolean value to tell if the body
+ is really converted or not.
+
+ * lib/rexml/encoding.rb (REXML::Encoding::encoding): Specific
+ conversion library (e.g. rexml/encodings/UTF-16.rb) to have
+ higher preceding.
+
+ * lib/rexml/encodings/UTF-16.rb (REXML::Encoding::decode_utf16):
+ UTF-16#decode_utf16 should work strings without BOM.
+
+Mon Sep 11 07:39:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_equal): "sym == str" should compare them as
+ strings. [ruby-dev:29554]
+
+Sun Sep 10 22:59:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (parse_args): remove splat.
+
+Sun Sep 10 20:25:30 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.1.
+
+Sun Sep 10 09:41:29 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c: ISPRINT() needs ctype.h
+
+Sun Sep 10 09:19:47 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb: splat parsed arguments.
+
+Tue Jan 10 09:18:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_require_safe): prevent extension from loading twice.
+ fixed: [ruby-dev:29523]
+
+Sat Sep 9 23:55:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_f_test): test(0) should not have any special
+ meaning. [ruby-dev:29425]
+
+ * file.c (rb_f_test): properer error message.
+
+Sat Sep 9 14:08:38 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/test/unit/testcase.rb (Test::Unit::TestCase#run): Rescue
+ Exception in Test::Unit::TestCase#run. [ruby-core:08783]
+
+Sat Sep 9 04:55:59 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pstore.rb: open all in binary mode, and get rid of the quirk of
+ msvcrt. fixed: [ruby-dev:29518]
+
+Sat Sep 9 04:47:45 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub (MINIRUBY): append MINIRUBYOPT.
+
+ * mkconfig.rb, ext/extmk.rb, lib/mkmf.rb, win32/mkexports.rb: suppress
+ warnings with $VERBOSE.
+
+ * win32/resource.rb: only file which has more than one icon is DLL.
+
+Fri Sep 8 16:53:30 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_alloc): should allocate a String object, even when
+ asked to allocate a Symbol object. [ruby-dev:29529]
+
+Fri Sep 8 16:36:27 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): follow Array#to_s.
+
+ * lib/mkmf.rb (create_makefile): ditto.
+
+ * win32/resource.rb: ditto.
+
+Fri Sep 8 10:00:12 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cookie.rb (WEBrick::Cookie.parse_set_cookies): new
+ method to parse multiple cookies per Set-Cookie header.
+ Thanks to Aaron Patterson <aaron_patterson at speakeasy.net>.
+ [ruby-core:08802]
+
+Fri Sep 8 08:59:30 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub, win32/configure.bat win32/setup.mak: program
+ name transform.
+
+Fri Sep 8 08:25:39 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb: suppress `assigning void value' warning.
+
+Fri Sep 8 01:16:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (Init_Array): #to_s to be an alias to #inspect.
+ [ruby-dev:29520]
+
+ * hash.c (Init_Hash): ditto.
+
+ * lib/mkmf.rb (create_makefile): replace "print array" by
+ "print *array".
+
+ * mkconfig.rb: ditto.
+
+Thu Sep 7 21:02:56 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (nil_to_s): returns the empty string again.
+ [ruby-dev:29520]
+
+Thu Sep 7 23:27:05 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (path_check_0, fpath_check): disable path check on cygwin.
+ [ruby-talk:213074]
+
+Thu Sep 7 02:03:45 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_to_s): adopt new date format using digits
+ e.g. "2006-09-07 02:03:45 +9000".
+
+Thu Sep 7 01:54:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (sym_equal): override. check equivalence.
+
+Wed Sep 6 13:25:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (symbols_i): need to initialize early-created symbols.
+ [ruby-dev:29496]
+
+Wed Sep 6 12:05:19 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (Kconv::toeuc): remove -m0 [ruby-dev:29505]
+
+Tue Sep 5 22:06:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tcltklib.c: use rb_ary_new3() since RARRAY_LEN() is not l-value.
+
+ * ext/tk/tkutil/tkutil.c: use RARRAY_PTR() and RARRAY_LEN() and etc.
+ fixed: [ruby-dev:29473]
+
+Tue Sep 5 06:47:22 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_to_s): variable declaration after an execution
+ statement.
+
+Tue Sep 5 05:49:41 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (path_check_0): check if sticky bit is set on parent
+ directories for executable path. fixed: [ruby-dev:29415]
+
+Tue Sep 5 05:03:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_plus): addition in Fixnum will never overflow
+ long. a patch from Ondrej Bilka <neleai at seznam.cz>.
+ [ruby-core:08794]
+
+ * numeric.c (fix_minus): ditto.
+
+ * bignum.c (rb_big_pow): eagerly truncate resulting bignum.
+ [ruby-core:08794]
+
+Mon Sep 4 23:15:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_to_s): make it conform to RFC2822 date format.
+ [ruby-dev:29467]
+
+Mon Sep 4 21:43:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dbm/extconf.rb: create makefile according to the result of check
+ for dbm header. fixed: [ruby-dev:29445]
+
+Mon Sep 4 21:39:42 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.
+
+Mon Sep 4 21:14:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_strftime): include nul character. fixed: [ruby-dev:29422]
+
+Mon Sep 4 16:39:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::out): specify -x option for nkf.
+
+ * lib/cgi.rb (CGI::out): should not convert utf-8 implicitly using
+ NKF. it is too Japanese centric.
+
+Mon Sep 4 14:23:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/extconf.rb (db_check): remove debug print.
+
+Mon Sep 4 06:46:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_id2sym): intern if id is attrset_id.
+ [ruby-dev:29420] [ruby-dev:29447]
+
+Mon Sep 4 01:25:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_local_variables): list symbols.
+
+ * struct.c (rb_struct_s_members_m): ditto.
+
+ * variable.c (ivar_i): ditto.
+
+ * variable.c (gvar_i): ditto.
+
+ * variable.c (cv_i): ditto.
+
+Sun Sep 3 20:47:02 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.h (SYMBOL_P): Qnil and Qfalse are not Symbol.
+
+Sun Sep 3 15:32:44 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: get rid of nil.to_s.
+
+Sun Sep 3 06:24:38 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (ruby_connect): sockerrlen should be socklen_t.
+
+Sun Sep 3 04:40:42 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: check arpa/inet.h for ntohs.
+
+ * ext/socket/socket.c: include arpa/inet.h if available.
+
+Sat Sep 2 23:59:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (Init_String): undef Symbol#new.
+
+ * struct.c (rb_struct_s_def): wrong symbol detection.
+
+Sat Sep 2 23:59:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_to_id): a bug caused by premature optimization.
+
+Sat Sep 2 23:53:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): move symbol related code to string.c
+
+ * string.c (Init_String): Symbol as subclass of String.
+
+ * parse.y (rb_intern2): handle symbol as strings.
+
+ * string.c (str_new): substring of symbols are mere strings, not
+ symbols.
+
+Sat Sep 2 23:37:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (struct RArray): embed small arrays.
+ (RARRAY_LEN): defined for accessing array members.
+ (RARRAY_PTR): ditto.
+
+ * array.c: use RARRAY_LEN and RARRAY_PTR.
+
+Sat Sep 2 13:23:01 2006 Tanaka Akira <akr@fsij.org>
+
+ * common.mk (ia64.o): use the compiler driver to assemble ia64.s
+ to use appropriate ABI.
+
+Sat Sep 2 12:06:35 2006 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/generator.rb (SOAP::SOAPGenerator#encode_tag): do not dump
+ XML attribute which value is nil. value "" and nil both were dumped
+ as 'attr="value"'. [ruby-dev:29395]
+
+Sat Sep 2 12:00:32 2006 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb (CSV::IOReader#initialize): use String#[](pos, len)
+ instead of String#[](idx) to check utf BOM. follows String#[](idx)
+ behavior change of 1.9.
+
+Sat Sep 2 11:47:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should handle when in else clause. a patch
+ from Eric Hodel <drbrain at segment7.net>. [ruby-core:08662]
+
+ * parse.y (primary): wrap with NODE_CASE. [ruby-core:08663]
+
+Fri Sep 1 22:07:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (RSTRING_EMBED_LEN_MASK): uses 5 bits to support 64bit
+ environment. [ruby-dev:29369]
+
+Fri Sep 1 22:02:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_resize): should copy embedded string to
+ malloc'ed buffer. a patch from <nobu at ruby-lang.org> in
+ [ruby-dev:29369]. fixed: [ruby-dev:29368]
+
+ * string.c (rb_str_ord): use %ld specifier since STRING_LEN() is a
+ long. [ruby-dev:29369]
+
+Fri Sep 1 21:41:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (socks_init): typo fixed. a patch from Sven
+ Klemm <sven at c3d2.de>. [ruby-core:08770]
+
+Fri Sep 1 14:22:42 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle): RDoc fixed.
+
+Fri Sep 1 13:52:57 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/font.rb: TkFont#current_configinfo() doesn't work
+ on Tcl/Tk8.x.
+
+Fri Sep 1 09:32:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex::getc): should not push nil into
+ reading buffer (@readed). reported in
+ <http://jarp.does.notwork.org/diary/200608c.html#200608311>.
+
+Thu Aug 31 23:59:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): follow nil.to_s.
+
+Thu Aug 31 20:50:46 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): follow nil.to_s.
+
+ * win32/resource.rb: ditto.
+
+Thu Aug 31 20:21:47 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (search_required): use RSTRING_PTR and RSTRING_STR.
+
+ * file.c (test_identical, rb_file_s_truncate): ditto.
+
+ * io.c (pipe_open, rb_io_reopen): ditto.
+
+ * object.c (nil_plus): ditto.
+
+ * process.c (proc_spawn_n, rb_spawn): ditto.
+
+ * util.c (ruby_add_suffix): ditto.
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): ditto.
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): ditto.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_create_ext): ditto.
+
+ * ext/tk/stubs.c, ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: ditto.
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata): ditto.
+
+Thu Aug 31 18:23:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (struct RString): embed small strings.
+ (RSTRING_LEN): defined for accessing string members.
+ (RSTRING_PTR): ditto.
+
+ * string.c: use RSTRING_LEN and RSTRING_PTR.
+
+Thu Aug 31 17:16:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_shuffle_bang): new method.
+
+ * array.c (rb_ary_shuffle): ditto.
+
+ * random.c (genrand_real): ditto.
+
+ * random.c (genrand_int32): export the function.
+
+ * random.c (Init_Random): initialize random seed at the
+ beginning.
+
+Thu Aug 31 13:12:06 2006 why the lucky stiff <why@ruby-lang.org>
+
+ * eval.c (ruby_init): rename top_cref to ruby_top_cref and export,
+ along with ruby_cref, for use by the sandbox. [ruby-core:08762]
+
+ * node.h: ditto.
+
+Wed Aug 30 12:01:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_hash): improve collision.
+
+ * string.c (rb_memhash): new generic function to calculate hash value
+ for memory chunk.
+
+Tue Aug 29 19:10:10 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): fixed memory leak, based on the patch
+ by Kent Sibilev <ksruby at gmail.com>. fixed: [ruby-talk:211233]
+
+Mon Aug 28 11:29:46 2006 Eric Hodel <drbrain@segment7.net>
+
+ * eval.c, parse.y: Revert.
+ * ext/.document: Add digest.c.
+ * ext/digest/digest.c: Make RDoc show up.
+ * ext/io/wait.c: Fix call-seq in RDoc.
+
+Mon Aug 28 08:03:20 2006 Eric Hodel <drbrain@segment7.net>
+
+ * ext/.document: Add C files with RDoc.
+ * ext/digest/digest.c: Convert to RDoc.
+ * ext/io/wait.c: ditto.
+ * lib/rdoc/parsers/parse_rb.rb: Fix typo. Submitted by
+ <calamitas at gmail.com>. [ruby-core:08724]
+
+Mon Aug 28 07:21:47 2006 Eric Hodel <drbrain@segment7.net>
+
+ * file.c (File#size?): Fix documentation submitted by Rick Ohnemus.
+ ruby-Bugs-5529. [ruby-core:08725]
+
+Sun Aug 27 21:41:23 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.4.0
+
+ * regint.h: ditto.
+
+ * regparse.h: ditto.
+
+ * regexec.c: ditto.
+
+ * regcomp.c ditto.
+
+ * regparse.c: ditto.
+
+Sat Aug 26 08:03:03 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: updated based on date2 3.8.2.
+
+Fri Aug 25 21:15:22 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * common.mk: add regint.h and oniguruma.h to dependence.
+
+ * ext/strscan/depend: ditto.
+
+Fri Aug 25 20:35:57 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/wsdl/document/echo.rb: removed.
+
+ * test/wsdl/document/test_rpc.rb: remove echo.rb after test.
+ [ruby-dev:29337]
+
+Fri Aug 25 17:02:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_sweep): typo fixed.
+
+Fri Aug 25 16:05:50 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (sym_call): check if the receiver is given.
+
+Fri Aug 25 01:10:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_Integer): Integer(nil) should raise TypeError.
+ [ruby-talk:210205]
+
+ * object.c (nil_to_s): no longer returns empty string but "nil".
+ [ruby-talk:210205]
+
+ * lib/mkmf.rb: avoid COMMON_HEADERS being nil.
+
+Wed Aug 23 00:25:14 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rexml/source.rb (REXML::IOSource#initialize): encoding have to
+ be set with the accessor. fixed: [ruby-list:42737]
+
+Tue Aug 22 19:21:00 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: parameter `to_addrs' might be an Array,
+ .flatten is required. [ruby-dev:29316]
+
+Tue Aug 22 18:47:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::handle_method):
+ rdoc documents C module methods as instance methods. a patch in
+ [ruby-core:08536].
+
+Tue Aug 22 12:35:57 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (Kconv::RegexpEucjp): fix regexp for
+ euc-jp [ruby-dev:29344]
+
+Sun Aug 20 11:46:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (num_step): also return an enumerator object if no block
+ is given.
+
+Sat Aug 19 16:47:51 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (hash2named_arg): accept hash argument
+ of symbol key.
+
+ * test/win32ole/test_win32ole.rb
+ ditto.
+
+Sat Aug 19 11:28:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_rename): use errno if set properly.
+ fixed: [ruby-dev:29293]
+
+Fri Aug 18 01:05:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::out): specify -m0 to disable MIME decode. a
+ patch from Fujioka <fuj at rabbix.jp>. [ruby-dev:29284]
+
+Thu Aug 17 19:15:16 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_[rRwWxX]): check for super user.
+ fixed: [ruby-core:08616]
+
+Thu Aug 17 14:47:06 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: added rdoc by Daniel Berger. [ruby-core:08177]
+
+Wed Aug 16 17:46:59 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_byte): IO#getc returns one byte string now.
+ fixed: [ruby-dev:29255]
+
+Wed Aug 16 17:22:44 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (pre-install-local): remove unnecessary code.
+ [ruby-dev:29249]
+
+Wed Aug 16 11:45:36 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_setuid, proc_setgid, proc_seteuid, proc_setegid):
+ get rid of bogus implementations on Mac OS X.
+
+Wed Aug 16 11:09:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_arg0): fill argv other than the first with an empty
+ string instead of NULL.
+
+Tue Aug 15 11:21:08 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: support SMTP/SSL. Thanks Kazuhiro NISHIYAMA.
+
+ * lib/net/smtp.rb: new method SMTP.use_ssl?
+
+ * lib/net/smtp.rb: new method SMTP.enable_ssl.
+
+ * lib/net/smtp.rb: new method SMTP.disable_ssl.
+
+ * lib/net/smtp.rb: new method SMTP.default_ssl_port.
+
+ * lib/net/smtp.rb: new method SMTP.default_tls_port.
+
+ * lib/net/smtp.rb: now SMTP#enable_tls accepts a SSLContext
+ object, instead of a verity and cert. [FEATURE CHANGE]
+
+ * lib/net/smtp.rb: new method SMTP.ssl_context.
+
+ * lib/net/smtp.rb: new method SMTP.default_ssl_context.
+
+ * lib/net/smtp.rb: export SMTP.authenticate.
+
+ * lib/net/smtp.rb: export SMTP.auth_plain.
+
+ * lib/net/smtp.rb: export SMTP.auth_login.
+
+ * lib/net/smtp.rb: export SMTP.auth_cram_md5.
+
+ * lib/net/smtp.rb: export SMTP.starttls.
+
+ * lib/net/smtp.rb: export SMTP.helo.
+
+ * lib/net/smtp.rb: export SMTP.ehlo.
+
+ * lib/net/smtp.rb: export SMTP.mailfrom.
+
+ * lib/net/smtp.rb: export SMTP.rcptto.
+
+ * lib/net/smtp.rb: export SMTP.rcptto_list.
+
+ * lib/net/smtp.rb: export SMTP.data.
+
+ * lib/net/smtp.rb: export SMTP.quit.
+
+Sat Aug 12 22:33:06 2006 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (String#split): Describe grouping behavior. Patch by Jan
+ Svitok <jan.svitok at gmail.com>. [ruby-core:08603]
+
+Sun Aug 13 12:08:02 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c: ANSIfied. [ruby-core:08601]
+
+Sat Aug 12 15:55:32 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, bcc32/Makefile.sub, win32/Makefile.sub, win32/dir.h,
+ win32/win32.c, win32/win32.h: large file support for win32.
+
+Fri Aug 11 15:39:25 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#find_body): Make RDoc
+ ignore C function prototypes. Patch by Tilman Sauerbeck
+ <tilman at code-monkey.de>. [ruby-core:8574]
+ * lib/yaml/tag.rb: Replace nodoc with stopdoc so Module methods get
+ documented.
+
+Wed Aug 9 16:53:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/smtp.rb (Net::SMTP::auth_cram_md5): use ord to retrieve
+ bytes from strings. a patch from WATANABE Tetsuya
+ <Tetsuya.WATANABE at nifty.com>. [ruby-dev:29240]
+
+Tue Aug 8 23:49:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/extend-command.rb (IRB::ExtendCommandBundle): pacify
+ RDoc. a patch from Eric Hodel <drbrain at segment7.net>.
+ [ruby-core:08522]
+
+Tue Aug 8 19:26:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder::get_string):
+ affected by str[0] returns 1 char string. [ruby-dev:29223]
+
+ * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder::get_labels):
+ ditto.
+
+Tue Aug 8 12:28:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (arg): allow newlines before ternary colon. [ruby-dev:29189]
+
+Mon Aug 7 17:56:59 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c, ext/digest/rmd160/rmd160ossl.c,
+ ext/digest/sha1/sha1ossl.c, ext/readline/readline.c: move
+ inclusion of config.h to pacify AIX. a patch from Yutaka
+ Kanemoto <kinpoco at gmail.com>. [ruby-dev:29197]
+
+Mon Aug 7 15:55:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/syck.c (syck_move_tokens): should avoid negative
+ memmove. [ruby-list:42625]
+
+Mon Aug 7 14:37:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in, common.mk: AIX link issue. a patch from Yutaka
+ Kanemoto <kinpoco at gmail.com>. [ruby-dev:29190]
+
+ * ext/socket/socket.c: AIX socket support. [ruby-dev:29190]
+
+Mon Aug 7 12:05:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dln.c, eval.c, gc.c, ruby.h: shut up AIX alloca warning.
+ a patch from Yutaka Kanemoto <kinpoco at gmail.com>.
+ [ruby-dev:29191]
+
+Sun Aug 6 20:34:24 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (str[fp]time): %[EO]U didn't denote %U.
+
+Sun Aug 6 17:12:12 2006 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_reopen): STDERR.reopen(open("/dev/tty", "w")) should not
+ clear FMODE_PREP in STDERR.
+
+Sat Aug 5 22:53:41 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.2.2
+
+ * regint.h: ditto.
+
+ * regparse.h: ditto.
+
+ * regexec.c: ditto.
+
+ * regcomp.c ditto.
+
+ * regerror.c: ditto.
+
+ * regparse.c: ditto.
+
+Sat Aug 5 17:07:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (top_local_setup): local_vars[-1] should point
+ ruby_scope itself to protect local_tbl from garbage collection.
+ [ruby-dev:29049]
+
+Sat Aug 5 13:49:43 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb (str[fp]time): "%\n" means "\n".
+
+Fri Aug 4 12:13:22 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib: Clean up files for RDoc.
+ * lib/.document: Include most of the standard library in RDoc
+ generation.
+ * lib/rdoc/ri/ri_formatter.rb: Don't unescape HTML in HtmlFormatter.
+ Submitted by <ksruby at gmail.com>. [ruby-core:08392].
+ * lib/drb/ssl.rb: Close socket on SSLError [ruby-core:7197]
+
+Fri Aug 4 18:59:49 2006 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/{init.rb,ruby-lex.rb,slex.rb}: can't input '\c' for
+ [ruby-core: 7122]. and support for ruby1.8.X
+
+Fri Aug 4 14:02:14 2006 James Edward Gray II <james@grayproductions.net>
+
+ * lib/date/format.rb (__strptime, strftime): allow multi-line patterns
+ in Date#strftime the same as Time#strftime accepts.
+ fixed: [ruby-core:08466]
+
+Fri Aug 4 13:56:51 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack): check argument overrun for 'P'. based on a
+ patch by rucila <rucila at yahoo.cojp>. fixed: [ruby-dev:29182]
+
+Fri Aug 4 02:42:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): a bug in %c type check.
+
+Fri Aug 4 01:28:19 2006 Tanaka Akira <akr@fsij.org>
+
+ * io.c (io_reopen): STDERR.reopen(File.open("/dev/null", "w")) should
+ not fclose stderr.
+
+Thu Aug 3 15:16:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_include): should always call Enumerable#include?
+ (not #===) for non numeric end points. [ruby-core:08477]
+ [ruby-core:08496]
+
+Mon Jul 31 16:51:40 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (exit_handler): new function; release winsock and
+ environment work area.
+
+ * win32/win32.c (NTInitialize): setup exit_handler.
+
+ * win32/win32.c (StartSockets): use exit_handler.
+
+ * win32/win32.c (rb_w32_getenv): use GetEnvironmentStrings() instead
+ of GetEnvironmentVariable(), because the latter cannot distinguish
+ whether a null environment variable exists or not.
+ fixed: [ruby-talk:205123]
+
+Mon Jul 31 16:15:13 2006 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_process.rb (TestProcess#test_rlimit_nofile):
+ setrlimit may fail with EINVAL.
+ reported by MIYAMUKO Katsuyuki. [ruby-dev:29174]
+
+Mon Jul 31 09:22:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: use ifdef (or defined) for macro constants that may or
+ may not be defined to shut up gcc's -Wundef warnings.
+ [ruby-core:08447]
+
+Mon Jul 31 13:38:13 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPReuqest#parse_uri): improve
+ for the value of IPv6 address in the Host: header field.
+
+Sun Jul 30 23:26:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call0): trace call/return of method defined from block.
+ fixed: [ruby-core:08329]
+
+ * eval.c (rb_trap_eval): make the current thread runnable to deal with
+ exceptions which occurred within the trap. fixed: [ruby-dev:27729]
+
+ * lib/cgi/session.rb, lib/cgi/session/pstore.rb: suppress warnings.
+ fixed: [ruby-talk:204896]
+
+Sat Jul 29 06:12:06 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: freeze ip_name for security reason.
+
+Sat Jul 29 01:23:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/logger.rb: improves the amount of documentation that Rdoc
+ picks up when processing logger.rb by moving the require
+ statement back before the comment block. a patch from Hugh
+ Sasse <hgs at dmu.ac.uk>. [ruby-core:08422]
+
+Fri Jul 28 17:18:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/curses/curses.c (NUM2CH, CH2FIX): use single char strings.
+
+Fri Jul 28 14:09:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): fixed typo in cache look-up. [ruby-dev:29167]
+
+Fri Jul 28 10:41:35 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): a bug in method cache look-up.
+ http://www.rubyist.net/~matz/20060720.html#c04
+
+Fri Jul 28 10:19:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): documentation update patch from Jacob
+ Fugal <lukfugl at gmail.com>. [ruby-core:08418]
+
+Fri Jul 28 09:41:45 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_to_s): fixed typo. [ruby-dev:29162]
+
+Fri Jul 28 00:26:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (domain_check): ANSI style function arguments
+
+ * math.c (math_log): too few argument to domain_check().
+
+Thu Jul 27 21:19:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (domain_check): a new function to check domain error
+ explicitly for systems that return NaN like FreeBSD.
+ [ruby-core:07019]
+
+ * math.c (math_acos, math_asin, math_acosh, math_atanh, math_log,
+ math_log10, math_sqrt): use domain_check().
+
+ * math.c (math_sqrt): fix documentation flaw.
+
+Thu Jul 27 22:21:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_to_s): fixed format mismatch.
+
+Thu Jul 27 18:12:12 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * time.c: need to declare time_utc_offset.
+
+Thu Jul 27 17:01:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_close): always calls "close" method of the receiver.
+ [ruby-core:6911] [ruby-core:8112]
+
+Thu Jul 27 16:41:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/openssl/ossl.h: move <ruby.h> inclusion point to shut up
+ Solaris compiler. [ruby-core:08114]
+
+ * time.c (time_to_s): use +0900 style timezone string for local time.
+ [ruby-dev:29143]
+
+Wed Jul 26 22:20:59 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: add support for as and ASFLAGS. [ruby-dev:29138]
+
+Wed Jul 26 21:59:33 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (Net::HTTP#post, request_post, request): should
+ set Content-Type: x-www-form-urlencoded by default.
+
+ * lib/net/http.rb (Net::HTTPHeader#content_type): should return
+ nil when there's no Content-Type.
+
+ * lib/net/http.rb (Net::HTTPHeader#sub_type): should return nil
+ when there's no sub Content-Type (e.g. "Content-Type: text").
+
+ * lib/net/http.rb (Net::HTTPHeader#type_params): wrongly failed
+ when there's no Content-Type.
+
+Wed Jul 26 18:38:13 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c (strscan_do_scan): always return nil if
+ p->curr exceeds string size.
+
+Wed Jul 26 18:33:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): rename #invoke_method and
+ #invoke_functional_method to __send and __send! respectively.
+
+ * eval.c (remove_method): prohibit removing __send and __send!.
+
+ * eval.c (rb_undef): prohibit undef'ing __send and __send!.
+
+ * eval.c (rb_eval): prohibit redefining __send and __send!.
+
+ * lib/delegate.rb (Delegator): preserve __send.
+
+Wed Jul 26 18:14:19 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (getDevice): retry once after GC on failure.
+ [ruby-core:08282]
+
+Wed Jul 26 17:43:20 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c (strscan_do_scan):
+ StringScanner.new("").scan(//) should return "". [ruby-Bugs:4361]
+
+Wed Jul 26 17:28:16 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): prepend ".." to %u for negative bignum,
+ but not "-". fixed: [ruby-core:08167]
+
+Wed Jul 26 16:39:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_scan): add string modification check.
+ [ruby-core:7216]
+
+Wed Jul 26 16:06:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): check
+ multipart boundary end. a patch from Fujioka <fuj at rabbix.jp>
+ [ruby-dev:28470]
+
+Wed Jul 26 01:02:59 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: suppress warnings by automake 1.8 or later.
+
+Tue Jul 25 14:46:14 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): typo.
+
+Tue Jul 25 13:14:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_proc_times): rename hz to hertz to avoid name
+ crash on AIX. [ruby-dev:29126]
+
+Mon Jul 24 22:03:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (backtrace): skip frames successive on node and method name.
+
+Mon Jul 24 15:51:52 2006 Tanaka Akira <akr@fsij.org>
+
+ * ext/readline/readline.c (readline_readline): rl_deprep_term_function
+ may be NULL with libedit. reported by Ryan Davis. [ruby-dev:29070]
+
+Mon Jul 24 15:19:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): revert last change. [ruby-dev:29112]
+ [ruby-core:08374]
+
+Sun Jul 23 22:59:49 2006 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_unix.rb: disabled on cygwin.
+ reported by Kouhei Yanagita. [ruby-dev:29080]
+
+Fri Jul 21 23:57:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): script is never used while recursing.
+
+Fri Jul 21 21:21:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call0): include funcalled methods in caller list.
+ fixed: [ruby-core:08290]
+
+Fri Jul 21 17:52:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): "9_e8" should consider "_e8" as
+ trailing garbage so that it should return 9.0. [ruby-dev:29088]
+
+Fri Jul 21 12:11:00 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, lib/mkmf.rb (with_destdir): remove drive letter before
+ prepending destdir on DOSISH.
+
+Fri Jul 21 04:17:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): try local method look-up first for fcall, then
+ normal method look-up. [ruby-talk:202564]
+
+ * eval.c (rb_get_method_body): save local method cache separately.
+
+ * eval.c (search_method): export info whether method is local or
+ not.
+
+Thu Jul 20 20:27:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_attr): make Module#attr to be an alias to
+ attr_reader. [RCR#331]
+
+Thu Jul 20 15:07:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: export classes/modules to implement sandbox.
+ [ruby-core:08283]
+
+Wed Jul 19 19:40:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): should check args_args before lambda
+ argument check. [ruby-dev:29029]
+
+Tue Jul 18 23:53:59 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_f_system): shouldn't block SIGCHLD if it's not
+ exist.
+
+Tue Jul 18 22:10:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_system): block SIGCHLD during the process
+ execution, like glibc system(3) does. [ruby-talk:202361]
+
+Tue Jul 18 23:10:43 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (open_ifs_socket): should not use plain malloc.
+
+ * win32/win32.c (rb_w32_opendir): should not use plain realloc.
+
+Tue Jul 18 18:05:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_float.rb (TestFloat::test_strtod): update test to
+ conform strtod change.
+
+Tue Jul 18 16:52:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (yield_under_i): argument should be passed in avalue
+ form. [ruby-dev:29044]
+
+Tue Jul 18 15:49:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): propagate association array to copied
+ string. [ruby-core:08223]
+
+ * pack.c (pack_unpack): return referenced string itself if it has
+ same length as specified. a patch from <nobu at ruby-lang.org>
+ in [ruby-core:08225].
+
+ * pack.c (pack_pack): taint 'p' packed strings.
+
+Tue Jul 18 15:19:07 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * intern.h (st_foreach_safe): fix prototype.
+
+ * node.h (NODE_LMASK): bigger than long on LLP64.
+
+ * missing/vsnprintf.c (BSD__uqtoa): new function to support LLP64.
+ all changes are derived from [ruby-dev:29045]
+
+Tue Jul 18 14:03:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer::unmount): remove
+ inpect argument from sprintf. [ruby-dev:29039]
+
+Tue Jul 18 10:53:37 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): limit out-of-range message.
+
+ * util.c (ruby_strtod): return end pointer even if ERANGE occurred.
+ fixed: [ruby-dev:29041]
+
+Mon Jul 18 00:43:05 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod): stop at dot not followed by digits.
+ fixed: [ruby-dev:29036]
+
+Tue Jul 18 00:01:27 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: remove LIBRUBY_SO if static linked extensions exist.
+
+Mon Jul 17 23:30:46 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_msvcrt): defaulted to msvcrt. Workaround for a
+ bug of cygwin 1.5.20.
+
+Mon Jul 17 22:55:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/io/wait/wait.c (io_ready_p): protoize.
+
+Mon Jul 17 13:43:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (define_swapx): should not use plain malloc.
+
+ * ext/curses/curses.c (curses_getmouse): ditto.
+
+Mon Jul 17 12:58:41 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: should use ac_cv_lib_dl_dlopen=no on MinGW.
+
+Mon Jul 17 11:47:35 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * st.c: still need to include config.h on some platforms.
+
+Sat Jul 15 01:09:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (malloc): use xmalloc/xcalloc instead of plain
+ malloc/calloc, to detect memory allocation failure. see
+ <http://www.nongnu.org/failmalloc/>.
+
+Fri Jul 14 13:08:13 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add methods for new features of latest Tcl/Tk8.5.
+
+ * ext/tk/lib/tk/namespace.rb: ditto.
+
+Fri Jul 14 02:30:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/monitor.rb: document patch from Hugh Sasse <hgs at dmu.ac.uk>.
+ [ruby-core:08205]
+
+Fri Jul 14 00:10:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_pop): may cause realloc oscillation. a patch
+ from MORITA Naoyuki <mlgetter at kidou.sakura.ne.jp>.
+ [ruby-dev:29028]
+
+Thu Jul 13 22:23:56 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/composite.rb: improve handling of the classname on the
+ option database for the widget class which includes TkComposite.
+
+Thu Jul 13 00:40:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (FIX2LONG): returns integer of size of VALUE.
+ [ruby-dev:29024]
+
+ * ruby.h (FIX2ULONG): ditto.
+
+Wed Jul 12 20:05:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_args): allow post mandatory arguments after optional
+ arguments. [ruby-dev:29014]
+
+ * parse.y (new_args_gen): allow post_args without rest_args.
+
+ * eval.c (formal_assign): ditto.
+
+ * parse.y (new_args_gen): check post argument duplication.
+
+Tue Jul 11 20:58:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: export rb_cMethod. [ruby-talk:201259]
+
+Tue Jul 11 19:13:33 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: remove restriction on the class of
+ pseudo-toplevel.
+
+Tue Jul 11 18:00:57 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: security fix.
+
+Tue Jul 11 17:28:08 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_dump): need to extend len for \b.
+
+Tue Jul 11 15:29:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_int2big): use SIGNED_VALUE. [ruby-dev:29019]
+
+ * bignum.c (rb_int2inum, rb_uint2inum): use VALUE sized integer.
+
+ * bignum.c (rb_big2long, rb_big2ulong): ditto.
+
+ * numeric.c (rb_num2long, rb_num2ulong): ditto.
+
+ * numeric.c (check_int, check_uint): ditto.
+
+ * bignum.c (rb_quad_pack): typo fixed.
+
+Tue Jul 11 13:40:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bignorm): sizeof(long) may be smaller than
+ sizeof(VALUE). [ruby-dev:29013]
+
+ * ruby.h (FIXNUM_MAX): fixnum may be bigger than long.
+
+ * ruby.h (SIGNED_VALUE): signed integer of size of VALUE.
+
+Mon Jul 10 23:37:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/soap/rpc/proxy.rb (Proxy::Operation::response_doc): remove
+ splat star from return statements.
+
+ * lib/soap/rpc/proxy.rb (Proxy::Operation::response_obj): retrieve
+ the first value from the result array if response has only one
+ value.
+
+Mon Jul 10 22:00:00 2006 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: Allows '_' to appear within
+ digits. [ruby-dev:28872]
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb: Bug in to_r reported by
+ [ruby-list:42533] fixed.
+
+Mon Jul 10 19:22:19 2006 Tanaka Akira <akr@fsij.org>
+
+ * gc.c (gc_sweep): expand heap earlier.
+ reported by MORITA Naoyuki. [ruby-dev:28960]
+
+Mon Jul 10 18:59:34 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/font.rb: sorry. mistaken to patch.
+
+Mon Jul 10 18:46:52 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: make SEGV risk lower at exit.
+
+ * ext/tk/lib/tk.rb: ditto.
+
+ * ext/tk/lib/multi-tk.rb: fail to call function-style methods on slave
+ interpreters. The strategy (MultiTkIp_PseudoToplevel_Evaluable) to
+ fix the problem is a little tricky. You may have to take care of
+ conflicting with it.
+
+ * ext/tk/lib/tk.rb: a little change for the pseudo-toplevel strategy.
+
+ * ext/tk/lib/tk/font.rb: ditto.
+
+ * ext/tk/lib/tk/msgcat.rb: ditto.
+
+ * ext/tk/lib/tkextlib/itk/incr_tk.rb: ditto.
+
+ * ext/tk/sample/demos-en/widget: fail to call function-style methods
+ on sample scripts. To fix it, a strategy which similar to the way
+ on MultiTiIp is used. Please take care when re-write and re-run a
+ demo script on the Widget-Demo code viewer.
+
+ * ext/tk/sample/demos-jp/widget: ditto.
+
+Mon Jul 10 17:32:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/test.rb: update test suites.
+
+ * test/ruby/test_assignment.rb (TestAssignment::test_yield): ditto.
+
+ * test/ruby/test_iterator.rb (TestIterator::test_itertest): ditto.
+
+Mon Jul 10 14:43:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): remove erroneously restored prot_tag->blkid
+ initialization. [ruby-dev:28997] [ruby-dev:29000]
+
+Mon Jul 10 13:58:08 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * signal.c (install_nativethread_sighandler): commented out.
+
+Mon Jul 10 09:29:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_clear_cache_for_remove): clear entries for included
+ module. fixed: [ruby-core:08180]
+
+Mon Jul 10 02:22:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should not overwrite block information in
+ current frame. [ruby-dev:28957]
+
+ * eval.c (rb_yield_0): retrieve proper block object from the frame
+ record.
+
+ * eval.c (proc_alloc): return preserved block object if it's
+ available.
+
+Mon Jul 10 01:48:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.h (st_data_t): use pointer sized integer for st_data_t.
+ [ruby-dev:28988]
+
+Sun Jul 9 18:06:47 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_constant): fix for value 1 at cross compiling.
+
+ * lib/mkmf.rb (create_makefile): prevent substitution of macro
+ definition. fixed: http://www.yotabanana.com/lab/20060624.html#p02
+
+Sun Jul 9 07:58:48 2006 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rdoc/parsers/parse_f95.rb: massive overhaul from Yasuhiro
+ Morikawa including new file suffixes, function support, public
+ variables and constants, derived-types, defined operators and
+ assignments, namelists, and subroutine and function
+ arguments. Truly massive.
+
+ * lib/rdoc/diagram.rb: diagrams are now cached.
+
+ * lib/irb/completion.rb: fixed a crasher when completing against
+ an unnamed class/module.
+
+ * lib/rdoc/parsers/parse_c.rb: private comment (--/++) support in
+ C-file rdoc.
+
+ * lib/debug.rb: minor clarification in help.
+
+ * lib/pp.rb: minor clarification on exception.
+
+Sun Jul 9 00:54:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (next_jump): deal with destination of next.
+ fixed: [ruby-core:08169]
+
+Fri Jul 7 17:49:16 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_ord): extract lower byte. fixed: [ruby-dev:28980]
+
+ * lib/jcode.rb (String#succ!): fix for 1.9. fixed: [ruby-dev:28979]
+
+Fri Jul 7 14:05:03 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): define FUNC_STDCALL/FUNC_CDECL.
+ from [ruby-dev:28970].
+
+Fri Jul 7 00:38:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_default): should not call default procedure if
+ no key is given. [ruby-list:42541]
+
+Thu Jul 6 23:30:04 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_proc_times): use sysconf(_SC_CLK_TCK) value prior to
+ HZ and CLK_TCK. fixed: [ruby-talk:200293]
+
+Thu Jul 6 21:50:06 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/cparse.c: sync with original code, rev 1.8.
+
+ * ext/racc/cparse/cparse.c: should mark CparseParams objects.
+
+ * lib/racc/parser.rb: sync with original code, rev 1.8.
+
+ * lib/racc/parser.rb: update coding style.
+
+Wed Jul 5 05:28:45 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (block_param): should allow block argument after splat
+ and post splat args.
+
+Wed Jul 5 01:12:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_lambda.rb (TestLambdaParameters::test_lambda_as_iterator):
+ -> style block no longer available. [ruby-dev:28958]
+
+Tue Jul 4 21:48:56 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (proc_options): suppress warning on DOSISH.
+
+Tue Jul 4 15:12:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): should not set prot_tag->blkid since it would
+ never catch breaks at this level. [ruby-dev:28922]
+
+Tue Jul 4 04:48:36 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c: ruby 1.9 HEAD 64 bit warnings clean up from
+ <ville.mattila at stonesoft.com>. [ruby-core:08120]
+
+Mon Jul 3 19:04:38 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_make_menu_embeddable): help to make a menu
+ widget embeddable (pack, grid, and so on) like as a general widget.
+ However, an embeddable menu may require to be defined some event
+ bindings for general use.
+
+ * ext/tk/lib/tk/event.rb: [bug fix] Tk.callback_break and
+ Tk.callback_continue don't work on MultiTkIp.
+
+ * ext/tk/lib/multi-tk.rb: ditto.
+
+ * ext/tk/lib/tk.rb: lack of Tk.callback_return.
+
+ * ext/tk/lib/tk/menu.rb: improve creating clone menus.
+
+Mon Jul 3 14:42:06 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/extconf.rb (PW_UID2VAL, PW_GID2VAL): defaulted to conversion
+ from int, and sys/types.h needs to be included before grp.h.
+ fixed: [ruby-dev:28938]
+
+Mon Jul 3 10:44:01 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (popen_exec): close file descriptors other than standard I/Os.
+ fixed: [ruby-dev:28924]
+
+Mon Jul 3 05:15:29 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/openssl/test_asn1.c: String#[]= doesn't accept Integer.
+
+Mon Jul 3 01:14:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_inspect): encode \b (\010) for escape.
+ [ruby-dev:28927]
+
+ * string.c (rb_str_dump): ditto.
+
+Sun Jul 2 19:03:30 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/cparse.c: sync with original code, rev 1.7.
+
+ * ext/racc/cparse/cparse.c: must require version.h to get
+ RUBY_VERSION_CODE.
+
+Sun Jul 2 18:42:27 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/cparse.c: sync with original source code, rev
+ 1.6.
+
+ * ext/racc/cparse/cparse.c: do not use rb_iterate to give a block
+ to the method, use rb_block_call instead. [ruby-dev:28445]
+
+Sun Jul 2 11:22:03 2006 Tanaka Akira <akr@m17n.org>
+
+ * io.c (io_reopen): STDOUT.reopen(filename, "w+") didn't work.
+ (rb_io_reopen): STDOUT.reopen(File.open(filename, "w+")) didn't work.
+
+Sat Jul 1 23:55:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (PUSH_FRAME): initialize frame->self. [ruby-dev:28911]
+
+Sat Jul 1 17:00:42 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/webrick/utils.rb: use Proc#yield instead of Proc#call.
+ [ruby-dev:28914]
+
+Sat Jul 1 15:15:49 2006 Tanaka Akira <akr@m17n.org>
+
+ * test/socket/test_nonblock.rb: add timeout to send/receive
+ an empty UDP packet.
+ [ruby-dev:28820]
+
+Fri Jun 30 23:46:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: should test isinf for Solaris with GCC compiler.
+ a patch from <ville.mattila at stonesoft.com>. [ruby-core:07791]
+
+ * configure.in: -shared patch from Andrew Morrow
+ <andrew.c.morrow at gmail.com>. [ruby-core:08100]
+
+Fri Jun 30 19:35:41 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils._escape): should
+ use String#ord to get ascii code from the one-character string.
+ [ruby-dev:28901]
+
+Thu Jun 29 23:56:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark_children): a bug in NODE_BLOCK_PASS marking.
+ [ruby-dev:28908]
+
+Thu Jun 29 23:04:36 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: use ARGSPUSH instead of ARGSCAT to prevent too much
+ splat expansion.
+
+ * eval.c (when_check): need to handle ARGSPUSH as well.
+
+ * eval.c (block_orphan): lambda and proc from method are always
+ orphan.
+
+ * gc.c (gc_mark_children): proper marking for NODE_LAMBDA.
+
+Thu Jun 29 22:47:30 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (SETUP_ARGS0): avoid GC problem.
+ [ruby-dev:28902]
+
+Thu Jun 29 18:58:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_version): fix patch
+ failure.
+
+Thu Jun 29 18:00:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: add RDoc document. a patch from
+ mathew <meta at pobox.com>. [ruby-core:07050]
+
+Wed Jun 28 14:53:09 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/optparse.rb: RDoc patch from Robin Stocker <robin@nibor.org>
+ [ruby-core:08087]
+
+Wed Jun 28 23:23:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): underscores should appear only
+ between digits. [ruby-dev:28891]
+
+Wed Jun 28 19:04:34 2006 Tanaka Akira <akr@m17n.org>
+
+ * test/socket/test_unix.rb: test_seqpacket_pair removed.
+ [ruby-dev:28846]
+
+Wed Jun 28 13:51:21 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (when_check): arbitrary values are allowed after splats.
+ fixed: [ruby-dev:28879]
+
+Wed Jun 28 09:16:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): remove meaningless else-only case statement
+ syntax.
+
+Wed Jun 28 08:08:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): problem to handle else part. [ruby-dev:28873]
+
+Wed Jun 28 01:48:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): support splat in when expression list.
+ [ruby-dev:28822]
+
+ * eval.c (when_check): a new auxiliary function for case match.
+
+ * eval.c (when_cond): ditto.
+
+Wed Jun 28 01:05:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_cstr_to_dbl): should not skip '_' at the beginning
+ of a string. [ruby-dev:28830]
+
+ * bignum.c (rb_cstr_to_inum): ditto.
+
+Tue Jun 27 23:03:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c: RDoc update for =~ method. a patch from Alex Young
+ <alex at blackkettle.org>. [ruby-core:08068]
+
+Tue Jun 27 22:47:18 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: forgot to update TCLTKLIB_RELEASE_DATE.
+
+ * ext/tk/lib/tk.rb (tk_tcl2ruby): [bug fix] sometimes fail to convert
+ a tcl string to a ruby object if the tcl string includes "\n".
+
+Tue Jun 27 20:05:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (pipe_open): backout unnecessary fix on 2006-06-26.
+ [ruby-dev:28865]
+
+ * eval.c (rb_yield_0): exact argument number check now done only
+ for lambda Proc.
+
+ * eval.c (rb_yield_0): add check for number of arguments, if
+ there's one lambda block parameter.
+
+Tue Jun 27 16:04:05 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.h: define isascii on MinGW for msvcrt compatibility.
+
+ * configure.in: set ac_cv_header_sys_time_h=no on MinGW
+ for msvcrt compatibility.
+
+Tue Jun 27 11:36:02 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/etc/etc.c (setup_passwd, setup_group): allow bignum uid, gid and
+ so on. [ruby-talk:199102]
+
+Tue Jun 27 10:46:53 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_yield_0): avoid core dump. [ruby-dev:28840]
+
+Mon Jun 26 11:03:00 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri: Add options to limit the ri search path.
+
+Tue Jun 27 01:31:59 2006 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (bsock_recv_nonblock): new method
+ BasicSocket#recv_nonblock.
+ (udp_recvfrom_nonblock): renamed from ip_recvfrom_nonblock.
+ IPSocket#recvfrom_nonblock is moved to UDPSocket#recvfrom_nonblock.
+ (unix_recvfrom_nonblock): removed.
+ UNIXSocket#recvfrom_nonblock is removed.
+
+Tue Jun 27 00:52:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/eventids2.c (token_assoc): added tCHAR, which is not
+ under 256 now. fixed: [ruby-dev:28832]
+
+Mon Jun 26 23:42:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (call_trace_func): no check for argument number of the
+ callback. fixed: [ruby-dev:28812]
+
+Mon Jun 26 18:37:44 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_delete): fix SEGV when a slave-ip is
+ deleted on callback.
+
+Mon Jun 26 15:40:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_accept): revert to avoid ambiguity of
+ argument evaluation order. [ruby-dev:28861]
+
+ * ext/socket/socket.c (sock_accept_nonblock): ditto.
+
+Mon Jun 26 10:47:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (pipe_open): avoid closing uninitialized file descriptors.
+ a patch from <tommy at tmtm.org> [ruby-dev:28600]
+
+Sun Jun 25 23:02:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, mkconfig.rb: catch-up for latest autoconf.
+
+Sun Jun 25 17:44:16 2006 Tanaka Akira <akr@m17n.org>
+
+ * parse.y (paren_args): wrap $2 by escape_Qundef because it may be
+ Qundef. [ruby-dev:28843]
+
+Sun Jun 25 17:18:33 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(ole_invoke): support some kind of
+ method of word. [ruby-Bugs#3237]
+
+ * test/win32ole/test_word.rb: ditto.
+
+Sat Jun 24 23:48:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: replace terminal token names with more descriptive
+ name, i.e. kEND to keyword_end. [ruby-list:42477]
+
+Sat Jun 24 23:37:41 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_eval): use rb_ary_new2 instead of rb_ary_new4 to avoid
+ GC problem.
+ (rb_yield_values): use rb_ary_new2 instead of rb_ary_new4.
+
+ * array.c (rb_ary_new4): don't set len as n if contents is not
+ initialized. make it safe with GC.
+
+ [ruby-dev:28826]
+
+Fri Jun 23 23:35:32 2006 Tanaka Akira <akr@m17n.org>
+
+ * ruby.h, lib/drb/drb.rb, lib/drb/invokemethod.rb: remove Values class.
+ [ruby-dev:28805]
+
+Fri Jun 23 17:27:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_block_pass): removed.
+
+ * eval.c (rb_thread_start_1): use rb_proc_yield() instead of
+ rb_block_pass(). fixed: [ruby-dev:28794]
+
+Thu Jun 22 11:52:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTPResponse): duplicated error 501;
+ HTTPInternalServerError should be error 500. [ruby-core:08037]
+
+Thu Jun 22 11:47:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_mod_name): returns nil for anonymous modules.
+ [ruby-talk:198440]
+
+Thu Jun 22 10:31:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_aref): "abc"[3] should not return an empty
+ string but nil. [ruby-dev:28786]
+
+Thu Jun 22 05:15:58 2006 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (sock_s_socketpair): try GC only once.
+ [ruby-dev:28778]
+
+Wed Jun 21 21:20:31 2006 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (jd_to_commercial): now works fine even if in
+ mathn-ized context.
+
+Wed Jun 21 17:29:57 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/getaddrinfo.c (freeaddrinfo, get_name): fixed typo.
+
+ * ext/tk/tcltklib.c (tcl_eval, tcl_global_eval): ditto.
+
+ * ext/zlib/zlib.c (rscheck): constified.
+
+Wed Jun 21 17:18:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/pp.rb (PP::PPMethods::seplist): should have preserved
+ original reference to the array. [ruby-dev:28747]
+
+Wed Jun 21 14:35:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (block_param): do not use multiple assignment for a sole
+ block parameter. [ruby-dev:28710]
+
+ * eval.c (rb_yield_0): pass a raw yielded value to a sole block
+ parameter if a value is passed by yield.
+
+ * eval.c (proc_invoke): args may not be an array.
+
+ * eval.c (rb_proc_yield): pass original value without wrapping
+ it in an array.
+
+Wed Jun 21 14:06:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (method_call): remove (fn)(args) style lambda
+ invocation, add fn.(args) instead.
+
+Wed Jun 21 08:39:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc/create.rb (XMLRPC::Create::conv2value): merge Date
+ and Time processing. [ruby-core:08033]
+
+Wed Jun 21 03:01:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c, file.c, etc.: code-cleanup patch from Stefan Huehner
+ <stefan at huehner.org>. [ruby-core:08029]
+
+Wed Jun 21 01:40:25 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reswords): modifier token is no longer returned in fname
+ state. fixed: [ruby-dev:28775]
+
+Tue Jun 20 23:28:34 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (parse_args): provisional catch-up for the recent changes.
+
+ * lib/optparse.rb (OptionParser::List#summarize, OptionParser#order!): ditto.
+
+Tue Jun 20 11:07:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): intercept break and return from lambda
+ Proc objects. [ruby-dev:28742]
+
+ * eval.c (proc_invoke): remove unnecessary YIELD_PROC_CALL flag.
+
+ * eval.c (YIELD_EXACT_ARGS): renamed from YIELD_LAMBDA_CALL, which
+ is no longer related to the behavior turned on by this flag.
+
+ * eval.c (return_jump): no need to care about PROT_YIELD.
+
+ * eval.c (break_jump): no jump to toplevel PROT_THREAD tag.
+
+ * eval.c (rb_yield_0): fix confusion between lambda (which is a
+ property of a proc) and pcall (which depends on whether it's
+ called via yield or call).
+
+ * eval.c (rb_thread_yield): no need to specify YIELD_LAMBDA_CALL.
+
+ * eval.c (rb_block_pass): update blkid in prot_tag.
+
+Mon Jun 19 23:40:59 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb: remove default -m0 and fix document.
+
+ * ext/nkf/nkf-8/{nkf.c, config.h, utf8tbl.c, utf8tbl.h}:
+ imported nkf 2.0.7.
+
+Mon Jun 19 17:02:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/test.rb (proc_return3): return within non lambda block
+ should terminate surrounding method. [ruby-dev:28741]
+
+Mon Jun 19 13:22:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (unix_sysaccept): typo fixed.
+
+ * ext/socket/socket.c (sock_connect): remove an unused local
+ variable tmpaddr.
+
+Mon Jun 19 02:10:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (tcp_accept_nonblock): forgot to remove
+ abandoned hacks. [ruby-dev:28740]
+
+Mon Jun 19 00:00:17 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: fix bug: initialize improper tables.
+
+Sun Jun 18 20:28:43 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fole_methods): The return value
+ of WIN32OLE#ole_methods should include PROPERTYPUTREF methods.
+
+ * ext/win32ole/win32ole.c (fole_put_methods): The return value
+ of WIN32OLE#ole_put_methods should include PROPERTYPUTREF methods.
+
+ * test/win32ole/test_ole_methods.rb: ditto.
+
+ * ext/win32ole/win32ole.c (ole_propertyput): support
+ PROPERTYPUTREF. [ruby-talk:183042]
+
+ * test/win32ole/test_propertyputref.rb: ditto.
+
+Sat Jun 17 23:42:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): add aliases invoke_method and
+ invoke_functional_method corresponding send and funcall
+ respectively. [ruby-talk:197512]
+
+ * parse.y (parser_yylex): returns the most typical keyword token
+ on EXPR_FNAME. [ruby-core:7995]
+
+ * ext/socket/socket.c: protoize.
+
+Sat Jun 17 22:17:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Integer::prime_division): raise ZeroDivisionError
+ on zeros. [ruby-dev:28739]
+
+Sat Jun 17 14:53:32 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Kernel#Pathname): new method.
+
+Sat Jun 17 02:01:00 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (Kernel#pretty_inspect): defined for pretty printed
+ string.
+
+Fri Jun 16 01:41:00 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_proc_arity): get rid of segfault for mere splat.
+
+ * gc.c (gc_mark_children): NODE_BLOCK_PASS needs u3 to be marked.
+
+Thu Jun 15 22:06:56 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (then): remove ':' from 'then' and 'do' rules.
+
+Wed Jun 14 18:00:20 2006 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c (enum_any): Documentation typo.
+
+Wed Jun 14 15:01:09 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser#warn): Don't print
+ warnings when -q is set.
+
+Wed Jun 14 16:11:37 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_f_method_name, rb_f_callee_name): document typo.
+
+Wed Jun 14 15:19:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_aset): raise TypeError on nil with more descriptive
+ message. [ruby-core:07990]
+
+Tue Jun 13 17:22:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (Init_socket): remove obsolete constants:
+ IPsocket, TCPsocket, SOCKSsocket, TCPserver, UDPsocket,
+ UNIXsocket, UNIXserver.
+
+Tue Jun 13 09:07:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (formal_assign): post splat arguments should have had
+ higher priority than optional arguments, since they are
+ mandatory. [ruby-dev:28715]
+
+ * eval.c (VIS_MASK): broken. should be 15. [ruby-dev:28715]
+
+ * io.c (argf_getc): should return one-character string.
+ [ruby-dev:28715]
+
+ * io.c (rb_io_readchar): ditto.
+
+Sun Jun 11 23:20:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (sym_call): disallow to call private methods.
+
+ * lib/optparse.rb (OptionParser::Arguable#getopts): pass self to the
+ parser.
+
+Sun Jun 11 09:56:41 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.h (write): not need to define on bcc.
+
+Sun Jun 11 08:30:33 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#getopts): new methods.
+
+Sun Jun 11 07:27:11 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/ri/ri_writer.rb: use String#ord.
+
+Sun Jun 11 04:38:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (sym_to_proc): imported Symbol#to_proc from ActiveSupport.
+
+Sat Jun 10 18:02:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/newton.rb (Newton::nlsolve): typo
+ fixed: raize -> raise. [ruby-talk:196608]
+
+Sat Jun 10 17:49:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_ord): new method.
+
+ * parse.y (rbracket): allow optional newline before closing
+ brackets.
+
+Sat Jun 10 15:12:29 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_f_method_name, rb_f_callee_name): new functions.
+ new global method `__method__' and `__callee__'.
+
+Sat Jun 10 10:13:13 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/getoptlong.rb (GetoptLong#set_options): receive arguments
+ as Array.
+
+ * lib/irb/slex.rb: use Proc#yield.
+
+ * lib/rdoc/markup/simple_markup/inline.rb: follow the new behavior
+ of String#[].
+
+ * lib/rdoc/ri/ri_writer.rb: ditto.
+
+Sat Jun 10 08:17:23 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * math.c (log2): may be a macro.
+
+ * parse.y (args, block_param, f_args): pass f_post_arg to #params.
+
+ * util.c (powersOf10): constified.
+
+ * ext/readline/readline.c: include extconf.h first.
+
+ * ext/ripper/eventids2.c: removed tLAMBDA_ARG.
+
+ * ext/tk/tcltklib.c (lib_fromUTF8_core): removed conflict.
+
+ * ext/tk/tkutil/tkutil.c (cbsubst_get_subst_arg): rb_id2name() is
+ defined as const now.
+
+ * ext/win32ole/win32ole.c (fole_missing): ditto.
+
+ * lib/mkmf.rb (create_makefile): force to create extconf header.
+
+ * lib/optparse.rb (order!): use Proc#yield.
+
+Sat Jun 10 06:53:22 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (CALLARGS): remove last semicolon. C90 compiler doesn't
+ allow any lines (even if they're empty) within variable
+ declarations.
+
+Fri Jun 9 09:56:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): allow %c to print one character
+ string (e.g. ?x).
+
+Thu Jun 8 14:00:02 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch] (rb_w32_read, rb_w32_write): new functions.
+ use recv() and send() when fd is socket. fixed: [ruby-dev:28694]
+
+Wed Jun 7 16:22:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile::make_tmpname): put dot between
+ basename and pid. [ruby-talk:196272]
+
+Wed Jun 7 16:16:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (do_block): remove -> style block.
+
+ * parse.y (parser_yylex): remove tLAMBDA_ARG.
+
+Wed Jun 7 14:51:22 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (errmap): add some winsock errors.
+
+Wed Jun 7 09:14:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): binding for the return event hook should have
+ consistent scope. [ruby-core:07928]
+
+Tue Jun 6 23:25:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): return behavior should depend whether it
+ is surrounded by a lambda or a mere block.
+
+Mon Jun 5 18:12:12 2006 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (sock_s_unpack_sockaddr_in): reject
+ non-AF_INET/AF_INET6 sockaddr.
+ (sock_s_unpack_sockaddr_un): reject non-AF_UNIX sockaddr.
+ [ruby-dev:28691]
+
+Sun Jun 4 20:40:19 2006 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c: fix sockaddr_un handling.
+ [ruby-dev:28677]
+
+Sat Jun 3 23:53:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (formal_assign): handles post splat arguments.
+
+ * eval.c (rb_call0): ditto.
+
+Sat Jun 3 13:10:41 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (strhash): use FNV-1a hash.
+
+Fri Jun 2 20:01:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): removed experimental ';;' terminator.
+
+Fri Jun 2 19:00:40 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: use create_header.
+
+ * ext/openssl/ossl.h, ext/openssl/openssl_missing.h:
+ include RUBY_EXTCONF_H.
+
+Fri Jun 2 17:16:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (CLEANINGS): remove extconf.h by distclean if created.
+
+Fri Jun 2 00:11:19 2006 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (s_recvfrom): alen may be zero with UNIXSocket
+ too. (tested on NetBSD 3.0)
+ (s_recvfrom_nonblock): extracted from sock_recvfrom_nonblock.
+ (sock_recvfrom_nonblock): use s_recvfrom_nonblock.
+ (ip_recvfrom_nonblock): new method: IPSocket#recvfrom_nonblock
+ (unix_recvfrom_nonblock): new method: UNIXSocket#recvfrom_nonblock
+ (s_accept_nonblock): extracted from sock_accept_nonblock.
+ (sock_accept_nonblock): use s_accept_nonblock.
+ (tcp_accept_nonblock): new method: TCPServer#accept_nonblock
+ (unix_accept_nonblock): new method: UNIXServer#accept_nonblock
+
+Thu Jun 1 19:12:37 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_cmdvector): backslashes inside single-quotes
+ no longer has special meanings. fixed: [ruby-list:42311]
+
+Thu Jun 1 17:55:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_node_arity): should be aware of post splat arguments.
+
+ * eval.c (rb_proc_arity): ditto.
+
+Thu Jun 1 16:17:26 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getcwd): runtime's getcwd() will not success
+ if the length of the cwd is longer than MAX_PATH.
+ fixed [ruby-list:42335]
+
+Thu Jun 1 16:07:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_args): syntax rule enhanced to support arguments
+ after the splat.
+
+ * parse.y (mlhs_basic): ditto for multiple assignments
+
+ * parse.y (block_param): ditto for block parameters.
+
+ * parse.y (f_post_arg): mandatory formal arguments after the splat
+ argument.
+
+ * parse.y (new_args_gen): generate nodes for mandatory formal
+ arguments after the splat argument.
+
+ * eval.c (rb_eval): dispatch mandatory formal arguments after the
+ splat argument.
+
+Thu Jun 1 11:33:32 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getcwd): set errno if not set.
+ fixed [ruby-list:42346]
+
+Thu Jun 1 00:45:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (args): allow more than one splat in the argument list.
+
+Wed May 31 18:38:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (method_call): allow aref [] to accept all kind of
+ method argument, including assocs, splat, and block argument.
+
+ * eval.c (SETUP_ARGS0): prepare block argument as well.
+
+Tue May 30 18:13:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Integer): remove Integer#gcd2. [ruby-core:07931]
+
+Mon May 29 22:40:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_line): print receivers true/false/nil specially.
+
+ * eval.c (rb_proc_yield): handles parameters in yield semantics.
+
+ * eval.c (nil_yield): gives LocalJumpError to denote no block
+ error.
+
+ * io.c (rb_io_getc): now takes one-character string.
+
+Sat May 27 22:46:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): save and restore block in the current frame.
+ fixed: [ruby-core:07833], [ruby-talk:191639]
+
+Sat May 27 11:29:46 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): remove extinit files if no statically linked
+ extensions.
+
+Fri May 26 19:56:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_hash): use FNV-1a hash from Fowler/Noll/Vo
+ hashing algorithm.
+
+Fri May 26 09:05:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.h, lib/mkmf.rb (create_header): clear command line options for
+ macros moved to extconf.h.
+
+ * ext/extmk.rb (extract_makefile, extmk): made RUBY_EXTCONF_H and
+ EXTSTATIC permanent.
+
+ * ext/{dbm,digest/*,socket,zlib}/extconf.rb: used $defs and $INCFLAGS.
+
+ * {bcc32,win32,wince}/Makefile.sub (COMPILE_C, COMPILE_CXX): added
+ $(INCFLAGS).
+
+ * lib/mkmf.rb (configuration): add $defs unless extconf.h was created.
+
+Thu May 25 01:52:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (pkg_config): particular config commands support.
+
+ * ext/extmk.rb: deal with $static set in extconf.rb.
+
+ * mkconfig.rb: merge multiple entries to an entry with multiple lines.
+
+ * lib/mkmf.rb: allow a series of commands to link.
+
+ * win32/Makefile.sub: embed manifests.
+
+ * win32/setup.mak: suffix OS name by runtime version.
+
+Wed May 24 23:52:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_install_sh): ignore dummy install-sh.
+ [ruby-talk:193876]
+
+Wed May 24 17:55:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_aref): str[0] now returns 1 character string,
+ instead of a fixnum. [Ruby2]
+
+ * parse.y (parser_yylex): ?c now returns 1 character string,
+ instead of a fixnum. [Ruby2]
+
+ * string.c (rb_str_aset): no longer support fixnum insertion.
+
+Wed May 24 03:10:44 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb
+ (OpenSSL::SSL::SocketForwarder#setsockopt,getsockopt): typo fixed.
+
+Mon May 22 16:32:03 2006 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h (rb_io_set_nonblock): declared.
+
+ * io.c (rb_io_set_nonblock): new function.
+ (io_getpartial): nonblocking read support.
+ (io_read_nonblock): new method: IO#read_nonblock.
+ (io_write_nonblock): new method: IO#write_nonblock.
+
+ * ext/socket/socket.c (s_accept): retry for EWOULDBLOCK.
+ revert [ruby-talk:113807].
+ (sock_connect_nonblock): new method: Socket#connect_nonblock.
+ (sock_accept_nonblock): new method: Socket#accept_nonblock.
+ (sock_recvfrom_nonblock): new method: Socket#recvfrom_nonblock.
+
+ [ruby-core:7917]
+
+Mon May 22 15:57:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (umethod_bind): should not update original class.
+ [ruby-dev:28636]
+
+Mon May 22 13:38:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_get): should support constant access from
+ within instance_eval(). [ruby-dev:28327]
+
+Sun May 21 09:50:31 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * regexec.c: add STK_NULL_CHECK_END to IS_TO_VOID_TARGET().
+ [ruby-list:42234]
+
+Thu May 18 22:37:20 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb (WEBrick::Config::HTTP): add new parameters,
+ :InputBufferSize and :OutputBufferSize.
+
+ * lib/webrick/utils.rb (WEBrick::Utils.timeout): add new timeout
+ method. this implementation is expected to be compatible with
+ timeout.rb and faster than timeout.rb.
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#_read_data):
+ Timeout.timeout is replaced by WEBrick::Utils.timeout.
+
+ * lib/webrick/httprequest.rb: WEBrick::HTTPRequest::BUFSIZE is
+ replaced by config[:InputBufferSize].
+
+ * lib/webrick/httpresposne.rb: WEBrick::HTTPResponse::BUFSIZE is
+ replaced by config[:OutputBufferSize].
+
+ * lib/webrick/server.rb: get rid of unnecessary require.
+
+ * test/webrick/test_utils.rb: test for WEBrick::Utils.timeout.
+
+Thu May 18 17:51:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_timeval): should round for usec floating
+ number. [ruby-core:07896]
+
+ * time.c (time_add): ditto.
+
+Thu May 18 00:42:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, lib/mkmf.rb: use BUILD_FILE_SEPARATOR in Makefiles.
+
+Wed May 17 17:55:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (sys_warning): should not call a vararg function
+ rb_sys_warning() indirectly. [ruby-core:07886]
+
+Tue May 16 17:23:19 2006 Shin-ichiro HARA <sinara@blade.nagaokaut.ac.jp>
+
+ * numeric.c (flo_divmod): the first element of Float#divmod should
+ be an integer. [ruby-dev:28589]
+
+ * test/ruby/test_float.rb: add tests for divmod, div, modulo and remainder.
+
+Tue May 16 15:34:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): should not allow modifying literal
+ regexps. frozen check moved from rb_reg_initialize_m as well.
+
+Tue May 16 09:20:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): should not modify untainted objects in
+ safe levels higher than 3.
+
+ * re.c (rb_memcmp): type change from char* to const void*.
+
+ * dir.c (dir_close): should not close untainted dir stream.
+
+ * dir.c (GetDIR): add tainted/frozen check for each dir operation.
+
+Mon May 15 21:37:12 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c (rb_reg_prepare_re): don't use onig_recompile().
+
+Mon May 15 17:42:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_symbol_arg):
+ typo fixed. a patch from Florian Gross <florg at florg.net>.
+
+Sat May 13 16:14:05 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (PP.mcall): new method.
+ (Struct#pretty_print): call Kernel#class and Struct#members even if
+ overridden.
+ (Struct#pretty_print_cycle): ditto.
+ [ruby-core:7865]
+
+Fri May 12 15:54:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (EXEC_EVENT_HOOK): trace_func may remove itself from
+ event_hooks. no guarantee for arbitrary hook deletion.
+ [ruby-dev:28632]
+
+Thu May 11 19:57:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): differ addition to minimize error.
+ [ruby-dev:28619]
+
+Thu May 11 18:30:11 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_cipher.c (add_cipher_name_to_ary): should return
+ value. [ruby-dev:28627]
+
+Thu May 11 18:10:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): should not raise ERANGE when the input
+ string does not have any digits. [ruby-dev:28629]
+
+Wed May 10 23:40:21 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.0.3
+
+ * regexec.c: ditto.
+
+Mon May 8 09:10:31 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for OBJ_NAME_do_all_sorted.
+
+ * ext/openssl/ossl_cipher.c (ossl_s_ciphers): new method
+ OpenSSL::Cipher.ciphers. it returns all the cipher names.
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_init): refine warning message.
+
+ * ext/openssl/lib/openssl/cipher.rb: reimplement without eval() and
+ add constants AES128, AES192, AES256. [ruby-dev:28610]
+
+ * ext/openssl/lib/openssl/digest.rb: reimplement without eval().
+
+ * test/openssl/test_cipher.rb, test_digest: fix about reimplemented
+ features.
+
+ * sample/openssl/cipher.rb: rewrite all.
+
+Sun May 7 03:09:51 2006 Stephan Maka <stephan@spaceboyz.net>
+
+ * lib/resolv.rb (Resolv::DNS::Requester::ConnectedUDP#initialize):
+ Use AF_INET6 for nameservers containing colons.
+
+Sat May 6 23:40:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should restore old ruby_frame->block.
+ thanks to ts <decoux at moulon.inra.fr>. [ruby-core:07833]
+ also fix [ruby-dev:28614] as well.
+
+Sat May 6 00:38:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (trap): sig should be less then NSIG. Coverity found
+ this bug. a patch from Kevin Tew <tewk at tewk.com>.
+ [ruby-core:07823]
+
+Thu May 4 22:13:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * math.c (math_log2): add new method inspired by
+ [ruby-talk:191237].
+
+ * math.c (math_log): add optional base argument to Math::log().
+ [ruby-talk:191308]
+
+Thu May 4 02:24:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/emitter.c (syck_scan_scalar): avoid accessing
+ uninitialized array element. a patch from Pat Eyler
+ <rubypate at gmail.com>. [ruby-core:07809]
+
+ * array.c (rb_ary_fill): initialize local variables first. a
+ patch from Pat Eyler <rubypate at gmail.com>. [ruby-core:07810]
+
+ * ext/syck/yaml2byte.c (syck_yaml2byte_handler): need to free
+ type_tag. a patch from Pat Eyler <rubypate at gmail.com>.
+ [ruby-core:07808]
+
+Wed May 3 02:12:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (make_hostent_internal): accept ai_family
+ check from Sam Roberts <sroberts at uniserve.com>.
+ [ruby-core:07691]
+
+Mon May 1 17:58:16 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (add_event_call_back): should not
+ delete event handler when the event name is not entried.
+
+Mon May 1 08:32:10 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_param_ole_type): should return
+ "unknown type" string when ITypeInfo::GetFuncDesc failed.
+
+Sat Apr 29 22:43:37 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): should initialize
+ flag. [ruby-core:07785]
+
+Fri Apr 28 10:53:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): should not cut off 18 digits for no
+ reason. [ruby-core:07796]
+
+Thu Apr 27 01:38:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fill): internalize local variable "beg" to
+ pacify Coverity. [ruby-core:07770]
+
+Wed Apr 26 16:59:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_unpack): now supports CRLF newlines. a patch from
+ <tommy at tmtm.org>. [ruby-dev:28601]
+
+Wed Apr 26 16:55:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * applied code clean-up patch from Stefan Huehner
+ <stefan at huehner.org>. [ruby-core:07764]
+
+Tue Apr 25 18:00:05 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (delete_slaves): maybe increment the reference
+ count of a NULL Tcl_Obj [ruby-core:07759].
+
+Tue Apr 25 07:55:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/jcode.rb (String::tr_s): should have translated non
+ squeezing character sequence (i.e. a character) as well. thanks
+ to Hiroshi Ichikawa <gimite at gimite.ddo.jp> [ruby-list:42090]
+
+Fri Apr 21 15:19:13 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (lib_eventloop_ensure): avoid dereferencing
+ freed pointer [ruby-core:07744] and memory leak.
+
+Fri Apr 21 12:14:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: document update patch from Sam Roberts
+ <sroberts at uniserve.com>. [ruby-core:07701]
+
+Thu Apr 20 08:43:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Integer): need not to remove gcd2. a patch from
+ NARUSE, Yui <naruse at airemix.com>. [ruby-dev:28570]
+
+Wed Apr 19 13:55:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (arg): too much NEW_LIST()
+
+ * eval.c (SETUP_ARGS0): remove unnecessary access to nd_alen.
+
+Wed Apr 19 11:57:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): use ARGSCAT for NODE_OP_ASGN1.
+ [ruby-dev:28585]
+
+ * parse.y (arg): use NODE_ARGSCAT for placeholder.
+
+Wed Apr 19 11:13:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/getoptlong.rb (GetoptLong::get): RDoc update patch from
+ mathew <meta at pobox.com>. [ruby-core:07738]
+
+Wed Apr 19 10:13:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_set): raise error when no target klass is
+ supplied. [ruby-dev:28582]
+
+Tue Apr 18 17:40:37 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: add a binding to a container for a slave IP.
+
+ * ext/tk/lib/tk.rb: update RELEASE_DATE.
+
+ * ext/tk/tcltklib.c: forget to reset a Tcl interpreter.
+
+ * ext/tk/stubs.c: fix potential bugs about handling rb_argv0.
+
+Mon Apr 10 01:03:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * prec.c (prec_prec_f): documentation patch from
+ <gerardo.santana at gmail.com>. [ruby-core:07689]
+
+Sat Apr 8 02:34:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): second operand may be too big even if
+ it's a Fixnum. [ruby-talk:187984]
+
+Sat Apr 8 02:12:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * README.EXT: update symbol description. [ruby-talk:188104]
+
+Sat Apr 8 18:06:28 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_METHOD#inspect,
+ WIN32OLE_PARAM#inspect.
+
+ * test/win32ole/test_win32ole_method.rb: ditto.
+
+ * add test/win32ole/test_win32ole_param.rb.
+
+Fri Apr 7 22:11:30 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(foletypelib_initialize): WIN32OLE_TYPELIB.new
+ accepts OLE file.
+
+ * test/win32ole/test_win32ole_typelib.rb(test_initialize): ditto.
+
+Thu Apr 6 23:28:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * COPYING: explicitly note GPLv2. [ruby-talk:187922]
+
+Thu Apr 6 16:43:06 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * intern.h (rb_obj_instance_exec, rb_mod_module_exec): add declaration.
+
+Thu Apr 6 11:18:37 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/panedwindow.rb: lack of arguments. [ruby-core:7681]
+
+Thu Apr 6 01:04:47 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: fix SEGV when embedding to an application.
+ [ruby-core:7600]
+
+ * ext/tk/tcltklib.c: fix SEGV at exit. [ruby-talk:186489]
+
+ * ext/tk/tkutil/tkutil.c: follow to changing specification of
+ instance_eval on ruby-1.9.x.
+
+ * ext/tk/lib/tk.rb: ditto.
+
+ * ext/tk/lib/multi-tk.rb: ditto.
+
+ * ext/tk/lib/tk.rb: remove warning about redefinition of methods.
+
+ * ext/tk/lib/tk/variable.rb: remove warning about unseting Tcl
+ variables.
+
+Wed Apr 5 00:22:54 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: use a subclass for instantiation except
+ methods take pathname argument. suggested by Evan Phoenix.
+ [ruby-core:7618]
+
+Tue Apr 4 22:15:41 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: remove some obsolete syntax rules (unparenthesized
+ method calls in argument list).
+
+Sat Apr 1 15:11:27 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_TYPE#inspect,
+ WIN32OLE_VARIABLE#inspect
+
+ * remove ext/win32ole/tests/testOLEVARIABLE.rb, testOLETYPE.rb
+ testOLETYPELIB.rb.
+
+ * testall.rb: ditto.
+
+ * add test/win32ole
+
+Fri Mar 31 14:24:55 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_with_index): removed suspicious return
+ statement.
+
+Wed Mar 29 23:06:48 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_invoke): change the behavior of
+ WIN32OLE#[], WIN32OLE#[]=. These methods invoke DISPID_VALUE.
+
+ * ext/win32ole/sample/excel2.rb: ditto.
+
+ * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+
+Wed Mar 29 10:11:31 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (nkf_each_char_to_hex, encode_fallback_subchar,
+ e2w_conv): support C90 compiler.
+
+Mon Mar 27 22:45:37 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c, utf8tbl.c}: imported nkf 2.0.6.
+ * Add --ic / --oc option and mapping tables.
+ * Add fallback option.
+ * Add --no-best-fit-chars option.
+ * Fix some bugs.
+
+ * ext/nkf/nkf.c (nkf_split_options): added for parse option string.
+
+ * ext/nkf/lib/kconv.rb (Kconv.to*): add -m0.
+ Note that Kconv.to* still imply -X.
+
+ * ext/nkf/test.rb: Removed. Obsolete by test/nkf.
+
+ * ext/.document: enabled documents in nkf and kconv
+
+ * ext/nkf/nkf.c, ext/nkf/lib/kconv.rb: Add rdoc.
+
+Mon Mar 27 03:17:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): insecure calling should be checked for non
+ NODE_SCOPE method invocations too.
+
+ * eval.c (rb_alias): should preserve the current safe level as
+ well as method definition.
+
+Sun Mar 26 22:02:51 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c: refactoring for options.
+
+ * parse.y: ditto.
+
+Fri Mar 24 21:11:02 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c (match_aref): RDoc description updated.
+
+ * string.c (rb_str_sub): ditto.
+
+ * string.c (rb_str_gsub): ditto.
+
+Fri Mar 24 17:20:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_sleep): remove RDoc description about SIGALRM
+ which is not valid on the current implementation. [ruby-dev:28464]
+
+Thu Mar 23 21:40:47 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c (rb_reg_regsub): prohibit \1, \2 ...\9 in replaced string
+ for named regex pattern.
+
+Thu Mar 23 21:06:23 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.0.2
+
+ * regparse.c: ditto.
+
+ * regcomp.c ditto.
+
+ * regerror.c: ditto.
+
+Thu Mar 23 10:47:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_missing): should support argument splat in
+ super. a bug in combination of super, splat and
+ method_missing. [ruby-talk:185438]
+
+Thu Mar 23 00:01:32 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c (rb_reg_regsub): add back reference by name \k<name> in
+ replace string.
+
+ * re.h: add regexp argument to rb_reg_regsub().
+
+ * string.c (rb_str_sub_bang): ditto.
+
+ * string.c (str_gsub): ditto.
+
+Tue Mar 21 22:14:01 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * re.c (match_alloc): initialize member regexp.
+
+ * re.c (match_aref): add String and Symbol argument. [ruby-dev:28448]
+
+ * re.h: add member regexp to RMatch.
+
+ * gc.c (gc_mark_children): add gc_mark() to regexp member.
+
+Mon Mar 20 12:05:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: Solaris SunPro compiler -rapth patch from
+ <kuwa at labs.fujitsu.com>. [ruby-dev:28443]
+
+Mon Mar 20 11:12:38 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (folevariant_value): could not compile
+ with C90 compiler.
+
+Mon Mar 20 09:40:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: remove enable_rpath=no for Solaris.
+ [ruby-dev:28440]
+
+Sun Mar 19 09:46:30 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_val2olevariantdata): change behavior
+ of converting OLE Variant object with VT_ARRAY|VT_UI1 and Ruby
+ String object.
+
+ * ext/win32ole/win32ole.c (folevariant_value): ditto.
+
+ * ext/win32ole/tests/testOLEVARIANT.rb: ditto.
+
+Wed Mar 15 16:51:11 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): support libraries without *.so.
+
+Wed Mar 15 16:39:29 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c, ext/openssl/ossl_nsspki.c: should use
+ "rb_str_new(0, 0)" to make empty string.
+
+Sun Mar 12 17:02:10 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(ole_val2olevariantdata): support VT_ARRAY in
+ WIN32OLE_VARIANT.new().
+
+ * ext/win32ole/tests/testOLEVARIANT.rb: ditto.
+
+ * ext/win32ole/tests/testOLEPARAM.rb: test method name should not be
+ duplicated.
+
+Sat Mar 11 14:24:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.1: a clarification patch from David Lutterkort
+ <dlutter at redhat.com>. [ruby-core:7508]
+
+Sun Mar 5 18:40:58 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: do not repeat command options.
+
+Sun Mar 5 18:35:03 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (send_request_with_body): #content_type never
+ return false, use #main_type instead. [ruby-core:07476]
+
+Sat Mar 4 15:26:40 2006 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (id2ref): fix symbol test.
+
+Sat Mar 4 01:08:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rdoc/ri/ri_paths.rb (RI::Paths): adding paths from rubygems
+ directories. a patch from Eric Hodel <drbrain at segment7.net>.
+ [ruby-core:07423]
+
+Fri Mar 3 17:59:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_clear_cache_by_class): clearing wrong cache.
+
+Fri Mar 3 21:22:42 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/fileutils.rb (FileUtils.cp_r): implement :remove_destination
+ option.
+
+ * ext/extmk.rb: use :remove_destination to install extension libraries
+ to avoid SEGV. [ruby-dev:28417]
+
+Fri Mar 3 14:41:04 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/dl/.cvsignore: ignore callback.h.
+
+ * ext/ripper/.cvsignore: ignore eventids2table.c.
+
+ * ext/socket/.cvsignore: ignore constants.h.
+
+Thu Mar 2 18:58:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_fd_writable): should not re-schedule output
+ from KILLED thread (must be error printing).
+
+Thu Mar 2 09:12:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_flatten_bang): allow specifying recursion
+ level. [ruby-talk:182170]
+
+ * array.c (rb_ary_flatten): ditto.
+
+Thu Mar 2 08:02:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (add_heap): a heap_slots may overflow. a patch from Stefan
+ Weil <weil at mail.berlios.de>.
+
+Wed Mar 1 17:13:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): use separate cache for fcall/vcall
+ invocation.
+
+ * eval.c (rb_eval): NODE_FCALL, NODE_VCALL can call local
+ functions.
+
+ * eval.c (rb_mod_local): a new method to specify newly added
+ visibility "local".
+
+ * eval.c (search_method): search for local methods which are
+ visible only from the current class.
+
+ * class.c (rb_class_local_methods): a method to list local methods.
+
+Thu Mar 2 17:54:45 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * gc.c: commited magic for reducing RVALUE size on windows. (24->20byte)
+ [ruby-core:7474]
+
+Thu Mar 2 14:12:26 2006 Tanaka Akira <akr@m17n.org>
+
+ * gc.c: align VALUE with sizeof(RVALUE) globally.
+ (is_pointer_to_heap): check alignment out of loop.
+ (id2ref): avoid collision between symbols and objects.
+ (rb_obj_id): ditto. moved from object.c.
+ [ruby-talk:178364] [ruby-core:7305]
+
+Thu Mar 2 12:55:16 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (filetime_to_unixtime): should set tm_isdst to -1.
+ stat() didn't treat daylight saving time property on WinNT.
+ [ruby-talk:182100]
+
+Wed Mar 1 00:15:51 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/rdoc/parsers/parse_rb.rb (read_escape): could not handle /\^/.
+ merged Mr. Ishizuka's lib/irb/ruby-lex.rb 's patch rev 1.29.
+ [ruby-talk:181631] [ruby-dev:28404]
+
+Tue Feb 28 19:32:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): add BasicObject class as a top level
+ BlankSlate class.
+
+Mon Feb 27 00:19:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (SYM2ID): should not cast to signed long.
+ [ruby-core:07414]
+
+Fri Feb 24 20:21:38 2006 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/drbtest.rb (add_service_command): quote pathnames in the
+ server's command line for space contained directory names.
+ Thanks, arton. [ruby-dev:28386]
+
+Fri Feb 24 12:10:07 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: install *.exe.manifest and *.dll.manifest if exist.
+ It's for VC++8.
+
+Fri Feb 24 11:17:45 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (NtInitialize): need to set a handler for VC++8.
+
+Thu Feb 23 22:39:59 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: use borlndmm.dll if possible. bcc32's RTL internal
+ memory manager cannot handle large memory block properly.
+ ex: 10000.times { "" << "." * 529671; GC.start } # crash
+ [ruby-dev:28230]
+
+Thu Feb 23 13:23:03 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * eval.c (SETUP_ARGS0): fixed memory corruption. [ruby-dev:28360]
+
+Wed Feb 22 21:16:55 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#each_filename): use split_names properly.
+
+Wed Feb 22 16:24:05 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/webrick/test_cgi.rb: should support platforms which search
+ library path from the interpreter's path.
+ And, support test without install incidentally.
+
+Wed Feb 22 14:21:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bignorm): x may not be a bignum. [ruby-dev:28367]
+
+Wed Feb 22 09:22:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_alloc): add proper check for creation of a lambda
+ without a block.
+
+Tue Feb 21 02:07:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_arglist): should set command_start = Qtrue for
+ command body. [ruby-talk:180648]
+
+Mon Feb 20 22:30:17 2006 Tanaka Akira <akr@m17n.org>
+
+ * mkconfig.rb: alias Config to RbConfig for compatibility.
+
+Mon Feb 20 18:21:41 2006 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_reopen): flush before reopening a file.
+ reported by Mathieu Bouchard. [ruby-core:7396]
+
+Mon Feb 20 17:29:50 2006 Tanaka Akira <akr@m17n.org>
+
+ * mkconfig.rb: generate RbConfig instead of Config.
+
+ * instruby.rb, rubytest.rb, runruby.rb, bcc32/Makefile.sub,
+ ext/extmk.rb, ext/dl/extconf.rb, ext/iconv/charset_alias.rb,
+ lib/mkmf.rb, lib/rdoc/ri/ri_paths.rb,
+ lib/webrick/httpservlet/cgihandler.rb,
+ test/dbm/test_dbm.rb, test/gdbm/test_gdbm.rb,
+ test/ruby/envutil.rb, test/soap/calc/test_calc_cgi.rb,
+ test/soap/header/test_authheader_cgi.rb, test/soap/ssl/test_ssl.rb,
+ win32/mkexports.rb, win32/resource.rb: Use RbConfig instead of
+ Config.
+
+Mon Feb 20 13:46:19 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/find.rb: should raise ENOENT if root entry does not exist,
+ without opening it. [ruby-dev:28345]
+
+Mon Feb 20 12:27:53 2006 Kent Sibilev <ksruby@gmail.com>
+
+ * lib/rational.rb (Integer::gcd): small typo fix.
+ [ruby-core:07395]
+
+Mon Feb 20 10:03:59 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get_0): Object should have been the lowest
+ in const lookup precedence. [ruby-dev:28343]
+
+Mon Feb 20 09:17:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator): should not delegate "funcall".
+
+Mon Feb 20 09:13:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb (WEBrick::HTTPServlet::CGIHandler):
+ qualify the access for Config constant. [ruby-dev:28338]
+
+ * lib/resolv.rb (Resolv::DNS::Resource::IN::A): qualify
+ ClassValue. [ruby-dev:28338]
+
+Mon Feb 20 01:05:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rational.rb (Integer::gcd): replaced by gcd4 in
+ [ruby-core:07390]. [ruby-core:07377]
+
+Mon Feb 20 00:57:02 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.h (OSSL_Debug): should not use __func__.
+ [ruby-dev:28339]
+
+Mon Feb 20 00:13:49 2006 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: add :ssl_verify_mode option.
+ suggested by Will Glynn.
+
+ * lib/open-uri.rb: add :ssl_ca_cert option.
+
+Sun Feb 19 04:46:29 2006 Guy Decoux <ts@moulon.inra.fr>
+
+ * eval.c: initial value for block_unique must be 1.
+ [ruby-talk:180420]
+
+Sat Feb 18 23:58:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tracer.rb (Tracer::Tracer.add_filter): turn on tracer mode
+ only when caller() level size is one. [ruby-core:07389]
+
+ * lib/rdoc/parsers/parse_rb.rb: need not to require "tracer".
+ [ruby-core:07389]
+
+ * sample/rtags.rb: ditto.
+
+Sat Feb 18 21:16:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_obj_instance_eval): RDoc description updated. a
+ patch from Ozgur Murat Homurlu <ozgurmurath at gmail.com>.
+ [ruby-core:07381]
+
+Sat Feb 18 01:01:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get_0): skip ruby_wrapper in const search
+ to give it lower priority (just above Object). need not to
+ change rb_const_defined_0() since it's only a precedence matter;
+ they are defined anyway.
+
+Sat Feb 18 00:22:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tracer.rb: merged a minor clarification patch from Daniel
+ Berger <Daniel.Berger at qwest.com>. [ruby-core:07376]
+
+Fri Feb 17 17:30:20 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_get): simplified using rb_const_get_fallback().
+
+ * eval.c (ev_const_defined): adopt to ev_const_get() using
+ rb_const_defined_fallback().
+
+ * variable.c (rb_const_get_fallback): new function to implement
+ constant search.
+
+ * variable.c (rb_const_defined_fallback): new function to
+ implement constant definition check.
+
+ * variable.c (rb_const_get_0): adopt to new behavior. constants
+ are looked up in the order of: current class, super classes (but
+ Object), lexically external classes/modules, and Object.
+
+ * variable.c (rb_const_defined_0): ditto.
+
+Fri Feb 17 11:20:53 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.c (ruby_strtod): Float("1e") should fail. [ruby-core:7330]
+
+ * pack.c (EXTEND32): unpack("l") did not work where sizeof(long) != 4.
+ [ruby-talk:180024]
+
+ * pack.c (pack_unpack): fixed integer overflow on template "w".
+ [ruby-talk:180126]
+
+Fri Feb 17 09:39:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_wait_for): sleep should always sleep for
+ specified amount of time. [ruby-talk:180067]
+
+Wed Feb 15 16:52:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): NODE_OP_ASGN1 should allow splat in its
+ argument list. [ruby-core:07366]
+
+ * parse.y (arg): avoid unnecessary extra argument.
+ [ruby-core:07366]
+
+ * eval.c (rb_eval): honor visibility on OP_ASGN1 and
+ OP_ASGN2. [ruby-core:07366]
+
+Wed Feb 15 15:20:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_line): remove void control path. [ruby-dev:28335]
+
+Wed Feb 15 10:09:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (yield_under_i): should not pass self as an argument to
+ the block for instance_eval. [ruby-core:07364]
+
+Wed Feb 15 09:20:35 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_obj_instance_eval): should be no singleton classes for
+ true, false, and nil. [ruby-dev:28186]
+
+Tue Feb 14 20:26:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_each): return self if no block is
+ given. [yarv-dev:882]
+
+Tue Feb 14 18:48:33 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (DMETHOD_P): accessing wrong frame. [ruby-dev:28181]
+
+ * eval.c (proc_invoke): preserve FRAME_DMETH flag.
+
+Tue Feb 14 15:15:22 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/zlib/zlib.c: suppress warning on test/zlib. [ruby-dev:28323]
+
+Tue Feb 14 13:47:22 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_utime): drop read-only attribute before
+ changing file time.
+
+Tue Feb 14 13:38:01 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.h): should define HAVE_LONG_LONG with
+ VC++8.
+
+Tue Feb 14 11:42:38 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (search_time_t): support non 32bit time_t environments.
+
+ * win32/Makefile.sub (config.h): VC++8 has ``long long'' type.
+
+ * win32/Makefile.sub (config.h): VC++8's time_t is 64bit value.
+
+Mon Feb 13 18:01:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (copy_node_scope): remove duplicated semicolons at end.
+ a patch from KIMURA Koichi <kimura.koichi at canon.co.jp>.
+ [ruby-dev:28332]
+
+ * eval.c (VIS_MODE): remove unnecessary argument.
+ [ruby-dev:28332]
+
+Mon Feb 13 13:49:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_parse_string): mention "regexp" in a error
+ message. a patch from Mauricio Fernandez <mfp at acm.org>
+ [ruby-core:07340]
+
+Mon Feb 13 00:01:32 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * oniguruma.h: Version 4.0.1
+
+ * regparse.c (onig_free_shared_cclass_table): fix memory leaks.
+
+ * regcomp.c (optimize_node_left): change from IS_POSIXLINE() to IS_MULTILINE().
+
+ * regint.h: rename ANCHOR_ANYCHAR_STAR_PL to ANCHOR_ANYCHAR_STAR_ML.
+
+ * regparse.h: ditto.
+
+ * regexec.c: ditto.
+
+Sat Feb 11 21:57:29 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE.create_guid.
+
+ * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+
+Sat Feb 11 01:57:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_autoload): check if ruby_cbase is nil (during
+ instance_eval for objects cannot have singleton classes,
+ e.g. fixnums and symbols). [ruby-dev:28178]
+
+Fri Feb 10 12:31:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): should support NODE_ZSUPER in NODE_ITER.
+ [ruby-dev:28326]
+
+ * eval.c (ZSUPER_ARGS): support macro.
+
+Wed Feb 8 10:26:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while
+ invoking finalizers.
+
+ * gc.c (rb_gc_finalize_deferred): ditto.
+
+Tue Feb 7 23:03:13 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/zlib/zlib.c: should not access ruby objects in finalizer.
+ [ruby-dev:28286]
+
+Tue Feb 7 18:42:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_write_error2): use fwrite(3) if rb_stderr is not
+ updated or is already freed. [ruby-dev:28313]
+
+Mon Feb 6 16:02:51 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_thread_flock): ERROR_NOT_LOCKED is not an error on Cygwin.
+ In such situation, flock() should return 0.
+
+Mon Feb 6 14:36:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (error_line): include the class name of a surrounding
+ method in error position description.
+
+Mon Feb 6 00:14:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_find_index): a new method Enumerable#find_index.
+ [ruby-talk:178495]
+
+Sun Feb 5 23:29:31 2006 Tanaka Akira <akr@m17n.org>
+
+ * ruby.h (struct RStruct): embed 3 or less elements structs.
+ (RSTRUCT_LEN): defined for accessing struct members.
+ (RSTRUCT_PTR): ditto.
+
+ * struct.c: use RSTRUCT_LEN and RSTRUCT_PTR.
+ (struct_alloc): allocate small structs in embedded format.
+ (rb_struct_init_copy): ditto.
+
+ * gc.c (gc_mark_children): use RSTRUCT_LEN and RSTRUCT_PTR.
+ (obj_free): ditto.
+
+ * marshal.c (w_object): use RSTRUCT_LEN and RSTRUCT_PTR.
+
+Sun Feb 5 21:01:49 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * numeric.c (fix_to_s): removed workaround for radix 2. Historically,
+ rb_fix2str could only handle radix 8, 10, 16. (Rev1.37) But for now,
+ it can handle radix 2..36. [ruby-Bugs#3438] [ruby-core:7300]
+
+Sun Feb 5 18:49:00 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (add_field, get_fields): keep 1.8.2
+ compatibility. This patch is contributed by Rob Pitt.
+
+Sun Feb 5 16:33:50 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/mkmf.rb (create_makefile): Kernel#sub! was removed on HEAD.
+
+Sun Feb 5 14:26:54 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/pstore.rb: should return default value if name is not found.
+ [ruby-core:7304]
+
+ * lib/pstore.rb: should raise PStore::Error if not in transaction.
+
+Sat Feb 4 22:51:43 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c: apply the FreeBSD getcontext/setcontext workaround
+ only before FreeBSD 7-CURRENT.
+
+Sat Feb 4 21:10:06 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (LK_ERR): ERROR_NOT_LOCKED is not an error.
+ In such situation, flock() should return 0.
+
+Sat Feb 4 15:52:56 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * numeric.c (fix_to_s): (2**32).to_s(2) fails with exception where
+ sizeof(int) == 4 < sizeof(long). [ruby-core:7300]
+
+Sat Feb 4 15:02:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * oniguruma.h: merge Oniguruma 4.0.0 [ruby-dev:28290]
+
+Fri Feb 3 19:25:53 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ruby.h: fixed prototype.
+
+ * ext/syck/rubyext.c: defined symbol ID as global variable as others.
+
+Fri Feb 3 17:57:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: unify ruby_class (for method definition) and ruby_cbase
+ (for constant reference).
+
+Fri Feb 3 15:02:10 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/syck.c (syck_move_tokens): should reset p->cursor or etc
+ even if skip == 0. This causes buffer overrun.
+ (ex: YAML.load('--- "..' + '\x82\xA0' * 511 + '"'))
+
+Fri Feb 3 00:01:31 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/emitter.c (syck_emitter_write): should not set '\0' on
+ emitter's marker. if marker points to the end of buffer, this is
+ buffer overrun. (ex: YAML.dump("." * 12288))
+
+Thu Feb 2 17:13:01 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser#get_tk): added
+ support of :'string' style Symbol.
+
+Thu Feb 2 16:01:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): use TMP_ALLOC() instead of allocating
+ a temporary array object.
+
+ * eval.c (eval): need not to protect $SAFE value.
+ [ruby-core:07177]
+
+ * error.c (Init_Exception): change NameError to direct subclass of
+ Exception so that default rescue do not handle it silently.
+
+Thu Feb 2 14:45:53 2006 Ville Mattila <ville.mattila@stonesoft.com>
+
+ * configure.in: The isinf is not recognized by autoconf
+ library guesser on solaris 10. [ruby-core:7138]
+
+Wed Feb 1 22:01:47 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * configure.in, hash.c (ruby_setenv): use setenv(3) and unsetenv(3)
+ where they are supported. modifying environ variable seems to
+ segfault solaris 10. [ruby-core:7276] [ruby-dev:28270]
+
+ * ruby.c (set_arg0): if use setenv(3), environ space cannot be used
+ for altering argv[0].
+
+Tue Jan 31 14:46:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_select): update RDoc description.
+ [ruby-core:7254]
+
+Tue Jan 31 11:58:51 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: add MultiTkIp#eval and bg_eval.
+
+ * ext/tk/lib/tk/namespace.rb: TkNamespace#eval was enbugged at the
+ last commit. Now it will return a proper object.
+
+Tue Jan 31 08:07:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (int_upto): return an enumerator if no block is
+ attached to the method.
+
+ * numeric.c (int_downto): ditto.
+
+ * numeric.c (int_dotimes): ditto.
+
+ * enum.c (enum_first): new method Enumerable#first to take first n
+ elements from an enumerable.
+
+ * enum.c (enum_group_by): new method Enumerable#group_by that
+ groups enumerable values according to their block values.
+
+Tue Jan 31 00:08:22 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (syck_resolver_transfer): workaround for SEGV.
+ ex: ruby -ryaml -e 'YAML.load("!map:B {}")' [ruby-core:7217]
+
+Sat Jan 28 07:49:30 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/rdoc/usage.rb: support "a:0:33" style caller[-1]. In this case
+ file name is "a:0". I don't know this really happens though...
+ [ruby-Bugs:3344]
+
+Thu Jan 26 15:55:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: turn on do_not_reverse_lookup by default.
+
+Wed Jan 25 22:29:04 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, dln.c, file.c, intern.h, missing.h (eaccess): use
+ system routine if provided. fixed: [ruby-core:07195]
+
+Sun Jan 22 23:27:13 2006 Go Noguchi <gonoguti@yahoo.co.jp>
+
+ * lib/test/unit/autorunner.rb (process_args): ignore arguments after
+ '--' so that test scripts can handle them. fixed: [ruby-dev:28258]
+
+Sun Jan 22 22:09:52 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (POST_GETCONTEXT): define separately from PRE_GETCONTEXT on
+ IA64 to avoid reusing variable address.
+
+Sun Jan 22 20:03:35 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (ruby_setjmp): define PRE_GETCONTEXT and POST_GETCONTEXT
+ instead of FUNCTION_CALL_MAY_RETURN_TWICE.
+ define PRE_GETCONTEXT to clear carry flag for workaround of
+ FreeBSD/i386 getcontext/setcontext bug.
+ [ruby-dev:28263]
+
+Thu Jan 19 22:19:18 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mv): should remove file after copying.
+ [ruby-dev:28223]
+
+Wed Jan 18 23:37:06 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): don't clobber %l7 of SPARC
+ if enable-shared.
+ (ruby_setjmp): call FUNCTION_CALL_MAY_RETURN_TWICE after getcontext
+ too.
+ reported by Pav Lucistnik and Marius Strobl.
+ http://lists.freebsd.org/pipermail/freebsd-sparc64/2006-January/003739.html
+
+Tue Jan 17 23:59:56 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_get, rb_mod_const_defined): added optional
+ flag to search ancestors, which is defaulted to true.
+ fixed: [ruby-talk:175899]
+
+ * eval.c (rb_mod_method_defined): ditto.
+
+Tue Jan 17 11:31:47 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak (MAKE): workaround for nmake 8.
+
+Tue Jan 17 11:06:19 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: invoke .bat via shell. workaround for nmake 8.
+
+Mon Jan 16 10:13:38 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/emitter.c (syck_emit_seq, syck_emit_map, syck_emit_item):
+ should output complex key mark even if map's key is empty seq/map.
+ [ruby-core:7129]
+
+Sat Jan 14 03:38:54 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * file.c (rb_file_s_chmod): avoid warning where sizeof(int) !=
+ sizeof(void*).
+
+Fri Jan 13 19:26:15 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/rdoc/diagram.rb:
+ - properly quote bare element attributes
+ - terminates dangling elements (e.g. <img>, <br>, <link>, etc)
+ - converts "CVS" to the more HTML-friendly acronym element
+ - adds missing type attributes to style elements
+
+ based on Paul Duncan's patch <pabs@pablotron.org> [ruby-core:7028]
+
+ * lib/rdoc/generators/html_generator.rb: ditto.
+ * lib/rdoc/generators/template/html/hefss.rb: ditto.
+ * lib/rdoc/generators/template/html/html.rb: ditto.
+ * lib/rdoc/generators/template/html/kilmer.rb: ditto.
+
+Thu Jan 12 11:53:08 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkballoonhelp.rb: [bug fix] couldn't add to a widget
+ which is constructed with TkComposite module.
+ [new feature] support 'command' option which is called just before
+ popping up the balloon help.
+
+Wed Jan 11 00:12:29 2006 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (ERB::Compiler): add instance variable @insert_cmd to
+ change <%='s behavior.
+
+Tue Jan 10 19:42:33 2006 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (garbage_collect): mark ruby_current_node.
+ if an exception is raised in a finalizer written in C called by
+ rb_gc_call_finalizer_at_exit, ruby_set_current_source may use
+ collected ruby_current_node and mark_source_filename may corrupt
+ memory.
+
+Tue Jan 10 13:30:34 2006 akira yamada <akira@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_resolver_transfer): should be able to load
+ !ruby/object:Bignum syntax 1.8.3 dumped. [ruby-core:6159]
+
+Tue Jan 10 12:47:41 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/yaml/rubytypes.rb (Fixnum): Bignum could not be loaded in
+ ruby 1.8.3/1.8.4. [ruby-core:6115]
+
+ * lib/yaml/rubytypes.rb (Numeric): Subclass of Numeric could not
+ be dumped properly. [ruby-core:7047]
+
+Tue Jan 10 12:00:48 2006 Aaron Schrab <aaron @nospam@ schrab.com>
+
+ * lib/yaml/rubytypes.rb (Symbol#yaml_new): YAML loading of quoted
+ Symbols broken. [ruby-Bugs:2535]
+
+Tue Jan 10 07:26:52 2006 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (gc_stress): renamed from always_gc and enabled by default.
+ (gc_stress_get): new function for GC.stress.
+ (gc_stress_set): new function for GC.stress=.
+
+Mon Jan 9 19:58:56 2006 arton <artonx@yahoo.co.jp>
+
+ * ext/zlib/extconf.rb: zlib compiled DLL version 1.2.3 distributed by
+ http://www.zlib.net/ has zdll.lib. [ruby-dev:28209]
+
+Mon Jan 9 14:25:00 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/Makefile.sub (OPTFLAGS): I have experienced trouble on y- flag,
+ (VisualC++6) so use -O2b2xg- if $(MSC_VER) < 1400. [ruby-core:7040]
+
+Mon Jan 9 14:25:00 2006 Kero van Gelder <rubyforge @nospam@ kero.tmfweb.nl>
+
+ * lib/webrick/httpservlet/filehandler.rb: fixed typo. [ruby-core:7075]
+
+Sun Jan 8 14:15:27 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (GCC_VERSION_BEFORE): check __INTEL_COMPILER.
+ Intel C++ Compiler defines __GNUC__.
+ http://www.intel.com/software/products/compilers/clin/docs/ug_cpp/lin1077.htm
+
+Sat Jan 7 15:40:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (singleton): get rid of segfault on syntax error.
+ fixed: [ruby-core:07070]
+
+Sat Jan 7 06:24:18 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_fd_isset): compare the result of FD_ISSET with 0 to
+ avoid FreeBSD bug. FreeBSD defines FD_ISSET as just a bitmap of
+ unsigned long. So returning the value from rb_fd_isset discards
+ upper 32bits on LP64 environment.
+ http://www.freebsd.org/cgi/query-pr.cgi?pr=ia64/91421
+
+Fri Jan 6 02:20:18 2006 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: don't force getcontext on IA64.
+
+ * eval.c (ruby_setjmp): add an argument for just before getcontext.
+ (THREAD_SAVE_CONTEXT): call rb_thread_save_context just
+ before getcontext.
+ [ruby-dev:28205]
+
+Sun Jan 1 15:28:46 2006 Tanaka Akira <akr@m17n.org>
+
+ * missing.h (isinf): avoid macro expansion
+ "extern int isinf(double);" to
+ "extern int ((sizeof(double)==sizeof(float))?_Isinff(double):_Isinf(double));" on
+ HP-UX.
+
+Sun Jan 1 14:42:54 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_seekdir): should not segfault even if passed
+ the location which rb_w32_telldir didn't return. (and should change
+ `bits' position) [ruby-core:7035]
+
+ * win32/dir.h: ditto. (stores `loc' instead of `bitpos')
+
+ * test/ruby/test_dir.rb: added.
+
+Sat Dec 31 22:57:00 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_save_context): should not recycle scope object used
+ in a thread. fixed: [ruby-dev:28177]
+
+Sat Dec 31 19:50:38 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c: attribute name was truncated with Rev1.64.
+
+Sat Dec 31 11:53:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/generator.rb: (Generator#initialize): should kill @loop_thread
+ before starting new thread. (occurs when called via Generator#rewind)
+ [ruby-dev:28184]
+
+Fri Dec 30 18:22:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (garbage_collect): mark objects referred from aborting threads.
+ [ruby-dev:28190]
+
+ * win32/Makefile.sub: VC++8 support.
+
+Fri Dec 30 15:17:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/generator.rb (Generator#initialize): ensured to stop @loop_thread.
+ Mr. Tanaka pointed out one Thread.pass is not enough. [ruby-dev:28185]
+
+Fri Dec 30 12:20:57 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/generator.rb (Generator#initialize): fixed dead lock. this occurred
+ when end? was called before @loop_thread was stopped. [ruby-core:7029]
+
+Fri Dec 30 01:04:52 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/generator.rb: should work with another thread. (more robust code)
+ [ruby-dev:28177]
+
+Thu Dec 29 23:59:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_gc_mark_threads): keep unmarked threads which won't wake
+ up alone, and mark threads in the loading table. [ruby-dev:28154]
+
+ * eval.c (rb_gc_abort_threads), gc.c (gc_sweep): kill unmarked
+ threads. [ruby-dev:28172]
+
+Thu Dec 29 17:02:07 2005 Tanaka Akira <akr@m17n.org>
+
+ * test/ruby/envutil.rb (EnvUtil.rubybin): search "ruby" instead of
+ "miniruby". [ruby-dev:28140]
+
+Thu Dec 29 14:35:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_define_method): should save safe_level in the
+ proc object. [ruby-dev:28146]
+
+Thu Dec 29 11:22:34 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/generator.rb: reimplemented Generator class with Thread instead of
+ callcc, in order to fix memory leak. [ruby-dev:28142]
+
+Wed Dec 28 14:10:05 2005 Tanaka Akira <akr@m17n.org>
+
+ * ia64.s: remove .pred.safe_across_calls directive.
+ reported by WATANABE Tetsuya. [ruby-dev:28141]
+
+Wed Dec 28 01:32:39 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (struct thread): add bstr_max.
+ (rb_thread_save_context): use realloc instead of REALLOC_N
+ to avoid GC.
+
+Tue Dec 27 23:59:53 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (CompletingHash#match): fix for 1.9.
+
+Tue Dec 27 16:59:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/drb/drbtest.rb (DRbService::self.ext_service): increase
+ timeout limit. a patch from Kazuhiro NISHIYAMA
+ <zn at mbf.nifty.com>. [ruby-dev:28132]
+
+Tue Dec 27 14:17:55 2005 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: define IA64 for portability. (HP aC++/ANSI C doesn't
+ define __ia64__.)
+ don't check libunwind stuff.
+ check __libc_ia64_register_backing_store_base.
+
+ * defines.h: declare rb_ia64_bsp and rb_ia64_flushrs.
+ (flush_register_windows): call rb_ia64_flushrs on IA64.
+
+ * ia64.s: new file for IA64.
+ it is separated from C program files because
+ Intel C++ Compiler for IA64 doesn't support inline assembly.
+
+ * common.mk (ia64.$(OBJEXT)): new target.
+
+ * ruby.h (RUBY_INIT_STACK): defined.
+ (ruby_init_stack): declared for RUBY_INIT_STACK.
+
+ * main.c (main): precedes RUBY_INIT_STACK before ruby_init.
+
+ * gc.c (rb_gc_register_stack_start): new global variable on IA64.
+ (garbage_collect): simplify register stack marking code.
+ don't use libunwind.
+ (Init_stack): initialize rb_gc_register_stack_start.
+ (ruby_init_stack): new function for RUBY_INIT_STACK.
+
+ * eval.c (struct thread): add bstr_pos member for original position of
+ register stack.
+ (rb_thread_save_context): simplify register stack saving code.
+ don't use libunwind.
+ (rb_thread_restore_context_0): new function. moved from
+ rb_thread_restore_context except the stack position checking code.
+ don't use libunwind for IA64 register stack.
+ (register_stack_extend): new function.
+ (stack_extend): make it self-recursive with
+ the stack position checking code in old rb_thread_restore_context.
+ (rb_thread_restore_context): just call stack_extend.
+ (flush_register_windows): removed.
+
+ [ruby-dev:28127]
+
+Tue Dec 27 14:09:39 2005 Minero Aoki <aamine@loveruby.net>
+
+ * process.c: new method Process.exec. [ruby-dev:28107]
+
+Tue Dec 27 08:22:15 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLSocket#post_connection_check):
+ treat wildcard character in commonName. [ruby-dev:28121]
+
+Mon Dec 26 08:50:36 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ev_const_get): fixed a bug in constant reference during
+ instance_eval. [yarv-dev:707]
+
+ * eval.c (ev_const_defined): ditto.
+
+ * lib/yaml.rb (YAML::add_domain_type): typo fixed. a patch from
+ Joel VanderWerf <vjoel at path.berkeley.edu>.
+ [ruby-talk:165285] [ruby-core:6995]
+
+Fri Dec 23 10:30:23 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/digest/sha2/sha2.c (ULL): support AIX C. a patch from
+ Kailden <kailden at gmail.com>. [ruby-core:06984]
+
+Wed Dec 21 16:47:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * file.c (w32_io_info): should return handle because FileIndex is
+ valid only while file is open. [ruby-dev:28088]
+
+Wed Dec 21 12:12:21 2005 Tanaka Akira <akr@m17n.org>
+
+ * test/pathname/test_pathname.rb (test_kernel_open): use
+ File.identical?.
+ [ruby-talk:171804]
+
+Tue Dec 20 22:41:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (eval_under_i): evaluate source in caller's frame.
+ [ruby-dev:28076]
+
+Tue Dec 20 12:53:23 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_emitter_reset): to ensure compatibility
+ with previous Ruby versions, documents are no longer headless.
+
+Tue Dec 20 12:33:01 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (syck_node_transform): ruby object holding
+ explicitly freed SyckNode caused SEGV. [ruby-dev:28067]
+
+ ... I think syck GC problem was solved now!
+
+Tue Dec 20 01:46:48 2005 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_f_backquote): fix a GC problem on
+ IA64 with gcc 4.0.3 20051216 (prerelease) -O3.
+
+Mon Dec 19 23:32:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (XCFLAGS): separated as well as win32/Makefile.sub.
+
+ * main.c (always_gc): dllimport is required for VC to import a DLL
+ symbol. fixed: [ruby-dev:28051]
+
+ * parse.y (rb_symname_p): fixed wrong validation. [ruby-dev:28047]
+
+Mon Dec 19 23:09:24 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * st.c: uses malloc instead of xmalloc to avoid GC. syck uses st_insert
+ in gram.c to insert node from rb_syck_bad_anchor_handler into
+ SyckParser's hash table. if GC occurs in st_insert, it's not under
+ SyckParser's mark system yet. so RString can be released wrongly.
+
+ * ext/syck/syck.h (S_FREE): small hack. no need to check if pointer is
+ NULL or not before S_FREE.
+
+ * ext/syck/rubyext.c (syck_parser_assign_io): rb_check_string_type can
+ return new RString. if so, it becomes unreachable from GC after
+ returns syck_parser_assign_io, and can be freed by GC. (dangling
+ in syck io system) so extends its life time till syck_parse is called.
+
+ * ext/syck/rubyext.c (syck_parser_s_alloc): always allocates bonus,
+ so no need to check if NULL, and "volatile VALUE hash"
+ is not needed. (bonus->port was not protected in syck_emitter_reset)
+
+ * ext/syck/rubyext.c (syck_mark_parser): ditto.
+
+ * ext/syck/rubyext.c (syck_parser_load): ditto.
+
+ * ext/syck/rubyext.c (syck_parser_load_documents): ditto.
+
+ * ext/syck/rubyext.c (syck_emitter_s_alloc): ditto.
+
+ * ext/syck/rubyext.c (syck_mark_emitter): ditto.
+
+ * ext/syck/rubyext.c (syck_emitter_reset): ditto.
+
+ * ext/syck/rubyext.c (syck_scalar_value_set): "should set newly
+ allocated memory instead of RString's internal storage" stuff again.
+ by this, should call syck_free_node instead of rb_syck_free_node.
+
+ * ext/syck/rubyext.c (syck_node_type_id_set): ditto.
+
+ ... I believe syck GC problem was solved by this.
+
+Mon Dec 19 12:20:59 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): activate only
+ before gcc 4.0.3 on SPARC and IA64.
+
+Mon Dec 19 11:37:47 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c: sorry, I reverted my "should set newly
+ allocated memory instead of RString's internal storage" stuff.
+ node allocated in rubyext.c seems to be freed by rb_syck_free_node
+ not syck_free_node, and it won't free data.str->ptr and type_id.
+
+ (I still think this is unsafe because RString(foo)->ptr becomes
+ dangling pointer when RString is modified or freed, but anyway
+ I misunderstood, so go back to original code for now)
+
+Sat Dec 17 21:50:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (syck_emitter_reset): should initialize
+ emitter->bonus->oid. otherwise rb_gc_mark crashes.
+
+ * ext/syck/rubyext.c (syck_mark_parser): should mark anchor nodes
+ because they hold ruby objects. (ie: rb_syck_bad_anchor_handler)
+
+Sat Dec 17 11:00:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (rb_syck_compile): avoid potential memory
+ leak.
+
+ * ext/syck/rubyext.c (syck_set_ivars): avoid potential memory
+ leak by explicit symbol allocation.
+
+Sat Dec 17 03:57:01 2005 Tanaka Akira <akr@m17n.org>
+
+ * bignum.c (rb_big_rshift): fix a GC problem on
+ IA64 with gcc 4.0.3 20051216 (prerelease).
+
+Sat Dec 17 03:30:23 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (bmcall): fix a GC problem by tail call on
+ IA64 with gcc 4.0.3 20051216 (prerelease).
+
+Fri Dec 16 17:53:45 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (rb_syck_compile): fixed memory leak.
+
+ * ext/syck/rubyext.c: should protect global variable from GC.
+
+Fri Dec 16 11:44:43 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (syck_resolver_tagurize): fixed memory leak.
+
+ * ext/syck/rubyext.c (syck_node_type_id_set): should set newly
+ allocated memory instead of RString's internal storage.
+
+ * ext/syck/rubyext.c (syck_scalar_value_set): ditto.
+
+ ... these fixes won't fix [ruby-dev:27839]. more work is needed.
+
+Fri Dec 16 04:38:55 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator::method_missing): should delegate
+ block as well.
+
+Thu Dec 15 19:57:12 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::MorphingBody): fix criteria to
+ use Tempfile. A fix from Zev Blut <rubyzbibd at ubit.com>.
+ [ruby-core:06076]
+
+ * string.c: remove global functions work on $_.
+
+Thu Dec 15 12:35:14 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tmpdir.rb: merged RDoc patch from Eric Hodel <drbrain at
+ segment7.net>. [ruby-core:06894]
+
+Thu Dec 15 01:33:31 2005 Tanaka Akira <akr@m17n.org>
+
+ * ext/zlib/zlib.c (zstream_run): fix a GC problem by tail call on
+ x86_64 with gcc 4.0.3 20051111 (prerelease) (Debian 4.0.2-4)
+
+Wed Dec 14 23:50:20 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_c.rb (find_class_comment): fix for class
+ document with prototypes. [ruby-core:06863]
+
+Wed Dec 14 23:39:53 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (has_magic): glob names contain alphabets to enable case fold
+ search. [ruby-dev:27735]
+
+ * dir.c (Init_Dir): FNM_SYSCASE which is default case fold flag.
+ [ruby-dev:23296]
+
+Wed Dec 14 12:01:26 2005 Tanaka Akira <akr@m17n.org>
+
+ * marshal.c (r_object0): fix a GC problem for reading a bignum on
+ IA64 with gcc 3.3.5 (Debian 1:3.3.5-13).
+
+Tue Dec 13 12:23:47 2005 Tanaka Akira <akr@m17n.org>
+
+ * re.c (rb_reg_regcomp): fix a GC problem on x86_64 with
+ gcc 3.3.5 (Debian 1:3.3.5-13).
+
+Tue Dec 13 01:44:16 2005 Tanaka Akira <akr@m17n.org>
+
+ * array.c (rb_ary_diff): fix a GC problem on IA64 with
+ gcc 3.3.5 (Debian 1:3.3.5-13).
+ When rb_ary_push is called, there was no register which contains
+ `hash' but `&RHASH(hash)->tbl' instead.
+
+Tue Dec 13 00:08:09 2005 Tanaka Akira <akr@m17n.org>
+
+ * sprintf.c (rb_str_format): fix a GC problem.
+ [ruby-dev:28001]
+
+Mon Dec 12 15:51:22 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/openssl/test_ssl.rb (test_parallel): call GC.start to close
+ unused files. [ruby-dev:27981]
+
+Mon Dec 12 09:58:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_cover): new method Range#cover? added. the
+ method name might be changed. thanks to takano32 at
+ http://www.rubyist.net/~matz/20051210.html#c08 for name
+ suggestion. [ruby-talk:167182]
+
+Mon Dec 12 00:33:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/digest/digest.c (rb_digest_base_s_digest): add volatile to
+ protect temporary context object. [ruby-dev:27979]
+
+ * ext/iconv/iconv.c (Init_iconv): rb_gc_register_address() should
+ be called before actual variable initialization.
+ [ruby-dev:27986]
+
+Sun Dec 11 23:54:07 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/*: update to support libraries in ActiveTcl8.4.12.0
+ (see ext/tk/ChangeLog.tkextlib).
+
+ * ext/tk/sample/scrollframe.rb: add a new sample.
+
+Sun Dec 11 22:07:58 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb (test_remote_array_and_hash): pseudo remote
+ objects are protected against GC. [ruby-dev:27911]
+
+Sat Dec 10 01:06:06 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/matrix.rb: add Matrix#determinant_e, Matrix#rank_e.
+ [ruby-dev:27820] and related thread.
+
+Sat Dec 10 00:31:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (calling_scope_t): gave names to magic numbers for rb_call().
+ [ruby-dev:27978]
+
+Fri Dec 9 23:31:02 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rexml/encoding.rb (encoding=): give priority to particular
+ conversion to iconv. [ruby-core:06520]
+
+Fri Dec 9 23:16:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * range.c (range_include): return false unless included in numeric
+ range. fixed: [ruby-dev:27975]
+
+Thu Dec 8 02:07:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (umethod_bind): adjust invoking class for module method.
+ [ruby-dev:27964]
+
+Thu Dec 8 00:40:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (call_trace_func): klass parameter should be a
+ class/module that defines calling method. [ruby-talk:169307]
+
+Wed Dec 7 17:10:27 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * sprintf.c (rb_f_sprintf): [ruby-dev:27967]
+
+Wed Dec 7 16:39:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_include): use discrete membership for non Numeric
+ values, for example, String.
+
+ * numeric.c (num_scalar_p): new method. [ruby-dev:27936]
+
+ * lib/complex.rb (Complex#scalar?): ditto.
+
+Wed Dec 7 15:31:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_str_format): integer overflow check added.
+
+ * sprintf.c (GETASTER): ditto.
+
+Wed Dec 7 01:02:04 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/README.macosx-aqua: [new document] tips to avoid the known
+ bug on platform specific dialogs of Tcl/Tk Aqua on MacOS X.
+
+ * ext/tk/tcltklib.c: fix bug on switching threads and waiting on the
+ deleted interpreter on vwait and tkwait command.
+
+ * ext/tk/lib/multi-tk.rb: kill the meaningless loop for the deleted Tk
+ interpreter.
+
+ * ext/tk/sample/demos-jp/image3.rb: [bug fix] wrong argument.
+
+ * ext/tk/sample/demos-en/image3.rb: ditto.
+
+ * ext/tk/sample/demos-jp/menu.rb: fix message for MacOS X.
+
+ * ext/tk/sample/demos-jp/menu8x.rb: ditto.
+
+ * ext/tk/sample/demos-en/menu.rb: ditto.
+
+Tue Dec 6 16:48:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (ruby_xmalloc2): change check condition for integer
+ overflow. [ruby-dev:27399]
+
+ * gc.c (ruby_xrealloc2): ditto.
+
+Tue Dec 6 16:37:57 2005 Yuya Nishida <yuya@j96.org>
+
+ * eval.c (exec_under): avoid accessing ruby_frame->prev.
+ [ruby-dev:27948]
+
+Fri Dec 2 19:06:06 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (Compare): should not fold double byte alphabet on win9x.
+
+Thu Dec 1 00:50:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_funcall2): allow to call protected methods.
+ fixed: [ruby-dev:27890]
+
+Wed Nov 30 23:52:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (struct parser_params): fields common to ripper must be
+ placed at each same offset.
+
+ * parse.y (NEWHEAP, ADD2HEAP): set count after pointer was set.
+ fixed: [ruby-dev:27896]
+
+Wed Nov 30 13:43:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg): support $! at the end of
+ expression. [ruby-dev:27868]
+
+Tue Nov 29 23:57:05 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (struct parser_params): heap must be placed at same offset
+ also in ripper.y. fixed: [ruby-dev:27846]
+
+ * parse.y (yycompile): prevent vparser from tail call optimization.
+ fixed: [ruby-dev:27851]
+
+ * parse.y (parser_mark): value needs to be marked.
+ fixed: [ruby-dev:27845]
+
+Tue Nov 29 22:45:30 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/observer.rb (notify_observers): follow change of observer.rb.
+ fixed: [ruby-core:6796]
+
+Mon Nov 28 20:24:22 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (PP::PPMethods#object_address_group): mask an address with
+ word size.
+
+ * lib/pp.rb (PP::PPMethods#object_address_group): adjust address format.
+
+Mon Nov 28 18:55:22 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (init_inetsock_internal): remove setting
+ SO_REUSEADDR option on server socket on Cygwin.
+ fixed: [ruby-core:6765] ([ ruby-Bugs-2872 ])
+
+Mon Nov 28 13:11:45 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_strerror): remove all CR and LF. (avoid broken
+ error message on bccwin32 + winsock)
+
+Mon Nov 28 09:15:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/mkmf.rb (create_makefile): should not change sodir with
+ dir.gsub!. (bccwin32 failed to install third party extensions)
+ [ruby-dev:27834]
+
+Sun Nov 27 05:37:20 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: use File.basename to decompose pathnames.
+ experimental Windows support.
+
+Sun Nov 27 00:56:13 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/wsdl/xmlSchema/complexContent.rb: missing
+ ComplexContent#elementformdefault method.
+
+Sat Nov 26 19:57:45 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c (conv_to_posix_path): should initialize posix.
+
+Fri Nov 25 20:34:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc/datetime.rb (DateTime::to_a): comparison with non
+ array-convertible object must return false.
+
+Fri Nov 25 14:34:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_max): treat end exclusion without iteration if
+ the end value is an integer. [ruby-talk:167433]
+
+Fri Nov 25 12:52:57 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: added backward compatibility codes.
+ * lib/rss/parser.rb: ditto.
+ * test/rss/test_parser.rb: ditto.
+ * test/rss/test_2.0.rb: ditto.
+
+ * test/rss/test_content.rb: use #__send__ instead of #funcall for
+ no private method.
+
+Fri Nov 25 12:39:56 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: improved type conversion.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/0.9.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/syndication.rb: ditto.
+
+ * test/rss/test_2.0.rb: added type conversion tests.
+ * test/rss/test_accessor.rb: ditto.
+ * test/rss/test_to_s.rb: ditto.
+ * test/rss/test_syndication.rb: ditto.
+ * test/rss/test_setup_maker_2.0.rb: ditto.
+ * test/rss/test_setup_maker_1.0.rb: ditto.
+ * test/rss/test_setup_maker_0.9.rb: ditto.
+ * test/rss/test_maker_sy.rb: ditto.
+ * test/rss/test_maker_image.rb: ditto.
+ * test/rss/test_maker_2.0.rb: ditto.
+ * test/rss/test_maker_0.9.rb: ditto.
+ * test/rss/test_image.rb: ditto.
+
+ * test/rss/test_maker_1.0.rb: use assert instead of assert_equal.
+
+ * test/rss/rss-assertions.rb: improved type conversion assertions.
+
+Fri Nov 25 10:38:20 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/image.rb: added Image prefix.
+
+ * lib/rss/maker/image.rb: ditto.
+
+Fri Nov 25 10:33:02 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_2.0.rb: added RSS 2.0 tests.
+
+ * test/rss/rss-assertions.rb: extended XML stylesheet assertion.
+
+ * lib/rss/0.9.rb: added initialize method.
+
+ * test/rss/test_1.0.rb: cleanup.
+
+Fri Nov 25 10:29:48 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_min): use <=> comparison rather than iteration.
+ [ruby-talk:167420]
+
+ * range.c (range_max): ditto.
+
+Thu Nov 24 01:31:44 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * file.c (w32_io_info): CreateFile failed on Win9x if file was already
+ opened. (FILE_SHARE_READ was needed, but actually I don't understand
+ the flags of CreateFile well...)
+
+Wed Nov 23 23:52:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_div): use floor rather than rb_Integer().
+ [ruby-dev:27674]
+
+Wed Nov 23 22:34:15 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb: added entity handling type predicate.
+ * lib/rss/rexmlparser.rb: ditto.
+ * lib/rss/xmlparser.rb: ditto.
+ * lib/rss/xmlscanner.rb: ditto.
+
+ * lib/rss/xmlscanner.rb: more robust entity handling.
+
+ * test/rss/test_parser.rb: added an entity handling test.
+
+Wed Nov 23 20:59:01 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add Tk.pkgconfig_list and Tk.pkgconfig_get
+ [Tk8.5 feature].
+
+ * ext/tk/lib/tk/text.rb: supports new indices modifiers on a Text
+ widget [Tk8.5 feature].
+
+ * ext/tk/lib/tk/virtevent.rb: add TkNamedVirtualEvent.
+
+ * ext/tk/lib/tk/autoload.rb: ditto.
+
+ * ext/tk/lib/tk/event.rb: add :data key for virtual events [Tk8.5
+ feature].
+
+Wed Nov 23 18:52:45 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * file.c (w32_io_info): should not call GetFileInformationByHandle
+ for pipe.
+
+ * file.c (w32_io_info): checks return value from rb_w32_get_osfhandle.
+
+ * file.c (w32_io_info): now can identify directory on WinNT.
+
+Wed Nov 23 18:46:53 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/: use #__send__ instead of #send.
+ * test/rss/: ditto.
+
+Wed Nov 23 18:32:56 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_taxonomy.rb: use #reject directory.
+
+Wed Nov 23 18:26:00 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/taxonomy.rb: changed class or module prefix to
+ Taxonomy from Taxo.
+ * lib/rss/maker/taxonomy.rb: ditto.
+
+Wed Nov 23 18:21:11 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/taxonomy.rb: implemented taxonomy module for RSS
+ Maker.
+ * lib/rss/taxonomy.rb: supported RSS Maker.
+ * lib/rss/maker.rb: added taxonomy module support.
+
+ * lib/rss/rss.rb: adjusted to other element API.
+ * lib/rss/1.0.rb: adjusted to other element API but backward
+ compatibility is reserved.
+ * lib/rss/0.9.rb: ditto.
+
+ * test/rss/test_maker_taxo.rb: added test case for taxonomy module
+ for RSS Maker.
+ * test/rss/test_setup_maker_1.0.rb: added tests for taxo:topic.
+
+ * test/rss/test_setup_maker_1.0.rb: added backward compatibility
+ test.
+ * test/rss/test_setup_maker_0.9.rb: ditto.
+ * test/rss/test_setup_maker_2.0.rb: ditto.
+
+ * test/rss/rss-testcase.rb: added convenience method for setting
+ up taxo:topic.
+ * test/rss/rss-assertions.rb: added assertion for taxo:topic.
+
+ * sample/rss/blend.rb: followed new API.
+
+Wed Nov 23 17:42:24 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: fixed a indentation bug.
+
+ * lib/rss/taxonomy.rb: fixed <taxo:topic> #to_s bug.
+
+ * test/rss/test_taxonomy.rb: added a #to_s test.
+
+Wed Nov 23 03:40:49 2005 Guy Decoux <ts@moulon.inra.fr>
+
+ * re.c (KR_REHASH): should cast to unsigned for 64bit CPU.
+ [ruby-core:06721]
+
+Wed Nov 23 07:26:44 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: check for X509V3_EXT_nconf_nid.
+
+ * ext/openssl/ossl_x509ext.c (MakeX509ExtFactory): should use
+ OPENSSL_malloc to allocate X509V3_CTX.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_create_ext): use
+ X509V3_EXT_nconf_nid to avoid SEGV (and to build extensions which
+ values are placed in separate section).
+
+ * test/openssl/test_x509ext.rb: new file.
+
+Wed Nov 23 01:22:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (test_identical): test if two files are identical.
+
+ * file.c (rb_f_test): support DOSISH systems where st_ino is not
+ reliable. fixed: [ruby-core:06672]
+
+ * win32.h, win32.c (rb_w32_osid): check the running platform.
+
+Tue Nov 22 23:52:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb: match incomplete (in current enconding) multibyte
+ string. http://inamode6.tokuhirom.dnsalias.org/show/1551
+
+Tue Nov 22 18:36:11 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (winnt_stat): set mapped errno instead of ENOENT.
+
+Tue Nov 22 14:36:54 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): skip slashes just after UNC top slashes.
+
+ * test/ruby/test_path.rb (test_dirname, test_basename): follow new
+ spec. and add new tests.
+
+Tue Nov 22 13:30:15 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_stat): Dir.chdir('//server/shared');
+ p Dir.glob('*') should work on WinNT. (implemented our own
+ stat(2) on WinNT) [ruby-list:41552] [ruby-dev:27711]
+
+Tue Nov 22 02:31:53 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/tile.rb: bug fix (Tk::Tile::USE_TTK_NAMESPACE
+ is not defined).
+
+Tue Nov 22 01:45:21 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): DOSISH_UNC is defined on cygwin but
+ DOSISH is not. fixed: [ruby-dev:27797]
+
+Mon Nov 21 22:50:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_path_skip_prefix, rb_file_s_basename): UNC without path
+ should not be splitted. fixed: [ruby-dev:27776] [ruby-dev:27786]
+
+ * parse.y (dsym): prohibit empty symbol literal by interpolation.
+ fixed: [ruby-talk:166529]
+
+Mon Nov 21 16:03:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/setup.mk: findstr doesn't exist on win9x.
+ fixed: [ruby-dev:27756]
+
+Sun Nov 20 21:39:27 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * regparse.c (fetch_token_in_cc): tok->escaped should be
+ initialized. [ruby-dev:27763]
+
+Sun Nov 20 22:34:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_symname_p): [ not followed by ] is not valid symbol.
+ fixed: [ruby-talk:166520]
+
+Sat Nov 19 19:57:54 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::ln): ln documentation fix.
+ [ruby-core:06661]
+
+Sat Nov 19 08:19:38 2005 Zach Dennis <zdennis@mktec.com>
+
+ * ext/socket/socket.c: Socket Documentation. [ruby-core:6552]
+
+Sat Nov 19 07:34:32 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/font.rb: remove dependency on Ruby's version (1.8
+ or 1.9).
+
+ * ext/tk/lib/tkextlib/ICONS/icons.rb: ditto.
+
+ * ext/tk/sample/tkextlib/treectrl/demo.rb: ditto.
+
+Fri Nov 18 18:07:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_s_dirname): should use skipprefix for UNC path.
+ pointed out by nobu ([ruby-dev:27744]). fixed: [ruby-core:5076]
+
+Fri Nov 18 17:35:09 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: add restriction to access the entried
+ command table and manipulate other IPs (for reason of security).
+ Now, a IP object can be controlled by only its master IP or the
+ default IP.
+
+ * ext/tk/lib/remote-tk.rb: add restriction to manipulate.
+
+ * ext/tk/tcltklib.c (ip_is_slave_of_p): add TclTkIp#slave_of?(ip)
+ to check manipulability.
+
+ * ext/tk/lib/tk.rb: bug fix on handling of Tcl's namespaces.
+
+ * ext/tk/lib/tk/namespace.rb: ditto.
+
+Fri Nov 18 16:47:33 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_s_dirname): added checks for some patterns with drive
+ letter. fixed: [ruby-dev:27738]
+
+ * test/ruby/test_path.rb (test_dirname): added tests for above
+ patterns.
+
+Fri Nov 18 12:19:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.h (S_IFIFO): r,w = IO.pipe; r.stat.pipe? now
+ returns true on VisualC++6.
+
+Thu Nov 17 17:58:00 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/1.0.rb: added convenience method 'resources'.
+
+ * lib/rss/taxonomy.rb: ditto.
+
+ * test/rss/rss-assertions.rb: added test for 'resources'.
+
+ * test/rss/test_taxonomy.rb: ditto.
+
+Thu Nov 17 17:53:30 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/taxonomy.rb: implemented taxonomy module.
+
+ * test/rss/test_taxonomy.rb: added tests for taxonomy support.
+
+Thu Nov 17 17:40:19 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/1.0.rb: added rdf:Bag.
+
+Thu Nov 17 13:52:00 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: removed needless argument 'prefix'.
+
+ * lib/rss/parser.rb: ditto.
+
+Wed Nov 16 23:24:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (static-ruby): overridable.
+
+ * ext/extmk.rb (parse_args): force to link extensions statically only
+ if static is given for extstatic.
+
+ * ext/extmk.rb (RUBY, RUBYW): overridable.
+
+Wed Nov 16 01:29:31 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/trackback.rb: added TrackBack prefix.
+
+ * lib/rss/maker/trackback.rb: ditto.
+
+Wed Nov 16 01:26:13 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.5 -> 0.1.6.
+
+ * test/rss/test_version.rb (RSS::TestVersion#test_version): ditto.
+
+Tue Nov 15 23:54:24 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_load_ok): eaccess() returns 0 on success.
+ fixed: [ruby-dev:27713]
+
+Tue Nov 15 16:36:03 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * array.c (rb_ary_fill): previous commit disabled this usage:
+
+ a = [0,1,2,3,4,5,6,7,8,9]
+ a.fill {|i| a[i] * 10} #=> [nil, nil, ...., nil]
+
+ previous commit has the advantage of early garbage collection, but
+ potentially this would break some script. so I reverted behavior.
+
+Tue Nov 15 16:15:23 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (file_load_ok): use eaccess() instead of actually opening
+ the file. [ruby-talk:156378]
+
+ * lib/jcode.rb (String::reverse): add new methods.
+ [ruby-list:41245]
+
+Tue Nov 15 15:49:34 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * array.c (rb_ary_fill): tail elements were vanished when the middle
+ part of array was filled. (ie: [0,1,2,3,4].fill(-1,2,1) => [0,1,-1])
+
+ * test/ruby/test_array.rb (test_fill): added.
+
+Tue Nov 15 14:39:16 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_fill): should adjust array length correctly when
+ an array is expanded in the fill process. [ruby-core:06625]
+
+Mon Nov 14 23:49:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_readlink): ERANGE will occur only on GPFS.
+ [ruby-dev:27699]
+
+Mon Nov 14 17:36:22 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_first): RDoc update from Daniel Berger
+ <djberg96@yahoo.com>. [ruby-core:06577].
+
+Sun Nov 13 10:55:24 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/uri/common.rb (escape): regard second argument as a
+ character set. [ruby-dev:27692]
+
+Sat Nov 12 08:36:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, eval.c, intern.h: check fd_mask type.
+
+ * configure.in (socketpair): need to be checked.
+
+Fri Nov 11 19:53:47 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * eval.c, intern.h: failed to compile where NFDBITS is defined but
+ howmany() is not defined. [ruby-dev:27680]
+
+ * io.c (is_socket): failed to compile where S_ISSOCK is not defined.
+
+ * io.c (pipe_open): failed to compile where socketpair is not supported.
+
+Fri Nov 11 08:20:56 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (OUTFLAG): keep trailing spaces. [ruby-dev:27666]
+
+ * mkconfig.rb: substitution references added.
+
+Fri Nov 11 07:39:49 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * configure.in: undef HAVE_LINK on BeOS. (link(2) always returns
+ EINVAL, and this causes error in test/fileutils.)
+
+ * file.c: override chown(2) and fchown(2) on BeOS. (these functions
+ should not change user/group id if -1 is passed as corresponding
+ argument, and this causes error in test/fileutils too)
+ [ruby-dev:27672]
+
+Thu Nov 10 21:05:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/shellwords.rb: fix for blank but not empty string.
+ fixed: [ruby-dev:27663]
+
+Wed Nov 9 08:39:38 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/shellwords.rb: refactored. [ruby-core:06581]
+
+Tue Nov 8 17:35:53 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * intern.h, eval.c (rb_thread_signal_raise): constified.
+
+ * signal.c: cosmetic change.
+
+Tue Nov 8 15:32:27 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/drb/ssl.rb (DRb::SSLConfig#accept): fixed typo.
+ [ruby-dev:27560] [ruby-core:4627]
+
+Mon Nov 7 20:54:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c: iconvctl() support. [EXPERIMENTAL]
+
+Mon Nov 7 16:23:23 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl.h: need to include winsock2.h before including
+ windows.h by some openssl headers.
+
+Mon Nov 7 13:43:51 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/stubs.c (_nativethread_consistency_check): use simpler
+ (low cost) way to check whether the Tcl interpreter was compiled
+ with threads enabled of not.
+
+ * ext/tk/tcltklib.c: reduce warnings.
+
+ * ext/tk/tkutil/tkutil.c: ditto.
+
+Mon Nov 7 00:06:12 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/yaml.rb: removed :nodoc: to generate Kernel doc. [ruby-core:6324]
+
+Sun Nov 6 23:39:13 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (Iconv::BrokenLibrary): exception when detected a
+ bug of underlying library.
+
+Sun Nov 6 21:43:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/stubs.c (ruby_tcl_create_ip_and_stubs_init): should touch
+ interpreter after initialization is done. [ruby-dev:27638]
+
+Sun Nov 6 20:13:27 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_readlink): readlink(2) on AIX fails with ERANGE if
+ buffer size is less than required. fixed: [ruby-dev:27634]
+
+Sat Nov 5 13:42:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, cygwin/GNUmakefile.in (mingw): use def file to alias
+ symbols. [ruby-dev:27532]
+
+ * bcc32/mkexports.rb, win32/mkexports.rb: make aliases in DLL.
+
+ * win32/win32.c, win32/win32.h: replace symbols only when RUBY_EXPORT
+ is defined.
+
+Thu Nov 3 07:57:39 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/open-uri.rb (open_loop): find_proxy should return nil when
+ proxy does not exist. [ruby-dev:27630]
+
+Wed Nov 2 20:25:28 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: ext/tk/extconf.rb: change the check parameter
+ for Win32.
+
+Wed Nov 2 19:03:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_rbUpdateObjCmd, ip_rb_threadUpdateObjCmd):
+ passed improper flags to DoOneEvent().
+
+ * ext/tk/tkutil/tkutil.c: use rb_obj_respond_to() instead of
+ rb_respond_to().
+
+Tue Nov 1 14:20:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call_super): should call method_missing if super is
+ called from Kernel method.
+
+ * eval.c (exec_under): frame during eval should preserve external
+ information.
+
+Tue Nov 1 10:48:49 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: should check ERR_peek_last_error().
+ [ruby-dev:27597]
+
+ * ext/openssl/ossl.c (ossl_raise): ditto.
+
+Mon Oct 31 17:34:46 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: use proper option for Sun linker. A patch from
+ Shinya Kuwamura <kuwa at labs.fujitsu.com>. [ruby-dev:27603]
+
+Mon Oct 31 05:46:08 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_update): input data must
+ not be empty. [ruby-talk:161220]
+
+ * test/openssl/test_cipher.rb: add test for Cipher#update("").
+
+Mon Oct 31 05:38:26 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb
+ (WEBrick::HTTPServlet::CGIHandler#do_GET): the value of Set-Cookie:
+ header field should be splited into each cookie. [ruby-Bugs:2199]
+
+ * lib/webrick/cookie.rb (WEBrick::Cookie.parse_set_cookie): new method
+ to parse the value of Set-Cookie: header field.
+
+ * test/webrick/test_cookie.rb, test/webrick/test_cgi.rb,
+ test/webrick/webrick.cgi: add some test for cookie.
+
+Mon Oct 31 02:33:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_rshift): RDoc fix. [ruby-core:6351]
+
+ * util.h (strtod): add #undef for platforms defines strtod()
+ macro. [ruby-dev:27563]
+
+Mon Oct 31 02:31:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_float.rb (test_precision): test by assert_in_delta.
+ [ruby-dev:27575]
+
+Sat Oct 29 01:58:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/etc/etc.c: document update from mathew <meta@pobox.com>.
+ [ruby-core:06473]
+
+ * ext/fcntl/fcntl.c: ditto.
+
+Sat Oct 29 16:56:03 2005 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: added seven predicates sunday? to saturday?.
+
+ * lib/date.rb: added two methods {prev,next}_month,
+ that are almost same as << and >>.
+
+Thu Oct 27 20:34:43 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_allocate): allow subclassing.
+
+Thu Oct 27 16:45:31 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (scan_once): wrong condition to use mbclen2().
+ [ruby-dev:27535]
+
+Thu Oct 27 11:53:17 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * missing.h, missing/memcmp.c, missing/memmove.c:
+ ANSI compatible interface.
+
+Wed Oct 26 09:15:48 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/implicit.c (syck_type_id_to_uri): should return
+ newly allocated memory. otherwise, type_id will be freed
+ twice. [ruby-dev:27384] [ruby-core:6385]
+
+Wed Oct 26 01:58:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_EXTERN): macro to export symbols in shared
+ library. [ruby-core:05528]
+
+ * defines.h, {bcc32,win32,wince}/Makefile.sub (RUBY_EXTERN): moved to
+ configuration pass.
+
+ * ext/extmk.rb (extmake): RUBY_EXTERN for static linked extensions.
+
+Tue Oct 25 20:06:59 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ruby.h (Qfalse, Qtrue, Qnil, Qundef): make sure these immediate
+ values have VALUE type. there is an environment where sizeof(VALUE)
+ != sizeof(int) like IA64. if 32bit integer (Qtrue) is passed to ANYARGS
+ and received by 64bit integer (VALUE), upper bits may have garbage value.
+ [ruby-dev:27513]
+
+Tue Oct 25 15:32:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rational.rb: applied documentation patch from Gavin Sinclair
+ <gsinclair@gmail.com>. [ruby-core:06364]
+
+ * lib/irb.rb (IRB::Irb::eval_input): handle prompts with newlines
+ in irb auto-indentation mode. [ruby-core:06358]
+
+Tue Oct 25 14:21:46 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * gc.c (garbage_collect): sorry, previous commit was incorrect.
+ [ruby-core:6386]
+
+Tue Oct 25 13:40:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * gc.c (garbage_collect): return now whether there're rooms for new
+ objects, rather than whether GC run. fixed: [ruby-core:6376]
+
+Tue Oct 25 02:12:08 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/markup/simple_markup.rb (SM::SimpleMarkup::LABEL_LIST_RE):
+ reduce redundant backtrack. [ruby-talk:161771]
+
+Tue Oct 25 00:35:33 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/*: RDoc documentation from Eric Hodel
+ <drbrain@segment7.net> added.
+
+Mon Oct 24 21:14:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, io.c: use sys/syscall.h if syscall.h is not available.
+ [ruby-core:06247]
+
+Mon Oct 24 20:38:25 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/lib/win32/resolv.rb (get_info): support multiple DNS.
+ fixed: [ruby-list:40058], [ruby-dev:27479]
+
+Mon Oct 24 11:01:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/canvas.rb (TkCanvasItemConfig::__item_val2ruby_optkeys):
+ typo fixed. [ruby-talk:162187]
+
+ * ext/tk/lib/tk/menu.rb (TkMenuEntryConfig::__item_val2ruby_optkeys):
+ ditto. [ruby-core:06359]
+
+Mon Oct 24 07:57:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/tk/lib/tk/canvas.rb (TkCanvasItemConfig::__item_val2ruby_optkeys):
+ typo fixed. [ruby-talk:162187]
+
+ * ext/tk/lib/tk/menu.rb (TkMenuEntryConfig::__item_val2ruby_optkeys):
+ ditto. [ruby-core:06359]
+
+ * lib/matrix.rb (Matrix::initialize): use funcall instead of send
+ to allow private methods to be called. A report from
+ Jean-Claude Arbaut <jcarbaut@laposte.net>. [ruby-core:06359]
+
+Mon Oct 24 00:41:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_sunday): added predicate methods for the days of the
+ week. [ruby-list:41340]
+
+Sun Oct 23 07:11:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: improve messages [ruby-core:06325].
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tk/canvas.rb, ext/tk/lib/tk/entry.rb,
+ ext/tk/lib/tk/frame.rb, ext/tk/lib/tk/image.rb,
+ ext/tk/lib/tk/itemconfig.rb, ext/tk/lib/tk/labelframe.rb,
+ ext/tk/lib/tk/listbox.rb, ext/tk/lib/tk/menu.rb,
+ ext/tk/lib/tk/radiobutton.rb, ext/tk/lib/tk/scale.rb,
+ ext/tk/lib/tk/spinbox.rb, ext/tk/lib/tk/text.rb,
+ ext/tk/lib/tk/toplevel.rb: improve conversion of option values.
+
+ * ext/tk/lib/tkextlib/*: ditto.
+
+ * ext/tk/lib/tkextlib/*: update to support ActiveTcl8.4.11.2.
+
+ * ext/tk/lib/tkextlib/trofs/*: support Trofs 0.4.3.
+
+ * ext/tk/lib/tkextlib/tile/*: support Tile 0.7.2.
+
+ * ext/tk/lib/tkextlib/vu/*: support vu 2.3.0.
+
+ * ext/tk/lib/tkextlib/tcllib/*: support Tcllib 1.8 (Tklib 0.3).
+
+Sat Oct 22 23:54:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb, lib/mkmf.rb (with_config): support --with-extension
+ options. [ruby-dev:27449]
+
+Sat Oct 22 14:25:43 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.[hc] (ruby_add_suffix): constified.
+
+ * util.[hc] (ruby_scan_{oct,hex}): fixed typo. (renamed from
+ scan_{oct,hex})
+
+ * util.c: almostly ANSI styled. (except for functions depending on
+ macro and K&R technique)
+
+Sat Oct 22 13:26:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (sym_inspect), parse.y (parser_yylex, rb_symname_p): check
+ if valid as a symbol name more strictly. [ruby-dev:27478]
+
+ * test/ruby/test_symbol.rb: tests for [ruby-core:03573].
+
+ * time.c (rb_strftime): removed meaningless volatile modifiers, and
+ concatenate successive nul characters at once. [ruby-dev:27472]
+
+ * ext/tk/lib/tk/font.rb, ext/tk/lib/tkextlib/ICONS/icons.rb,
+ ext/tk/sample/tkextlib/treectrl/demo.rb, lib/net/imap.rb,
+ lib/rss/parser.rb, test/rss/test_content.rb,
+ test/rss/test_dublincore.rb, test/rss/test_syndication.rb,
+ test/rss/test_trackback.rb, test/ruby/test_eval.rb,
+ test/socket/test_socket.rb, test/socket/test_udp.rb:
+ Object#fcall was renamed as Object#funcall.
+
+Sat Oct 22 10:08:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * missing.h, missing/*.c: SUSv3 compatible strcasecmp and strncasecmp,
+ ANSI compatible strtol and strtoul, and ANSI styled other functions.
+
+Fri Oct 21 19:16:08 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * rubysig.h (CHECK_INTS): fixed typo. (I believe bit-or is improper)
+
+Fri Oct 21 17:49:32 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bin/erb (ERB::Main::run): typo fixed. [ruby-core:06337]
+
+Fri Oct 21 15:42:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * intern.h, struct.c (rb_struct_iv_get): constified.
+
+ * marshal.c: avoid one VC++6 warning for implicit conversion
+ from int to char.
+
+ * ruby.h: ANSI styled.
+
+ * bcc32/Makefile.sub (HAVE_HYPOT): added.
+
+ * ext/socket/extconf.rb: BeOS is only one platform should call
+ closesocket, so check __BEOS__ macro directly. (I was worried
+ accidently HAVE_CLOSESOCKET is defined on windows again because
+ it has it)
+
+ * ext/socket/{getaddrinfo.c,socket.c}: ditto.
+
+ ... these are all cosmetic changes.
+
+Fri Oct 21 15:23:23 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bignum.c (bignew_1): convertion from `int' to `char' discards
+ upper bits, (ie. (char)0xff00 -> 0) so it's better to test if
+ nonzero and set 0 or 1 instead of simply casting ... as a flag usage.
+ (but I believe this won't cause actual bug in current implementation)
+ [ruby-dev:27055]
+
+ * time.c: should use LONG_LONG instead of `long long'.
+
+Thu Oct 20 22:22:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parser.y (struct parser_params): parser never modify input string.
+
+ * ext/ripper/tools/preproc.rb (prelude): do not append surplus
+ newlines to fix line numbers.
+
+Thu Oct 20 11:41:57 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * class.c, eval.c, hash.c, st.c, variable.c: changed /* ??? */ stuff
+ protoize generated to ANYARGS.
+
+Thu Oct 20 11:18:11 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * eval.c, file.c, ruby.c: removed strchr, strrchr, strstr definition
+ because they are defined in missing.h.
+
+ * missing.h, missing/strchr.c, missing/strstr.c: ANSI styled.
+
+Thu Oct 20 09:36:06 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/mkmf.rb (create_makefile): Borland make seems not to allow
+ empty dependency list. If this change is not good, please correct
+ it.
+
+Thu Oct 20 07:55:09 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): get rid of a restriction
+ of Borland make. fixed: [ruby-dev:27460]
+
+ * ext/ripper/depend: ditto.
+
+Wed Oct 19 23:58:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): do not create unnecessary empty
+ directories. fixed: [ruby-dev:27451]
+
+Wed Oct 19 08:28:32 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_join): elements may contain null pointer strings.
+ report and fixed by Lloyd Zusman (hippoman): [ruby-core:06326]
+
+Wed Oct 19 02:34:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c, eval.c, gc.c, parse.y, regparse.c, sjis.c, time.c:
+ made internal symbols static. [ruby-dev:27435]
+
+Tue Oct 18 10:58:27 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/depend, ext/dl/extconf.rb, ext/socket/depend,
+ ext/socket/extconf.rb: shouldn't define DESTCLEANFILES in depend,
+ use $distcleanfiles in extconf.rb.
+
+ * win32/Makefile.sub (distclean-local): should remove .config.h.time.
+
+Mon Oct 17 09:42:50 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * mkconfig.rb: fixup configure_args for mswin32 configure.
+
+ * win32/configure.bat (srcdir, target): ditto.
+
+Mon Oct 17 05:01:50 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * env.h: move struct METHOD and struct BLOCK from eval.c to
+ support NodeWrap and ParseTree.
+
+Sun Oct 16 22:16:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: omit non-existing directories.
+
+Sun Oct 16 14:40:54 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb (Rinda::Tuple#initialize): check remote hash
+ tuple. fixed: [ruby-list:41227]
+
+ * test/rinda/test_rinda.rb: test it.
+
+Sun Oct 16 03:38:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rubysig.h (CHECK_INTS): prevent signal handler to run during
+ critical section. [ruby-core:04039]
+
+ * eval.c (load_wait): need not to call rb_thread_schedule()
+ explicitly. [ruby-core:04039]
+
+ * eval.c (rb_thread_schedule): clear rb_thread_critical.
+ [ruby-core:04039]
+
+Sun Oct 16 00:13:14 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat: remove unnecessary line which prevents
+ creating Makefile.
+
+Sat Oct 15 23:52:07 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb: (getbinaryfile): allow nil for localfile, and
+ returns retrieved data if localfile is nil.
+
+ * lib/net/ftp.rb: (gettextfile): ditto.
+
+Sat Oct 15 19:51:29 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * bin/erb: typo fixed, again. thanks, Doug Kearns.
+
+Fri Oct 14 23:09:31 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (MKFILES): update MKFILES if configure files get
+ changed.
+
+ * win32/configure.bat, win32/setup.mak (configure_args): store
+ arguments to configure files.
+
+Fri Oct 14 22:05:45 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (ioctl): should set errno.
+
+Fri Oct 14 16:39:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb (Config::FileHandler): :UserDir should be nil.
+ It is harmful to permit the access to ~/public_html by default.
+ suggested by Hiroyuki Iwatsuki.
+
+Fri Oct 14 04:58:38 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_obj_instance_exec): create instance_exec and
+ module_exec which pass arguments to the block.
+
+ * eval.c (rb_f_funcall): rename fcall to funcall to follow
+ tradition.
+
+Thu Oct 13 23:29:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (HEAPCNT): bison allocates indivisible size.
+ fixed: [ruby-core:06261]
+
+ * io.c, pack.c, ext/syck/rubyext.c, ext/syck/syck.h, missing/isinf.c:
+ get rid of warnings. fixed: [ruby-core:06247]
+
+Wed Oct 12 12:51:56 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (Init_openssl): should call
+ OpenSSL_add_ssl_algorithms().
+
+Wed Oct 12 11:08:54 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * file.c (rb_f_test): typo in RDoc comments.
+
+Tue Oct 11 21:41:58 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_FUNC_ATTRIBUTE): check prefixed attribute form
+ first. [ruby-dev:27398]
+
+ * array.c, enum.c, eval.c, util.c: safer function pointer usage.
+ fixed: [ruby-core:06143]
+
+ * util.h (qsort): removed the definition incompatible to ANSI.
+ fixed: [ruby-core:06147]
+
+ * eval.c (rb_obj_respond_to): check if obj responds to the given
+ method with the given visibility. [ruby-dev:27408]
+
+ * eval.c (rb_respond_to): conform to Object#respond_to?. [ruby-dev:27411]
+
+Tue Oct 11 00:01:21 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (st_free_table): do not call free() but xfree().
+ [ruby-core:06205]
+
+Sat Oct 8 19:49:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (Init_Binding): add Binding#dup method. [yarv-dev:666]
+
+ * io.c (rb_io_init_copy): clear PREP flag for copied IO.
+ fixed: [ruby-dev:27371]
+
+ * parse.y (rb_parser_malloc, rb_parser_free): manage parser stack on
+ heap. [ruby-list:41199]
+
+ * parse.y (ripper_initialize): use rb_respond_to().
+
+ * ext/ripper/depend (check): get rid of re-generating ripper.y always.
+
+ * ext/iconv/charset_alias.rb: parse config.charset_alias file directly.
+
+ * ext/nkf/lib/kconv.rb (Kconv.conv): get rid of nil.to_a.
+
+ * lib/scanf.rb (Scanf::FormatSpecifier#letter, #width): use matched
+ substring directly.
+
+ * test/ruby/test_assignment.rb, test/ruby/test_iterator.rb: followed
+ change of sample/test.rb.
+
+ * test/net/http/test_http.rb: removed superfluous splatting stars.
+
+Fri Oct 7 16:41:43 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (splat_value): call rb_Array() to convert svalue to
+ values. [ruby-dev:27397]
+
+Fri Oct 7 09:54:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie::parse): Cookies from Nokia devices may
+ not be parsed correctly. A patch from August Z. Flatby
+ (augustzf) in [ruby-Patches-2595]. [ruby-core:06183]
+
+Thu Oct 6 22:51:30 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_Array): Array() to raise error for objects without
+ to_ary, nor to_a.
+
+ * object.c (nil_to_a): revert NilClass#to_a.
+
+Thu Oct 6 20:10:38 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c (strscan_free): remove useless code.
+ [ruby-dev:26368] [ruby-dev:27389]
+
+Thu Oct 6 01:02:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (rb_range_beg_len): should return Qfalse for non-range
+ object.
+
+Wed Oct 5 04:42:38 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/xmlrpc/server.rb (XMLRPC::Server#initialize): should mount the
+ servlet on "/".
+
+Wed Oct 5 04:06:49 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/xmlrpc/server.rb (XMLRPC::Server#serve): delete wrong call
+ of "join".
+
+Mon Oct 3 00:04:00 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * pack.c (EXTEND16): [ruby-dev:27383]
+
+Sat Oct 1 23:55:24 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (do_select, rb_w32_select): brush up.
+
+Sat Oct 1 12:57:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * bignum.c (rb_big_rand): removed. [ruby-dev:25405]
+
+Sat Oct 1 01:46:51 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_loop): prohibit multiple proxy
+ options.
+
+Thu Sep 29 10:26:18 2005 Tanaka Akira <akr@m17n.org>
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): abolish sizeof(FILE).
+ [ruby-dev:27317]
+
+Thu Sep 29 10:15:14 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (:proxy_http_basic_authentication): new option.
+
+Thu Sep 29 07:22:05 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_f_send): underscores need to be escaped.
+ fixed by Doug Kearns. [ruby-core:06053]
+
+Thu Sep 29 00:57:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ev_const_get), variable.c (rb_const_get_0): retry only when
+ autoload succeeded.
+
+ * variable.c (rb_autoload_load): now return true if autoload
+ succeeded. fixed: [ruby-dev:27331]
+
+Wed Sep 28 23:40:04 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_inspect): constified.
+
+Wed Sep 28 15:12:28 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI#start): req.query_string should
+ refer to the value of QUERY_STRING. [ruby-list:41186]
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#query_string=):
+ add new method.
+
+Wed Sep 28 10:45:44 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: cannot compile with Tcl/Tk8.0.x [ruby-dev:27335].
+
+Wed Sep 28 07:56:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/yaml/basenode.rb (YAML::BaseNode::match_segment): fix typo.
+ [ruby-dev:27237], [ruby-core:05854]
+
+ * lib/yaml/tag.rb (Module#yaml_as): suppress warnings.
+
+ * lib/yaml/types.rb (YAML::PrivateType, YAML::DomainType): ditto.
+
+Wed Sep 28 03:16:41 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * rubysig.h: fixed build problem with --enable-pthread on platforms
+ which don't have setitimer().
+
+Mon Sep 26 22:32:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (set_trace_func): add rb_secure(4) to prevent adding
+ tracing function.
+
+Mon Sep 26 20:59:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * parse.y: changed to ANSI function style.
+
+Sun Sep 25 12:02:04 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * bin/erb: typo fixed.
+
+Sun Sep 25 11:54:11 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/tuplespace.rb (Rinda::TemplateEntry::initialize): pull
+ up method. Tabs converted to spaces.
+
+Sun Sep 25 09:34:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * parse.y: replaced `foo _((boo))' with `foo(boo)'.
+
+Sun Sep 25 08:19:53 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rss/test_content.rb, test/rss/test_syndication.rb: use fcall
+ instead of send in order to override visibility.
+
+Sun Sep 25 01:46:43 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-calculate-indent): arrange deep-indent
+ closing parenthesis at same column as the opening.
+
+Sun Sep 25 01:33:41 2005 Tanaka Akira <akr@m17n.org>
+
+ * process.c (proc_setrlimit): make the third argument (rlim_max)
+ optional.
+
+Sun Sep 25 00:42:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg): deal with heredoc separately.
+ fixed: [ruby-list:41168]
+
+ * misc/ruby-mode.el (ruby-calculate-indent): not to deepen indent
+ level for continuous line inside parentheses.
+ http://nabeken.tdiary.net/20050915.html#p02
+
+Sat Sep 24 21:19:39 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: document enhancement.
+
+ * ext/strscan/strscan.c: update copyright year.
+
+ * ext/strscan/strscan.c: update coding style.
+
+Sat Sep 24 20:20:05 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/net/http/test_http.rb (teardown): Net::HTTP.version_1_1 breaks
+ many other tests; ensure that Net::HTTP is version 1.2 after test.
+ [ruby-dev:27312]
+
+Sat Sep 24 11:44:28 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/net/http/test_http.rb: new file.
+
+Sat Sep 24 08:54:05 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (cd): no longer accept :noop option, related
+ code is useless. [ruby-core:05858] [ruby-Bugs:2494]
+
+Sat Sep 24 08:30:00 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#sub): new method.
+
+Sat Sep 24 08:29:36 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: fix visibility of FileUtils::NoWrite, Verbose,
+ DryRun. [ruby-core:05954]
+
+ * test/fileutils/test_nowrite.rb: test it.
+
+ * test/fileutils/test_dryrun.rb: new file.
+
+ * test/fileutils/test_verbose.rb: new file.
+
+Sat Sep 24 07:59:01 2005 Minero Aoki <aamine@loveruby.net>
+
+ * sample/ripper/colorize.rb: removed (replaced by ruby2html.rb).
+
+ * sample/ripper/ruby2html.rb: added.
+
+Sat Sep 24 06:35:15 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper: no longer generates .rb files.
+
+ * parse.y (Init_ripper): ripper_init_eventids*() takes 1 argument,
+ self (class Ripper).
+
+ * ext/ripper/depend: target removed: `lib/ripper/core.rb'.
+
+ * ext/ripper/depend: new target `eventids2table.c'.
+
+ * ext/ripper/depend: new target `check'.
+
+ * ext/ripper/eventids2.c: include eventids2table.c.
+
+ * ext/ripper/eventids2.c: initialize SCANNER_EVENT_TABLE.
+
+ * ext/ripper/extconf.rb: update $cleanfiles list.
+
+ * ext/ripper/tools/generate.rb: no longer generate ripper/core.rb.
+
+ * ext/ripper/tools/generate.rb: new mode `check'.
+
+ * ext/ripper/tools/generate.rb: new mode `eventids2table'.
+
+ * ext/ripper/lib/ripper/core.rb.in: removed.
+
+ * ext/ripper/lib/ripper/core.rb: added.
+
+ * ext/ripper/lib/ripper/filter.rb: update copyright year.
+
+ * ext/ripper/lib/ripper/lexer.rb: ditto.
+
+ * ext/ripper/lib/ripper/sexp.rb: ditto.
+
+Sat Sep 24 02:40:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb: document update from James Edward Gray II
+ <james@grayproductions.net>. [ruby-core:05942]
+
+Sat Sep 24 02:05:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_daemon): should restrict execution on levels
+ higher than $SAFE=2. suggested by URABE Shyouhei
+ <shyouhei@ice.uec.ac.jp>.
+
+Fri Sep 23 20:10:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/tools/generate.rb, ext/ripper/tools/preproc.rb: StringIO
+ is not available for miniruby. fixed: [ruby-dev:27307]
+
+Fri Sep 23 17:36:48 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: avoid core dump with WIN32OLE_EVENT.
+ [ruby-dev:27133]
+
+Fri Sep 23 16:27:39 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/forwardable.rb: replaced by new implementation from
+ <Daniel.Berger@qwest.com>. [ruby-core:05899]
+
+Fri Sep 23 07:07:47 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/depend: use --output option instead of redirect;
+ nmake does not remove a target when the target file is created by
+ redirect. [ruby-dev:26466]
+
+ * test/ripper/tools/preproc.rb: new option --output.
+
+Fri Sep 23 06:57:52 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/tools/generate.rb: check parser event arity.
+
+ * test/ripper/tools/generate.rb: detect crash of parser-event-IDs
+ and scanner-event-IDs.
+
+Fri Sep 23 06:01:30 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_file.rb: check File#chown(nil,nil).
+ [ruby-dev:27140]
+
+Fri Sep 23 05:57:23 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper: refactoring code generation tools. [ruby-dev:27247]
+ [ruby-dev:27273]
+
+ * ext/ripper/depend: use generate.rb.
+
+ * ext/ripper/lib/ripper/core.rb: removed.
+
+ * ext/ripper/tools/generate-eventids1.rb: removed (code moved to
+ generate.rb).
+
+ * ext/ripper/tools/generate-ripper_rb.rb: removed (code moved to
+ generate.rb).
+
+ * ext/ripper/tools/list-parse-event-ids.rb: removed (code moved to
+ generate.rb).
+
+ * ext/ripper/tools/list-scan-event-ids.rb: removed (code moved to
+ generate.rb).
+
+ * ext/ripper/lib/ripper/core.rb: removed.
+
+ * ext/ripper: refactoring tests. [ruby-dev:27273]
+
+ * ext/ripper/test/check-event-arity.rb: removed (code moved to
+ tools/generate.rb).
+
+ * ext/ripper/test/check-event-coverage.rb: removed (code moved to
+ test/ripper/test_parser_events.rb).
+
+ * ext/ripper/test/check-scanner-event-coverage.rb: removed (code
+ moved to test/ripper/test_scanner_events.rb).
+
+ * ext/ripper/test/list-called-events.rb: removed.
+
+ * ext/ripper/test/src_rb: removed.
+
+ * ext/ripper/test/validate.rb: removed.
+
+ * test/ripper/test_scanner_events.rb: check event coverage.
+
+ * ext/ripper/lib/ripper/core.rb.in: update copyright year.
+
+Thu Sep 22 23:40:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (find_executable0): default path if environment is not
+ set. [ruby-dev:27281]
+
+ * ext/ripper/extconf.rb (have_command): replaced with find_executable.
+
+Thu Sep 22 17:31:48 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/readline/test_readline.rb (TestReadline::replace_stdio):
+ merged the patch of [ruby-dev:25232] instead of [ruby-dev:25223].
+ (merged from ruby_1_8 branch)
+
+Wed Sep 21 23:30:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): generalized nmake dependent code.
+
+Wed Sep 21 14:16:30 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/ripper/depend (SUFFIXES): no longer needed.
+
+ * ext/ripper/depend (c): avoid nmake problem. fixed [ruby-dev:27191]
+
+Wed Sep 21 08:52:25 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/token.c: correctly compute indentation of a block
+ scalar's parent node. [ruby-talk:150620]
+
+Wed Sep 21 08:20:24 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja: add new features.
+
+Wed Sep 21 07:43:58 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (default_argv, Arguable#options): defaults strings
+ to be parsed to Arguable instance.
+
+Wed Sep 21 02:44:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (path_check_0): disallow sticky world writable directory
+ in PATH (and $LOAD_PATH). [ruby-dev:27226]
+
+Wed Sep 21 00:32:22 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_idiv): 1.div(1.0) should return integer value.
+ [ruby-dev:27235]
+
+Tue Sep 20 22:25:43 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/wait/lib/nonblock.rb: disable on platforms non-blocking flag
+ is not available. fixed: [ruby-dev:27187]
+
+ * file.c (rb_stat_inspect): protoized function pointer.
+
+Tue Sep 20 18:23:04 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (thread_mark): mark th->last_status. [ruby-dev:27179]
+
+Tue Sep 20 18:20:33 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/yaml.rb: require 'yaml/constants'. [ruby-core:5776]
+
+Tue Sep 20 17:48:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb (XMLRPC::Client::do_rpc): add charset
+ information to content-type header.[ruby-core:5127]
+
+ * lib/xmlrpc/server.rb (CGIServer::serve): ditto.
+
+ * lib/xmlrpc/server.rb (ModRubyServer::serve): ditto.
+
+ * lib/xmlrpc/server.rb (WEBrickServlet::service): ditto.
+
+Tue Sep 20 17:26:42 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/webrick/test_cgi.rb: set ENV["PATH"] to CGIEnvPath on
+ windows. bcc32's runtime is not installed into system directory,
+ so it cannot be found without this setting. [ruby-dev:27166]
+
+Tue Sep 20 17:14:10 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * io.c: PIPE_BUF is not defined on BeOS. use _POSIX_PIPE_BUF instead.
+ [ruby-dev:27185]
+
+Tue Sep 20 17:10:38 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/dbm/test_dbm.rb (TestDBM::test_s_open_error): remove
+ test_s_open_error test to detect duplicate open.
+ [ruby-dev:27202]
+
+Tue Sep 20 15:39:40 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/emitter.c (syck_scan_scalar): prevent indicators from
+ appearing alone or at the end of plain scalars. [ruby-core:5826]
+
+ * ext/syck/emitter.c (syck_emit_scalar): treat typed scalar nodes
+ as complex keys.
+
+ * lib/syck.h: version 0.60.
+
+ * lib/yaml/basenode.rb (YAML::BaseNode#at): transform keys during
+ key searches.
+
+ * ext/syck/rubyext.c: loading of binary-typed nodes. prevent
+ emission of plain strings that look like symbols, but which aren't.
+
+Tue Sep 20 05:48:26 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/xmlrpc/test_webrick_server.rb (setup_http_server):
+ should not include 'webrick/https' unless 'use_ssl' because
+ it fails where openssl is not installed.
+
+Tue Sep 20 01:24:45 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (splat_value): use to_a to splat non Array object.
+
+ * object.c (nil_to_a): remove nil.to_a. [experimental]
+
+Tue Sep 20 01:01:41 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Fixnum): remove debug print.
+
+ * lib/rational.rb (Rational): ditto.
+
+Tue Sep 20 00:34:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_close): call rb_io_close() directly if io is a T_FILE
+ object. [ruby-dev:27156]
+
+Mon Sep 19 18:58:10 2005 Minero Aoki <aamine@loveruby.net>
+
+ * file.c (rb_file_chown): should accept nil. [ruby-dev:27171]
+
+Mon Sep 19 18:29:54 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (file_expand_path): allow pathnames to expand.
+ [ruby-dev:27152]
+
+Mon Sep 19 15:12:15 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/depend: do not make ripper/core.rb. [ruby-dev:26462]
+
+Mon Sep 19 14:49:19 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/eventids2.c: add prefix `t' to tLAMBDA-related lexer
+ events.
+
+ * ext/ripper/lib/ripper/core.rb: updated.
+
+Mon Sep 19 14:39:46 2005 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (do_block): do_block event dispatches 2 args.
+ [ruby-dev:26964]
+
+ * ext/ripper/lib/ripper/core.rb: updated.
+
+ * ext/ripper/tools/list-parser-event-ids.rb: check arity mismatch.
+
+Mon Sep 19 07:45:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey.h, ossl_pkey_rsa.c, ossl_pkey_dsa.c:
+ an instance variable "private" is added to OpenSSL::PKey class.
+ this ivar is a flag that shows whether there is a private key
+ in the instance.
+
+ * ext/openssl/ossl_engine.c: (ossl_engine_load_privkey): set private
+ key flag.
+
+ * test/openssl/test_pkey_rsa.rb: add test about private detection.
+
+Mon Sep 19 06:38:03 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: method renaming: collect_methods ->
+ collect_method.
+
+Mon Sep 19 05:58:59 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: use module_function instead of single extend.
+
+ * test/fileutils/test_fileutils.rb: test existence of singleton
+ methods.
+
+Mon Sep 19 05:32:41 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_entry_secure): does not use chdir(2).
+
+Mon Sep 19 03:17:48 2005 Tanaka Akira <akr@m17n.org>
+
+ * file.c (rb_thread_flock): wrap the flock system call by
+ TRAP_BEG/TRAP_END to enable signals. [ruby-dev:27122]
+
+ * ext/socket/socket.c (bsock_send): wrap the sendto and send system
+ call by TRAP_BEG/TRAP_END to enable signals when writing to a socket
+ which is full. [ruby-dev:27132]
+
+ * io.c (rb_io_syswrite): wrap the write system call by
+ TRAP_BEG/TRAP_END to run signal handler in syswrite method.
+ [ruby-dev:27134]
+
+Mon Sep 19 01:07:38 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (Init_Numeric): should define Fixnum#div.
+ [ruby-dev:27129]
+
+ * file.c (rb_thread_flock): wrap flock(2) by TRAP_BEG and
+ TRAP_END. [ruby-dev:27122]
+
+ * file.c (rb_file_join): call FilePathValue() to all Pathnames to
+ join. [ruby-dev:27127]
+
+ * file.c (rb_get_path): call StringValueCStr() to ensure no nul
+ bytes in path strings.
+
+ * gc.c (garbage_collect): need value for return. [ruby-dev:27127]
+
+Sun Sep 18 02:10:47 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: remove comments that are bungling up
+ the rdoc and ri output. output symbols as plain scalars.
+
+ * ext/syck/rubyext.c (syck_emitter_reset): emit headless
+ documents always.
+
+ * ext/syck/emitter.c (syck_scan_scalar): quote scalars with any
+ kind of surrounding line space, tabs or spaces alike.
+
+ * ext/syck/token.c: accept tabs as whitespace, not for indentation,
+ but strip from plain scalars.
+
+ * test/yaml/test_yaml.rb: remove outdated tests.
+
+Sun Sep 18 01:10:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (garbage_collect): return false if no GC run.
+
+Sat Sep 17 23:25:04 2005 sheepman <sheepman@sheepman.sakura.ne.jp>
+
+ * lib/mathn.rb (Rational::inspect): should preserve original
+ operand. [ruby-core:05806]
+
+Sat Sep 17 23:20:27 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie): should handle multiple values for a
+ cookie name. [ruby-talk:156140]
+
+ * test/socket/test_tcp.rb (TestTCPSocket::test_recvfrom): typo
+ fixed. [ruby-dev:27123]
+
+Sat Sep 17 20:58:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_select): fixed deadlock bug.
+ because select(2) modifies its fd_set arguments, it must be
+ restored sometimes.
+
+ * win32/win32.c (rb_w32_select): performance improvement when
+ 'always readable/writable handles' and sockets are passed.
+ sockets should be polled every time.
+
+ require "net/http"
+
+ Thread.new {
+ loop do
+ STDOUT.write(".") # busy on console (this is worst case though)
+ end
+ }
+
+ # socket operation took long time. (sometimes timed out)
+ Net::HTTP.start("www.ruby-lang.org") do |http|
+ http.get("/cgi-bin/cvsweb.cgi/ruby/array.c?rev=1.179")
+ end
+
+Sat Sep 17 14:54:40 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_readpartial.rb (test_open_pipe, test_with_stdio):
+ these tests are working now, so turned on. (windows)
+
+Sat Sep 17 14:18:15 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_select): I hope performance problem was
+ solved.
+
+Sat Sep 17 13:45:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_select): console support is back.
+ but still has performance problem because I loosely took 1 second
+ for wait time. I'll fix it later. (The reason I drastically changed
+ the code is that I wanted to implement the fileset management as
+ single function, and I was worried that if pipe or console
+ was always available, socket may not be processed any time)
+
+Sat Sep 17 11:24:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_select): select for socket didn't work.
+ this caused deadlock in drb test. this happened because GetFileType
+ for socket handle returns FILE_TYPE_PIPE. Of course, it's not a
+ pipe. So socket handle didn't reach winsock's select function.
+
+ * win32/win32.c (rb_w32_select): read for pipe was still blocked
+ even if writer handle was closed.
+
+ r,w = IO.pipe
+
+ Thread.new {
+ sleep 3; puts "------- 1"
+ w.puts("foo")
+ sleep 3; puts "------- 2"
+ w.puts("boo")
+ sleep 3; puts "------- 3"
+ w.close
+ }
+
+ until r.eof? # should break by w.close but didn't.
+ puts r.gets
+ end
+
+ * win32/win32.c (rb_w32_select): temporary reverted console support
+ but it'll be back soon.
+
+Sat Sep 17 10:42:13 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string and bg_eval_string
+ should call Kernel.eval on caller's safe-level instead of slave's
+ safe-level (Of course, the given script should be evaluated on
+ slave's safe-level).
+
+Sat Sep 17 09:45:26 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_substr): should propagate taintness even for
+ empty strings. [ruby-dev:27121]
+
+ * string.c (rb_str_aref): should infect result if range argument
+ is tainted. [ruby-dev:27121]
+
+Sat Sep 17 08:35:39 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb (RSS::Maker::ItemsBase#normalize): fixed
+ strange RSS::Maker::Item#max_size behavior.
+ Thanks to Kazuhiko <kazuhiko@fdiary.net>.
+
+ * test/rss/test_maker_1.0.rb (RSS::TestMaker10#test_items): ditto.
+
+Sat Sep 17 08:02:53 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: supported DIGEST-MD5. Thanks, Mathieu Arnold.
+
+ * lib/net/imap.rb: use fcall instead of send. Thanks, Satoru
+ Takabayashi.
+
+Fri Sep 16 22:45:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_extname): empty string for path name ending with a
+ period. fixed: [ruby-core:05651]
+
+ * file.c (rb_file_join): smarter behavior at edge cases.
+ fixed: [ruby-core:05706]
+
+ * gc.c (rb_memerror, ruby_xmalloc, ruby_xrealloc, rb_newobj): just
+ abandon if no memory available, when interpreter is not running.
+ [ruby-dev:27104]
+
+ * gc.c (garbage_collect): return whether GC could run.
+
+ * dir.c (rb_push_glob): fix delimiter bug. fixed: [ruby-dev:27105]
+
+ * dir.c (dir_s_aref, dir_s_glob): allow multiple patterns.
+ [ruby-dev:27110]
+
+ * win32/win32.c (cmdglob): enable brace expansion.
+
+Fri Sep 16 18:34:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/node.c (syck_replace_str): was using return from the
+ void function. a patch from MIYAMUKO Katsuyuki
+ <miyamuko at mtb.biglobe.ne.jp>. [ruby-dev:27111]
+
+Fri Sep 16 14:48:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: fix typo on MultiTkIp#bg_eval_string
+
+Fri Sep 16 12:02:12 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_resolver_transfer): remove C++ style
+ comment (//). [ruby-core:05793]
+
+Fri Sep 16 00:17:03 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/logger/test_logger.rb: unintentionally overwritten changes by
+ Usa. reverted.
+
+Fri Sep 16 00:03:11 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#initialize): should set
+ $stdout.binmode.
+
+Thu Sep 15 23:25:21 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/{soap,wsdl,xsd}, test/{soap,wsdl,xsd}: imported soap4r/1.5.5.
+
+ #nnn is a ticket number at http://dev.ctor.org/soap4r
+
+ * SOAP
+
+ * allow to configure an envelope namespace of SOAP request. (#124)
+ TemporaryNamespace = 'http://www.w3.org/2003/05/soap-envelope'
+ @client.options["soap.envelope.requestnamespace"] =
+ TemporaryNamespace
+ @client.options["soap.envelope.responsenamespace"] =
+ TemporaryNamespace
+ @client.do_proc(...)
+
+ * let SOAP request XML indent space configurable. see
+ "soap.envelope.no_indent" option. (#130)
+
+ * let external CES configurable.
+ ex. client["soap.mapping.external_ces"] = 'SJIS'. $KCODE is used
+ by default. (#133)
+ external CES ::= CES used in Ruby object of client and server
+ internal CES ::= CES used in SOAP/OM
+
+ * add iso-8859-1 external CES support. (#106)
+
+ * fixed illegal 'qualified' handling of elements. it caused
+ ASP.NET interoperability problem. (#144)
+
+ * added 'soap.envelope.use_numeric_character_reference' (boolean)
+ option to let query XML use numeric character reference in XML,
+ not plain UTF-8 character. !GoogleSearch server seems to not
+ allow plain UTF-8 character since 2005-08-15 update. (#147)
+
+ * SOAP::Header::SimpleHeader (de)serialization throws an exception
+ on !SimpleHeader.on_(in|out)bound when header is a String. so we
+ could not use a simple single element headerItem. fixed. thanks
+ to emil. (#129)
+
+ * out parameter of rpc operation did not work. (#132)
+
+ * follow HTTP redirect only if using http-access2. (#125) (#145)
+
+ * add a workaround for importing an WSDL whose path begins with
+ drive letter. (#115)
+
+ * WSDL
+
+ * SOAP Data which is defined as a simpletype was not mapped
+ correctly to Ruby obj when using wsdl2ruby.rb generated classdef
+ file. (#123)
+
+ * rpc/literal support. (#118)
+
+ * re-implemented local element qualify/unqualify control. handles
+ elementFormDefault and form in WSDL. (#119)
+
+ * Array of an element which has simpleType causes a crash. (#128)
+
+ * parameterOrder may not contain return part so it can be shorter
+ than parts size. Thanks to Hugh. (#139)
+
+ * Samples
+
+ * added !BasicAuth client sample. (#117)
+
+ * added Base64 client/server sample.
+
+ * added Flickr SOAP interface client sample. (#122)
+
+ * added !SalesForce client sample. (#135)
+
+ * updated Thawte CA certificate for !GoogleAdWords sample.
+
+ * updated a client script with the newer version made by Johan.
+ thanks!
+
+ * shortened long file names. (#120)
+
+ * fixed typo in authheader sample. (#129)
+
+ * updated deprecated method usage. (#138)
+
+Thu Sep 15 22:40:27 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_signal.rb (test_exit_action): skip the test using
+ fork on fork-less platforms.
+
+Thu Sep 15 13:54:33 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: add :read_timeout option.
+ [ruby-core:4848]
+
+Thu Sep 15 11:39:18 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/dialog.rb: If a dialog does not show up yet,
+ TkDialogObj#name raises an exception. [ruby-talk:156109]
+
+Thu Sep 15 11:01:58 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pipe_exec): remove unnecessary CloseHandle().
+
+ * win32/win32.c (extract_console_fd, peek_console): new functions.
+
+ * win32/win32.c (rb_w32_select): check consoles by polling them.
+
+Thu Sep 15 00:18:24 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/net/telnet.rb (Net::Telnet::waitfor): replace sysread with
+ readpartial. [ruby-talk:127641]
+
+Wed Sep 14 23:28:28 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (collect_file_fd): rename from extract_file_fd.
+
+ * win32/win32.c (extract_pipe_fd, peek_pipe): new functions.
+
+ * win32/win32.c (rb_w32_select): check pipes by polling them.
+
+Wed Sep 14 22:40:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (ruby_glob): glob function not using ruby exception system.
+
+Wed Sep 14 17:24:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c: changed `foo (*bar)_((boo))' to `foo (*bar)(boo)`.
+
+ * enumerator.c, eval.c, gc.c, intern.h, io.c, process.c, ruby.c,
+ ruby.h, signal.c: ditto.
+
+Wed Sep 14 15:06:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bignum.c: changed `foo _((boo))' to `foo(boo)`. [ruby-dev:27056]
+
+ * defines.h, dir.c, dln.h, enumerator.c, env.h, error.c, eval.c, file.c,
+ gc.c, hash.c, inits.c, intern.h, io.c, lex.c, marshal.c, missing.h,
+ node.h, numeric.c, pack.c, process.c, re.h, ruby.c, ruby.h, rubyio.h,
+ rubysig.h, signal.c, sprintf.c, st.h, string.c, struct.c, time.c,
+ util.c, util.h, variable.c: ditto.
+
+Tue Sep 13 22:09:40 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb (Logger): added formatter accessor to logger for
+ dictating the way in which the logger should format the messages it
+ displays. Thanks to Nicholas Seckar (cf. [ruby-talk:153391]) and
+ Daniel Berger.
+
+ * lib/logger.rb (Logger): added VERSION constant.
+
+ * lib/logger.rb: removed document for LogDevice. It is an
+ implementation detail and is not a public interface.
+
+ * test/logger/test_logger.rb: added tests.
+
+Tue Sep 13 21:47:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (BEGIN_CALLARGS): pop halfly pushed status.
+ fixed: [ruby-dev:26881]
+
+Tue Sep 13 20:24:37 2005 Tanaka Akira <akr@m17n.org>
+
+ * ruby.h (PRINTF_ARGS): new macro for printf style argument checking.
+
+Tue Sep 13 15:41:29 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: wrote documentation of HTTPRequest/HTTPResponse
+ classes.
+
+Tue Sep 13 14:27:47 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * string.c, missing.h: failed to build on powerpc-apple-darwin7.9.0
+ because of crypt argument's constness mismatch. (I hope this works)
+ (http://mput.dip.jp/autobuild/ruby-trunk/log/20050913T110001.gz)
+
+Tue Sep 13 12:33:05 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb: reworking YAML::Stream to use the new
+ emitter.
+
+ * lib/yaml/stream.rb: ditto.
+
+ * lib/yaml/rubytypes.rb: added Object#yaml_new.
+
+ * lib/yaml/tag.rb: the tag_subclasses? method now
+ shows up in the class. allow taguri to be set using an accessor.
+ continue support of Object#to_yaml_type.
+
+ * ext/syck/rubyext.c: new emitter code. yaml_new and yaml_initialize
+ get called, should they be present. consolidated all the diaspora of internal node types into the family below YAML::Syck::Node -- Map,
+ Seq, Scalar -- all of whom are SyckNode structs pointing to
+ Ruby data. moved Object#yaml_new into the node_import and made it
+ the default behavior. the target_class is always called with
+ yaml_new, prepended a parameter, which is the klass. loaded nodes
+ through GenericResolver show their style.
+ new Resolver#tagurize converts type ids to taguris.
+
+ * ext/syck/implicit.re: were 'y' and 'n' seriously omitted??
+
+ * ext/syck/emitter.c: renovated emitter, walks the tree in advance.
+ consolidated redundant block_styles struct into
+ the scalar_style struct. (this means loaded nodes can now
+ be sent back to emitter and preserve at least its very basic
+ formatting.)
+
+ * ext/syck/gram.c: headless documents of any kind allowed.
+
+ * ext/syck/node.c: new syck_replace_str methods and syck_empty_*
+ methods for rewriting node contents, while keeping the ID
+ and other setup info. added syck_seq_assign.
+
+ * ext/syck/syck.h: reflect block_styles and new node functions.
+
+Tue Sep 13 08:09:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (new_ostruct_member): Object#send no longer call
+ private methods. [ruby-dev:27044]
+
+ * test/rss/test_dublincore.rb, test/rss/test_trackback.rb,
+ test/ruby/test_eval.rb, test/socket/test_socket.rb: ditto.
+
+ * test/ruby/test_lambda (test_call_with_block): lambda makes new scope
+ for formal block parameter.
+
+Tue Sep 13 01:17:45 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_save_safe_level): no need to restrict safe level
+ memoize in $SAFE>=3. [ruby-dev:27050]
+
+Tue Sep 13 00:02:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (apply2files): stricter callback definition.
+
+ * file.c (rb_path_check): constified.
+
+Mon Sep 12 20:53:06 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/openssl/test_pkcs7.rb (test_enveloped): skip this test
+ to avoid a bug of PKCS7_encrypt() (only if ext/openssl is
+ compiled with OpenSSL-0.9.7d or earlier versions).
+ http://www.mail-archive.com/openssl-dev@openssl.org/msg17376.html
+
+Mon Sep 12 20:32:00 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.[hc] (rb_w32_argv_size, ...): reverted my latest change
+ to avoid incompatible pointer warning. (mingw32)
+
+Mon Sep 12 19:58:53 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dln.c: avoid warning of const to non-const convertion.
+ [ruby-dev:27041]
+
+ * eval.c, io.c, ruby.c: ditto.
+
+Mon Sep 12 19:26:29 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * array.c: moved to ANSI function style from K&R function style.
+ (used protoize on windows, so still K&R remains on #ifdef part of
+ other platforms. And `foo _((boo))' stuff is still there)
+ [ruby-dev:26975]
+
+ * bignum.c, class.c, compar.c, dir.c, dln.c, dmyext.c, enum.c,
+ enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c,
+ io.c, main.c, marshal.c, math.c, numeric.c, object.c, pack.c,
+ prec.c, process.c, random.c, range.c, re.c, regcomp.c, regenc.c,
+ regerror.c, regexec.c, regparse.c, regparse.h, ruby.c, signal.c,
+ sprintf.c, st.c, string.c, struct.c, time.c, util.h, variable.c,
+ version.c: ditto.
+
+Mon Sep 12 14:03:33 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/dbm/test_dbm.rb: remove locking test, which may not be
+ supported on some platforms. [ruby-dev:27030]
+
+Sun Sep 11 23:23:02 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (starttls): supported the STARTTLS command.
+
+Sun Sep 11 22:18:07 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * bin/erb (ERB::Main#run): set ERB#filename so that it is used
+ when reporting syntax/runtime errors. Tabs converted to spaces.
+
+Sat Sep 10 22:34:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c, bignum.c: protoize.
+
+Sat Sep 10 00:23:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (splat_value): simpler and consistent array conversion
+ for argument splat. [yarv-dev:599]
+
+Fri Sep 9 16:45:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_times): make empty strings to keep taintness,
+ and a little improvement. [ruby-dev:26900]
+
+ * ext/iconv/iconv.c (iconv_try), ext/iconv/extconf.rb: get rid of meta
+ characters in command line option. fixed: [ruby-talk:155369]
+
+ * ext/iconv/iconv.c: protoized.
+
+Thu Sep 8 14:58:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * merged a patch from Takahiro Kambe <taca at back-street.net> to
+ support DragonFly BSD. [ruby-dev:26984]
+
+Thu Sep 8 13:14:57 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * missing/strchr.c (strrchr): fixed a bug in detecting NUL in a
+ string. [ruby-dev:26985]
+
+Wed Sep 7 17:29:27 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_by_id):
+ OpenSSL::Engine.by_id calls given block before calling
+ ENGINE_init (block parameter is the return value of this method
+ itself). this functionality is useful to load dynamic shared
+ engines.
+
+ require "openssl"
+ pkcs11 = OpenSSL::Engine.by_id("dynamic"){|e|
+ e.ctrl_cmd("SO_PATH", "/usr/lib/opensc/engine_pkcs11.so")
+ e.ctrl_cmd("LIST_ADD", "1")
+ e.ctrl_cmd("LOAD")
+ }
+ pkcs11.ctrl_cmd("PIN", "secret")
+ key = pkcs11.load_private_key
+
+ * ext/openssl/ossl_engine.c (ossl_engine_ctrl_cmd): new method
+ OpenSSL::Engine#ctrl_cmd. it wraps ENGINE_ctrl_cmd_string.
+
+ * ext/openssl/ossl_engine.c (ossl_engine_get_cmds): new method
+ OpenSSL::Engine#cmds. it returns engine command definitions.
+
+Wed Sep 7 15:48:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (asn1str_to_str): new function.
+
+ * ext/openssl/ossl_pkcs7.c: new class OpenSSL::PKCS7::RecipientInfo.
+ this class wraps PKCS7_RECIP_INFO struct.
+
+ * ext/openssl/ossl_pkcs7.c: OpenSSL::PKCS7::Signer is renamed to
+ OpenSSL::PKCS7::SignerInfo. ("Signer" remains as an alias of
+ SignerInfo.)
+
+ * test/openssl/test_pkcs7.rb: new file.
+
+Wed Sep 7 12:55:08 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: abolish mod === tempfile to avoid a problem
+ [ruby-dev:26967].
+
+Wed Sep 7 10:45:15 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_switch): convert all exceptions to
+ SystemExit. fixed: [ruby-core:05724]
+
+ * eval.c (rb_thread_terminated): show backtrace before propagate
+ exceptions to main thread.
+
+Wed Sep 7 09:21:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.[hc] (rb_w32_utime): constified.
+
+ * win32/win32.h (rb_w32_stat): added prototype.
+
+ * win32/win32.[hc] (rb_w32_argv_size,rb_w32_join_argv,rb_w32_aspawn):
+ changed `char *const *' to `const char *const *'. (constify string)
+
+Wed Sep 7 08:35:04 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in (MINIOBJS): miniruby on HP-UX can not load
+ extension libraries.
+
+ * bignum.c (bignew_1, bigadd): K&R style argument actually can't be
+ defined as char.
+
+ * missing/vsnprintf.c: ANSI compiler supports const keyword.
+
+ * ext/digest/sha2/extconf.rb: reject platforms which has inttypes.h
+ but no 64bit integer.
+
+ * lib/mkmf.rb (what_type?): guesstimate type.
+
+ * ext/etc/etc.c (setup_passwd), ext/etc/extconf.rb: pw_age might be
+ char*. fixed: [ruby-core:05470]
+
+Wed Sep 7 08:32:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_times): should taint empty strings as well.
+
+ * object.c (Init_Object): make class_variable_{get,set} public.
+ [ruby-dev:26965]
+
+Mon Sep 5 22:28:46 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt, mlhs_node, lhs, arg, method_call): aref_args might be
+ nothing. fixed: [ruby-dev:26952]
+
+ * ext/ripper/eventids2.c: added new tokens. fixed: [ruby-dev:26952]
+
+Mon Sep 5 17:03:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/find.rb: should raise ENOENT if root entry does not exist.
+ [ruby-list:41054]
+
+ * lib/ostruct.rb: a patch from Florian Gross <florgro at gmail.com>
+ merged to allow recursive inspect (and to_s) for OpenStruct.
+ [ruby-core:05532]
+
+Mon Sep 5 08:20:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/observer.rb: a patch from nornagon <nornagon at gmail.com>
+ merged to allow arbitrary names for update methods.
+ [ruby-core:05416]
+
+Mon Sep 5 07:01:12 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/openssl/lib/openssl/buffering.rb (Buffering#do_write):
+ should clear data from the buffer which already been output.
+
+Sun Sep 4 15:01:35 2005 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (f_arg): Ripper should not do semantic check.
+ [ruby-dev:26948]
+
+Sat Sep 3 23:52:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_fcall): new method to avoid inefficiency of
+ obj.instance_eval{send(...)} tricks.
+
+Sat Sep 3 13:59:31 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#descend): Pathname.new("./a/b/c").descend
+ didn't yield "."
+ (Pathname#ascend): ditto.
+
+Fri Sep 2 23:51:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_arg): f_norm_arg is a VALUE in ripper, not an ID.
+ fixed: [ruby-dev:26942]
+
+ * lib: do not use __send__ to access private methods. [ruby-dev:26935]
+
+Thu Sep 1 17:11:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): wrong condition for $SAFE restoration.
+
+Thu Sep 1 14:12:45 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: On Tcl8.5, MultiTkIp#invoke_hidden doesn't
+ work (gives wrong order of arguments).
+
+ * ext/tk/lib/multi-tk.rb: add MultiTkIp#invoke_hidden_on_namespace
+ to support '-namespace' option of 'interp invokehidden' command
+ on Tcl8.5.
+
+Wed Aug 31 14:41:30 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (OPTFLAGS): default global optimization to
+ disabled for all VC++ versions. fixed: [ruby-dev:26897]
+
+Wed Aug 31 10:36:09 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * process.c (proc_detach, proc_setmaxgroups): missing argument type
+ declaration. (I recommend ANSI-style function)
+
+Wed Aug 31 06:59:01 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_scan): already String#scan behaves differently
+ regarding if block is given.
+
+Tue Aug 30 23:49:34 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c, dir.c, enum.c, hash.c, io.c, range.c, string.c, struct.c:
+ let enumerable methods return Enumerator. [ruby-dev:26924]
+
+ * intern.h (RETURN_ENUMERATOR): utility macro for enumerable methods.
+
+Tue Aug 30 23:25:45 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/debug.rb: no need to restart at exit.
+
+Tue Aug 30 23:20:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_rescue2): initialization miss. fixed: [ruby-dev:26917]
+
+ * lib/mkmf.rb (xsystem, xpopen): no longer expand by Config.
+
+ * lib/mkmf.rb (link_command, cc_command, cpp_command): expand
+ variables at once, and quote hdrdir. fixed: [ruby-core:05680]
+
+ * lib/mkmf.rb (libpathflag): quote paths.
+
+Tue Aug 30 19:34:27 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/digest/md5/md5ossl.h, ext/digest/rmd160/rmd160ossl.h,
+ ext/digest/sha1/sha1ossl.h: include <stddef.h> to avoid
+ error in compilation with OpenSSL-0.9.8. [ruby-list:41068]
+
+Tue Aug 30 16:19:40 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/init.rb: bug fix. [ruby-dev: 26920]
+
+Tue Aug 30 16:13:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_count): new method. [ruby-dev:26895]
+
+Tue Aug 30 12:45:15 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_send): do not call private methods if the receiver
+ is specified. [ruby-talk:153672]
+
+Mon Aug 29 19:47:18 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/rdoc/usage.rb: improper exceptions. [ruby-dev:26870]
+
+ * lib/rdoc/usage.rb: support the case when non-ruby code exists before
+ shebang. (this is needed when ri.bat is executed on windows)
+
+Mon Aug 29 18:58:05 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/init.rb: make IRB -I option that is same behavior for ruby.
+ [ruby-dev:26872]
+
+ * lib/irb/locale.rb: support to print help message when OS locale is
+ ja_JP.utf-8. [ruby-dev:26872]
+
+Mon Aug 29 01:43:05 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#descend): new method.
+ (Pathname#ascend): ditto.
+
+Mon Aug 29 00:35:09 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb: require 'date/format' instead of 'parsedate'.
+ (Time.parse): extract fractional seconds using Date._parse.
+ (Time.strptime): extract fractional seconds using Date._strptime.
+ [ruby-talk:153859]
+
+Sat Aug 27 20:13:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/curses/curses.c ({curses,window}_clrtoeol): added. suggested
+ by Reyn Vlietstra.
+
+ * ext/curses/curses.c: chtype in curses is not `char', rather `long'.
+ [ruby-Bugs:2298]
+
+ * ext/curses/view.rb: String =~ String is deprecated.
+
+Thu Aug 25 15:48:58 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/win32ole/win32ole.c: suppress warnings. (win32)
+
+Wed Aug 24 11:01:26 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/logger/test_logger.rb (test_shifting_size): should close log
+ device before unlink, since some platform cannot unlink opened
+ file.
+
+Tue Aug 23 06:07:02 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/digest.rb: added SHA224, SHA256, SHA384 and SHA512.
+ these features are enabled if this library is compiled with
+ OpenSSL 0.9.8 or later.
+
+ * test/openssl/test_digest.rb: add test for new digests.
+
+Tue Aug 23 05:47:04 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): try to decode
+ the argument as a string.
+
+ * ext/openssl/ossl_ns_pki.c (ossl_spki_to_der): new method.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_initialize): should
+ set @time to avoid warning.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths,
+ X509_STORE_add_cert, X509_STORE_add_crl): should raise error if
+ wrapped functions fails.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_set_ciphers): fix error message.
+
+ * ext/openssl/ossl_x509req.c (ossl_x509req_set_attributes): get rid
+ of unused variable.
+
+ * test/openssl/test_ns_spki.rb: add new file.
+
+ * test/openssl/test_x509store.rb: add test for error.
+
+Tue Aug 23 01:11:40 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * sprintf.c (ruby__sfvwrite): should move `buf' to the end of
+ `result'. [ruby-dev:26859]
+
+Mon Aug 22 23:51:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: ONIG_OPTION_CAPTURE_GROUP conflicts with
+ RE_OPTION_ONCE. [ruby-dev:26852]
+
+Mon Aug 22 20:11:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/vsnprintf.c (BSD__sprint): needs to call vwrite function
+ pointer. fixed: [ruby-dev:26854]
+
+Sat Aug 20 23:55:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): update paren_nest for brackets [].
+
+Sun Aug 21 00:10:23 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/wsdl/xmlSchema/importer.rb (WSDL::XMLSchema::Importer#fetch): add
+ a workaround for importing an WSDL whose path begins with drive
+ letter. [ruby-dev:26242]
+
+Sat Aug 20 22:05:25 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * regexec.c (code_is_in_cclass_node): check code size.
+ [ruby-dev:26840]
+
+Sat Aug 20 22:37:13 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb (write, shift_log?, shift_log): file shifting race
+ condition bug fixed. [ruby-dev:26764]
+
+ * test/logger/test_logger.rb: tests.
+
+Fri Aug 19 18:13:39 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb (Time.apply_offset): fix a problem with last day of
+ month. reported by Lucas Nussbaum. [ruby-talk:152866]
+
+Thu Aug 18 11:05:36 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (socketpair_internal): need to call open_ifs_socket()
+ to create sockets instead of winsock's socket().
+ fixed: [yarv-dev:581]
+
+Wed Aug 17 23:58:05 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (terminate_process): take String message.
+
+ * eval.c (rb_thread_switch): propagate the exception caused thread
+ termination directly. fixed: [ruby-core:05552]
+
+Wed Aug 17 21:20:05 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb: ensure that symbol_to_option is private_class_method
+ and all other methods are module_function
+ fixed: [ruby-dev:26808]
+
+Wed Aug 17 00:05:46 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_add_method): preserve safe level in the environment
+ where a method is defined .
+
+ * eval.c (rb_call0): restore preserved safe level in the method
+ execution.
+
+ * parse.y (lambda): need separate block variable stack
+ manipulation and lpar_beg maintenance. based on a patch found
+ in [ruby-core:05551] from Mauricio Fernandez <mfp at acm.org>.
+
+ * parse.y (parser_yylex): adjust lpar_beg after tLAMBEG and
+ kDO_LAMBDA. [ruby-core:05551]
+
+Mon Aug 15 07:24:38 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (rb_check_to_integer): add declaration.
+
+ * object.c (rb_to_integer, rb_check_to_integer): argument constified.
+
+Mon Aug 15 00:38:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_rescue2): reduce PUSH_TAG() as well as NODE_RESCUE.
+ [ruby-dev:26800]
+
+ * range.c (range_check, range_init): reduce useless exceptions.
+
+Mon Aug 15 00:34:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yycompile): remove unreachable code. [yarv-dev:570]
+
+Sat Aug 13 22:16:12 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_entry_secure): forgot final chdir.
+
+Sat Aug 13 22:07:49 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_entry_secure): uses chdir(2) and check
+ if current directory is correct. [ruby-dev:26100] [ruby-dev:26226]
+
+Sat Aug 13 21:11:05 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_VARIANT class.
+
+ * ext/win32ole/tests/testall.rb: ditto.
+
+ * ext/win32ole/tests/testOLEVARIANT.rb: ditto.
+
+Sat Aug 13 18:51:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_block_pass): distinguish current block from others.
+ fixed: [ruby-dev:26274]
+
+ * ext/stringio/stringio.c (strio_set_string): disallow nil.
+ http://www.rubyist.net/~nobu/t/20050811.html#c05
+
+Sat Aug 13 08:01:59 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb: Kconv.kconv is now alias of Kconv.conv
+ * ext/nkf/lib/kconv.rb: remove nkf dependent symbols from SYMBOL_TO_OPTION
+
+Fri Aug 12 17:06:53 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_larglist): allow optional arguments even when
+ parentheses are omitted. based on Nobu's patch from
+ http://www.rubyist.net/~nobu/t/20050805.html
+
+ * parse.y (parser_yylex): update & maintain lpar_beg for detect
+ lambda parameters.
+
+Thu Aug 11 23:29:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c: keep holding string after closed.
+
+Thu Aug 11 20:48:40 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * numeric.c (fix_equal, fix_cmp, fix_gt, fix_ge, fix_lt, fix_le):
+ reduce coercing when a method knows about a operand type.
+ [ruby-dev:26789]
+
+Thu Aug 11 13:01:48 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss: fixed sort bug. [ruby-list:41018]
+
+ * lib/rss/1.0.rb (RSS::RDF::Channel#setup_maker_attributes):
+ removed self.
+
+ * lib/rss/maker/base.rb (RSS::Maker::ItemsBase#<=>): use #date
+ instead of @date.
+ (RSS::Maker::Base::self.def_array_element): added #size.
+
+ * lib/rss/maker/1.0.rb
+ (RSS::Maker::RSS10::Channel#to_rss,
+ RSS::Maker::RSS10::Items::Item#to_rss): cleared dc_dates set
+ upped by using #date.
+
+ * lib/rss/maker/dublincore.rb
+ (RSS::Maker::ChannelBase, RSS::Maker::ItemsBase::ItemBase):
+ fixed opposite alias.
+
+ * test/rss/test_setup_maker_1.0.rb
+ (RSS::TestSetupMaker10::test_setup_maker_items_sort): added some
+ tests for RSS::Maker::ItemsBase#do_sort.
+
+Wed Aug 10 12:01:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb: simplifies Delegator classes; SimpleDelegator
+ now uses method_missing for all methods.
+
+Wed Aug 10 10:38:50 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_mul0): multiply two numbers (x, y) without
+ normalizing the result. x should be a big number.
+ [ruby-dev:26778]
+
+ * bignum.c (rb_big_pow): use rb_big_mul0() instead of
+ rb_big_mul().
+
+ * array.c (rb_ary_or, rb_ary_and, rb_ary_plus, rb_ary_diff):
+ revert the change on 2005-08-03. Set operation on other item
+ should have in separate methods.
+
+ * parse.y (shadowing_lvar_gen): warn when arguments shadows
+ external local variables.
+
+ * parse.y (f_opt): optional arguments should not clobber external
+ local variables.
+
+ * parse.y (f_rest_arg): rest arguments should not clobber external
+ local variables.
+
+Wed Aug 10 10:29:40 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fix bug on handling __ruby2val_optkeys().
+
+ * ext/tk/lib/tk/itemconfig.rb: fix bug on handling
+ __item_ruby2val_optkeys().
+
+ * ext/tk/lib/tk/canvas.rb: didn't check __item_ruby2val_optkeys().
+
+ * ext/tk/lib/tkextlib/blt/component.rb: ditto.
+
+Tue Aug 9 21:53:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (formal_assign): let default values override
+ arguments to zsuper. fixed: [ruby-dev:26743]
+
+Tue Aug 9 20:30:19 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * bignum.c (rb_big_coerce): allow bignum x bignum coercing.
+ [ruby-dev:26778]
+
+Tue Aug 9 15:12:04 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: remove dangerous 'rb_jump_tag's.
+
+ * ext/tk/lib/tk.rb: add __val2ruby_optkeys and __ruby2val_optkeys to
+ help to convert option values between ruby and tcl.
+
+ * ext/tk/lib/tk/itemconfig.rb: add __item_val2ruby_optkeys and
+ __item_ruby2val_optkeys to help to convert option values between
+ ruby and tcl.
+
+ * ext/tk/lib/tk/radiobutton.rb: use __ruby2val_optkeys for 'variable'
+ option (for the reason of backward compatibility).
+
+ * ext/tk/lib/tk/composite.rb: clarify the arguments of super().
+
+ * ext/tk/lib/tk/spinbox.rb: ditto.
+
+ * ext/tk/lib/tk/text.rb: ditto.
+
+ * ext/tk/lib/tk/validation.rb: ditto.
+
+ * ext/tk/lib/tkextlib/*: support to treat tkvariable-type
+ configure options.
+
+Tue Aug 9 08:24:05 2005 Mauricio Fernandez <mfp@acm.org>
+
+ * parse.y (f_block_arg), eval.c (rb_yield_0): deal with dynamic
+ variable lambda arguments. [ruby-core:05540]
+
+Mon Aug 8 22:13:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (assign): deal with new block argument.
+ fixed: [ruby-core:05536]
+
+ * eval.c (rb_node_arity): follow change of NODE_ARGS.
+ fixed: [ruby-dev:26761]
+
+Mon Aug 8 21:28:13 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_fnmatch.rb: separated from test_file.rb.
+
+Mon Aug 8 20:40:35 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_method.rb: added. [ruby-dev:26761]
+
+Mon Aug 8 01:26:37 2005 Mauricio Fernandez <mfp@acm.org>
+
+ * parse.y (f_larglist): mistake in syntax rule. [ruby-core:05535]
+
+Mon Aug 8 05:16:55 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (ossl_raise): should use ERR_peek_last_error
+ to get last error on the current thread. And should report
+ if errors are on the stack while OpenSSL.debug is true.
+
+ * ext/openssl/ossl.c (ossl_get_errors): new method for debugging
+ this library.
+
+Mon Aug 8 05:15:19 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpproxy.rb (HTTPProxyServer#initialize),
+ lib/webrick/httpserver.rb (HTTPServer#initialize),
+ lib/webrick/httpservlet/cgihandler.rb (CGIHandler#initialize),
+ lib/webrick/httpservlet/erbhandler.rb (ERBHandler#initialize),
+ lib/webrick/httpservlet/filehandler.rb(DefaultFileHandler#initialize):
+ super (called with no arguments) takes default value of optional
+ arguments. [ruby-dev:26743]
+
+ * lib/webrick/httputils.rb: add a media-type "text/html" for .xhtml.
+
+Sun Aug 7 23:52:39 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_super.rb: added optional arg tests. [ruby-dev:26743]
+ the tests expects 1.8 behavior at this time.
+
+Sat Aug 6 12:35:24 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/{tk.rb,tk/itemconfig.rb}: configure creates
+ TkVariable if key name is 'variable' or 'textvariable'
+ by default. [ruby-dev:26749]
+
+ * ext/tk/lib/tk/{label,radiobutton}.rb: removed its own
+ {variable,textvariable} function.
+
+ * ext/tk/lib/tk/variable.rb: retains backward compatibility.
+
+Fri Aug 5 12:48:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c: fixed memory leak when tk_funcall raised
+ exception. (copies argv into heap in tk_funcall instead of
+ caller)
+
+Fri Aug 5 12:36:40 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): need to convert path separator
+ before invoking install command.
+
+Fri Aug 5 08:08:05 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (return_jump): fix "can't across thread" error message
+ when no thread associated.
+ http://www.namikilab.tuat.ac.jp/~sasada/diary/200507.html#d31
+
+Fri Aug 5 00:25:12 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c: refactoring - extract ruby string <->
+ tcl object conversion as get_str_from_obj and get_obj_from_str.
+
+Fri Aug 5 00:19:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (Init_Enumerator): provided features should have
+ extensions.
+
+ * eval.c (rb_feature_p): returns type of the feature instead of
+ extension.
+
+ * eval.c (search_required): ruby library should be prior to statically
+ linked extensions. fixed: [ruby-dev:26711]
+
+ * eval.c (formal_assign): returns position of rest arguments variable.
+
+ * parse.y (f_rest_arg): use anonymous variable for rest arguments.
+ fixed: [ruby-dev:26647]
+
+ * extmk.rb (extmake): needs to be wrapped in an Array.
+
+Thu Aug 4 20:03:18 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * numeric.c (Init_Numeric): do not share implementation among
+ Fixnum#/ and Fixnum#div. [ruby-core:05531]
+
+Thu Aug 4 18:38:36 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: cannot compile for Tcl7.6/Tk4.2.
+
+ * ext/tk/tcltklib.c: add nativethread consistency check.
+
+ * ext/tk/stubs.c: ditto.
+
+ * ext/tk/lib/tk.rb: forgot to define TclTkIp.encoding and encoding=
+ when Tcl is 7.6 or 8.0.
+
+ * ext/tk/lib/tk/wm.rb: support to make some methods as options of
+ root or toplevel widget. [ruby-talk:150336]
+
+ * ext/tk/lib/tk/root.rb: ditto.
+
+ * ext/tk/lib/tk/toplevel.rb: ditto.
+
+ * ext/tk/lib/tkextlib/SUPPORT_STATUS: update RELEASE_DATE
+
+Thu Aug 4 13:30:15 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_div): should not convert the result into
+ integer. [ruby-core:05524]
+
+Thu Aug 4 08:03:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): should not modify $mflags for each
+ extensions.
+
+Thu Aug 4 00:25:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, Makefile.in, {bcc32,win32,wince}/Makefile.sub: integrated
+ macro definitions.
+
+ * bcc32/Makefile.sub: LIBRUBY_SO should use DLDOBJS, not EXTOBJS.
+
+ * {win32,wince}/Makefile.sub: separate config.h for compiler versions.
+
+Thu Aug 4 00:24:59 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c: replacing is no longer needed.
+
+Wed Aug 3 21:59:16 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: TkVariable#trace didn't work on
+ TkVariable retrieved from TkVariable.new_hash.ref. [ruby-dev:26721]
+
+Wed Aug 3 12:40:28 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * numeric.c (fix_plus): reduce coercing when a method knows about
+ a operand type. [ruby-dev:26723]
+
+ * numeric.c (fix_minus, fix_mul, fix_quo, fix_div, fix_mod,
+ fix_divmod, fix_pow): ditto.
+
+ * bignum.c (rb_big_div, rb_big_modulo): export to reduce
+ coercing.
+
+Wed Aug 3 10:13:52 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, {bcc32,win32,wince}/Makefile.sub (HAVE_SNPRINTF,
+ HAVE_VSNPRINTF): use win32/win32.c's implementation instead of
+ missing/vsnprintf.c's.
+
+ * win32/win32.[ch] (rb_w32_snprintf, rb_w32_vsnprintf): reverted.
+
+Wed Aug 3 10:05:08 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check vsnprintf() and snprintf().
+
+ * sprintf.c, missing/vsnprintf.c: made vsnprintf() and snprintf()
+ private. fixed: [ruby-dev:26651]
+
+Wed Aug 3 08:22:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): revert [ruby-talk:111654]
+ changes at 2004-09-07. [ruby-dev:26656]
+
+Wed Aug 3 06:53:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_or): wraps the operand in an array if it is not
+ an array. [ruby-talk:150495] [EXPERIMENTAL]
+
+ * array.c (rb_ary_and, rb_ary_plus, rb_ary_diff): ditto.
+
+Tue Aug 2 10:23:12 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c: use Tcl_[GS]etVar2Ex instead of
+ Tcl_Obj[GS]etVar2. (avoid Tcl_NewStringObj on supported platforms)
+
+ * ext/tk/tcltklib.c: use ip_{get,set,unset}_variable2_core from
+ ip_{get,set,unset}_variable.
+
+ * ext/tk/tcltklib.c: replaced Tcl_Panic with rb_bug.
+
+Tue Aug 2 01:40:38 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/ping.rb (Ping.pingecho): should rescue StandardError.
+ [ruby-dev:26677]
+
+Mon Aug 1 19:02:23 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c: refactoring - replaced rb_ivar_defined &
+ rb_ivar_get with single rb_attr_get call.
+
+Mon Aug 1 18:44:08 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c (Tcl_GetStringResult): refactoring - define
+ alternative macro on Tcl7.x or earlier.
+
+Mon Aug 1 13:53:55 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c (deleted_ip): refactoring - interpreter
+ deletion check. [ruby-dev:26664]
+
+Mon Aug 1 01:08:21 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (check_insecure_method): use private_methods and
+ protected_methods instead of respond_to? to check method visibility.
+ [ruby-dev:26616]
+
+ * test/drb/drbtest.rb: ditto.
+
+ * test/drb/ut_drb.rb: ditto.
+
+Sat Jul 30 18:49:44 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_TYPE#ole_typelib,
+ WIN32OLE_TYPE#implemented_ole_types.
+
+ * ext/win32ole/tests/testOLETYPE.rb: ditto.
+
+Fri Jul 29 16:12:02 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/context.rb: fix `irb --readline` option. [ruby-dev:40955]
+
+Fri Jul 29 09:59:38 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call0): fix calling zsuper from a method with anonymous
+ rest argument. [ruby-dev:26639]
+
+ * eval.c (rb_yield_0): push yielded node instead of yielding.
+ fixed: [yarv-dev:549]
+
+Thu Jul 28 21:49:17 2005 IWATSUKI Hiroyuki <don@na.rim.or.jp>
+
+ * parse.y (rb_parser_end_seen_p): exclude from ripper.
+ <http://moonrock.jp/~don/d/200507.html#d28_t2>
+
+ * sprintf.c (clearerr): remove standard macro before re-definition.
+ <http://moonrock.jp/~don/d/200507.html#d28_t3>
+
+Thu Jul 28 18:09:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/stubs.c: When --enable-tcltk-stubs, the initialize
+ routine creates a Tcl/Tk interpreter and deletes it. However,
+ init cost of Tk's MainWindow is not so small. And that makes it
+ impossible to use libraries written with Tcl functions only on
+ an environment without a graphical display. This changes support
+ delaying initialization of Tk_Stubs until the script needs Tk.
+
+ * ext/tk/stubs.h: New file. Define prototypes and return codes of
+ functions on stubs.c.
+
+ * ext/tk/tcltklib.c: Support delaying initialization of Tk_Stubs
+ until the script needs Tk.
+
+ * ext/tk/tcltklib.c: Show friendly error messages for errors on
+ initialization.
+
+ * ext/tk/tcltklib.c: Avoid SEGV on ip_finalize() when ruby is
+ exiting and $DEBUG is true. (Not fix. If you know the reason of
+ why, please fix it.)
+
+ * ext/tk/tkutil/tkutil.c (ary2list, ary2list2): bug fix on handling
+ of encoding.
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string and bg_eval_string
+ don't work properly.
+
+ * ext/tk/lib/tk.rb: Forget extending Tk::Encoding module to Tk.
+
+ * ext/tk/lib/tk/variable.rb: TkVarAccess fails to initialize the
+ object for an element of a Tcl's array variable.
+
+Thu Jul 28 17:23:37 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_larglist): allow block argument in lambda parameter
+ list without parenthesis.
+
+Thu Jul 28 17:14:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (each_i): typo fixed. [ruby-dev:26622]
+
+Thu Jul 28 15:04:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_arg): better argument name duplication check
+
+ * parse.y (new_args_gen): factored out name duplication check for
+ optional and rest arguments.
+
+ * parse.y (new_bv_gen): allow shadowing outer local variables;
+ warning remains.
+
+Thu Jul 28 13:46:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ripper_warningS): the argument was omitted.
+ [ruby-dev:26621]
+
+Thu Jul 28 11:30:57 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_larglist): allow bv_decl at the end of lambda
+ argument list. [EXPERIMENTAL]
+
+ * parse.y (new_bv_gen): allow local variable shadowing, with
+ warning in verbose mode.
+
+Wed Jul 27 23:23:54 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (obj_free): make message format consistent with one from
+ gc_mark(). [ruby-talk:149668]
+
+ * sprintf.c (quad_t): prepare quad_t as well. [ruby-talk:149668]
+
+Wed Jul 27 22:11:37 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin: removed. because the plugin
+ is imported in the tDiary plugin packages.
+
+Wed Jul 27 19:11:53 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (cd): follow :noop option change. (This patch
+ is contributed by Doug Kearns)
+
+Wed Jul 27 16:25:59 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (lambda): Perl6 style -> lambda expression. [NEW]
+ [VERY EXPERIMENTAL]
+
+Wed Jul 27 10:43:14 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (id2ref): must not assign pointers to long int. use
+ LONG_LONG instead if SIZEOF_LONG < SIZEOF_VOIDP.
+ [ruby-talk:149645]
+
+ * ruby.h: use LONG_LONG to simplify the change.
+ [ruby-talk:149645]
+
+Wed Jul 27 10:59:02 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_each): rewinddir(3) before iteration.
+ [ruby-talk:149628]
+
+Wed Jul 27 02:34:58 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_throw): replace all '0x%lx' by '%p'.
+ [ruby-talk:149553]
+
+ * missing/vsnprintf.c (BSD_vfprintf): '%p' need to handle 64bit
+ size pointer. [ruby-talk:149553]
+
+Tue Jul 26 22:41:28 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/sexp.rb: new method Ripper.sexp_raw.
+
+ * ext/ripper/lib/ripper/sexp.rb (Ripper.sexp): returns more
+ readable tree. This is suggested by Kirill A. Shutemov.
+
+Tue Jul 26 22:05:12 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: merge a patch contributed by Daniel Berger,
+ with some modification. (RubyForge #2128)
+
+Tue Jul 26 18:11:33 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h: support LLP64 model. [ruby-talk:149524]
+
+Tue Jul 26 12:57:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/openssl_missing.c: include <openssl/engine.h> before
+ <openssl/x509_vfy.h> to avoid compilation error of mswin32.
+ suggested by NAKAMURA Usaku.
+
+Mon Jul 25 23:48:55 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch]: (rb_w32_vsnprintf, rb_w32_snprintf): removed.
+
+Mon Jul 25 21:30:46 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: Borland MAKE doesn't look for file names which have paths
+ from VPATH. fixed: [ruby-dev:26604]
+
+ * ruby.h (NORETURN, DEPRECATED): moved just after config.h.
+
+ * {win32,wince}/Makefile.sub: vsnprintf() is in missing now.
+
+ * {bcc32,win32,wince}/Makefile.sub: moved CPPFLAGS only for ruby
+ source to XCFLAGS.
+
+Mon Jul 25 14:10:02 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: fix en-bugged part in the last commit.
+
+Mon Jul 25 13:45:18 2005 NAJIMA Hiroki <najima@mickey.ai.kyutech.ac.jp>
+
+ * io.c: check HAVE_SYS_IOCTL_H before including the header.
+ [ruby-dev:26610]
+
+Sat Jul 23 16:48:12 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_load): should check
+ OPENSSL_NO_STATIC_ENGINE.
+
+Sat Jul 23 11:46:30 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_fd_select): the all three fd_sets must be long enough for
+ select. fixed: [ruby-talk:149059]
+
+Sat Jul 23 10:01:41 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_vsprintf, rb_sprintf): new functions return new String,
+ using missing/vsnprintf.c. [ruby-dev:26580]
+
+ * missing/vsnprintf.c: made the output changeable.
+
+Fri Jul 22 21:06:08 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
+
+ * bignum.c (rb_big_eq): reduce isnan(). [ruby-dev:26600]
+
+ * numeric.c (flo_eq, flo_gt, flo_ge, flo_lt, flo_le): ditto.
+
+Fri Jul 22 15:02:39 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: moved copyright description to lib/rss.rb.
+
+ * lib/rss.rb: added for convenience.
+
+ * sample/rss/re_read.rb: added #to_s sample.
+
+ * sample/rss/blend.rb: use 'require "rss"' instead of
+ 'require "rss/*"'.
+ * sample/rss/list_description.rb: ditto.
+ * sample/rss/rss_recent.rb: ditto.
+ * sample/rss/tdiary-plugin/rss-recent.rb: ditto.
+
+ * sample/rss/tdiary-plugin/rss-recent.rb: 0.0.6 -> 0.0.7.
+
+Fri Jul 22 14:37:43 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::Parser#initialize): accept HTTP/FTP
+ URI and local file path too.
+
+ * test/rss/test_parser.rb (RSS::TestParser#test_parse): test
+ for the above.
+
+Fri Jul 22 07:01:42 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil/tkutil.c (tk_conv_args): forget to revert
+ thread_critical and gc_disable when raise ArgumentError.
+
+ * ext/tk/lib/remote-tk.rb: RemoteTkIp doesn't need to include TkUtil.
+
+ * ext/tk/tcltklib.c: add TclTkIp#has_mainwindow? method.
+
+ * ext/tk/lib/tk.rb: add Tk.has_mainwindow? method.
+
+ * ext/tk/lib/multi-tk.rb: add MultiTkIp#has_mainwindow? method.
+
+ * ext/tk/lib/remote-tk.rb: add RemoteTkIp#has_mainwindow? method.
+
+ * ext/tk/lib/multi-tk.rb: slave IP fail to exit itself when $SAFE==4.
+
+ * ext/tk/lib/multi-tk.rb: remove constants from MultiTkIp module to
+ avoid access from external.
+
+ * ext/tk/lib/multi-tk.rb: check_root flag is ignored on slave IPs'
+ mainloop.
+
+ * ext/tk/lib/multi-tk.rb: hang-up Tk.mainloop called on a slave IP
+ with $SAFE==4.
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp#bg_eval_proc doesn't work
+ properly.
+
+ * ext/tk/lib/multi-tk.rb: add MultiTkIp#set_cb_error(proc) and
+ cb_error(exc) to log errors at callbacks on safe slave IPs.
+
+ * ext/tk/lib/multi-tk.rb: fail to get an available slave IP object
+ when call Tk.mainloop in the block which is given to new_* method,
+ because cannot finish initialize while the root widget is alive.
+
+ * ext/tk/lib/multi-tk.rb: fail to control a slave IP when Tk.mainloop
+ runs on the IP.
+
+Thu Jul 21 01:00:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c,utf8tbl.c,config.h}:
+ import 1.76
+ [ruby-dev:26592] nkf constification
+
+Wed Jul 20 19:18:52 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (S_ISREG): need to define S_ISREG before it is used first.
+
+Wed Jul 20 18:33:15 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * io.c (wsplit_p): patch for the environment where
+ fcntl(F_GETFL, O_NONBLOCK) is not supported. in that case,
+ set FMODE_WSPLIT without fcntl check. [ruby-dev:26566]
+
+Wed Jul 20 18:07:11 2005 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_ctl): update FMODE_WSPLIT_INITIALIZED and FMODE_WSPLIT
+ by F_SETFL.
+
+Wed Jul 20 10:04:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_class_path): need to adjust snprintf() len for
+ terminating NUL. [ruby-dev:26581]
+
+Wed Jul 20 03:58:52 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/socket/socket.c: sorry, BeOS also uses HAVE_CLOSESOCKET,
+ so reverted.
+
+ * ext/socket/extconf.rb: should not define HAVE_CLOSESOCKET
+ on windows.
+
+Wed Jul 20 03:12:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/socket/socket.c: should not undef close() on win32.
+ it's defined to rb_w32_close(), otherwise handle leaks.
+ [ruby-Bugs-2131]
+
+Wed Jul 20 00:48:16 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (syserr_initialize): don't use str before StringValue()
+ check. [ruby-dev:26579]
+
+Tue Jul 19 22:47:29 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (syserr_initialize): add 1 byte for snprintf() size for
+ NUL at the end. [ruby-dev:26574]
+
+Tue Jul 19 17:16:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (trap): remove sigexit(); handle "EXIT" via sig_exec().
+ [ruby-dev:26440]
+
+ * io.c (rb_io_inspect): replace sprintf() with "%s" format all
+ over the place by snprintf() to avoid integer overflow.
+
+Tue Jul 19 14:10:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c: rbtk_eventloop_depth is used as int.
+
+ * ext/tk/tcltklib.c: rbtk_pending_exception is tested with
+ NIL_P, so should assign Qnil instead of 0 (Qfalse).
+
+ * ext/tk/tcltklib.c (ip_invoke_real): fixed memory leak when
+ ip is deleted.
+
+Tue Jul 19 13:19:46 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: For symmetry, add TkVariable#string. It
+ returns a string even if the default value type of the TkVariable
+ object is not "string".
+
+Mon Jul 18 21:39:18 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * eval.c (rb_call0): make the pointer to NODE volatile
+ instead of NODE itself.
+
+Mon Jul 18 14:32:21 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_call0): make body volatile to avoid possible optimization
+ problem.
+ [ruby-dev:26195]
+
+Mon Jul 18 12:23:27 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/io/wait/wait.c: wrong backport from trunk, and compile error on
+ platforms fd_set is not a bit set. fixed: [ruby-dev:26562]
+
+Mon Jul 18 09:36:25 2005 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h (FMODE_WSPLIT, FMODE_WSPLIT_INITIALIZED): new constant.
+
+ * io.c (wsplit_p): new function.
+ (io_fflush): split writing data by PIPE_BUF if wsplit_p is true in
+ multi-threaded mode.
+ (io_fwrite): ditto.
+ [ruby-dev:26540]
+
+Mon Jul 18 05:00:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: import nkf.c 1.73
+ fix: TestKconv 1F
+
+Sun Jul 17 13:46:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/wait/extconf.rb, ext/io/wait/wait.c: Win32 platforms support.
+
+Sat Jul 16 23:43:16 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (Init_Enumerator): wrong argument specs.
+ [ruby-core:05481]
+
+Sat Jul 16 15:52:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.[hc]: constified socket functions. [ruby-dev:26553]
+
+Fri Jul 15 23:59:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_c.rb (handle_class_module): handle a
+ module enclosed in a built-in module. fixed: [ruby-talk:148239]
+
+ * lib/rdoc/parsers/parse_c.rb (find_body): allow macros as methods.
+
+ * lib/rdoc/parsers/parse_c.rb (find_call_seq): allow :nodoc: modifier
+ in C. [ruby-core:04572]
+
+Fri Jul 15 23:20:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (Init_Enumerator): use an internal directly.
+
+Fri Jul 15 07:58:10 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#accept_client):
+ sockets should be non-blocking mode. [ruby-dev:26405]
+
+ * lib/webrick/utils.rb (WEBrick::Utils.set_non_blocking): new method.
+
+Fri Jul 15 00:11:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enumeratorize): create new enumerator for current method if
+ no block is given.
+
+ * enumerator.c: moved from ext/enumerator.
+
+Thu Jul 14 18:27:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_strerror): should return correct message
+ for ENAMETOOLONG and ENOTEMPTY. (bcc32) [ruby-dev:26533]
+
+ * win32/win32.c (rb_w32_strerror): stripped CR LF on the tail.
+ (bcc32) [ruby-dev:26533]
+
+Thu Jul 14 00:45:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * LEGAL (ext/nkf/nkf-utf8): updated from nkf1.7 to nkf-utf8.
+
+Wed Jul 13 22:44:00 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y: remove static variables. [ruby-dev:26530]
+
+Wed Jul 13 19:36:29 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_mkdir): should set EEXIST (not EACCES)
+ if file or directory already exists. (bcc32) [ruby-dev:26508]
+
+ * win32/win32.c (rb_w32_rmdir): should set ENOTDIR (not EINVAL)
+ if it is not directory. (bcc32, win32)
+
+ * win32/win32.c (rb_w32_rmdir, rb_w32_unlink): restore
+ FILE_ATTRIBUTE_READONLY flag on function failure.
+
+Wed Jul 13 12:40:00 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: TclTkLib.do_one_event doesn't work.
+
+ * ext/tk/lib/tk.rb: Tk.thread_update is available.
+
+Tue Jul 12 23:32:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: keep curdir unexpanded.
+
+Mon Jul 11 23:50:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c, intern.h (rb_proc_call, rb_obj_method, rb_method_call):
+ export.
+
+ * ext/enumerator/enumerator.c (enumerator_with_index): [EXPERIMENTAL]
+ added a new method Enumerator#with_index. [ruby-talk:147728]
+
+Mon Jul 11 08:31:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (fetch_escaped_value): mask values following \c in
+ regexp. fixed: [ruby-dev:26500]
+
+Sun Jul 11 05:18:17 2005 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb (XMLRPC::Server): Switch from GServer over to
+ WEBrick. This makes file lib/xmlrpc/httpserver.rb obsolete (at least it is
+ no further used by the XML-RPC library).
+
+Mon Jul 11 02:50:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#request_line):
+ mistook to merge the patch of [ruby-dev:26235] at
+ revision 1.11.
+
+Sun Jul 10 23:58:04 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#unlink): try Dir.unlink first to
+ avoid unlink a directory by root.
+ cf. [ruby-dev:26237]
+
+Sun Jul 10 12:47:01 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/debug.rb (debug_command): added a deficient format specifier.
+ fixed: [ruby-core:05419]
+
+Sat Jul 9 22:02:37 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_method_dispid): convert dispid
+ in Ruby and C by INT2NUM and NUM2INT.
+
+ * ext/win32ole/win32ole.c (ole_invoke2): ditto.
+
+ * ext/win32ole/test/testWIN32OLE.rb: ditto.
+
+ * ext/win32ole/test/testOLEMETHOD.rb: ditto.
+
+Fri Jul 8 15:45:04 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.4 -> 0.1.5.
+
+ * test/rss/test_version.rb (RSS::TestVersion#test_version):
+ ditto.
+
+ * lib/rss/0.9.rb (RSS::Rss::Channel::Item::Category):
+ domain attribute of <category> is optional. Thanks to
+ Chris Lee <clee@kde.org>.
+
+ * test/rss/test_parser.rb (RSS::TestParser#test_category20):
+ adjusted test case.
+
+Wed Jul 6 18:45:53 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_pattern_match): now returns nil.
+ [ruby-core:05391]
+
+Mon Jul 4 14:35:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sample/svr.rb: service can be stopped by ill-behaved client; use
+ tsvr.rb instead.
+
+Mon Jul 4 13:25:21 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/erf.c: original erf.c by prof. Okumura is confirmed to
+ be public domain. reverted BSD implementation.
+
+Wed Jul 6 11:15:21 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (open_ifs_socket): new function.
+
+ * win32/win32.c (StartSockets, rb_w32_socket): use open_ifs_socket()
+ instead of socket().
+ all changes are derived from [ruby-core:5388].
+
+Wed Jul 6 00:15:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c,utf8tbl.c,config.h}:
+ imported nkf.c 1.70 (support UTF-8-MAC)
+
+ * ext/nkf/lib/kconv.rb: add :utf8mac and :internalunicode
+
+Tue Jul 5 23:44:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb: expand source library path.
+
+Tue Jul 5 23:27:14 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (sort_2): get rid of yet another bcc's bug.
+ fixed: [ruby-core:05152]
+
+ * eval.c (rb_thread_save_context): must not switch contexts during
+ re-allocating stack. fixed: [ruby-core:05219]
+
+Tue Jul 5 15:15:10 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil.c: fix typo.
+
+Tue Jul 5 14:52:56 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: bug fix on treating Unicode strings.
+
+ * ext/tk/tcltklib.c: add methods to treat encoding mode.
+
+ * ext/tk/MANUAL_tcltklib.eng: add description of TclTkLib#encoding,
+ encoding_system, and so on.
+
+ * ext/tk/MANUAL_tcltklib.eucj: ditto.
+
+ * ext/tk/tkutil/tkutil.c: fail to create a Tcl's list string from
+ an array including multiple kind of encoded strings.
+
+ * ext/tk/lib/tk.rb: ditto.
+
+ * ext/tk/lib/multi-tk.rb: 2nd arg of _{to|from}UTF8 is omissible.
+
+ * ext/tk/lib/remote-tk.rb: ditto.
+
+ * ext/tk/lib/tk.rb: override TclTkLib#encoding and encoding= to
+ use TkCore::INTERP.encoding and encoding=.
+
+ * ext/tk/lib/tk.rb: when "require 'tk'" and $KCODE=='NONE', check
+ DEFAULT_TK_ENCODING to decide Ruby/Tk's system encoding mode.
+
+ * ext/tk/lib/tk/encodedstr.rb: check both of Tk.encoding and
+ Tk.encoding_system. Tk.encoding has higher priority.
+
+ * ext/tk/lib/tk/optiondb.rb: ditto.
+
+ * ext/tk/lib/tk/spinbox.rb: ditto.
+
+ * ext/tk/lib/tk/validation.rb: ditto.
+
+ * ext/tk/lib/tk/namespace.rb: arguemnts for TclTkIp#_merge_tklist
+ should be UTF-8 strings.
+
+Mon Jul 4 19:29:32 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/set.rb: test change to follow revision 1.28. (duck typing?)
+
+Mon Jul 4 11:23:50 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/{dbm,gdbm,sdbm}/test_{dbm,gdbm,sdbm}.rb: skip some tests
+ which using fork on fork-less platforms.
+
+Sun Jul 3 23:26:30 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/wsdl/document/test_rpc.rb: compare formatted time string of
+ Time objects instead of comparing Time objects itself to avoid
+ unintended conflict of usec part. [ruby-dev:26220]
+
+Sat Jul 2 22:41:04 2005 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c (unix_send_io, unix_recv_io): support x86-64 and
+ IA64.
+
+Sat Jul 2 17:06:23 2005 Tanaka Akira <akr@m17n.org>
+
+ * defines.h (FLUSH_REGISTER_WINDOWS): defined for IA64.
+ (flush_register_windows): declare flush_register_windows.
+
+ * eval.c (flush_register_windows): new function.
+
+ * ruby.h (NOINLINE): move up to be effective in defines.h.
+
+Sat Jul 2 15:19:41 2005 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: check select_large_fdset.
+
+ * eval.c: use select_large_fdset to support large file descriptors
+ on Solaris. [ruby-dev:26404]
+
+Fri Jul 1 17:55:08 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_neg): may be accessing bogus pointer value.
+
+Fri Jul 1 15:50:12 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * missing/erf.c: need to include some headers for some platforms.
+
+ * win32/win32.h (copysign, scalb): define for compatibility with
+ other platforms. [ruby-dev:26430]
+
+Fri Jul 1 15:37:42 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/crypt.c: modified to make it compilable on platforms
+ other than BSD. [ruby-dev:26430]
+
+ * missing/erf.c: ditto. code from <exp.c> merged.
+
+Fri Jul 1 12:44:56 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_http): refine post_connection_check
+ call.
+
+Fri Jul 1 11:34:08 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/crypt.c: replaced with 4.4BSD version.
+
+ * missing/erf.c: ditto.
+
+ * missing/vsnprintf.c: removed the third provision from the old
+ BSD license. [ruby-core:05177]
+
+Fri Jul 1 01:45:21 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_min, enum_max): must not return Qundef.
+ fixed: [ruby-core:05299]
+
+Fri Jul 1 00:18:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator::respond_to): respond_to? must check
+ destination object. [ruby-talk:146894]
+
+Thu Jun 30 23:52:12 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (trap): non-string trap hander was ignored.
+ fixed: [ruby-dev:26417]
+
+Thu Jun 30 19:00:21 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex::identify_number): alternative implements
+ for [ruby-dev:26410]. And support a numeric form of 0d99999.
+
+Thu Jun 30 17:28:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex::identify_number): should not treat
+ plain zero as an octal number. [ruby-dev:26410]
+
+Thu Jun 30 15:13:16 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): pre-evaluate argument for unambiguous
+ evaluation order. [ruby-dev:26383]
+
+Thu Jun 30 14:48:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/http.rb (Net::HTTP#connect, Net::HTTP#request): should
+ not send proxy username and password to origin servers.
+ [ruby-dev:25673]
+
+ * lib/net/http.rb (Net::HTTP::ProxyDelta#edit_path): should not
+ send HTTPS scheme URL to origine servers. [ruby-dev:25689]
+
+Thu Jun 30 09:53:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator::method_missing): forward unknown
+ method to the destination. suggested by
+ <christophe.poucet@gmail.com>. [ruby-talk:146776]
+
+Wed Jun 29 00:03:20 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * regparse.c (fetch_token): avoid warning of unused goto tag.
+ [ruby-dev:26389]
+
+Tue Jun 28 21:59:29 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * dir.c, eval.c, parse.y, process.c, ruby.c: avoid warning "unused
+ variable" [ruby-dev:26387]
+
+ * dir.c (glob_helper): avoid warning "enumeration value `RECURSIVE'
+ not handled in switch" [ruby-dev:26392]
+
+Tue Jun 28 01:52:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb: add Kconv::VERSION
+ * ext/nkf/lib/kconv.rb (conv): can process arrayed options
+ * ext/nkf/nkf-utf8/nkf.c: imported Revision 1.69
+ * ext/nkf/nkf-utf8/utf8tbl.c: imported Revision 1.9
+
+Sat Jun 25 23:30:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (detach_process_watcher): terminate process watcher
+ thread right after rb_waitpid() succeed. [ruby-talk:146430]
+
+Sat Jun 25 17:12:20 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_query): should
+ discard if key=val pair is empty. patch from Gary Wright.
+
+Sat Jun 25 15:49:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_min, enum_max, enum_min_by, enum_max_by): do not ignore
+ nil as the first element.
+
+Sat Jun 25 15:13:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/set.rb (Set#==): [ruby-dev:25206] (ported from ruby_1_8 branch)
+
+Sat Jun 25 11:37:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb: remove constants
+ Iconv_Shift_JIS, Uconv_EUC_JP, Iconv_UTF8
+ * ext/nkf/lib/kconv.rb: add module functions to Kconv
+ conv, {eucjp, shiftjis, utf8}?, guess_as_symbol
+ * ext/nkf/lib/kconv.rb: add instance methods to String
+ conv, {eucjp, shiftjis, utf8}?
+ * ext/nkf/lib/kconv.rb: add aliases Kconv.to_* and String#to_*
+
+Fri Jun 24 17:00:00 2005 Shigeo Kobayashi <shigeo@tinyforest.jp>
+
+ * ext/bigdecimal/bigdecimal.c: patch from "NATORI Shin"
+ (u-tokyo.ac.jp) applied to fix rounding bug.
+
+Fri Jun 24 13:17:45 2005 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/common.rb, lib/uri/generic.rb: fixed typo in documents and
+ replaced some existent domain name with "example.com".
+
+Fri Jun 24 12:23:19 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fix typo on Tk.grid_propagate.
+
+ * ext/tk/lib/tk.rb: Tk.event_generate and TkWindow#event_generate
+ accept TkEvent::Event object as context argument.
+
+ * ext/tk/lib/tk/event.rb: add TkEvent::Event#valid_fields and
+ valid_for_generate to get field parameters of event_generate.
+
+Thu Jun 23 23:55:59 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: should load built rbconfig.rb.
+
+Thu Jun 23 16:53:15 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/canvastag.rb: TkcGroup.new cannot include given items.
+ TkcGroup#exclude calls wrong method.
+ Add alias TkcGroup#add [ruby-talk:146049].
+
+ * ext/tk/lib/tk/canvas.rb: TkCanvas#dtag and some subcommands of
+ TkCanvas#addtag fail to treat a TkcTag argument.
+
+ * ext/tk/lib/tk/event.rb: add TkEvent::Event#generate to help to send
+ current event to other widgets.
+
+Mon Jun 20 18:44:04 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): DUMMY_SETJMP is replaced
+ because setjmp is not enough to fix getcontext and SPARC register
+ window problem.
+
+Mon Jun 20 17:15:51 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_closed): new method DBM#closed?
+
+ * ext/gdbm/gdbm.c (fgdbm_closed): new method GDBM#closed?
+
+ * ext/sdbm/init.c (fsdbm_closed): new method SDBM#closed?
+
+ * test/dbm/test_dbm.rb, test/gdbm/test_gdbm.rb, test/sdbm/test_sdbm.rb
+ (teardown): close all db objects before deleting data files.
+
+ * win32/win32.{ch} (unlink): hook runtime function to change
+ file attribute before unlinking.
+ merge from 1.8, see [ruby-dev:26360]
+
+Mon Jun 20 02:15:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (define_final): document fix: finalizers never get called
+ before target object is destroyed.
+
+Mon Jun 20 01:26:49 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/openssl_missing.c, ext/openssl/ossl.h,
+ ext/openssl/ossl_asn1.c, ext/openssl/ossl_bio.c,
+ ext/openssl/ossl_pkcs12.h, ext/openssl/ossl_x509req.c: avoid
+ compiler warnings. suggested by Michal Rokos.
+
+Sun Jun 20 00:22:02 2005 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/utils.rb: Patch by Nobuhiro IMAI fixes the following
+ problem: Default value modification on
+ Module#public_instance_methods (false -> true) breaks
+ s.add_handler(XMLRPC::iPIMethods("sample"), MyHandler.new) style
+ security protection.
+
+ * lib/xmlrpc/client.rb: Aliased XMLRPC::Client#new2 as
+ XMLRPC::Client#new_from_uri, and #new3 as #new_from_hash.
+
+Sun Jun 19 14:09:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (run_final): reduce unnecessary object allocation during
+ finalization.
+
+ * gc.c (rb_gc_call_finalizer_at_exit): deferred finalizers list should
+ be cleared before calling them. fixed: [ruby-talk:145790]
+
+Sat Jun 18 01:15:36 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): do not set
+ rl_{in,out}stream.
+
+ * ext/readline/readline.c (readline_s_set_input): new method.
+
+ * ext/readline/readline.c (readline_s_set_output): new method.
+
+ * lib/irb/input-method.rb: set Readline.input and Readline.output.
+
+Fri Jun 17 13:01:40 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb (Time.parse): fix previous leap seconds support.
+ (Time.rfc2822): ditto.
+ (Time.xmlschema): ditto.
+
+Thu Jun 16 15:41:32 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (load_file): '!' is already read. reported by gotoyuzo.
+
+Thu Jun 16 15:09:38 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c (ip_rb_threadVwaitCommand): Tcl_Release
+ was missing.
+
+Thu Jun 16 13:34:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add Tk.getMultiple{Open|Save}File() which return
+ an Array of selected files.
+
+Thu Jun 16 12:53:24 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb (Time.parse): "Fri Jan 1 08:59:60 +0900 1999" was
+ parsed as "Fri Jan 01 09:00:00 JST 1999" even on an environment
+ which supports leap seconds.
+ (Time.rfc2822): ditto.
+ (Time.xmlschema): ditto.
+
+Thu Jun 16 00:13:41 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Resource#ttl): new attribute.
+ (Resolv::DNS::Resource#==): ignore @ttl.
+ (Resolv::DNS::Resource#hash): ditto.
+ (Resolv::DNS::Message::MessageDecoder#get_rr): save TTL in a
+ Resource object.
+ based on [ruby-core:5190] by Eric Hodel.
+
+Wed Jun 15 18:26:39 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: support "tk inactive" sub-command [for Tcl/Tk8.5a3]
+
+ * ext/tk/lib/tk/namespace.rb: support "namespace path" sub-command and
+ 'namespace ensemble' sub-command [for Tcl/Tk8.5a3]
+
+Tue Jun 14 02:02:43 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil/tkutil.c: add TkUtil::CallbackSubst.subst_arg(m, ...)
+ & _define_attribute_aliases(hash) to get substitution-argument from
+ attributes (e.g. subst_arg(:x,:y,:num,:button) --> "%x %y %b %b ").
+
+ * ext/tk/lib/tk/event.rb: use _define_attribute_aliases().
+
+Mon Jun 13 13:03:08 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * hash.c (ruby_setenv): fixed SEGV. [ruby-dev:26186]
+
+Mon Jun 13 01:54:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (sigexit): call rb_thread_signal_exit() instead of
+ rb_exit(). [ruby-dev:26347]
+
+ * eval.c (rb_thread_signal_exit): a new function to exit on main
+ thread.
+
+ * eval.c (rb_thread_switch): exit status should be retrieved from
+ ruby_errinfo.
+
+ * eval.c (rb_f_exit): ensure exit(0) should call
+ exit(EXIT_SUCCESS).
+
+Mon Jun 13 01:20:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_gc_mark_threads): curr_thread may not be part of the
+ thread list. [ruby-dev:26312]
+
+Sat Jun 11 22:34:44 2005 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: missing arg_paren event. This patch is contributed by
+ Mitchell N Charity.
+
+Fri Jun 10 23:55:17 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (unknown_node): show more information. [ruby-dev:26196]
+
+Fri Jun 10 23:35:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/mkdir.c: remove. [ruby-core:05177]
+
+Fri Jun 10 22:54:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing.h: fd_set stuffs need sys/types.h. fixed: [ruby-core:05179]
+
+Thu Jun 9 23:58:12 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/Win32API/Win32API.c (Win32API_Call): disable global
+ optimization. fixed: [ruby-core:05143]
+
+Thu Jun 9 23:35:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_inject): default the result value to Qundef to use
+ first element as initial value if not given.
+
+Thu Jun 9 19:55:41 2005 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (ruby_longjmp): new macro to call longjmp, setcontext, etc.
+ (ruby_setjmp): new macro to call setjmp, getcontext, etc.
+ (ruby_setjmp): call setjmp before getcontext to avoid IA64 register
+ stack problem.
+ [ruby-talk:144939]
+
+ * gc.c (Init_stack): remove IA64_MAGIC_STACK_LIMIT.
+
+Thu Jun 9 18:24:16 2005 Tanaka Akira <akr@m17n.org>
+
+ * configure.in, eval.c, gc.c: use libunwind only on HP-UX.
+ [ruby-dev:26297]
+
+Thu Jun 9 14:46:32 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_aset): do not treat nil as key-removing value.
+ [ruby-list:40865]
+
+ * parse.y (method_call): allow aref expression ([]) to take a
+ block.
+
+ * parse.y (block_dup_check): a function to check duplication of
+ a block argument and an actual block.
+
+Thu Jun 9 11:55:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (SimpleDelegator::__setobj__): need check for
+ recursive delegation. [ruby-core:04940]
+
+Thu Jun 9 11:50:43 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb: add underscore aliases CGI::escape_html,
+ CGI::unescape_html, CGI::escape_element, CGI::unescape_element.
+ [ruby-core:05058]
+
+Wed Jun 8 18:47:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg): fix looking point drift.
+
+Wed Jun 8 12:25:59 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_nitems): add the block feature to Array#nitems.
+ suggested by Bertram Scharpf <lists@bertram-scharpf.de> in
+ [ruby-talk:134083].
+
+Wed Jun 8 11:11:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (get2comp): revert all prior changes, and calculate
+ proper 2's complement for negative numbers.
+
+Wed Jun 8 08:33:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_min_by, enum_max_by): return nil if no iteration.
+ fixed: [ruby-dev:26245]
+
+ * eval.c (rb_need_block): ensure a block is given.
+
+ * eval.c (backtrace): skip successive frames sharing same node.
+
+Wed Jun 8 01:27:06 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (bignorm): fixed a bug in normalizing negative numbers
+ reported from Honda Hiroki <hhonda@ipflex.com>. normalizing
+ should not trim leading zeros from negative numbers.
+
+ * bignum.c (rb_cstr_to_inum): must remove leading zeros for this
+ case.
+
+Wed Jun 8 00:15:08 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_getaddrinfo__aix): merged a patch from
+ KUBO Takehiro <kubo at jiubao.org> to support AIX. [ruby-list:40832]
+
+Wed Jun 8 00:09:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb (Array::to_yaml): merged a patch from
+ Tilman Sauerbeck <tilman at code-monkey.de>. [ruby-core:05055]
+
+ * lib/yaml/rubytypes.rb (Hash::to_yaml): ditto.
+
+Wed Jun 8 00:00:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/curses/curses.c (curses_insertln): merged a patch from
+ TAKAHASHI Tamotsu <ttakah at lapis.plala.or.jp>. [ruby-ext:02305]
+
+Tue Jun 7 19:34:15 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/init.rb (IRB::IRB.rc_file_generators): more flexible
+ IRB.rc_file_generators. [ruby-core:05163]
+
+Tue Jun 7 18:39:31 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/thread.rb: RDoc documentation from Eric Hodel
+ <drbrain@segment7.net> added. [ruby-core:05148]
+
+Tue Jun 7 18:30:04 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): add .SUFFIXES from depend file.
+ fixed: [ruby-dev:26294]
+
+Tue Jun 7 17:20:39 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): allow ';;' to be block terminator in
+ place of 'end'. [highly experimental]
+
+ * misc/ruby-mode.el (ruby-block-end-re): allow ';;' to be a
+ negative indent trigger. [highly experimental]
+
+ * parse.y (parser_yylex): small error fixed.
+
+Tue Jun 7 16:45:49 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): "respond_to?:foo" should be interpreted
+ as "respond_to? :foo" at the command level. [ruby-talk:144303]
+
+Tue Jun 7 16:32:53 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): raise exception on debug mode (-d),
+ not verbose mode (-v/-w). [ruby-core:05123]
+
+ * sprintf.c (rb_f_sprintf): warn always on verbose mode.
+
+Tue Jun 7 10:30:49 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: slave-ip fails to call procedures
+ delegated by master-ip.
+
+Mon Jun 6 16:35:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/ripper/depend: add .y to .SUFFIXES for nmake.
+
+Sun Jun 5 23:00:35 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/console.rb: create console when required
+
+ * ext/tk/sample/tkextlib/tile/demo.rb: fix TypeError & create Console
+
+Sun Jun 5 10:23:52 2005 Tanaka Akira <akr@m17n.org>
+
+ * signal.c (ruby_signal): don't set SA_RESTART.
+ [ruby-dev:26276]
+
+Sat Jun 4 14:55:18 2005 Tanaka Akira <akr@m17n.org>
+
+ * test/dbm/test_dbm.rb: merged from ext/dbm/testdbm.rb.
+
+ * test/gdbm/test_gdbm.rb: merged from ext/gdbm/testgdbm.rb.
+
+ * test/sdbm/test_sdbm.rb: renamed from ext/sdbm/testsdbm.rb with
+ modification to use test/unit.
+
+Fri Jun 3 23:23:02 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (rb_fdset_t): deal with fd bit sets over FD_SETSIZE.
+ fixed: [ruby-dev:26187]
+
+ * eval.c (rb_fd_init, rb_fd_term, rb_fd_zero, rb_fd_set, rb_fd_clr,
+ rb_fd_isset, rb_fd_copy): ditto.
+
+ * io.c (rb_io_wait_readable, rb_io_wait_writable, rb_f_select): ditto.
+
+ * ext/io/wait/wait.c (io_wait): ditto.
+
+ * ext/socket/socket.c (wait_connectable, unix_recv_io): ditto.
+
+Fri Jun 3 14:06:12 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: fix typo.
+
+Thu Jun 2 23:42:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y: pragma support on ripper. [ruby-dev:26266]
+
+Thu Jun 2 00:02:16 2005 Minero Aoki <aamine@loveruby.net>
+
+ * struct.c: accessing >10 member caused segmentation fault.
+ [ruby-dev:26247]
+
+ * test/ruby/test_struct.rb: test it.
+
+Wed Jun 1 11:30:09 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: can use single quote character in DESTDIR.
+ [ruby-dev:26205]
+
+ * bcc32/Makefile.sub: Dir.glob in 1.9 doesn't treat \ as path separator.
+ [ruby-dev:26254]
+
+Wed Jun 1 00:11:06 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (method_call): new experiment: "(expr)(args...)" to
+ invoke "expr.call(args...)". [EXPERIMENTAL]
+
+Tue May 31 23:43:41 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (command): revert implicit "call" for local variables.
+
+Tue May 31 15:52:45 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should
+ break the loop if the socket reached to EOF. [ruby-talk:142285]
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): send response
+ without reading the whole request body if keep-alive is disabled.
+ [experimental]
+
+Mon May 30 23:48:29 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/macpkg.rb: add PACKAGE_NAME information of Tcl/Tk
+ Extension.
+
+ * ext/tk/lib/tk/msgcat.rb: ditto.
+
+ * ext/tk/lib/tk/winpkg.rb: ditto.
+
+ * ext/tk/lib/tkextlib/*: ditto.
+
+Sat May 28 16:39:21 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/openssl/test_x509store.rb: add test for expired CRL
+ and refine some assertions.
+
+Sat May 28 05:15:44 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_time): should
+ not set internal flag directory.
+
+Sat May 28 02:00:11 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#request_line):
+ ENV["REQUEST_URI"] is better to get correct Request-URI
+ than ENV["SCRIPT_NAME"] + ENV["PATH_INFO"]. [ruby-dev:26235]
+
+Fri May 27 16:32:04 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb: use the semicolon as the path separator
+ in the environment of MSYS. fixed: [ruby-dev:26232]
+
+Thu May 26 20:31:21 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_entry_secure): add documentation.
+
+ * lib/fileutils.rb (remove_entry_secure): should not invoke
+ unlink(2) against a directory.
+
+Thu May 26 08:29:19 2005 Akiyoshi, Masamichi <akiyoshi@hp.com>
+
+ * vms/vmsruby_private.c, vms/vmsruby_private.h: private routines
+ for VMS port are added.
+
+ * eval.c (ruby_init): change to call VMS private intialization routine.
+
+Thu May 26 07:39:07 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (rm_r): use lchown(2), not chown(2).
+ [ruby-dev:26226]
+
+ * lib/fileutils.rb (cd): remove :noop option. (feature change)
+
+ * lib/fileutils.rb (cp_r): should copy symlink as symlink, for
+ also tree root. (feature change)
+
+ * lib/fileutils.rb (cp_r): new option :dereference_root.
+
+ * lib/fileutils.rb: new method remove_entry.
+
+ * lib/fileutils.rb: new method remove_entry_secure.
+
+ * lib/fileutils.rb: add documentation.
+
+Thu May 26 06:08:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add shortcut-methods of tk_call + tk_split_list
+
+Wed May 25 20:06:27 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: TkComm#tk_split_*list fail to split a kind of SJIS
+ strings. To avoid the trouble, add arguments to control converting
+ encoding, and do split on a UTF8 string.
+
+ * ext/tk/lib/multi-tk.rb: modify to attend encoding.
+
+ * ext/tk/lib/remote-tk.rb: ditto.
+
+ * ext/tk/lib/tk/itemconfig.rb: ditto.
+
+ * ext/tk/lib/tk/listbox.rb: ditto.
+
+ * ext/tk/lib/tk/namespace.rb: ditto.
+
+ * ext/tk/lib/tk/panedwindow.rb: ditto.
+
+ * ext/tk/lib/tk/text.rb: ditto.
+
+ * ext/tk/lib/tk/textmark.rb: ditto.
+
+ * ext/tk/lib/tk/texttag.rb: ditto.
+
+ * ext/tk/lib/tk/variable.rb: ditto.
+
+ * ext/tk/lib/tk/winfo.rb: ditto.
+
+ * ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb: ditto.
+
+ * ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb: ditto.
+
+ * ext/tk/lib/tk.rb: add TkWindow#lower_window/raise_window and
+ Tk#lower_window/raise_window by reason of method-name conflict
+
+ * ext/tk/lib/tk/canvas.rb: bug fix on TkCanvas#delete when given
+ non-TkcItem arguments.
+
+ * ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb: ditto.
+
+Wed May 25 19:48:12 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (rm_r): does chown(2). [ruby-dev:26199]
+
+Wed May 25 12:59:48 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI::Meta::RE_QUOTED_STRING): a content of
+ quoted-string should be zero or more characters.
+
+Tue May 24 23:42:16 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (fix_pow): support Fixnum ** Float case directly
+ without coercing. [ruby-talk:142697] [ruby-talk:143054]
+
+Tue May 24 16:57:24 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.c (require_libraries): caused SEGV when continuation jumped
+ in to the required library code.
+
+Tue May 24 17:45:59 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/readline/test_readline.rb: do not test libedit.
+ fixed: [ruby-dev:26217]
+
+Tue May 24 06:45:31 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): string
+ literals to be matched non-greedy.
+
+Tue May 24 00:39:14 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/calc: method name 'set' was able to crash with a class Set.
+ [ruby-dev:26210]
+
+ * test/wsdl/document/test_rpc.rb: dateTime comparison failed under
+ TZ=right/Asia/Tokyo (with leap second.) [ruby-dev:26208]
+
+Mon May 23 16:23:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: Framework support on MacOS X Tiger.
+
+ * ext/tk/README.tcltklib: add description of Framework support options.
+
+Mon May 23 15:07:34 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub ($(PROGRAM)): add dependency on $(LIBRUBY_SO).
+ [experimental]
+
+Mon May 23 12:21:37 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (make_regexp): should not return junk address during
+ compile time. [ruby-dev:26206]
+
+Sun May 22 21:54:06 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/{soap,wsdl,xsd}, test/{soap,wsdl,xsd}: imported soap4r/1.5.4.
+
+ == SOAP client and server ==
+
+ === for both client side and server side ===
+
+ * improved document/literal service support.
+ style(rpc,document)/use(encoding, literal) combination are all
+ supported. for the detail about combination, see
+ test/soap/test_style.rb.
+
+ * let WSDLEncodedRegistry#soap2obj map SOAP/OM to Ruby according to
+ WSDL as well as obj2soap. closes #70.
+
+ * let SOAP::Mapping::Object handle XML attribute for doc/lit service.
+ you can set/get XML attribute via accessor methods which as a name
+ 'xmlattr_' prefixed (<foo name="bar"/> -> Foo#xmlattr_name).
+
+ === client side ===
+
+ * WSDLDriver capitalized name operation bug fixed. from
+ 1.5.3-ruby1.8.2, operation which has capitalized name (such as
+ KeywordSearchRequest in AWS) is defined as a method having
+ uncapitalized name. (converted with GenSupport.safemethodname
+ to handle operation name 'foo-bar'). it introduced serious
+ incompatibility; in the past, it was defined as a capitalized.
+ define capitalized method as well under that circumstance.
+
+ * added new factory interface 'WSDLDriverFactory#create_rpc_driver'
+ to create RPC::Driver, not WSDLDriver (RPC::Driver and WSDLDriver
+ are merged). 'WSDLDriverFactory#create_driver' still creates
+ WSDLDriver for compatibility but it warns that the method is
+ deprecated. please use create_rpc_driver instead of create_driver.
+
+ * allow to use an URI object as an endpoint_url even with net/http,
+ not http-access2.
+
+ === server side ===
+
+ * added mod_ruby support to SOAP::CGIStub. rename a CGI script
+ server.cgi to server.rb and let mod_ruby's RubyHandler handles the
+ script. CGIStub detects if it's running under mod_ruby environment
+ or not.
+
+ * added fcgi support to SOAP::CGIStub. see the sample at
+ sample/soap/calc/server.fcgi. (almost same as server.cgi but has
+ fcgi handler at the bottom.)
+
+ * allow to return a SOAPFault object to respond customized SOAP fault.
+
+ * added the interface 'generate_explicit_type' for server side
+ (CGIStub, HTTPServer). call 'self.generate_explicit_type = true'
+ if you want to return simplified XML even if it's rpc/encoded
+ service.
+
+ == WSDL ==
+
+ === WSDL definition ===
+
+ * improved XML Schema support such as extension, restriction,
+ simpleType, complexType + simpleContent, ref, length, import,
+ include.
+
+ * reduced "unknown element/attribute" warnings (warn only 1 time for
+ each QName).
+
+ * importing XSD file at schemaLocation with xsd:import.
+
+ === code generation from WSDL ===
+
+ * generator crashed when there's '-' in defined element/attribute
+ name.
+
+ * added ApacheMap WSDL definition.
+
+ * sample/{soap,wsdl}: removed.
+
+Sun May 22 19:11:35 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#intialize):
+ should initialize session id context. [ruby-core:4663]
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): add session id support.
+
+Sun May 22 12:30:58 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h, parse.y (ruby_pragma): removed. fixed: [ruby-dev:26198]
+
+ * parse.y (parser_pragma): pragma name was ignored.
+
+Sun May 22 02:39:57 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (rm_r): new option :secure to avoid
+ time-to-check-to-time-to-use security problem. [ruby-dev:26100]
+
+ * lib/fileutils.rb (remove_file, remove_dir): try chmod(700) only
+ on Windows.
+
+ * lib/fileutils.rb: does not depend on find.rb.
+
+ * lib/fileutils.rb: new method chmod_R.
+
+ * lib/fileutils.rb (chown_R): did not work.
+
+Sat May 21 10:23:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: tds files were not deleted when DESTDIR
+ included '\' path delimiter. [ruby-dev:26193]
+
+Fri May 20 15:52:18 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ return 2 items if completion_proc returns only 1 item (for libedit).
+
+Fri May 20 01:24:33 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/extconf.rb: check rl_vi_editing_mode() and
+ rl_emacs_editing_mode().
+
+Thu May 19 23:33:09 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c: supported libedit. fixed: [ruby-core:4858]
+
+ * ext/readline/extconf.rb: added new option --enable-libedit.
+
+ * test/readline/test_readline.rb: added assertions for
+ Readline::HISTORY.
+
+ * lib/irb/input-method.rb: do not use Readline::HISTORY.pop.
+
+Wed May 18 23:42:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exc_exception): reverted to call Exception#initialize
+ directly. fixed: [ruby-dev:26177]
+
+Wed May 18 17:38:51 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c (glob_helper): check whether path is "" before calling
+ do_opendir. [ruby-dev:26183]
+
+Wed May 18 13:40:48 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (NtInitialize): fix typo.
+
+Wed May 18 11:07:47 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): get rid of using String. [ruby-dev:26180]
+
+ * eval.c (ruby_options), win32/win32.c (NtInitialize): move argument
+ intialization back. [ruby-dev:26180]
+
+Tue May 17 11:49:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (unixtime_to_filetime): use localtime() instead of
+ gmtime() when using FileLocalTimeToFileTime().
+
+Mon May 16 22:42:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.h, {bcc32,win32,wince}/Makefile.sub: moved rb_[ugp]id_t
+ to get rid of redefinition warnings on mingw.
+
+ * class.c (rb_class_init_copy): singleton class is disallowed to copy,
+ from its definition. fixed: [ruby-talk:142749]
+
+ * parse.y (pragma_encoding): add prototype to suppress false warning
+ by VC.
+
+ * process.c (proc_spawn_v): use rb_w32_aspawn on Win32.
+
+Mon May 16 03:29:01 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.{h,c}: define rb_[pgu]id_t.
+
+Mon May 16 00:21:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#unlink): use SystemCallError instead of
+ Errno::EISDIR because EISDIR is not portable.
+ [ruby-core:5001]
+
+Sun May 15 22:28:10 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRbObject#method_missing): use raise(exception).
+ [ruby-dev:26164]
+
+Sun May 15 18:56:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, ruby.h: define rb_[pgu]id_t macros instead of typedefs
+ to get rid of types which might not be defined yet. [ruby-dev:26165]
+
+Sun May 15 14:35:46 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#unlink): unlink a symlink to a directory
+ was failed. [ruby-core:4992]
+
+Sun May 15 09:57:30 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (unixtime_to_filetime): deal with DST.
+ [ruby-talk:141817]
+
+Sat May 14 23:59:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exc_exception, {exit,name_err,syserr}_initialize): call
+ Execption#initialize. fixed: [ruby-talk:142593]
+
+Sat May 14 23:56:41 2005 Erik Huelsmann <ehuels@gmail.com>
+
+ * configure.in: Check for the availability of pid_t, gid_t and uid_t and
+ remove AC_TYPE_UID_T. fixed: [ruby-core:04745]
+
+ * defines.h: Remove pid_t typedef.
+
+ * ruby.h: Define rb_pid_t, rb_gid_t and rb_uid_t in accordance with
+ the available system types.
+
+ * process.c: Change instances of pid_t and gid_t to their rb_*
+ counterparts.
+
+ * ext/pty/pty.c: Change pid_t to rb_pid_t.
+
+ * vms/config.h: Define HAVE_{P,G,U}ID_T to 1.
+
+ * win32/Makefile.sub: Remove #define for {g,u}id_t.
+
+ * win32/win32.c: Change pid_t to rb_pid_t.
+
+ * wince/Makefile.sub: Remove #define for {g,u}id_t.
+
+ * wince/sys/types.h: Remove definitions of {p,g,u}id_t.
+
+Sat May 14 11:47:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (ruby_pragma): prototype. [ruby-core:04881]
+
+ * parse.y (parser_pragma): parse Emacsen hack.
+
+ * parse.y (parser_prepare): deal with specific syntax at the top.
+
+ * ruby.c (load_file): read the first line iff it started with shebang.
+
+Fri May 13 23:44:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: keep srcdir unexpanded.
+
+ * lib/mkmf.rb (create_makefile): quote topdir and hdrdir if necessary.
+ fixed: [ruby-core:04932]
+
+ * lib/mkmf.rb (configuration), {bcc32,win32,wince}/Makefile.sub: make
+ also INSTALL_PROG and INSTALL_DATA system dependent.
+ fixed: [ruby-core:04931]
+
+Fri May 13 23:32:55 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (unknown_node): add volatile directive to prototype.
+
+Fri May 13 17:50:49 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * variable.c (generic_ivar_get): rb_attr_get should not warn.
+ [ruby-dev:26010]
+
+Thu May 12 17:41:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 2.0.5
+
+Thu May 12 16:50:40 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/rdoc/parsers/parse_c.rb: more readability for mixing
+ progress "c..." and warning message.
+
+Thu May 12 15:50:56 2005 Tilman Sauerbeck <tilman@code-monkey.de>
+
+ * lib/rdoc/parsers/parse_c.rb: show parsing progress for C files.
+ [ruby-core:4341]
+
+Thu May 12 09:53:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.c (ruby_show_version): flush for non-tty stdout.
+
+Thu May 12 01:23:55 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (unknown_node): ignore broken NODE to get rid of accessing
+ possibly inaccessible address. fixed: [ruby-dev:26122]
+ should emit more useful information like [ruby-dev:26126], though.
+
+Wed May 11 15:58:39 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (break_jump): break should not cross functions.
+ [ruby-list:40818]
+
+Wed May 11 10:41:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/tempfile.rb (Tempfile#unlink): fixed typo.
+
+Wed May 11 01:03:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (TMP_ALLOC): use macro NEW_NODE() to get rid of warnings on
+ platforms which have no alloca(). fixed: [ruby-talk:141301]
+
+Sun May 8 23:17:47 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb: fix typo.
+
+Sun May 8 21:00:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * hash.c (Init_Hash): remove custom "hash" and "eql?".
+ (ported from 1.8) [ruby-dev:26132]
+
+Sun May 8 16:50:25 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/profiler.rb: fixed "undefined method `[]' for nil:NilClass"
+ [ruby-core:4775] [ruby-talk:140401] [ruby-dev:26118]
+
+Sat May 7 22:58:00 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_var): no libs argument is given.
+
+Fri May 6 08:08:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c:rb_hash_hash_i() should be static. [ruby-core:04815]
+
+ * re.c should include regint.h for declarations of oniguruma
+ functions. [ruby-core:04815]
+
+Sun May 1 09:15:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (process_sflag): replace '-' in variable names with '_'.
+ [ruby-dev:26107]
+
+ * eval.c (rb_eval), parse.y (arg): reduce fixnum range literal at
+ parser. fixed: [ruby-dev:26113]
+
+Sat Apr 30 11:59:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_FUNC_ATTRIBUTE): check for function attribute.
+ [ruby-dev:26109]
+
+ * eval.c, gc.c: moved noinline to configure.in.
+
+ * rubyio.h (DEPRECATED): moved to configure.in.
+
+ * ruby.h (DEPRECATED, NOINLINE): default definition.
+
+ * win{32,ce}/Makefile.sub (config.h): deprecated and noinline for
+ __declspec() are available for VC++7 or later.
+
+Sat Apr 30 06:57:39 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb: new methods WEBrick::CGI#[], WEBrick::CGI#logger
+ and WEBrick::CGI#config. these are necessary to use an instance of
+ WEBrick::CGI as the first argument of HTTPServlet#get_instance.
+ (suggested by Tatsuki Sugiura)
+
+ * lib/webrick/cgi.rb
+ (WEBrick::CGI#initalize): set a dummy to @config[:ServerSoftware]
+ if SERVER_SOFTWARE environment variable is not given.
+ (WEBrick::CGI#start): req.path_info must be a String.
+ (WEBrick::CGI::Socket#request_line): treat REQUEST_METHOD, PATH_INFO
+ and SCRIPT_NAME to run in console.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.escape_path): should
+ not use String#split("/"). it removes trailing empty path component.
+
+Thu Apr 28 08:21:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (set_arg0): use also environment variable space for setting
+ $0. [ruby-core:04774]
+
+Wed Apr 27 23:42:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (OPTFLAGS): default global optimization to
+ disabled only for VC++6.
+
+Tue Apr 26 22:58:00 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_invoke_core): call Tcl's "::unknown"
+ command when can't get information of target command.
+
+Mon Apr 25 13:54:55 2005 speakillof <speakillof@yahoo.co.jp>
+
+ * lib/rexml/encodings/SHIFT-JIS.rb: encoding and decoding were
+ swapped. [ruby-core:4772]
+
+Mon Apr 25 01:18:43 2005 Tanaka Akira <akr@m17n.org>
+
+ * oniguruma.h (OnigWarnFunc): add a variadic argument.
+ [ruby-core:4751]
+
+Sat Apr 23 19:49:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c (ip_RubyExitCommand): exit with status code
+ via TclTkIp#_eval didn't work. [ruby-talk:139390]
+
+Sat Apr 23 11:45:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_provided): should check also path name to be loaded.
+ fixed: [ruby-dev:26093]
+
+Fri Apr 22 16:55:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tcltklib.c (ip_set_exc_message): fixed memory leak.
+
+ * ext/tk/tcltklib.c: eTkCallbackReturn was not initialized.
+
+Thu Apr 21 06:45:28 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (ruby_incpush_expand, proc_options): expand relative path
+ given with -I option. [ruby-dev:26090]
+
+ * configure.in, lib/mkmf.rb, {bcc32,win32,wince}/Makefile.sub: improve
+ C++ support. [ruby-dev:26089]
+
+Thu Apr 21 01:53:09 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: add rdoc.
+
+Thu Apr 21 00:07:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): support platforms have file separator
+ other than /.
+
+ * {bcc32,win32,wince}/Makefile.sub (BUILD_FILE_SEPARATOR): separator
+ of building platform.
+
+ * {bcc32,win32,wince}/Makefile.sub (CP, INSTALL): use COPY command.
+
+Wed Apr 20 23:22:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk: miniruby depends on MINIOBJS.
+
+ * dmydln.c (dln_load): dummy function to raise LoadError.
+
+ * cygwin/GNUmakefile.in, {bcc32,win32,wince}/Makefile.sub: miniruby
+ can't load extensions on Windows.
+
+Wed Apr 20 23:01:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/ifchange.bat: delete testing files.
+
+Wed Apr 20 22:54:54 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: new method Net::HTTP.post_form.
+
+ * lib/net/http.rb: new method Net::HTTPHeader#set_form_data and
+ its alias #form_data=.
+
+ * lib/net/http.rb: Net::HTTPHeader#add_header -> add_field
+ (adjustted to Ruby 1.8).
+
+Wed Apr 20 10:53:30 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_rb.rb (lex_init): use IRB module.
+ [ruby-core:04737]
+
+Wed Apr 20 07:27:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc32,win32,wince}/configure.bat, {bcc32,win32,wince}/setup.mak:
+ add extout option.
+
+ * bcc32/setup.mak: make configuration variables overridable.
+
+Tue Apr 19 23:37:09 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftools.rb (File.safe_unlink): do not modify a symlinked file.
+
+Tue Apr 19 23:02:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (search_required): deal with features with path too.
+
+ * intern.h (rb_file_expand_path): prototype. fixed: [ruby-dev:26082]
+
+Tue Apr 19 08:38:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (search_required, rb_require_safe): expand path in
+ rb_features. [ruby-dev:26079]
+
+ * file.c (rb_find_file_ext): return absolute path.
+
+ * ext/extmk.rb: expand path for ext/**/extconf.rb.
+
+ * eval.c (search_required): handle static linked extensions.
+
+Mon Apr 18 15:37:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_attr): attribute name check added.
+
+ * numeric.c (flo_plus): small typo fix.
+
+Mon Apr 18 11:25:14 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/zlib/zlib.c (zstream_run): fixed SEGV. [ruby-core:4712]
+
+Sun Apr 17 23:57:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake, parse_args): do not expand destdir.
+
+ * ext/extmk.rb (relative_from): treat mere drive letter as an absolute
+ path.
+
+Sat Apr 16 17:01:16 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb (rss_recent_cache_rss):
+ use the first date information of items as site date information
+ if channel doesn't have date information.
+
+Sat Apr 16 15:27:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_PROG_INSTALL): not add -p option to INSTALL.
+ files need timestamps to be kept are only ar-archive on a few
+ platforms, and be installed by instruby.rb but not INSTALL.
+ fixed: [ruby-core:04721]
+
+ * mkconfig.rb: purge autoconf value variables.
+
+Sat Apr 16 10:33:48 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: quick hack... prepend DESTDIR.
+ still have restriction on DESTDIR ("", "/", "e:")
+
+Sat Apr 16 03:59:42 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: check for OPENSSL_cleanse.
+
+ * ext/openssl/openssl_missing.h: ditto.
+
+Fri Apr 15 22:40:19 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/tests/testWIN32OLE.rb: add test for WIN32OLE.codepage=
+
+ * ext/win32ole/tests/testOLETYPELIB.rb: correct expected message.
+
+Fri Apr 15 22:04:07 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(ole_invoke): retry after converting Qnil
+ to VT_EMPTY.
+
+Thu Apr 14 19:05:06 2005 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper] (regexp): dispatch regexp option.
+ [ruby-Bugs:1688]
+
+ * ext/ripper/lib/core.rb: regenerated (interface changed).
+
+Thu Apr 14 18:59:43 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_file): ignore exceptions caused by
+ chmod.
+
+ * lib/fileutils.rb (remove_dir): try to get rights to rmdir.
+ [ruby-Bugs:1502]
+
+Thu Apr 14 18:51:02 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb, lib/irb/slex.rb: bug fix of [ruby-Bugs-1745]
+
+ * lib/irb/ext/loader.rb, lib/irb/ext/save-history.rb:
+ fix location of @RCS_ID
+
+ * lib/irb/cmd/help.rb: a lost of release IRB 0.9.5.
+
+Thu Apr 14 15:10:30 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/irb/notifier.rb, lib/irb/output-method.rb, lib/irb/ext/history.rb
+ fixed warning of 'ruby -w'
+
+Thu Apr 14 05:35:45 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * doc/irb/irb.rd.ja: a lost of release IRB 0.9.5.
+
+ * lib/irb/slex.rb: bug fix by [ruby-core:04707].
+
+Thu Apr 14 00:20:31 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * bin/irb lib/irb.rb lib/irb/...: IRB 0.9.5.
+
+Wed Apr 13 23:40:21 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.3 -> 0.1.4.
+
+ * lib/rss/rss.rb (RSS::Element#converter): fixed converter
+ transmission bug.
+
+Wed Apr 13 22:12:16 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#order!): call handlers iff matches
+ non-switch.
+
+Wed Apr 13 21:20:35 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (mingw32): extract msvcr*.dll from objdump result.
+
+Wed Apr 13 19:25:31 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (mingw32): use actual runtime DLL name as ruby DLL
+ name and default load path.
+
+ * win32/Makefile.sub, win32/setup.mak: ditto.
+
+Tue Apr 12 19:30:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#make_switch, OptionParser#order!):
+ added non-option and end-of-args handler. [ruby-talk:136878]
+ [EXPERIMENTAL]
+
+Tue Apr 12 15:33:09 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_finalize): better modification than the
+ previous commit [ruby-dev:26029].
+
+Tue Apr 12 12:38:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_finalize): fix SEGV when Tcl_GlobalEval()
+ modifies the argument string to eval.
+
+Tue Apr 12 02:21:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_finalize): add existence check of
+ Tcl commands before calling Tcl_GlobalEval().
+
+Mon Apr 11 23:36:04 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: [druby-ja:123] fix: When reference of my object is
+ loaded, the object is tainted.
+
+ * test/drb/test_drb.rb: ditto.
+
+Mon Apr 11 22:18:23 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dir.c, file.c (lstat): avoid warnings for mingw.
+
+Mon Apr 11 20:11:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (ip_finalize): adhoc patch to avoid SEGV when exit
+ on Tcl/Tk8.3.x.
+
+Mon Apr 11 15:24:20 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): shouldn't output hdrdir twice.
+
+Sat Apr 9 18:20:31 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/image.rb: support to create TkImage object without
+ creating a new image object on Tk.
+
+ * ext/tk/lib/tk/menu.rb: use TkCommandNames on create_self()
+
+ * ext/tk/lib/tk/root.rb: TkRoot.to_eval() returns '.'.
+
+ * ext/tk/lib/tk/text.rb: add methods to create a TkText::IndexString
+ from (x, y) coords.
+
+ * ext/tk/lib/tkextlib/tile/: add demo and update support status.
+
+Sat Apr 9 14:42:29 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb: supported configuration
+ via Web browser.
+
+Fri Apr 8 20:17:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): hdrdir needs to be defined also in
+ Config::CONFIG.
+
+ * lib/mkmf.rb (configuration, create_makefile): get rid of recursive
+ macro reference.
+
+Fri Apr 8 01:55:20 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/demos-{en,jp}/goldberg.rb: reduced window size.
+ [ruby-dev:25992]
+
+Thu Apr 7 23:58:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): keep directory names in Makefile as macros.
+
+ * lib/mkmf.rb (configuration, create_makefile): ditto.
+
+ * lib/mkmf.rb (CXX_EXT): separate C++ extensions.
+
+Thu Apr 7 17:24:17 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_call0): "return" event hook should be always executed
+ if event_hooks is set.
+
+Thu Apr 7 14:33:09 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_maker_dc.rb (test_date): added a test for #date=
+ and #dc_date=.
+
+Thu Apr 7 11:49:53 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/dublincore.rb: _really_ supported multiple Dublin
+ Core items.
+
+ * test/rss/rss-assertions.rb (assert_multiple_dublin_core): added
+ an assertion for testing multiple Dublin Core items.
+
+ * test/rss/test_maker_dc.rb (test_rss10_multiple): added a test
+ for making multiple Dublin Core items.
+
+Wed Apr 6 16:06:30 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_env.rb (test_key): should test ENV.key instead of
+ ENV.index. [ruby-dev:25994]
+
+Tue Apr 5 16:01:12 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/*: refactored.
+ - gave a name to 'x'.
+ - undef_method -> remove_method for avoiding a warning in ruby 1.6.
+
+Tue Apr 5 15:45:33 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb:
+ new option: @options['rss-recent.use-image-link']:
+ use image as link instread of text if available.
+
+ * sample/rss/tdiary_plugin/rss-recent.rb (RSS_RECENT_VERSION):
+ 0.0.5 -> 0.0.6.
+
+Tue Apr 5 15:15:26 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/dublincore.rb: supported multiple Dublin Core items.
+
+ * lib/rss/parser.rb: added class name registry for complex model
+ elements. (ex. have childlen elements, have some attributes and
+ a child element and so on.)
+
+ * lib/rss/maker/base.rb: added default current_element implementation.
+
+ * lib/rss/maker/dublincore.rb: supported multiple Dublin Core
+ items.
+
+ * lib/rss/maker/image.rb: supproted new Dublin Core API.
+
+ * lib/rss/trackback.rb (RSS::TrackBackUtils.new_with_value_if_need):
+ moved to RSS::Utils.
+
+ * lib/rss/utils.rb (RSS::Utils.new_with_value_if_need):
+ moved from RSS::TrackBackUtils.
+
+ * lib/rss/maker/image.rb: fixed invalid argument of
+ add_need_initialize_variable bug.
+
+ * lib/rss/maker/trackback.rb: ditto.
+
+ * lib/rss/rss.rb (Hash#merge): added for ruby 1.6.
+
+ * lib/rss/rss.rb (RSS::BaseModel.date_writer): changed to accept nil
+ for date value.
+
+ * test/test_dublincore.rb: added tests for plural accessor and
+ multiple Dublin Core items.
+
+ * test/test_setup_maker_1.0.rb: fixed swapped actual and expected
+ values.
+
+Mon Apr 4 23:17:52 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb (TkComm#array2tk_list): accept enc-mode argument to
+ decide whether convert encoding of each element or not.
+
+ * ext/tk/lib/tk/variable.rb (TkVariable#value=): fail to convert the
+ encoding of array elements when assign an array to an TkVariable
+ object.
+
+Mon Apr 4 10:26:48 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/lib/tk/dialog.rb: fixed typo.
+
+Sat Apr 2 23:38:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (CP, INSTALL): get rid of less portable options.
+
+ * lib/mkmf.rb (configuration, create_makefile): correct configuration
+ variable.
+
+ * wince/configure.bat, wince/setup.mak: add prefix, extstatic and
+ rdoc options.
+
+ * lib/mkmf.rb (create_makefile): ensure library directories get made
+ before copying libraries there.
+
+Sat Apr 2 16:59:46 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: forgot to update RELEASE_DATE
+
+ * ext/tk/lib/tk/variable.rb: fix namespace trouble when autoloading
+
+ * ext/tk/lib/tk/palette.rb: define Tcl variable 'tkPalette' as global
+
+ * ext/tk/lib/tk/dialog.rb: use array2tk_list method when calling
+ Tk.ip_eval.
+
+ * ext/tk/lib/tk/autoload.rb: add autoload entry 'TkDialogObj' and
+ 'TkWarningObj'
+
+Sat Apr 2 13:23:17 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * hash.c (env_key): ENV.index is deprecated as well as Hash#index.
+ use ENV.key instead. [ruby-dev:25974]
+
+Sat Apr 2 02:19:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb (TkWindow.initialize): accept 'without_creating'
+ option without 'widgetname' option to allow creating a widget object
+ which is used as an argument of Tcl/Tk's widget allocation commands.
+
+ * ext/tk/lib/tk/image.rb (TkImage.initialize): accept 'imagename'
+ option to create a image object by the given name.
+
+Thu Mar 31 22:23:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (SRC_EXT): exclude just case different suffixes on case
+ insensitive file system platforms.
+
+ * README.EXT, README.EXT.ja (Appendix C): utility functions.
+
+Thu Mar 31 14:08:43 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_load): should return
+ value. [ruby-dev:25971]
+
+Thu Mar 31 11:07:50 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb: @@setter -> @@setters.
+
+ * lib/rss/parser.rb
+ (RSS::BaseListener.register_uri)
+ (RSS::BaseListener.uri_registered?)
+ (RSS::BaseListener.install_get_text_element):
+ swapped the first argument and the second argument.
+
+ * lib/rss/taxonomy.rb: swapped the first argument and the second
+ argument for RSS::BaseListener.install_get_text_element.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/syndication.rb: ditto.
+ * lib/rss/dublincore.rb: ditto.
+ * lib/rss/parser.rb: ditto.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/0.9.rb: ditto.
+ * lib/rss/content.rb: ditto.
+
+Thu Mar 31 11:00:36 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb
+ (RSS::BaseListener.install_setter)
+ (RSS::BaseListener.register_uri): changed fallback way.
+
+Thu Mar 31 08:25:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUBYOPT): clear for the environment RubyGems installed.
+
+ * common.mk (clean-local): keep $(PREP) files till distclean.
+
+ * common.mk (check): do all tests.
+
+Thu Mar 31 06:00:20 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_engine.c (ossl_engine_s_load): should not raise
+ error even if the specified engine could not be loaded. (Dynamic
+ engines don't have fixed name to load.)
+
+Wed Mar 30 17:41:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: add TclTkIp#_create_console() method to create
+ a Tcl/Tk's console window.
+
+ * ext/tk/lib/multi-tk.rb: support TclTkIp#_create_console() method.
+
+ * ext/tk/lib/remote-tk.rb: ditto.
+
+ * ext/tk/lib/tk/console.rb: ditto.
+
+ * ext/tk/lib/tk.rb: update RELEASE_DATE
+
+ * ext/tk/sample/demo-*/check2.rb: use 'return' in the Proc object.
+
+ * ext/tk/sample/tkextlib/**: ditto.
+
+Tue Mar 29 22:20:49 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: use DRbObject.new_with instead of reinit.
+ [ruby-dev:25961]
+
+Tue Mar 29 00:04:57 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: move method DRbObject#reinit to DRbObject.new_with.
+ extract method DRbObject.prepare_backtrace. add DRb.regist_server,
+ remove_server, fetch_server. change server in thread variable if
+ in-proc server. [druby-ja:113]
+
+ * lib/drb/gw.rb: ditto.
+
+Mon Mar 28 20:53:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): nothing to be removed when no file
+ was deleted.
+
+ * ext/extmk.rb (extmake): restore srcdir.
+
+Mon Mar 28 08:39:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_create): Iconv::Failure requires 3
+ arguments. (pointed out by NaHi)
+
+Sun Mar 27 00:56:58 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_file): ignore Errno::E* if force option
+ is set. [ruby-dev:25944]
+
+Sat Mar 26 22:51:33 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb (_callback_entry_class?): add for checking whether
+ a class is available for a callback entry.
+
+ * ext/tk/lib/tk.rb (after_cancel): add Tk.after_cancel(afterID) method.
+
+ * ext/tk/lib/tk.rb (array2tk_list): change from private module method
+ of TkComm to public module method.
+
+ * ext/tk/lib/tk.rb (cget): add check that slot argument is not
+ empty string.
+
+ * ext/tk/lib/tk.rb (configinfo): ditto.
+
+ * ext/tk/lib/tk/itemconfig.rb (itemcget): add check that slot argument
+ is not empty string.
+
+ * ext/tk/lib/tk/itemconfig.rb (itemconfiginfo): ditto.
+
+ * ext/tk/lib/tk/entry.rb: add TkEntry#icursor and icursor= (alias of
+ cursor and cursor= method).
+
+ * ext/tk/lib/tk/font.rb: improve font treatment when the font name is
+ empty string.
+
+ * ext/tk/lib/tk/variable.rb: add :variable, :window and :procedure
+ type.
+
+ * ext/tk/lib/tk/variable.rb: improve treatment of array-type
+ tkvariable.
+
+ * ext/tk/lib/tkextlib/blt.rb: add commands for zooming.
+
+ * ext/tk/lib/tkextlib/blt/*: bug fix.
+
+ * ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: bug fix and add methods
+ to call TreeCtrl commands for bindings.
+
+ * ext/tk/sample/tkextlib/blt/*: new sample scripts.
+
+ * ext/tk/sample/tkextlib/treectrl/*: ditto.
+
+Fri Mar 25 10:53:16 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (WIN32_LEAN_AND_MEAN): removed because a lot of
+ troubles. [ruby-list:40721]
+
+Thu Mar 24 23:10:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (macro_defined?): try to compile for an old compiler
+ which doesn't bail out at #error directive. [ruby-dev:25818]
+
+ * lib/mkmf.rb (check_sizeof): refine logging messages.
+
+Wed Mar 23 19:08:10 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/utils.rb (WEBrick::Utils.create_listeners):
+ - should raise ArgumentError if no port is specified.
+ - even if the specified port is 0, all TCPServers should be
+ initialized with the port given to the first one.
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#initialize): if :Port
+ parameter is 0, it should be updated with the port number which
+ ectually listened.
+
+Wed Mar 23 16:12:40 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * parse.y (primary): fix lineno of rescue and ensure.
+
+Wed Mar 23 00:39:05 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb (test_event): added tests for
+ "class" and "end" and "raise".
+
+Sun Mar 20 22:51:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (mkmf_failed): check if Makefile is created without
+ create_makefile.
+
+Sat Mar 19 23:48:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg): returned true always.
+ fixed: [ruby-list:40683]
+
+Sat Mar 19 00:41:02 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/font.rb: add some TkFont class methods to get font
+ information without creating a TkFont object.
+
+ * ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: bug fix and define some
+ classes for components of Tk::TreeCtrl
+
+Thu Mar 17 17:42:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (make_struct): allow non local-id field
+ names. [ruby-core:04575]
+
+ * struct.c (inspect_struct): ditto.
+
+Wed Mar 16 23:39:13 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb: added test for c-return.
+
+Wed Mar 16 22:57:43 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_call0): call_cfunc() should be protected.
+
+ * eval.c (rb_add_event_hook): use K&R style.
+
+ * eval.c (rb_remove_event_hook): ditto.
+
+Wed Mar 16 22:03:15 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_add_event_hook): new function to add a hook function for
+ interpreter events.
+
+Wed Mar 16 18:08:32 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): reorganize "return" event post.
+
+ * eval.c (return_jump): no need to post "return" event here.
+
+Tue Mar 15 23:49:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (Init_iconv): InvalidEncoding also should include
+ Iconv::Failure.
+
+Tue Mar 15 23:12:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (recursive_check, recursive_push): more restrictive check.
+ fixed: [ruby-dev:25916]
+
+Tue Mar 15 16:38:31 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil/tkutil.c (ary2list): give wrong arguments to hash2kv()
+
+Mon Mar 14 19:39:33 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb (TkTimer): forgot to clear @return_value
+ when restarting
+
+ * ext/tk/lib/tk/sample/cd_timer.rb: new sample of TkRTTimer
+
+Mon Mar 14 12:21:03 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb (TkRTTimer): forgot to reset the callback
+ time. So, 'continue' do all callbacks between 'stop' and 'continue'.
+
+Mon Mar 14 08:14:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (str_to_id): raise ArgumentError for NUL containing
+ strings.
+
+Mon Mar 14 00:13:49 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb (TkRTTimer): correct calculation of offset
+ value. get a little better accuracy.
+
+ * ext/tk/sample/demos-en/widget: use a binding with no local variables
+ when eval a sample script.
+
+ * ext/tk/sample/demos-en/bind.rb: ditto.
+
+ * ext/tk/sample/demos-en/tcolor: ditto.
+
+ * ext/tk/sample/demos-jp/widget: ditto.
+
+ * ext/tk/sample/demos-jp/bind.rb: ditto.
+
+ * ext/tk/sample/demos-jp/tcolor: ditto.
+
+Sun Mar 13 22:19:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (recursive_pop): raise TypeError instead of fatal error.
+ fixed: [ruby-dev:25843]
+
+Sun Mar 13 10:09:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: remove test_gc. [ruby-dev:25871]
+
+Sun Mar 13 02:32:54 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): should get DH
+ parameter from the current SSL object.
+
+Sun Mar 13 02:09:03 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey_dh.c (ossl_create_dh): fix typo.
+ patch from IWATSUKI Hiroyuki. [ruby-dev:25867]
+
+ * ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto.
+ (ossl_call_tmp_dh_callback): ditto
+
+Fri Mar 11 03:24:59 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): wrong var node was set for NODE_LAMBDA.
+ [ruby-core:04555]
+
+Thu Mar 10 19:10:29 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (lib_eventloop_ensure): mis-delete a timer handler
+ when exit from a recursive called eventloop
+
+ * ext/tk/lib/tk/timer.rb: new TkRTTimer class, which can works for a
+ realtime operation
+
+ * ext/tk/sample/tkrttimer.rb: sample of TkRTTimer class
+
+ * ext/tk/lib/tk/textmark.rb: move TkTextMark#+ and TkTextMark#- to
+ TkText::IndexModMethods
+
+ * ext/tk/lib/tk/text.rb: improve TkTextMark#+ and TkTextMark#-, and
+ add them to TkText::IndexModMethods module
+
+ * ext/tk/sample/tktextio.rb: add test part of "seek by text index
+ modifiers"
+
+Thu Mar 10 08:10:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (make_regexp): need to free internal regexp structure when
+ compilation fails. [ruby-talk:133228]
+
+Thu Mar 10 01:08:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (bv_decl): remove initialize rule from block local
+ variable declaration.
+
+Wed Mar 9 23:55:34 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (PP::PPMethods#guard_inspect_key): support
+ __recursive_key__. [ruby-dev:25821]
+
+Wed Mar 9 19:42:21 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c: OpenSSL::SSL::SSLContexts suports callbacks:
+ - SSLContext#client_cert_cb is a Proc. it is called when a client
+ certificate is requested by a server and no certificate was yet
+ set for the SSLContext. it must return an Array which includes
+ OpenSSL::X509::Certificate and OpenSSL::PKey::RSA/DSA objects.
+ - SSLContext#tmp_dh_callback is called in key exchange with DH
+ algorithm. it must return an OpenSSL::PKey::DH object.
+
+ * ext/openssl/ossl_ssl.c:
+ (ossl_sslctx_set_ciphers): ignore the argument if it's nil.
+ (ossl_start_ssl, ossl_ssl_write): call rb_sys_fail if errno isn't 0.
+ [ruby-dev:25831]
+
+ * ext/openssl/ossl_pkey.c
+ (GetPrivPKeyPtr, ossl_pkey_sign): should call rb_funcall first.
+ (DupPrivPKeyPtr): new function.
+
+ * ext/openssl/ossl_pkey_dh.c: add default DH parameters.
+
+ * ext/openssl/ossl_pkey.h: ditto.
+
+ * ext/openssl/lib/openssl/cipher.rb: fix typo. [ruby-dev:24285]
+
+Wed Mar 9 18:09:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (gettable_gen): warns if VCALL name is used as
+ out-of-scope block local variable. [EXPERIMENTAL]
+
+ * parse.y (opt_bv_decl): add explicit block local variable
+ declaration. raises error for name conflicts. [EXPERIMENTAL]
+
+Wed Mar 9 13:37:57 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tktextio.rb: fix bug of handling 'end' position.
+ support initial text, overwrite setting and pos_gravity control.
+
+Tue Mar 8 18:16:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tktextio.rb: New sample script. TkTextIO class in this
+ sample supports to use a text widget as if it is a I/O stream (such
+ like as StringIO class).
+
+Tue Mar 8 13:39:25 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/mkconstants.rb: workaround for some of 4.4BSD-Lite
+ derived OSs.
+
+Tue Mar 8 12:36:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: document from Sam Roberts
+ <sroberts@uniserve.com> for getsockopt and setsockopt is merged.
+ [ruby-doc:824]
+
+Tue Mar 8 10:48:53 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_exec_recursive): declaration should precede statements
+ before C99.
+
+Tue Mar 8 10:05:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (errno_missing): Errno.const_missing to allow references
+ to SyscallError exceptions not defined on the platform.
+ [ruby-core:04522]
+
+ * error.c (Init_syserr): Errno::NOERROR(0) for fallback exception.
+
+Tue Mar 8 01:19:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 1.66
+ fixed: [ruby-dev:25828]
+
+Mon Mar 7 21:29:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#start): should
+ restore @token if accept failure. suggested by Dominique Brezinski.
+ [ruby-core:04518]
+
+ * sample/webrick/httpsd.rb: fix typo in comment. suggested by
+ Kazuhiko Shiozaki.
+
+Mon Mar 7 21:01:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_require_safe): get actual path string under safe level
+ when requested. fixed: [ruby-dev:25815]
+
+Mon Mar 7 16:46:02 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_start_ssl, ossl_ssl_read,
+ ossl_ssl_write): need to set errno on Win32 platform.
+
+Mon Mar 7 14:55:43 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): should not push unique number if a block is
+ not an orphan. [ruby-dev:25808]
+
+Mon Mar 7 14:13:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#initialize):
+ should set @eof and @rbuffer.
+
+Mon Mar 7 10:28:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (inspect_obj): unintended space removal.
+ [ruby-dev:25810]
+
+ * eval.c (rb_exec_recursive): should not use NODE in disclosed
+ context. [ruby-dev:25812]
+
+ * io.c (rb_f_open): need not to check if to_open value is a
+ T_FILE. [ruby-dev:25812]
+
+Mon Mar 7 01:21:01 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil/tkutil.c: follow the change of st.c (committed
+ at Fri, 4 Mar 2005 15:47:47 +0900 by matz)
+
+Mon Mar 7 00:01:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: fail to call TclTkLib.mainloop when $SAFE==4
+
+Sun Mar 6 13:04:10 2005 Dee Zsombor <zsombor@ruby-lang.org>
+
+ * misc/ruby-electric.el: added.
+ * misc/Readme: updated.
+
+Sun Mar 6 11:47:10 2005 Sam Roberts <sroberts@uniserve.com>
+
+ * lib/pp.rb: rdoced. [ruby-core:4490]
+
+Sun Mar 6 11:36:37 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (File::Stat#pretty_print): Etc.getpwuid and Etc.getgrgid
+ may return nil. [ruby-talk:129826]
+ reported by Daniel Berger.
+
+Sun Mar 6 06:34:31 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_start_ssl): should wait for that
+ the underlying IO become readable or writable if the error was
+ SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE. [ruby-dev:25795]
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read, ossl_ssl_write): ditto.
+
+ * ext/openssl/lib/openssl/buffering.rb
+ (Buffering#consume_rbuf): pointless eof flag resetting is deleted.
+ (Buffering#read): should return an empty string if the specified
+ size is zero.
+ (Buffering#readpartial): new method.
+ (Buffering#readline): fix typo.
+ (Buffering#getc): return the first character of string correctly.
+ (Buffering#readchar): fix typo.
+ (Buffering#eof?): should read again it the input buffer is empty.
+ (Buffering#do_write): should rescue Errno::EAGAIN.
+ (Buffering#puts): use "\n" as the output field separator.
+
+ * ext/openssl/extconf.rb: get rid of GNUmakefile generation.
+
+ * text/openssl/test_pair.rb: test for IO like methods.
+
+ * test/ruby/ut_eof.rb: test about empty file.
+
+Sat Mar 5 17:48:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (rb_glob): fixed mismatch of argument.
+
+ * dir.c (fnmatch): removed unnecessary code. (by string.c 1.219)
+
+ * win32/win32.c (NtInitialize): ditto. (by numeric.c 1.117)
+
+Sat Mar 5 16:50:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 1.65
+
+Sat Mar 5 16:29:26 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: freeze callback-entry objects
+
+ * ext/tk/lib/tkextlib/tile.rb: support tile-0.6
+
+Sat Mar 5 12:52:08 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): allow putting spaces between target
+ and colon in depend file.
+
+Sat Mar 5 02:41:00 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (eaccess): workaround for VC++8 runtime.
+
+ * win32/win32.c (ioinfo): VC++8 support.
+
+Fri Mar 4 19:39:55 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#do_includes): replace
+ also locally defined modules.
+
+ * ext/iconv/iconv.c: rdocified.
+
+ * ext/strscan/strscan.c: moved misplaced rdoc.
+
+Fri Mar 4 16:11:20 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_exec_recursive): matched the declaration to prototype.
+
+ * ext/curses/curses.c: don't need to check HAVE_WCOLOR_SET excluding
+ window_color_set().
+
+ * ext/tk/tcltklib.c: fixed commit mistakes.
+
+Fri Mar 4 12:45:17 2005 Tilman Sauerbeck <tilman@code-monkey.de>
+
+ * lib/rdoc/parsers/parse_c.rb: allow whitespace after function names.
+ [ruby-core:4296]
+
+ * lib/rdoc/parsers/parse_simple.rb: adds support for private comments
+ in the "simple" parser. [ruby-core:4301]
+
+Fri Mar 4 12:45:17 2005 Charles Mills <cmills@freeshell.org>
+
+ * lib/rdoc/parsers/parse_c.rb: adds support for constants
+ (rb_define_const), accessors (rb_define_attr), and makes a
+ couple fixes. [ruby-core:4307]
+
+Fri Mar 4 12:45:17 2005 Florian Gross <florgro@gmail.com>
+
+ * lib/rdoc/parsers/parse_rb.rb: Logic for def Builtin.method() end
+ [ruby-core:4302]
+
+Fri Mar 4 12:45:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c: replace rb_protect_inspect() and rb_inspecting_p() by
+ rb_exec_recursive() in eval.c.
+
+ * eval.c (rb_exec_recursive): new function.
+
+ * array.c (rb_ary_join): use rb_exec_recursive().
+
+ * array.c (rb_ary_inspect, rb_ary_hash): ditto.
+
+ * file.c (rb_file_join): ditto.
+
+ * hash.c (rb_hash_inspect, rb_hash_to_s, rb_hash_hash): ditto.
+
+ * io.c (rb_io_puts): ditto.
+
+ * object.c (rb_obj_inspect): ditto
+
+ * struct.c (rb_struct_inspect): ditto.
+
+Fri Mar 4 10:15:30 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/set.rb (SortedSet::setup): a hack to shut up warning.
+ [ruby-talk:132866]
+
+Fri Mar 4 09:37:12 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (install-nodoc, pre-install-doc, post-install-doc):
+ fix some omissions.
+
+Fri Mar 4 08:09:12 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/time.rb (Time::strptime): add new function. inspired by
+ [ruby-talk:132815].
+
+ * lib/parsedate.rb (ParseDate::strptime): ditto.
+
+Fri Mar 4 07:07:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 1.63
+
+Thu Mar 3 23:24:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 1.62
+
+Thu Mar 3 18:47:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * {bcc32,win32,wince}/Makefile.sub (config.h): check if affected
+ when makefiles are modified.
+
+ * {bcc32,win32,wince}/Makefile.sub (config.status): add variables
+ for tests.
+
+ * win32/ifchange.bat: try to update a file only if modified.
+
+ * win32/resource.rb: more descriptions.
+
+ * common.mk: add {pre,post}-install targets.
+
+ * instruby.rb (install?): install particular part.
+
+ * bcc32/Makefile.sub (post-install-ext): remove debug information
+ files after installation.
+
+ * ext/tk/tcltklib.c (ip_rbUpdateCommand, ip_rb_threadUpdateCommand):
+ get rid of warnings with Tcl/Tk 8.3 or former.
+
+Thu Mar 3 11:49:51 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb: added site information.
+
+Wed Mar 2 19:53:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (parse_args): return false if nothing matched.
+
+Wed Mar 2 17:15:08 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c (lib_eventloop_core): fix typo
+
+Wed Mar 2 16:59:50 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * eval.c (ruby_native_thread_kill): call pthread_kill() to send a
+ signal to ruby's native thread
+
+ * ruby.h: add definition of ruby_native_thread_kill()
+
+ * signal.c (sigsend_to_ruby_thread): send the signal to ruby's
+ native thread ([ruby-dev:25744], [ruby-dev:25754]), and set
+ signal mask to the current native thread
+
+Wed Mar 2 16:03:08 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: enforce thread-check and exception-handling to
+ avoid SEGV trouble.
+
+ * ext/tk/tkutil/tkutil.c: fix a bug on converting a SJIS string array
+ to a Tcl's list string.
+
+ * ext/tk/tcltklib.c: wrap Tcl's original "namespace" command to
+ protect from namespace crash.
+
+ * ext/tk/lib/multi-tk.rb: enforce exception-handling.
+
+ * ext/tk/lib/multi-tk.rb: catch IRB_EXIT to work on irb.
+
+ * ext/tk/lib/tk.rb: ditto.
+
+ * ext/tk/tcltklib.c: add TclTkLib.mainloop_thread?
+
+ * ext/tk/lib/multi-tk.rb: (bug fix) callback returns a value.
+
+ * ext/tk/lib/tk/canvas.rb (delete): bug fix when multiple arguments.
+
+ * ext/tk/lib/clock.rb: fix 'no method error'.
+
+ * ext/tk/lib/clock.rb (self.clicks): accept a Symbol argument.
+
+ * ext/tk/lib/variable.rb: be able to set default_value_type; :numeric,
+ :bool, :string, :symbol, :list, :numlist or nil (default; same to
+ :string). If set a type, TkVariable#value returns a value of the
+ type.
+
+ * ext/tk/lib/tkextlib/tclx/tclx.rb: add Tk::TclX.signal to warn the
+ risk of using TclX extension's 'signal' command.
+
+ * ext/tk/sample/irbtk.rb: irb with Ruby/Tk.
+
+ * ext/tk/sample/demos-*/anilabel.rb: bug fix on 'show code'
+
+ * ext/tk/sample/demos-*/aniwave.rb: new Ruby/Tk animation demo.
+
+ * ext/tk/sample/demos-*/pendulum.rb: ditto.
+
+ * ext/tk/sample/demos-*/goldberg.rb: ditto.
+
+ * ext/tk/sample/demos-*/widget: add entries of animation demos.
+
+Wed Mar 2 12:21:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): [EXPERIMENTAL] NODE_LAMBDA implemented.
+ [ruby-dev:25780]
+
+ * node.h (NODE_LAMBDA): for literal Proc object.
+
+ * parse.y (expr): interpret mere do...end block as proc object.
+
+ * parse.y (primary): ditto, for brace block.
+
+Tue Mar 1 21:16:54 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * regcomp.c (optimize_node_left): uninitialized member
+ (OptEnv.backrefed_status) was used. [ruby-dev:25778]
+
+Tue Mar 1 16:50:37 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regparse.c: move st_*_strend() functions from st.c. fixed some
+ potential memory leaks.
+
+Tue Mar 1 00:40:35 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/tuplespace.rb (Rinda::TupleSpace): improved keeper thread.
+
+ * test/rinda/test_rinda.rb: ditto.
+
+Mon Feb 28 23:10:13 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/socket/socket.c (Init_socket): IPv6 is not supported although
+ AF_INET6 is defined on bcc32. (rev1.108 again)
+
+ * ext/socket/mkconstants.rb: ditto.
+
+Mon Feb 28 21:55:49 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * ext/strscan/strscan.c (strscan_s_allocate):
+ use onig_region_init().
+
+ * ext/strscan/strscan.c (adjust_registers_to_matched):
+ use onig_region_set().
+
+Mon Feb 28 15:12:06 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/socket/socket.c (Init_socket): ported more Socket::Constants
+ from ruby_1_8, and made it easy to add new constants.
+ [ruby-dev:25771]
+
+ * ext/socket/depend: ditto.
+
+ * ext/socket/mkconstants.rb: ditto. (added)
+
+Mon Feb 28 11:42:23 2005 Ian Macdonald <ian@caliban.org>
+
+ * exception error messages updated. [ruby-core:04497]
+
+Mon Feb 28 09:03:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (Init_socket): add bunch of Socket
+ constants. Patch from Sam Roberts <sroberts@uniserve.com>.
+ [ruby-core:04409]
+
+Sun Feb 27 05:55:38 2005 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: fix typo. [ruby-core:04494]
+
+Sat Feb 26 16:58:20 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * parse.y, re.c, regex.h, LEGAL, ext/strscan/strscan.c:
+ remove oniggnu.h (GNU regex API).
+
+Wed Feb 23 22:08:16 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * st.c, st.h: imported additional file changes on
+ Oniguruma 3.7.0.
+
+Wed Feb 23 21:45:29 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * ascii.c, euc_jp.c, oniggnu.h, oniguruma.h, regcomp.c,
+ regenc.c, regenc.h, regerror.c, regexec.c, regint.h,
+ regparse.c, regparse.h, sjis.c, utf8.c: imported Oni Guruma
+ 3.7.0.
+
+Wed Feb 23 15:04:32 2005 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (split_userinfo): should split ":pass" into ""
+ and "pass". [ruby-dev:25667]
+
+Wed Feb 23 08:00:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_s_create): no need for negative argc check.
+ [ruby-core:04463]
+
+ * array.c (rb_ary_unshift_m): ditto.
+
+Wed Feb 23 01:53:29 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (initialize): handle certs correctly. Thanks,
+ NABEYA Kenichi.
+
+Wed Feb 23 00:37:34 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/mkmf.rb (mkmf_failed): fixed typo.
+
+Tue Feb 22 23:52:45 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in, lib/mkmf.rb: use simple commands if available.
+
+ * mkconfig.rb: remove autoconf internal variables from rbconfig.rb.
+
+ * lib/mkmf.rb (create_makefile): substitute implicit rules in depend
+ file.
+
+ * {bcc32,win32,wince}/Makefile.sub (COMPILE_RULES, RULE_SUBST):
+ include $(topdir) and $(hdrdir) to search path.
+
+Tue Feb 22 23:51:45 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c: get rid of warnings caused by a bug of VC.
+
+Tue Feb 22 23:50:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (ruby_signal, ruby_nativethread_signal): must be valid as
+ expressions, not only statements.
+
+Tue Feb 22 12:54:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): update curr_thread before raising
+ TAG_THREAD. [ruby-dev:25712]
+
+Tue Feb 22 07:24:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): identifier after dot must not be a variable.
+
+Mon Feb 21 18:31:12 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * signal.c: Standard signal handlers ignore signals on non-Ruby native
+ threads. When a handler is entried with ruby_signal() (like as the
+ standard signal handlers), the handler for the signal is marked as
+ it cannot accept non-Ruby native threads. If a handler can treat all
+ signals on all native threads, please use ruby_nativethread_signal()
+ to entry it.
+
+Sun Feb 20 00:48:48 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::FTP#buffer_open): access mechanism
+ re-implemented according to RFC 1738.
+ reported by Guillaume Marcais. [ruby-talk:131650]
+
+Sat Feb 19 18:46:56 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRbObject#respond_to?): take two arguments.
+ [ruby-dev:25722]
+
+ * test/drb/drbtest.rb: ditto.
+
+Sat Feb 19 13:52:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: call OpenSSL::SSL::SSLSocket#post_connection_check
+ after connection is made.
+
+Sat Feb 19 13:31:28 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): remove no longer existing installed
+ files.
+
+ * lib/mkmf.rb (install_dirs): return installation directory list.
+
+ * lib/mkmf.rb (create_makefile): reverted wrongly removed lines.
+
+Sat Feb 19 01:28:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/newton.rb: resolved LoadError.
+ [ruby-dev:25685]
+
+ * ext/bigdecimal/sample/linear.rb: ditto.
+
+ * ext/bigdecimal/sample/nlsolve.rb: ditto.
+
+ * ext/bigdecimal/lib/bigdecimal/nlsolve.rb: removed because this file
+ is sample script and same file exists in ext/bigdecimal/sample.
+
+Fri Feb 18 17:14:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/xmlrpc/parser.rb (XMLRPC::FaultException): make it subclass
+ of StandardError class, not Exception class. [ruby-core:04429]
+
+Fri Feb 18 04:06:41 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (fcall_gen): lvar(arg) will be evaluated as
+ lvar.call(arg) when lvar is a defined local variable. [new]
+
+Thu Feb 17 22:15:34 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * ext/strscan/strscan.c: calls Oniguruma API directly.
+
+Thu Feb 17 21:53:12 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
+
+ * common.mk, LEGAL: remove reggnu.c.
+
+Thu Feb 17 21:53:12 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * gc.c, re.c: now ruby calls Oniguruma API directly, bypassing
+ GNU compatible APIs.
+
+Thu Feb 17 20:09:23 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/drb/drb.rb (DRbServer.default_safe_level): fix typo.
+
+Thu Feb 17 20:09:23 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/digest/test_digest.rb: separate test case for each algorithms.
+ [ruby-dev:25412]
+
+Thu Feb 17 14:31:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_class_initialize): call inherited method before
+ calling initializing block.
+
+ * eval.c (rb_thread_start_1): initialize newly pushed frame.
+ fixed: [ruby-dev:25707]
+
+Thu Feb 17 13:46:00 2005 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/collector.rb (collect_file): now deletes paths added
+ to $LOAD_PATH instead of restoring it verbatim.
+
+ * lib/test/unit/autorunner.rb (AutoRunner.run): fixed so that
+ 'ruby -rtest/unit -rtest1 -rtest2 -e0' will use the objectspace
+ collector again. Also tried to simplify the calling convention.
+
+ * test/runner.rb: adjusted for new AutoRunner semantics.
+
+ * lib/test/unit.rb: ditto.
+
+Thu Feb 17 04:21:47 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/open3.rb (Open3::popen3): $? should not be EXIT_FAILURE.
+ fixed: [ruby-core:04444]
+
+Thu Feb 17 00:31:21 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/test_drb.rb, ut_safe1.rb: port from 1.8
+
+Thu Feb 17 00:02:27 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): NODE_IASGN is an assignment.
+
+Wed Feb 16 23:54:14 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_start_1): outer block variables wasn't linked to
+ threads. fixed: [ruby-dev:25700]
+
+Wed Feb 16 15:11:43 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::Nonblock#initialize):
+ native win32 platform doesn't have F_GETFL.
+
+Wed Feb 16 02:47:45 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read, ossl_ssl_write): should
+ call rb_sys_fail instead of raising SSLError if SSL_ERROR_SYSCALL
+ occurred.
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#fill_rbuff):
+ should rescue Errno::EAGAIN.
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#each): fix typo.
+ suggested by Brian Ollenberger.
+
+ * ext/openssl/lib/openssl/ssl.rb: set non-blocking flag to the
+ underlying IO.
+
+Tue Feb 15 22:14:34 2005 sheepman <sheepman@tcn.zaq.ne.jp>
+
+ * ext/readline/readline.c (Readline.readline): use rl_outstream
+ and rl_instream. [ruby-dev:25699]
+
+Mon Feb 14 23:58:17 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::ListenerMixin::tag_end):
+ fixed invalid namespace handling bug.
+
+Mon Feb 14 13:12:38 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb
+ (OpenSSL::SSL::SSLSocket#post_connection_check): new method.
+
+Mon Feb 14 00:10:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRbServer): add default_safe_level, safe_level,
+ config[:safe_level] ([druby-ja:120])
+
+ * test/drb/test_drb.rb, ut_eval.rb, ut_safe1.rb: ditto.
+
+Sun Feb 13 23:13:46 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/dublincore.rb (RSS::DublicCoreModel#date{,=}): added
+ convenient methods.
+
+ * lib/rss/0.9.rb (RSS::Rss::Channel#date{,=}): ditto.
+
+ * lib/rss/2.0.rb (RSS::Rss::Channel::Item#date{,=}): ditto.
+
+ * test/rss/: added tests for the convenient methods.
+
+Sun Feb 13 23:12:47 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): restore prot_tag before rewinding.
+
+Sun Feb 13 16:56:52 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI.start): should set reason-phrase
+ to the value of status header field. ([ruby-dev:40617])
+
+Sun Feb 13 11:38:40 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regparse.c (type_cclass_hash): (Thanks Nobu) fixed
+ overrun. ([ruby-dev:25676]).
+
+Sun Feb 13 10:53:08 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * oniggnu.h, oniguruma.h, regcomp.c, st.c: imported
+ Oni Guruma 3.6.0.
+
+Sun Feb 13 01:33:19 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (ERB::Util.h, u): make it module_function.
+
+Sat Feb 12 22:17:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (TAG_THREAD): to start a new thread.
+
+ * eval.c (ruby_init, ruby_options, ruby_cleanup, rb_protect,
+ rb_load_protect, rb_thread_start_0): make thread anchor.
+
+ * eval.c (proc_alloc): clone proc object if klass is not Proc or
+ created in different thread.
+
+ * eval.c (rb_block_pass): call a function with a block. [new]
+
+ * eval.c (rb_f_throw): raise NameError in main thread.
+
+Sat Feb 12 17:29:19 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_loop): send authentication only for
+ the URI directly specified.
+
+Sat Feb 12 15:07:23 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rand_init): suppress warning.
+
+Sat Feb 12 14:10:24 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_http): reject userinfo explicitly.
+
+Sat Feb 12 13:54:03 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: support https if the platform provides CA
+ certificates.
+
+Sat Feb 12 06:18:28 2005 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
+
+ * ext/etc/etc.c (Init_etc): sGroup needs HAVE_ST_GR_PASSWD check
+ [ruby-dev:25675]
+
+Fri Feb 11 17:37:50 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths):
+ new method OpenSSL::X509::Store#set_default_paths.
+
+Fri Feb 11 11:33:53 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::HTTP#proxy_open): new option supported:
+ :http_basic_authentication.
+ suggested by Kent Sibilev. [ruby-core:4392]
+
+Fri Feb 11 06:30:07 2005 George Ogata <g_ogata@optushome.com.au>
+
+ * misc/ruby-mode.el: ignore parenthesis inside heredoc.
+ [ruby-core:04415]
+
+Fri Feb 11 04:54:13 2005 Tilman Sauerbeck <tilman@code-monkey.de>
+
+ * lib/rdoc/generators/html_generator.rb: [ruby-core:04412]
+
+ * lib/rdoc/generators/ri_generator.rb: ditto.
+
+Thu Feb 10 13:52:42 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (LIBS, COMMON_HEADERS): use
+ winsock2 on mswin32/mingw.
+
+ * ext/socket/extconf.rb: ditto.
+
+ * win32/win32.c (StartSockets): ditto.
+
+ * win32/win32.h: ditto.
+
+Thu Feb 10 12:09:16 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): default to true if not compiled
+ previously.
+
+ * ext/extmk.rb (extmake): create dummy makefile if extconf failed.
+
+Thu Feb 10 12:07:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_stdhandle): assign standard file handles.
+
+ * bcc32/Makefile.sub (COMMON_LIBS): add libraries included in
+ import32.lib.
+
+ * lib/mkmf.rb (create_makefile): restrict prefixing with srcdir to
+ rule lines, add search path to implicit rules, and set Borland make
+ special macros for search path.
+
+ * win32/win32.c, win32/win32.h (read): avoid a BCC runtime bug.
+
+Thu Feb 10 00:47:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (make_struct): fixed: [ruby-core:04402]
+
+Wed Feb 9 16:33:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (wait_connectable): fixed wrong condition.
+
+Wed Feb 9 14:42:28 2005 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
+
+ * eval.c (scope_dup): add volatile not to optimize tbl.
+
+Wed Feb 9 10:02:02 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tk/make-tkutil, ext/tk/tkutil/subconf.rb: no longer used.
+
+ * ext/tk/tkutil/extconf.rb: need to compile tkutil. [ruby-dev:25607]
+
+Wed Feb 9 08:07:08 2005 Paul Duncan <pabs@pablotron.org>
+
+ * ext/curses/curses.c (window_color_set): [ruby-core:04393]
+
+Tue Feb 8 23:48:36 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: reject :instance_eval, :class_eval, :module_eval
+ [druby-ja:117]
+
+Tue Feb 8 22:38:28 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * keywords, parse.y: separate EXPR_VALUE from EXPR_BEG.
+ fixed: [ruby-core:04310], [ruby-core:04368]
+
+Tue Feb 8 13:06:12 2005 Sam Roberts <sroberts@uniserve.com>
+
+ * ext/socket/socket.c (Init_socket): SO_REUSEPORT added.
+ [ruby-talk:130092]
+
+Tue Feb 8 00:19:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Name#subdomain_of?): new method.
+ (Resolv::DNS::Name#inspect): ditto.
+ Suggested by Sam Roberts. [ruby-talk:129086]
+
+Mon Feb 7 23:14:11 2005 Tanaka Akira <akr@m17n.org>
+
+ * io.c (io_getc): flush rb_stdout before read from stdin, which is
+ connected to a tty. [ruby-core:4378]
+
+ * rubyio.h (FMODE_TTY): renamed from FMODE_LINEBUF.
+
+Mon Feb 7 10:06:30 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c: [ruby-doc:818]
+
+Mon Feb 7 02:13:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb (sockaddr_storage): winsock2.h have the
+ definition of struct sockaddr_storage, but socket.c doesn't
+ include it because this version of ruby still has binary level
+ compatibility with winsock1.
+
+Mon Feb 7 01:22:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): extract previously collected
+ informations from existing Makefile.
+
+ * ext/socket/extconf.rb: check if getaddrinfo() works fine only when
+ wide-getaddrinfo option is not given. fixed: [ruby-dev:25422]
+
+ * ext/tk/extconf.rb: separate tkutil configuration.
+
+ * lib/mkmf.rb ($extmk): check if under ext directory.
+
+ * lib/mkmf.rb (Logging.postpone): allow recursive operation.
+
+ * lib/mkmf.rb (try_constant): make sure if really a constant, reduce
+ the number of times of compile.
+
+ * lib/mkmf.rb (have_macro, have_var, byte_order): new functions.
+
+ * lib/mkmf.rb (find_library): allow directory list with separators.
+
+ * lib/mkmf.rb (arg_config): manage provided configuration options.
+
+ * lib/mkmf.rb (dir_config): accept arrays of directory names as
+ default values.
+
+ * lib/mkmf.rb (with_cppflags, with_cflags, with_ldflags): keep flags
+ modified if the block returned true.
+
+Sun Feb 6 19:20:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (stack_extend): add prototype because VC++8 doesn't
+ accept __declspec(noinline) with K&R style function definitions.
+
+Sun Feb 6 13:56:19 2005 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (new_with_hash): changed messages of exception.
+
+ * lib/date/format.rb (str[fp]time): undocumented conversion
+ specifications %[1-3] are now deprecated.
+
+Sun Feb 6 11:27:37 2005 Tanaka Akira <akr@m17n.org>
+
+ * ext/dl/dl.c (Init_dl): function declaration should precede
+ statements before C99.
+
+Sun Feb 6 03:24:20 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Resource::TXT): multiple strings was not
+ handled.
+ (Resolv::DNS::Resource::TXT#strings): new method to return all
+ strings.
+ (Resolv::DNS::Message::MessageEncoder#put_string_list): new method.
+ (Resolv::DNS::Message::MessageDecoder#get_string_list): ditto.
+ based on [ruby-talk:129732] by Sam Roberts.
+
+Sat Feb 5 02:24:06 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/test_scanner_events.rb: fix test.
+
+Fri Feb 4 18:44:35 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/lexer.rb: last Lexer fix was incomplete;
+ test all green.
+
+Fri Feb 4 15:57:06 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (open_args): fix too verbose warnings for the space
+ before argument parentheses. [ruby-dev:25492]
+
+ * parse.y (parser_yylex): ditto.
+
+Fri Feb 4 14:33:25 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/filter.rb: ripper/tokenizer ->
+ ripper/lexer. [ruby-dev:25632]
+
+Fri Feb 4 00:24:15 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss: supported Image module.
+ http://web.resource.org/rss/1.0/modules/image/
+
+Thu Feb 3 23:42:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_close, strio_close_read, strio_close_write):
+ should return nil instead of self as well as IO. [ruby-dev:25623]
+
+ * ext/stringio/stringio.c (strio_extend, strio_putc): fill with zero
+ extended portion. [ruby-dev:25626]
+
+Thu Feb 3 16:12:57 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (parser_yylex): the first expression in the parentheses
+ should not be a command. [ruby-dev:25492]
+
+Thu Feb 3 03:31:20 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow original v 1.57
+
+ * ext/nkf/nkf-utf8/utf8tbl.c: follow original v 1.8
+
+ * ext/nkf/nkf-utf8/config.h: follow original v 1.7
+
+Wed Feb 2 23:52:53 2005 sheepman <sheepman@tcn.zaq.ne.jp>
+
+ * ext/stringio/stringio.c (strio_truncate): should MEMZERO an extended
+ part. [ruby-dev:25618]
+
+Wed Feb 2 21:56:01 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::Element#convert): added.
+
+ * lib/rss/rss.rb: convert -> need_convert.
+
+ * lib/rss/1.0.rb: ditto.
+
+ * lib/rss/0.9.rb: ditto.
+
+ * lib/rss/2.0.rb: ditto.
+
+ * lib/rss/trackback.rb: ditto.
+
+Wed Feb 2 03:30:58 2005 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/tokenizer.rb -> lexer.rb.
+
+ * ext/ripper/lib/ripper/lexer.rb: new method Ripper.slice.
+ [experimental]
+
+ * ext/ripper/lib/ripper/sexp.rb: new file. [experimental]
+
+ * ext/ripper/lib/ripper.rb: require ripper/lexer and ripper/sexp.
+
+Tue Feb 1 21:49:24 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRb::DRbObject#respond_to?): check marshal_dump and
+ _dump.
+
+Tue Feb 1 00:20:23 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, configure.in: made EXTOUT configurable.
+
+ * ext/extmk.rb (extmake), lib/mkmf.rb: keep topdir as relative style.
+
+ * lib/mkmf.rb: make extensions in depth order. [ruby-dev:25522]
+
+ * configure.in (aix): fix linker flags on AIX. [ruby-talk:125460]
+
+Mon Jan 31 13:16:39 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/extconf.rb: add tkutil configuration step (remove old schema)
+
+ * ext/tk/depend: remove the information of tkutil
+
+ * ext/tk/make-tkutil: sub-part of Makefile to compile tkutil
+
+ * ext/tk/tkutil/tkutil.c: move tkutil.c to subdirectory
+
+ * ext/tk/tkutil/subconf.rb: configuration file for tkutil.c
+
+ * ext/tk/tkutil/depend: ditto
+
+Mon Jan 31 13:13:35 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tcltklib.c: add invalid namespace check
+
+ * ext/tk/lib/multi-tk.rb: add invalid_namespace? method
+
+ * ext/tk/lib/remote-tk.rb: ditto
+
+Mon Jan 31 10:29:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/context.rb (IRB::Context::initialize): [ruby-core:04330]
+
+Mon Jan 31 09:44:03 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): remove Object#type. [ruby-core:04335]
+
+Sat Jan 29 09:42:12 2005 Sam Roberts <sroberts@uniserve.com>
+
+ * lib/resolv.rb (Resolv::DNS::Resource::IN::SRV): Added RFC2782 SRV
+ resource record for specifying location of services.
+
+Sat Jan 29 00:10:33 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * ascii.c, euc_jp.c, hash.c, oniggnu.h, oniguruma.h, regcomp.c,
+ regenc.c, regenc.h, regerror.c, regexec.c, reggnu.c, regint.h,
+ regparse.c, regparse.h, sjis.c, st.c, st.h, utf8.c: imported
+ Oni Guruma 3.5.4.
+
+Fri Jan 28 17:16:55 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Config.parse_resolv_conf):
+ parse options line for ndots option.
+ (Resolv::Hosts#lazy_initialize): return self.
+ (Resolv::DNS#lazy_initialize): ditto.
+ (Resolv::DNS::Config#lazy_initialize): ditto.
+ Suggested by Sam Roberts.
+
+Thu Jan 27 17:15:03 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tk/extconf.rb: support new tk scheme on bccwin32.
+ fixed: [ruby-dev:25546]
+
+Thu Jan 27 13:18:03 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * st.c (st_foreach): report success/failure by return value.
+ [ruby-Bugs-1396]
+
+Thu Jan 27 00:12:19 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (setup): support BSD style
+ directory group inheritance (again).
+
+Thu Jan 27 00:02:40 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (setup): support BSD style
+ directory group inheritance. [ruby-dev:25440]
+
+ * test/fileutils/fileasserts.rb (assert_same_entry): show entry
+ difference.
+
+Wed Jan 26 17:12:50 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: forgot to initialize parser struct. [ruby-dev:25492]
+
+ * parse.y (parser_yylex): no tLABEL on EXPR_BEG.
+ [ruby-talk:127711]
+
+Wed Jan 26 14:12:58 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Setup*: remove tcltklib.
+
+Wed Jan 26 12:45:16 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tk/extconf.rb: support new tk scheme on mswin32.
+ fixed: [ruby-dev:25535]
+
+Wed Jan 26 10:45:19 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (flock_winnt, flock_win95): unlock file even if
+ LOCK_NB is specified.
+
+Tue Jan 25 23:10:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk: merge tcltklib for Ruby/Tk installation control
+
+ * ext/tcltklib: remove
+
+Tue Jan 25 17:05:15 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (proc_options): correct -T option in RUBYOPT.
+ fixed: [ruby-dev:25512]
+
+Tue Jan 25 14:05:52 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix SEGV bug; trouble on canceling remained
+ after scripts [ruby-dev:25479]: NULL current namespace when deleting
+ Tk interpreter [ruby-talk:126225]
+
+ * ext/tcltklib/extconf.rb: bug fix; TCL_ENABLE_THREAD flag is inverted
+ [ruby-talk:126360]
+
+ * ext/tcltklib/extconf.rb: add yet another native-thread check
+
+ * ext/tk/tkutil.c: fix SEGV bug; NULL string pointer when finalize
+ Ruby interpreter
+
+ * ext/tk/lib/multi-tk.rb: avoid warning for deleted safeTk ip frame
+
+ * ext/tk/lib/tk/bindtag.rb: bug fix; new method of named bindtag
+ doesn't return the created object [ruby-dev:25479]
+
+ * ext/tk/lib/tk/menu.rb: bug on treating arguments [ruby-dev:25479]
+
+ * ext/tk/lib/tk.rb: bug fix; cannot accept a callback ID string for
+ a command argument [ruby-dev:25479]
+
+ * ext/tk/lib/multi-tk.rb: ditto
+
+ * ext/tk/lib/tk/*.rb: ditto
+
+ * ext/tk/lib/tkextlib/*.rb: ditto
+
+ * ext/tk/sample/demos-jp/anilabel.rb: new demo script
+
+ * ext/tk/sample/demos-en/anilabel.rb: ditto
+
+ * ext/tk/sample/tkHTML/ss.rb: local variable scope bug fix
+ [ruby-dev:25479]
+
+Mon Jan 24 16:00:53 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (guess_old): not use NKF.guess_old
+ but NKF.guess1. fixed: [ruby-dev:25491]
+
+Mon Jan 24 15:44:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * document updates - [ruby-core:04296], [ruby-core:04301],
+ [ruby-core:04302], [ruby-core:04307]
+
+Sun Jan 23 12:38:01 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/wsdlDriver.rb: from 1.5.3-ruby1.8.2, operation which has
+ capitalized name (such as KeywordSearchRequest in AWS) is defined as
+ a method having uncapitalized name. (converted with
+ GenSupport.safemethodname to handle operation name 'foo-bar'). it
+ introduced serious incompatibility; in the past, it was defined as a
+ capitalized.
+
+ define capitalized method as well under that circumstance.
+
+Sun Jan 23 05:24:42 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspreq_to_der): should call
+ GetOCSPReq at first.
+
+Sat Jan 22 22:59:08 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/ssl.rb (accept): rescue SSLError. [druby-ja:110]
+
+Sat Jan 22 22:27:28 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/unix.rb: fail if UNIXFileOwner is set. [druby-ja:111]
+
+Fri Jan 21 20:07:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Config.resolv): don't raise ResolvError.
+ reported by Sam Roberts. [ruby-talk:127133]
+
+Fri Jan 21 17:09:44 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (decode_utf7): use pack("U*") to encode UTF-8.
+
+ * lib/net/imap.rb (encode_utf7): use unpack("U*") to decode UTF-8.
+
+ * test/net/imap/test_imap.rb: added tests for Net::IMAP.
+
+Fri Jan 21 16:58:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (rb_push_glob): should work for NUL delimited patterns.
+
+ * dir.c (rb_glob2): should aware of offset in the pattern.
+
+Fri Jan 21 13:58:37 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (u8tou16): fixed typo. fixed: [ruby-list:40546]
+
+Fri Jan 21 00:37:09 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/syck/rubyext.c (syck_parser_bufsize_set): avoid VC++ warning
+ "local variable 'size' used without having been initialized".
+
+Thu Jan 20 11:42:02 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_new4): should propagate taintedness.
+
+ * env.h: rename member names in struct FRAME; last_func -> callee,
+ orig_func -> this_func, last_class -> this_class.
+
+ * struct.c (rb_struct_set): use original method name, not callee
+ name, to retrieve member slot. [ruby-core:04268]
+
+ * time.c (time_strftime): protect from format modification from GC
+ finalizers.
+
+Thu Jan 20 02:01:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (Init_Object): remove rb_obj_id_obsolete()
+
+Wed Jan 19 18:02:19 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/ipaddr.rb (to_s, test_to_s): too many colons with some cases.
+
+Wed Jan 19 01:16:30 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Config.parse_resolv_conf): ignore
+ domain and search directive without an argument.
+ reported by Sam Roberts. [ruby-talk:126781]
+
+Mon Jan 17 23:33:46 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (aix): fix typo. [ruby-talk:126401]
+
+Mon Jan 17 07:08:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c: suppress warnings.
+
+ * lib/irb/extend-command.rb (IRB::ContextExtender.def_extend_command):
+ ditto.
+
+ * lib/irb/ext/history.rb (IRB::Context::set_last_value): ditto.
+
+ * lib/irb/ext/history.rb (IRB::Context::eval_history): ditto.
+
+ * lib/irb/locale.rb (IRB::Locale::real_load): ditto.
+
+ * lib/irb/slex.rb (SLex::Node::create_subnode): remove garbage.
+
+Mon Jan 17 00:09:42 2005 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/uri/common.rb (PORT): typo fix. fixed: [ruby-core:04256]
+
+Sat Jan 15 14:57:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): ignore trailing CRs at the end of short
+ options as well as long options. fixed: [ruby-core:04232]
+
+Sat Jan 15 13:44:22 2005 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.2 -> 0.1.3.
+
+ * lib/rss/rss.rb: accept inheritance. [ruby-talk:126104]
+
+Wed Jan 12 12:29:28 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_define_method): incomplete subclass check.
+ [ruby-dev:25464]
+
+ * class.c (rb_make_metaclass): class of metaclasses should be
+ plain Class. [ruby-list:40524]
+
+Tue Jan 11 20:58:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (remain_size): use buffered data instead of unreading to avoid
+ inconsistency of text mode. fixed: [ruby-dev:25446]
+
+Tue Jan 11 09:37:53 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * numeric.c (Init_Numeric): turn off floating point exceptions
+ on bcc32. "1e300".to_f had crashed by overflow.
+
+Mon Jan 10 15:28:51 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#request_line): should
+ escape SCRIPT_NAME and PATH_INFO before being parsed as a URI.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils#escape_path): add
+ new method to escape URI path component.
+
+ * lib/webrick/ssl.rb (WEBrick::Config::SSL): the default value
+ of :SSLEnable is false.
+
+ * test/webrick/{test_cgi.rb,webrick.cgi}: new file.
+
+ * test/webrick/utils.rb: require "webrick/https.h".
+
+Mon Jan 10 01:22:55 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_data_object_alloc): klass may be NULL.
+ [ruby-list:40498]
+
+Sun Jan 9 14:12:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_f_select): IO list could be altered. [ruby-dev:25312]
+
+Sun Jan 9 04:08:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * test/webrick/test_server.rb (test_daemon): delete an assertion
+ which has possibility to fail by race condition.
+
+Sun Jan 9 03:22:46 2005 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (test_copy_entry): copy_entry
+ copies only file type, not mtime. [ruby-dev:25383]
+
+Sat Jan 8 04:38:47 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb: Kernel#y requires an argument.
+
+Fri Jan 7 21:12:29 2005 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
+
+ * random.c (rand_init): use ALLOC_N instead of ALLOCA_N
+ [ruby-dev:25426]
+
+Fri Jan 7 20:01:31 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_service):
+ should delete trailing LF from the result of pack("m*").
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_connect):
+ - should delete trailing LF from the result of pack("m*").
+ - clear Request-Line not to send the response by HTTPServer#run.
+
+ * lib/webrick/httputils (WEBrick::HTTPUtils.parse_qvalues):
+ refine regexp (and change the name of a local variable).
+
+ * lib/webrick/server.rb (WEBrick::Daemon.start): prepared stdio
+ don't allow changing its mode.
+
+ * test/webrick/*, sample/webrick/httpproxy.rb: add new files.
+
+Fri Jan 7 18:03:35 2005 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (mark_locations_array): avoid core dump with -O3.
+ [ruby-dev:25424]
+
+Thu Jan 6 20:29:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_end): should return value.
+
+Thu Jan 6 19:59:03 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.c (rb_w32_close): didn't close socket handle.
+ [ruby-dev:25414]
+
+ * win32/win32.c (rb_w32_open_osfhandle): bcc32's _open_osfhandle
+ never set EMFILE.
+
+Thu Jan 6 17:22:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * random.c (random_seed): O_NONBLOCK isn't defined on some
+ platforms. [ruby-dev:25417]
+
+Thu Jan 6 13:45:35 2005 Tanaka Akira <akr@m17n.org>
+
+ * lib/time.rb: recognize +00:00 and GMT as a localtime.
+
+Thu Jan 6 07:58:28 2005 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/usage.rb (RDoc::RDoc.usage_no_exit): Allow for colons
+ in path names on DOS machines. (thanks to Johan Nilsson)
+
+Thu Jan 6 00:02:35 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: use MockClock.sleep instead of Kernel.sleep
+ [ruby-dev:25387]
+
+Wed Jan 5 20:16:32 2005 Tanaka Akira <akr@m17n.org>
+
+ * random.c (limited_big_rand): didn't work if SIZEOF_BDIGITS == 2.
+ [ruby-dev:25408]
+
+ * random.c (random_seed): refined.
+
+Wed Jan 5 16:39:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * parse.y (BITSTACK_POP): workaround for bcc32 compiler's bug.
+ shift assignment operator '>>=' for __int64 in struct may
+ generate collapsed code. [ruby-dev:25342]
+
+ * win32/win32.[ch]: failed to compile on bcc32 (and probably wince)
+ [ruby-dev:25306]
+
+Wed Jan 5 12:49:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_initialize): Thread objects cannot be initialized
+ again. fixed: [ruby-core:04067]
+
+Wed Jan 5 02:30:11 2005 Tanaka Akira <akr@m17n.org>
+
+ * random.c (init_by_array): imported from mt19937ar-cok.tgz.
+ (genrand_int32): ditto.
+ (genrand_real): replaced with genrand_res53 in mt19937ar-cok.
+ (rand_init): support bignum for longer seed.
+ (random_seed): generate longer seed.
+ (make_mask): new function.
+ (limited_rand): ditto.
+ (limited_big_rand): ditto.
+ (rb_f_rand): call limited_rand and limited_big_rand.
+ [ruby-dev:25403]
+
+Tue Jan 4 23:25:29 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_rand): should return positive random number.
+ [ruby-dev:25401]
+
+Tue Jan 4 21:25:43 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/{test_drbssl.rb,test_drbunix.rb,ut_drb.rb}: use
+ DRbService.ext_service. reduce sleep.
+
+Mon Jan 3 14:01:54 2005 Tanaka Akira <akr@m17n.org>
+
+ * random.c (random_seed): don't use /dev/urandom if it is not
+ character device.
+
+Mon Jan 3 11:37:42 2005 Tanaka Akira <akr@m17n.org>
+
+ * random.c (random_seed): use /dev/urandom if available.
+ [ruby-dev:25392]
+
+Tue Jan 4 11:15:29 2005 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
+
+ * bignum.c (rb_big_rand): do not use rb_big_modulo to generate
+ random bignums. [ruby-dev:25396]
+
+Mon Jan 3 11:03:37 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/test_drb.rb: move TestDRbReusePort to new file.
+ [ruby-dev:25238]
+
+ * test/drb/drbtest.rb: change timeout.
+
+ * test/drb/ignore_test_drb.rb: new file.
+
+Mon Jan 3 07:27:46 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpauth/htpasswd.rb (WEBrick::Htpasswd#reload):
+ raise NotImplementedError if password is encrypted by digest
+ algorithms. This patch is contributed by sheepman. [ruby-list:40467]
+
+ * lib/webrick/httpauth/digestauth.rb
+ (WEBrick::HTTPAuth::DigestAuth#_authenticate): fix digest calculation.
+ This patch is contributed by sheepman. [ruby-list:40482]
+
+ * lib/webrick/{httpauth.rb,httpauth/basicauth.rb,httpproxy.rb}: use
+ pack/unpack-template char "m" instead of lib/base64.rb to do base64
+ encoding/decoding. fixed: [ruby-dev:25336]
+
+ * test/webrick/test_httpauth.rb: new file.
+
+Sun Jan 2 15:42:10 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: add lazy stop_service.
+
+ * lib/drb/extserv.rb: ditto.
+
+Sun Jan 2 01:17:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/drbtest.rb: add method DRbService.ext_service.
+
+ * test/drb/test_drb.rb: ditto.
+
+ * test/drb/test_drbssl.rb: ditto.
+
+Sat Jan 1 20:23:02 2005 Tanaka Akira <akr@m17n.org>
+
+ * io.c (argf_readpartial): new method ARGF.readpartial.
+ (io_getpartial): extracted from io_readpartial.
+ (io_readpartial): call io_getpartial.
+
+Sat Jan 1 17:44:54 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (each_capitalized): should join header field
+ value. This patch is contributed sheepman [ruby-list:40478]
+
+ * test/net/http/test_httpheader.rb: test it.
+
+Sat Jan 1 16:21:29 2005 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (copy_stream): use read/write instead of
+ sysread/syswrite, which allows duck typing. [ruby-dev:25369]
+
+ * lib/fileutils.rb (copy_stream): does NOT support nonblocking IO.
+ [ruby-dev:25370]
+
+ * lib/fileutils.rb (copy_entry): could not copy symlink.
+
+ * test/fileutils/test_fileutils.rb: test copy_entry, copy_file,
+ copy_stream.
+
+Sat Jan 1 04:20:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ns_spki.c (ossl_spki_set_challenge): should call
+ StringValue before GetSPKI. fixed: [ruby-dev:25359].
+
+Sat Jan 1 01:13:28 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_autoload): [ruby-dev:25373]
+
+Fri Dec 31 14:10:43 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::display_flow_item):
+ Fix problem if heading contains formatting.
+
+Fri Dec 31 00:08:02 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in (HAVE_RLIM_T): removed because not used.
+
+Thu Dec 30 22:45:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h: don't deprecate rb_read_check.
+
+ * io.c (STDIO_READ_DATA_PENDING): reverted from old READ_DATA_PENDING
+ to check stdio read buffer.
+ (rb_read_check): use STDIO_READ_DATA_PENDING.
+ (rb_read_pending): ditto.
+ (rb_getc): ditto.
+
+Thu Dec 30 05:39:35 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: eliminate unused members in struct parser_params.
+ [ruby-dev:25258] (again)
+
+ * parse.y: make parser_new() static.
+
+Thu Dec 30 00:41:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (svalue_to_avalue): [ruby-dev:25366]
+
+ * string.c (rb_str_justify): [ruby-dev:25367]
+
+Wed Dec 29 11:07:07 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/html/kilmer.rb: Update to use new
+ sections.
+
+Tue Dec 28 22:31:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_justify): create buffer string after argument type
+ conversion. fixed: [ruby-dev:25341]
+
+Tue Dec 28 17:18:17 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/net/telnet.rb (preprocess): remove NULL unless binmode.
+ fixed: [ruby-list:40320]
+
+Tue Dec 28 15:41:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (reinit): should initialize all static
+ variables. fixed: [ruby-list:40445]
+
+Tue Dec 28 15:25:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/lib/kconv.rb (Kconv::RegexpEucjp): second byte is up to
+ 0xfe.
+
+ * ext/nkf/lib/kconv.rb (Kconv#kconv): should handle UTF8 and UTF16
+ properly.
+
+Tue Dec 28 13:35:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_deflate_s_deflate, rb_inflate_s_inflate): ensure
+ freeing internal zstreams. fixed: [ruby-dev:25309]
+
+ * ext/zlib/zlib.c (rb_deflate_init_copy): replace rb_deflate_clone.
+
+Mon Dec 27 20:02:14 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix SEGV bug when deleting Tk interp
+
+ * ext/tk/lib/multi-tk.rb: ditto
+
+Mon Dec 27 16:54:05 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c (Init_ossl_x509name): should use
+ rb_hash_new to get exactly a Hash. fix [ruby-dev:25325].
+
+Mon Dec 27 15:29:12 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (cp_r): tested wrong file name.
+ [ruby-dev:25339]
+
+Mon Dec 27 15:15:18 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mv): should raise error when moving a
+ directory to the (empty) directory. [ruby-talk:124368]
+
+ * lib/fileutils.rb (mv): wrongly did not overwrite file on Win32
+ platforms.
+
+Mon Dec 27 14:36:20 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (NUM2RLIM, RLIM2NUM): Without SIZEOF_RLIM_T is not error.
+ fixed: [ruby-dev:25346]
+
+Sun Dec 26 16:21:39 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (Net::IMAP::PlainAuthenticator): added a new class
+ to support the PLAIN authentication mechanism. Thanks, Benjamin
+ Stiglitz.
+
+Sat Dec 25 01:28:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_select): [ruby-dev:25312]
+
+Fri Dec 24 23:27:18 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/image.rb: TkPhotoImage#cget bug fix
+
+Fri Dec 24 03:06:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_reopen, rb_io_reopen): prohibit to change access mode for
+ special IO ports. [ruby-dev:25225]
+
+ * io.c (next_argv): reduce use of stdio.
+
+Fri Dec 24 02:22:53 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_loader_transfer): check type conversion.
+
+ * ext/syck/rubyext.c (syck_parser_assign_io, rb_new_syck_node): duck
+ typing.
+
+ * ext/syck/rubyext.c (syck_parser_s_alloc, syck_parser_initialize):
+ allocation framework.
+
+ * ext/syck/rubyext.c (syck_emitter_s_alloc, syck_emitter_initialize):
+ ditto.
+
+Fri Dec 24 01:21:00 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkextlib/blt.rb: add BLT extension support
+
+ * ext/tk/lib/tkextlib/blt/*.rb: ditto
+
+ * ext/tk/lib/tkextlib/blt/tile/*.rb: ditto
+
+Thu Dec 23 23:43:24 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_setgroups): check if the argument length is
+ modified. fixed: [ruby-dev:25285]
+
+ * process.c (SIZEOF_RLIM_T): err if size of rlim_t is not set.
+
+Thu Dec 23 19:08:41 2004 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h: rename FMODE_UNSEEKABLE to FMODE_DUPLEX.
+
+ * io.c (io_check_tty): extracted function to set FMODE_LINEBUF and
+ FMODE_DUPLEX.
+
+Thu Dec 23 13:13:33 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: define TclTkLib::COMPILE_INFO and
+ RELEASE_DATE
+
+ * ext/tcltklib/extconf.rb: ditto
+
+ * ext/tk/tkutil.c: define TkUtil::RELEASE_DATE
+
+ * ext/tk/lib/tk.rb: define Tk::RELEASE_DATE
+
+Thu Dec 23 00:16:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (bsdi): use $(CC) for LDSHARED. fixed [ruby-dev:25270]
+
+Wed Dec 22 11:14:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_mode_modenum): replace O_ACCMODE with O_RDWR.
+ fixed: [ruby-dev:25273]
+
+Wed Dec 22 08:34:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/sym.c (rb_dlsym_initialize): extract internal pointers after
+ all argument conversion. fixed: [ruby-dev:25271]
+
+Tue Dec 21 16:15:21 2004 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb: use "" instead of "." if prefix argument is
+ nil in proxy methods. nil is default value.
+
+ * test/xmlrpc/test_webrick_server.rb, test/xmlrpc/webrick_testing.rb:
+ use threads instead of forking. this should fix issue #1208
+ (http://rubyforge.org/tracker/?func=detail&atid=1698&aid=1208&group_id=426).
+ removed testing of SSL enabled servlet as this hangs.
+
+Wed Dec 22 00:05:10 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/*, test/soap/*, sample/soap/authheader/*: eval cleanup.
+
+Tue Dec 21 22:07:41 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode_all): use rb_str_new4
+ to avoid SEGV.
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode,
+ ossl_asn1_decode_all): temporary value should be marked volatile.
+
+Tue Dec 21 12:42:34 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode):
+ use rb_str_new4 to avoid SEGV. fix [ruby-dev:25261]
+
+ * test/openssl/test_asn1.rb: add tests for OpenSSL::ASN1.
+
+Tue Dec 21 12:10:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/grid.rb: rescue bug of 'grid configure' on Tcl/Tk8.3-
+
+Mon Dec 20 22:52:29 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * added samples for the previous soap4r's commit.
+
+Mon Dec 20 22:56:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (set_stack_end): gcc noinline attribute is available since
+ gcc-3.1.
+
+Mon Dec 20 22:40:31 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * added files:
+ * lib/soap/mapping/wsdl*.rb
+ * lib/wsdl/soap/element.rb
+ * lib/wsdl/xmlSchema/simpleContent.rb
+
+ * modified files:
+ * lib/soap/*
+ * lib/wsdl/*
+ * lib/xsd/*
+ * test/soap/*
+ * test/wsdl/*
+ * test/xsd/*
+
+ * summary
+ * imported from the soap4r repository. Version: 1.5.3-ruby1.8.2
+
+ * added several XSD basetype support: nonPositiveInteger,
+ negativeInteger, nonNegativeInteger, unsignedLong, unsignedInt,
+ unsignedShort, unsignedByte, positiveInteger
+
+ * HTTP client connection/send/receive timeout support.
+
+ * HTTP client/server gzipped content encoding support.
+
+ * improved WSDL schema definition support; still is far from
+ complete, but is making step by step improvement.
+
+Mon Dec 20 14:45:19 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/net/https.rb: delete descriptions about key_file and cert_file.
+ fixed: [ruby-dev:25243]
+
+ * ext/openssl/lib/net/telnets.rb: ditto.
+
+Mon Dec 20 14:07:02 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: supports new features of Tcl/Tk8.5a2
+
+ * ext/tk/lib/tk/clock.rb: ditto
+
+ * ext/tk/lib/tk/text.rb: ditto
+
+ * ext/tk/lib/tk/panedwindow.rb: ditto
+
+Mon Dec 20 13:51:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyport): [ruby-talk:124072]
+
+Mon Dec 20 10:51:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (special_local_set): prevent the parser object from GC.
+ fixed: [ruby-dev:25252]
+
+Mon Dec 20 03:30:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session#initialize): empty session id was
+ used if request had no session key. fixed: [ruby-core:03981]
+
+Mon Dec 20 01:51:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (make_struct): [ruby-dev:25249]
+
+Mon Dec 20 00:16:54 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/encodings/SHIFT_JIS.rb: fixed LoadError bug.
+ [ruby-core:3958]
+
+Sun Dec 19 17:24:59 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (enable_rpath): use rpath flag to embed the library
+ path into extensions on ELF environment. [ruby-dev:25035]
+
+Sun Dec 19 11:01:25 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb: use standalone runner for -e.
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner#options): accept
+ multiple -p and -x options.
+
+ * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir#recursive_collect):
+ ditto.
+
+Sat Dec 18 16:36:23 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_deflate_s_deflate, rb_inflate_s_inflate):
+ disallow interrupt by type conversion. fixed: [ruby-dev:25226]
+
+Sat Dec 18 15:09:02 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/webrick/httpauth.rb,
+ lib/webrick/httpauth/{basicauth.rb,digestauth.rb}: use
+ pack/unpack-template char "m" instead of lib/base64.rb to do base64
+ encoding/decoding.
+
+Sat Dec 18 10:51:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_open_dir): new function. [ruby-dev:25242]
+
+ * io.c (rb_f_open): add type check for return value from to_open.
+
+Fri Dec 17 16:44:26 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in (ac_cv_sizeof_rlim_t): set 8 for BSD/OS.
+ Reported by OHARA Shigeki. [ruby-dev:25236]
+
+Fri Dec 17 16:28:12 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fix bug on setting up system encoding
+
+ * ext/tk/lib/tk/event.rb: fix error on require process
+
+ * ext/tk/lib/tk/font.rb: fix abnormal termination error on Windows
+
+ * ext/tk/lib/tk/virtevent.rb: TkVirtualEvent::PreDefVirtEvent.new()
+ accepts event-sequence arguments
+
+ * ext/tk/lib/tk/text.rb: fail to dump embedded images
+
+ * ext/tk/lib/tk/text.rb: tag_nextrange and tag_prevrange returns wrong
+ types of values
+
+ * ext/tk/lib/tk/texttag.rb: nextrange and prevrange returns wrong
+ types of values
+
+ * ext/tk/lib/tk/text.rb: add TkText::IndexModMethods module and
+ TkText::IndexString class to treat text index modifiers
+
+ * ext/tk/lib/tk/texttag.rb: use TkText::IndexModMethods module
+
+ * ext/tk/lib/tk/textmark.rb: ditto
+
+ * ext/tk/lib/tk/textimage.rb: ditto
+
+ * ext/tk/lib/tk/textwindow.rb: ditto
+
+ * ext/tk/lib/tk/textimage.rb: wrong gravity of text mark for embedded
+ image
+
+ * ext/tk/lib/tk/textwindow.rb: wrong gravity of text mark for
+ embedded window
+
+Fri Dec 17 13:33:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session#initialize): control adding
+ session_id hidden fields. fixed: [ruby-talk:123850]
+
+Fri Dec 17 00:01:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_proc_arity, rb_node_arity, rb_mod_method_arity,
+ rb_obj_method_arity): new functions to obtain method arity.
+ [ruby-dev:25143]
+
+Thu Dec 16 23:31:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): create RUBYARCHDIR also when no extension
+ is installed. fixed: [ruby-dev:25215]
+
+Thu Dec 16 22:36:57 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/test_drb.rb: adjust and reduce sleep.
+
+Thu Dec 16 18:37:08 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (ossl_raise): refine message format.
+
+Thu Dec 16 16:29:44 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/demos-en/widget: modify version check for
+ supporting features
+
+Thu Dec 16 16:03:50 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/bindtag.rb: bug fix [ruby-talk: 123667]
+
+ * ext/tk/lib/tk/timer.rb: accept :idle for the interval argument
+
+ * ext/tk/lib/tk.rb: add TkComm._callback_entry?()
+
+ * ext/tk/lib/multi-tk.rb: add MultiTkIp.cb_entry_class
+
+ * ext/tk/lib/tk/canvas.rb: use TkComm._callback_entry?()
+
+ * ext/tk/lib/tk/canvastag.rb: ditto
+
+ * ext/tk/lib/tk/dialog.rb: ditto
+
+ * ext/tk/lib/tk/optiondb.rb: ditto
+
+ * ext/tk/lib/tk/text.rb: ditto
+
+ * ext/tk/lib/tk/texttag.rb: ditto
+
+ * ext/tk/lib/tk/textwindow.rb: ditto
+
+ * ext/tk/lib/tk/timer.rb: ditto
+
+ * ext/tk/lib/tk/validation.rb: ditto
+
+ * ext/tk/lib/tkextlib/*: ditto
+
+Thu Dec 16 04:02:28 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/extconf.rb: bison is not needed if ripper.c exists.
+ [ruby-dev:25191]
+
+Thu Dec 16 03:27:10 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: remove junk.
+
+Thu Dec 16 00:57:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/syck/rubyext.c (rb_syck_io_str_read): [ruby-core:03973]
+
+Thu Dec 16 00:43:29 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: changed default binded address family to use an
+ available address family of host name. [druby-ja:101]
+
+ * lib/drb/ssl.rb: ditto
+
+Wed Dec 15 17:47:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#start_thread):
+ should log about all accepted socket. [ruby-core:03962]
+
+ * lib/webrick/accesslog.rb (WEBrick::AccessLog#setup_params):
+ "%%" and "%u" are supported. [webricken:135]
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#check_filename):
+ :NondisclosureName is acceptable if it is Enumerable.
+
+ * lib/webrick/config.rb (WEBrick::Config::FileHandler):
+ default value of :NondisclosureName is [".ht*", "*~"].
+
+Wed Dec 15 16:10:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_obj_id_obsolete): warn always.
+
+Wed Dec 15 15:31:02 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/set.rb (Set#==): [ruby-dev:25206]
+
+Wed Dec 15 14:32:18 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_fdisset): check whether the handle is valid.
+
+Wed Dec 15 10:30:37 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/openssl/ossl_digest.c (ossl_digest_initialize): [ruby-dev:25198]
+
+Tue Dec 14 19:17:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * utf8.c (utf8_is_mbc_ambiguous): [ruby-talk:123561]
+
+ * utf8.c (utf8_mbc_to_normalize): ditto.
+
+Tue Dec 14 17:08:15 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_close): need to reset osfhnd().
+
+Tue Dec 14 14:03:57 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (ossl_raise): avoid buffer overrun.
+ [ruby-dev:25187]
+
+Tue Dec 14 12:36:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::initialize): generate new
+ session if given session_id does not exist. [ruby-list:40368]
+
+Tue Dec 14 08:47:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): should mark ruby_eval_tree. [ruby-dev:25189]
+
+Mon Dec 13 18:13:52 2004 Tanaka Akira <akr@m17n.org>
+
+ * gc.c (set_stack_end): new function to obtain stack end address.
+ set_stack_end obtains a stack end address by an address of local
+ variable in the function.
+ (SET_STACK_END, STACK_END): use set_stack_end. don't use alloca.
+ This makes the conservative garbage collector to scan a stack frame
+ of the garbage_collect function itself. This is required because
+ callee-save registers may be stored in the frame.
+ [ruby-dev:25158]
+
+Mon Dec 13 02:45:51 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/curses.c (window_subwin): call NUM2INT() before
+ GetWINDOW(). fixed: [ruby-dev:25161]
+
+Mon Dec 13 00:58:02 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (cleanpath_aggressive): make it private.
+ (cleanpath_conservative): ditto.
+ Suggested by Daniel Berger. [ruby-core:3914]
+
+Sun Dec 12 21:32:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_super.rb (TestSuper#test_define_method): now methods
+ from procs can call super.
+
+Sun Dec 12 10:35:10 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/html/html.rb (RDoc::Page): Don't
+ show an accessor's r/w flag if none was specified
+
+Sun Dec 12 10:14:03 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc::parse_files): Never exclude files
+ explicitly given on the command line.
+
+Sat Dec 11 21:10:16 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: add DRbRemoteError. [ruby-list:40348],
+ [ruby-list:40390]
+
+ * test/drb/drbtest.rb: ditto.
+
+ * test/drb/ut_drb.rb: ditto.
+
+Sat Dec 11 13:08:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/optparse/subcommand.rb: a sample for sub commands like
+ cvs. contributed by Minero Aoki.
+
+Fri Dec 10 08:39:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_listen): get OpenFile just before calling
+ listen(2).
+
+Thu Dec 9 16:28:35 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/sdbm/init.c (GetDBM): typo.
+
+Thu Dec 9 16:21:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI#setup_header): avoid
+ SecurityError. [ruby-dev:24970]
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should wait
+ for reading request till data arrive. [ruby-talk:121068]
+
+Thu Dec 9 14:38:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_inspect): escape # which starts an expression
+ substitution. fixed: [ruby-core:03922]
+
+ * string.c (rb_str_dump): not escape # which isn't a substitution.
+
+Thu Dec 9 12:31:53 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (pipe_open): should set prog if argc != 0.
+
+Thu Dec 9 10:54:36 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_select): [ruby-dev:25132]
+
+ * ext/sdbm/init.c: ditto.
+
+ * ext/gdbm/gdbm.c: ditto.
+
+Thu Dec 9 10:19:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/socket/test_socket.rb (test_setsockopt): use SO_LINGER instead
+ of SO_BINDTODEVICE. fixed: [ruby-dev:25133]
+
+Thu Dec 9 03:08:36 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_init): set root-win title to "ruby" when
+ the running script is '-e one-liner' or '-' (stdin).
+
+ * ext/tcltklib/extconf.rb: add find_library("#{lib}#{ver}",..) for
+ stub libs
+
+ * ext/tk/lib/tk/textmark.rb: TkTextMarkCurrent and TkTextMarkAnchor
+ have a wrong parent class.
+
+ * ext/tk/lib/tk/dialog.rb: rename TkDialog2 --> TkDialogObj and
+ TkWarning2 --> TkWarningObj (old names are changed to alias names)
+
+ * ext/tk/lib/tk/dialog.rb: bug fix of treatment of 'prev_command'
+ option and hashes for configuration
+
+ * ext/tk/lib/tk/dialog.rb: add TkDialogObj#name to return the
+ button name
+
+ * ext/tk/lib/tk/radiobutton.rb: rename enbugged method value() ==>
+ get_value() and value=(val) ==> set_value(val).
+
+ * ext/tk/lib/tk/menu.rb: add TkMenu.new_menuspec
+
+ * ext/tk/lib/tk/menu.rb: add alias (TkMenuButton = TkMenubutton,
+ TkOptionMenuButton = TkOptionMenubutton)
+
+ * ext/tk/lib/tk/event.rb: new method aliases (same as option keys of
+ event_generate) for Event object
+
+ * ext/tk/lib/tk/font.rb: configinfo returns proper types of values
+
+ * ext/tk/lib/tk.rb: bind methods accept subst_args + block
+
+ * ext/tk/lib/tk/canvas.rb: ditto
+
+ * ext/tk/lib/tk/canvastag.rb: ditto
+
+ * ext/tk/lib/tk/frame.rb: ditto
+
+ * ext/tk/lib/tk/text.rb: ditto
+
+ * ext/tk/lib/tk/texttag.rb: ditto
+
+ * ext/tk/lib/tk/toplevel.rb: ditto
+
+ * ext/tk/lib/tkextlib/*: ditto and bug fix
+
+Wed Dec 8 23:54:29 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/html/html.rb (RDoc::Page): Typo
+ meant that h2 tag was invisible.
+
+Wed Dec 8 22:10:02 2004 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h, io.c, ext/dl/dl.c, ext/pty/pty.c, ext/socket/socket.c:
+ create FILE object only when required: popen(3) and DL's IO#to_ptr.
+ [ruby-dev:25122]
+
+ * io.c (rb_io_binmode): use setmode for Human68k. [ruby-dev:25121]
+
+Wed Dec 8 20:13:06 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * process.c (rb_spawn): support for DJGPP.
+
+ * lib/mkmf.rb (VPATH): specify the implicit path separator for DJGPP.
+
+Wed Dec 8 17:48:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): merge Guy Decoux's argument preserve
+ patch in [ruby-core:03874].
+
+Wed Dec 8 17:37:33 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pipe_exec): need to close original socket
+ handle.
+
+Wed Dec 8 14:31:36 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): [ruby-dev:25104]
+
+Wed Dec 8 13:49:46 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_pipe_exec): must close original handle
+ before exec. fixed: [ruby-dev:25112]
+
+Wed Dec 8 11:46:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (string_content): get rid of segfault at empty evstr.
+ fixed: [ruby-dev:25113]
+
+Wed Dec 8 03:26:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_bio.c (ossl_obj2bio): should not use fptr->f.
+ [ruby-dev:25101]
+
+Wed Dec 8 03:26:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * runruby.rb: prepend LIBRUBY_SO to LD_PRELOAD as well as rubytest.rb.
+
+Wed Dec 8 01:35:44 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (is_socket): reorder of function definitions.
+
+Wed Dec 8 00:44:31 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): win32 bidirectional pipe support.
+
+ * win32/win32.[ch] (rb_w32_pipe_exec): ditto.
+
+ * win32/win32.[ch] (socketpair): new function. POSIX socketpair
+ emulation.
+
+ * win32/win32.c (socketpair_internal): ditto.
+
+Wed Dec 8 00:25:07 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_version.rb: added version check test.
+ [ruby-dev:25053]
+
+Tue Dec 7 15:40:38 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c (io_fwrite): avoid context switch before writing to stderr.
+ [ruby-dev:25080]
+
+ * rubyio.h: refine deprecated declaration.
+
+ * configure.in, file.c, io.c: remove useless check: fseeko, etc.
+
+Tue Dec 7 13:42:07 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c (dir_s_mkdir): win32 special processing doesn't need any
+ longer.
+
+ * win32/win32.[ch] (rb_w32_mkdir): new function. POSIX.1 compatible
+ interface.
+
+ * win32/win32.[ch] (rb_w32_rmdir): new function.
+
+Tue Dec 7 00:27:37 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_setgroups): [ruby-dev:25081]
+
+Mon Dec 6 23:07:57 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: check -lsocket for socketpair and shutdown.
+ reported by Ville Mattila. [ruby-core:03903]
+
+Mon Dec 6 23:00:45 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (ac_cv_sizeof_rlim_t): setup for DJGPP.
+
+ * io.c (is_socket, shutdown): define dummy macros for DJGPP.
+
+ * process.c: use SIZEOF_RLIM_T instead of HAVE_RLIM_T for DJGPP.
+
+Mon Dec 6 21:19:40 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (is_socket): fix typos. [ruby-core:03900]
+
+Mon Dec 6 20:13:28 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (is_socket): new function.
+
+ * io.c (rb_io_close_read, rb_io_close_write): use is_socket().
+
+ * io.c (rb_io_fptr_finalize): need to check fptr->f before calling
+ rb_io_fptr_cleanup().
+
+ * io.c (pipe_open): win32 pipe support (experimental).
+
+ * win32/win32.[ch] (rb_w32_pipe_exec): return file descriptors
+ instead of FILE structure objects.
+
+ * win32/win32.[ch] (rb_w32_is_socket): new function.
+
+Mon Dec 6 19:40:40 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * Makefile.in (.y.c): simplify the rule.
+
+Mon Dec 6 18:08:10 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_eqq): document fix. [ruby-talk:122541]
+
+Mon Dec 6 17:49:30 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (run_trap_eval): add prototype for Microsoft compiler.
+
+Mon Dec 6 17:32:38 2004 Tanaka Akira <akr@m17n.org>
+
+ * rubyio.h, intern.h, io.c, file.c, process.c, ext/socket/socket.c,
+ ext/pty/pty.c, ext/io/wait/wait.c, ext/openssl/ossl_ssl.c:
+ Use own buffering mechanism instead of stdio. [ruby-dev:25056]
+
+ * io.c, ext/stringio/stringio.c, test/ruby/ut_eof.rb:
+ EOF flag removed.
+
+Mon Dec 6 17:15:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/socket/test_socket.rb (TestBasicSocket#test_setsockopt):
+ BasicSocket#setsockopt dumps core. [ruby-dev:25039]
+
+ * test/socket/test_tcp.rb (TestTCPSocket#test_recvfrom):
+ TCPSocket#recvfrom dumps core. [ruby-dev:24705]
+
+ * test/socket/test_udp.rb (TestUDPSocket#test_connect):
+ UDPSocket#connect dumps core. [ruby-dev:25045]
+
+ * test/socket/test_udp.rb (TestUDPSocket#test_bind):
+ UDPSocket#bind dumps core. [ruby-dev:25057]
+
+Mon Dec 6 09:59:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fread): take VALUE argument.
+
+ * ext/socket/socket.c (sock_connect): use rb_str_new4().
+ [ruby-dev:25052]
+
+ * eval.c (rb_yield_0): [ruby-dev:25051]
+
+Mon Dec 6 01:32:31 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_public_encrypt,
+ ossl_rsa_public_decrypt, ossl_rsa_private_encrypt,
+ ossl_rsa_private_decrypt): should take an optional argument
+ to specify padding mode. [ruby-talk:122539]
+
+ * ext/openssl/ossl_pkey_rsa.c (Init_ossl_rsa): add new constants
+ PKCS1_PADDING, SSLV23_PADDING, NO_PADDING and PKCS1_OAEP_PADDING
+ under OpenSSL::PKey::RSA.
+
+ * test/openssl/test_pkey_rsa.rb: new file.
+
+Sun Dec 5 19:39:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Completion#complete): new parameter
+ to direct case insensitiveness.
+
+ * lib/optparse.rb (OptionParser#order!): ignore case only for long
+ option. [ruby-dev:25048]
+
+Sun Dec 5 00:54:32 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * mkconfig.rb: setup library paths before requiring library.
+ [ruby-core:03892]
+
+Sat Dec 4 22:54:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_write): remove rb_str_locktmp(). [ruby-dev:25050]
+
+ * io.c (io_fwrite): takes VALUE string as an argument.
+ [ruby-dev:25050]
+
+ * ext/socket/socket.c (sock_connect): remove rb_str_locktmp().
+ [ruby-dev:25050]
+
+ * ext/socket/socket.c (udp_connect): [ruby-dev:25045]
+
+ * ext/socket/socket.c (udp_bind): ditto.
+
+ * ext/socket/socket.c (udp_send): ditto.
+
+ * ext/socket/socket.c (bsock_send): ditto.
+
+ * ext/socket/socket.c (s_recvfrom): ditto.
+
+ * hash.c (rb_hash_hash): should provide "hash" method where "eql?"
+ is redefined. [ruby-talk:122482]
+
+Sat Dec 4 21:29:05 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: (In previous commit) new method chown.
+
+ * lib/fileutils.rb: (In previous commit) new method chown_R.
+
+ * lib/fileutils.rb: (In previous commit) new method chmod_R
+ wrongly added. Removed now.
+
+Sat Dec 4 20:45:52 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir, mkdir_p): should chmod explicitly.
+ [ruby-core:03881]
+
+Sat Dec 4 18:54:09 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: removed empty lines from output.
+
+Sat Dec 4 18:49:09 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.1 -> 0.1.2
+
+ * lib/rss/rss.rb: #item=/#set_item and so on are obsolete.
+
+Sat Dec 4 14:28:56 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::Section::set_comment):
+ Section comments may now be bracketed by lines which are
+ ignored. You can now write
+ # -----------
+ # :section: Dave's Section
+ # comment material
+ # -----------
+ The lines before :section: are removed, and identical lines at the end are
+ also removed if present.
+
+Sat Dec 4 00:35:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (bsock_setsockopt): [ruby-dev:25039]
+
+Fri Dec 3 12:25:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.h: fix prototype for C++.
+
+Fri Dec 3 01:55:24 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: widget configuration by TkWindow#method_missing
+ returns proper object. "widget.option = val" returns val, and
+ "widget.option(val)" returns self.
+
+ * ext/tk/lib/tk/font.rb: TkFont#replace accepts only one font argument.
+
+ * ext/tk/lib/tk/radiobutton.rb: add TkRadiobutton#value and
+ TkRadiobutton#value=(val).
+
+ * ext/tk/lib/tk/spinbox.rb: callback substitution support on
+ command option.
+
+ * ext/tk/sample/demos-en/widget: bug fix (wrong image height)
+
+ * ext/tk/sample/demos-jp/widget: ditto.
+
+Fri Dec 3 00:21:05 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): prepare to pass a block from "call" method
+ to a Proc generated by Method#to_proc. [ruby-dev:25031]
+
+ * eval.c (rb_yield_0): actually passes a block given to "call".
+
+ * object.c (convert_type): use rb_respond_to() again. this fix is
+ based on [ruby-dev:25021]
+
+ * eval.c (rb_respond_to): funcall respond_to? if it's redefined.
+ [ruby-dev:25021]
+
+Thu Dec 2 15:13:53 2004 Michael Neumann <mneumann@ruby-lang.org>
+
+ * test/xmlrpc/test_parser.rb, test/xmlrpc/data/*.expected: Expected
+ values are now stored in YAML instead of using #inspect. This fixes
+ false hash order.
+
+Fri Dec 3 00:11:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_file_initialize): [ruby-dev:25032]
+
+Thu Dec 2 16:41:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_protect): prevent continuations created inside from being
+ called from the outside. [ruby-dev:25003]
+
+ * eval.c (rb_callcc, rb_cont_call): prohibit calling from different
+ signal contexts. [ruby-dev:25022]
+
+Thu Dec 2 10:45:02 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/readline/test_readline.rb: fix for NetBSD.
+
+Thu Dec 2 09:57:24 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct::Marshaler): OpenStruct can be
+ marshaled again. [ruby-core:03862]
+
+Thu Dec 2 09:30:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (thread_mark): mark thread group. [ruby-dev:25020]
+
+ * eval.c (thgroup_add): check whether the argument is really a Thread.
+
+Thu Dec 2 07:57:16 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_ctl): [ruby-dev:25019]
+
+Wed Dec 1 06:13:00 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c: add constant NKF::VERSION
+
+ * ext/nkf/nkf.c(guess): this becomes an alias of guess2
+
+ * ext/nkf/test.rb: add --no-cp932
+
+ * ext/nkf/nkf-utf8/nkf.c: original nkf2 revision 1.47
+
+Wed Dec 1 02:21:02 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * signal.c (sighandler): call handler immediately only for default
+ handlers. [ruby-dev:25003]
+
+Tue Nov 30 23:49:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): errno should be preserved for rb_sys_fail() when
+ fork failed.
+
+Tue Nov 30 16:18:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fread): need not to null terminate. [ruby-dev:24998]
+
+ * eval.c (rb_eval): should check previous frame for ZSUPER.
+
+ * io.c (read_all): remove unnecessary rb_str_resize().
+ [ruby-dev:24996]
+
+ * io.c (io_readpartial): ditto.
+
+ * io.c (io_read): ditto.
+
+Tue Nov 30 14:58:33 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb (install): add arguments explicitly to "super".
+
+Tue Nov 30 00:49:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (PUSH_FRAME): flags should have been initialized.
+
+ * eval.c (rb_eval): [ruby-core:03856]
+
+ * io.c (rb_io_sysread): use temporary lock. [ruby-dev:24992]
+
+Tue Nov 30 00:12:57 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regparse.c: now handles many alternatives (over 500000)
+ in regexp. [ruby-dev:24773]
+
+Mon Nov 29 16:06:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_write): insufficiently filled string
+ being extended when overwriting. [ruby-core:03836]
+
+Mon Nov 29 15:59:05 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct::method_missing): check method
+ duplication for -d.
+
+ * lib/ostruct.rb (OpenStruct::initialize): ditto.
+
+Mon Nov 29 15:22:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/io/nonblock/test_flush.rb: abandon tests when io/nonblock is
+ not supported.
+
+Mon Nov 29 13:37:54 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (fptr_finalize): must not use FILE after fclose().
+ [ruby-dev:24985]
+
+Mon Nov 29 13:13:13 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): push back the last space before next
+ loop because CharNext() eats it.
+
+Mon Nov 29 03:08:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (convert_type): [ruby-core:03845]
+
+ * eval.c (rb_funcall_rescue): new function.
+
+ * object.c (rb_Array): avoid using rb_respond_to().
+
+ * object.c (rb_Integer): ditto.
+
+ * eval.c (get_backtrace): no conversion for nil.
+
+ * parse.y (reduce_nodes): empty body should return nil.
+
+Mon Nov 29 01:18:18 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_check_writable): call io_seek regardless of
+ NEED_IO_SEEK_BETWEEN_RW. [ruby-dev:24986]
+
+Sun Nov 28 15:57:58 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::Element#tag): not use block_given? for
+ working with ruby 1.6 again.
+
+ * lib/rss/{0.9,2.0,trackback}.rb, lib/rss/maker/base.rb:
+ undef -> remove_method for working with ruby 1.6 again.
+
+Sun Nov 28 15:51:40 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::NotSetError): added.
+
+ * lib/rss/maker/{1.0,0.9,2.0}.rb: changed RSS Maker to raise
+ RSS::NotSetError if required values of maker.channel are not
+ set. [ruby-talk:120061]
+
+ * test/rss/test_maker_{1.0,0.9,2.0}.rb: changed tests to check RSS
+ Maker raises or not.
+
+Sun Nov 28 12:14:47 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regparse.c (fetch_token): fixed test failure on HP-UX ia64
+ ([ruby-dev:24859]).
+
+Sun Nov 28 12:08:15 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regparse.c, test/ruby/test_regexp.rb: fixed problem with UTF-8
+ characters that have U+00FE or invalid characters.
+
+Sun Nov 28 12:07:04 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regexec.c, test/ruby/test_regexp.rb: fixed segmentation fault
+ ([ruby-dev:24887]).
+
+Sun Nov 28 12:05:48 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regcomp.c, regint.h: fixed PLATFORM_UNALIGNED_WORD_ACCESS
+ problem ([ruby-dev:24802] and [ruby-core:3733])
+
+Sat Nov 27 23:43:39 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_initialize): [ruby-dev:24972]
+
+Sat Nov 27 21:43:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c: avoid data lost with nonblocking fd and
+ stdio buffering in sync mode. [ruby-dev:24966]
+ based on matz's patch [ruby-dev:24967]
+ (io_fwrite): new primitive writing function which writes
+ directly if sync mode.
+ (rb_io_fwrite): wrapper for io_fwrite now.
+ (io_write): call io_fwrite instead of rb_io_fwrite.
+
+Sat Nov 27 17:43:21 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/{0.9,1.0,2.0,trackback,xml-stylesheet}.rb: added
+ #setup_maker.
+
+ * test/rss/test_setup_maker_*.rb: added tests for #setup_maker.
+
+ * lib/rss/maker/base.rb(RSS::Maker::Items#max_size=): supported
+ output item size limitation.
+
+ * sample/rss/blend.rb: added sample for RSS Maker.
+
+Sat Nov 27 17:41:35 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/0.9.rb: supported RSS::Maker.make("0.91"). Now,
+ "0.9" is just alias of "0.91."
+
+ * test/rss/test_maker_0.9.rb: make("0.9") -> maker("0.91").
+
+ * test/rss/test_to_s.rb: ditto.
+
+Sat Nov 27 17:21:30 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/list_description.rb: untabified.
+
+ * sample/rss/rss_recent.rb: ditto.
+
+Sat Nov 27 14:44:15 2004 Kent Sibilev <ksibilev@bellsouth.net>
+
+ * lib/cgi/session.rb (CGI::Session::initialize): [ruby-core:03832]
+
+Sat Nov 27 09:41:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_fread): old rb_io_fread with file closing checking.
+ (rb_io_fread): wrapper for io_fread now.
+ [ruby-dev:24964]
+
+Fri Nov 26 18:02:44 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: Tk.destroy uses TkWindow#epath
+
+ * ext/tk/lib/tk/image.rb: bug fix
+
+ * ext/tk/lib/tk/wm.rb: add 'iconphoto' method(Windows only)
+
+ * ext/tk/lib/tkextlib/*: some methods uses TkWindow#epath
+
+Fri Nov 26 14:29:39 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_initialize): uninitialized fd was checked to see open
+ mode. [ruby-dev:24963]
+
+ * io.c (rb_io_initialize): uninitialized fd was used. [ruby-dev:24962]
+
+Fri Nov 26 13:49:06 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_initialize): should retrieve flags from copying file
+ descriptor. [ruby-dev:24961]
+
+ * eval.c (method_missing): raise TypeError for classes do not
+ have allocators. [ruby-core:03752]
+
+ * lib/erb.rb: add RDoc by James Edward Gray II. [ruby-core:03786]
+
+Fri Nov 26 13:29:02 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::look_for_directives_in): Break
+ out of preprocessing when we find a :section: directive (previously cleared out the
+ comment, but this apparently now generates an error in gsub!)
+
+Fri Nov 26 00:17:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_read): move StringValue() check before GetOpenFile().
+ [ruby-dev:24959]
+
+Thu Nov 25 20:14:57 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/thwait.rb (ThreadsWait#join_nowait): abnormally terminated
+ threads should be also processed. [ruby-talk:121320]
+
+Thu Nov 25 18:06:37 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: AC_CHECK_SIZEOF(rlim_t) to include stdio.h to fix
+ problem with autoconf 2.52 or earlier.
+ revert AC_PREREQ to 2.50.
+ [ruby-core:3809]
+
+Thu Nov 25 07:59:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: AC_PREREQ(2.53) [ruby-core:03800]
+
+ * io.c (read_all): stringify non-nil buffer argument, and always
+ taint the result. [ruby-dev:24955]
+
+Wed Nov 24 01:01:31 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_read): integer conversion should be prior to
+ GetOpenFile(). [ruby-dev:24952]
+
+ * configure.in, io.c: cancel [ ruby-Patches-1074 ].
+
+Tue Nov 23 08:09:50 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/menu.rb: improve usability of TkOptionMenubutton
+
+Tue Nov 23 02:00:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_chown): integer conversion should be prior to
+ GetOpenFile(). [ruby-dev:24949]
+
+Tue Nov 23 00:10:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_chown): integer conversion should be prior to
+ GetOpenFile(). [ruby-dev:24947]
+
+ * file.c (rb_file_truncate): ditto.
+
+ * file.c (rb_file_s_truncate): ditto.
+
+ * dir.c (dir_seek): use NUM2OFFT().
+
+ * misc/ruby-mode.el (ruby-non-block-do-re): [ruby-core:03719]
+
+Mon Nov 22 22:33:02 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::parse_require): Don't use names
+ of variables or constants when parsing 'require'
+
+Mon Nov 22 00:13:35 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_seek): should retrieve dir_data after NUM2INT().
+ [ruby-dev:24941]
+
+Sat Nov 20 23:57:33 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/README (et al): Add a new directive, :section:, and
+ change the output format to accommodate. :section: allows to to
+ group together methods, attributes, constants, etc under
+ headings in the output. If used, a table of contents is
+ generated.
+
+Sat Nov 20 23:56:54 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/options.rb (Options::parse): Force --inline-source if
+ --one-file option given
+
+Sat Nov 20 23:55:19 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_splice): should place index wrapping after
+ possible modification. [ruby-dev:24940]
+
+Sat Nov 20 23:25:12 2004 Minero Aoki <aamine@loveruby.net>
+
+ * io.c (rb_io_getline): f.gets("") did not work. [ruby-core:03771]
+
+ * test/ruby/test_io.rb (test_gets_rs): test it.
+
+Sat Nov 20 22:55:09 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/runner.rb (CROSS_COMPILING): need to require rbconfig.rb before
+ using CROSS_COMPILNG.
+
+Sat Nov 20 20:42:42 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/depend: fix ripper.o dependency.
+
+Sat Nov 20 17:48:29 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (io_reopen): work around problem with Cygwin fseeko
+ returning ESPIPE.
+
+Sat Nov 20 05:34:24 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: original nkf.c rev:1.40
+
+ * ext/nkf/test.rb: add test for mime encode/decode
+
+Sat Nov 20 01:45:04 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/xmlrpc/test_webrick_server.rb: move `requrie "webrick/https"'
+ into #setup_http_server method to avoid soap test errors.
+
+Sat Nov 20 01:37:34 2004 Johan Holmberg <holmberg@iar.se>
+
+ * eval.c (error_print): nicer traceback at interrupt.
+ [ruby-core:03774]
+
+Sat Nov 20 00:07:16 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): internal buffer should not be listed by
+ ObjectSpace.each_object() by String#gsub. [ruby-dev:24931]
+
+Fri Nov 19 22:44:43 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb: better support for -p/-x option.
+
+Fri Nov 19 17:46:56 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/0.9.rb (RSS::Maker::RSS09::Image#have_required_values):
+ changed /rss/channel/image to be optional. [ruby-Bugs:1047]
+
+ * test/rss/test_maker_0.9.rb: added tests for the above.
+
+Fri Nov 19 17:18:17 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.0 -> 0.1.1.
+
+ * lib/rss: #to_s used #tag.
+
+ * test/rss/test_to_s.rb: added.
+
+ * lib/rss/maker.rb (RSS::Maker.make): changed API. It's not
+ received modules which is used as the second argument.
+
+ * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#alternate):
+ changed return value type which is not String but Boolean.
+
+ * lib/rss/2.0.rb (RSS::Rss::Channel#ttl): changed return value
+ type which is not String but Integer.
+
+ * lib/rss/0.9.rb (RSS::Rss::Channel): <skipDays> has <day>s and
+ <skipHours> has <hour>s.
+
+ * lib/rss/maker/0.9.rb (RSS::Maker::RSS09::Channel): ditto.
+
+ * lib/rss/0.9.rb (RSS::Rss::Channel::Item): <item> has <category>s.
+
+ * lib/rss/maker/2.0.rb (RSS::Maker::Rss20::Channel::Item): ditto.
+
+ * lib/rss/2.0.rb (RSS::Rss::Channel): <channel> has <category>s.
+
+ * lib/rss/maker/2.0.rb (RSS::Maker::RSS20::Channel): ditto.
+
+ * lib/rss/trackback.rb: parent element has <trackback:about>s.
+
+ * lib/rss/maker/trackback.rb: ditto.
+
+Fri Nov 19 11:10:16 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb: add support for directory name
+ with -p/-x options.
+
+ * test/testunit/collector/test_dir.rb: ditto.
+
+ * lib/xmlrpc/datetime.rb (XMLRPC::DateTime#==): should use Array()
+ instead of to_a.
+
+Fri Nov 19 10:32:36 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_s_set_completion_append_character):
+ accept nil. [ruby-core:03765]
+
+Fri Nov 19 01:20:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::FileStore::initialize): raise
+ exception if data corresponding to session specified from the
+ client does not exist.
+
+Fri Nov 19 00:59:31 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): internal buffer should not be listed by
+ ObjectSpace.each_object(). [ruby-dev:24919]
+
+Thu Nov 18 23:42:36 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/depend: Never regenerate lib/ripper/core.rb
+ automatically. [ruby-dev:24911]
+
+Thu Nov 18 20:47:24 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch] (rb_w32_isatty): new function to replace MSVCRT's
+ isatty because it never sets errno.
+
+Thu Nov 18 18:41:08 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_stringchar.rb (test_bang): added.
+
+ * string.c (rb_str_upcase_bang, rb_str_capitalize_bang)
+ (rb_str_swapcase_bang): missing rb_str_modify().
+
+Thu Nov 18 17:05:01 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_rest_arg): store rest args into invisible local variable
+ in order to get rid of SEGV at ZSUPER. [ruby-dev:24913]
+
+Thu Nov 18 15:39:52 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_f_getenv): prohibit for $SAFE=4. [ruby-dev:24908]
+
+Thu Nov 18 14:58:42 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c: check $SAFE.
+
+ * test/readline/test_readline.rb: added tests for readline.
+
+Thu Nov 18 00:21:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_getpgrp): prohibit for $SAFE=2.
+ [ruby-dev:24899]
+
+ * process.c (get_pid): ditto. [ruby-dev:24904]
+
+ * process.c (get_ppid): ditto.
+
+ * array.c (rb_ary_delete): defer rb_ary_modify() until actual
+ modification. [ruby-dev:24901]
+
+Thu Nov 18 10:10:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c, rubyio.h (rb_io_modenum_flags): exported.
+
+ * ext/stringio/stringio.c (strio_initialize): allow Fixnum as mode as
+ well as IO.new does. [ruby-dev:24896]
+
+Wed Nov 17 23:47:30 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb: added. [ruby-dev:24884]
+
+Wed Nov 17 18:59:16 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * process.c (proc_getrlimit, proc_setrlimit): add rb_secure(2) to
+ methods of Process.{getrlimit,setrlimit}
+
+Wed Nov 17 13:56:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (newline_node): should not use FL_SET. [ruby-dev:24874]
+
+ * parse.y (string_content): should not use FL_UNSET.
+
+ * node.h (NODE_NEWLINE): remove unused bit to utilize flag field
+ in nodes.
+
+Wed Nov 17 13:05:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (rb_push_glob): fix overrun. [ruby-dev:24886]
+
+Wed Nov 17 11:48:17 2004 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/parser.rb, test/xmlrpc/test_features.rb: fixed "assigning
+ to constants" warnings
+
+Wed Nov 17 09:38:18 2004 Johan Holmberg <holmberg@iar.se>
+
+ * re.c (rb_reg_initialize_m): should raise exception instead of
+ compile error. [ruby-core:03755]
+
+Wed Nov 17 03:42:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_splice): move rb_str_modify() after
+ StringValue(), which may alter the receiver. [ruby-dev:24878]
+
+ * error.c (rb_error_frozen): now raise RuntimeError instead of
+ TypeError.
+
+Tue Nov 16 21:22:47 2004 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb (CGIServer): fixed bug when client sends
+ "Content-typ: text/xml; ..."
+
+Tue Nov 16 23:45:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_divmod): protect float values from GC by
+ assignment to local variables. [ruby-dev:24873]
+
+Tue Nov 16 14:31:54 2004 Michael Neumann <mneumann@ruby-lang.org>
+
+ * test/xmlrpc/*: imported and refactored original test cases.
+
+ * test/xmlrpc/test_webrick_server.rb, test/xmlrpc/webrick_testing.rb:
+ added test case that starts up a WEBrick XML-RPC server and performs
+ some tests on it (both http and https servers are started).
+
+ * lib/xmlrpc/create.rb (XMLWriter::each_installed_writer),
+ lib/xmlrpc/parser.rb (XMLParser::each_installed_parser):
+ added methods to simply original test cases
+
+ * lib/xmlrpc/parser.rb, lib/xmlrpc/datetime.rb: applied patch by
+ MoonWolf <moonwolf@moonwolf.com> to allow parsing datetime.iso8601
+ (e.g. 20041105T01:15:23Z).
+
+ * lib/xmlrpc/server.rb: fixed issue #998
+ (http://rubyforge.org/tracker/?func=detail&atid=1700&aid=998&group_id=426)
+
+ * lib/xmlrpc/create.rb, lib/xmlrpc/utils.rb: when marshalling/loading
+ user-defined data structures, use Class#allocate instead of defining
+ an empty #initialize method. module XMLRPC::Marshallable is now only
+ used for tagging.
+
+ * lib/xmlrpc/.document, lib/xmlrpc/README.rdoc: added howto
+
+Tue Nov 16 16:26:12 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32,wince}/setup.mak (-epilogue-): remove config.h and
+ config.status to force updating them.
+
+Tue Nov 16 16:20:45 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): position was ignored when a
+ buffer was passed. http://www.yo.rim.or.jp/~nov/d/?date=20041116#p03
+
+Tue Nov 16 13:35:54 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::options): add
+ new option --exclude (-x) to skip some tests. [ruby-core:3363],
+ [ruby-dev:24865]
+
+ * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir.exclude):
+ ditto.
+
+Tue Nov 16 11:19:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::options): use
+ Regexp conversion.
+
+Tue Nov 16 01:41:31 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_mod_check): frozen check should be separated.
+ [ruby-core:3742]
+
+ * array.c (rb_ary_update): pedantic check to detect
+ rb_ary_to_ary() to modify the receiver. [ruby-dev:24861]
+
+Mon Nov 15 18:58:05 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: check rlim_t more portably. [ruby-core:3735]
+
+Mon Nov 15 11:50:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-special-char-p, ruby-parse-partial): handle
+ operator symbols. [ruby-talk:120177]
+
+Mon Nov 15 08:58:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): make proc as an alias to Proc.new.
+ [ruby-dev:24848]
+
+Mon Nov 15 00:46:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): lambda{}.call(1) should raise exception.
+ [ruby-talk:120253]
+
+Mon Nov 15 00:33:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_clear): avoid revealing NULL pointer.
+ [ruby-dev:24766]
+
+ * string.c (str_gsub): add paranoid check. [ruby-dev:24827]
+
+ * string.c (str_mod_check): check frozen status as well.
+ [ruby-dev:24801]
+
+Sun Nov 14 18:59:03 2004 Tanaka Akira <akr@m17n.org>
+
+ * process.c (proc_getrlimit): new function for Process.getrlimit.
+ (proc_setrlimit): new function for Process.setrlimit.
+ [ruby-dev:24834]
+
+ * configure.in: check rlim_t and its size. check setrlimit.
+
+ * ruby.h (NUM2ULL): new macro.
+
+Sun Nov 14 13:27:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pp.rb (PP#object_address_group): remove odd number of 'f'
+ prefixed to negative address.
+
+Sun Nov 14 10:48:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/mathn.rb (Integer::gcd2): faster implementation by
+ <erlercw@siu.edu>. [ruby-talk:120232]
+
+Sun Nov 14 08:46:33 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/logger/test_logger.rb: Logger just expects
+ Logger#datetime_format to be used for Time#strftime independently of
+ locale. [ruby-dev:24828]
+
+Fri Nov 12 17:32:07 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/README.bcc32, win32/README.win32: need bison instead of
+ byacc.
+
+Fri Nov 12 15:15:06 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (ruby_options): now we cannot call rb_glob() before
+ ruby_init(), so call rb_w32_cmdvector() at ruby_options().
+
+ * win32/win32.{c,h} (rb_w32_cmdvector): rename make_cmdvector() and
+ export it.
+
+Fri Nov 12 14:08:01 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/event.rb: remove $LOADED_FEATURES trick
+
+ * ext/tk/lib/tk.rb: ditto
+
+Fri Nov 12 00:31:05 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_store): StringValue() may alter string
+ pointer. [ruby-dev:24783]
+
+Thu Nov 11 17:58:19 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (rb_glob): should have called rb_glob_caller().
+ [ruby-dev:24773]
+
+Thu Nov 11 16:56:10 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file.rb (test_truncate_wbuf): we want to test
+ only File#truncate, not behavior of seek(2).
+
+Thu Nov 11 01:52:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (syserr_initialize): use stringified object.
+ [ruby-dev:24768]
+
+Wed Nov 10 22:49:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (SimpleDelegator::dup): wrong number of
+ arguments.
+
+ * lib/delegate.rb (DelegateClass::dup): ditto.
+
+Wed Nov 10 19:47:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): path is a string object now.
+
+Wed Nov 10 12:31:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT (Example): extconf.rb is indispensable now.
+
+Wed Nov 10 03:33:36 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix SEGV when compiled with Tcl/Tk8.3.x
+ or older
+
+ * ext/tk/lib/tkextlib/tile/style.rb: bug fix
+
+Tue Nov 9 22:24:07 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf: original nkf.c rev:1.38
+
+ * ext/nkf/nkf.c: fix bug: can't parse long-name options
+
+ * ext/nkf/test.rb: fix bug: mime tests fail
+
+Tue Nov 9 14:27:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Officious): moved from DefaultList.
+
+Tue Nov 9 00:50:06 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb: Change version numbering of RDoc and ri
+
+Tue Nov 9 01:05:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (rb_glob2): do not allocate buffer from heap to avoid
+ memory leaks. use string object for buffering instead.
+ [ruby-dev:24738]
+
+ * dir.c (join_path): ditto.
+
+ * io.c (io_read): external input buffer may be modified even after
+ rb_str_locktmp(). [ruby-dev:24735]
+
+ * dir.c (fnmatch): p or s may be NULL. [ruby-dev:24749]
+
+Tue Nov 9 00:36:26 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/extservm.rb: add DRb::ExtServManager#uri=.
+ [ruby-dev:24743]
+
+Mon Nov 8 22:20:19 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_class):
+ Fix bug where parent class wasn't being detected if the
+ child class was defined using the A::B notation.
+
+Mon Nov 8 00:14:13 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: add setup for mingw32 cross compiling.
+ [ruby-talk:119413]
+
+Sun Nov 7 23:49:26 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bind-event methods accept multi substitution
+ arguments.
+
+ * ext/tk/lib/tk/canvas.rb: ditto.
+
+ * ext/tk/lib/tk/canvastag.rb: ditto.
+
+ * ext/tk/lib/tk/text.rb: ditto.
+
+ * ext/tk/lib/tk/texttag.rb: ditto.
+
+ * ext/tk/lib/tkextlib: ditto.
+
+Sat Nov 6 20:40:16 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: rename WIN32OLE#ole_obj_help to
+ WIN32OLE#ole_type. alias ole_obj_help to ole_type.
+
+ * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+
+Sat Nov 6 11:18:59 2004 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb (_parse): checks whether zone was given.
+
+Sat Nov 6 00:46:27 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_locktmp): check STR_TMPLOCK flag before
+ locking. [ruby-dev:24727]
+
+Fri Nov 5 19:07:16 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf: follow CVS Head of original nkf.
+
+Fri Nov 5 18:12:42 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/scrollable.rb: divide Scrollable module into
+ X_Scrollable and Y_Scrollable
+
+ * ext/tk/lib/tk/entry.rb: include X_Scrollable instead of Scrollable
+
+ * ext/tk/lib/tk/autoload.rb: define autoload for X_Scrollable and
+ Y_Scrollable
+
+Fri Nov 5 16:05:32 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: TkComm._at() supprts both of "@x,y" and "@x"
+
+Fri Nov 5 13:22:58 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/text.rb: sorry. bug fix again.
+
+Fri Nov 5 13:17:54 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/text.rb: bug fix
+
+Fri Nov 5 08:52:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark): stricter GC stack check.
+
+Fri Nov 5 08:34:43 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): should have removed rb_str_unlocktmp(str).
+ [ruby-dev:24708]
+
+ * ext/socket/socket.c (s_recvfrom): buffer modification check.
+ [ruby-dev:24708]
+
+Thu Nov 4 23:54:21 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regexec.c, regparse.c, regint.h: fixed conflicts between
+ vendor branch.
+
+Thu Nov 4 23:41:55 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * ascii.c, euc_jp.c, oniggnu.h, oniguruma.h, regcomp.c,
+ regenc.c, regenc.h, regerror.c, regexec.c, reggnu.c,
+ regint.h, regparse.c, regparse.h, sjis.c, utf8.c:
+ imported Oni Guruma 3.4.0.
+
+ * parse.y, re.c: Now mbclen() takes unsigned char as
+ its argument.
+
+Thu Nov 4 21:25:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): string modify check no longer based on
+ tmplock. [ruby-dev:24706]
+
+Thu Nov 4 21:13:48 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(typelib_file_from_typelib): search "win16"
+ entry to get library path.
+
+ * ext/win32ole/win32ole.c(oletypelib_path): ditto.
+
+ * ext/win32ole/win32ole.c(ole_typedesc2val): add VT_LPWSTR, VT_LPSTR,
+ VT_ERROR case.
+
+Thu Nov 4 15:02:14 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: forget to initialize instance_variables
+ of TkVarAccess objects
+
+Thu Nov 4 09:11:35 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark): enable GC stack checking.
+
+Thu Nov 4 03:11:33 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): lock strings temporarily. [ruby-dev:24687]
+
+ * ext/socket/socket.c (s_recvfrom): tmplock input buffer.
+ [ruby-dev:24705]
+
+Wed Nov 3 22:24:17 2004 Daigo Moriwaki <techml@sgtpepper.net>
+
+ * lib/webrick/httpauth/digestauth.rb: use Base64.encode64 to
+ avoid warnings.
+
+Wed Nov 3 17:19:59 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_uniq_bang): do not push frozen string from hash
+ table. [ruby-dev:24695]
+
+ * array.c (rb_ary_and): ditto.
+
+ * array.c (rb_ary_or): ditto.
+
+Wed Nov 3 17:02:48 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: support to use different Tcl commands between
+ configure and configinfo
+
+ * ext/tk/lib/font.rb: ditto.
+
+ * ext/tk/lib/itemconfig.rb: support to use different Tcl commands
+ between item_configure and item_configinfo
+
+ * ext/tk/lib/itemfont.rb: ditto.
+
+ * ext/tk/extconf.rb: install SUPPORT_STATUS
+
+ * ext/tk/lib/tkextlib: some bug fixes (see ext/tk/ChangeLog.tkextlib)
+
+Wed Nov 3 15:38:28 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/*.rb: removed tab width configuration headers.
+
+ * test/rss/test_maker_{0.9,1.0}.rb: sort -> do_sort.
+
+ * lib/rss/maker/*.rb: changed API to RSS version independence.
+
+ * lib/rss/maker/base.rb
+ (RSS::Maker::XMLStyleSheets::XMLStyleSheet): checked required
+ (pseudo) attributes.
+
+ * lib/rss/maker/base.rb (RSS::Maker::Items): sort -> do_sort.
+
+ * lib/rss/rss.rb (RSS::BaseModel.install_date_element): avoided
+ warning.
+
+ * lib/rss/0.9.rb (RSS::Rss#textinput): added convenience method.
+
+Tue Nov 2 16:35:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/enumerator/enumerator.c (each_cons_i): pass copy of an
+ internal consequent array. [ruby-talk:118691]
+
+Tue Nov 2 14:54:02 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): need to set cmd if argc == 0 (win32).
+
+Tue Nov 2 01:20:09 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (pipe_open): IO.popen should take array as 1st argument for
+ a command line. [ruby-dev:24678]
+
+ * eval.c (proc_invoke): nail down dyna_var node when Proc object
+ or continuation is created. [ruby-dev:24671]
+
+ * io.c (rb_io_s_popen): do not expand argv array. [ruby-dev:24670]
+
+Mon Nov 1 22:25:56 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb: changed xml-stylesheet's API of RSS Maker
+ like to item's one.
+
+ * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#guess_type): fixed
+ regular expression bug.
+
+ * test/rss/test_maker_xml-stylesheet.rb: updated tests for
+ xml-stylesheet.
+
+Mon Nov 1 13:59:28 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb (MANIFEST): do not use anymore, use extconf.rb instead.
+
+ * ext/enumerator/extconf.rb, ext/fcntl/extconf.rb,
+ ext/stringio/extconf.rb: added.
+
+ * MANIFEST, ext/**/MANIFEST: removed.
+
+ * README.EXT, README.EXT.ja: remove MANIFEST stuff.
+
+Mon Nov 1 11:52:18 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): avoid conflict of variable name. [ruby-dev:24662]
+
+Mon Nov 1 11:46:19 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * process.c (rb_f_exec): should check whether prog is NULL.
+
+Mon Nov 1 09:37:19 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker.rb: added entry point of RSS Maker.
+
+Mon Nov 1 03:14:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_get_method_body): store ICLASS in the cache.
+ [ruby-core:03672]
+
+ * eval.c (rb_provided): should return true for loading library
+ too for autoloading. [ruby-core:03655]
+
+Mon Nov 1 01:14:52 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_open): create copy of popen specifier. [ruby-dev:24656]
+
+ * string.c (rb_str_locktmp): lock string temporarily.
+
+ * string.c (str_independent): add tmplock check.
+
+ * io.c (io_write): lock output string temporarily.
+ [ruby-dev:24649]
+
+ * io.c (io_write): use rb_str_locktmp().
+
+ * io.c (read_all): ditto.
+
+Sun Oct 31 23:37:00 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c: on NetBSD don't use setruid() and setrgid().
+
+Sun Oct 31 23:12:10 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/*.rb: added RSS Maker.
+
+ * test/rss/test_maker_*.rb: added tests for RSS Maker.
+
+Sun Oct 31 16:58:12 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE.codepage, WIN32OLE.codepage=.
+
+ * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+
+Sun Oct 31 14:35:26 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: add "\075?UTF-8?Q?" for Gmail.
+
+Sun Oct 31 14:18:56 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: emit lexer-event values to the parser
+ (still incomplete).
+
+Sat Oct 30 15:24:41 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add WIN32OLE_TYPELIB class. add
+ WIN32OLE#ole_typelib method.
+
+ * ext/win32ole/tests/testOLETYPELIB.rb: add WIN32OLE_TYPELIB class.
+
+Sat Oct 30 06:53:24 2004 Peter Vanbroekhoven <peter.vanbroekhoven@cs.kuleuven.ac.be>
+
+ * eval.c (rb_eval): NODE_XSTR should pass copy of literal string.
+
+Sat Oct 30 00:19:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_update): a[n,m]=nil no longer works as element
+ deletion.
+
+ * enum.c (enum_sort_by): protect continuation jump in.
+ [ruby-dev:24642]
+
+ * eval.c (rb_eval), gc.c (gc_mark_children), node.h (NEW_ALIAS,
+ NEW_VALIAS), parse.y (fitem): allow dynamic symbols to
+ NODE_UNDEF and NODE_ALIAS.
+
+Fri Oct 29 21:27:51 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_check_initialized): new function to check uninitialized
+ object. [ruby-talk:118234]
+
+ * file.c (rb_file_path), io.c (rb_io_closed): check if initialized.
+
+Fri Oct 29 19:05:33 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf: follow nkf2.0.
+
+Fri Oct 29 17:18:22 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (ripper_s_allocate): add prototype for Microsoft compiler.
+
+ * range.c (range_step, range_each): need cast.
+
+Fri Oct 29 16:34:19 2004 Daiki Ueno <ueno@unixuser.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): Parse the rest of the
+ line after opening heredoc identifier. [ruby-dev:24635]
+
+Fri Oct 29 11:35:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_parser_append_print, rb_parser_while_loop): body node
+ can be empty. [ruby-dev:24628]
+
+Fri Oct 29 10:00:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): forget to free some memory chunks.
+ [ruby-core:03611]
+
+ * eval.c (ruby_cleanup): ruby_finalize_1 may cause exception,
+ should be wrapped by PUSH_TAG/POP_TAG(). [ruby-dev:24627]
+
+Thu Oct 28 08:42:02 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c (argf_forward): use ANSI style.
+ (argf_read): call argf_forward with argv argument.
+ [ruby-dev:24624]
+
+Wed Oct 27 09:17:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_gsub): use a string object for exception safeness.
+ [ruby-dev:24601]
+
+Wed Oct 27 07:38:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * node.h (NODE_TYPESHIFT): allow 4 more bits for line numbers.
+ [ruby-talk:117841]
+
+ * ruby.h (FL_ABLE): nodes are not subject for flag operations.
+
+ * io.c (ARGF_FORWARD): should have specified argv explicitly,
+ since we no longer have frame->argv saved. [ruby-dev:24602]
+
+Tue Oct 26 23:30:39 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::add_class_or_module):
+ Restore correct :nopdoc: behavior with nested classes and modules.
+
+Tue Oct 26 18:21:29 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (RESIZE_CAPA): check string attribute before modifying
+ capacity member of string structure. [ruby-dev:24594]
+
+Tue Oct 26 11:33:26 2004 David G. Andersen <dga@lcs.mit.edu>
+
+ * ext/zlib/zlib.c (gzreader_gets): use memchr() to to gain
+ performance. [ruby-talk:117701]
+
+Tue Oct 26 10:56:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): raise ArgumentError for extra
+ arguments, unless (digit)$ style used.
+
+Mon Oct 25 18:35:39 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (isUNCRoot): should check NUL after '.'.
+ [ruby-dev:24590]
+
+ * win32/win32.c (isUNCRoot): fixed buffer overrun.
+
+Mon Oct 25 08:03:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (get_backtrace): ignore illegal backtrace. [ruby-dev:24587]
+
+Sun Oct 24 00:40:50 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_load, search_required, rb_require_safe, rb_require): use
+ frozen shared string to avoid outside modification. [ruby-dev:24580]
+
+Sat Oct 23 23:40:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_fptr_finalize): leave stdin/stdout/stderr open in
+ interpreter termination. [ruby-dev:24579]
+
+Sat Oct 23 22:18:32 2004 Guy Decoux <ts@moulon.inra.fr>
+
+ * eval.c (frame_free): Guy Decoux solved the leak problem.
+ Thanks. [ruby-core:03549]
+
+Sat Oct 23 00:20:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_append_input): clear klass for z->input
+ to avoid potential vulnerability.
+
+ * ext/zlib/zlib.c (zstream_run): always use zstream_append_input()
+ to avoid SEGV. [ruby-dev:24568]
+
+Fri Oct 22 12:02:28 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_alias): was warning for wrong condition.
+ [ruby-dev:24565]
+
+Fri Oct 22 10:36:37 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#meta_vars):
+ should check if path_info is not nil.
+
+Fri Oct 22 00:22:31 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_shift_buffer): should restore class
+ field of a buffer. [ruby-dev:24562]
+
+Fri Oct 22 00:20:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_include): should not treat char as negative value.
+ [ruby-dev:24558]
+
+Thu Oct 21 21:32:30 2004 IWATSUKI Hiroyuki <don@na.rim.or.jp>
+
+ * lib/pstore.rb (PStore#transaction): Use the empty content when a
+ file is not found. [ruby-dev:24561]
+
+Thu Oct 21 19:06:15 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#send_body_io):
+ ensure to close @body. (http://bugs.debian.org/277520)
+
+Thu Oct 21 13:11:31 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (pipe_open): variable name "fpw" is conflicted.
+
+Thu Oct 21 00:36:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_alias): should warn on method discarding.
+ [ruby-dev:24546]
+
+ * ext/zlib/zlib.c (zstream_expand_buffer_into): hide internal
+ string buffer by clearing klass. [ruby-dev:24548]
+
+ * parse.y (lex_getline): should not touch ruby_debug_lines if
+ RIPPER is defined. [ruby-dev:24547]
+
+Wed Oct 20 19:45:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_gsub): reentrant check. [ruby-dev:24432]
+
+Wed Oct 20 12:42:53 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline): rs modification check should not interfere
+ in the loop.
+
+Wed Oct 20 10:31:33 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (lex_getline): should update ruby_debug_lines.
+
+Wed Oct 20 04:17:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_delete_if): should check if deleting element
+ is a string. [ruby-dev:24490]
+
+ * ext/sdbm/init.c (fsdbm_delete_if): ditto.
+
+Wed Oct 20 01:37:18 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_times): Array#* should return an instance of
+ the class of right operand. [ruby-dev:24526]
+
+ * ext/zlib/zlib.c (zstream_detach_buffer): should not expose
+ class-less object to Ruby world. [ruby-dev:24530]
+
+ * eval.c (proc_dup): provide Proc#dup as well. [ruby-talk:116915]
+
+ * eval.c (ruby_exec): stack marking position may be higher than
+ expected. thanks to Guy Decoux. [ruby-core:03527]
+
+Wed Oct 20 00:25:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (search_required): required name must not be changed before
+ loading. [ruby-dev:24492]
+
+Tue Oct 19 23:59:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_require_safe): provide the feature after loaded.
+ [ruby-list:40085]
+
+Tue Oct 19 22:43:12 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_attr): If
+ we come across 'attr' in a context where it isn't
+ followed by a symbol, just issue a warning.
+
+Tue Oct 19 20:32:50 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole.c(ole_invoke): retrieve the result value when
+ retrying the IDispatch::invoke.
+
+Tue Oct 19 17:24:11 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): block string buffer modification during
+ rb_io_fread() by freezing it temporarily. [ruby-dev:24479]
+
+ * dir.c (rb_push_glob): block call at once the end of method.
+ [ruby-dev:24487]
+
+ * ext/enumerator/enumerator.c (enum_each_slice): remove
+ rb_gc_force_recycle() to prevent potential SEGV.
+ [ruby-dev:24499]
+
+ * ext/zlib/zlib.c (zstream_expand_buffer): hide internal string
+ buffer by clearing klass. [ruby-dev:24510]
+
+Tue Oct 19 08:47:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_upto): method result must be checked. [ruby-dev:24504]
+
+ * eval.c (error_print): ditto. [ruby-dev:24519]
+
+Mon Oct 18 23:37:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): check inheritance by the internal function.
+ [ruby-dev:24515]
+
+Mon Oct 18 11:29:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_flags_mode, rb_io_mode_flags): distinguish whether file
+ not existing is created. [ruby-dev:24505]
+
+Mon Oct 18 07:26:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_truncate): discard read buffer before truncation.
+ [ruby-dev:24197]
+
+Mon Oct 18 01:56:03 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#initialize):
+ initial value of accpet-* should be array.
+
+Mon Oct 18 00:42:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_getservbyaname): protocol string
+ might be altered. [ruby-dev:24503]
+
+ * string.c (rb_str_upto): check if return value from succ is a
+ string. [ruby-dev:24504]
+
+Sun Oct 17 23:03:48 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb: TkTimer#start and restart accept a block
+
+Sun Oct 17 12:53:46 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (fole_func_methods): correct argument mismatch.
+ * ext/win32ole/win32ole.c (fole_get_methods): ditto.
+ * ext/win32ole/win32ole.c (fole_put_methods): ditto.
+ * ext/win32ole/tests/testWIN32OLE.rb: add test for WIN32OLE#ole_func_methods
+ WIN32OLE#ole_get_methods, WIN32OLE#ole_put_methods
+
+Sat Oct 16 14:45:28 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/0.9.rb (RSS::Rss#to_s): removed garbage.
+
+Sat Oct 16 13:42:49 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/: untabified.
+ * test/rss/: untabified.
+ * lib/rss/0.9.rb (RSS::Rss#to_s): inent -> indent.
+
+Sat Oct 16 13:34:56 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss: supported prety print.
+ * test/rss/test_1.0.rb: added test for calculating default indent size.
+
+Sat Oct 16 10:56:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): install-rb is needed for statically
+ linked extensions. [ruby-dev:24491]
+
+Fri Oct 15 18:07:08 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509store.c
+ (ossl_x509stctx_initialize): setup OpenSSL::X509::StoreContext with
+ ossl_x509stctx_* functions instead of X509_STORE_CTX_*.
+ (ossl_x509store_set_time): add OpenSSL::X509::Store#time=.
+ (ossl_x509stctx_set_time): add OpenSSL::X509::StoreContext#time=.
+
+ * test/openssl/ossl_x509store.rb: test certificate validity times.
+
+Fri Oct 15 18:04:35 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/timer.rb: TkTimer.new(interval, loop){ ... } is
+ acceptable. Add TkTimer.start ( == new + start ).
+
+Fri Oct 15 12:43:09 2004 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (Init_stack): make prototype declaration consistent with
+ the definition in gc.c.
+
+Thu Oct 14 13:33:59 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: added link to Tutorial.
+
+Tue Oct 12 21:22:50 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb:
+ add WEBrick::Config::FileHandler[:AcceptableLanguages].
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#set_filename): search files
+ having suffix of language-name which Accept-Language header field
+ includes if :AcceptableLanguages options is present.
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#get_servlet): new method to
+ search servlet correspond to the suffix of filename.
+
+ * lib/webrick/httprequest.rb: add attributes access methods: accept,
+ accept_charset, accept_encoding, accept_language, content_length
+ and content_type.
+
+ * lib/webrick/httpresponse.rb: add attribute access methods:
+ content_length, content_length=, content_type and content_type=.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.mime_types):
+ use the second suffix to detect media type. (the first suffix
+ may be a language name.)
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_qvalues):
+ add method to parse Accept header field. it returns an Array of
+ values sorted by the qvalues.
+
+Tue Oct 12 15:05:32 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (MODE_BINMODE, MODE_BINARY): fixed reversed condition.
+
+Mon Oct 11 17:51:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_popen): get mode string via rb_io_flags_mode() to
+ avoid mode string modification. [ruby-dev:24454]
+
+ * io.c (rb_io_getline_fast): should take delim as unsigned char to
+ distinguish EOF and '\377'. [ruby-dev:24460]
+
+ * io.c (rb_io_getline): add check for RS modification.
+ [ruby-dev:24461]
+
+ * enum.c (enum_sort_by): use qsort() directly instead using
+ rb_iterate(). [ruby-dev:24462]
+
+ * enum.c (enum_each_with_index): remove rb_gc_force_recycle() to
+ prevent access to recycled object (via continuation for
+ example). [ruby-dev:24463]
+
+Mon Oct 11 13:48:20 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/*: untabify
+
+Sun Oct 10 12:32:08 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::parse_require): Allow 'require'
+ to be used as a variable name
+
+Sun Oct 10 02:49:14 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/filter.rb: require ripper/tokenizer.
+
+ * ext/ripper/lib/ripper/filter.rb (parse): argument is optional.
+
+Sun Oct 10 02:43:13 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: \n between two comments disappeared.
+
+Sat Oct 9 21:23:37 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/converter.rb: changed to try to use Iconv for default
+ conversion.
+
+ * lib/rss/rss.rb: 0.0.9 -> 0.1.0.
+
+Sat Oct 9 19:50:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_getline): should not treat char as negative value.
+ [ruby-dev:24460]
+
+Sat Oct 9 00:25:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_fread): rb_thread_wait_fd() was lost.
+ [ruby-dev:24457]
+
+Fri Oct 8 21:36:56 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_traverse): return value of Dir.entries is
+ reliable. (pass $SAFE=1)
+
+ * lib/fileutils.rb (remove_dir): return value of Dir.foreach is
+ reliable. (pass $SAFE=1)
+
+Fri Oct 8 09:49:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): pointer modification check before each
+ iteration. [ruby-dev:24445]
+
+Fri Oct 8 01:13:05 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/optiondb.rb: make it more secure
+
+Thu Oct 7 23:47:57 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/scrollbar.rb: When 'set' operation, a scrollbar
+ cannot propagate view port information from the source widget
+ (that calls 'set') to other assigned widgets.
+
+Thu Oct 7 17:36:25 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: When CHILDKILLED and so on, Tk.errorCode returns
+ a Fixnum for 2nd element (it's pid) of the return value.
+
+Thu Oct 7 12:55:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_read): should freeze buffer before thread context
+ switch. [ruby-dev:24442]
+
+ * pack.c (pack_unpack): string conversion should at the top of the
+ method. [ruby-dev:24439]
+
+ * io.c (io_read): buffer should be frozen only after the length
+ check. [ruby-dev:24440]
+
+Thu Oct 7 02:56:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c: use FMODE_APPEND.
+
+Thu Oct 7 01:05:33 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add Tk.errorInfo and Tk.errorCode
+
+Thu Oct 7 00:08:37 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_s_sysopen): preserve path in the buffer allocated by
+ ALLOCA_N() to prevent modification. [ruby-dev:24438]
+
+Wed Oct 6 09:21:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_mode_flags): preserve append mode flag.
+ [ruby-dev:24436]
+
+ * io.c (rb_io_modenum_mode): do not use external output buffer.
+
+ * string.c (rb_str_justify): differ pointer retrieval to prevent
+ padding string modification. [ruby-dev:24434]
+
+ * range.c (range_each_func): allow func to terminate loop by
+ returning RANGE_EACH_BREAK.
+
+ * range.c (member_i): use RANGE_EACH_BREAK. [ruby-talk:114959]
+
+Tue Oct 5 09:53:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_fopen): mode string copy at the lowest level.
+
+ * io.c (rb_io_flags_mode): requires output buffer no more. no
+ allocation needed.
+
+ * array.c (rb_ary_index): takes a block to compare items in an
+ array. [ruby-talk:113069] [Ruby2]
+
+ * array.c (rb_ary_rindex): ditto.
+
+Mon Oct 4 14:03:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_file_open_internal, rb_io_reopen): fname might be altered
+ while GC. [ruby-dev:24408]
+
+Mon Oct 4 12:53:45 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/optiondb.rb: support definition of command
+ resources on widgets
+
+ * ext/tk/lib/tk/image.rb: bug fix
+
+Sun Oct 3 21:16:05 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (TEXT_REGEXP): allow 8-bit characters for the german
+ version of Microsoft Exchange Server.
+
+ * lib/net/imap.rb (RTEXT_REGEXP): ditto.
+
+ * lib/net/imap.rb (CTEXT_REGEXP): ditto.
+
+Sat Oct 2 20:34:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (local_vars): moved to struct parser_params.
+ [ruby-dev:24391]
+
+ * parser.y (stmts): remove suspicious NODE_BEGIN. [ruby-dev:24390]
+
+ * node.h (NEW_DVAR): extra semicolon.
+
+Sat Oct 2 00:42:20 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_byte): retrieve pointer from string value for each
+ time. [ruby-dev:24404]
+
+ * marshal.c (r_bytes0): ditto.
+
+ * enum.c (sort_by_i): re-entrance check added. [ruby-dev:24399]
+
+ * io.c (io_read): should freeze all reading buffer.
+ [ruby-dev:24400]
+
+ * string.c (rb_str_sum): should use bignums when bits is greater
+ than or equals to sizeof(long)*CHAR_BITS. [ruby-dev:24395]
+
+ * eval.c (specific_eval): defer pointer retrieval to prevent
+ unsafe sourcefile string modification. [ruby-dev:24382]
+
+ * string.c (rb_str_sum): wrong cast caused wrong result.
+ [ruby-dev:24385]
+
+ * enum.c (enum_sort_by): hide temporary array from
+ ObjectSpace.each_object. [ruby-dev:24386]
+
+ * string.c (rb_str_sum): check was done with false pointer.
+ [ruby-dev:24383]
+
+ * string.c (rb_str_sum): string may be altered. [ruby-dev:24381]
+
+Fri Oct 1 11:40:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_eval): defer pointer retrieval to prevent unsafe
+ sourcefile string modification. [ruby-dev:24373]
+
+ * io.c (io_read): block string buffer modification during
+ rb_io_fread() by freezing it temporarily. [ruby-dev:24366]
+
+ * io.c (rb_io_s_popen): mode argument may be altered.
+ [ruby-dev:24375]
+
+ * file.c (rb_file_s_basename): ext argument may be altered.
+ [ruby-dev:24377]
+
+ * enum.c (enum_sort_by): use NODE instead of 2 element arrays.
+ [ruby-dev:24378]
+
+ * string.c (rb_str_chomp_bang): StringValue() may change the
+ receiver. [ruby-dev:24371]
+
+Fri Oct 1 11:25:20 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/grid.rb: revive TkGrid.grid
+
+ * ext/tk/lib/tk/pack.rb: revive TkPack.pack
+
+ * ext/tk/lib/tk/place.rb: revive TkPlace.place
+
+Thu Sep 30 00:50:44 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_init): bug fix
+
+ * ext/tk/tkutil.c (get_eval_string_core): accept a Regexp object
+
+ * ext/tk/lib/multi-tk.rb: fix bug on 'exit' operation
+
+ * ext/tk/lib/tk/text.rb: 'tksearch' accepts a Regexp object as a
+ matting pattern argument
+
+Wed Sep 29 10:58:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (sort_by_i): internally used object must not be changed
+ outside. [ruby-dev:24368]
+
+Mon Sep 27 21:25:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_call0): invoke finalizers periodically.
+
+ * gc.c (gc_sweep): defer running finalizers. [ruby-dev:24354]
+
+ * gc.c (rb_gc_finalize_deferred): run deferred finalizers.
+
+Mon Sep 27 15:01:59 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: missing ';'.
+
+Mon Sep 27 13:46:45 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h, struct.c (rb_struct_s_members, rb_struct_members): public
+ accessors. [ruby-dev:24342]
+
+ * marshal.c (w_object, r_object0): use accessors.
+
+Mon Sep 27 09:14:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete): comparison may change the capacity.
+ [ruby-dev:24348]
+
+ * array.c (rb_ary_fill): fill should honor length argument.
+ [ruby-dev:24346]
+
+ * array.c (rb_ary_replace): should not use ptr from shared array.
+ [ruby-dev:24345]
+
+ * ext/socket/socket.c (s_accept): don't retry for EWOULDBLOCK.
+ [ruby-talk:113807]
+
+Sun Sep 26 08:05:10 2004 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: provides {Time,Date,DateTime}#to_{time,date,datetime}.
+
+ * sample/cal.rb: uses getoptlong instead of getopts.
+
+Sat Sep 25 18:39:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (flatten): element size might change during comparison.
+ [ruby-dev:24343]
+
+Sat Sep 25 01:52:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_s_members): wrong call of struct_members.
+ [ruby-dev:24333]
+
+Fri Sep 24 16:09:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): propagate DVAR_DONT_RECYCLE on termination
+ to avoid double call to rb_gc_force_recycle(). [ruby-dev:24311]
+
+Fri Sep 24 08:29:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (rb_parser_append_print): should handle prelude.
+ [llama@u01.gate0]
+
+ * parse.y (rb_parser_while_loop): ditto.
+
+ * array.c (rb_ary_subseq): original object might be modified after
+ sharing data creation. [ruby-dev:24327]
+
+ * array.c (rb_ary_replace): ditto.
+
+ * array.c (ary_make_shared): freeze shared array. [ruby-dev:24325]
+
+ * struct.c (struct_members): always check struct size and size of
+ members list in the class. [ruby-dev:24320]
+
+Thu Sep 23 19:48:14 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/Makefile.dev: removed.
+
+ * ext/ripper/ripper.rb.in: moved to lib/ripper/core.rb.in.
+
+ * ext/ripper/lib/ripper/core.rb: new file.
+
+ * ext/ripper/lib/ripper/core.rb.in: new file.
+
+ * ext/ripper/tools/generate-ripper_rb.rb: change comment.
+
+ * test/ripper/*.rb: on__scan event removed.
+
+ * test/ripper/*.rb: event name is changed: on__XXX -> on_XXX.
+
+Thu Sep 23 09:29:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_sub_bang): check if string is not modified
+ during iteration. [ruby-dev:24315]
+
+ * hash.c (rb_hash_rehash): replace st_foreach() by its deep
+ checking counterpart. [ruby-dev:24310]
+
+Wed Sep 22 14:21:54 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: on__scan event removed.
+
+ * parse.y [ripper]: event name is changed: on__XXX -> on_XXX.
+
+ * ext/ripper/eventids2.c: ditto.
+
+ * ext/ripper/ripper.rb.in: ditto.
+
+ * ext/ripper/lib/ripper.rb: sync with ripper.rb.in.
+
+ * ext/ripper/lib/ripper/tokenizer: ditto.
+
+ * ext/ripper/lib/ripper/filter: new file.
+
+ * sample/ripper/colorize.rb: new file.
+
+ * sample/ripper/strip-comment.rb: new file.
+
+Wed Sep 22 13:50:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (hash_alloc): was using tbl pointer without
+ initialization.
+
+Wed Sep 22 13:38:12 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_rehash): add iteration check. [ruby-dev:24301]
+
+ * st.c (st_foreach): add deep check.
+
+ * hash.c (rb_hash_fetch): returns KeyError instead of IndexError.
+
+ * hash.c (env_fetch): ditto.
+
+Wed Sep 22 13:02:02 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_call_handler): workaround for Ctrl-C.
+
+Wed Sep 22 09:04:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y: remove global variables ruby_eval_tree and
+ ruby_eval_tree_begin.
+
+ * array.c (rb_ary_collect_bang): element size might change during
+ comparison. [ruby-dev:24300]
+
+ * array.c (rb_ary_reject_bang): ditto. [ruby-dev:24300]
+
+ * array.c (rb_ary_eql): ditto. [ruby-dev:24300]
+
+Wed Sep 22 00:11:12 2004 Dave Thomas <dave@pragprog.com>
+
+ * process.c: Add documentation for fork()
+
+Tue Sep 21 18:29:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_uniq_bang): element size might change during
+ comparison. [ruby-dev:24298]
+
+Mon Sep 20 17:46:51 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/tokenizer.rb: fix typo.
+
+Mon Sep 20 17:38:43 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/test_scanner_events.rb: tokens must be reordered.
+
+ * ext/ripper/lib/ripper/tokenizer.rb: ditto.
+
+Mon Sep 20 16:58:16 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: do not delay dispatching.
+
+ * ext/ripper/lib/ripper/tokenizer.rb: sort tokens by right order.
+
+Mon Sep 20 15:17:47 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/lib/ripper/tokenizer.rb: new file.
+
+Mon Sep 20 15:13:52 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/test_scanner_events.rb: test #lineno and #column.
+
+Mon Sep 20 14:50:17 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: delayed heredocument events should be
+ dispatched after EOF.
+
+Mon Sep 20 14:39:42 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: adjust lineno and columns for multi-line
+ strings.
+
+ * parse.y [ripper]: delay heredocument events until seeing
+ end-of-line.
+
+ * parse.y [ripper]: event on__heredoc_contentn ->
+ on__tstring_content.
+
+ * ext/ripper/eventids2.c: ditto.
+
+ * ext/ripper/lib/ripper.rb: sync with eventids2.c.
+
+ * test/ripper/test_scanner_events.rb: test it.
+
+ * ext/ripper/tools/generate-ripper_rb.rb: show basename of input.
+
+ * ext/ripper/Makefile.dev: support objdir build.
+
+Mon Sep 20 13:22:55 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: remove Ripper#pos.
+
+ * parse.y [ripper]: Ripper#column should return the column of the
+ current token.
+
+Mon Sep 20 12:02:41 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: unify old_lex_p and token_head.
+
+ * test/ripper/test_scanner_events.rb: now \r\n is saved correctly.
+
+ * parse.y: new macro lex_goto_eol() for next change.
+
+Mon Sep 20 11:01:55 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: adjust line number for heredoc. [ruby-dev:24272]
+
+Mon Sep 20 04:49:22 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/ripper.rb.in: new const Ripper::PARSER_EVENT_TABLE.
+
+ * ext/ripper/ripper.rb.in: new const Ripper::SCANNER_EVENT_TABLE.
+
+ * ext/ripper/lib/ripper.rb: sync with ripper.rb.in.
+
+Mon Sep 20 04:13:00 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/ripper/test_scanner_events.rb: test spaces before heredoc
+ mark.
+
+Mon Sep 20 03:46:54 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: spaces before heredoc marker was lost.
+ [ruby-dev:24272]
+
+ * keywords: rb_reserved_word() should be defined only in ruby
+ core. [ruby-dev:24272]
+
+ * lex.c: sync with keywords.
+
+ * ext/ripper/ripper.rb.in (parse): fix typo.
+
+ * ext/ripper/lib/ripper.rb: sync with ripper.rb.in.
+
+Mon Sep 20 03:37:59 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/zlib/zlib.c (gzfile_read_raw): call readpartial at first.
+ (Zlib::GzipReader#readpartial): new method.
+
+Mon Sep 20 00:24:19 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_sort_by): do not use qsort directly. use
+ rb_ary_sort_bang() instead. [ruby-dev:24291]
+
+ * enum.c (enum_sort_by): pedantic type check added.
+ [ruby-dev:24291]
+
+ * hash.c (rb_hash_foreach_iter): check iter_lev after each
+ iteration. [ruby-dev:24289]
+
+ * array.c (rb_ary_and): element size might change during
+ comparison. [ruby-dev:24290]
+
+ * array.c (rb_ary_or): ditto. [ruby-dev:24292]
+
+ * array.c (rb_ary_equal): wrong fix. [ruby-dev:24286]
+
+Sat Sep 18 15:02:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_equal): element size might change during
+ comparison. [ruby-dev:24254]
+
+ * array.c (rb_ary_diff): ditto. [ruby-dev:24274]
+
+ * array.c (rb_ary_select): ditto. [ruby-dev:24278]
+
+ * array.c (rb_ary_delete): ditto. [ruby-dev:24283]
+
+ * array.c (rb_ary_rindex): ditto. [ruby-dev:24275]
+
+ * array.c (rb_ary_initialize): element size might change during
+ initializing block. [ruby-dev:24284]
+
+Sat Sep 18 14:10:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_chdir): avoid memory leak and unnecessary chdir to
+ the original directory when exception has caused in changing
+ direcotry or within block. thanks to Johan Holmberg
+ <holmberg@iar.se> [ruby-core:03446]
+
+Fri Sep 17 20:29:33 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y: add prototypes for Microsoft compiler.
+
+ * ext/ripper/depend (parse.obj): lex.c exists at hdrdir.
+
+ * {bcc32,win32,wince}/Makefile.sub (YACC, YFLAGS, parse.c):
+ use bison.
+
+Fri Sep 17 17:11:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete): element comparison might change array
+ size. [ruby-dev:24273]
+
+ * parse.y: make ruby parser reentrant. merge ripper parser to the
+ real one. this change makes ruby require bison.
+
+ * file.c (rb_file_truncate): clear stdio buffer before truncating
+ the file. [ruby-dev:24191]
+
+ * ext/digest/digest.c: use rb_obj_class() instead of CLASS_OF
+ which might return singleton class. [ruby-dev:24202]
+
+Fri Sep 17 16:07:09 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: improve exit operation
+
+Fri Sep 17 15:01:57 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix SEGV when (thread_)vwait or
+ (thread_)tkwait
+
+ * ext/tk/lib/tk.rb: add alias wait_window to wait_destroy
+
+ * ext/tk/lib/multi-tk.rb: support calling 'mainloop' on slave
+ interpreters (however, the 'real' eventloop must be run on the
+ Default Master IP)
+
+ * ext/tk/lib/remote-tk.rb: follow the changes of ext/tk/lib/multi-tk.rb
+
+ * ext/tk/sample/remote-ip_sample2.rb: ditto
+
+ * ext/tk/sample/tkoptdb-safeTk.rb: ditto
+
+Thu Sep 16 18:12:13 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI#start): should set REMOTE_USER
+ to request.user attribute.
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#initialize): should expand
+ the pathname of document root directory.
+
+Thu Sep 16 15:49:28 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_intern): protect string argument from GC.
+ [ruby-core:03411]
+
+Wed Sep 15 20:22:23 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkoptdb-safeTk.rb: fix a bug depend on the changes
+ of MultiTkIp
+
+Tue Sep 14 23:54:11 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string was en-bugged by
+ the previous changes.
+
+Tue Sep 14 23:45:44 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::TextFormatter.for):
+ Add Eric Hodel's simpleformatter.
+
+Tue Sep 14 22:11:08 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: Add rdoc.
+
+Tue Sep 14 20:24:49 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y [ripper]: space event is on__sp, not on__lwsp.
+ [ruby-dev:24257]
+
+ * ext/ripper/eventids2.c: ditto.
+
+ * ext/ripper/lib/ripper.rb: ditto.
+
+ * ext/ripper/depend (ripper.o): No action is needed.
+ [ruby-dev:24260]
+
+ * ext/ripper/depend: Borland make does not accept pipes in
+ Makefile rules. [ruby-dev:24589]
+
+ * ext/ripper/depend: separate rules for developpers.
+
+ * ext/ripper/Makefile.dev: new file.
+
+ * ext/ripper/MANIFEST: add Makefile.dev.
+
+ * ext/ripper/tools/generate-eventids1.rb: read from file, not
+ stdin.
+
+ * ext/ripper/extconf.rb: clean ripper.E.
+
+ * ext/ripper/tools/generate-ripper_rb.rb: #include ids1/ids2
+ function was lost.
+
+ * ext/ripper/tools/generate-ripper_rb.rb: SCANNER_EVENTS wrongly
+ contained parser events.
+
+ * ext/ripper/lib/ripper.rb: ditto.
+
+Tue Sep 14 16:59:37 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix SEGV
+
+ * ext/tk/lib/multi-tk.rb: improve safe-level handling of argument proc
+
+ * ext/tk/sample/multi-ip_sample.rb: rename of old 'safe-tk.rb'
+
+ * ext/tk/sample/safe-tk.rb: new sample script
+
+Mon Sep 13 21:33:40 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_to_s): add optional
+ second argument to specify the output format (see also
+ X509_NAME_print_ex).
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_init): new constants:
+ OpenSSL::X509::Name::COMPAT, OpenSSL::X509::Name::RFC2253,
+ OpenSSL::X509::ONELINE, OpenSSL::X509::MULTILINE.
+
+ * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name::RFC2253DN):
+ new module to provide the parse for RFC2253 DN format.
+
+ * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name.parse_rfc2253):
+ new method to parse RFC2253 DN format.
+
+Mon Sep 13 19:16:33 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (blk_copy_prev): need frame_dup(). [ruby-dev:24103]
+
+Mon Sep 13 16:23:27 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp.new_master and new_slave accept
+ safe-level value argument
+
+Mon Sep 13 10:48:37 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_getpid): don't need to use _getpid() on
+ mswin32 and mingw32.
+
+Mon Sep 13 10:22:05 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * object.c (nil_inspect): fix typo.
+
+Mon Sep 13 09:29:58 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/depend: (nmake hack) prepend "./" to ripper.c to
+ avoid {$(srcdir)}.
+
+Mon Sep 13 06:43:42 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper/tools/list-parse-event-ids.rb: does not use getopts.
+
+ * ext/ripper/tools/list-scan-event-ids.rb: ditto.
+
+Mon Sep 13 02:42:28 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/Setup: add ripper.
+
+ * ext/Setup.atheos: ditto.
+
+ * ext/Setup.dj: ditto.
+
+ * ext/Setup.emx: ditto.
+
+ * ext/Setup.nt: ditto.
+
+ * ext/Setup.x68: ditto.
+
+Mon Sep 13 02:26:31 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/ripper: ripper extension added.
+
+ * ext/ripper/MANIFEST: new file.
+
+ * ext/ripper/README: new file.
+
+ * ext/ripper/depend: new file.
+
+ * ext/ripper/extconf.rb: new file.
+
+ * ext/ripper/eventids2.c: new file.
+
+ * ext/ripper/ripper.rb.in: new file.
+
+ * ext/ripper/lib/ripper.rb: new file.
+
+ * ext/ripper/test/check-event-arity.rb: new file.
+
+ * ext/ripper/test/check-event-coverage.sh: new file.
+
+ * ext/ripper/test/check-scanner-event-coverage.rb: new file.
+
+ * ext/ripper/test/list-called-events.rb: new file.
+
+ * ext/ripper/test/src_rb: new file.
+
+ * ext/ripper/test/validate.rb: new file.
+
+ * ext/ripper/tools/generate-eventids1.rb: new file.
+
+ * ext/ripper/tools/generate-param-macros.rb: new file.
+
+ * ext/ripper/tools/generate-ripper_rb.rb: new file.
+
+ * ext/ripper/tools/list-parse-event-ids.rb: new file.
+
+ * ext/ripper/tools/list-scan-event-ids.rb: new file.
+
+ * ext/ripper/tools/preproc.rb: new file.
+
+ * ext/ripper/tools/strip.rb: new file.
+
+ * test/ripper: ripper tests added.
+
+ * test/ripper/dummyparser.rb: new file.
+
+ * test/ripper/test_parser_events.rb: new file.
+
+ * test/ripper/test_scanner_events.rb: new file.
+
+Mon Sep 13 01:03:02 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: improve control of preserv/release tcltkip
+
+ * ext/tcltklib/tcltklib.c: store original 'exit' command
+
+ * ext/tk/tkutil.c: fix(?) SEGV
+
+Mon Sep 13 00:22:53 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: fix file header.
+
+Mon Sep 13 00:20:39 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: ripper merged.
+
+ * lex.c: ditto.
+
+ * keywords: ditto.
+
+Sun Sep 12 23:53:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.c (ruby_strdup): remove unnecessary code. (xmalloc never
+ returns NULL.)
+
+ * util.c (ruby_getcwd): fix memory leak on failure.
+
+Sun Sep 12 02:41:58 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: add TclTkIp#allow_ruby_exit? and
+ allow_ruby_exit=
+
+ * ext/tk/lib/multi-tk.rb: ditto.
+
+ * ext/tk/lib/remote-tk.rb: ditto.
+
+ * ext/tcltklib/MANUAL.euc: ditto.
+
+ * ext/tcltklib/MANUAL.eng: ditto.
+
+ * ext/tcltklib/tcltklib.c: fix some reasons of SEGV
+
+ * ext/tk/tkutil.c: ditto.
+
+ * ext/tk/lib/multi-tk.rb: ditto.
+
+ * ext/tk/lib/tk/timer.rb: ditto.
+
+Sat Sep 11 16:09:46 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb: Fix up cross-file class merging.
+
+Fri Sep 10 20:18:05 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_merge_tklist): fix suspicious
+ pointer conversion.
+
+Fri Sep 10 19:16:24 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: bccwin32 port starts to use RTL dll.
+ (need to rebuild all) [ruby-dev:24138]
+
+ * win32/win32.{h,c}: ditto.
+
+Fri Sep 10 15:55:59 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir_p): should pass mode argument to
+ Dir.mkdir. [ruby-dev:24242]
+
+ * test/fileutils/test_fileutils.rb: test it.
+
+Fri Sep 10 02:43:54 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/kilmer.rb: James Buck's
+ patch for call-seq.
+
+Thu Sep 9 13:58:56 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_init): change flag value for setting
+ 'argv' and 'argv0' variable
+
+ * ext/tk/lib/remote-tk.rb: follow changes of multi-tk.rb
+
+Thu Sep 9 11:46:18 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_classes): Allow
+ spaces aroun parameter to define_method_under (James Buck)
+
+Wed Sep 8 18:44:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_write): zero fill a gap if exsts.
+ [ruby-dev:24190]
+
+Wed Sep 8 15:19:49 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_init): cannot create a IP at level 4
+
+ * ext/tk/lib/multi-tk.rb: improve 'exit' operation, security check,
+ and error treatment
+
+ * ext/tk/lib/multi-tk.rb: allow a trusted slave IP to create slave IPs
+
+ * ext/tk/lib/tk/listbox.rb: add TkListbox#value, value=, clear, and
+ erase
+
+ * ext/tk/lib/tk/text.rb: add TkText#clear and erase
+
+Tue Sep 7 15:17:49 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): break immediately if a
+ socket is non-blocking. [ruby-talk:111654]
+
+Tue Sep 7 12:48:22 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32,wince}/Makefile.sub (config.h): add fcntl.
+
+ * win32/win32.[ch] (fcntl): ditto.
+
+ * win32/win32.c (rb_w32_connect): support nonblocking mode.
+
+ * ext/socket/socket.c (wait_connectable, ruby_connect): support
+ nonblocking connect on various platforms.
+
+Mon Sep 6 11:00:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (dir_s_chdir): the patch to shut up false warning when
+ exception occurred within a block. a patch was given from Johan
+ Holmberg <holmberg at iar.se>. [ruby-core:03292]
+
+Mon Sep 6 10:57:40 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/lib/tk/menu.rb(TkOptionMenubutton#insert): call correct method
+
+Mon Sep 6 07:51:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (cvar_cbase): singletons should refer to outer cvar scope.
+ [ruby-dev:24223]
+
+ * eval.c (rb_load): should preserve previous ruby_wrapper value.
+ [ruby-dev:24226]
+
+Sat Sep 4 01:14:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (cvar_cbase): class variables cause SEGV in
+ instance_eval() for fixnums and symbols. [ruby-dev:24213]
+
+Fri Sep 3 17:47:58 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (make_struct): remove redefining constant when
+ conflict. [ruby-dev:24210]
+
+Fri Sep 3 11:31:44 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: Tk.after makes TkCore::INTERP.tk_cmd_tbl grow
+ [ruby-dev:24207]
+
+Fri Sep 3 02:12:48 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix typo [ruby-talk:111266]
+
+ * ext/tk/lib/tk/text.rb: fix typo
+
+ * ext/tk/lib/multi-tk.rb: improve safe-level treatment on slave IPs
+
+Fri Sep 3 01:54:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): extact target prefix from Makefiles.
+
+ * ext/extmk.rb: already built-in libraries satisfy dependencies.
+ [ruby-dev:24028]
+
+Wed Sep 1 21:16:50 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/lib/tk/spinbox.rb: fix typo
+
+Wed Sep 1 19:28:37 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_proc_exec): label cannot precede variable declarations.
+
+Tue Aug 31 18:20:49 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/tk/tkutil.c (cbsubst_init): fix memory leak
+
+ * ext/tk/tkutil.c (cbsubst_get_all_subst_keys): fix SEGV
+
+Tue Aug 31 16:04:22 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_delete): when a tcltkip is deleted,
+ destroy its root widget
+
+Tue Aug 31 12:30:36 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (del_root): fix SEGV
+
+Mon Aug 30 21:50:14 2004 Dave Thomas <dave@pragprog.com>
+
+ * object.c: Add RDoc for Module.included.
+
+Mon Aug 30 23:11:06 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_driver.rb (and others): ri now merges documentation
+ if it finds the same class in multiple places.
+
+Mon Aug 30 22:40:30 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: 'restart' method accepts arguments
+
+Mon Aug 30 15:10:46 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (GNU/k*BSD): fixed FTBFS on GNU/k*BSD. [ruby-dev:24051]
+
+Sun Aug 29 14:08:56 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: compile error on bcc32 [ruby-dev:24081]
+
+ * ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string does not work
+
+Sat Aug 28 23:04:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_and): protect parameters from GC.
+ [ruby-talk:110664]
+
+Fri Aug 27 12:13:50 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/stringio/stringio.c (Init_stringio): add StringIO#readpartial as
+ an alias for StringIO#sysread.
+
+Fri Aug 27 10:14:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_proc_exec): strip trailing spaces. [ruby-dev:24143]
+
+ * win32/win32.c (CreateChild): ditto.
+
+Thu Aug 26 04:38:29 2004 Dave Thomas <dave@pragprog.com>
+
+ * eval.c (return_jump): Minor typo in error message. Now reads
+ "return can't jump across threads".
+
+Wed Aug 25 15:18:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_longjmp): Exception#to_str is no longer defined.
+
+Wed Aug 25 11:39:10 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_equal): exceptions are equal if they share same
+ class, message and backtrace. [ruby-talk:110354]
+
+ * error.c (name_err_mesg_equal): ditto.
+
+Tue Aug 24 16:41:48 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::FileStore#initialize): do not
+ use a session id as a filename.
+
+ * lib/cgi/session/pstore.rb (CGI::Session::PStore#initialize): ditto.
+
+ * lib/cgi/session/pstore.rb (CGI::Session::PStore#initialize): use
+ Dir::tmpdir.
+
+Tue Aug 24 14:32:17 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::FileStore#initialize): untaint
+ session id after check.
+
+Tue Aug 24 08:57:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509attr.c (ossl_x509attr_initialize): d2i
+ functions may replace the pointer indicated by the first argument.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_initialize): ditto.
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): ditto.
+
+Mon Aug 23 12:43:32 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/resolv.rb (Config.default_config_hash): when multiple domains
+ are set, Win32::Resolv.get_resolv_info returns Array.
+
+Sun Aug 22 16:27:38 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read):
+ - should return an empty string if specified length to read is 0.
+ - should check for pending data and wait for fd before reading.
+ - call underlying IO's sysread if SSL session is not started.
+ [ruby-dev:24072], [ruby-dev:24075]
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_write):
+ - call underlying IO's syswrite if SSL session is not started.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_pending): new method
+ OpenSSL::SSL#pending.
+
+ * ext/openssl/lib/openssl/buffering.rb: should not use select.
+
+Sun Aug 22 01:10:36 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_connect):
+ should call :ProxyContentHandler before finishing CONNECT.
+
+Sat Aug 21 06:41:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tcltklib/extconf.rb (find_tcl, find_tk): find stub library.
+
+ * lib/mkmf.rb (arg_config, with_config): deal with '-' and '_'
+ uniformly. [ruby-dev:24118]
+
+Fri Aug 20 14:49:42 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_check_writable): no need to check read buffer if
+ already changed to write mode.
+
+Fri Aug 20 11:46:43 2004 UENO Katsuhiro <katsu@blue.sky.or.jp>
+
+ * ext/zlib/zlib.c: GzipReader#ungetc caused crc error.
+
+Thu Aug 19 16:29:45 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: Fail to treat a hash value of 'font' option.
+
+ * ext/tk/lib/tk.rb: bindinfo cannot return '%' substiturion infomation.
+
+ * ext/tk/lib/menu.rb: typo bug.
+
+Thu Aug 19 15:15:24 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (free_dir): fix memory leak. reported by yamamoto
+ madoka.
+
+Thu Aug 19 09:19:27 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in, win32/Makefile.sub (LIBS): need to link shell32
+ library for SH* functions on mswin32 and mingw32.
+
+ * wince/Makefile.sub (LIBS): need to link ceshell library for SH*
+ functions on mswince.
+
+Thu Aug 19 03:07:00 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/baseemitter.rb: folding now handles double-quoted strings,
+ fixed problem with extra line feeds at end of folding, whitespace
+ opening scalar blocks.
+
+ * lib/yaml/rubytypes.rb: subtelties in handling strings with
+ non-printable characters and odd whitespace patterns.
+
+Wed Aug 18 23:44:20 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb (rbuf_fill): OpenSSL::SSLSocket has its own
+ buffer, select(2) might not work. [ruby-dev:24072]
+
+Wed Aug 18 17:10:12 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tcltklib/stubs.c (ruby_tcltk_stubs): need to call
+ Tcl_FindExecutable() for Tcl/Tk 8.4.
+
+Wed Aug 18 12:52:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_obj_instance_eval): evaluates under special singleton
+ classes as for special constants.
+
+Wed Aug 18 11:22:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (init_env): initialize HOME and USER environment
+ variables unless set.
+
+Wed Aug 18 10:17:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (bind_eval): new method. [RCR 251]
+
+ * string.c (rb_str_clear): new method. [ruby-dev:24104]
+
+Tue Aug 17 17:20:59 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_reopen): should clear allocated OpenFile. pointed
+ out by Guy Decoux. [ruby-core:03288]
+
+Tue Aug 17 01:36:32 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/usage.rb: Remove extra indent. Tidy 'ri' option
+ parsing so RDoc::usage plays better with OptionParser.
+
+Sat Aug 14 02:48:16 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/usage.rb: Added. Allows command line programs
+ to report usage using their initial RDoc comment.
+
+Sat Aug 14 01:25:48 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/token.c: re2c no longer compiled with bit vectors. caused
+ problems for non-ascii characters. [ruby-core:03280]
+ * ext/syck/implicit.c: ditto.
+ * ext/syck/bytecode.c: ditto.
+
+Fri Aug 13 12:55:20 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_range_header):
+ fix regex for range-spec.
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::DefaultFileHandler#make_partial_content):
+ multipart/byteranges response was broken.
+
+ * lib/xmlrpc/server.rb: refine example code.
+
+Thu Aug 12 10:54:17 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * rubyio.h (rb_eof_error): should mark as NORETURN.
+
+ * win32/win32.c (make_cmdvector): adjust escaped successive
+ double-quote handling.
+
+Thu Aug 12 01:53:10 2004 Tanaka Akira <akr@m17n.org>
+
+ * io.c (read_buffered_data): extracted from rb_io_fread.
+ (io_readpartial): new method IO#readpartial.
+ [ruby-dev:24055]
+
+Wed Aug 11 17:17:50 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RPATHFLAG): stop setting RPATHFLAG on Interix.
+
+Mon Aug 9 15:03:20 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/erbhandler.rb
+ (WEBrick::HTTPServlet::ERBHandler#do_GET): should select media type
+ by suffix of script filename.
+
+Mon Aug 9 12:51:43 2004 Dave Thomas <dave@pragprog.com>
+
+ * dir.c (dir_s_glob): Roll in Austin Ziegler's Dir.glob and
+ fnmatch updates.
+
+Mon Aug 9 06:33:06 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (cp_r): copies symlink to symlink, except
+ root entries of cp_r.
+
+ * lib/fileutils.rb: new method FileUtils.copy_entry.
+
+ * test/fileutils/test_fileutils.rb: more cp_r tests.
+
+Sun Aug 8 00:43:31 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/implicit.c: added sexagecimal float#base60.
+
+ * ext/syck/rubyext.c (yaml_org_handler): ditto.
+
+ * lib/token.c: indentation absolutely ignored when processing flow
+ collections. plain scalars are trimmed if indentation follows in
+ an ambiguous flow collection.
+
+Sat Aug 7 03:08:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (proc_daemon): new method. should be modified for
+ platforms without /dev/null.
+
+Sat Aug 7 00:50:01 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/zlib/zlib.c: Zlib::GzipReader#read(0) returns "" instead of nil.
+
+Wed Aug 4 13:26:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_bytes0): optimize out read(0). [ruby-talk:108276]
+
+Tue Aug 3 13:49:12 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/namespace.rb: bug fix
+
+ * ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: add Tk::TreeCtrl.loupe
+
+Mon Aug 2 23:33:48 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_file.rb (test_fnmatch): added more tests.
+
+Mon Aug 2 18:04:21 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/msgcat.rb (set_translation): bug fix (fail to set
+ trans_str to the same as src_str when trans_str is not given.)
+
+Mon Aug 2 17:40:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (blk_free): fixed serious memory leak. [ruby-dev:24013]
+
+Mon Aug 2 11:53:06 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::find_symbol): Fix infinite recursion
+ looking up some top level symbols (batsman)
+
+Mon Aug 2 11:48:29 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_methods): Allow '.'s in
+ variable names to support SWIG generated files (Hans Fugal)
+
+Sat Jul 31 23:08:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): stupid mistakes fixed. [ruby-dev:24006]
+
+Sat Jul 31 17:39:47 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-expr-beg, ruby-parse-partial,
+ ruby-calculate-indent, ruby-move-to-block, ruby-forward-sexp,
+ ruby-backward-sexp): keywords must match word-wise.
+
+Sat Jul 31 13:37:51 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): avoid unnecessary method invocations.
+
+Sat Jul 31 05:35:37 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: exceptions were using an older
+ YAML.object_maker. [ruby-core:03080]
+
+ * ext/syck/token.c (sycklex_yaml_utf8): using newline_len to
+ handline CR-LFs. "\000" was showing up on folded blocks which
+ stopped at EOF.
+
+Sat Jul 31 01:25:11 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): call is_defined() before invoking
+ rb_eval(). [ruby-talk:107867]
+
+Fri Jul 30 16:10:54 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_fromUTF8_core): raise ArgumentError when
+ the unknown encoding name is given.
+
+ * ext/tcltklib/tcltklib.c (lib_toUTF8_core): ditto.
+
+ * ext/tk/lib/tk.rb (Tk::Encoding.encoding_convertfrom): bug fix.
+
+ * ext/tk/lib/tk.rb (Tk::Encoding.encoding_convertto): ditto.
+
+Wed Jul 28 18:59:17 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::initialize): remove at_exit code for CGI_PARAMS
+ and CGI_COOKIES. they will no longer be used.
+
+Wed Jul 28 15:44:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): should call rb_call_super() directly for
+ visibility overriding. [ruby-dev:23989]
+
+Wed Jul 28 01:04:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * env.h: remove argv from ruby_frame.
+
+ * eval.c (rb_eval): no more copy on write.
+
+ * eval.c (assign): ditto.
+
+ * eval.c (rb_call0): can receive *rest by specifying negative
+ argc. (-1 means 0 arg and *rest, -2 means 1 arg and *rest...)
+
+ * eval.c (rb_call0): properly set frame's argc counter.
+
+ * gc.c (rb_gc_mark_frame): need not to mark frame's argv
+
+ * gc.c (run_final): wrong order of data. [ruby-dev:23984]
+
+Tue Jul 27 07:05:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): copy on write for argument local variable
+ assignment.
+
+ * eval.c (assign): ditto.
+
+ * eval.c (rb_call0): update ruby_frame->argv with the default
+ value used for the optional arguments.
+
+ * object.c (Init_Object): "===" calls rb_obj_equal() directly.
+ [ruby-list:39937]
+
+Mon Jul 26 11:22:55 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.escape): should
+ escape space.
+
+Sun Jul 25 10:56:28 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.{h,c} (rb_w32_{f,fd,fs}open): workaround for bcc32's
+ {f,fd,fs}open bug. set errno EMFILE and EBADF. [ruby-dev:23963]
+
+ * test/drb/drbtest.rb: fix method duplication.
+
+Sat Jul 24 13:32:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (rb_range_beg_len): returns Qnil only when "beg" points
+ outside of a range. No boundary check for "end".
+
+Fri Jul 23 16:40:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (define_final): should not disclose NODE* to Ruby world.
+ [ruby-dev:23957]
+
+Fri Jul 23 08:52:22 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (disconnected?): new method.
+
+Thu Jul 22 16:41:54 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi/session.rb (CGI::Session::FileStore#update): sets the
+ permission of the session data file to 0600.
+
+ * lib/cgi/session/pstore.rb (CGI::Session::Pstore#initialize):
+ ditto.
+
+Mon Jul 19 00:53:46 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb
+ (WEBrick::HTTPServlet::CGIhandler#do_GET): set SystemRoot environment
+ variable to CGI process on Windows native platforms. [ruby-dev:23936]
+
+Sun Jul 18 16:14:29 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/msgcat.rb (TkMsgCatalog.callback): bug fix
+ ( wrong number of argument )
+
+Sun Jul 18 08:13:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): remove extra sign digit.
+
+Sun Jul 18 03:19:14 2004 Akinori MUSHA <knu@iDaemons.org>
+
+ * dir.c (bracket): use NULL instead of 0.
+
+Sun Jul 18 02:35:30 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (receive_responses): return if a LOGOUT response
+ received.
+
+Sat Jul 17 23:59:01 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (send_string_data): wait command continuation
+ requests before sending octet data of literals.
+
+Sat Jul 17 23:54:59 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/variable.rb: TkVariable#ref returns a TkVariable object
+
+Sat Jul 17 22:04:44 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/ldap.rb: method hierarchical? should be in URI::LDAP.
+
+Sat Jul 17 18:29:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): not to show same error messages twice.
+
+Sat Jul 17 14:18:11 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_match_m): String#match should also take
+ optional argument. [ruby-core:03205]
+
+ * re.c (rb_reg_match_m): add optional second argugment "pos" to
+ specify match start point. [ruby-core:03203]
+
+Sat Jul 17 13:13:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex::identify_string): %s string do not
+ process expression interpolation. [ruby-talk:106691]
+
+Sat Jul 17 05:26:27 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/diagram.rb: Incorporate Micheal Neumann's
+ client-side imagemao patch
+
+Sat Jul 17 01:57:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (THREAD_ALLOC): th->thread should be initialized to NULL.
+ [ruby-talk:106657] The solution was found by Guy Decoux.
+
+Fri Jul 16 22:30:28 2004 Michael Neumann <mneumann@ntecs.de>
+
+ * file.c (rb_stat_dev_major): new methods File::Stat#dev_major and
+ #dev_minor. [ruby-core:03195]
+
+Fri Jul 16 11:17:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exit_initialize): use EXIT_SUCCESS instead of 0.
+ [ruby-dev:23913]
+
+ * error.c (exit_success_p): new method SystemExit#success?.
+ [ruby-dev:23912]
+
+ * error.c (syserr_initialize): initialization for subclasses.
+ [ruby-dev:23912]
+
+Thu Jul 15 23:53:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#warn, OptionParser#abort): Exception
+ no longer has to_str method.
+
+Thu Jul 15 22:59:48 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/extconf.rb: added dir_config for curses, ncurses,
+ termcap.
+
+Thu Jul 15 20:44:46 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * class.c: rdoc patch
+
+Thu Jul 15 14:12:34 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb (YAML::load_file, YAML::parse_file): added.
+
+ * ext/syck/token.c: re2c compiled with bit vectors now.
+ * ext/syck/implicit.c: ditto.
+ * ext/syck/bytecode.c: ditto.
+
+Thu Jul 15 10:15:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/, ext/tcltklib/: bug fix
+
+ * ext/tk/lib/tk.rb: better operation for SIGINT when processing
+ callbacks.
+ * ext/tk/lib/tk/msgcat.rb: ditto.
+ * ext/tk/lib/tk/variable.rb: ditto.
+ * ext/tk/lib/tk/timer.rb: ditto.
+
+ * ext/tk/lib/tk/validation.rb: add Tk::ValidateConfigure.__def_validcmd
+ to define validatecommand methods easier
+
+ * ext/tk/lib/tk.rb (_genobj_for_tkwidget): support autoload Tk ext
+ classes
+
+ * ext/tk/lib/tk/canvas.rb and so on: remove the parent widget type
+ check for items (e.g. canvas items; depends on the class) to
+ avoid some troubles on Tk extension widget class definition.
+
+ * ext/tk/lib/tkextlib/: add Iwidget and TkTable extension support
+
+ * ext/tk/sample/tkextlib/: add samples of Iwidget and TkTable
+
+Wed Jul 14 23:49:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (enum_min_by): new method Enum#min_by. added Enum#max_by
+ as well.
+
+Wed Jul 14 18:05:21 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1cons_to_der): fix type of
+ argument. [ruby-dev:23891]
+
+ * test/openssl/test_x509store.rb: prune tests for CRL checking
+ unless X509::V_FLAG_CRL_CHECK is defined.
+
+Wed Jul 14 12:20:05 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.c (ruby_strtod): should not convert string in the form of
+ "-I.FE-X" which both "I" and "F" are ommitted. [ruby-dev:23883]
+
+ * test/ruby/test_float.rb (test_strtod): add test for bug fix.
+
+Wed Jul 14 00:33:48 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * array.c: rdoc patch. merged patch from Johan Holmberg
+ <holmberg@iar.se> [ruby-core:3170]
+
+Tue Jul 13 19:39:12 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic#merge_path):
+ "URI('http://www.example.com/foo/..') + './'" should return
+ "URI('http://www.example.com/')". [ruby-list:39838]
+ "URI('http://www.example.com/') + './foo/bar/..'" should return
+ "URI('http://www.example.com/foo/')". [ruby-list:39844]
+
+ * test/uri/test_generic.rb (TestGeneric#test_merge): added tests.
+
+Tue Jul 13 15:48:56 2004 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/mkmf.rb (init_mkmf): Do not add $(libdir) to $LIBPATH in
+ extmk mode.
+
+ * lib/mkmf.rb (dir_config): Prepend a new library path instead of
+ appending so it is tried first.
+
+Tue Jul 13 00:50:48 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb: Support call-seq: for Ruby files.
+
+Mon Jul 12 21:20:51 2004 Dave Thomas <dave@pragprog.com>
+
+ * html_generator.rb: Support hyperlinks of the form {any text}[xxx]
+ as well as stuff[xxx]
+
+Sat Jul 10 09:30:24 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/marshal/test_struct.rb: use qualified built-in class name
+ (::Struct) to avoid name crash.
+
+Sat Jul 10 04:21:56 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: better operation for SIGINT when processing
+ callbacks.
+ * ext/tk/lib/tk/msgcat.rb: ditto.
+ * ext/tk/lib/tk/variable.rb: ditto.
+ * ext/tk/lib/tk/timer.rb: ditto.
+
+ * ext/tk/lib/tk/validation.rb (__def_validcmd): add a module
+ function of Tk::ValidateConfigure to define validatecommand
+ methods easier
+
+Fri Jul 9 22:18:59 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * array.c, enum.c, pack.c: rdoc patch from Johan Holmberg
+ <holmberg@iar.se> [ruby-core:3132] [ruby-core:3136]
+
+ * numeric.c: rdoc patch.
+
+Fri Jul 9 19:26:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::HTTPS#proxy_open): raise ArgumentError to
+ notice https is not supported.
+
+Fri Jul 9 14:28:54 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_raise): accept third argument as well as
+ Kernel#raise, and evaluate the arguments to create an exception in
+ the caller's context. [ruby-talk:105507]
+
+Fri Jul 9 01:47:08 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib: bug fix
+ * ext/tk/lib/tkextlib/itcl: add [incr Tcl] support
+ * ext/tk/lib/tkextlib/itk: add [incr Tk] support
+ * ext/tk/lib/tkextlib/iwidgets: midway point of [incr Widgets] support
+ * ext/tk/sample/tkextlib/iwidgets: very simple examples of
+ [incr Widgets]
+
+Thu Jul 8 19:27:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_stack_end_address): detect stack end address
+ variable supplied by system. [ruby-core:03115]
+
+ * gc.c (Init_stack): use system provided address if possible.
+
+Thu Jul 8 00:05:23 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile::initialize): got out code of
+ generating tmpname. [ruby-dev:23832][ruby-dev:23837]
+
+Wed Jul 7 02:31:41 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/{rss,parser,0.9,1.0,2.0}.rb: supported RSS 0.9x/2.0
+ validation and validation which disregard order of elements.
+ * test/rss/test_parser.rb: added tests for RSS 0.9x/2.0
+ validation.
+ * test/rss/{test_trackback,rss-testcase}.rb: fixed no good method
+ name.
+
+Wed Jul 7 00:48:34 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tk/lib/tkextlib/tktrans.rb,
+ ext/tk/lib/tkextlib/treectrl.rb: fix syntax errors.
+
+Tue Jul 6 18:38:45 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib: improve framework of developping Tcl/Tk extension
+ wrappers
+
+Mon Jul 5 23:56:42 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/{trackback,syndication,dublincore,content}.rb: worked
+ with ruby 1.6 again.
+
+ * test/rss/rss-assertions.rb: ditto.
+
+Mon Jul 5 22:54:39 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/uri/common.rb (Kernel#URI): new global method for parsing URIs.
+
+Mon Jul 5 09:02:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_yield, rb_f_catch): 4th argument to rb_yield_0()
+ is a set of bit flags. [ruby-dev:23859]
+
+Mon Jul 5 01:20:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/drb/drb.rb(DRbConn self.open): If socket pool is full, close
+ the socket whose last-access-time is oldest. (and add new one)
+ [ruby-dev:23860]
+
+Sun Jul 4 12:24:50 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: added copyright header.
+
+Sat Jul 3 22:25:27 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * added files:
+ * lib/soap/header/*
+ * lib/soap/rpc/httpserver.rb
+ * lib/wsdl/soap/cgiStubCreator.rb
+ * lib/wsdl/soap/classDefCreator.rb
+ * lib/wsdl/soap/classDefCreatorSupport.rb
+ * lib/wsdl/soap/clientSkeltonCreator.rb
+ * lib/wsdl/soap/driverCreator.rb
+ * lib/wsdl/soap/mappingRegistryCreator.rb
+ * lib/wsdl/soap/methodDefCreator.rb
+ * lib/wsdl/soap/servantSkeltonCreator.rb
+ * lib/wsdl/soap/standaloneServerStubCreator.rb
+ * lib/wsdl/xmlSchema/enumeration.rb
+ * lib/wsdl/xmlSchema/simpleRestriction.rb
+ * lib/wsdl/xmlSchema/simpleType.rb
+ * lib/xsd/codegen/*
+ * lib/xsd/codegen.rb
+ * sample/soap/authheader/*
+ * sample/soap/raa2.4/*
+ * sample/soap/ssl/*
+ * sample/soap/swa/*
+ * sample/soap/whois.rb
+ * sample/wsdl/raa2.4/*
+ * test/soap/header/*
+ * test/soap/ssl/*
+ * test/soap/struct/*
+ * test/soap/swa/*
+ * test/soap/wsdlDriver/*
+ * test/wsdl/multiplefault.wsdl
+ * test/wsdl/simpletype/*
+ * test/wsdl/test_multiplefault.rb
+
+ * modified files:
+ * lib/soap/baseData.rb
+ * lib/soap/element.rb
+ * lib/soap/generator.rb
+ * lib/soap/netHttpClient.rb
+ * lib/soap/parser.rb
+ * lib/soap/property.rb
+ * lib/soap/soap.rb
+ * lib/soap/streamHandler.rb
+ * lib/soap/wsdlDriver.rb
+ * lib/soap/encodingstyle/handler.rb
+ * lib/soap/encodingstyle/literalHandler.rb
+ * lib/soap/encodingstyle/soapHandler.rb
+ * lib/soap/mapping/factory.rb
+ * lib/soap/mapping/mapping.rb
+ * lib/soap/mapping/registry.rb
+ * lib/soap/mapping/rubytypeFactory.rb
+ * lib/soap/mapping/wsdlRegistry.rb
+ * lib/soap/rpc/cgistub.rb
+ * lib/soap/rpc/driver.rb
+ * lib/soap/rpc/proxy.rb
+ * lib/soap/rpc/router.rb
+ * lib/soap/rpc/soaplet.rb
+ * lib/soap/rpc/standaloneServer.rb
+ * lib/wsdl/data.rb
+ * lib/wsdl/definitions.rb
+ * lib/wsdl/operation.rb
+ * lib/wsdl/parser.rb
+ * lib/wsdl/soap/definitions.rb
+ * lib/wsdl/xmlSchema/complexContent.rb
+ * lib/wsdl/xmlSchema/complexType.rb
+ * lib/wsdl/xmlSchema/data.rb
+ * lib/wsdl/xmlSchema/parser.rb
+ * lib/wsdl/xmlSchema/schema.rb
+ * lib/xsd/datatypes.rb
+ * lib/xsd/qname.rb
+ * sample/soap/sampleStruct/server.rb
+ * sample/wsdl/amazon/AmazonSearch.rb
+ * sample/wsdl/amazon/AmazonSearchDriver.rb
+ * test/soap/test_property.rb
+ * test/soap/calc/test_calc_cgi.rb
+ * test/wsdl/test_emptycomplextype.rb
+
+ * summary
+ * add SOAP Header mustUnderstand support.
+
+ * add HTTP client SSL configuration and Cookies support (works
+ completely with http-access2).
+
+ * add header handler for handling sending/receiving SOAP Header.
+
+ * map Ruby's anonymous Struct to common SOAP Struct in SOAP Object
+ Model. it caused error.
+
+ * add WSDL simpleType support to restrict lexical value space.
+
+Sat Jul 3 17:19:44 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/tk/lib/tkextlib/tkDND.rb: fix syntax error.
+
+Thu Jul 1 18:36:08 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tcltklib: bug fix
+
+ * ext/tk/lib/tk: bug fix and add Tcl/Tk extension support libraries
+
+Thu Jul 1 18:31:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pstore.rb (PStore#transaction): get rid of opening in write mode
+ when read only transaction. [ruby-dev:23842]
+
+Thu Jul 1 00:44:42 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_encrypt, ossl_cipher_decrypt):
+ re-implemnt (the arguments for this method is ).
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_pkcs5_keyivgen): new method
+ OpenSSL::Cipher::Cipher#pkcs5_keyivgen. it calls EVP_BytesToKey().
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_set_key_length): new method
+ OpenSSL::Cipher::Cipher#key_len=.
+
+Wed Jun 30 19:48:09 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: check for EVP_CIPHER_CTX_copy, ENGINE_add,
+ EVP_CIPHER_CTX_set_padding, EVP_CipherFinal_ex, EVP_CipherInit_ex,
+ EVP_DigestFinal_ex and EVP_DigestInit_ex.
+
+ * ext/openssl/openssl_missing.c (EVP_CIPHER_CTX_copy): new function.
+
+ * ext/openssl/openssl_missing.h (EVP_DigestInit_ex, EVP_DigestFinal_ex,
+ EVP_CipherInit_ex, EVP_CipherFinal_ex, HMAC_Init_ex): new macro for
+ OpenSSL 0.9.6.
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_alloc, ossl_cipher_initialize,
+ ossl_cipher_copy, ossl_cipher_reset, ossl_cipher_encrypt,
+ ossl_cipher_decrypt, ossl_cipher_final, ossl_cipher_set_key,
+ ossl_cipher_set_iv): replace all EVP_CipherInit and
+ EVP_CipherFinal into EVP_CipherInit_ex and EVP_CipherFinal_ex.
+ and EVP_CIPHER_CTX_init should only be called once.
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_set_padding): check for
+ EVP_CIPHER_CTX_set_padding.
+
+ * ext/openssl/ossl_cipher.c (Init_ossl_cipher): Cipher#<< is deprecated.
+
+ * ext/openssl/ossl_digest.c: replace all EVP_DigestInit and
+ EVP_DigestFinal into EVP_DigestInit_ex and EVP_DigestFinal_ex.
+ and EVP_MD_CTX_init should only be called once.
+
+ * ext/openssl/ossl_digest.c (digest_final): should call
+ EVP_MD_CTX_cleanup to avoid memory leak.
+
+ * ext/openssl/ossl_hmac.c (ossl_hmac_initialize): repalce HMAC_init
+ into HMAC_init_ex. and HMAC_CTX_init is moved to ossl_hmac_alloc.
+
+ * ext/openssl/ossl_hmac.c (hmac_final): should call
+ HMAC_CTX_cleanup to avoid memory leak.
+
+ * test/openssl/test_cipher.rb, test/openssl/test_digest.rb,
+ test/openssl/test_hmac.rb: new file.
+
+Wed Jun 30 16:59:39 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_file.rb (test_fnmatch): some tests for File.fnmatch
+ are added.
+
+Wed Jun 30 11:38:51 2004 Mikael Brockman <phubuh@phubuh.org>
+
+ * parse.y (primary): should not be NULL. [ruby-core:03098]
+
+Wed Jun 30 02:41:10 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_emitter_new): set buffer after
+ Data_Wrap_Struct to avoid possible GC. [ruby-talk:104835]
+
+Tue Jun 29 10:31:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval_cmd, rb_thread_trap_eval): restore safe level.
+
+ * gc.c (define_final, run_final): preserve and restore safe level for
+ finalizers. [ruby-core:03058]
+
+ * signal.c (signal_exec, rb_trap_exit, trap): preserve and restore
+ safe level for signal handlers. [ruby-dev:23829]
+
+Mon Jun 28 14:57:56 2004 Jeff Mitchell <quixoticsycophant@yahoo.com>
+
+ * configure.in, lib/mkmf.rb (LIBPATHFLAG): use double quotes due to
+ DOSISH compilers. [ruby-core:03107]
+
+Mon Jun 28 00:35:29 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * sample/drb/*.rb: using 'DRb.thread.join' instead of 'gets'
+
+Sun Jun 27 22:36:47 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb: supported Hiki.
+
+Sat Jun 26 15:17:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_mod_class_variables): class variables are no longer
+ inherited. [ruby-dev:23808]
+
+Sat Jun 26 11:07:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (aix): -b must come at the start of the command line,
+ and -e must not appear while testing libraries. [ruby-talk:104501]
+
+ * lib/mkmf.rb (find_header, dir_config): quote directory names if
+ necessary. [ruby-talk:104505]
+
+Sat Jun 26 00:13:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_fopen, rb_fdopen, rb_io_reopen): setvbuf() may return
+ positive value on failure. [ruby-dev:23792]
+
+Fri Jun 25 18:07:15 2004 Michal Rokos <michal@ruby-lang.org>
+
+ * gc.c: bring back _stklen for DJGPP [ruby-core:3084]
+
+Fri Jun 25 15:33:01 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/extconf.rb: check stricter. [ruby-talk:104501]
+
+Fri Jun 25 01:58:01 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * {bcc32,win32,wince}/setup.mak: remove RUBY_EXTERN lines when
+ including version.h. [ruby-talk:104456]
+
+Thu Jun 24 14:23:29 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_fread): return already read data when system call is
+ interrupted. [ruby-talk:97206]
+
+Thu Jun 24 01:25:21 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * version.h: added declarations of ruby_version,
+ ruby_release_date, ruby_platform.
+
+Thu Jun 24 01:07:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_sockaddr): Socket#gethostbyname()
+ should give us packed address, not struct sockaddr.
+ [ruby-core:03053]
+
+Wed Jun 23 22:19:10 2004 Dave Thomas <dave@pragprog.com>
+
+ * ext/socket/socket.c (sock_s_gethostbyaddr): Work around problem
+ with OS X not returning 'from' parameter to recvfrom for
+ connection-oriented sockets.
+
+Wed Jun 23 22:16:16 2004 Michal Rokos <michal@ruby-lang.org>
+
+ * io.c: io_seek()'s retval should be checked [ruby-core:03045]
+
+Wed Jun 23 21:48:27 2004 Michal Rokos <michal@ruby-lang.org>
+
+ * time.c: Fix indentation.
+
+ * main.c: Remove _stklen, and _CRT_glob. Move _stacksize for
+ __human68k__ to gc.c where the others are.
+
+ * gc.c: put _stacksize in place and clean the #ifdefs macros.
+
+Wed Jun 23 17:37:54 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: added new option --ssl.
+
+Wed Jun 23 01:45:27 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RubyLex::identify_quotation):
+ Fix problem with the 'r' being dropped from %r{xxx}
+
+Wed Jun 23 00:10:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_hresult2msg): remove trailing
+ CRs and LFs. (doesn't depend on CR+LF) [ruby-dev:23749]
+
+Wed Jun 23 00:00:25 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (return_jump, break_jump): raise unexpected local jump
+ exception directly. [ruby-dev:23740]
+
+ * io.c (rb_io_initialize): should check fcntl result. [ruby-dev:23742]
+
+Tue Jun 22 23:35:43 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): support FZERO and FSPACE with NaN/Inf.
+
+ * test/ruby/test_sprintf.rb (test_nan, test_inf): add tests.
+
+Tue Jun 22 21:11:36 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (OLE_FREE): should not call CoFreeUnuse-
+ dLibraries().
+
+ * ext/win32ole/win32ole.c (ole_event_free): ditto.
+
+ * ext/win32ole/win32ole.c (ole_hresult2msg): truncate error message
+ before CR.
+
+Tue Jun 22 19:24:59 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): unify output of NaN, Inf and -Inf with
+ "%f" or etc on all platform. [ruby-dev:23704], [ruby-dev:23747]
+
+Tue Jun 22 15:28:12 2004 Michal Rokos <michal@ruby-lang.org>
+
+ * compar.c: Remove explicit NIL_P() checks since rb_cmpint() does it
+ again in the exactly same manner.
+
+Tue Jun 22 01:32:40 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey_dh.c (ossl_dh_initialize): should create
+ empty pkey object if no argument is passed. [ruby-talk:103328]
+
+ * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.
+
+ * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize): ditto.
+
+ * ext/openssl/ossl_pkey_dh.c: add new methods: OpenSSL::PKey::DH#p,
+ OpenSSL::PKey::DH#p=, OpenSSL::PKey::DH#g, OpenSSL::PKey::DH#g=,
+ OpenSSL::PKey::DH#pub_key, OpenSSL::PKey::DH#pub_key=,
+ OpenSSL::PKey::DH#priv_key and OpenSSL::PKey::DH#priv_key=.
+
+ * ext/openssl/ossl_pkey_dsa.c: add new methods: OpenSSL::PKey::DSA#p,
+ OpenSSL::PKey::DSA#p=, OpenSSL::PKey::DSA#q, OpenSSL::PKey::DSA#q=,
+ OpenSSL::PKey::DSA#g, OpenSSL::PKey::DSA#g=,
+ OpenSSL::PKey::DSA#pub_key, OpenSSL::PKey::DSA#pub_key=,
+ OpenSSL::PKey::DSA#priv_key and OpenSSL::PKey::DSA#priv_key=.
+
+Mon Jun 21 09:24:51 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_opendir): should set errno if error occurs
+ when calling OS API.
+
+Sun Jun 20 21:12:54 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (binary=): send TYPE commands only once.
+
+Sat Jun 19 13:27:01 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (method_call): allow changing $SAFE. [ruby-dev:23713]
+
+ * eval.c (proc_set_safe_level, proc_invoke, rb_mod_define_method): not
+ set $SAFE for methods defined from Proc. [ruby-dev:23697]
+
+Sat Jun 19 01:10:12 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * sample/rss/tdiary_plugin/rss-recent.rb: added more information.
+
+Fri Jun 18 23:12:22 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (proc_save_safe_level, rb_set_safe_level, safe_setter): limit
+ safe level.
+
+Wed Jun 16 23:05:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_freeze): prepare string representation before
+ freezing. [ruby-talk:103646]
+
+Wed Jun 16 19:57:24 2004 Michal Rokos <michal@ruby-lang.org>
+
+ * test/ruby/test_array.rb: extend testcase to check #first, #last,
+ #shift, #unshift, #pop, #push
+
+Wed Jun 16 16:05:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_new): move alloc behind checks. [ruby-core:02982]
+
+ * array.c (rb_ary_pop_m, rb_ary_shift_m): take arg to behave as push
+ and unshift.
+
+ * array.c (rb_ary_first, rb_ary_last): make shared array for result
+ array, and correct doc for Array#first(n) and Array#last(n)
+
+ * array.c (rb_ary_select): not accept any arg.
+
+Wed Jun 16 16:03:59 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_class_inherited_p): singleton class inherits Class
+ rather than its object's class. [ruby-dev:23690]
+
+Wed Jun 16 16:01:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (stack_grow_direction): memoize the direction.
+
+ * gc.c (Init_stack): should always move to end of VALUE.
+
+Tue Jun 15 12:10:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix (TkWindow#grab)
+
+Mon Jun 14 18:23:27 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/remote-tk.rb: bug fix
+
+Sun Jun 13 00:23:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/extconf.rb: [EXPERIMENTAL] MacOS X (darwin) support
+
+ * ext/tcltklib/tcltklib.c: fix thread trouble on callback proc, and
+ eliminate warning about instance variable access
+
+ * ext/tk/lib/tk/menubar.rb: improve supported menu_spec
+
+ * ext/tk/lib/tk/menuspec.rb: [add] menu_spec support library
+
+ * ext/tk/lib/tk/root.rb: add menu_spec support
+
+ * ext/tk/lib/tk/text.rb: bug fix
+
+ * ext/tk/lib/tk/toplevel.rb: add menu_spec support
+
+ * ext/tk/sample/menubar?.rb: [add] sample of menu_spec usage
+
+Sat Jun 12 14:15:20 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c: RDOC for File::FNM_CASEFOLD was missed.
+
+Sat Jun 12 11:15:53 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (target_os): strip -gnu suffix on Linux.
+
+Fri Jun 11 22:08:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c: remove #indexes, #indices.
+
+ * hash.c: ditto.
+
+ * ext/dbm/dbm.c: remove #indexes, #indices, "values_at" warning
+ from #select.
+
+ * ext/gdbm/gdbm.c: ditto.
+
+ * ext/sdbm/init.c: ditto.
+
+ * ext/dbm/dbm.c (Init_dbm): set VERSION constant as "unknown" when
+ DB_VERSION_STRING is not available.
+
+Thu Jun 10 19:19:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/sdbm/init.c (fsdbm_store): sdbm should use StringValue().
+ [ruby-talk:103062]
+
+Wed Jun 9 16:09:01 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic::merge,
+ URI::Generic::route_from): accepts non-hierarchical URI.
+ [ruby-dev:23631]
+
+ * test/uri/test_generic.rb (TestGeneric::test_route,
+ TestGeneric::test_merge): added tests for above changes.
+
+Wed Jun 9 15:39:55 2004 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in: Add support for DragonFly BSD.
+
+Wed Jun 9 15:07:06 2004 Akinori MUSHA <knu@iDaemons.org>
+
+ * config.guess, config.sub: Update to a more recent version as of
+ 2004-01-20.
+
+Wed Jun 9 11:20:05 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c: remove unused functions and variables.
+
+Wed Jun 2 20:16:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_new4): should share shared instance if it already
+ exists. [ruby-dev:23665]
+
+Wed Jun 2 12:41:53 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_gets_m): set lastline ($_) even when read line is
+ nil. [ruby-dev:23663]
+
+Fri May 28 11:20:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): bad influence on frame node.
+
+ * eval.c (eval): reverted wrongly removed condition. [ruby-dev:23638]
+
+Thu May 27 21:37:50 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#initialize): fix pathname initialization
+ by pathname.
+
+Thu May 27 20:02:09 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * io.c (rb_io_fwrite): check all case errno != 0 [ruby-dev:23648]
+
+Thu May 27 15:54:02 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (MDTM_REGEXP): fix for demon's ftp server.
+ Thanks, Rutger Nijlunsing.
+
+Thu May 27 14:53:13 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (rb_io_fwrite): workaround for bcc32's fwrite bug.
+ add errno checking. [ruby-dev:23627]
+
+ * io.c (rb_io_fwrite): should check if errno == ENOENT, too.
+
+Thu May 27 11:25:03 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: illegal require module name (../lib/csv.rb).
+
+Wed May 26 23:12:13 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb (CSV.read, CSV.readlines): added. works as IO.read and
+ IO.readlines in CSV format.
+
+ * lib/csv.rb (CSV.parse): [CAUTION] behavior changed. in the past,
+ CSV.parse accepts a filename to be read-opened (it was just a
+ shortcut of CSV.open(filename, 'r')). now CSV.parse accepts a
+ string or a stream to be parsed e.g.
+ CSV.parse("1,2\n3,r") #=> [['1', '2'], ['3', '4']]
+
+ * test/csv/test_csv.rb: follow above changes.
+
+Wed May 26 14:19:42 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval, eval): make line number consistent on eval with
+ Proc. [ruby-talk:101253]
+
+Wed May 26 13:59:17 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::skip_for_variable): Allow for
+ 'do' after for statement
+
+Wed May 26 13:56:03 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb (Generators::MarkUp::style_url): Fix
+ relative path to code CSS file
+
+Wed May 26 13:14:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_init_copy): copy also positions. [ruby-talk:100910]
+
+Wed May 26 00:00:00 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/syck.c (syck_new_parser): clear parser on init.
+ thanks, ts. [ruby-core:02931]
+
+ * ext/syck/token.c (sycklex_yaml_utf8): buffer underflow.
+ thanks, ts. [ruby-core:02929]
+
+ * lib/yaml/baseemitter.rb (indent_text): simpler flow block code.
+
+Tue May 25 11:54:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_yield_0, proc_invoke, proc_arity): allow passing a block
+ to a Proc. [ruby-dev:23533]
+
+ * parse.y (block_par, block_var): ditto.
+
+Tue May 25 01:50:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_i2d_ASN1_TYPE, ossl_ASN1_TYPE_free):
+ workaround for the versions earlier than OpenSSL-0.9.7.
+
+Mon May 24 10:46:26 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/rdoc/generators/template/html/html.rb: SYSTEM identifiers
+ must be absolute URIs
+
+Sun May 23 04:53:50 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/pstore.rb (transaction): allow overriding dump and load.
+ [ruby-dev:23567]
+
+ * lib/yaml/store.rb: follow lib/pstore.rb's change.
+
+Sat May 22 11:54:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * MANIFEST: add test/openssl/test_x509store.rb.
+
+ * ext/tk/MANIFEST: add recent files.
+
+Sat May 22 05:37:11 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/remote-tk.rb: (NEW library) controll Tk interpreters
+ on the other processes by Tcl/Tk's 'send' command
+
+Fri May 21 09:22:05 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method_parameters):
+ Add ()'s around parameters that don't have them
+
+Fri May 21 02:21:11 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: fixed a few bugs around multi char record/field separator.
+
+ * test/csv/test_csv.rb: added boundary test for above feature.
+
+Thu May 20 17:02:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (check_sizeof): define result size. [ruby-core:02911]
+
+ * lib/mkmf.rb (create_header): macro name should not include equal
+ sign.
+
+Thu May 20 14:35:52 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/socket.c: check SCM_RIGHTS macro addition to
+ the msg_control field to test existence of file descriptor passing
+ by msg_control.
+
+Thu May 20 12:38:06 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_eq): always check if operands are NaN.
+ [ruby-list:39685]
+
+Thu May 20 12:34:39 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_visibility):
+ At Ryan Davis' suggestion, honor visibility modifers if guarded by a
+ statement modifier
+
+Thu May 20 12:22:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_type): do not check pointer to incomplete type,
+ which always get compiled.
+ [ruby-list:39683]
+
+Wed May 19 23:45:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/inlinetest.rb (InlineTest::loadtest): requiring library with
+ replaced $0 can make $0 == __FILE__ block be evaluated twice.
+
+ * test/ruby/envutil.rb (EnvUtil::rubybin): give priority to
+ environment variable. [ruby-dev:23538]
+
+Wed May 19 11:08:10 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: change permition of TkObject#tk_send from
+ private to public
+
+Wed May 19 02:29:36 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: support TRACE.
+
+Wed May 19 02:21:53 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: do not use class variables.
+
+Tue May 18 21:21:43 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: writes lines with "\n" when row separator is not given.
+ formerly it was "\r\n".
+
+ * lib/csv.rb: [CAUTION] API change
+
+ * CSV::Row removed. a row is represented as just an Array. since
+ CSV::Row was a subclass of Array, it won't hurt almost all programs
+ except one which depended CSV::Row#match.
+
+ * CSV::Cell removed. a cell is represented as just a String or
+ nil(NULL). this change will cause widespread destruction.
+
+ CSV.open("foo.csv", "r") do |row|
+ row.each do |cell|
+ if cell.is_null # Cell#is_null
+ p "(NULL)"
+ else
+ p cell.data # Cell#data
+ end
+ end
+ end
+
+ must be just;
+
+ CSV.open("foo.csv", "r") do |row|
+ row.each do |cell|
+ if cell.nil?
+ p "(NULL)"
+ else
+ p cell
+ end
+ end
+ end
+
+ * lib/csv.rb: [CAUTION] record separator(CR, LF, CR+LF) behavior
+ change. CSV.open, CSV.parse, and CSV,generate now do not force
+ opened file binmode. formerly it set binmode explicitly.
+
+ with CSV.open, binmode of opened file depends the given mode
+ parameter "r", "w", "rb", and "wb". CSV.parse and CSV.generate open
+ file with "r" and "w".
+
+ setting mode properly is user's responsibility now.
+
+ * lib/csv.rb: accepts String as a fs (field separator/column separator)
+ and rs (record separator/row separator)
+
+ * lib/csv.rb: added CSV.foreach(path, rs = nil, &block). CSV.foreach
+ now does not handle "| cmd" as a path different from IO.foreach.
+ needed?
+
+ * test/csv/test_csv.rb: updated.
+
+Tue May 18 14:24:20 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb: added rdoc to beginning of lib.
+
+Tue May 18 14:00:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (NEW_DSTR): adjust list length.
+
+ * parse.y (literal_concat): ditto.
+
+Tue May 18 09:30:25 2004 SASADA Koichi <ko1@atdot.net>
+
+ * eval.c (rb_method_node): search cache entry first.
+
+Mon May 17 16:04:06 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * numeric.c (flo_to_s): it's preferable that "p 0.0" outputs "0.0"
+ instead of "0.0e+00". [ruby-dev:23480]
+
+ * numeric.c (flo_to_s): it's preferable that "p 0.00000000000000000001"
+ outputs "1.0e-20" instead of "9.999999999999999e-21". (the precision
+ is considered, but there is assumption DBL_DIG == 15 in current
+ implementation)
+
+Mon May 17 10:13:33 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (setup_domain_and_type): honor duck typing.
+ [ruby-dev:23522]
+
+ * ext/socket/socket.c (sock_s_getnameinfo): ditto.
+
+Mon May 17 00:36:21 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/baseemitter.rb (indent_text): was forcing a mod value
+ of zero at times, which kept some blocks from getting indentation.
+
+Mon May 17 00:07:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/drb/drb.rb: Cosmetic documentation changes.
+
+Sun May 16 20:55:49 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/dbm/dbm.c (fdbm_initialize): accept optional 3rd argument to
+ specify an open flag.
+ (Init_dbm): define open flags: DBM::READER, DBM::WRITER, DBM::WRCREAT
+ and DBM::NEWDB.
+
+Sat May 15 17:52:24 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_float.rb(test_strtod): Add test for signed 0.000...1
+
+Sat May 15 14:20:13 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/syck/depend: add ruby's headers.
+
+Sat May 15 13:38:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/MANIFEST, ext/syck/depend: new file.
+
+ * lib/yaml/rubytypes.rb: range of exponential floats. [ruby-core:02824]
+
+ * test/yaml/test_yaml.rb: tests for strings start with colon and some
+ round trip.
+
+Sat May 15 12:04:58 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb: removed fallback to pure Ruby parser.
+
+ * lib/yaml/baseemitter.rb (node_text): rewriting folded scalars.
+
+ * ext/syck/syck.h: reports style of scalars now, be they plain, block
+ single-, or double-quoted.
+
+ * ext/syck/syck.c: ditto.
+
+ * ext/syck/gram.c: ditto.
+
+ * ext/syck/node.c: ditto.
+
+ * ext/syck/token.c: ditto.
+
+ * ext/syck/rubyext.c (yaml_org_handler): symbols loaded only
+ if scalar style is plain.
+
+ * test/yaml/test_yaml.rb (test_perl_regexp): updated test to
+ match new regexp serialization.
+
+Sat May 15 01:41:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): forgot to restore $SAFE value before evaluating
+ compiled node. [ruby-core:02872]
+
+Sat May 15 01:33:12 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (range_each_func): terminates loop if generating value
+ is same to @end. [ruby-talk:100269]
+
+Fri May 14 22:08:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_new4): should not reuse frozen shared string if
+ the original is not an instance of String. [ruby-talk:100193]
+
+Fri May 14 21:29:26 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_mdump): preserve GMT bit in the marshal data.
+ [ruby-talk:100213]
+
+Fri May 14 18:37:49 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/canvas.rb: improve coords support for canvas
+ items. Now, supports all of the followings.
+ TkcLine.new(c, 0, 0, 100, 100, :fill=>'red')
+ TkcLine.new(c, [0, 0, 100, 100], :fill=>'red')
+ TkcLine.new(c, [0, 0], [100, 100], :fill=>'red')
+ TkcLine.new(c, [[0, 0], [100, 100]], :fill=>'red')
+ TkcLine.new(c, :coords=>[0, 0, 100, 100], :fill=>'red')
+ TkcLine.new(c, :coords=>[[0, 0], [100, 100]], :fill=>'red')
+
+Fri May 14 13:30:39 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/test_float.rb: Add test for util.c revision 1.42.
+
+Fri May 14 12:13:46 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.c (ruby_strtod): strtod("0", &end); => end should point '\0'.
+ [ruby-dev:23498]
+
+Thu May 13 15:47:30 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/net/telnet.rb (Net::Telnet::login): "options" can specify
+ regexps for login prompt and/or password prompt.
+
+Thu May 13 14:17:57 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c (yaml_org_handler): some empty strings were
+ loaded as symbols.
+
+Thu May 13 11:04:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack): always add with null for 'Z'.
+
+ * pack.c (pack_unpack): terminated by null for 'Z'. [ruby-talk:98281]
+
+Wed May 12 19:59:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_type, check_sizeof): replace unusable characters.
+ [ruby-talk:99788]
+
+Wed May 12 17:41:42 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb (Resolv::DNS::Config): make it configurable without
+ external file such as /etc/resolv.conf.
+
+Wed May 12 14:37:27 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c: attribute value of DC (short name of
+ domainComponent) should be IA5String.
+
+Wed May 12 13:20:19 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk/composite.rb: improve configure methods (based on
+ the proposal of [ruby-talk:99671]).
+
+Wed May 12 11:51:08 2004 Dave Thomas <dave@pragprog.com>
+
+ * class.c (rb_obj_singleton_methods): fix rdoc
+
+Tue May 11 07:09:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (is_defined): do not protect exception during receiver
+ evaluation.
+
+Mon May 10 22:28:14 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb (each_crlf_line): remove junk line.
+
+Mon May 10 21:44:42 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Change scheme for
+ looking up symbols in HTML generator.
+
+Mon May 10 16:45:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): warning during eval should not cause deadlock.
+ [ruby-talk:98651]
+
+ * eval.c (rb_eval): raise TypeError exception for superclass
+ mismatch. [ruby-list:39567]
+
+Mon May 10 12:11:37 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Hack to search parents
+ for unqualified constant names.
+
+Mon May 10 01:18:15 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb (logging): append "\n".
+
+Sun May 9 23:38:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/net/ftp.rb: ported documentation improvement from 1.8 branch
+
+ * lib/net/imap.rb: ditto
+
+ * lib/net/pop.rb: ditto
+
+ * lib/net/smtp.rb: ditto
+
+ * lib/net/telnet.rb: ditto
+
+Sun May 9 23:34:51 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_float.rb: added test_strtod to test Float("0").
+
+Sun May 9 13:24:24 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/yaml/store.rb: use FileUtils::copy.
+
+Sun May 9 12:34:26 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regex.c: removed unused file.
+
+Sat May 8 10:53:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_open): open should not ignore block when "to_open"
+ method is used. [ruby-dev:23478]
+
+Fri May 7 22:07:39 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mv): new option `force'. [ruby-talk:99457]
+
+ * lib/fileutils.rb: new method for command option reflection:
+ FileUtils.commands, .options, .have_option?, .options_of,
+ .collect_methods.
+
+ * lib/fileutils.rb: module Verbose, NoWrite, DryRun do not have
+ option flags @fileutils_verbose and @fileutils_noop, they make no
+ sense.
+
+Fri May 7 21:50:21 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::parse_include): Allow
+ multiple arguments to 'include'
+
+Fri May 7 21:03:51 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_list): Array() breaks pathes including "\n".
+ [ruby-core:02843]
+
+ * test/fileutils/test_fileutils.rb (mkdir): test "\n" in path.
+
+Fri May 7 20:53:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_modify): typo fixed. [ruby-dev:23473]
+
+Fri May 7 11:17:27 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * util.c (ruby_strtod): "0.0000000000000000001" should be converted
+ to 1.0e-19 instead of 0.0. (leading zeros aren't significant digits)
+ [ruby-talk:99318] [ruby-dev:23465]
+
+Thu May 6 22:27:32 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * ext/socket/socket.c (ippaddr): use NUMERICHOST if can not resolve
+ hostname.
+
+Thu May 6 22:09:29 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil.c (get_eval_string_core): bug fix. [ruby-dev:23466]
+
+Thu May 6 14:22:29 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb (to_yaml): added instance variable handling
+ for Ranges, Strings, Structs, Regexps.
+
+ * lib/yaml/rubytypes.rb (to_yaml_fold): new method for setting a
+ String's flow style.
+
+ * lib/yaml.rb (YAML::object_maker): now uses Object.allocate.
+
+ * ext/syck/gram.c: fixed transfer methods on structs, broke it
+ last commit.
+
+Thu May 6 14:38:02 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (rb_push_glob): simplified code (not change behavior)
+
+Thu May 6 13:32:44 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: get rid of side effect of Config.expand, patched by
+ <tttt01@infoseek.jp> (ruby-bugs:PR#597)
+
+Thu May 6 11:40:28 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (string): accept NIL.
+
+ * lib/net/imap.rb (body_type_basic): allow body-fields omissions.
+
+Thu May 6 01:59:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb (Generators::HtmlMethod::params):
+ Don't include the &block parameter if we have explicit
+ yield parameters.
+
+Wed May 5 03:52:31 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/ring.rb: use recv instead of recvfrom.
+
+Wed May 5 00:38:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/gserver.rb: documented
+ * lib/xmlrpc/README.txt: introduced for documentation purposes
+
+Mon May 3 09:47:24 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method_or_yield_parameters):
+ Fix parsing bug if yield called within 1 line block
+
+Sun May 2 21:56:48 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (rm_f, rm_r): test :force flag.
+
+Sun May 2 01:04:38 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib, ext/tk: renewal Ruby/Tk
+
+Fri Apr 30 20:08:41 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * time.c (SIZEOF_TIME_T): support SIZEOF_TIME_T == SIZEOF_INT.
+
+Wed Apr 28 01:26:11 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * oniguruma.h, regparse.c: imported Oni Guruma 2.2.8.
+
+Wed Apr 28 01:16:23 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * oniguruma.h, regparse.c: imported Oni Guruma 2.2.7.
+
+Tue Apr 27 14:43:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk: LIBURUBY_A is needed for extconf.rb even when
+ cross-compiling.
+
+Tue Apr 27 13:33:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (string_content): turn off NODE_NEWLINE flag to avoid
+ unnecessary line trace for inlined expression.
+ (ruby-bugs PR#1320)
+
+Tue Apr 27 08:15:13 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: passing Range tests.
+
+ * ext/syck/syck.h: version 0.44.
+
+ * ext/syck/gram.c: transfers no longer open an indentation.
+ fixed transfers which precede blocks.
+
+ * ext/syck/token.c: ditto.
+
+ * ext/syck/syck.c: fixed segfault if an anchor has been released already.
+
+ * ext/syck/node.c (syck_free_members): organized order of free'd nodes.
+
+ * ext/syck/rubyext.c (syck_emitter_write_m): test for proper string with
+ StringValue.
+
+Mon Apr 26 23:56:54 2004 Daniel Kelley <news-1082945587@dkelley.gmp.san-jose.ca.us>
+
+ * README.EXT, README.EXT.ja: fixed wrong function signature.
+ [ruby-talk:98349]
+
+Mon Apr 26 21:40:09 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::add_alias): Only alias
+ to instance methods.
+
+Sun Apr 25 18:26:23 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (ac_cv_func_fork): set to no on DJGPP.
+
+Sat Apr 24 14:32:03 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * re.c: applied stack error handling patch. [ruby-dev:23431]
+
+Sat Apr 24 10:38:31 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/markup/simple_markup.rb (SM::SimpleMarkup::group_lines):
+ Fix bug where consecutive headings are merged.
+
+Fri Apr 23 23:24:47 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: $hdrdir should not contain macros, for backward
+ compatibility. [bruby-dev:28]
+
+ * lib/mkmf.rb (create_makefile): in the case of extout, just copy
+ script files, without comparison.
+
+Fri Apr 23 16:38:46 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: sync taint/freeze flag between
+ a pathname object and its internal string object.
+
+Fri Apr 23 14:52:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt, arg, aref_args): should not make sole splat into
+ array, in aref_args other than aref with op_asgn.
+
+Fri Apr 23 14:14:38 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/resolv.rb: don't use Regexp#source to embed regexps.
+ [ruby-dev:23432]
+
+Thu Apr 22 18:25:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, ext/extmk.rb: make ext and .ext get removed by distclean.
+
+Thu Apr 22 10:07:01 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * */Makefile.sub (distclean-local): should remove $(RBCONFIG).
+
+Thu Apr 22 04:17:57 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_mod_define_method): allow binding methods to modules.
+ [ruby-dev:23410]
+
+ * parse.y (aref_args): should pass expanded list. [ruby-core:02793]
+
+Thu Apr 22 01:12:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (flo_to_s): tweak output string based to preserve
+ decimal point and to remove trailing zeros. [ruby-talk:97891]
+
+ * string.c (rb_str_index_m): use unsigned comparison for T_FIXNUM
+ search. [ruby-talk:97342]
+
+Wed Apr 21 23:04:42 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb, test/rinda/test_rinda.rb: check Hash tuple size.
+
+Wed Apr 21 20:05:00 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::HTTP#proxy_open): set Host: field explicitly.
+ [ruby-list:39542]
+
+Wed Apr 21 18:39:46 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: merge SMTP-TLS patch. This patch is
+ contributed by Daniel Hob. [ruby-core:02789]
+
+Wed Apr 21 18:23:45 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb: change coding style: def m( a ) -> def m(a).
+
+Wed Apr 21 18:01:47 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: do not use class variables.
+
+ * lib/net/pop.rb (do_start): ensure to clean up connection when
+ authentication failed.
+
+Wed Apr 21 17:23:59 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTP#connect): CONNECT must precede SSL connect.
+ [ruby-dev:23379]
+
+ * lib/net/http.rb (HTTP.new): class variables are not inherited
+ now.
+
+Wed Apr 21 15:56:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/ui/console/testrunner.rb (test_started): restore $0
+ after changing process title. [ruby-talk:97426]
+
+Wed Apr 21 10:18:06 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * process.c(rb_spawn): fix SEGV at "p system('command line here')"
+ (may happen only in bccwin32) [ruby-dev:23380]
+
+Mon Apr 19 20:58:44 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c: Updated RDocs.
+
+Mon Apr 19 18:11:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_equal): returns true if two hashes have same set
+ of key-value set. [ruby-talk:97559]
+
+ * hash.c (rb_hash_eql): returns true if two hashes are equal and
+ have same default values.
+
+Mon Apr 19 08:19:11 2004 Doug Kearns <djkea2@mugca.its.monash.edu.au>
+
+ * dln.c, io.c, pack.c, lib/benchmark.rb, lib/cgi.rb, lib/csv.rb,
+ lib/date.rb, lib/ftools.rb, lib/getoptlong.rb, lib/logger.rb,
+ lib/matrix.rb, lib/monitor.rb, lib/set.rb, lib/thwait.rb,
+ lib/timeout.rb, lib/yaml.rb, lib/drb/drb.rb, lib/irb/workspace.rb,
+ lib/net/ftp.rb, lib/net/http.rb, lib/net/imap.rb, lib/net/pop.rb,
+ lib/net/telnet.rb, lib/racc/parser.rb, lib/rinda/rinda.rb,
+ lib/rinda/tuplespace.rb, lib/shell/command-processor.rb,
+ lib/soap/rpc/soaplet.rb, lib/test/unit/testcase.rb,
+ lib/test/unit/testsuite.rb: typo fix.
+
+Mon Apr 19 08:14:18 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_body): Allow for
+ #ifdef HAVE_PROTOTYPES
+
+Fri Apr 16 17:04:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_equal): always returns true or false, never
+ returns nil. [ruby-dev:23404]
+
+Fri Apr 16 12:38:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/drb/drb.rb (DRb::DRbUnknown::initialize): Exception#to_str is
+ deprecated.
+
+ * lib/drb/drb.rb (DRb::DRbServer::InvokeMethod::perform): multiple
+ value class changed.
+
+ * lib/drb/invokemethod.rb (DRb::DRbServer::InvokeMethod18Mixin::block_yield):
+ ditto.
+
+Fri Apr 16 08:27:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: skip linking when libraries to be preloaded not
+ compiled. [ruby-list:39561]
+
+Thu Apr 15 19:57:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (pst_success_p): new method Process::Status#success?.
+ [ruby-dev:23385]
+
+ * rubytest.rb: do nothing while cross-compiling, return status in
+ system independent style.
+
+Thu Apr 15 19:26:54 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (rb_push_glob): Dir.glob() should return nil if block is given.
+ (http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Dir)
+
+ * dir.c (push_braces): Dir.glob() should handle '{ }' nested more than
+ 3 times.
+
+ * dir.c (push_braces, rb_push_glob): Dir.glob() should handle escaped
+ '{' and '}' and ','.
+
+ [ruby-dev:23376]
+
+Thu Apr 15 17:12:13 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/gdbm/gdbm.c (Init_gdbm): define GDBM::READER, GDBM::WRITER,
+ GDBM::WRCREAT and GDBM::NEWDB.
+ (fgdbm_initialize): use specified read/write flag.
+
+Wed Apr 14 13:06:09 2004 Doug Kearns <djkea2@mugca.its.monash.edu.au>
+
+ * array.c, enum.c, eval.c, file.c, io.c, numeric.c, object.c, prec.c,
+ process.c, re.c, string.c: typos in RDoc comments. [ruby-core:02783]
+
+Wed Apr 14 11:29:56 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * numeric.c (flo_eq): workaround for bcc32's bug.
+ (ruby-bugs-ja:PR#594)
+
+Wed Apr 14 11:06:38 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::scan): Changed
+ behavior of :enddoc: -- it now unconditionally terminates
+ processing of the current file.
+
+Wed Apr 14 10:57:40 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * defines.h: include <net/socket.h> to get fd_set definition in BeOS.
+
+Tue Apr 13 23:00:55 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb: change pattern matching.
+ a === b -> a == b || a === b. [druby-ja:98]
+
+ * test/rinda/test_rinda.rb: ditto.
+
+Tue Apr 13 21:50:57 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/Makefile.sub (PHONY): Borland make disallows empty command
+ rules.
+
+Tue Apr 13 17:55:16 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (begin_transport): should not overwrite HTTP
+ request header. [ruby-list:39543]
+
+Tue Apr 13 16:48:00 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: merge POP3S patch. This patch is contributed by
+ Daniel Hobe.
+
+Tue Apr 13 02:56:29 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * common.mk: changed the order of ascii.c alphabetically.
+
+Mon Apr 12 19:11:21 2004 Eric Hodel <drbrain@segment7.net>
+
+ * gc.c (rb_gc_copy_finalizer): typo. [ruby-core:02774]
+
+Mon Apr 12 18:45:58 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_init_i): should return
+ a value.
+
+Mon Apr 12 10:39:50 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (rb_glob2, rb_glob, push_globs, push_braces, rb_push_glob):
+ fix memory leak. (leaked when block was interrupted)
+
+Sun Apr 11 19:10:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (require_libraries): restore source file/line after
+ statically linked extensions initialized. [ruby-dev:23357]
+
+Sun Apr 11 10:47:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::TopLevel::add_class_or_module): Toplevel
+ classes and modules are a special case too... (handle extending existing
+ classes with or without :enddoc:)
+
+Sat Apr 10 23:51:13 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::add_to): Implementation of :enddoc:
+ made one too many assumptions...
+
+Sat Apr 10 00:00:19 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/markup/simple_markup/inline.rb: Fix problem
+ with \_cat_<b>dog</b>
+
+Fri Apr 9 17:05:21 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (has_magic, find_dirsep): incomplete '[' matches no character
+ in Dir.glob. (follows File.fnmatch's behavior)
+
+ * dir.c (fnmatch_helper): incomplete escape is ignored in File.fnmatch.
+ (follows Dir.glob's behavior)
+
+ * dir.c (find_dirsep): '/' between '[' and ']' is ignored in Dir.glob.
+ (follows File.fnmatch with File::FNM_PATHNAME 's behavior)
+
+ * dir.c (find_dirsep): escaped slash '\/' loses its meaning as
+ directory separator in Dir.glob.
+
+ [ruby-dev:23291]
+
+Thu Apr 8 20:25:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): skip uncompiled extensions.
+
+ * lib/mkmf.rb (create_makefile): emit no rules for static library if
+ $static is nil, e.g., outside of ext/.
+
+ * lib/test/unit/ui/console/testrunner.rb (test_started): show test
+ name via $0.
+
+ * runruby.rb: set environments to use the compiled binary.
+
+ * test/runner.rb: do nothing while cross-compiling.
+
+ * test/drb/drbtest.rb, test/soap/calc/test_calc_cgi.rb: use envutil to
+ know ruby binary, and restore $: after require.
+
+ * test/ruby/envutil.rb: give priority to RUBY environment variable to
+ use just compiled binary and libraries.
+
+Thu Apr 8 19:03:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_binmode): inverted condition. [ruby-dev:23349]
+
+Thu Apr 8 18:22:00 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_s_list): return encoding list if no block
+ is given. [ruby-dev:23063]
+
+Wed Apr 7 15:29:24 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): use NUM2INT() instead of num2i32().
+
+Wed Apr 7 12:32:02 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb, lib/rss/1.0.rb: accepted rdf:resource or
+ resource attribute in rdf:li.
+ * test/rss/test_parser.rb: added test for above change.
+
+ * lib/rss/dublincore.rb: reverted style.
+
+ * lib/rss/xmlparser.rb: normalized XMLParser class hierarchy.
+
+Wed Apr 7 10:43:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, common.mk, */Makefile.sub (ext/extinit.o): OUTFLAG
+ doesn't work for object files on VC.
+
+ * */Makefile.sub (config.h): need SIZEOF_TIME_T now.
+
+Wed Apr 7 00:24:34 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb: fix hash tuple bug.
+
+ * lib/rinda/tuplespace.rb: ditto.
+
+ * test/rinda/test_rinda.rb
+
+Tue Apr 6 18:24:18 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_get_path): get path string via "to_path" method if
+ path object is not a string. [Ruby2]
+
+ * gc.c (rb_gc_call_finalizer_at_exit): do not free threads in the
+ exit finalizers.
+
+ * io.c (rb_io_reopen): should use rb_io_check_io().
+
+Tue Apr 6 16:46:09 2004 Tanaka Akira <akr@m17n.org>
+
+ * configure.in: check the size of time_t.
+
+ * time.c (time_add): new function.
+ (time_plus): use time_add.
+ (time_minus): use time_add.
+
+Tue Apr 6 13:11:48 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (raise_socket_error): never return.
+
+ * ext/socket/socket.c (make_hostent): must return value.
+
+Tue Apr 6 00:14:43 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (Init_Exception): remove Exception#to_str. [Ruby2]
+
+ * eval.c (error_print): should no call "to_str" anymore use
+ "message" method instead.
+
+ * io.c (rb_f_open): Kernel#open() calls "to_open" if the first
+ argument responds to it. [Ruby2]
+
+Tue Apr 6 00:13:43 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb: add require 'drb/drb'
+
+Mon Apr 5 22:25:32 2004 Tanaka Akira <akr@m17n.org>
+
+ * test/zlib/test_zlib.rb: new file.
+ (TestZlibGzipWriter#test_new_nil): test for [ruby-dev:23228].
+
+Mon Apr 5 22:16:23 2004 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y (assoc_list): {a: 1, b: 2} should be allowed.
+ [ruby-dev:23328]
+
+Mon Apr 5 19:43:40 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regexec.c: imported Oni Guruma 2.2.6.
+
+Mon Apr 5 19:39:10 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * regparse.c, oniguruma.h: imported Oni Guruma 2.2.6.
+
+Mon Apr 5 12:12:09 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (raise_socket_error): some platforms don't have
+ EAI_SYSTEM.
+
+Mon Apr 5 08:18:23 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb: Remove leading ./ from file names so that cross
+ references work properly.
+
+Sun Apr 4 14:01:20 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/options.rb (Options::parse): Allow multiple -x options to
+ RDoc. Fix bug where files weren't being excluded properly
+
+Sat Apr 3 09:36:38 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/syck.h: version 0.43.
+
+Sat Apr 3 08:28:47 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/lib/gram.c: allow root-level inline collections.
+ [ruby-talk:94922]
+
+ * lib/yaml/rubytypes.rb (Symbol#to_yaml): emit symbols as implicits.
+ [ruby-talk:94930]
+
+Fri Apr 2 19:28:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/Makefile.sub (OUTFLAG): needed for static-linked-ext.
+
+Fri Apr 2 18:00:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): extract necessary variables for static link
+ from Makefile.
+
+ * lib/mkmf.rb (create_makefile): save preload and libpath for next
+ compile.
+
+Fri Apr 2 17:27:17 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (top_include): include in the wrapped load is done for
+ the wrapper, not for a singleton class for wrapped main.
+ [ruby-dev:23305]
+
+Fri Apr 2 15:13:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_eq): use temporary double variable to save the
+ result (internal float register may be bigger than 64 bits, for
+ example, 80 bits on x86). [ruby-dev:23311]
+
+Fri Apr 2 14:35:26 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (block_pass): should generate unique identifier of the
+ pushing block. [ruby-talk:96363]
+
+Fri Apr 2 11:36:20 2004 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (Init_load): make $LOADED_FEATURES built-in.
+ [ruby-dev:23299]
+
+ * ruby.c (ruby_prog_init): make $PROGRAM_NAME built-in.
+
+ * lib/English.rb: remove $LOADED_FEATURES and $PROGRAM_NAME.
+
+Fri Apr 2 07:31:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c: mistakingly removed do_not_reverse_lookup.
+ [ruby-list:39475]
+
+ * ext/socket/socket.c (make_hostent): fix memory leak, based on
+ the patch from HORIKAWA Hisashi <vzw00011@nifty.ne.jp>.
+
+Thu Apr 1 22:55:33 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb: Allow rdoc comments in
+ =begin rdoc/=end
+
+ * lib/rdoc/parsers/parse_rb.rb: Fix problem with comment in
+ top-level method being taken as file comment.
+
+Thu Apr 1 22:55:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_options.rb: Fix undefined variable warning.
+
+Thu Apr 1 19:58:37 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/mapping/{factory.rb,registry.rb}: fixed illegal mapped URI
+ object with soap/marshal.
+ added URIFactory class for URI mapping. BasetypeFactory checks
+ instance_variables when original mapping is not allowed (ivar must
+ be empty). Instance of URI have instance_variables but it must be
+ llowed whenever original mapping is allowed or not.
+
+Wed Mar 31 19:06:23 2004 Tanaka Akira <akr@m17n.org>
+
+ * time.c (year_leap_p): new function.
+ (timegm_noleapsecond): ditto.
+ (search_time_t): use timegm_noleapsecond instead of
+ mktime for first guess.
+
+Wed Mar 31 12:05:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/delegate.rb (DelegateClass): define internal methods of the
+ result class, but not metaclass of the caller. [ruby-talk:96156]
+
+ * intern.h: provide proper prototypes. [ruby-core:02724]
+
+ * ruby.h: missing.h is now prerequisite to intern.h.
+
+Wed Mar 31 11:17:16 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): raises RangeError if uv is out of UTF8 value
+ range. [ruby-dev:23281]
+
+ * io.c (rb_io_binmode): stdio buffer should be empty when calling
+ IO#binmode. [ruby-talk:96155]
+
+Tue Mar 30 20:25:34 2004 Tanaka Akira <akr@m17n.org>
+
+ * time.c (search_time_t): limit guess range by mktime if it is
+ available. [ruby-dev:23274]
+
+Tue Mar 30 18:19:00 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): fix SEGV at retry in iterator's receiver.
+ [ruby-dev:23227]
+
+Mon Mar 29 20:17:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_exec): follow older behavior if close-on-exec is not
+ available.
+
+ * process.c (rb_fork): protect from exceptions while waiting failed
+ process, if status is given.
+
+Sun Mar 28 16:25:37 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cygwin/GNUmakefile.in (clean-local, distclean-local): remove
+ work files.
+
+ * win32/Makefile.sub (clean-local): ditto.
+
+Sun Mar 28 14:23:02 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb: def m( arg ) -> def m(arg).
+
+Sun Mar 28 14:09:13 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/pop.rb (auth): failed when account/password include "%".
+ [ruby-talk:95933]
+
+Sat Mar 27 21:40:41 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: permit extra semicolon in content-type field.
+
+Sat Mar 27 10:40:48 2004 Tanaka Akira <akr@m17n.org>
+
+ * (lib/pp.rb, lib/prettyprint.rb): define seplist in PP::PPMethods
+ instead of PrettyPrint.
+
+Sat Mar 27 01:47:09 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: trim tail space of each line. no user visible change.
+
+ * lib/rss/dublincore.rb: fixed class definition mismatch.
+
+ * sample/openssl/gen_csr.rb: fixed wrong usage text.
+
+Thu Mar 25 23:15:24 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_options.rb (RI::Options::show_version):
+ Add --version option
+
+Thu Mar 25 21:45:00 2004 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: Bug in + and - reported by Bret Jolly
+ fixed.
+
+Thu Mar 25 21:01:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * version.c (ruby_show_copyright): obtain copyright year from
+ RUBY_RELEASE_YEAR.
+
+ * win32/resource.rb: ditto.
+
+Thu Mar 25 19:37:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/resource.rb: default rubyw icon to ruby.ico, and let DLL also
+ include them.
+
+ * win32/resource.rb: include winver.h for older WindowsCE.
+
+Thu Mar 25 14:01:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, */Makefile.sub (lib, dll): phony targets.
+
+ * configure.in (ruby, miniruby): ditto.
+
+ * cygwin/GNUmakefile.in (rubyw): ditto.
+
+Thu Mar 25 04:16:18 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_options.rb (RI::Options): Add the --list-names option,
+ which dumps our all known names
+
+Thu Mar 25 03:57:47 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_util.rb (NameDescriptor::initialize): No longer
+ allow nested classes to be designated using "."--you must
+ now use "::"
+
+Thu Mar 25 02:00:18 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/html/one_page_html.rb (Page):
+ Fix to work with C modules.
+
+Wed Mar 24 20:49:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/uri.rb: Documented (thanks Dmitry V. Sabanin).
+ * lib/uri/common.rb: Ditto.
+ * lib/uri/ftp.rb: Ditto.
+ * lib/uri/generic.rb: Ditto.
+ * lib/uri/http.rb: Ditto.
+ * lib/uri/https.rb: Ditto.
+ * lib/uri/ldap.rb: Ditto.
+ * lib/uri/mailto.rb: Ditto.
+
+Wed Mar 24 18:48:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb ($ruby, $topdir, $hdrdir): should not be affected by
+ DESTDIR after installed.
+
+ * lib/mkmf.rb (dummy_makefile): default file lists to be cleaned.
+
+Wed Mar 24 12:32:56 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::handle_class_module):
+ Don't document methods if we don't know for sure the
+ class or module.
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_class):
+ Don't store documentation for singleton classes if we
+ don't know the real class.
+
+Wed Mar 24 11:11:26 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb (Generators::HTMLGenerator::load_html_template):
+ Allow non-RDoc templates by putting a slash in the template name
+
+Wed Mar 24 10:05:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/tempfile.rb (Tempfile::_close): should not clear @tmpname
+ until the file is really removed. [ruby-core:02684]
+
+Wed Mar 24 04:12:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_mod_cvar_get): new method Module#class_variable_get.
+
+ * object.c (rb_mod_cvar_set): ditto (Module#class_variable_set).
+
+Tue Mar 23 17:45:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_atfork): 1.9 warns no more for thread
+ termination. [ruby-dev:23212]
+
+Tue Mar 23 14:46:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, */Makefile.sub, common.mk (clean-local, distclean-local):
+ separate files under directories due to directory separator.
+
+ * */Makefile.sub (MKFILES): common.mk and */Makefile.sub should not be
+ removed.
+
+ * win32/Makefile.sub, wince/Makefile.sub: $* cannot appear in explicit
+ rules.
+
+ * cygwin/GNUmakefile.in: some mingw stuffs were missed.
+
+ * lib/mkmf.rb (create_makefile): Borland make wrongly removes braces
+ from command lines.
+
+ * bcc32/Makefile.sub: needs bcc32/mkexports.rb.
+
+Mon Mar 22 08:21:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, */Makefile.sub, common.mk: extract common portions.
+
+ * Makefile.in, cygwin/GNUmakefile.in, */Makefile.sub (RBCONFIG):
+ separated time stamp file for rbconfig.rb.
+
+ * configure.in: append common.mk to Makefile.
+
+ * mkconfig.rb: keep mtime of rbconfig.rb if unchanged.
+
+ * win32/rm.bat: remove multiple files.
+
+ * wince/mkconfig_wce.rb: use fake.rb instead.
+
+Sun Mar 21 22:17:35 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#virtual_host):
+ sort @virtual_hosts in address, port, host order.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server):
+ hostname should not be match if :ServerAlias is not given.
+
+Sun Mar 21 21:11:16 2004 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/shell/*: bug fix for Shell#system(command_line_string).
+
+Sun Mar 21 21:04:42 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.1: add -width option to .Bl for old groff.
+
+Sun Mar 21 18:57:37 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/*: Test::Unit::TestCase -> RSS::TestCase and
+ Test::Unit::Assertions -> RSS::Assertions.
+
+Sun Mar 21 18:48:20 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/{rss,dublincore,syndication}.rb: handled W3CDTF correctly.
+
+Sun Mar 21 18:15:29 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_xml-stylesheet.rb: added tests for xml-stylesheet.
+
+ * lib/rss/xml-stylesheet.rb: added xml-stylesheet parsing
+ function.
+
+Sat Mar 20 23:51:03 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (rb_require_safe): preserve old ruby_errinfo.
+ [ruby-talk:95409]
+
+ * eval.c (rb_f_raise): should not clear backtrace information if
+ exception object already have one.
+
+Sat Mar 20 21:21:03 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/extmk.rb: rm -rf $extout, not extout.
+
+Sat Mar 20 15:25:36 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/template/html/html.rb (RDoc::Page): Force
+ page background to white.
+
+Sat Mar 20 09:33:36 2004 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb, lib/date/format.rb: _parse() now accepts fractional
+ part of second minute that follows a comma or a full stop.
+
+Fri Mar 19 21:06:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (assoc_list): allow {sym: val} style Hash. [Ruby2]
+ this change is done by Nobuyoshi Nakada <nobu@ruby-lang.org>.
+
+Fri Mar 19 15:15:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_cvar_set): class variables become private to the
+ particular class/module. [Ruby2]
+
+ * variable.c (rb_cvar_get): ditto.
+
+ * variable.c (rb_cvar_defined): ditto.
+
+Fri Mar 19 11:31:32 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb ($beos, $solaris): add OS flags.
+
+ * lib/mkmf.rb (RUBY): / is not recognized as path separator on
+ nmake/bmake. [ruby-list:39388]
+
+ * lib/mkmf.rb (CLEANLIBS, CLEANOBJS): should remove *.exp with *.so.
+
+Fri Mar 19 01:55:57 2004 Mauricio Fernandez <batsman.geo@yahoo.com>
+
+ * io.c (rb_io_sync): need not to check writable. [ruby-core:02674]
+
+Thu Mar 18 19:47:44 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * instruby.rb, rubytest.rb: do not depend on srcdir.
+
+Thu Mar 18 18:50:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: no longer embed srcdir and compile_dir into
+ rbconfig.rb.
+
+ * ext/extmk.rb, lib/mkmf.rb: obtain top_srcdir and topdir from library
+ paths.
+
+Thu Mar 18 17:46:35 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: do not undef :to_a.
+
+Thu Mar 18 16:22:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_eq): avoid false positive by using scope and
+ dyna_vars. no longer use frame.uniq.
+
+ * eval.c (proc_arity): arity is now defined as number of
+ parameters that would not be ignored. i.e. Proc.new{}.arity
+ returns zero. update test suites too.
+
+Thu Mar 18 15:27:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: remove specialized version of rb_Array(). use simple
+ one defined in object.c.
+
+ * object.c (Init_Object): remove Kernel#to_a.
+
+ * enum.c (enum_zip): use "to_a" instead of "to_ary".
+
+Wed Mar 17 00:22:03 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * oniguruma.h: imported Oniguruma 2.2.5.
+ * regparse.c: ditto.
+
+Tue Mar 16 11:14:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (fnmatch_helper): File.fnmatch('\.', '.') should return true.
+ (Rev1.112 lost compatiblity)
+
+ * dir.c (fnmatch_helper): File.fnmatch('\/', '/', File::FNM_PATHNAME)
+ should return true. (Rev1.112 lost compatiblity)
+
+ * dir.c (fnmatch): File.fnmatch('**/.boo', '.foo/.boo',
+ File::FNM_PATHNAME) should return false because of leading period.
+
+Mon Mar 15 17:01:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (exc_initialize): calling 'to_str' each time just for
+ type checking is too heavy. [ruby-core:02661]
+
+Mon Mar 15 10:14:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SocketForwarder):
+ add do_not_reverse_lookup.
+
+Mon Mar 15 07:39:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): should not re-submit TAG_BREAK if this
+ yield is not break destination. [ruby-dev:23197]
+
+Sun Mar 14 22:07:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_raise): err at unstarted thread. (PR#1302)
+
+Sat Mar 13 14:56:32 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/ut_drb.rb: use 'druby://localhost:0'. [ruby-dev:23078]
+
+ * test/drb/ut_eval.rb: ditto.
+
+ * test/drb/ut_large.rb: ditto.
+
+ * test/drb/ut_safe1.rb: ditto.
+
+ * test/drb/ut_drb_drbssl.rb: use 'drbssl://localhost:0'.
+
+Fri Mar 12 23:52:56 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (fnmatch): directory recursion '**/' can be used with
+ File::FNM_PATHNAME. [ruby-dev:22901]
+
+ * dir.c (fnmatch, fnmatch_helper): only '/' is accepted as path
+ separator even in DOSISH environment. [ruby-dev:22974]
+ [ruby-list:39337]
+
+ * dir.c (fnmatch_helper): faster '*' matching.
+
+Fri Mar 12 20:19:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rb_cv_noreturn): default for platforms not support
+ prototypes.
+
+ * ruby.c (ruby_init_loadpath): buffer for path name should have
+ MAXPATHLEN.
+
+ * lib/mkmf.rb (configuration): include topdir and hdrdir in VPATH.
+
+ * lib/mkmf.rb (create_makefile): default dependency rule.
+
+Fri Mar 12 07:35:36 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb (WEBrick::Config::General): add
+ :DoNotReverseLookup.
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#accept): call
+ do_not_reverse_lookup for each socket if :DoNotReverseLookup
+ is set. [ruby-code:02357]
+
+Wed Mar 10 22:26:25 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (remove_dir): should handle symlink correctly.
+ This patch is contributed by Christian Loew. [ruby-talk:94635]
+
+Wed Mar 10 16:28:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (return_jump): set return value to the return
+ destination. separated from localjump_destination().
+
+ * eval.c (break_jump): break innermost loop (or thread or proc).
+
+ * eval.c (rb_yield_0): set exit_value for block break.
+
+Wed Mar 10 16:00:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * struct.c (rb_struct_s_def): Struct::new executes block with
+ generated struct class. [ruby-talk:02606]
+
+Wed Mar 10 15:58:43 2004 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * eval.c (eval): Only print backtrace if generating the backtrace
+ doesn't generate an exception. [ruby-core:02621]
+
+Wed Mar 10 10:15:16 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (opt_W_getter): get rid of warning.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub:
+ fixed dependency.
+
+Tue Mar 9 13:04:26 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_ungetc): raise IOError instead of calling
+ rb_sys_fail(). [ruby-talk:23181]
+
+Tue Mar 9 10:03:40 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub:
+ replaced regex.c entry with Oniguruma files.
+
+Tue Mar 9 01:09:46 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * Makefile.in: replaced regex.c entry with Oniguruma files.
+
+Mon Mar 8 23:16:07 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: HTTPHeader did not initialized correctly.
+
+ * lib/net/http.rb (connect): does same debug output.
+
+Mon Mar 8 21:38:18 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (add_header): remove warning. [ruby-dev:23170]
+
+Mon Mar 8 21:09:39 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (range): Cancel change for incomplete '['. More discussion
+ is needed.
+
+Mon Mar 8 19:35:13 2004 akira yamada <akira@arika.org>
+
+ * lib/uri/common.rb (URI::REGEXP::PATTERN::HOSTPORT): (?:#{PORT})
+ -> (?::#{PORT}). [ruby-dev:23170]
+
+Mon Mar 8 15:03:24 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (range): treat incomplete '[' as ordinary character (like
+ has_magic does). fix buffer overrun at incomplete escape like '[\'.
+
+Mon Mar 8 13:35:32 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * regparse.c (parse_exp): need to separate initialization for bcc32.
+ [ruby-dev:23169]
+
+ * oniguruma.h (ONIG_EXTERN): check __GNUC__ instead of __CYGWIN__.
+
+Mon Mar 8 01:05:55 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb (WEBrick::Config::HTTP): rename :RequestHander
+ to :RequestCallback and add new option :ServerAlias.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): use
+ :RequestCallback and warn if :RequestHandler is in server's option.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should print
+ error message for WEBrick::HTTPSataus::Error.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server):
+ lookup for hostname from :ServerAlias if the req.host is not match
+ to :ServerName.
+
+ * lib/webrick/httpservlet.rb (WEBrick::HTTPServlet::CGIHandler#do_GET):
+ use $?.exitstatus and refine log message.
+
+Sun Mar 7 16:22:26 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * Makefile.in (lex.c): use $? instead of $<.
+
+ * lib/pstore.rb (commit_new): use FileUtils.copy_stream for Cygwin.
+ [ruby-dev:23157]
+
+Sun Mar 7 05:34:42 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: HTTPHeader keeps its header fields as an array.
+
+ * lib/net/http.rb: new method HTTPHeader#add_header, get_fields.
+
+ * lib/net/http.rb: new method HTTPHeader#content_length=.
+
+ * lib/net/http.rb: new method HTTPHeader#content_type, main_type,
+ sub_type, type_params, content_type=, set_content_type.
+
+ * lib/net/http.rb (HTTPHeader#basic_encode): result of pack(m) may
+ contain multiple LFs.
+
+Sun Mar 7 03:11:00 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: new method Net::HTTPRequest#body(=).
+
+ * lib/net/http.rb: new method Net::HTTPRequest#body_stream(=).
+
+Sun Mar 7 02:06:07 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: spin off https code again.
+
+ * lib/net/https.rb: new file.
+
+ * ext/openssl/lib/net/https.rb: removed. moved to net/https with
+ slight modifications.
+
+ * ext/openssl/lib/net/protocols.rb: removed. merged with net/http.
+
+ * lib/net/protocol.rb: new class BufferedIO.
+
+ * lib/net/protocol.rb: InternetMessageIO < BufferedIO.
+
+ * lib/net/protocol.rb: BufferedIO.new takes an IO.
+
+ * lib/net/smtp.rb: follow InternetMessageIO's change.
+
+ * lib/net/pop.rb: ditto.
+
+Sun Mar 7 00:55:03 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: remove method: InternetMessageIO#address,
+ port, ip_address, read_timeout(=), socket.
+
+ * lib/net/protocol.rb: simplify code.
+
+ * lib/net/protocol.rb: apply latest coding style.
+
+Sat Mar 6 15:15:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/strscan/depend: depends on re.h and regex.h.
+
+ * ext/strscan/strscan.c: no version check needed.
+
+ * ext/strscan/strscan.c (strscan_init_copy): struct re_registers must
+ not be bitwise copied.
+
+Sat Mar 6 11:14:33 2004 David Black <dblack@wobblini.net>
+
+ * lib/scanf.rb: refixed the previous fix in IO#block_scanf
+
+Sat Mar 6 10:49:40 2004 David Black <dblack@wobblini.net>
+
+ * lib/scanf.rb: fixed a logic glitch in IO#block_scanf
+
+Sat Mar 6 02:00:19 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: net/https is merged.
+
+ * ext/openssl/lib/net/https.rb: ditto.
+
+Sat Mar 6 00:39:21 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+
+ * oniggnu.h: imported from Oniguruma library.
+ * oniguruma.h: ditto.
+ * regcomp.c: ditto.
+ * regenc.c: ditto.
+ * regenc.h: ditto.
+ * regerror.c: ditto.
+ * regex.c: ditto.
+ * regexec.c: ditto.
+ * reggnu.c: ditto.
+ * regint.h: ditto.
+ * regparse.c: ditto.
+ * regparse.h: ditto.
+ * ascii.c: ditto.
+ * euc_jp.c: ditto.
+ * sjis.c: ditto.
+ * utf8.c: ditto.
+
+ * MANIFEST: added Oniguruma files listed above.
+
+ * LEGAL: added Oniguruma license.
+
+ * regex.h: now includes oniggnu.h.
+
+ * re.c: applied Oniguruma patch.
+
+Fri Mar 5 23:13:08 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: support WebDAV methods, PROPPATCH, LOCK,
+ UNLOCK, OPTIONS, PROPFIND, DELETE, MOVE, COPY, MKCOL.
+ This patch is contributed by Tatsuki Sugiura.
+
+Fri Mar 5 20:58:37 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: Net::HTTPResponse#response is obsolete.
+ [ruby-core:02592]
+
+ * lib/net/http.rb: Net::HTTPResponse#header is obsolete.
+
+ * lib/net/http.rb: Net::HTTPResponse#read_header is obsolete.
+
+Fri Mar 5 20:10:57 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: new method StringScanner#initialize_copy
+ to allow #dup and #clone.
+
+ * test/strscan/test_strscan.rb: test StringScanner#dup.
+
+Fri Mar 5 19:42:09 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTPResponse#to_ary): should return an object
+ which does not respond to #to_ary. It causes infinite loop in
+ puts. [ruby-core:02578]
+
+Fri Mar 5 00:51:35 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/test/unit.rb: Move RDoc documentation so that you can
+ now say 'ri Test::Unit'
+
+Thu Mar 4 22:31:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in: miniruby is not needed for cross compile.
+
+ * configure.in (PREP): miniruby for native compile.
+
+Thu Mar 4 11:46:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/drb/extservm.rb (DRb::ExtServManager#invoke_service_command):
+ detach server processes to get rid of zombies.
+
+Thu Mar 4 10:41:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ruby.h (T_MASK): save 1 bit in flags bits by shifting T_xxx
+ values.
+
+Thu Mar 4 08:08:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c: get rid of warnings.
+
+ * lib/rss/taxonomy.rb: ditto.
+
+ * lib/rdoc/ri/ri_formatter.rb: ditto.
+
+ * test/ruby/test_assignment.rb: ditto.
+
+Thu Mar 4 01:17:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/ri/ri_display.rb (DefaultDisplay::page): wait until the
+ pager terminates.
+
+Wed Mar 3 13:10:56 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (method_hash): new method. [ruby-talk:93968]
+
+ * eval.c (proc_eq): do not compare dyna_vars.
+
+ * eval.c (proc_hash): new method.
+
+ * eval.c (rb_yield_0): protect break/return from within orphan (or
+ lambda) Proc object.
+
+Wed Mar 3 09:52:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb ($topdir): use compile_dir only when not installed yet.
+ [ruby-talk:94098]
+
+Wed Mar 3 01:18:52 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/converter.rb: handled Uconv::Error.
+
+ * lib/rss/dublincore.rb: DublincoreModel -> DublinCoreModel
+
+Wed Mar 3 00:59:30 2004 David Black <dblack@wobblini.net>
+
+ * lib/scanf.rb: soak_up_spaces only ungetc's non-space last
+ character
+
+ * lib/scanf.rb: IO#block_scanf now returns partial last iteration
+ array if format string matches partly
+
+Tue Mar 2 16:30:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): erred program name should be reported by
+ exceptions, instead of the first argument.
+
+ * process.c (rb_spawn): ditto.
+
+ * process.c (proc_spawn_v): use first argument as program name.
+
+ * win32/win32.c (rb_w32_aspawn): ditto.
+
+ * win32/win32.c (CreateChild): search executable file if no program
+ name given.
+
+ * lib/drb/extservm.rb (invoke_service_command): use Process.spawn.
+ [ruby-dev:23103]
+
+ * lib/rdoc/ri/ri_display.rb (setup_pager): use IO.popen.
+ [ruby-dev:23086], [ruby-dev:23103]
+
+ * lib/rdoc/diagram.rb (convert_to_png): ditto.
+
+ * lib/rdoc/generators/chm_generator.rb (compile_project): ditto.
+
+Tue Mar 2 12:24:03 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub, wince/Makefile.sub (config.h): shouldn't check
+ defined? NORETURN. [ruby-dev:23100]
+
+Tue Mar 2 11:28:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (test_ljump): cannot use
+ assert_nothing_raised due to passing block.
+
+Tue Mar 2 06:23:14 2004 David Black <dblack@wobblini.net>
+
+ * lib/scanf.rb: fixed Kernel#scanf to propagate code block
+
+Mon Mar 1 23:25:40 2004 David Black <dblack@wobblini.net>
+
+ * lib/scanf.rb: Partial fix so STDIN#scanf works with new
+ STDIN#pos behavior
+
+Mon Mar 1 19:42:05 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/setup.mak: configure's default is "--enable-install-doc"
+
+ * win32/setup.mak: ditto.
+
+Mon Mar 1 12:24:10 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_alias):
+ Allow aliases to have parentheses
+
+Sun Feb 29 23:14:53 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_class):
+ Handle :nodoc: on singleton classes.
+
+Sat Feb 28 21:50:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bcc32/Makefile.sub, bcc32/README.bcc32, bcc32/configure.bat,
+ bcc32/setup.mak: new configure scheme. use ``configure --prefix=dir''
+ instead of ``make DESTDIR=dir install''.
+ --with-static-linked-ext support on bccwin32. [ruby-dev:23034]
+
+Sat Feb 28 21:50:20 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/setup.mak: "configure --disable-install-doc" is now working.
+
+ * win32/setup.mak: ditto.
+
+Sat Feb 28 15:09:49 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/configure.bat: append missing label ":exit".
+
+ * bcc32/configure.bat: fix typo.
+
+Sat Feb 28 10:31:03 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * MANIFEST: add test_erb.rb
+
+ * lib/erb.rb, test/erb/test_erb.rb: don't forget filename,
+ if both filename and safe_level given. [ruby-dev:23050]
+
+Sat Feb 28 01:08:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): should not allow symbol for invalid global
+ variable (e.g. `:$-)`). [ruby-core:02518]
+
+Fri Feb 27 20:37:09 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): no orphan block check is needed when pcall
+ is true.
+
+ * eval.c (localjump_destination): update localjump condition.
+
+Fri Feb 27 02:10:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (localjump_destination): lambda should not interfere
+ return from the yielded block.
+
+Fri Feb 27 00:53:49 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb, test/drb/drbtest.rb: require drb/eq.rb by default
+
+Thu Feb 26 12:15:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (make_cmdvector): adjust successive double-quote
+ handling.
+
+Thu Feb 26 09:42:56 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (delete_if_i): use st_delete_safe() (via
+ rb_hash_delete()) instead of returning ST_DELETE.
+
+Thu Feb 26 02:35:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_f_exec): get rid of SEGV when exec failed for command
+ in single string.
+
+Wed Feb 25 21:17:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (obj_free), io.c (rb_io_fptr_finalize), rubyio.h (OpenFile):
+ sharing OpenFile.
+
+ * io.c (rb_io_initialize): accept IO instance. [ruby-dev:22195]
+
+Wed Feb 25 21:16:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (with_destdir): should return the given argument if no
+ DESTDIR is given.
+
+ * instruby.rb: use path name expansion of cmd.exe.
+
+Wed Feb 25 20:44:45 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi-lib.rb, lib/getopts.rb, lib/importenv.rb, lib/parsearg.rb:
+ warn with caller position.
+
+ * test/rss/test_content.rb, test/rss/test_dublincore.rb,
+ test/rss/test_syndication.rb, test/rss/test_trackback.rb: use cgi
+ instead of cgi-lib.
+
+Tue Feb 24 18:42:03 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (glob_helper): '**/' should not match leading period
+ unless File::FNM_DOTMATCH is set. (like '*/') [ruby-dev:23014]
+
+Tue Feb 24 18:03:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_file.rb (test_fnmatch): test for dir.c:1.108.
+
+Tue Feb 24 17:07:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (fnmatch): File.fnmatch with File::FNM_PATHNAME was broken
+ for the pattern including '*' followed by '/'.
+
+Tue Feb 24 13:22:21 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc::normalized_file_list): Attempt to get better
+ heuristics on which files to include and exclude. Now only include
+ non-standard files if they are explicitly named in ARGV.
+
+Tue Feb 24 07:23:30 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Deal with :stopdoc: when
+ choosing a default main page to display (ie. don't select a page
+ if we don't have documentation for it).
+
+Tue Feb 24 06:40:14 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RubyLex::identify_identifier): Handle
+ class variables in code listings
+
+Tue Feb 24 06:32:27 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_aliases): Handle
+ aliases in C files.
+
+Tue Feb 24 06:16:22 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb (RDoc::RDoc::document): Now create op dir _before_
+ parsing files.
+
+Tue Feb 24 06:08:47 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_constant):
+ Start collecting text of constant values earlier: was missing
+ values in output if there was no space after '='
+
+Tue Feb 24 06:08:25 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Escape contant values.
+
+Tue Feb 24 03:45:06 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_config.c (ossl_config_each): add new method
+ OpenSSL::Config#each. it iterates with section name, field name
+ and value.
+
+ * ext/openssl/ossl_config.c (Init_ossl_config): include Enumerable.
+
+Mon Feb 23 09:09:44 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * instruby.rb (parse_args): use optparse instead of getopts.
+
+ * instruby.rb (DOSISH): embedded path in batch files should not be
+ prefixed by DESTDIR. [ruby-core:02186]
+
+Sun Feb 22 14:58:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: $extstatic is Array or nil now. [ruby-talk:93383]
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub: terminate options.
+
+ * lib/mkmf.rb (init_mkmf): $INCFLAGS also should be lazy-evaluated.
+
+Sun Feb 22 13:05:37 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/mailto.rb (URI::MailTo::to_s): should include fragment.
+
+Sun Feb 22 12:58:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: use optparse instead of getopts.
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub: ditto.
+
+Sun Feb 22 09:51:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * re.c: corrected documentation format (rb_reg_initialize_m)
+
+Sat Feb 21 22:41:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * ext/zlib/zlib.c: documented, but needs more effort.
+
+Sat Feb 21 14:33:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: prefer relative path. [ruby-talk:93037]
+
+Sat Feb 21 11:12:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/os2.c, missing/x68.c: typo fix. pointed out by greentea.
+
+Fri Feb 20 19:11:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct#initialize_copy): should not share
+ members. [ruby-dev:22966]
+
+Fri Feb 20 18:59:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/init.rb (IRB::IRB.parse_opts): add -I option to
+ irb. [ruby-dev:39243]
+
+Fri Feb 20 12:55:27 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): fix typo.
+
+ * win32/win32.c (CreateChild): first argument to CreateProcess() must
+ have path, not just basename.
+
+Thu Feb 19 23:24:16 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb (Generators::HtmlClass::build_attribute_list):
+ Support visibility modifiers for attributes
+
+Thu Feb 19 22:39:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/ostruct.rb: documented
+
+Thu Feb 19 22:39:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/rinda/test_rinda.rb: DRb.start_service only once in testsuites.
+ DRb.start_service could handle this.
+
+Thu Feb 19 22:24:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/mapping/rubytypeFactory.rb: should not dump singleton class.
+ [ruby-dev:22588]
+ c = class << Object.new; class C; self; end; end; SOAPMarshal.dump(c)
+
+Thu Feb 19 18:08:18 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * ext/strscan/strscan.c: improved documentation
+
+Thu Feb 19 18:08:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c, win32/win32.h: fixed prototypes.
+
+ * win32/win32.c (wait): same as waitpid() with -1.
+
+Thu Feb 19 02:34:28 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/markup/simple_markup/preprocess.rb (SM::PreProcess::include_file):
+ Only strip comment markers if all lines start with comments.
+
+Thu Feb 19 03:05:49 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: StringScanner#restsize is obsolete;
+ use #rest_size instead.
+
+ * ext/strscan/strscan.c: StringScanner#matchedsize is obsolete;
+ use #matched_size instead.
+
+Thu Feb 19 02:42:19 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: don't use rb_eval_string, it defines
+ classes under the module when required in module clauses.
+ [ruby-dev:22951]
+
+Thu Feb 19 02:37:28 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: merge documentation from 1.8 branch.
+ Thanks Gavin Sinclair.
+
+Thu Feb 19 00:20:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/cgi-lib.rb: deprecated after 1.8.1
+
+ * lib/getopts.rb: ditto
+
+ * lib/importenv.rb: ditto
+
+ * lib/parsearg.rb: ditto
+
+Thu Feb 19 00:11:05 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/markup/simple_markup/preprocess.rb (SM::PreProcess::handle):
+ Strip extraneous space from filenames in :include:
+
+Wed Feb 18 22:53:41 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/unix.rb: remove O_NONBLOCk, thanks \ay
+
+Wed Feb 18 22:42:19 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: improt test_rinda.rb
+
+Wed Feb 18 22:03:11 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/*: should not depend on $KCODE.
+
+Wed Feb 18 18:07:09 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_sprintf.rb: added tests.
+
+Wed Feb 18 17:18:01 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c: need to include <olectl.h> on Cygwin.
+
+Wed Feb 18 10:40:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): sign bit extension should not be done
+ if FPLUS flag is specified. [ruby-list:39224]
+
+ * sprintf.c (rb_f_sprintf): do not prepend dots for negative
+ numbers if FZERO is specified. [ruby-dev:39218]
+
+Wed Feb 18 10:23:34 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): clean up.
+
+Tue Feb 17 23:40:34 2004 Guy Decoux <ts@moulon.inra.fr>
+
+ * sprintf.c (rb_f_sprintf): preserve original val for
+ format_integer. [ruby-talk:92975]
+
+Tue Feb 17 23:28:45 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/marshal/test_marshal.rb, test/ruby/test_marshal.rb: do $:
+ trick to share the testcase test/ruby/marshaltestlib.rb.
+
+Tue Feb 17 23:13:23 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/marshaltestlib.rb: common marshal testcase added.
+
+ * test/ruby/test_marshal.rb: use above testsuite.
+
+ * test/soap/marshal/test_marshal.rb: ditto.
+
+ * test/soap/marshal/cmarshal.rb: removed (not used).
+
+Tue Feb 17 19:34:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): $extout_prefix doesn't vary for libraries.
+
+ * ext/extmk.rb (extmake): remove compile directory if empty.
+
+ * ext/extmk.rb (parse_args) lib/mkmf.rb (create_makefile): move
+ initialization of $extout_prefix from lib/mkmf.rb. [ruby-dev:22928]
+
+ * ext/extmk.rb: clear ext and extout directory when cleaning.
+
+ * lib/mkmf.rb (CLEANLIBS): should be under $(arch) directory.
+
+Tue Feb 17 18:02:10 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: ScanError may be (wrongly) garbage
+ collected. (thanks Gavin Sinclair)
+
+ * ext/strscan/strscan.c: move ::ScanError to StringScanner::Error.
+ ::ScanError is also defined for backward compatibility.
+
+ * ext/strscan/strscan.c: #peep is obsolete, use #peek.
+
+ * ext/strscan/strscan.c: #empty? is obsolete, use #eos?.
+
+ * ext/strscan/strscan.c: #clear is obsolete, use #terminate.
+
+ * ext/strscan/strscan.c: #getbyte is obsolete, use #get_byte.
+
+Tue Feb 17 12:12:47 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (parse_args): delay expanding $(extout) until invoking
+ make.
+
+ * lib/mkmf.rb (CLEANLIBS): should remove files have specific
+ extensions.
+
+Tue Feb 17 11:33:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rss/rexmlparser.rb: REXML version may be 4 digits.
+
+Tue Feb 17 10:45:59 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_emitter_end_object): takes only one arg.
+
+Tue Feb 17 07:48:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rexml/encodings/SHIFT_JIS: wrong library name.
+
+Tue Feb 17 01:35:28 2004 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (rb_eval): care that another thread replace NODE_DREGX_ONCE
+ to NODE_LIT. [ruby-dev:22920]
+
+Tue Feb 17 01:20:57 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: new module FileUtils::DryRun.
+
+Mon Feb 16 23:28:14 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: document reduction. [ruby-core:02429]
+
+ * test/yaml/test_yaml.rb: added 0..1 test with "0".."1" on display.
+ it should be defined that the specification about what kind of Range
+ is supported in ruby's custom type in YAML.
+
+Mon Feb 16 22:22:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/generator.rb: corrected doc format
+
+ * lib/rinda/rinda.rb: added documentation (from Hugh Sasse)
+
+ * lib/rinda/tuplespace.rb: ditto
+
+ [Note: rinda files actually committed Wed Feb 18 07:27:00 2004]
+
+Mon Feb 16 20:28:52 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: show more warnings. (refering to mingw)
+
+ * bcc32/setup.mak: ditto.
+
+Mon Feb 16 18:35:58 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): should create *.pdb on ext/,
+ not .ext/.
+
+ * win32/Makefile.sub (config.status): convert the name of import
+ library.
+
+ * lib/mkmf.rb (create_makefile): now don't need to remove
+ $(TARGET).lib.
+
+Mon Feb 16 15:45:22 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check functions, fork spawnv.
+
+ * io.c (rb_io_s_popen): accept argv not only single command line.
+
+ * process.c (rb_proc_exec_n): export.
+
+ * process.c (rb_check_argv): check if arguments are safe to invoke.
+
+ * process.c (rb_fork): retry to fork.
+
+ * process.c (rb_spawn): spawn child process asynchronously.
+
+ * process.c (rb_f_system): raise an exception if the command could not
+ execute.
+
+ * win32/win32.c (rb_w32_argv_size): count necessary size for joined
+ arguments.
+
+ * win32/win32.c (rb_w32_join_argv): join arguments with quoting.
+
+ * win32/win32.c (rb_w32_pipe_exec, rb_w32_spawn, rb_w32_aspawn):
+ accept program name adding to command line.
+
+Mon Feb 16 15:18:33 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/racc/parser.rb: add note for Racc full package.
+
+Mon Feb 16 15:13:01 2004 Minero Aoki <aamine@loveruby.net>
+
+ * ext/racc/cparse/README: new file.
+
+ * ext/racc/cparse/MANIFEST: add README.
+
+Mon Feb 16 12:29:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_s_list): new method Iconv.list
+ (libiconv only).
+
+Mon Feb 16 10:29:52 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (CompareImpl): File.fnmatch and Dir.glob get better performance
+ in Win32. This is achived by calling downcase() for single-byte
+ characters. (CharLower() is slower than downcase())
+
+Mon Feb 16 02:14:29 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: should warn suspicious pointer conversion.
+
+ * bcc32/setup.mak: ditto.
+
+Sun Feb 15 20:56:22 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (push_braces): remove wrong const. [ruby-dev:22891]
+
+Sun Feb 15 20:41:15 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * sample/soap/calc/httpd.rb, sample/soap/exchange/httpd.rb,
+ sample/soap/sampleStruct/httpd.rb, sample/wsdl/googleSearch/httpd.rb:
+ use soap/property instead of getopts for configuring DocumentRoot
+ and port# of httpd. see samplehttpd.conf below.
+
+ * sample/soap/calc/samplehttpd.conf,
+ sample/soap/exchange/samplehttpd.conf,
+ sample/soap/sampleStruct/samplehttpd.conf,
+ sample/wsdl/googleSearch/samplehttpd.conf: added.
+
+Sun Feb 15 19:13:33 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/tuplespace.rb: read(tpl,0), raise RequestExpiredError
+ if not found.
+
+Sun Feb 15 15:48:57 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: add IDispatch wrapper in val2variant.
+ Thanks, arton.
+
+Sun Feb 15 15:23:29 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ruby.h, dir.c (rb_glob): add const.
+
+Sun Feb 15 01:46:05 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/mkmf.rb: absolute path of ruby is assigned to $(RUBY).
+ [ruby-dev:22870]
+
+Sat Feb 14 23:59:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * mkconfig.rb: use fileutils.rb instead of ftools.rb.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub (config.h): define
+ STACK_GROW_DIRECTION.
+
+ * bcc32/Makefile.sub (config.h): add newer checks.
+
+ * wince/Makefile.sub (config.h): define NEED_IO_SEEK_BETWEEN_RW.
+
+Sat Feb 14 23:26:27 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/un.rb: use OptionParser instead of getopts.
+
+Sat Feb 14 11:28:14 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * sample/drb/*: import lib/drb/sample
+
+Sat Feb 14 11:14:12 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: add pretty_print, thanks gotoken.
+
+Fri Feb 13 21:51:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/fileutils.rb: slighly improved documentation (sync with 1.8)
+
+Fri Feb 13 19:57:01 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rss/test_trackback.rb: added tests for TrackBack with RSS
+ 2.0.
+
+ * test/rss/common.rb: added methods make RSS 2.0.
+
+ * lib/rss/trackback.rb: TrackBack API is decided.
+
+ * lib/rss/rss.rb: RSS::VERSION 0.0.7 -> 0.0.8.
+
+ * lib/rss/parser.rb, lib/rss/rss.rb: replaced $DEBUG by RSS::DEBUG.
+
+ * lib/rss/2.0.rb: removed RSS 2.0 URI. Because RSS 2.0 doesn't
+ have URI.
+
+Fri Feb 13 14:41:00 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: en-bugged at last commit (Feb 11 23:24:22 2004)
+
+Fri Feb 13 12:26:37 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: rescue SystemCallError instead
+ of EINVAL. File.link may raise EACCES on network file systems.
+
+Fri Feb 13 05:18:58 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: File.link raises EINVAL on
+ Win9x. [ruby-dev:22713]
+
+Thu Feb 12 21:49:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/ftools.rb: documented
+
+Thu Feb 12 21:19:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/base64.rb: added and tidied documentation
+
+Thu Feb 12 20:45:01 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb (WriteAdapater#puts): must append "\n" to
+ the string, don't prepend. (ruby-bugs:PR#1280)
+
+Thu Feb 12 20:31:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_tmpsrc): cpp32 of Borland C++ ignores #error
+ directives in DOS line-ending files at all.
+
+Thu Feb 12 15:23:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rparen): ignore preceding newlines to right parentheses.
+ (ruby-bugs:PR#1221) [ruby-dev:22858]
+
+Thu Feb 12 14:17:43 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set ac_cv_func_link to yes to enable link() on MinGW.
+ [ruby-dev:22241]
+
+Thu Feb 12 13:32:49 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (link): raise NotImplementedError on Win9X.
+ contributed by Tietew. [ruby-dev:22713]
+
+ * win32/win32.c, win32/win32.h (link): add const.
+
+Thu Feb 12 09:56:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/lib/tk.rb (TkComm::tk_split_list): suppress a warning.
+
+Thu Feb 12 02:23:56 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: use assert_raise instead of assert_raises.
+
+ * lib/pp.rb: ditto.
+
+ * lib/time.rb: ditto.
+
+ * lib/tsort.rb: ditto.
+ use TSortHash and TSortArray instead of Hash and Array in test.
+
+Wed Feb 11 23:24:22 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: properly treat a Tcl/Tk's string with escaping
+ special characters.
+
+Tue Feb 10 20:49:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (method_proc): return bound Proc object. [ruby-dev:22854]
+
+ * eval.c (rb_mod_define_method): bind method body itself for Method
+ object.
+
+ * node.h (NODE_DMETHOD): deprecated.
+
+ * object.c (rb_class_inherited_p): export.
+
+Tue Feb 10 16:43:50 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (umethod_bind): purge unused check. [ruby-dev:22850]
+
+Tue Feb 10 14:33:08 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_match): raise TypeError when both arguments are
+ strings. [ruby-dev:22851]
+
+ * string.c (rb_str_match2): removed.
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub,
+ wince/Makefile.sub (string.c): now not depend on version.h.
+
+Mon Feb 9 17:46:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub, configure.in,
+ runruby.rb: run rdoc, test and so on with compiled extension
+ libraries. [ruby-dev:22688]
+
+ * ext/extmk.rb, lib/mkmf.rb: make extension libraries in separated
+ directory, similar to the actual directory structure.
+
+ * lib/fileutils.rb (FileUtils.copy_file): use the mode of the original
+ file to create new file.
+
+ * lib/rdoc/ri/ri_paths.rb (RI::Paths::SYSDIR): get rid of unexpected
+ influence by environment variable.
+
+ * bcc32/configure.bat, win32/configure.bat: add install-doc options.
+
+ * win32/win32.c, win32/win32.h (rb_w32_fstat): fix Borland C runtime
+ bug which returns wrong mode. [ruby-dev:22846]
+
+Mon Feb 9 16:30:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (detach_process_watcher): return the last status.
+ [ruby-dev:22841]
+
+Sun Feb 8 16:46:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pp.rb (PP::PPMethods::object_address_group): suppress negative
+ sign for higher heap areas.
+
+Sun Feb 8 16:18:27 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/yaml/test_yaml.rb (YAML_Unit_Tests::test_range_cycle):
+ added tests.
+
+Sun Feb 8 15:51:57 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/ruby/test_file.rb (TestFile::test_fnmatch): added tests for
+ File.fnmatch. [ruby-dev:22815][ruby-dev:22819]
+
+Sun Feb 8 15:41:45 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/yaml/test_yaml.rb (YAML_Unit_Tests::test_range_cycle):
+ added tests. [ruby-core:02306] [ruby-core:02311]
+
+Sun Feb 8 14:24:35 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTP#request): should not overwrite Connection
+ header. (ruby-bugs:PR#1274)
+
+Sun Feb 8 10:11:21 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (glob_helper): Dir.glob('**/') did not work. [ruby-dev:22832]
+
+Sun Feb 8 00:29:26 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (fnmatch): File.fnmatch('*?', 'a') should return true.
+ [ruby-dev:22815]
+
+ * dir.c (fnmatch): File.fnmatch('\[1\]' , '[1]') should return true.
+ [ruby-dev:22819]
+
+ * dir.c: Did some styles (no change to behavior)
+
+Sat Feb 7 19:56:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/init.rb (IRB.rc_files): yield possible rc file names.
+
+ * lib/irb/input-method.rb (IRB::ReadlineInputMethod::initialize):
+ load and save history automatically. [ruby-core:02352]
+
+Fri Feb 6 22:48:16 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb (gen_url): Support
+ https in RDoc hyperlinks
+
+Fri Feb 6 22:41:22 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/pp.rb (PPInspectTest#test_to_s_with_iv): rollback the previous
+ commit. [ruby-dev:22813]
+
+Fri Feb 6 22:22:50 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/pp.rb (PPInspectTest#test_to_s_with_iv): remove instance
+ variable which is defined in the test.
+
+Fri Feb 6 18:54:18 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/ruby/test_proc.rb (TestProc::test_eq): added a
+ test. [ruby-dev:22599]
+
+Fri Feb 6 18:26:00 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/ruby/test_proc.rb (TestProc::test_eq): added tests for
+ Proc#==. [ruby-dev:22592], [ruby-dev:22601]
+
+Fri Feb 6 10:12:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (bsock_do_not_reverse_lookup): control reverse
+ lookup for every instance. [ruby-core:02346]
+
+Fri Feb 6 09:15:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/extend-command.rb: add irb_help command. [ruby-talk:91610]
+
+ * lib/irb/cmd/help.rb (IRB::ExtendCommand::Help): show RDoc.
+
+Fri Feb 6 00:48:37 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb (PrettyPrint#first?): obsoleted.
+
+Thu Feb 5 23:56:55 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/prettyprint.rb (PrettyPrint#seplist): added.
+
+ * lib/pp.rb (PPMethods#pp_object): use seplist.
+ (PPMethods#pp_hash): ditto.
+ (Array#pretty_print): ditto.
+ (Struct#pretty_print): ditto.
+ (MatchData#pretty_print): ditto.
+
+ * lib/set.rb (Set#pretty_print): use seplist.
+
+Wed Feb 4 22:39:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_mode): should not sign-expand, so backout.
+
+Wed Feb 4 02:12:06 2004 Tanaka Akira <akr@m17n.org>
+
+ * file.c (test_l): fix wrong method name in document.
+ (test_S): ditto.
+ (test_b): ditto.
+ (test_c): ditto.
+ (test_suid): ditto.
+ (test_sgid): ditto.
+ (test_sticky): ditto.
+
+Tue Feb 3 22:36:25 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/2.0.rb, lib/rss/content.rb, lib/rss/dublincore.rb,
+ lib/rss/rss.rb, lib/rss/syndication.rb: removed warnings.
+
+ * lib/rss/converter.rb: removed handling load error of nkf.
+
+ * test/rss/test_syndication.rb, test/rss/test_trackback.rb,
+ test/rss/test_dublincore.rb, test/rss/test_content.rb: replaced
+ 'require "rss/parser"' by 'require "rss/1.0"'.
+
+ * test/rss/test_parser.rb, test/rss/test_accessor.rb: removed
+ 'require "rss/parser"'.
+
+Tue Feb 3 11:23:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (reduce_nodes): remove tail returns. [ruby-talk:90934]
+
+Tue Feb 3 08:04:57 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (Struct#pretty_print_cycle): follow 1.8 style.
+
+Mon Feb 2 22:06:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (block_append, new_evstr, void_expr0): remove no longer used
+ labels.
+
+Mon Feb 2 18:45:50 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * dln.c (dln_load): don't specify RTLD_GLOBAL on Interix,
+ because it caused SEGV when running runner.rb.
+
+Mon Feb 2 01:54:00 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb (Struct#pretty_print): make it 1.8 style.
+ (Numeric#pretty_print, FalseClass#pretty_print)
+ (TrueClass#pretty_print, Module#pretty_print): fix pp for objects
+ with instance variables. [ruby-talk:91157]
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): return nil on loopback
+ address.
+
+ * lib/resolv-replace.rb (BasicSocket#send): don't replace because
+ it has no hostname argument.
+ (IPSocket.getaddress): raise SocketError instead of
+ Resolv::ResolvError for errors.
+ (TCPSocket#initialize, UDPSocket#bind, UDPSocket#connect)
+ (SOCKSSocket#initialize): use IPSocket.getaddress instead of
+ Resolv.getaddress.
+ (UDPSocket#send): recognize 3 arguments form. try all addresses on
+ 4 arguments form.
+
+Sun Feb 1 23:00:00 2004 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal.c: Bug in BigDecimal("1e#{n}").add BigDecimal('.5'),n)
+ reported and fixed by Javier Goizueta.
+
+Sun Feb 1 18:21:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ From ruby_1_8 branch:
+ * lib/test/unit.rb: rearranged documentation for RDoc's sake.
+ * lib/matrix.rb: improved documentation.
+ * lib/net/http.rb: slight documentation formatting improvement.
+
+Sun Feb 1 05:30:06 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): warn HTTP_PROXY.
+ raise an errror on non-http proxy URI.
+ (OpenURI::Buffer#<<): make a tempfile binmode. [ruby-talk:90793]
+
+Sun Feb 1 00:57:41 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb (RSS::Parser): added @@default_parser. Used
+ XML parser became selectable.
+ * test/rss/test_parser.rb: added tests for
+ RSS::Parser.default_parser.
+
+Sat Jan 31 02:28:15 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RPATHFLAG): set to -Wl,-R like NetBSD on Interix.
+
+Sat Jan 31 01:09:41 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: leading 0 padding of timestamp usec part.
+
+Fri Jan 30 18:53:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (KR_REHASH): wrong hash value on sizeof(long) > sizeof(int).
+
+Thu Jan 29 23:11:57 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (DLEXT2): removed. Ruby does not treat
+ ".dll" as a extension library anymore.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub (DLEXT2):
+ ditto.
+
+ * util.c (mblen): fix overrun. [ruby-dev:22672]
+
+Thu Jan 29 22:41:53 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Allow 'link:' in Tidylinks.
+ THis means you can write "see f1[link:files/f1_rb.html]".
+
+Thu Jan 29 22:24:47 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * sample/openssl/gen_csr.rb: follow OpenSSL::X509::Name change.
+ ASN.1 type of subject DN elements were wrong.
+
+Thu Jan 29 22:19:51 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/*: remove $: trick. [ruby-dev:22763] use test/runner.rb to
+ run test.
+
+Thu Jan 29 19:28:16 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (Request#initialize): reject only when a path is
+ empty. [ruby-dev:22771]
+
+Thu Jan 29 18:54:08 2004 H.Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * dir.c (glob_helper): infinite loop bug in win32 code.
+ [ruby-dev:22770]
+
+Thu Jan 29 17:03:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.
+ [ruby-dev:22761]
+
+Thu Jan 29 11:32:14 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/rss/test_*: do $: trick while searching a module in the current
+ directory.
+
+ * test/xsd/test_xmlschemaparser.rb, test/wsdl/test_emptycomplextype.rb,
+ test/soap/helloworld/test_helloworld.rb,
+ test/soap/calc/{test_calc.rb,test_calc2.rb}: do File.expand_path
+ before using __FILE__.
+
+ * test/yaml/test_yaml.rb: assert_equals -> assert_equal.
+
+Thu Jan 29 01:56:02 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: usec round-tripping skew. [ruby-core:2305]
+
+ * lib/yaml/rubytypes.rb: character Range now round-trips. [ruby-core:2306]
+
+ * test/yaml/test_yaml.rb: add Time and Range tests.
+
+Thu Jan 29 00:00:46 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss: rss/parser.rb is always required.
+
+Wed Jan 28 15:09:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rss/*.rb: remove "test/" prefix.
+
+Wed Jan 28 13:07:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/extconf.rb: include iconv.h for libiconv. [ruby-dev:22715]
+
+Wed Jan 28 12:43:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/rss: rss library imported. [ruby-dev:22726]
+
+Wed Jan 28 04:29:41 2004 Eric Schwartz <emschwar@fc.hp.com>
+
+ * lib/cgi/session.rb: use LOCK_SH to read, and a few other
+ improvements. [ruby-core:02328]
+
+Tue Jan 27 15:00:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el: better support for general delimited
+ strings. [ruby-dev:22695]
+
+Tue Jan 27 11:04:40 2004 FUKUMOTO Atsushi <fukumoto@nospam.imasy.or.jp>
+
+ * ext/socket/socket.c (s_recvfrom): sending length should be an
+ invariant while retrying on EAGAIN. [ruby-talk:89962]
+
+Tue Jan 27 10:31:28 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (set_argv): fix condition.
+
+Tue Jan 27 02:26:31 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (WEBrick:HTTPUtils::parse_header):
+ refine regex for header-name.
+
+Mon Jan 26 22:53:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * io.c: Remove documentation references to $defout.
+
+Mon Jan 26 14:41:46 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/weakref.rb (WeakRef::initialize): set up @__id before
+ calling "super".
+
+ * lib/delegate.rb (Delegator::initialize): preserve
+ singleton_method_added method [ruby-dev:22685]
+
+ * lib/delegate.rb (Delegator::initialize): use Kernel::raise
+ instead of mere raise. [ruby-dev:22681]
+
+Mon Jan 26 12:45:23 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: define CONST84 when TCL_MAJOR_VERSION == 7
+
+Mon Jan 26 11:30:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: Makefiles should depend on also rbconfig.rb.
+ (ruby-bugs:PR#1256)
+
+ * ext/win32ole/win32ole.c (set_argv): set real arguments to
+ WIN32OLE::ARGV. [ruby-list:39073]
+
+Sun Jan 25 18:25:26 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_add_entry): third
+ argument become optional.
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): ditto.
+
+ * ext/openssl/ossl_x509name.c (Init_x509name): emailAddress and
+ domainComponent should be IA5String.
+
+Sun Jan 25 01:45:38 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): support
+ virtual host.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#virtual_host): add
+ new method to register virtual hosting server.
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server): add
+ new method to lookup virtual hosting server.
+
+Sat Jan 24 13:06:26 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509hame.c (ossl_x509name_initialize): change
+ second argument. it expected to be a Hash not an Integer.
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_add_entry): add new
+ function for OpenSSL::X509::Name#add_entry.
+
+ * ext/openssl/ossl_x509name.c (Init_ossl_x509name): add constants
+ OpenSSL::X509::Name::DEFAULT_OBJECT_TYPE and OBJECT_TYPE_TEMPLATE.
+
+ * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name#initialize):
+ second argument takes OBJECT_TYPE_TEMPLATE by default.
+
+Fri Jan 23 02:26:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (num2i32): pack should not raise RangeError.
+ [ruby-dev:22654]
+
+ * pack.c (pack_pack): do not auto convert nil to zero.
+
+Thu Jan 22 22:54:53 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (BEG_REGEXP): allow 8-bit characters in quoted
+ strings for Novell GroupWise Internet Agent.
+
+ * lib/net/imap.rb (DATA_REGEXP): ditto.
+
+Thu Jan 22 18:35:49 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/e2mmap.rb (VERSION): remove unnecessary version checking.
+
+Thu Jan 22 16:21:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (string_content): reset lexical states at the beginning of
+ string contents. [ruby-list:39061]
+
+Thu Jan 22 08:08:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (opt_rescue): use NODE_ERRINFO() instead of
+ NODE_GVAR("$!"), to avoid confusion from variable aliasing.
+ [ruby-talk:90074]
+
+ * version.c (Init_version): remove obsolete constants VERSION
+ etc. [ruby-dev:22643]
+
+Thu Jan 22 01:46:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (newline_node): do not use NODE_NEWLINE node anymore,
+ use NEWLINE flag instead.
+
+Thu Jan 22 01:12:12 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * missing/os2.c (chdir, getcwd):
+ use _chdir2 and _getcwd2 supporting multiple drives in OS/2 with EMX.
+
+Thu Jan 22 00:33:52 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * configure.in: check availability of link(). [ruby-dev:22237]
+ * file.c (rb_file_s_link): raise an exception when link() is unavailable.
+ * missing/os2.c (link): removed. File#link isn't supported.
+ * bcc32/Makefile.sub: define HAVE_LINK to enable link(). [ruby-dev:22241]
+ * win32/Makefile.sub: ditto.
+
+Thu Jan 22 00:26:25 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * ChangeLog: typo: RUBY_MBCHAR_MAX was RUBY_MBCHAR_MAXSIZE.
+
+Thu Jan 22 00:12:51 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * defines.h: define RUBY_MBCHAR_MAX instead of MB_CUR_MAX.
+ * dir.c (Next, emx_mblen): use RUBY_MBCHAR_MAX for mblen().
+ * file.c (CharNext): ditto.
+ * ruby.c (translate_char): ditto.
+ * util.c (__crt0_glob_function): ditto.
+
+Thu Jan 22 00:10:01 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/base64.rb: :nodoc: the Deprecated module
+
+Wed Jan 21 23:52:39 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: Interix(SFU) support.
+
+Wed Jan 21 23:03:45 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: remove O_NONBLOCK, thanks \ay
+ * lib/drb/extserv.rb: typo
+
+Wed Jan 21 17:57:56 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (envelope): allow NIL.
+ * lib/net/imap.rb (body): ditto.
+ * lib/net/imap.rb (number): ditto.
+ * lib/net/imap.rb (ensure_nz_number): show a detailed error
+ message.
+
+Wed Jan 21 16:44:15 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (merge_libs): squeeze successive same libraries.
+ [ruby-dev:22652]
+
+Wed Jan 21 16:10:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/base64.rb: enclosed in a module. [ruby-core:02285]
+
+Wed Jan 21 16:01:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/rmd160/extconf.rb: have_library appends found library.
+
+Wed Jan 21 11:36:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_gethostbyname): returns host if
+ ai_canonname is NULL. (ruby-bugs PR#1243)
+
+ * parse.y (block_append): update nd_end for "real" head node.
+ [ruby-list:39058]
+
+Tue Jan 20 14:48:28 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: should check <openssl/conf_api.h> instead
+ of OPENSSL_VERSION_NUMBER. [ruby-list:39056]
+
+Tue Jan 20 14:43:17 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/base64.rb: Add RDoc
+
+Tue Jan 20 14:25:51 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/abbrev.rb: Add RDoc
+
+Tue Jan 20 13:22:39 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Document aliases at
+ top-most level.
+
+ * lib/English.rb: Document English.rb.
+
+Tue Jan 20 04:41:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_marshal.rb (MarshalTestLib::test_exception): test
+ for [ruby-dev:22604].
+
+ * test/ruby/test_marshal.rb (MarshalTestLibtest_singleton): test
+ for [ruby-dev:22588].
+
+Tue Jan 20 02:38:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_class): should not dump singleton class.
+ [ruby-dev:22631]
+
+Tue Jan 20 02:49:22 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for OpenSSL version.
+ [ruby-list:39054]
+
+Mon Jan 19 23:56:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (name_err_mesg_to_str): inverted condition for result of
+ inspection. [ruby-dev:22628]
+
+Mon Jan 19 22:24:28 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * sample/exyacc.rb: escape '}' to avoid warning.
+
+ * lib/rdoc/parsers/parse_c.rb: escape '{' and '}' to avoid warnings.
+
+Mon Jan 19 21:28:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/defs.h, win32/win3.c, win32/win32.h, file.c: remove
+ useless casts for Borland C.
+
+Mon Jan 19 17:39:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (NameError::message): internal use only.
+
+ * eval.c (rb_method_missing): use hidden constant.
+
+Mon Jan 19 16:30:53 2004 akira yamada <akira@ruby-lang.org>
+
+ * test/ruby/test_time.rb: added tests for [ruby-dev:22614] and
+ [ruby-dev:22617].
+
+Mon Jan 19 13:09:21 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb, win32/Makefile.sub, win32/configure.bat,
+ win32/setup.mak: --with-static-linked-ext support on mswin32.
+
+Mon Jan 19 06:49:07 2004 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date.rb: zone was wrong when it was behind UTC.
+ Thanks Mark J. Reed.
+
+ * lib/date/format.rb: %z is now always replaced by four digits
+ with a leading plus or minus sign.
+
+ * sample/cal.rb: added a class, anyway.
+
+Mon Jan 19 01:08:39 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * class.c, error.c, eval.c, intern.h, object.c, variable.c:
+ do not set path if it is a singleton class. [ruby-dev:22588]
+
+ * lib/cgi.rb (CGI::QueryExtension): give extended string, not a
+ delegater object.
+
+Sun Jan 18 23:59:44 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/charset_alias.rb: prefer us_EN locale encodings or
+ former. [ruby-dev:22609]
+
+ * ext/iconv/iconv.c (iconv_create): raise InvalidEncoding
+ exception when EINVAL.
+
+Sun Jan 18 23:16:34 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c, error.c, file.c, io.c, numeric.c, object.c, re.c, struct.c,
+ time.c: marked init_copy functions nodoc.
+
+Sun Jan 18 20:47:35 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.c: use translate_char() on Cygwin.
+
+Sun Jan 18 20:00:16 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/wsdlDriver.rb, lib/wsdl/soap/operation.rb: add support of
+ "parts" attribute of soap:body element in WSDL.
+
+ * lib/wsdl/xmlSchema/schema.rb: friendly warning message for
+ simpleType element which is not supported for now.
+
+ * test/wsdl/soap/{soapbodyparts.wsdl,test_soapbodyparts.wsdl}: new
+ files.
+
+Sun Jan 18 16:46:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_overflow_p): should return results. [ruby-dev:22614]
+
+Sun Jan 18 12:07:24 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * test/ruby/test_time.rb: new test case to test Time#[+-].
+
+ * time.c (time_plus, time_minus): fix RangeError for a negative
+ argument in environments whose time_t is unsigned. [ruby-dev:22608]
+
+Sun Jan 18 02:33:26 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * defines.h (_WIN32): undef _WIN32 on Cygwin before defining DOSISH.
+
+Sun Jan 18 00:23:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (class2path): check anonymous class/module before
+ checking referable, and allow singleton classes.
+
+Sat Jan 17 23:58:51 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (NameError::Message): new class for lazy evaluation of
+ message to ensure replaced before marshalling. [ruby-dev:22604]
+
+ * eval.c (rb_method_missing): use NameError::Message.
+
+Sat Jan 17 21:49:50 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/time.rb (test_rfc2822, test_rfc3339, test_encode_xmlschema):
+ should not expect that all platforms handle negative time_t value.
+
+Fri Jan 16 23:53:09 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (proc_eq): compare also arguments and environment
+ (including local variables). [ruby-dev:22590]
+
+Fri Jan 16 14:33:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (class2path): get class path and check referable.
+ [ruby-dev:22588]
+
+Thu Jan 15 12:58:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_read): do not append EOF. (ruby-bugs-ja:PR#585)
+
+ * io.c (rb_io_fwrite): ad-hockery hack to get rid of HP-UX stdio
+ weird behavior. [ruby-dev:22424]
+
+Wed Jan 14 21:13:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/inlinetest.rb (InlineTest::eval_part): eval under the top
+ level environment.
+
+Wed Jan 14 17:54:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/inlinetest.rb (InlineTest::loadtest): require instead of
+ load, to get rid of multiple loading.
+
+Wed Jan 14 13:30:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/extconf.rb: wrapper iconv.rb is dependent on platform.
+
+Wed Jan 14 09:32:02 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * MANIFEST: add test/net/test_httpheader.rb. (commit miss?)
+
+Wed Jan 14 00:58:35 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): move SystemStackError from under
+ StandardError to Exception. [ruby-talk:89782]
+
+Tue Jan 13 18:03:02 2004 Ian Macdonald <ian@caliban.org>
+
+ * file.c (rb_stat_wr, rb_stat_ww): New functions
+ implementing new methods (File::Stat#world_readable?,
+ File::Stat#world_writable?).
+
+Tue Jan 13 16:53:25 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: omission of Date library code caused
+ test suite failure. [ruby-core:2251]
+
+Tue Jan 13 16:50:03 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: use $0 as the default application class name.
+
+Tue Jan 13 14:48:00 2004 Ian Macdonald <ian@caliban.org>
+
+ * lib/pathname.rb: New methods (Pathname#world_readable?,
+ Pathname#world_writable?).
+
+Tue Jan 13 14:48:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (primary): allow no "when" case. [ruby-dev:22578]
+
+ * ruby.h (rb_class_of): reduce branch. [ruby-dev:22577]
+
+ * ruby.h (rb_type): ditto.
+
+Tue Jan 13 14:26:59 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/test/unit/ui/testrunnerutilities.rb (TestRunnerUtilities):
+ moved run method which allows output level. [ruby-dev:22554]
+
+Tue Jan 13 13:04:24 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/test_*.rb: Pathname#parent -> Pathname#dirname.
+
+Tue Jan 13 11:38:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/yaml/test_yaml.rb (YAML_Unit_Tests::test_spec_type_{int,float}):
+ fix syntax error.
+
+Tue Jan 13 07:52:40 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/bytecode.c: turn off default implicit typing.
+
+ * ext/syck/implicit.c: detect base60 integers.
+
+ * ext/syck/rubyext.c: handle base60, as well as hex and octal
+ with commas. implicit typing of ruby symbols.
+
+ * test/yaml/test_yaml.rb: add test.
+
+Tue Jan 13 04:29:52 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_driver.rb (RiDriver::report_method_stuff):
+ Show fully-qualified class names in class list.
+
+Tue Jan 13 01:24:17 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (test_wr): Rdoc fix. [ruby-core:02225]
+
+Tue Jan 13 01:04:37 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_paths.rb (RI::Paths): First attempt at
+ incorporating DESTDIR in the rdoc installation.
+
+Mon Jan 12 23:26:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary): fix position after FCALL. [ruby-dev:22574]
+
+Mon Jan 12 18:00:11 2004 Ian Macdonald <ian@caliban.org>
+
+ * file.c (test_wr, test_ww): New functions implementing new
+ methods (File::world_readable?, File::world_writable?).
+
+ * file.c (S_IRUGO, S_IGUGO): New macros.
+
+Mon Jan 12 12:07:22 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_methods):
+ Someone changed the "// in eval.c" comments to "/*...*/" style,
+ so the parsing of the source file name broke.
+
+ * object.c: Remove spurious space in TrueClass documentation.
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_body): Fix
+ bad regexp: if the code before a documented method contained
+ a comment that wasn't terminated by whitespace, that comment
+ and all intervening code was included in the following
+ method's documentation.
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::HtmlFormatter::break_to_newline):
+ HTML formats need explicit line breaks.
+
+Mon Jan 12 02:24:07 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::HtmlFormatter): Add HTML
+ generation support to ri (Elliot Hughes)
+
+Sun Jan 11 23:54:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * env.h (ruby_frame, ruby_scope, ruby_in_eval, ruby_class,
+ ruby_dyna_vars): export. [ruby-dev:22566]
+
+Sun Jan 11 02:35:53 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (make_hostent): a bug in brace position.
+
+ * configure.in: install rdoc by default. if you do not want to
+ install rdoc, specify --disable-install-doc.
+
+Sun Jan 11 02:07:47 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_options.rb (RI::Options::OptionList::OptionList):
+ Also accept command line options via the 'RI' environment variable.
+
+Sat Jan 10 21:27:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): need to add message delimiter. [ruby-dev:22561]
+
+Sat Jan 10 01:54:50 2004 Eric Sunshine <sunshine@sunshineco.com>
+
+ * defines.h (__NeXT__): Ensure that all standard S_IRUSR, S_IWGRP,
+ S_IRWXO, etc. macros are defined since future code might require
+ them (even though present code only requires a subset).
+
+ * defines.h (__NeXT__): Bug fix: WORDS_BIGENDIAN was not being set
+ correctly on Rhapsody when -arch compiler flag was used (via
+ configure's --enable-fat-binary option).
+
+Sat Jan 10 23:01:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBPATHFLAG, RPATHFLAG): enclose paths with single
+ quotes. [ruby-dev:22564]
+
+ * lib/mkmf.rb (libpathflag): do not enclose with quotes always.
+
+ * {bcc32,win32,wince}/Makefile.sub (LIBPATHFLAG): quoted.
+
+Sat Jan 10 22:46:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_inspect): new method, Dir#inspect. [ruby-dev:22562]
+
+Fri Jan 9 17:36:51 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/socket.c (make_hostent): getaddrinfo(3) on BSD do not
+ fill ai_canonname if serv is not supplied. (ruby-bugs PR#1243)
+
+Fri Jan 9 13:14:59 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb: do not ignore exceptions(LoadError
+ and SystemExitError) while loading a testcase. smell of bug.
+
+ * test/testunit/collector/test_dir.rb: add new test of the LoadError.
+
+ * test/drb/{test_drbssl.rb,test_drbunix.rb}: do not define testcase if
+ openssl is not installed.
+
+ * test/testunit/collector/test_dir.rb: assert_raises -> assert_raise.
+
+Fri Jan 9 11:52:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * rubysig.h: <errno.h> is needed to use errno which may be a macro.
+
+Fri Jan 9 11:20:24 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * ext/extmk.rb (extmake): should not reduce necessary libraries.
+ [ruby-dev:22440]
+
+ * lib/mkmf.rb (merge_libs): merge libraries according to
+ dependency.
+
+Fri Jan 9 10:05:23 2004 Siena. <siena@faculty.chiba-u.jp>
+
+ * lib/mkmf.rb (libpathflag): use single quotes. [ruby-dev:22440]
+
+Thu Jan 8 23:49:21 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (RDOCTARGET): new macro. if you want to install
+ rdoc documentation, you need to run configure with
+ --enable-install-doc.
+
+Thu Jan 8 21:17:43 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey.c (ossl_pkey_to_der): removed; it returns
+ public key only.
+
+ * ext/openssl/ossl_pkey_dh.c (ossl_dh_to_der): new function for
+ OpenSSL::PKey::DH#to_der.
+
+ * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_to_der): new function for
+ OpenSSL::PKey::DSA#to_der.
+
+ * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_to_der): new function for
+ OpenSSL::PKey::RSA#to_der.
+
+Thu Jan 8 18:25:29 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): should not recurse in exceptional status.
+
+Thu Jan 8 16:51:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/wsdl/datetime/test_datetime.rb: fixed a stupid testcase which
+ dumps "E" at month-end.
+
+Thu Jan 8 11:20:01 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c, object.c, process.c, re.c: don't use C++ style comments.
+
+Thu Jan 8 08:46:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (yaml_org_handler): lazy-load Date for
+ static-ext.
+
+Thu Jan 8 07:06:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: preserve order in Setup. [ruby-dev:22503]
+
+ * ext/extmk.rb: move dependent libraries just after depended
+ libraries.
+
+ * ext/digest/*/extconf.rb: depend on digest.
+
+Thu Jan 8 04:36:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (WEBrick::CGI#initialize): should create
+ @config[:Logger] if it was not given.
+
+Wed Jan 7 22:28:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): fix memory leak.
+
+Wed Jan 7 21:15:07 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * sample/webrick/*: new files.
+
+ * MANIFEST: add sample/webrick/*
+
+Wed Jan 7 20:51:51 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/net/test_httpheader.rb: new file.
+
+ * MANIFEST: add test/net/test_httpheader.rb.
+
+Wed Jan 7 20:42:06 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (HTTPHeader#content_length): should return nil
+ unless header exists. [ruby-dev:22519]
+
+Wed Jan 7 14:26:05 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb (TkPanedWindow): use epath for embedded windows.
+
+ * ext/tk/lib/tktext.rb: use epath for embedded windows.
+
+ * ext/tk/lib/tkcanvas.rb: use epath for window items.
+
+Wed Jan 7 14:24:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/{attachment.rb,mimemessage.rb}: added from soap4r/1.5.2.
+
+Wed Jan 7 13:00:18 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/ri/ri_driver.rb: Fix problem where ri was
+ being too eager to find matches of ambiguous method
+ names (such as "ri Thread.join" would return both
+ Thread.join and ThreadsWait.join)
+
+Wed Jan 7 12:35:41 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/debug.rb: revert command parse regexps. [ruby-list:39014] by
+ Shirai,Kaoru.
+
+Wed Jan 7 08:21:04 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parserfactory.rb: Check for shebang
+ line in files that would otherwise be treated as
+ plain text.
+
+Tue Jan 6 22:13:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_mod_modfunc): should break if m has no super class.
+ [ruby-dev:22498]
+
+Tue Jan 6 21:51:37 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (fptr_finalize): should save errno just after failure.
+ [ruby-dev:22492]
+
+Tue Jan 6 20:51:10 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb(Logger#msg2str): no special treatment for the object
+ which responds to :to_str.
+
+ * lib/logger.rb(LogDevice#initialize): remove type checking if the
+ given object is a String. Kernel.open handles it correctly.
+
+ * test/logger/test_logger.rb: follow above change (ArgumentError ->
+ TypeError.)
+
+Tue Jan 6 14:53:14 2004 Dave Thomas <dave@pragprog.com>
+
+ * bin/ri: split out the display side, making it pluggable. Added
+ new ri_driver and ri_display files in lib/rdoc/ri.
+
+Tue Jan 6 11:29:43 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/inlinetest.rb, test/{test_generator.rb,test_ipaddr.rb,
+ test_pathname.rb,test_pp.rb,test_prettyprint.rb,test_set.rb,
+ test_time.rb,test_tsort.rb: added.
+
+Tue Jan 6 09:38:27 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * import soap4r/1.5.2;
+
+ * lib/soap/{attachment.rb,baseData.rb,encodingstyle/soapHandler.rb}:
+ introduce SOAPExternalReference class as a referenct to SOAPEnvelope
+ external content.
+
+ * lib/soap/{attachment.rb,mimemessage.rb}: great SwA (SOAP messages
+ with Attachments) support code by Jamie Herre.
+
+ * lib/soap/{element.rb,marshal.rb,parser.rb,processor.rb,
+ streamHandler.rb,wsdlDriver.rb}: SwA support.
+
+ * lib/soap/rpc/{cgistub.rb,driver.rb,element.rb,proxy.rb,router.rb,
+ soaplet.rb}: SwA support and refactoring.
+
+ * lib/soap/generator.rb, lib/soap/mapping/mapping.rb: follow
+ SOAPReference#initialize signature change.
+
+ * lib/soap/mapping/factory.rb: deleted unused methods.
+
+ * lib/soap/mapping/rubytypeFactory.rb: do no ignore case while xsi:type
+ string <-> Ruby class name matching.
+
+ * lib/xsd/datatypes.rb: check the smallest positive non-zero
+ single-precision float exactly instead of packing with "f".
+ [ruby-talk:88822]
+
+ * test/soap/test_basetype.rb, test/xsd/test_xsd.rb: use 1.402e-45, not
+ 1.4e-45. 1.4e-45 is smaller than 2 ** -149...
+
+ * test/soap/test_basetype.rb, test/soap/marshal/test_marshal.rb,
+ test/xsd/test_xsd.rb: use "(-1.0 / (1.0 / 0.0))" instead of "-0.0".
+
+ * test/soap/test_streamhandler.rb: revert to the previous test that
+ warns "basic_auth unsupported under net/http".
+
+Tue Jan 6 06:37:53 2004 Dave Thomas <dave@pragprog.com>
+
+ * bin/rdoc: Add --ri-system switch
+
+ * lib/.document: Update with list of files that seem to have
+ documentation
+
+ * lib/test/unit.rb: Reorder comment to make it RDoc friendly.
+
+ * Makefile.in: add install-nodoc target, and make it
+ generate RDoc on default install.
+
+ * lib/rdoc/ri/ri_options.rb (RI::Options::parse): Add
+ --doc-dir option to ri.
+
+Tue Jan 6 00:04:40 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method_or_yield_parameters):
+ fix parsing if there are braces in a method parameter list
+
+Tue Jan 6 01:01:04 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/dir.h, win32/win32.c: fix patch miss.
+
+ * win32/Makefile.sub: fix file dependency.
+
+Mon Jan 5 20:32:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/logger.rb: enhanced documentation.
+
+Mon Jan 5 18:58:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.
+ [ruby-dev:22486]
+
+ * pack.c (pack_unpack): unpack requires big endian offet (OFF16B
+ and OFF32B). The patch is from Minero Aoki in [ruby-dev:22489]
+
+ * pack.c (OFF16B): add big-endian offset again.
+
+Mon Jan 5 03:00:53 2004 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_pack.rb: new test test_unpack_N.
+
+Mon Jan 5 01:47:53 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): remove duplicated object files
+ from $objs on DOSISH platforms.
+
+Sat Jan 3 02:44:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * rubysig.h (TRAP_END): preserve errno before switching context.
+ [ruby-core:02137]
+
+Sat Jan 3 01:18:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.
+ [ruby-dev:22476]
+
+Fri Jan 2 14:54:11 2004 Dave Thomas <dave@pragprog.com>
+
+ * bin/ri: Add new --classes option, and arrange for
+ help messages to be paged too.
+
+ * bin/rdoc: Add statistics.
+
+ * process.c: (MG) Added Process documentation
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::AttributeFormatter::wrap):
+ Fix problem with labels not displaying in RI labeled
+ lists using BS and ANSI modes.
+
+Fri Jan 2 01:50:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_eof): ARGF.eof? should not have any side effect.
+ [ruby-dev:22469]
+
+Thu Jan 1 09:03:20 2004 Dave Thomas <dave@pragprog.com>
+
+ * bin/ri (report_class_stuff): Fix problem with ambiguous nested
+ classes not matching.
+
+Wed Dec 31 17:25:17 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_each_byte): should return self. [ruby-dev:22465]
+
+Wed Dec 31 15:05:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/pathname.rb: Corrected small coding error.
+
+Wed Dec 31 15:00:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/pathname.rb: Completed documentation.
+
+Wed Dec 31 11:20:34 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_methods): Make
+ file referenced in "// in sss.c" relative to current file.
+
+Wed Dec 31 11:17:37 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/generators/html_generator.rb: Fix problem when
+ a public method was aliased, but the alias is then
+ made private, and hence doesn't appear in RDoc output.
+
+Wed Dec 31 01:33:05 2003 Dave Thomas <dave@pragprog.com>
+
+ * array.c, error.c, eval.c, io.c, prec.c, range.c, re.c,
+ string.c, time.c: Add RDoc for Kernel functions, and tidy.
+
+Tue Dec 30 19:39:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_readline): should raise EOFError at the end of
+ files. [ruby-dev:22458]
+
+ * io.c (argf_read): should concatenate input files when length
+ argument is nil. [ruby-dev:22450]
+
+ * io.c (argf_read): should update supplied string buffer (2nd
+ argument) even when IO#read is called multiple times.
+
+ * io.c: should initialize lineno by zero. [ruby-dev:22460]
+
+Tue Dec 30 12:30:30 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/code_objects.rb (RDoc::Context::find_symbol): If a
+ class and a method have the same name, finding Xxx.abc was trying
+ to find 'abc' in method 'Xxx', not class 'Xxx'.
+
+Tue Dec 30 08:32:32 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method):
+ Handle undoing nsting of yield parameters correctly for:
+
+ def each_entry(&b) Dir.foreach(@path) {|f| yield P.new(f) } end
+
+Tue Dec 30 07:30:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/pathname.rb: Added documentation.
+
+Mon Dec 29 20:08:17 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (GenericRequest#initialize): check if path
+ begins with '/'.
+
+ * lib/net/http.rb: def m( arg ) -> def m(arg)
+
+Mon Dec 29 12:51:02 2003 Dave Thomas <dave@pragprog.com>
+
+ * eval.c: Add RDoc for Kernel global functions.
+
+Mon Dec 29 11:00:16 2003 Dave Thomas <dave@pragprog.com>
+
+ * array.c: Tidy up RDoc loose ends.
+
+Mon Dec 29 05:05:51 2003 Dave Thomas <dave@pragprog.com>
+
+ * struct.c, random: Add RDoc comments
+
+Mon Dec 29 02:25:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/optparse.rb: Improved documentation.
+
+Mon Dec 29 02:20:54 2003 Dave Thomas <dave@pragprog.com>
+
+ * eval.c: Add RDoc for class Proc, Method, UnboundMethod
+
+Mon Dec 29 02:20:26 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb: fix install directory if destdir and compile_dir are
+ not in the same drive.
+
+ * ext/extmk.rb: ditto. [ruby-list:39009]
+
+ * win32/Makefile.sub, win32/README.win32, win32/configure.bat,
+ win32/setup.mak: new configure scheme. use ``configure --prefix=dir''
+ instead of ``nmake DESTDIR=dir install''.
+
+Mon Dec 29 00:41:44 2003 Dave Thomas <dave@pragprog.com>
+
+ * math.c: Add RDoc comments
+
+Sun Dec 28 20:19:11 2003 Tanaka Akira <akr@m17n.org>
+
+ * ext/stringio/stringio.c (strio_sysread): StringIO.new.sysread didn't
+ raise EOFError.
+
+ * ext/zlib/zlib.c (gzreader_gets): don't increment lineno when
+ gzfile_read_all returns "".
+
+Sun Dec 28 15:25:08 2003 Dave Thomas <dave@pragprog.com>
+
+ * class.c,object.c,parse.y,sprintf.c,variable.c: Document classes
+ Object, Module, etc...
+
+Sun Dec 28 11:55:29 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: generate bom.csv and mac.csv files on the fly.
+ [ruby-talk:88852]
+
+ * test/csv/{bom.csv,mac.csv}: removed.
+
+Sun Dec 28 08:56:51 2003 Dave Thomas <dave@pragprog.com>
+
+ * eval.c: Thead[Group] RDoc (thanks to MG)
+
+Sun Dec 28 03:50:05 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_override_comment):
+ Escape method names used in regexp
+
+Sun Dec 28 01:46:02 2003 Dave Thomas <dave@wireless_3.local.thomases.com>
+
+ * lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::display_flow_item):
+ Add support for rules in 'ri' output.
+
+Sun Dec 28 01:35:35 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_body):
+ Sometimes the Ruby source aliases two otherwise
+ unrelated methods (for example Kernel#object_id and
+ Kernel#hash are both the same C function). Provide a
+ facility to allow the methods to be documented
+ separately.
+
+Sun Dec 28 01:05:31 2003 Dave Thomas <dave@pragprog.com>
+
+ * marshal.c, signal.c: RDoc collemts added by Elliott Hughes
+
+Sun Dec 28 00:46:25 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_class_comment):
+ Some Ruby source uses lower-case class names for the
+ Init_Xxx C function name.
+
+Sat Dec 27 23:41:46 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: fix "test: too many arguments" error.
+
+Sat Dec 27 15:32:40 2003 Dave Thomas <dave@wireless_3.local.thomases.com>
+
+ * time.c: Add RDoc comments for Time class.
+
+Sat Dec 27 15:07:26 2003 Dave Thomas <dave@pragprog.com>
+
+ * object.c: Add RDoc comments for Symbol class.
+
+Sat Dec 27 14:39:53 2003 Dave Thomas <dave@pragprog.com>
+
+ * numeric.c (Init_Numeric): Add RDoc comments.
+
+Sat Dec 27 00:44:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (next_argv): warn always for stdin on inplace edit mode.
+
+ * io.c (read_all): need to check string value.
+
+ * io.c (argf_read): allow ARGF.read(nil). [ruby-dev:22433]
+
+Fri Dec 26 23:02:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_backquote): need not to check nil result.
+ [ruby-core:02078]
+
+ * io.c (rb_io_getline): should return nil when read_all gives
+ empty string, even when nil rs is specified. [ruby-core:02077]
+
+Fri Dec 26 18:33:54 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check if getcontext and setcontext are available.
+
+ * eval.c: use presence of getcontext/setcontext.
+
+Fri Dec 26 16:40:53 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (PathnameTest#test_plus): add 2 assertions.
+
+Fri Dec 26 14:05:13 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_pack.rb: new test test_pack_N.
+
+Fri Dec 26 12:53:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): add sign check for 'i', and 'l'.
+ [ruby-dev:22427]
+
+ * bignum.c (rb_quad_pack): add range check for 'quad int'.
+
+Fri Dec 26 10:58:58 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * MANIFEST: add vms/config.h and remove vms/config.h_in.
+
+Fri Dec 26 10:42:00 2003 AKIYOSHI, Masamichi <masamichi.akiyoshi@hp.com>
+
+ * io.c: [VMS] "rfm=stmlf" is specified for open() and fopen().
+
+Thu Dec 25 22:29:53 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c (rb_str_update): don't return any value.
+
+Thu Dec 25 15:30:17 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_update): call rb_str_modify().
+
+Thu Dec 25 05:08:09 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (search_required): search actual file name once when no
+ extension specified.
+
+Thu Dec 25 04:00:44 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.8.1 released.
+
+Thu Dec 25 00:17:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * configure.in: check for nanosleep, -lrt if required.
+ [ruby-core:02059]
+
+ * eval.c (thread_timer): use select(2) if nanosleep(2) is not
+ available.
+
+ * eval.c: check __stub_getcontext for glibc on some platforms.
+ [ruby-list:38984]
+
+Wed Dec 24 23:48:04 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/test_basetype.rb, test/soap/marshal/test_marshal.rb
+ test/xsd/test_xsd.rb: use "(-1.0 / (1.0 / 0.0))" instead of "-0.0"
+ to express -0.0. [ruby-talk:88786]
+
+Wed Dec 24 23:29:30 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/tsort.rb (test_orphaned_break): removed.
+
+Wed Dec 24 20:53:06 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkmulticolumnlist.rb: new sample
+
+ * ext/tk/sample/tkmultilistframe.rb: bug fix
+
+Wed Dec 24 20:37:37 2003 Eric Sunshine <sunshine@sunshineco.com>
+
+ * configure.in (LDSHARED): Fixed typographical error in assignment of
+ LDSHARED for Rhapsody which caused linking of extension modules to
+ fail.
+
+Wed Dec 24 17:51:18 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_thread_flock): enable thread support again.
+
+Wed Dec 24 16:46:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (catch_timer): do not call rb_thread_schedule() inside to
+ avoid pthread_mutex_lock() deadlock. interrupts to system calls
+ are detected by TRAP_END via EINTR error.
+
+ * eval.c (thread_timer): do not post signal unless it is
+ absolutely necessary.
+
+ * rubysig.h (TRAP_END): add CHECK_INTS to switch thread.
+
+ * regex.c (re_compile_pattern): check if nextp is smaller than
+ pend. [ruby-dev:22372]
+
+ * eval.c (umethod_bind): remove method overridden check.
+ [ruby-dev:22366]
+
+Wed Dec 24 16:13:05 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read): should check for error
+ status by SSL_get_error().
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_write): ditto.
+
+Wed Dec 24 14:23:27 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): clear the buffer argument
+ when returning nil. [ruby-dev:22363]
+
+ * test/ruby/ut_eof.rb (TestEOF::test_eof_0, TestEOF::test_eof_1):
+ add buffer argument tests.
+
+Wed Dec 24 14:07:55 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: Modules are allowed to rescue.
+
+ * lib/test/unit/autorunner.rb: show output_level in order.
+
+ * lib/test/unit/collector/dir.rb: get rid of successive same
+ directories in load path.
+
+ * test/testunit/test_assertions.rb (test_assert_nothing_raised,
+ test_assert_raise): test for modules.
+
+Wed Dec 24 13:43:34 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (authenticate): remove "\n" from base64 encoded
+ strings.
+
+Wed Dec 24 11:26:41 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb: should not create any
+ files or directories in current directory. [ruby-talk:88724]
+
+Wed Dec 24 10:29:53 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): never return nil at
+ unlimited read. [ruby-dev:22334]
+
+ * ext/stringio/stringio.c (strio_read): support second
+ argument. [ruby-dev:22350]
+
+Wed Dec 24 09:38:49 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (arg): should return 0 after error. [ruby-dev:22360]
+
+Wed Dec 24 00:56:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): do not return nil at the end of file.
+ [ruby-dev:22334]
+
+ * io.c (argf_read): do not depend on nil at eof behavior of
+ IO#read().
+
+ * eval.c (rb_thread_join): dup exception before re-raising it.
+
+ * io.c (rb_io_eof): call clearerr() to prevent side effect. this
+ patch is supplied by Masahiro Sakai <sakai@tom.sfc.keio.ac.jp>.
+ [ruby-dev:22234]
+
+ * pack.c (OFF16): get offset for big endian machines.
+
+ * pack.c (pack_pack): use OFF16 instead of OFF16B.
+ [ruby-dev:22344]
+
+ * pack.c (pack_unpack): ditto.
+
+Tue Dec 23 22:47:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_check_readable): set FMODE_RBUF always, even if
+ NEED_IO_SEEK_BETWEEN_RW is not defined. [ruby-dev:22340]
+
+ * io.c (rb_io_check_writable): clear FMODE_RBUF before writing
+ something.
+
+Tue Dec 23 22:25:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/optparse.rb: incomplete RDoc documentation added in place of
+ existing RD comments. Tabs converted to spaces.
+
+Tue Dec 23 19:44:47 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/test_streamhandler.rb (test_basic_auth): removed.
+ soap4r + basic_auth is not officially supported in ruby/1.8.1 even
+ though soap4r + basic_auth + http-access2 should run fine.
+
+Tue Dec 23 19:42:59 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_ungetc): raise an exception at unread stream to
+ avoid unspecified behavior. [ruby-dev:22330]
+
+ * test/ruby/test_system.rb (test_syntax): glob relatively from
+ __FILE__.
+
+Tue Dec 23 18:09:40 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): remove unnecessary negative value check.
+ [ruby-dev:22329]
+
+Tue Dec 23 17:26:55 2003 KONISHI Hiromasa <konishih@fd6.so-net.ne.jp>
+
+ * bcc32/Makefile.sub (config.h): bcc has finite(). [ruby-list:38940]
+
+Tue Dec 23 16:08:16 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/rexml/encodings/US-ASCII.rb: typo. [ruby-talk:88650]
+
+ * test/ruby/test_system.rb: num of asserts depended on running dir.
+
+ * test/xsd/test_noencoding.rb: rexml + without iconv/uconv cannot
+ handle euc-jp. install iconv, uconv or xmlscan.
+
+Tue Dec 23 14:13:51 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic::check_userinfo,
+ URI::Generic::check_user, URI::Generic::check_password): tests
+ conflicts/depends with other components closely.
+
+ * test/uri/test_generic.rb (TestGeneric::test_set_component):
+ added tets.
+
+Tue Dec 23 11:08:34 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/xsd/test_noencoding.rb: rescue Errno::EINVAL and do not test.
+ "euc-jp" might not be in supported encoding name list.
+ [ruby-talk:88650]
+
+Tue Dec 23 06:10:31 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb (CGI): add support for mod_ruby.
+
+ * lib/webrick/cgi.rb (CGI::Socket): add check for existence of
+ OpenSSL module in all HTTPS related methods.
+
+ * lib/webrick/cgi.rb (CGI::Socket#cipher): should create similar
+ value to OpenSSL::SSLSocket#cipher.
+
+ * lib/webrick/httpresponse.rb (HTTPResponse#setup_header): should
+ set "connection: close" if @keep_alive is false.
+
+ * lib/webrick/https.rb (HTTPrequest#meta_vars): add supprt for
+ SSL_PROTOCOL, SSL_CIPHER_USEKEYSIZE and SSL_CIPHER_ALGKEYSIZE.
+
+Mon Dec 22 23:00:05 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic::check_opaque): fixed typo.
+
+Mon Dec 22 21:59:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (map_charset): always ensure code is a String.
+
+Mon Dec 22 21:15:29 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_mod_init_copy): always copy singleton class.
+ [ruby-dev:22325]
+
+Mon Dec 22 20:44:36 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic#route_from): accepts urls which
+ has no host-part.
+
+ * test/uri/test_generic.rb (TestGeneric::test_route): added a test.
+
+Mon Dec 22 20:38:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/cgi.rb: reduce eval.
+
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): alias path to
+ local_path. [ruby-list:38883]
+
+Mon Dec 22 20:09:31 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/test_property.rb: remove duplicated test method.
+
+Mon Dec 22 18:22:04 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub (config.h): remove
+ HAVE_ISINF definition to follow previous commits of missing.h
+ and win32/win32.h.
+
+Mon Dec 22 17:23:42 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ac_cv_func_setitimer): moved from defines.h
+
+ * defines.h, rubysig.h, signal.c: removed macro handling which
+ should be done in configure.
+
+ * configure.in (intrinsics.h): check if present.
+
+ * ruby.h: include intrinsics.h if available.
+
+ * bignum.c, marshal.c: include ieeefp.h if available.
+
+ * missing.h (isinf): define as a macro if finite() and isnan()
+ are available. [ruby-core:02032]
+
+Mon Dec 22 17:07:31 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in (mingw): set isnan, finite and isinf to yes.
+
+Mon Dec 22 13:40:19 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/property.rb: passing block by reference.
+
+Mon Dec 22 00:32:43 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_with_disable_interrupt): use ENABLE_INTS instead of
+ ALLOW_INTS which may switch context. [ruby-dev:22319]
+
+ * ext/syck/emitter.c (syck_emitter_write): str bigger than
+ e->bufsize causes buffer overflow. [ruby-dev:22307]
+
+Sun Dec 21 17:29:00 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_check_inheritable): new function. [ruby-dev:22316]
+
+ * intern.h: add prototype.
+
+ * eval.c (superclass): use rb_check_inheritable().
+
+ * object.c (rb_class_initialize): check argument validity.
+
+Sun Dec 21 16:25:10 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#+): re-implemented to resolve ".." in
+ beginning of the argument.
+ (Pathname#join): concatenate from the last argument.
+ (Pathname#parent): just use Pathname#+.
+
+Sun Dec 21 00:12:37 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add new methods (TkScrollbar#assign, assign_list)
+
+ * ext/tk/sample/tkmultilistframe.rb: use TkScrollbar#assign method
+
+Sat Dec 20 21:59:03 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (HTTPRequest#meta_vars): refine regexp.
+
+ * lib/webrick/cgi.rb (CGI#start): NPH scripts return status line
+ instead of Status: header field.
+
+ * lib/webrick/cgi.rb (CGI::Socket): refine some coditions.
+
+Sat Dec 20 16:07:14 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Completion::complete): wrong
+ Regexp for word boundary. pointed out by Gavin Sinclair.
+
+ * lib/optparse.rb (OptionParser::make_switch): [no-] prefix was
+ missing.
+
+Sat Dec 20 11:40:10 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/yaml.rb (YAML::YAML): adjust Marshal version.
+
+Sat Dec 20 03:56:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_with_disable_interrupt): prohibit thread context
+ switch during proc execution. [ruby-dev:21899]
+
+Sat Dec 20 02:41:02 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb: add file. (yet another CGI library)
+
+ * MANIFEST: add lib/webrick/cgi.rb.
+
+Sat Dec 20 02:18:31 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-calculate-indent): proper indentation
+ inside of parentheses. [ruby-dev:22308]
+
+Fri Dec 19 21:24:22 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (HTTPRequest#meta_vars): should not set
+ HTTP_CONTENT_TYPE and HTTP_CONTENT_LENGTH.
+
+ * lib/webrick/https.rb (HTTPRequest#parse): should check presence
+ of cert() method to detect SSLSocket.
+
+Fri Dec 19 22:56:46 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/property.rb (SOAP::Property#load): new method for loading
+ property value into existing property tree.
+
+ * test/soap/test_property.rb: add test.
+
+Fri Dec 19 19:21:49 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/runit/cui/testrunner.rb (RUNIT::CUI::TestRunner::run):
+ should use Test::Unit::UI::{PROGRESS_ONLY,VERBOSE}.
+
+Fri Dec 19 17:36:49 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkmultilistbox.rb: bug fix
+
+ * ext/tk/sample/tkmultilistframe.rb: new sample script
+
+Fri Dec 19 03:44:27 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (parse_form_data): should return an
+ empty Hash if the body is empty.
+
+Thu Dec 18 21:47:35 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): should remove deffile if it's
+ made by miniruby. based on nobu's patch.
+
+Thu Dec 18 21:44:21 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (stack_extend): ignore inline optimization on VC7.
+
+ * win32/Makefile.sub (OS, RT): can override.
+
+ * win32/Makefile.sub (LDFLAGS): ditto. shouldn't use pdb:none
+ option. based on Tietew's patch [ruby-dev:22289]
+
+Thu Dec 18 16:38:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (fnmatch): unlike find_dirsep(), rb_path_next() never
+ return NULL.
+
+Thu Dec 18 15:27:59 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ipaddr.rb (IPSocket::getaddress): merge usa's patch.
+ [ruby-dev:21678]
+
+Wed Dec 17 15:15:30 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::QueryExtension::Value::[]): should work like
+ String#[] if more than one arguments are specified.
+
+ * lib/delegate.rb: avoid using common instance name as "@obj".
+
+ * lib/cgi.rb (CGI::QueryExtension::Value): Value is no longer
+ subclass of String, but DelegateClass(String).
+
+ * ext/curses/extconf.rb: restore function check for init_color.
+ [ruby-list:38905]
+
+ * Makefile.in: need to specify $(MAINLIBS) for the miniruby
+ generation rule.
+
+ * configure.in: better FreeBSD -lc_r support.
+
+Wed Dec 17 00:16:14 2003 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c: new method
+ StringScanner#beginning_of_line? (alias #bol?)
+
+ * ext/strscan/strscan.c: new method StringScanner#concat and #<<.
+
+ * ext/strscan/strscan.c: StringScanner#new(str) does not duplicate
+ nor freeze STR (allow destructive modification).
+
+ * test/strscan/test_stringscanner.rb: test new methods above.
+
+ * test/strscan/test_stringscanner.rb: test destructive string
+ modification.
+
+Tue Dec 16 21:20:47 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pp.rb: don't use local variable `pp'.
+
+ * lib/prettyprint.rb: ditto.
+
+Tue Dec 16 13:20:43 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: condition bug of if statement on
+ {pack,grid}_propagate methods
+
+Tue Dec 16 03:17:29 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: comments in strings. [ruby-talk:88012]
+
+ * test/yaml/test_yaml.rb: add test.
+
+Tue Dec 16 01:14:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (catch_timer): check rb_thread_crtical in main native
+ thread.
+
+ * eval.c (thread_timer): just sends signals periodically, to
+ prevent main native thread from receiving them in critical
+ section. [ruby-core:01959]
+
+Mon Dec 15 13:32:22 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (check_dirname): check string safety and remove extraneous
+ trailing directory separators. [ruby-dev:22279]
+
+ * file.c: renamed and externalized rb_path_next,
+ rb_path_skip_prefix, rb_path_last_separator, rb_path_end.
+
+ * intern.h: prototypes for rb_path_next, rb_path_skip_prefix,
+ rb_path_last_separator, rb_path_end.
+
+Mon Dec 15 09:27:46 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_pkcs12.c (ossl_pkcs12_initialize): first argument
+ of rb_protect should take an argument of VALUE.
+
+Sun Dec 14 18:46:48 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/socket/socket.c (Init_socket): IPv6 is not supported although
+ AF_INET6 is defined on MinGW.
+
+ * lib/ipaddr.rb (AF_INET6): workaround in the environment which does
+ not support IPv6.
+
+Sat Dec 13 18:55:16 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/charset_alias.rb: preserve original order.
+
+ * ext/iconv/extconf.rb: remove wrapper file at clean.
+
+Sat Dec 13 18:09:42 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (thread_timer): use timer by sub-thread and nanosleep.
+ [ruby-talk:87519]
+
+ * gc.c (Init_stack): no stack adjustment for THREAD_SAFE.
+
+Sat Dec 13 17:17:59 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (proc_alloc): cache the created object at first time.
+ [ruby-talk:61288], [ruby-dev:22240]
+
+Sat Dec 13 09:01:23 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check ucontext.h.
+
+ * eval.c: use getcontext/setcontext() instead of setjmp/longjmp()
+ on ia64 or with native thread enabled. [ruby-core:01932]
+
+Sat Dec 13 03:09:14 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml/rubytypes.rb: anonymous struct fix. [ruby-core:01946]
+
+ * test/yaml/test_yaml.rb: add test.
+
+Fri Dec 12 22:36:44 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: add Cell#to_str and Cell#to_s for /.../ =~ aCell,
+ "#{aCell}" and so on.
+
+ * test/csv/test_csv.rb: add tests.
+
+Fri Dec 12 19:33:06 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir): remove trailing `/' from pathes.
+
+ * lib/fileutils.rb (rmdir): ditto. [ruby-dev:22238]
+
+ * lib/fileutils.rb (rmdir_r): ditto.
+
+ * lib/fileutils.rb (fu_copy_dir): check if it is a directory after
+ mkdir(2).
+
+Fri Dec 12 06:06:09 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (proc_invoke): fix class name in warning message for
+ define_method. [ruby-dev:22235]
+
+Thu Dec 11 21:24:43 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkcs12.[ch]: new files. add OpenSSL::PKCS12.
+
+ * ext/openssl/ossl.[ch]: ditto.
+
+ * ext/openssl/MANIFEST: add ossl_pkcs12.[ch].
+
+Thu Dec 11 20:54:28 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir_p): remove trailing `/' befere mkdir(2).
+ mkdir("nonexistdir/") does not work on NetBSD/Alpha 1.6.1.
+
+ * lib/fileutils.rb (fu_list): call to_str for all arguments.
+
+Thu Dec 11 20:07:01 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/ftools.rb (makedirs): sync with fileutils.
+
+Thu Dec 11 19:53:03 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir_p): catch all SystemCallErrors.
+ (mkdir("C:\") causes EACCESS on Windows 2000/NTFS)
+
+Thu Dec 11 19:08:02 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (mkdir_p): check if it is a directory after
+ mkdir(2) instead of before mkdir(2), to avoid race condition.
+ [ruby-talk:87730]
+ Refer: mkinstalldirs sh script, GNU mkdir(1) (coreutils 5.0)
+
+Thu Dec 11 18:49:30 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: def m( arg ) -> def m(arg).
+
+Thu Dec 11 11:39:43 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ieeefp.h), numeric.c: needed for finite() on
+ Solaris. [ruby-core:01921]
+
+ * file.c (rb_stat_inspect): adjust format specifier.
+
+ * parse.c (arg_prepend): nodetype() is for debug use.
+
+ * ruby.h (ISASCII, etc): cast to int to get rid of warning.
+
+ * ruby.h (alloca.h): include even in GCC. [ruby-core:01925]
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValue): adjust format
+ specifier.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_prec, BigDecimal_coerce,
+ BigDecimal_divmod): use rb_assoc_new() to suppress memory usage.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_split): ditto.
+
+ * ext/dl/sym.c (rb_dlsym_guardcall): guard itself should be
+ volatile.
+
+ * ext/iconv/iconv.c (iconv_convert): ensure actual parameter with
+ format specifier.
+
+ * ext/pty/pty.c (MasterDevice, SlaveDevice, deviceNo): do not
+ define unless used.
+
+ * ext/pty/pty.c (getDevice): get rid of warning.
+
+ * ext/socket/socket.c (port_str, sock_s_getaddrinfo,
+ sock_s_getnameinfo): FIX2INT() now returns long.
+
+ * ext/socket/socket.c (init_inetsock_internal): uninitialized
+ variable.
+
+ * ext/syck/rubyext.c (syck_parser_assign_io): add prototype.
+
+ * ext/syck/rubyext.c (rb_syck_mktime, yaml_org_handler): use
+ ISDIGIT() instead of isdigit() to avoid warnings and for
+ platforms which don't support non-ascii charater.
+
+Wed Dec 10 19:28:56 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): set EOF flag at short read.
+ [ruby-dev:22223], [ruby-dev:22224]
+
+Wed Dec 10 18:07:25 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/erb.rb: new method ERB#filename(=). [ruby-dev:22208]
+
+Wed Dec 10 17:54:51 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): do not set EOF flag when
+ requested length is zero. [ruby-dev:22214]
+
+Wed Dec 10 17:17:18 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): should return given string even if data read is
+ empty. [ruby-dev:22207]
+
+Wed Dec 10 17:16:06 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): adjust behavior at reading
+ beyond EOF to IO. [ruby-dev:22205]
+
+ * test/ruby/ut_eof.rb (TestEOF::Seek): test behaviors at reading
+ beyond EOF.
+
+ * test/ruby/test_file.rb, test/stringio/test_stringio.rb: include
+ TestEOF::Seek test case.
+
+Wed Dec 10 15:01:19 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/monitor/test_monitor.rb (test_cond): use Queue#deq
+ instead of sleep.
+
+Wed Dec 10 14:45:39 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/pty/pty.c (HAVE_SYS_IOCTL_H): need to include <sys/ioctl.h>
+ for TIOCSCTTY on *BSD. based on gotoyuzo's patch.
+ (ruby-bugs:PR#1211)
+
+ * ext/pty/pty.c (establishShell): should close descriptors if fork
+ failed.
+
+Wed Dec 10 12:53:05 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.h: define execv() using do_aspawn().
+
+ * process.c (proc_exec_v): remove #ifdef's which stopped needing.
+
+Tue Dec 9 23:32:23 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tkcanvas.rb, ext/tk/lib/tkdialog.rb,
+ ext/tk/lib/tkentry.rb, ext/tk/lib/tkscrollbox.rb, ext/tk/lib/tktext.rb,
+ ext/tk/sample/tkalignbox.rb, ext/tk/sample/tkcombobox.rb,
+ ext/tk/sample/tkmultilistbox.rb, ext/tk/sample/tkoptdb.rb, ext/tk/sample/tktextframe.rb,
+ ext/tk/sample/demos-en/dialog1.rb, ext/tk/sample/demos-en/dialog2.rb,
+ ext/tk/sample/demos-jp/dialog1.rb, ext/tk/sample/demos-jp/dialog2.rb:
+ overrided instance methods, which are private methods on the super
+ class, are changed to 'private'
+
+Tue Dec 9 19:53:02 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic#route_from0): make case insensitive
+ for host-part.
+
+ * test/uri/test_generic.rb (test_route): added tests for the above
+ change.
+
+Tue Dec 9 14:10:48 2003 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_check_readable): don't call io_seek if EOF flag is set,
+ to avoid clearing EOF flag.
+ (rb_io_check_writable): ditto.
+
+Tue Dec 9 02:53:55 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkalignbox.rb: new sample script
+
+Tue Dec 9 00:45:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: renamed #assert_raises to #assert_raise
+ and made the former call the latter. [ruby-core:01890]
+
+ * test/testunit/test_assertions.rb: ditto.
+
+Tue Dec 9 00:07:35 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/rpc/standaloneServer.rb: add 'shutdown' and 'status'
+ methods as delegates to WEBrick.
+
+ * test/soap/calc/{test_calc.rb,test_calc2.rb},
+ test/soap/helloworld/test_helloworld.rb,
+ test/wsdl/datetime/test_datetime.rb, test/wsdl/raa/test_raa.rb:
+ follow the change.
+
+Mon Dec 8 22:48:03 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/autorunner.rb: remove dependency to a particular
+ runner. [ruby-core:01901], [ruby-list:38869]
+
+ * lib/test/unit/ui/testrunnerutilities.rb: moved output level
+ constants from Console.
+
+ * lib/test/unit/ui/console/testrunner.rb: ditto.
+
+ * lib/test/unit/ui/{fox,gtk,gtk2,tk}/testrunner.rb (initialize):
+ accept output_level.
+
+Mon Dec 8 15:03:30 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/syck.c (syck_io_str_read): get rid of buffer overflow.
+
+Mon Dec 8 13:02:11 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/uri/common.rb: new method URI.regexp. [ruby-dev:22121]
+
+ * test/uri/test_common.rb: add test for URI.regexp.
+
+Mon Dec 8 12:44:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c: define swap16 and swap32 only if they are not
+ defined. OpenBSD defines these macros. [ruby-dev:22181]
+
+Sun Dec 7 20:54:17 2003 Tanaka Akira <akr@m17n.org>
+
+ * ext/iconv/iconv.c (map_charset): make case sensitive.
+ ext/iconv/charset_alias.rb (charset_alias): don't ignore
+ config.charset's information. sort aliases.
+
+Sat Dec 6 22:58:03 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_start_ssl): new function to wrap
+ SSL_connect and SSL_accept; if SSL_connect (or SSL_accept) returned
+ but not finished the handshake process, we should retry it.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_connect): call ossl_start_ssl.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_accept): ditto.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read): allow signal traps.
+
+Sat Dec 6 21:45:10 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * io.c (flush_before_seek): flush before seek on any platform.
+
+ * configure.in: ditto.
+
+Sat Dec 6 17:23:00 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/soap.rb(SOAP::Env.getenv): allow upcase environment variable
+ as well as downcase one.
+
+ * lib/soap/netHttpClient.rb(SOAP::NetHttpClient#proxy=): check URI.
+
+Fri Dec 5 23:22:30 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions::assert_raises,
+ Test::Unit::Assertions::assert_nothing_raised): use the last
+ argument as message unless class object.
+
+ * test/testunit/test_assertions.rb (test_assert_raises): test for
+ multiple exception list. [ruby-core:01891]
+
+ * test/testunit/test_assertions.rb (test_assert_nothing_raised): test
+ for non-exception classes.
+
+Fri Dec 5 22:23:04 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/netHttpClient.rb: proxy support did not work. fixed.
+
+ * lib/soap/property.rb: add class methods for loading property from
+ stream/file/propertyfile. propertyfile is a file which is located at
+ somedir in $:.
+
+ * lib/soap/soap.rb, lib/soap/wsdlDriver.rb, lib/soap/rpc/driver.rb,
+ lib/wsdl/importer.rb: load property from propertyfile 'soap/property'
+ e.g. /usr/local/lib/ruby/site_ruby/1.8/soap/property.
+
+ * test/soap/test_property.rb, test/soap/test_streamhandler.rb: new file.
+
+Fri Dec 5 17:26:23 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_exec_end_proc): maintain tmp_end_procs.
+ [ruby-dev:22154]
+
+Fri Dec 5 13:36:59 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_exec_end_proc): should not clear end_procs and
+ ephemeral_end_procs before execution. [ruby-dev:22144]
+
+ * eval.c (rb_obj_extend): call Module#extended hook after
+ extended_object. [ruby-list:38866]
+
+ * object.c (Init_Object): Module#extended defined.
+
+Fri Dec 5 13:17:30 2003 Tanaka Akira <akr@m17n.org>
+
+ * test/ruby/test_pipe.rb: use IO.pipe instead of IO.popen.
+
+Fri Dec 5 11:54:45 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): follow IO#read.
+
+ * test/ruby/ut_eof.rb, test/ruby/test_file.rb, test/ruby/test_pipe.rb,
+ test/stringio/test_stringio.rb: add EOF test.
+
+Fri Dec 5 02:49:35 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions::assert_raises):
+ allow multiple exception list. [ruby-core:01884]
+
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions::assert_nothing_raised):
+ check whether arguments are subclass of Exception.
+
+Thu Dec 4 23:54:00 2003 Rick Ohnemus <rick.ohnemus@systemware.com>
+
+ * dln.c (aix_loaderror): should not use member named 'errno' which
+ might be a macro (e.g. on AIX).
+
+Thu Dec 4 23:32:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): do not depend on lseek position.
+ [ruby-dev:22026]
+
+Thu Dec 4 22:37:26 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): preserve $! value when retry happens in the
+ rescue clause. [ruby-talk:86697]
+
+Thu Dec 4 21:50:07 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/drb/drb.rb (DRb::DRbMessage::send_request, send_reply):
+ should rescue errors and re-raise DRbConnError on write too.
+ [ruby-dev:22132]
+
+Thu Dec 4 16:41:17 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (exc_list): allow expanding list. [ruby-dev:22134]
+
+Thu Dec 4 14:09:24 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb (test_cp): test if the error is
+ kind of SystemCallError. It is needless details that which errno
+ is set on each systems.
+
+Thu Dec 4 13:24:13 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb: use Object#__send__ instead of Object#send.
+
+Thu Dec 4 13:17:45 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/streamHandler.rb: support latest released version of
+ http-access2.
+
+Thu Dec 4 13:04:44 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/soap.rb: add SOAP::Env module for environment repository
+ such as HTTP_PROXY.
+
+ * lib/soap/property.rb: property implementation.
+
+ * lib/soap/streamHandler.rb, lib/soap/wsdlDriver.rb,
+ lib/soap/rpc/driver.rb: use soap/property.rb.
+
+ * lib/wsdl/importer.rb, lib/soap/wsdlDriver.rb, lib/soap/rpc/driver.rb:
+ use SOAP::Env.
+
+ * lib/soap/netHttpClient.rb: add basic_auth, ssl_config, and cookie
+ management interface, but ignored for now.
+
+ * lib/xsd/charset.rb: add XSD::Charset.encoding= interface to set
+ wiredump charset explicitly. it was fixed to 'utf-8' when iconv or
+ uconv module was found.
+
+Thu Dec 4 10:43:58 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/sym.c (rb_dlsym_guardcall): __declspec(noinline) is VC7
+ feature.
+
+Thu Dec 4 10:27:12 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: update hyperlink to the Japanese document.
+
+Thu Dec 4 09:12:43 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (asn1time_to_time): should check that
+ the underlying value of ASN1_TIME isn't NULL. [ruby-core:01881]
+
+Thu Dec 4 08:29:43 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (GenericServer#start): should rescue
+ Exception to avoid unexpected aborting. [ruby-core:01853]
+
+ * lib/webrick/server.rb (GenericServer#start_thread): should check
+ that peeraddr isn't nil before printing.
+
+ * lib/webrick/httpresponse.rb (HTTPResponse#start_thread): should
+ rescue Exception to avoid unexpected aborting of thread.
+
+Thu Dec 4 03:48:59 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#link, Pathname#symlink): obsoleted.
+ (Pathname#make_link, Pathname#make_symlink): new method.
+
+Thu Dec 4 01:45:24 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (argf_read): should not terminate on empty string; wait
+ until real EOF. [ruby-dev:21969]
+
+ * io.c (argf_read): should adjust length to read, when length is
+ specified and read spans command line argument files.
+
+Wed Dec 3 19:38:36 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: correct fcntl parameter. [ruby-dev:22120]
+
+Wed Dec 3 13:49:07 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: 'format'==>'Kernel.format' (avoid override trouble)
+
+ * ext/tk/lib/tkafter.rb: ditto.
+
+ * ext/tk/lib/tkcanvas.rb: ditto.
+
+ * ext/tk/lib/tkdialog.rb: ditto.
+
+ * ext/tk/lib/tktext.rb: ditto.
+
+Wed Dec 3 13:28:13 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (lex.c): try gperf first, and copy from the source
+ directory if failed. [ruby-dev:22123]
+
+ * ext/extmk.rb (MTIMES): let makefiles depend to mkmf.rb.
+
+ * lib/mkmf.rb (configuration): DLDFLAGS was duplicated.
+
+Tue Dec 2 23:18:12 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: wrote the warning about HTTP_PROXY environment
+ variable.
+
+Tue Dec 2 21:31:42 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bin/testrb: new test runner. [ruby-core:01845]
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner.run,
+ Test::Unit::AutoRunner#process_args): take test list to run and
+ options.
+
+ * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::RUNNERS,
+ Test::Unit::AutoRunner#run): should not exit inside a library,
+ just return the result instead.
+
+ * lib/test/unit.rb: ditto.
+
+ * test/runner.rb: exit with the test result.
+
+Tue Dec 2 20:18:48 2003 Eric Sunshine <sunshine@sunshineco.com>
+
+ * configure.in (AC_PROG_YACC): AC_DEFINE(OLD_YACC) if Yacc is found
+ instead of Bison or byacc.
+
+ * parse.y: If OLD_YACC is defined, ensure that YYMAXDEPTH is at least
+ 10000 (Bison's default) since some old versions of Yacc define it as
+ low as 150 by default, which is too low for Ruby to parse some files,
+ such as date/format.rb. Among other issues, the parse problem causes
+ "make test" to fail.
+
+Tue Dec 2 20:03:20 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: check if Pathnames are usable
+ for arguments.
+
+Tue Dec 2 04:22:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: fixed #assert_no_match message.
+
+ * test/testunit/test_assertions.rb: ditto.
+
+Tue Dec 2 00:43:00 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/syck.c: string buffering bug. decrementing by full
+ max_size now. [ruby-core:01834]
+
+Mon Dec 1 21:33:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * numeric.c (num_sadded): prohibit singleton method definition for
+ Numerics. fill yet another gap between Fixnum and Bignum.
+
+Mon Dec 1 17:33:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (htov16): converts endian using swap16. htov32(), hton16,
+ hton32 as well. [ruby-talk:85377]
+
+ * pack.c (swap16): swap 2 bytes no matter how big short is on the
+ platform. swap32() is also prepared.
+
+ * numeric.c (rb_num2int): returns long to preserve information.
+ rb_fix2int(), rb_num2uint(), rb_fix2uint() as well.
+ [ruby-talk:85377]
+
+ * numeric.c (rb_num2uint): should not check for value range if the
+ source value is negative.
+
+Mon Dec 1 17:14:34 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/optparse/opttest.rb: added.
+
+Mon Dec 1 16:10:52 2003 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb: (etc) initial merge into main tree.
+
+Mon Dec 1 14:17:49 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_each_src_dest0): call #to_str to allow
+ Pathname for arguments. [ruby-core:01795]
+
+ * test/fileutils/test_fileutils.rb: does much strict test on
+ "same" files detecting.
+
+Mon Dec 1 09:28:14 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (XCFLAGS): re-export $(XCFLAGS).
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (ARCH_FLAG): export $(ARCH_FLAG) (perhaps empty value).
+
+Mon Dec 1 01:03:27 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/mkmf.rb (TRY_LINK, link_command): added support for DLDFLAGS
+ and ARCH_FLAG. [ruby-dev:22085]
+
+Sun Nov 30 20:18:07 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: keep ARCH_FLAG separate. export ARCH_FLAG.
+ [ruby-core:01819]
+
+ * Makefile.in: add ARCH_FLAG to CFLAGS.
+
+ * Makefile.in: add @CPPFLAGS@ to CPPFLAGS.
+
+ * lib/mkmf.rb (link_command, cc_command): use ARCH_FLAG.
+
+ * lib/mkmf.rb (configuration): add ARCH_FLAG to DLDFLAGS.
+
+ * Makefile.in: add ARCH_FLAG to DLDFLAGS.
+
+ * configure.in: should put getcwd in AC_CHECK_FUNCS, not
+ AC_REPLACE_FUNCS. [ruby-core:01826]
+
+Sun Nov 30 18:22:48 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: do not override CCDLDFLAGS, LDFLAGS, XLDFLAGS,
+ DLDFLAGS and LDSHARED.
+
+ * configure.in: XCFLAGS for compiling ruby itself. ARCH_FLAG is
+ reflected in CFLAGS.
+
+ * lib/mkmf.rb: ditto. do not import XCFLAGS from config.status.
+
+Sun Nov 30 17:37:36 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: bug fix [ruby-talk:86746]
+
+Sun Nov 30 13:02:00 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/encodingstyle/soapHandler.rb: refactoring - Simplifying
+ Conditional Expressions.
+
+ * lib/wsdl/soap/definitions.rb: refactoring - Move Method.
+
+ * test/xsd/{test_noencoding.rb,noencoding.xml}: new files. test for
+ encoding unspecified XML file parsing.
+
+ * test/wsdl/{test_fault.rb,map,datetime}: new files. test of
+ SOAPFault, dateTime and Apache's Map.
+
+Sun Nov 30 09:35:14 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_update): get rid of SEGV at just allocated String.
+ [ruby-core:01812]
+
+Fri Nov 28 23:19:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark): explicitly check mark recursion levels, instead
+ of unreliable stack length.
+
+Fri Nov 28 22:49:56 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/rinda.rb: fix TupleSpaceProxy#read, read_all.
+
+Fri Nov 28 21:44:40 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb (test_ln_s): should be a file, not
+ a directory for FreeBSD.
+
+Fri Nov 28 19:37:56 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (env_has_value, env_index): must match exactly.
+
+ * test/ruby/test_env.rb (test_has_value, test_index): condition for
+ aboves.
+
+Fri Nov 28 17:59:20 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_env.rb: add tests for ENV.
+
+Fri Nov 28 17:47:46 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb (DRbMessage#load): rescue Errno::* and raise
+ DRbConnError.
+
+Fri Nov 28 15:41:15 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#realpath): obsolete the force_absolute
+ argument.
+
+Fri Nov 28 14:41:52 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/streamHandler.rb: drop unused http parameters.
+
+ * lib/soap/encodingstyle/soapHandler.rb, lib/soap/mapping/factory.rb,
+ lib/soap/mapping/mapping.rb, lib/soap/mapping/registry.rb,
+ lib/wsdl/soap/complexType.rb: ApacheSOAP's map support was broken
+ under WSDL dynanic client environment. fixed.
+
+ * test/wsdl/raa/*: add tests.
+
+ * lib/xsd/datatypes.rb: dateTime precision bug fix (at least, I hope.)
+ bug of soap4r. XSDDateTimeImple.to_time passed a Float to
+ Time.local/Time.gm as an usec, and NUM2LONG(rb_num2long for Float)
+ causes rounding error.
+
+ * test/soap/test_basetype.rb, test/xsd/test_xsd.rb: add tests.
+
+Fri Nov 28 04:15:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (method_arity): used wrong Proc object. [ruby-talk:86504]
+
+Fri Nov 28 00:47:29 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_f_exit), process.c (rb_f_exit_bang): treat true as
+ success, false as failure. [ruby-dev:22067]
+
+ * eval.c (rb_f_abort, rb_thread_switch), process.c (rb_f_system): use
+ ANSI macro instead of hard coded value.
+
+ * eval.c (rb_f_exit), process.c (rb_f_exit_bang): use VALUEs not but
+ TYPEs.
+
+Thu Nov 27 22:05:48 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * eval.c, gc.c: FreeBSD/ia64 currently does not have a way for a
+ process to get the base address for the RSE backing store, so
+ hardcode it for the moment.
+ [submitted by: Marcel Moolenaar <marcel@FreeBSD.org>]
+
+Thu Nov 27 17:36:42 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkafter.rb: bug fix on TkTimer#cancel_on_exception=(mode).
+ TkTimer#wait recieves the exception of the callback.
+ The exception is kept on @return_value.
+
+Thu Nov 27 16:58:48 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_stat): remove _fullpath() for NUL: device.
+
+Wed Nov 26 15:38:47 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb (test_ln_s): should take the
+ existing symbolic link for OpenBSD.
+
+Wed Nov 26 04:48:42 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/token.c: removed YYTOKTMP references which
+ were causing buffer overflows on large block scalars,
+ comments, quoted scalars and plain scalars.
+
+ * ext/syck/rubyext.c: dynamic changing of buffer size.
+
+ * ext/syck/syck.h: default buffer size of 4k.
+
+Wed Nov 26 00:55:30 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpresponse.rb: add HTTPResponse#keep_alive=.
+
+ * lib/webrick/httpserver.rb (HTTPServer#run): should pass the
+ request's keep_alive flag to the response.
+
+Tue Nov 25 21:41:35 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * defines.h (ENV_IGNORECASE): should define when DOSISH without
+ human68k. [ruby-dev:22047]
+
+ * hash.c (env_has_value, env_index): don't ignore case of value.
+ [ruby-dev:22048]
+
+Tue Nov 25 21:39:37 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (path_check_1): honor sticky bits always.
+ [ruby-talk:86273]
+
+Tue Nov 25 20:02:14 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: do test in more deep
+ directory.
+
+ * test/fileutils/test_nowrite.rb: ditto.
+
+Tue Nov 25 19:04:23 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): ENV case sensitivity test
+ refined.
+
+Tue Nov 25 18:13:30 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: chdir Dir.tmpdir before each
+ test. [ruby-dev:22045]
+
+ * test/fileutils/test_nowrite.rb: ditto.
+
+Tue Nov 25 17:52:11 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): use http_proxy under CGI
+ if the environment variable is case sensitive.
+
+Tue Nov 25 16:41:33 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/wsdl/multiplefault.wsdl, test/wsdl/test_multiplefault.rb:
+ removed. this test requires extra libraries in soap4r/1.5.*.
+
+Tue Nov 25 16:24:42 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/**/*.rb, lib/wsdl/**/*.rb, lib/xsd/**/*.rb: changed license;
+ GPL2 -> Ruby's.
+
+ * lib/soap/rpc/driver.rb, lib/soap/wsdlDriver.rb,
+ lib/soap/streamHandler.rb: add interface to streamhandler.
+
+ * lib/soap/marshal.rb: raise error if parse fails.
+
+ * lib/soap/netHttpClient.rb: add https support. Patched by
+ Oliver M. Bolzer.
+
+ * lib/soap/netHttpClient.rb: dump HTTP response message body by itself.
+
+ * lib/soap/rpc/driver.rb, lib/soap/rpc/proxy.rb,
+ lib/soap/wsdlDriver.rb: add driver#mandatorycharset interface to foce
+ using charset for parsing response from buggy server.
+
+ * lib/soap/encodingstyle/soapHandler.rb: support Apache Axis's half
+ typed multi-ref array.
+
+ * lib/soap/mapping/factory.rb, lib/soap/mapping/registry.rb: map
+ SOAPStruct which has multi-accessors which name are the same, to an
+ array.
+
+ * lib/soap/rpc/element.rb: fixed illegal parameter order.
+
+ * lib/soap/rpc/element.rb: element name of response message could have
+ the name other than 'return'.
+
+ * lib/wsdl/operation.rb, lib/wsdl/operationBinding.rb,
+ lib/wsdl/soap/classDefCreator.rb, lib/wsdl/soap/methodDefCreator.rb,
+ lib/wsdl/soap/methodDefCreatorSupport.rb: WSDL/1.1 allows plural
+ fault definition in a operation. [ruby-talk:84948]
+
+ * test/wsdl/multiplefault.wsdl, test/wsdl/test_multiplefault.rb: add
+ test for above fix.
+
+ * lib/wsdl/soap/complexType.rb: support WSDL array definition with
+ maxOccures="unbound".
+
+ * lib/xsd/charset.rb: use cp932 under emx. Patched by
+ Siena. / SHINAGAWA, Norihide in [ruby-dev:21972]
+
+ * lib/xsd/xmlparser/parser.rb: set @charset nil by default. Nil means
+ 'follow encoding declaration in XML'.
+
+ * sample/soap/digraph.rb, sample/wsdl/amazon/wsdlDriver.rb,
+ sample/wsdl/googleSearch/sampleClient.rb,
+ sample/wsdl/googleSearch/wsdlDriver.rb,
+ test/wsdl/test_emptycomplextype.rb,
+ test/wsdl/marshal/test_wsdlmarshal.rb,
+ test/xsd/test_xmlschemaparser.rb: use File.open(...) { |f| f.read }
+ instead of File.open(...).read. [ruby-dev:21964]
+
+ * test/wsdl/emptycomplextype.wsdl, test/wsdl/test_emptycomplextype.rb:
+ simplify the test case.
+
+ * test/wsdl/axisArray/*: add tests for axis's array encoding.
+
+Tue Nov 25 16:15:29 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ruby.h: don't treat Cygwin as Windows.
+
+Tue Nov 25 15:18:28 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in: change default value of --enable-pthread (default: no)
+
+Tue Nov 25 07:31:16 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary): allow newlines just before right argument
+ parenthesis. (ruby-bugs:PR#1221)
+
+Mon Nov 24 23:32:06 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_loop, URI::HTTP#proxy_open): use
+ catch/throw for redirection instead of exception.
+ (OpenURI.open_loop, OpenURI.redirectable?): restrict redirection.
+
+Mon Nov 24 19:59:48 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): use CGI_HTTP_PROXY
+ instead of HTTP_PROXY in the CGI environment.
+
+Mon Nov 24 19:32:55 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/etc/extconf.rb: check for pw_passwd in struct passwd and
+ gr_passwd in struct group for DJGPP.
+
+ * ext/etc/etc.c: ditto.
+
+ * ext/Setup.dj: support for curses, etc, zlib.
+
+Mon Nov 24 17:00:00 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb: validate option names.
+ :content_length_proc and :progress_proc option implemented.
+
+Mon Nov 24 14:53:10 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (XCFLAGS): output empty value instead of `-DRUBY_EXPORT'.
+
+Sat Nov 22 23:09:45 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: set enable_pthread to no on MinGW.
+
+Sat Nov 22 22:56:20 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in: add --enable-pthread option (default: yes)
+
+Sat Nov 22 22:48:46 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: add Tk.grab_release and fix bug of TkComposite
+
+ * ext/tk/lib/tkafter.rb: bug fix of TkAfter#start
+
+ * ext/tk/sample/tkcombobox.rb: new sample script
+
+ * ext/tcltklib/tcltklib.c: add native thread check
+
+Sat Nov 22 18:49:47 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/curses/curses.c (window_nodelay): nodelay() of NetBSD's
+ libcruses returns no value, just like keypad().
+
+Sat Nov 22 17:36:36 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (HAVE_GETCWD): output to config.h.
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub
+ (XCFLAGS): output to config.status.
+
+Sat Nov 22 13:10:10 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (have_st_ino?): djgpp has valid st_ino.
+
+Sat Nov 22 11:28:48 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (Init_stack): stack region is far smaller than usual if
+ pthread is used.
+
+Sat Nov 22 07:30:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/util/backtracefilter.rb: fixed a bug that occurred
+ when an exception had no backtrace.
+
+ * test/testunit/util/test_backtracefilter.rb: ditto.
+
+Fri Nov 21 16:44:18 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tkentry.rb: fix the encoding trouble of percent
+ substitutions on validatecommand option of TkEntry widget
+
+ * ext/tk/lib/tk.rb: fix bug on {pack|grid}_propagate() method
+
+Fri Nov 21 16:12:11 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ruby.1: Fix markups and grammar.
+
+Fri Nov 21 14:49:42 2003 Minero Aoki <aamine@loveruby.net>
+
+ * ruby.1: wrote about ruby related environment variables.
+
+Fri Nov 21 12:28:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_extended): singleton methods should not be checked
+ when dumping via marshal_dump() or _dump(). [ruby-talk:85909]
+
+Fri Nov 21 01:40:00 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in: check <pthread.h>
+
+ * ruby.h: include pthread.h if existence.
+ define is_ruby_native() macro when not HAVE_NATIVETHREAD
+
+ * eval.c: undef is_ruby_native() function when not HAVE_NATIVETHREAD
+
+Fri Nov 21 00:43:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: use #__send__ instead of #send.
+
+ * lib/test/unit/testcase.rb: ditto.
+
+Thu Nov 20 19:19:22 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: don't find the Cygwin's pthread library on MinGW.
+
+Thu Nov 20 19:15:50 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (have_st_ino?): emx (OS/2 with EMX) does not
+ have st_ino (always 0). [ruby-dev:21972]
+
+ * lib/fileutils.rb (rename_cannot_overwrite_file?): emx does not
+ allow overwriting files by rename(2).
+
+ * test/fileutils/test_fileutils.rb: windows? ->
+ have_drive_letter?, have_file_perm?
+
+Thu Nov 20 17:50:58 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/tkballoonhelp.rb: new sample script
+
+ * ext/tk/sample/tkmultilistbox.rb: ditto
+
+ * ext/tk/sample/tktextframe.rb: ditto
+
+Thu Nov 20 13:37:34 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ruby.h: define is_ruby_native_thread() for no native thread
+ environment
+
+ * eval.c: ditto
+
+Thu Nov 20 12:42:47 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in: always check existence of the pthread library
+
+ * ruby.h: define macros for ruby's native thread check
+
+ * eval.c: add ruby's native thread check
+
+ * gc.c: ditto
+
+Wed Nov 19 14:45:18 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (to_ary): print more friendly warning message.
+
+Wed Nov 19 14:32:08 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_same?): add djgpp and wince.
+
+ * lib/fileutils.rb (cannot_overwrite_file?): add wince.
+
+Wed Nov 19 11:04:47 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/fileutils.rb (cannot_overwrite_file?, have_st_ino?): bccwin32
+ is same as mswin32.
+
+Wed Nov 19 07:54:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit.rb: do not run tests if $! is set.
+
+ * lib/test/unit/assertionfailederror.rb: extend StandardError instead
+ Exception (irb catches the former but not the latter).
+
+Tue Nov 18 23:31:36 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * missing/memmove.c (memmove): take void *, not char *.
+
+ * missing.h (memmove): ditto.
+
+ * missing.h (strchr, strrchr): return char *, not int.
+
+Tue Nov 18 22:20:10 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_same?): temporal fix for windows.
+
+Tue Nov 18 19:05:04 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_same?): check by inode instead of path
+ name, to detect two hard links pointing to the same content.
+
+ * test/fileutils.rb: did not create correctly looped symlinks.
+
+Tue Nov 18 18:23:05 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): behave as IO at empty string.
+ [ruby-dev:21939], [ruby-dev:21941]
+
+ * ext/stringio/stringio.c (strio_getc, strio_getline): set EOF flag.
+
+ * ext/stringio/stringio.c (strio_rewind, strio_seek, strio_ungetc):
+ clear EOF flag.
+
+ * test/stringio/test_stringio.rb: imported from [ruby-dev:21941].
+
+Tue Nov 18 14:06:35 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb (fu_each_src_dest): raise if src==dest.
+ [ruby-talk:85344] [ruby-core:01699]
+
+ * lib/fileutils.rb: use Object#is_a? instead of Class#=== to allow
+ e.g. remote objects for receivers.
+
+ * lib/fileutils.rb: FileTest -> File.
+
+ * lib/fileutils.rb: put parentheses for arguments of File.xxxx?
+
+ * test/fileutils/test_fileutils.rb (test_cp): test "cp a a".
+
+ * test/fileutils/test_fileutils.rb (test_mv): test "mv a a".
+
+ * test/fileutils/test_fileutils.rb (test_ln): test "ln a a".
+
+ * test/fileutils/test_fileutils.rb (test_ln_s): test "ln_s a a".
+
+ * test/fileutils/test_fileutils.rb (test_install): test "install a a".
+
+ * test/fileutils/fileasserts.rb: new method assert_symlink.
+
+ * test/fileutils/fileasserts.rb: assert_is_directory -> assert_directory.
+
+Mon Nov 17 19:38:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (getcwdofdrv): avoid using getcwd() directly, use
+ my_getcwd() instead.
+
+ * merged NeXT, OpenStep, Rhapsody ports patch from Eric Sunshine
+ <sunshine@sunshineco.com>. [ruby-core:01596]
+
+Mon Nov 17 10:50:27 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Completion::complete): allow least
+ common completion for three or more candidates.
+
+Mon Nov 17 09:41:38 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/ui/tk/testrunner.rb,
+ lib/test/unit/ui/gtk/testrunner.rb:
+ run GUI main loop in sub thread.
+
+ * lib/test/unit/ui/gtk2/testrunner.rb: imported from rough.
+
+ * lib/test/unit/autorunner.rb (keyword_display): sort keywords.
+
+Sun Nov 16 18:10:57 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): iterator should return value from next inside
+ begin/rescue/end. (ruby-bugs:PR#1218)
+
+Sun Nov 16 13:26:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): LINK check earlier than anything else,
+ i.e. do not dump TYPE_IVAR for already dumped objects.
+ (ruby-bugs:PR#1220)
+
+ * eval.c (rb_eval): call "inherited" only when a new class is
+ generated; not on reopening.
+
+ * eval.c (eval): prepend error position in evaluating string to
+ "mesg" attribute string only when it's available and is a
+ string.
+
+Sun Nov 16 12:16:10 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/protocol.rb: logging response body. [experimental]
+ [ruby-list:38800]
+
+Sun Nov 16 10:49:38 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/thread.rb (Thread.exclusive): wrap method definition in
+ class Thread to enable rdoc to process.
+
+Sun Nov 16 09:45:23 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (set_debug_output): warn if method is called
+ after #start. [ruby-dev:38798]
+
+Sun Nov 16 04:41:33 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (eval): do not re-raise exception to avoid unnecessary
+ exception copying, instead modify exception and internal
+ information to adjust eval().
+
+ * eval.c (backtrace): can return the current frame information
+ only if lev < -1.
+
+Sat Nov 15 22:16:42 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * /ext/openssl/ossl_x509ext.c (ossl_x509extfactory_create_ext):
+ refine error message.
+
+Sat Nov 15 10:05:40 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_loop, OpenURI::HTTP#proxy_open):
+ refactored to support options.
+ (Buffer): maintain size by this class.
+
+Sat Nov 15 07:40:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_method_node): new API to retrieve method body.
+
+Fri Nov 14 13:21:30 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: fix (en-bugged at 2003/11/07)
+
+ * ext/tk/lib/tkdialog.rb: TkDialog.new accepts a parent widget
+ argument [ruby-talk:85066]
+
+Thu Nov 13 20:53:35 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (Kernel[#.]open): hard coded URI schemes removed.
+ [ruby-ext:02251]
+
+Thu Nov 13 19:17:00 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * lib/test/unit/ui/tk/testrunner.rb: use grid and panedwindow
+ (if available)
+
+Thu Nov 13 17:56:41 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/open-uri.rb (OpenURI.open_uri): use File::RDONLY.
+ reported by Take_tk <ggb03124@nifty.ne.jp>.
+ [ruby-ext:02245]
+
+Thu Nov 13 16:45:53 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509req.c (ossl_x509req_to_der): add function for
+ X509::Request#to_der.
+
+Thu Nov 13 11:31:14 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Completion#complete): prior shorter
+ name to containing longer name.
+
+Thu Nov 13 06:08:54 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: stop freezing some classes
+
+ * ext/tk/lib/multi-tk.rb: ditto.
+
+Wed Nov 12 17:32:49 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_throws, assert_nothing_thrown):
+ uncaught throw in sub thread raises ThreadError.
+
+ * lib/test/unit/ui/tk/testrunner.rb (setup_ui): "expand" is not
+ necessary.
+
+Wed Nov 12 14:09:43 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/monitor/test_monitor.rb: fix the timing problem by Queue.
+
+Wed Nov 12 12:59:44 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/monitor/test_monitor.rb: added.
+
+Wed Nov 12 10:14:28 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb: refactored. Thanks, Gennady Bystritsky.
+
+Wed Nov 12 06:11:39 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (ossl_x509_sk2ary, ossl_x509crl_sk2ary):
+ add functions to convert STACK into Array.
+
+ * ext/openssl/ossl.h: add prototypes.
+
+ * ext/openssl/ossl_pkcs7.c (ossl_pkcs7_set_certificates,
+ ossl_pkcs7_get_certificates, ossl_pkcs7_get_crls,
+ ossl_pkcs7_set_crls): add functions for PKCS7#certificates=
+ PKCS7#certificates, PKCS7#crls= and PKCS7#crls.
+
+Wed Nov 12 00:47:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/ui/testrunnermediator.rb: should require 'test/unit'.
+
+Tue Nov 11 23:54:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/ui/gtk/testrunner.rb: added a rescue clause to handle
+ the case when the requested font is not available.
+
+Tue Nov 11 22:44:08 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (appendline): file may not end with newline. a bug if
+ READ_DATA_PENDING_PTR is defined. [ruby-talk:84925]
+
+Tue Nov 11 10:42:41 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: raise an exception when creating TkWindow
+ object, because TkWindow class is an abstract class.
+
+Tue Nov 11 03:30:43 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/ext/openssl/ossl_conf.c (ossl_config_get_value): return nil
+ if the specified value doesn't exist.
+
+ * lib/ext/openssl/ossl_conf.c (ossl_config_get_section): return
+ a empty hash if the specified section doesn't exist.
+
+Mon Nov 10 11:40:29 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb (wait): return true on signal/broadcastfalse and
+ false on timeout. Thanks Gennady Bystritsky.
+
+Mon Nov 10 00:07:10 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary): primary_value may be 0 when syntax error.
+ [ruby-talk:84893]
+
+Sun Nov 9 02:05:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: un-deprecated #assert_not_nil to
+ maintain symmetry with #assert_nil. Also added better output for
+ #assert_kind_of.
+
+ * test/testunit/tc_assertions.rb: ditto.
+
+Sat Nov 8 18:50:20 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/wsdl/raa/*: add new testcase for WSDL loading, parsing and
+ reading.
+
+ * test/soap/marshal/*: backport from soap4r/1.5.1. all differences are
+ for ruby/1.6.
+
+ * lib/soap/*: backport from soap4r/1.5.1. all differences are for
+ ruby/1.6.
+
+ * lib/wsdl/data.rb, lib/wsdl/xmlSchema/data.rb: move definition of
+ ArrayTypeAttrName from ::WSDL::XMLSchema::* to ::WSDL::*.
+ [ruby-talk:84813]
+
+ * lib/wsdl/soap/definitions.rb: element name typo in custom exception
+ struct definition which is needed for wsdlDriver; camelCase ->
+ underscore_name.
+
+Sat Nov 8 13:49:50 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in: improvement of pthread check
+
+Sat Nov 8 13:28:46 2003 Takaaki Tateishi <ttate@ttsky.net>
+
+ * ext/dl/sym.c: Add DL.win32_last_error and DL.last_error.
+ Thanks, Kaoru Shirai.
+
+Sat Nov 8 06:19:38 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: To fix 'pthread-enabled Tcl/Tk' problem,
+ TclTkIp#_eval calls Tcl_Eval() on the mainloop thread only
+ (queueing a handler to the EventQueue).
+
+ * ext/tcltklib/README.1st: edit the description of '--with-pthread-ext'
+
+Fri Nov 7 23:23:04 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#+): if self or the argument is `.', return
+ another.
+ (Pathname#parent): if self is `.', return `..'.
+ (Pathname#children): if self is `.', don't prepend self for a
+ pathname in a result.
+ (Pathname#join): re-implemented using Pathname#+.
+ (Pathname#find): if self is `.', remove `./' prefix of yielding
+ pathname.
+
+Fri Nov 7 10:23:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (make_hostent): get rid of SEGV on aliases
+ lookup failure. (ruby-bugs:PR#1215)
+
+Fri Nov 7 04:08:05 2003 UENO Katsuhiro <katsu@blue.sky.or.jp>
+
+ * ext/zlib/zlib.c (Init_zlib): define Zlib::GzipReader#each_line as
+ an alias of Zlib::GzipReader#each.
+
+Fri Nov 7 01:03:16 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): save and restore rb_prohibit_interrupt.
+ [ruby-dev:21857]
+
+Thu Nov 6 18:05:07 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_inspect): show the path also at a closed file.
+ [ruby-dev:21851]
+
+Thu Nov 6 11:42:07 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_set_string, strio_reopen): check
+ tainted.
+
+ * ext/stringio/stringio.c (strio_copy, strio_ungetc, strio_write,
+ strio_putc): add infection.
+
+ * ext/stringio/stringio.c (strio_path): just nil. [ruby-dev:21846]
+
+ * ruby.c (proc_options): reserve searched script path in the
+ source file name table. [ruby-list:38765]
+
+ * lib/optparse.rb (OptionParser::Completion#complete): default not to
+ ignore case on completion. [ruby-talk:84726]
+
+ * win32/win32.c (make_cmdvector): process backslashes even if a quote
+ is not enclosed.
+
+Wed Nov 5 23:49:45 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * sample/openssl/gen_csr.rb: there (at least) is a CA which does not
+ accept DN in UTF8STRING format. it's a sample.
+
+Wed Nov 5 22:55:16 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * configure.in, eval.c, signal.c: : add '--with-pthread-ext'
+ option to fix the pthread trouble on 'tcltklib'
+
+ * ext/tcltklib/README.1st: add the description of '--with-pthread-ext'
+
+ * ext/tk/lib/tktext.rb: add TkText#text_copy, text_cut, text_paste
+ to support Tcl/Tk8.4's tk_textCopy, tk_textCut, tk_textPaste
+
+ * ext/tk/lib/tk.rb: add TkMenu#set_focus support Tcl/Tk's
+ tk_menuSetFocus
+
+Wed Nov 5 17:33:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_load): allow interrupt during loaded program
+ evaluation. [ruby-dev:21834]
+
+ * hash.c (rb_hash_fetch): always warn if default argument and a
+ block are supplied at the same time. [ruby-dev:21842]
+
+ * hash.c (env_fetch): ditto.
+
+ * array.c (rb_ary_fetch): ditto.
+
+Wed Nov 5 19:08:47 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Switch::PlacedArgument::parse):
+ do not remove next argument if empty value is placed.
+
+ * test/optparse: added.
+
+Wed Nov 5 17:05:18 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/ui/gtk/testrunner.rb: typo.
+
+Wed Nov 5 11:13:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * string.c: add #include "version.h". this file still depends on it.
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub,
+ wince/Makefile.sub: add version.h dependency to string.c.
+
+Wed Nov 5 09:14:23 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb: revert to the previous revision.
+
+Wed Nov 5 08:39:51 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/https.rb (HTTPRequest#parse): set @client_cert_chain.
+
+ * lib/webrick/https.rb (HTTPRequest#meta_vars): create
+ SSL_CLIENT_CERT_CHAIN_n from @client_cert_chain.
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_get_peer_cert_chain): return nil
+ if no cert-chain was given.
+
+Tue Nov 4 23:44:48 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub:
+ remove needless version.h dependency.
+
+Tue Nov 4 23:38:43 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * class.c, hash.c, string.c: remove #include "version.h".
+
+ * Makefile.in: remove needless version.h dependency.
+
+Tue Nov 4 06:54:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (read_all): fptr->f may be NULL, if IO is closed in the
+ signal handler.
+
+ * io.c (io_read): ditto.
+
+ * string.c (get_pat): remove 1.8.0 warning code.
+
+ * string.c (rb_str_match): extend warning until 1.8.2.
+
+ * string.c (rb_str_match2): ditto.
+
+ * class.c (class_instance_method_list): remove 1.8.0 warnings.
+ method_list now recurs. [ruby-dev:21816]
+
+ * class.c (rb_obj_singleton_methods): ditto.
+
+ * array.c (rb_ary_select): remove select with block.
+ [ruby-dev:21824]
+
+ * hash.c (rb_hash_select): ditto.
+
+ * hash.c (env_select): ditto.
+
+ * re.c (match_select): ditto.
+
+ * struct.c (rb_struct_select): ditto.
+
+Mon Nov 3 22:53:21 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/racc/parser.rb: synchronize with Racc 1.4.4.
+
+ * ext/racc/cparse/cparse.c: ditto.
+
+ * ext/racc/cparse/cparse.c (parse_main): should abort when
+ the length of LR state stack <=1, not ==0.
+
+Mon Nov 3 08:50:47 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (check_uid_switch): remove duplicated error messages.
+
+ * process.c (check_gid_switch): ditto.
+
+Sun Nov 2 02:28:33 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/ssl.rb: new option :SSLExtraChainCert.
+
+Sun Nov 2 01:02:04 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (rb_str_hash): Update the HASH_PERL alternative hash
+ algorithm in sync with Perl 5.8.
+
+ * st.c (strhash): Ditto.
+
+Sat Nov 1 18:21:09 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_peer_cert_chain): add new method
+ SSLSocket#peer_cert_chain.
+
+ * ext/openssl/ossl_x509req.c (GetX509ReqPtr): new function
+ which returns underlying X509_REQ.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_set_issuer_cert,
+ ossl_x509extfactory_set_subject_cert, ossl_x509extfactory_set_crl,
+ ossl_x509extfactory_set_subject_req, ossl_x509extfactory_set_config):
+ use underlying C struct without duplication not to leak momory.
+
+Sat Nov 1 01:49:03 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/mapping/factory.rb: mark marshalled basetype objects when
+ @allow_original_mapping is true. multi-referencing basetype node is
+ prohibited in SOAP/1.1 encoding but soap4r's original ruby object
+ mapping requires basetype to be marked to detect self referencing
+ loop. e.g. o = 1; o.instance_eval { @iv = o } soap4r's original
+ mapping is only used through soap/marshal API.
+
+ * test/soap/marshal/test_marshal.rb: add tests for self referencing
+ immutable objects.
+
+ * test/soap/calc/test_calc_cgi.rb: fix test name.
+
+Fri Oct 31 22:26:29 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/string_wce.c (strrchr): should decrement pointer.
+
+ * wince/Makefile.sub: correct a range of isdigit().
+
+Fri Oct 31 12:55:24 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in, lib/mkmf.rb: add RPATHFLAG for NetBSD.
+ [ruby-dev:21791]
+
+ * bcc32/Makefile.sub, win32/Makefile.sub, win32/Makefile.sub: ditto.
+
+Fri Oct 31 01:38:14 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * wince/Makefile.sub, win32/Makefile.sub (.y.c): allow white spaces
+ at the beginning of line to remove by sed. (ruby-bugs-ja:PR#580)
+
+Fri Oct 31 01:02:24 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * compar.c (cmp_equal): protect exceptions from <=> comparison
+ again. returns nil if any exception or error happened during
+ comparison.
+
+ * eval.c (search_required): should update *featurep when DLEXT2 is
+ defined. (ruby-bugs-ja:PR#581)
+
+Thu Oct 30 23:41:04 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb: add DRbArray
+
+ * lib/drb/invokemethod.rb: fix Hash#each problem. [ruby-dev:21773]
+
+ * lib/drb/unix.rb: add LoadError. [ruby-dev:21743]
+
+Thu Oct 30 23:19:11 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/generator.rb: better XML pretty printing.
+
+ * lib/soap/encodingstyle/soapHandler.rb: remove unnecessary namespace
+ assignment in the element which has "encodingStyle" attribute, and
+ add necessary namespace assignment for "arrayType" attribute.
+
+ * test/soap/calc/test_calc_cgi.rb: take over $DEBUG to ruby process
+ through CGI.
+
+Thu Oct 30 22:59:39 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/yaml2byte.c: HASH const too long. Thanks, matz.
+
+Thu Oct 30 19:13:53 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syck/MANIFEST: Add yamlbyte.h.
+
+Thu Oct 30 14:25:31 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (READ_DATA_BUFFERED): new macro to detect whether stdio
+ buffer filled.
+
+ * io.c (rb_io_fptr_cleanup): move path deallocation to
+ rb_io_fptr_finalize (finalizer called by GC).
+
+Thu Oct 30 13:23:39 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (logop): left may be NULL. [ruby-talk:84539]
+
+ * eval.c (rb_eval): NODE_CASE nd_head may be NULL.
+
+Thu Oct 30 10:14:51 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/test/unit/autorunner.rb: make fox runner work.
+
+Thu Oct 30 09:32:26 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_f_system): fixed lack of security check before
+ calling do_spawn() on win32. [ruby-talk:84555]
+
+Thu Oct 30 02:46:35 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): single array value to normal Proc#call
+ (i.e. not via lambda call), should be treated just like yield.
+ [ruby-dev:21726]
+
+Thu Oct 30 02:25:48 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#initialize):
+ add new method to inherit @sync from @io.sync.
+
+ * ext/openssl/lib/net/protocols.rb (SSLIO#ssl_connect): no need to
+ set sync flag explicitly.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_initialize): call super.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): set extra chain
+ certificates in @extra_chain_cert.
+
+Wed Oct 29 22:02:04 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/drb/drbtest.rb: use rbconfig.rb to make the path of ruby
+ interpreter to exec, instead of test/ruby/envutil.rb,
+
+Wed Oct 29 19:58:59 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tcltklib/tcltklib.c (CONST84): define CONST84 when it is not
+ defined and TCL_MAJOR_VERSION >= 8.
+
+ * ext/tcltklib/tcltklib.c (VwaitVarProc, WaitVariableProc,
+ rb_threadVwaitProc): use CONST84 instead of CONST.
+
+ * ext/tcltklib/tcltklib.c (ip_rbTkWaitCommand,
+ ip_rb_threadTkWaitCommand): use CONST84 always.
+
+Wed Oct 29 17:27:05 2003 Tanaka Akira <akr@m17n.org>
+
+ * re.c (rb_reg_s_union, Init_Regexp): new method `Regexp.union'.
+
+ * lib/pathname.rb (realpath): examine Dir.pwd because it may have
+ symlinks.
+
+Wed Oct 29 17:16:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_longjmp): must not disturb original jump.
+ [ruby-dev:21733]
+
+Wed Oct 29 15:28:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Proc): taint preallocated exception object
+ sysstack_error. [ruby-talk:84534]
+
+Wed Oct 29 11:27:39 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (ret_args): node may be NULL. [ruby-talk:84530]
+
+Tue Oct 28 15:20:12 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/tcltklib/tcltklib.c (VwaitVarProc, ip_rbVwaitObjCmd,
+ WaitVariableProc, WaitVisibilityProc, WaitWindowProc,
+ ip_rbTkWaitObjCmd, ip_rbTkWaitCommand, rb_threadVwaitProc,
+ rb_threadWaitVisibilityProc, rb_threadWaitWindowProc,
+ ip_rb_threadVwaitObjCmd, ip_rb_threadTkWaitObjCmd): prototype;
+ avoid VC++ warnings.
+
+Mon Oct 27 19:19:55 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_longjmp): ignore reentering error while warning.
+ [ruby-dev:21730]
+
+Mon Oct 27 00:23:50 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_ruby): bug fix on Win : hang-up when
+ calling 'exit' in the Tk callback procedure. [ruby-list:38656]
+
+Sat Oct 25 09:18:04 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_method_missing): protect exception from within
+ "inspect". (ruby-bugs:PR#1204)
+
+Fri Oct 24 23:26:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (rb_hash_each): Hash#each should yield single value.
+ [ruby-talk:84420]
+
+ * hash.c (env_each): ditto for ENV.each.
+
+Thu Oct 23 20:25:32 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/server.rb (GenericServer#start): should rescue
+ IOError from IO::accept. [ruby-dev:21692]
+
+Thu Oct 23 17:59:36 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): initialize stack bottom for embedding.
+ [ruby-dev:21686]
+
+ * ext/dl/extconf.rb: move list of files to clean from DEPEND file,
+ to get rid of macro redefinitions.
+
+Thu Oct 23 13:44:00 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y: integrate operations for stack_type. [ruby-dev:21681]
+
+Thu Oct 23 00:41:45 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/calc/*, test/soap/helloworld/*: set logging threshold
+ to ERROR.
+
+Wed Oct 22 12:53:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir#collect_file):
+ ignore tests which raised LoadError.
+
+ * test/drb/drbtest.rb, test/ruby/test_beginendblock.rb,
+ test/ruby/test_system.rb: avoid requiring same file twice.
+
+ * test/drb/test_drbssl.rb, test/drb/test_drbunix.rb: should not use
+ ARGV unless invoked directly. do not create test cases unless
+ required libraries are available.
+
+Wed Oct 22 02:31:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): should not ignore exit_value in END
+ execution. [ruby-dev:21670]
+
+Tue Oct 21 23:16:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (ruby_cleanup): call finalizers and exit procs before
+ terminating threads.
+
+ * eval.c (ruby_cleanup): preserve ruby_errinfo before ruby_finalize_0().
+
+Tue Oct 21 15:57:11 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir#collect_file):
+ prepend the directory of target file to the load path.
+
+Tue Oct 21 15:08:53 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (do_spawn, do_aspawn): should wait child process even
+ if callded with P_OVERLAY.
+
+ * win32/win32.c (do_spawn, do_aspawn): should return child's exit
+ status to parent.
+
+Tue Oct 21 00:35:02 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/calc/*, test/soap/helloworld/*: catch the exception from
+ test server thread and recover.
+
+Tue Oct 21 00:22:57 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/*: import drb/runit.
+
+Mon Oct 20 23:55:47 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): set current node after arguments evaluation.
+ [ruby-dev:21632]
+
+ * eval.c (rb_yield_0): set current node and keep it at local jump.
+
+Mon Oct 20 22:01:18 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_cleanup): keep thread group for main thread.
+ [ruby-dev:21644]
+
+Mon Oct 20 18:28:10 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_catch): backout.
+
+Mon Oct 20 17:31:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (PUSH_FRAME): generate unique number to be TAG_JUMP()
+ destination.
+
+ * eval.c (localjump_destination): use unique number in ruby_frame
+ for localjump destination.
+
+Mon Oct 20 11:31:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_signal.rb (test_signal): restore old trap.
+
+Mon Oct 20 11:00:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_sweep): loosen page free condition to avoid add_heap()
+ race condition. [ruby-dev:21633]
+
+ * gc.c (gc_sweep): do not update malloc_limit when malloc_increase
+ is smaller than malloc_limit.
+
+Mon Oct 20 09:45:12 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/debug.rb (debug_command): remove debug print.
+
+Sun Oct 19 13:12:30 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (foreachline, dir_foreach): add obsolete warning.
+
+Sun Oct 19 00:14:22 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/calc/*, test/soap/helloworkd/*: changed port# of test
+ server. (17171)
+
+Sat Oct 18 23:01:32 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * missing/acosh.c (DBL_MANT_DIG): typo fix(ifdef -> ifndef).
+
+Sat Oct 18 05:48:59 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: YAML::Syck::compile method.
+
+ * ext/syck/syck.c: Buffer edge bug.
+
+ * ext/syck/yaml2byte.c: YAML to bytecode converter.
+
+ * ext/syck/yamlbyte.h: Ditto.
+
+ * ext/syck/bytecode.c: Bytecode parser fixes to empty collections
+ and empty strings.
+
+ * ext/syck/token.c: Ditto.
+
+Fri Oct 17 23:07:38 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/enumerator/enumerator.c, ext/enumerator/enumerator.txt:
+ Provide Kernel#to_enum as an alias for Kernel#enum_for. Maybe
+ this is a better name.
+
+Fri Oct 17 23:00:30 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/generator.rb: Add rdoc documentation.
+
+Fri Oct 17 22:16:42 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb: Reword and fix Overview.
+
+ * lib/set.rb: It is not necessary to require
+ 'test/unit/ui/console/testrunner'.
+
+Fri Oct 17 11:15:22 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_range.rb: added.
+
+ * MANIFEST: add test/ruby/test_range.rb.
+
+Fri Oct 17 03:21:23 2003 William Sobel <will.sobel@barra.com>
+
+ * ext/socket/socket.c (make_hostent): h_aliases may be NULL.
+ (ruby-bugs:PR#1195)
+
+ * ext/socket/socket.c (sock_s_gethostbyaddr): ditto.
+
+Fri Oct 17 00:12:41 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: (bug fix) instance variable @frame was used
+ without initializing on TkComposite module.
+
+Thu Oct 16 23:51:04 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: If $DEBUG == true and some exception is caused
+ in a callback operation, Ruby/Tk shows a (verbose) backtrace
+ information on the callback process.
+
+Thu Oct 16 17:09:19 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/debug.rb (DEBUGGER__::Context::debug_command): do not call
+ debug_silent_eval() when $1 is not set. (ruby-bugs:PR#1194)
+
+Thu Oct 16 16:54:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_upto): ("a"..."a").to_a should return [].
+ [ruby-core:01634]
+
+Thu Oct 16 16:40:51 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb:
+ Add Tk::EncodedString and Tk::UTF8_String class to support
+ characters using the \uXXXX escape to the UNICODE string.
+
+ * ext/tk/sample/{demos-en,demos-jp}/unicodeout.rb
+ new demo-scripts (samples of Tk::UTF8_String)
+
+ * ext/tk/sample/{demos-en,demos-jp}/widget
+ add entries for 'unicodeout.rb'
+
+Thu Oct 16 08:38:06 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/digest/test_digest.rb (test_eq): show failed class.
+
+ * test/ruby/test_iterator.rb (test_break, test_return_trace_func):
+ test localjump destination.
+
+Wed Oct 15 20:22:31 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/netHttpClient.rb: use URI::HTTP#request_uri instead of
+ instance_eval('path_query'). [ruby-list:38575]
+
+Wed Oct 15 17:24:45 2003 URABE Shyouhei <root@mput.dip.jp>
+
+ * lib/cgi.rb (CGI::Cookie): tiny typo fix.
+
+Wed Oct 15 15:00:54 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_run): just return FAILURE instead of parse error
+ count. [ruby-list:38569]
+
+Wed Oct 15 13:17:02 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/digest/digest.c (rb_digest_base_alloc): need to initialize
+ buffer. [ruby-dev:21622]
+
+Wed Oct 15 11:23:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): dump extended modules as well.
+
+ * marshal.c (r_object0): TYPE_USRMARSHAL should restore extended
+ modules before invoking marshal_load. these two fixes are done
+ by Masatoshi Seki <m_seki@mva.biglobe.ne.jp>.
+
+Wed Oct 15 09:30:34 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/enumerator/enumerator.c (enumerator_each): avoid VC++ warning.
+
+ * ext/syck/syck.h: include stdio.h for definition of FILE.
+
+Wed Oct 15 08:09:07 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/bytecode.c: Checkin of YAML bytecode support.
+
+ * ext/syck/gram.c: Ditto.
+
+ * ext/syck/syck.c: Ditto.
+
+ * ext/syck/token.c: Ditto.
+
+ * ext/syck/handler.c: Ditto.
+
+ * ext/syck/handler.c: Now using 'tag' rather than 'taguri' in type URIs.
+
+ * ext/syck/rubyext.c: Ditto (on both counts).
+
+Wed Oct 15 05:05:53 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/generator.rb: A new library which converts an internal
+ iterator to an external iterator.
+
+ * lib/abbrev.rb: A new library which creates an abbreviation table
+ from a list.
+
+Wed Oct 15 04:31:51 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/sample/demos-en/entry3.rb, ext/tk/sample/demos-jp/entry3.rb:
+ new demo-scripts
+
+ * ext/tk/sample/demos-en/widget, ext/tk/sample/demos-jp/widget:
+ add entries for 'entry3.rb'
+
+Wed Oct 15 04:31:47 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/digest/test_digest.rb: Moved from ext/digest/test.rb.
+
+Wed Oct 15 03:53:20 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/tk.rb: fixed trouble on auto-load Tcl commands (enbug
+ on the last commit).
+
+Wed Oct 15 00:25:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (yylex): argument parentheses preceded by spaces should
+ be warned; not error. [ruby-talk:84103]
+
+Wed Oct 15 00:20:15 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c: replace Tcl/Tk's vwait and tkwait to
+ switch on threads smoothly and avoid seg-fault.
+
+ * ext/tcltklib/tcltklib.c: add TclTkIp._thread_vwait and
+ _thread_tkwait for waiting on a thread. (Because Tcl/Tk's vwait
+ and tkwait command wait on an eventloop.)
+
+ * ext/tk/lib/multi-tk.rb: support TclTkIp._thread_vwait and
+ _thread_tkwait.
+
+ * ext/tk/lib/tk.rb: now, TkVariable#wait has 2 arguments.
+ If 1st argument is true, waits on a thread. If false, waits on
+ an eventloop. If 2nd argument is true, checks existence of
+ rootwidgets. If false, doesn't. Default is wait(true, false).
+
+ * ext/tk/lib/tk.rb: add TkVariable#tkwait(arg) which is equal to
+ TkVariable#wait(arg, true). wait_visibility and wait_destroy
+ have an argument for waiting on a thread or an eventloop.
+
+ * ext/tk/lib/tk.rb: improve of accessing Tcl/Tk's special variables.
+
+ * ext/tk/lib/tkafter.rb: support 'wait on a thread' and 'wait on
+ an eventloop'.
+
+Wed Oct 15 00:10:24 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/baseData.rb: Introduce SOAPType as the common ancestor of
+ SOAPBasetype and SOAPCompoundtype.
+
+ * lib/soap/generator.rb, lib/soap/element.rb, lib/soap/encodingstyle/*:
+ Encoding methods signature change. Pass SOAPGenerator as a parameter.
+
+ * lib/soap/mapping/*, test/soap/marshal/test_marshal.rb: Refactoring
+ for better marshalling/unmarshalling support. Now I think SOAP
+ marshaller supports all kind of object graph which is supported by
+ Ruby's original marshaller. Of course there could be bugs as always.
+ Find it. :-)
+
+ * lib/soap/rpc/standaloneServer.rb: Set severity threshould to INFO.
+ DEBUG is too noisy.
+
+ * lib/xsd/datatypes.rb: DateTime#of is obsoleted. Use DateTime#offset.
+
+ * test/wsdl/emptycomplextype.wsdl, test/xsd/xmlschema.xml: Avoid
+ useless warning.
+
+Tue Oct 14 19:09:35 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_finalize_0): return the given exit status unless
+ SystemExit got raised.
+
+Tue Oct 14 11:53:49 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (ruby_stop): never return.
+
+ * ruby.h (ruby_run): ditto.
+
+Tue Oct 14 04:43:55 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (realpath): make ELOOP check bit more robust.
+ (children): prepend self by default.
+ (chroot): obsoleted.
+
+Tue Oct 14 02:29:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_require_safe): segfault after loading .so.
+
+Tue Oct 14 02:05:23 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/Setup*, ext/enumerator/*: Add ext/enumerator, a helper
+ module for the Enumerable interface.
+
+Mon Oct 13 23:55:59 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/ruby/envutil.rb: use Config::CONFIG["ruby_install_name"],
+ not "ruby".
+
+Mon Oct 13 23:57:29 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_feature_p): match by classified suffix.
+
+ * eval.c (rb_require_safe): require library in the specified safe
+ level.
+
+ * variable.c (rb_autoload, rb_autoload_load): restore safe level
+ when autoload was called. [ruby-dev:21338]
+
+ * intern.h: prototypes; rb_require_safe.
+
+ * test/runner.rb: accept non-option arguments.
+
+Mon Oct 13 20:49:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_new4): should not preserve FL_TAINT status in the
+ internal shared string. [ruby-dev:21601]
+
+ * string.c (rb_str_new4): ditto.
+
+ * eval.c: use EXIT_SUCCESS and EXIT_FAILURE for exit values.
+
+ * process.c: ditto. [ruby-list:38521]
+
+Mon Oct 13 19:51:02 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * lib/debug.rb (debug_command): should enter emacs mode when
+ assigned any value to the environment variable "EMACS".
+ On Meadow, (getenv "EMACS") is "meadow".
+
+Sun Oct 12 14:45:03 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/win32ole/extconf.rb: check "windows.h", not "windows".
+ [ruby-talk:84051]
+
+Sat Oct 11 20:41:03 2003 Corinna Vinschen <corinna@vinschen.de>
+
+ * file.c (eaccess): Use access(2) on Cygwin.
+
+Sat Oct 11 17:09:21 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/rexml/quickpath.rb (REXML::QuickPath::match):
+ escape '[' to avoid warning.
+
+Sat Oct 11 16:08:41 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (realpath): check existence of the file.
+
+ * lib/pathname.rb (realpath): re-implemented.
+ (realpath_root?, realpath_rec): removed
+
+Sat Oct 11 10:19:39 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/monitor.rb: handle exceptions correctly. Thanks, Gennady
+ Bystritsky.
+
+Fri Oct 10 07:50:54 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (is_defined): inheritance line adjustment as like as
+ rb_call_super().
+
+Fri Oct 10 01:19:00 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): add
+ optional argument to specify the DirectoryString type
+ (ASN1::UTF8STRING by default). RFC3280 deprecates PrintableString
+ for DirectoryString, and strongly requires to use UTF8String for
+ all certificates issued after December, 31 2003.
+
+ * ext/openssl/lib/openssl/x509.rb (X509::Name::parse): ditto.
+
+Thu Oct 9 23:50:21 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): prevent thread from GC.
+ [ruby-dev:21572]
+
+Thu Oct 9 19:11:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_start_0): non-volatile should be restored from
+ volatile.
+
+Thu Oct 9 17:43:36 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (proc_save_safe_level, proc_get_safe_level,
+ proc_set_safe_level): save/restore safe level 1..4.
+
+Thu Oct 9 16:33:23 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_object0): remove unnecessary iv restoration for
+ USRMARSHAL. [ruby-dev:21582]
+
+ * marshal.c (w_object): dump generic instance variables from
+ a string from '_dump'.
+
+ * variable.c (rb_generic_ivar_table): return 0 if obj's FL_EXIVAR
+ is not set.
+
+ * time.c (time_dump): copy instance variables to dumped string, to
+ be included in the marshaled data.
+
+ * bignum.c (rb_big2ulong): add range check to ensure round trip.
+
+Thu Oct 9 15:45:27 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (uv_to_utf8): change message to "out of range", since
+ negative values are not "too big". [ruby-dev:21567]
+
+Thu Oct 9 14:05:38 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_set_end_proc, rb_exec_end_proc): restore safe level.
+ [ruby-dev:21557]
+
+Thu Oct 9 10:51:04 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_yield_0): no error if block is empty.
+
+Thu Oct 9 06:43:33 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (localjump_error): id should be ID.
+
+ * eval.c (rb_eval): nd_rval is set in copy_node_scope().
+
+ * eval.c (rb_yield_0): unused variable.
+
+ * eval.c (rb_yield_0): nothing to do for empty node.
+
+ * eval.c (call_end_proc, proc_invoke): adjust backtrace in END.
+ [ruby-dev:21551]
+
+ * eval.c (rb_thread_start_0): set the value by break as the result.
+ [ruby-dev:21552]
+
+ * eval.c (rb_thread_start_0, rb_thread_raise, rb_callcc): save
+ variables across THREAD_SAVE_CONTEXT.
+
+Thu Oct 9 12:05:46 2003 Eric Sunshine <sunshine@sunshineco.com>
+
+ * configure.in: revived NextStep, OpenStep, and Rhapsody ports which
+ had become unbuildable; enhanced --enable-fat-binary option so that
+ it accepts a list of desired architectures (rather than assuming a
+ fixed list), or defaults to a platform-appropriate list if user does
+ not provide an explicit list; made the default list of architectures
+ for MAB (fat binary) more comprehensive; now uses -fno-common even
+ when building the interpreter (in addition to using it for
+ extensions), thus allowing the interpreter to be embedded into a
+ plugin module of an external project (in addition to allowing
+ embedding directly into an application); added checks for
+ <netinet/in_systm.h> (needed by `socket' extension) and getcwd(); now
+ ensures that -I/usr/local/include is employed when extensions'
+ extconf.rb scripts invoke have_header() since extension checks on
+ NextStep and OpenStep will fail without it if the desired resource
+ resides in the /usr/local tree; fixed formatting of --help message.
+
+ * Makefile.in: $(LIBRUBY_A) rule now deletes the archive before
+ invoking $(AR) since `ar' on Apple/NeXT can not "update" MAB archives
+ (see configure's --enable-fat-binary option); added rule for new
+ missing/getcwd.c.
+
+ * defines.h: fixed endian handling during MAB build (see configure's
+ --enable-fat-binary option) to ensure that all portions of the
+ project see the correct WORDS_BIGENDIAN value (some extension modules
+ were getting the wrong endian setting); added missing constants
+ GETPGRP_VOID, WNOHANG, WUNTRACED, X_OK, and type pid_t for NextStep
+ and OpenStep; removed unnecessary and problematic HAVE_SYS_WAIT_H
+ define in NeXT section.
+
+ * dir.c: do not allow NAMLEN() macro to trust dirent::d_namlen on
+ NextStep since, on some installations, this value always resolves
+ uselessly to zero.
+
+ * dln.c: added error reporting to NextStep extension loader since the
+ previous behavior of failing silently was not useful; now ensures
+ that NSLINKMODULE_OPTION_BINDNOW compatibility constant is defined
+ for OpenStep and Rhapsody; no longer includes <mach-o/dyld.h> twice
+ on Rhapsody since this header lacks multiple-include protection,
+ which resulted in "redefinition" compilation errors.
+
+ * main.c: also create hard reference to objc_msgSend() on NeXT
+ platforms (in addition to Apple platforms).
+
+ * lib/mkmf.rb: now exports XCFLAGS from configure script to extension
+ makefiles so that extensions can be built MAB (see configure's
+ --enable-fat-binary option); also utilize XCFLAGS in cc_command()
+ (but not cpp_command() because MAB flags are incompatible with
+ direct invocation of `cpp').
+
+ * ext/curses/extconf.rb: now additionally checks for presence of these
+ curses functions which are not present on NextStep or Openstep:
+ bkgd(), bkgdset(), color(), curs(), getbkgd(), init(), scrl(), set(),
+ setscrreg(), wattroff(), wattron(), wattrset(), wbkgd(), wbkgdset(),
+ wscrl(), wsetscrreg()
+
+ * ext/curses/curses.c: added appropriate #ifdef's for additional set of
+ curses functions now checked by extconf.rb; fixed curses_bkgd() and
+ window_bkgd() to correctly return boolean result rather than numeric
+ result; fixed window_getbkgd() to correctly signal an error by
+ returning nil rather than -1.
+
+ * ext/etc/etc.c: setup_passwd() and setup_group() now check for null
+ pointers before invoking rb_tainted_str_new2() upon fields extracted
+ from `struct passwd' and `struct group' since null pointers in some
+ fields are common on NextStep/OpenStep (especially so for the
+ `pw_comment' field) and rb_tainted_str_new2() throws an exception
+ when it receives a null pointer.
+
+ * ext/pty/pty.c: include "util.h" for strdup()/ruby_strdup() for
+ platforms such as NextStep and OpenStep which lack strdup().
+
+ * ext/socket/getaddrinfo.c: cast first argument of getservbyname(),
+ gethostbyaddr(), and gethostbyname() from (const char*) to non-const
+ (char*) for older platforms such as NextStep and OpenStep.
+
+ * ext/socket/socket.c: include "util.h" for strdup()/ruby_strdup() for
+ platforms such as NextStep and OpenStep which lack strdup(); include
+ <netinet/in_systm.h> if present for NextStep and OpenStep; cast first
+ argument of gethostbyaddr() and getservbyname() from (const char*) to
+ non-const (char*) for older platforms.
+
+ * ext/syslog/syslog.c: include "util.h" for strdup()/ruby_strdup() for
+ platforms such as NextStep and OpenStep which lack strdup().
+
+Wed Oct 8 22:19:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit.rb: removed installation instructions.
+
+ * lib/test/unit/ui/testrunnermediator.rb: moved the run flag to a more
+ central location.
+
+ * lib/test/unit.rb: ditto.
+
+ * lib/test/unit.rb: extracted the running code in to AutoRunner.
+
+ * lib/test/unit/autorunner.rb: added.
+
+ * lib/test/unit/collector/objectspace.rb: extracted common test
+ collection functionality in to a module.
+
+ * lib/test/unit/collector.rb: ditto; added.
+
+ * test/testunit/collector/test_objectspace.rb: ditto.
+
+ * lib/test/unit/collector/dir.rb: added. Supports collecting tests out
+ of a directory structure.
+
+ * test/testunit/collector/test_dir.rb: added.
+
+ * test/runner.rb: simplified to use the new capabilities.
+
+Tue Oct 7 15:23:09 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb: add tests for nested BEGIN/END.
+
+ * test/ruby/beginmainend.rb: add tests for nested BEGIN/END.
+
+ * test/ruby/endblockwarn.rb: new file added to test of END-in-method
+ warning.
+
+Tue Oct 7 12:23:47 2003 Tanaka Akira <akr@m17n.org>
+
+ * ext/fcntl/fcntl.c (Init_fcntl): define Fcntl::O_ACCMODE.
+
+ * ext/socket/extconf.rb: useless assignment removed.
+
+Tue Oct 7 09:13:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb (test_endinmethod): END{} is now
+ allowed in eval.
+
+Tue Oct 7 04:15:25 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (stmt): should not expand mrhs if lhs is solely starred.
+
+Tue Oct 7 02:57:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): rhs of multiple assignment should not be
+ expanded using "to_a". [ruby-dev:21527]
+
+Tue Oct 7 01:42:34 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_get_asn1type): use appropriate
+ free function for ASN1_OBJECT.
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1obj_get_sn): add new function for
+ ASN1::ObjectId#sn; it returns short name text representation of OID.
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1obj_get_ln): add new function for
+ ASN1::ObjectId#ln; it returns long name text representation of OID.
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1obj_get_oid): add new function for
+ ASN1::ObjectId#oid; it returns numerical representation of OID.
+
+Mon Oct 6 22:59:46 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb (IOReader, BasicWriter): call binmode when a given IO
+ respond_to?(:binmode). record separator was wrong when you gave
+ text mode IO to Reader.parse and Writer.generate.
+
+ * test/csv/test_csv.rb: add tests for above change.
+
+Mon Oct 6 16:23:38 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object): wrong method name in the message.
+
+Mon Oct 6 16:02:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (stmt): END in method should cause warning.
+ [ruby-dev:21519]
+
+Mon Oct 6 15:17:23 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (test_block_argument_without_paren):
+ added. (follows sample/test.rb)
+
+Mon Oct 6 11:57:06 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb, test/ruby/beginmainend.rb: added
+ test for eval-ed BEGIN END order.
+
+Mon Oct 6 09:19:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): should pass "weak" value to next level.
+ [ruby-dev:21496]
+
+ * eval.c (proc_alloc): should not use cached object if klass is
+ different. [ruby-talk:83685]
+
+Sun Oct 5 23:27:09 2003 Tanaka Akira <akr@m17n.org>
+
+ * ext/socket/extconf.rb: check recvmsg even if sendmsg is exists.
+
+ * ext/socket/socket.c (thread_read_select): restored.
+
+ * lib/pathname.rb: version information is added in document.
+
+Sun Oct 5 23:07:03 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_f_END): block should be given. [ruby-dev:21497]
+
+Sun Oct 5 22:51:23 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/ext/openssl/extconf.rb: add check for some engine functions
+ unavailable in OpenSSL-0.9.6.
+
+ * lib/ext/openssl/ossl_engine.c: ditto.
+
+Sun Oct 5 17:56:30 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): fix evaluation order. [ruby-list:38431]
+
+Sun Oct 5 15:05:06 2003 akira yamada <akira@ruby-lang.org>
+
+ * test/uri/*: translated RUNIT to Test::Unit.
+
+Sun Oct 5 14:37:39 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/xsd/datatypes.rb: Rational -> Decimal string bug fix.
+
+ * test/soap/marshal/test_marshal.rb: ditto.
+
+ * test/soap/calc/test_calc_cgi.rb: add Config::CONFIG["EXEEXT"] to
+ RUBYBIN.
+
+Sun Oct 5 13:47:22 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_beginendblock.rb, test/ruby/beginmainend.rb: add tests
+ about scope, order and allowed syntax.
+
+Sun Oct 5 11:54:29 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/envutil.rb: added. split "rubybin" from test_system.rb.
+
+ * test/ruby/test_system.rb: use envutil.rb
+
+ * test/ruby/test_beginendblock.rb: added.
+
+ * test/ruby/beginmainend.rb: added. used in test_beginendblock.rb.
+
+Sun Oct 5 11:23:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * test/testunit/runit/test_testresult.rb: removed some unnecessary
+ cruft.
+
+Sun Oct 5 11:14:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/rubyunit.rb: aliasing TestCase into the top level is
+ problematic.
+
+ * lib/runit/assert.rb: fixed a couple of bugs caused by recent
+ refactoring in Test::Unit.
+
+ * test/testunit/runit/*: added.
+
+Sun Oct 5 10:55:29 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/open-uri.rb (URI::Generic#find_proxy): no_proxy support did not
+ work. [ruby-dev:21484]
+
+Sun Oct 5 09:52:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: will use pp for output if available.
+ Can be disabled by setting Assertions.use_pp = false.
+
+ * test/testunit/test_assertions.rb: made a small change to exception
+ formatting.
+
+Sun Oct 5 07:42:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: made small improvements to assertion
+ messages. Deprecated Assertions#assert_not_nil; use #assert instead.
+
+ * test/testunit/test_assertions.rb: ditto.
+
+ * test/testunit/util/test_procwrapper.rb: use #assert instead of
+ #assert_not_nil.
+
+Sun Oct 5 04:10:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: refactored message building.
+
+Sun Oct 5 03:40:22 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.h: global symbols should be declared
+ as external.
+
+Sun Oct 5 03:03:20 2003 akira yamada <akira@ruby-lang.org>
+
+ * test/ruby/test_exception.rb (test_else): added.
+
+Sun Oct 5 02:12:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: changed assertion messages to rely more
+ heavily on #inspect. Added backtrace filtering for exceptions in
+ assertion messages.
+
+ * test/testunit/test_assertions.rb: ditto.
+
+Sun Oct 5 02:12:00 2003 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/acl.rb, lib/drb/ssl.rb: added.
+
+ * lib/drb/drb.rb: exit from a thread using 'break'.
+
+Sat Oct 4 21:49:14 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * gc.c (Init_stack): the type of space is changed to unsigned int
+ from double. [ruby-dev:21483]
+
+Sat Oct 4 17:52:59 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/netHttpClient.rb: follow http-access2. hosts which matches
+ ENV['no_proxy'] or ENV['NO_PROXY'] are not proxyed.
+ - [,:] separated. ("ruby-lang.org:rubyist.net")
+ - no regexp. (give "ruby-lang.org", not "*.ruby-lang.org")
+ - if you want specify host by IP address, give full address.
+ ("192.168.1.1, 192.168.1.2")
+
+ * lib/soap/rpc/cgistub.rb: return "Status: XXX MMM" line.
+
+ * test/runner.rb: give testsuite name.
+
+Sat Oct 4 15:16:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): instance variable dump do not cause error
+ for objects that cannot be dumped, if they traversed from
+ marshal_dump. they are just ignored.
+
+ * gc.c (Init_stack): cast "space" (doble value) into unsigned
+ int. should run on PowerPC.
+
+ * eval.c (rb_eval): should not execute else part if any exception
+ is caught. [ruby-dev:21482]
+
+ * parse.y (f_args): should allow unparenthesized block argument.
+
+ * parse.y (f_rest_arg): should allow unparenthesized rest
+ argument.
+
+Sat Oct 4 14:59:51 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (initialize): raise ArgumentError if argument has
+ '\0' character.
+ (relative_path_from): new method.
+ (each_entry): new method for replacement of dir_foreach.
+ (foreach, foreachline, dir_foreach, chdir): obsoleted.
+
+Sat Oct 4 12:58:48 2003 akira yamada <akira@ruby-lang.org>
+
+ * test/uri/* (6 files): added.
+
+Sat Oct 4 12:44:45 2003 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/ftp.rb, lib/uri/mailto.rb: renamed to #to_s from #to_str.
+
+Sat Oct 4 07:33:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/testsuite.rb: changed #<< to return self, and added
+ #delete.
+
+ * test/testunit/test_testsuite.rb: ditto. Also slightly refactored
+ #test_size.
+
+ * lib/test/unit/collector/objectspace.rb: collector now preserves the
+ hierarchy of suites.
+
+ * test/testunit/collector/test_objectspace.rb: ditto.
+
+Sat Oct 4 04:48:49 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: default keys handled.
+
+ * ext/syck/syck.h: lowered default buffer size to 16k for increased
+ performance.
+
+ * test/yaml: checkin of basic unit tests.
+
+Sat Oct 4 04:24:19 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/extconf.rb: add check for X509V3_set_nconf.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_set_config):
+ cannot implement if X509V3_set_nconf doesn't exist.
+
+Sat Oct 4 02:12:44 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/xsd/datatypes.rb: dump sign by itself. under the problematic
+ platform, sprintf("%+.10g", -0.0) => +0. sigh.
+
+ * sample/wsdl/amazon/*: update schema ver2 to ver3.
+
+Sat Oct 4 01:33:46 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (initialize): duplicate and freeze argument.
+ (to_s): return duplicated string.
+ (children): new method.
+ (each_line): new alias to foreachline.
+
+Fri Oct 3 16:13:19 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c: add DER encoder and decoder.
+
+ * ext/openssl/ossl_asn1.h: add OpenSSL::ASN1 module.
+
+ * ext/openssl/ossl.c (Init_openssl): call Init_ossl_asn1.
+
+ * ext/openssl/extconf.rb: check if X509_ATTRIBUTE has field "single".
+
+ * ext/openssl/ossl_x509attr.c (ossl_x509attr_set_value): accept
+ DER encoded data argument.
+
+ * ext/openssl/ossl_x509attr.c (ossl_x509attr_get_value): return
+ DER encoded data in OpenSSL::ASN1 types.
+
+Fri Oct 3 13:02:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit.rb: refactored to use optparse.
+
+ * lib/test/unit.rb: added support for selecting the output
+ level from the command-line.
+
+ * lib/test/unit.rb: added a command-line switch to stop processing
+ the command-line, allowing arguments to be passed to tests.
+
+ * lib/test/unit.rb: changed the method for specifying a runner or a
+ filter from the command-line.
+
+ * lib/test/unit/collector/objectspace.rb: fixed a bug causing all
+ tests to be excluded when the filter was set to an empty array.
+
+ * test/testunit/collector/test_objectspace.rb: ditto.
+
+Fri Oct 3 08:14:32 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/irb/ruby-lex.rb (RubyLex::identify_identifier): support
+ 'class ::Foo' syntax. [ruby-talk:83514]
+
+Fri Oct 3 08:01:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: added a default message for #assert,
+ #assert_block, and #flunk.
+
+ * test/testunit/test_assertions.rb: ditto.
+
+ * lib/test/unit/failure.rb: failures now show a better trace of where
+ they occurred.
+
+ * test/testunit/test_failure.rb: ditto (added).
+
+ * lib/test/unit/testcase.rb: ditto.
+
+ * test/testunit/test_testcase.rb: ditto.
+
+ * lib/test/unit/util/backtracefilter.rb: added.
+
+ * test/testunit/util/test_backtracefilter.rb: added.
+
+ * lib/test/unit/error.rb: changed to use BacktraceFilter and improved
+ output.
+
+ * test/testunit/test_error.rb: ditto.
+
+Thu Oct 2 20:33:49 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_failure_initialize): conform with
+ orthodox initialization method.
+
+ * ext/iconv/iconv.c (iconv_fail): initialize exception instance
+ from the class, and do not share instance variables with the
+ others. [ruby-dev:21470]
+
+Thu Oct 2 18:20:27 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (Init_Time): define initialize. [ruby-dev:21469]
+
+Thu Oct 2 17:39:38 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_engine.c: add a new module OpenSSL::Engine.
+ it supports OpenSSL hardware cryptographic engine interface.
+
+ * ext/openssl/ossl_engine.h: ditto.
+
+ * ext/openssl/MANIFEST: add ossl_engine.c and ossl_engine.h.
+
+ * ext/openssl/extconf.rb: add check for openssl/engine.h.
+
+ * ext/openssl/ossl.c: call Init_ossl_engine().
+
+ * ext/openssl/ossl.h: include openssl/engine.h.
+
+ * ext/openssl/ossl_pkey_{rsa,dsa,dh}.c: check if underlying
+ EVP_PKEY referes engine.
+
+Thu Oct 2 17:22:37 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_load): restore instance variables (if any) before
+ loading from marshaled data.
+
+Thu Oct 2 14:19:15 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (iconv_fail): now yield erred substring, and
+ set error object to $!.
+
+ * ext/iconv/iconv.c (iconv_convert): error handler block should
+ return appended part and the rest. if rest is nil, the
+ conversion stops.
+
+Thu Oct 2 12:00:18 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_const_defined_0): look up constants in Object as
+ well. [ruby-dev:21458]
+
+ * test/ruby/test_defined.rb (TestDefined::test_defined): test for
+ constants.
+
+Thu Oct 2 11:17:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb: should not capture an
+ AssertionFailedError unless explicitly requested.
+
+ * test/testunit/test_assertions.rb: ditto.
+
+ * test/testunit/collector/test_objectspace.rb: fixed a test failure
+ caused by methods being returned in different orders on different
+ platforms by moving test sorting from TestSuite into the locations
+ where suites are constructed. [ruby-talk:83156]
+
+ * lib/test/unit/testcase.rb: ditto.
+
+ * lib/test/unit/testsuite.rb: ditto.
+
+ * lib/test/unit/collector/objectspace.rb: ditto.
+
+Thu Oct 2 03:25:01 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (rb_thread_raise): prototype; avoid VC++ warning.
+
+Thu Oct 2 01:37:34 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_mdump): new marshal dumper. _dump is still
+ available for compatibility.
+
+ * time.c (time_mload): new marshal loader.
+
+ * marshal.c (w_object): preserve instance variables for objects
+ with marshal_dump.
+
+ * marshal.c (r_object0): restore instance variables before calling
+ marshal_load.
+
+ * error.c (rb_warn_m): always return nil.
+
+Thu Oct 2 01:32:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_block_given_p): real required condition is
+ ruby_frame->prev->iter == ITER_CUR.
+
+ * eval.c (rb_block_given_p): ditto.
+
+ * eval.c (block_pass): update ruby_frame->iter only when previous
+ value is ITER_NOT.
+
+Thu Oct 2 01:02:35 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_defined_at): should exclude constants from
+ Object when TYPE(klass) == T_MODULE *and* exclude is on.
+ [ruby-dev:21458]
+
+ * variable.c (rb_const_get_0): do not lookup constants from Object
+ when TYPE(klass) == T_MODULE *and* exclude is on.
+
+Thu Oct 2 00:21:11 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/logger/test_logger.rb: unlinking file before close causes
+ problem under win32 box.
+
+ * lib/xsd/datatypes.rb(XSDFloat, XSDDouble): add +/- sign explicitly
+ when stringified and embedded into XML instance. Ruby's sprintf may
+ format -0.0 as "0.0" (no minus sign) depending on underlying C
+ sprintf implementation.
+
+ * test/xsd/test_xsd.rb, test/soap/test_basetype.rb: follow above change.
+
+ * test/soap/calc/*: give httpd config param "CGIInterpreter".
+ "/usr/bin/env ruby" thing does not work under non-Unix boxes.
+
+Thu Oct 2 00:25:21 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * signal.c (ruby_signal_name): adjust to the prototype.
+
+ * process.c (pst_inspect): ditto.
+
+ * ext/etc/etc.c (etc_getgrent, Init_etc): typo.
+
+Wed Oct 1 20:49:41 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (heaps): manage slots and limits together. [ruby-dev:21453]
+
+ * gc.c (add_heap): should not clear heaps slot even if realloc()
+ failed.
+
+Wed Oct 1 20:36:49 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST: add wince/mkconfig_wce.rb.
+
+Wed Oct 1 17:22:33 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/etc/etc.c: add new functions: setpwent, getpwent, endpwent,
+ setgrent, getgrent, endgrent.
+
+ * ext/socket/socket.c (sock_s_gethostbyname): do not reverse lookup.
+
+Wed Oct 1 17:01:30 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_load): Object scope had priority over required file
+ scope. [ruby-dev:21415]
+
+Wed Oct 1 14:09:53 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/mkconfig_wce.rb: sorry, forget to commit.
+
+Wed Oct 1 10:08:42 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/setup.mak: add sigmarionIII SDK support.
+
+ * wince/Makefile.sub: ditto.
+
+ * wince/mkexports.rb: fix linker error in SH4.
+
+ * wince/mkconfig_wce.rb: camouflage RUBY_PLATFORM for compiling ext.
+
+Wed Oct 1 08:02:52 2003 Takaaki Uematsu <uema2x@jcom.home.ne.jp>
+
+ * wince/time_wce.c (time): add zero check.
+
+Tue Sep 30 16:11:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * Makefile.in: copy lex.c from $(srcdir) if it's not the current
+ directory. [ruby-dev:21437]
+
+Tue Sep 30 11:29:23 2003 Tanaka Akira <akr@m17n.org>
+
+ * process.c (pst_inspect): describe stopped process "stopped".
+
+Tue Sep 30 09:31:56 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/runner.rb: glob for directories.
+
+Tue Sep 30 09:11:43 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): while/until should not capture break unless
+ they are destination of the break.
+
+Tue Sep 30 03:12:02 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (finish): revert to 1.93.
+
+ * lib/net/pop.rb (finish): revert to 1.60.
+
+ * lib/net/smtp.rb (finish): revert to 1.67.
+
+ * lib/net/http.rb (do_start): ensure to close socket if failed to
+ start session.
+
+ * lib/net/pop.rb (do_start): ditto.
+
+ * lib/net/smtp.rb (do_start): ditto.
+
+ * lib/net/smtp.rb: SMTP#started? wrongly returned false always.
+
+Tue Sep 30 02:54:49 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_iterator.rb: new test
+ test_break__nested_loop[123].
+
+Mon Sep 29 23:39:13 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb (finish): does not raise IOError even if
+ !started?, to allow closing socket which was opened before
+ session started.
+
+ * lib/net/pop.rb (finish): ditto.
+
+ * lib/net/smtp.rb (finish): ditto.
+
+Mon Sep 29 19:06:51 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * ext/win32ole/extconf.rb: add windows.h checking.
+ (ruby-bugs:PR#1185)
+
+Mon Sep 29 16:18:30 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: check if the given logdevice object respond_to :write
+ and :close, not is_a? IO. duck duck.
+
+ * test/logger/test_logger.rb: self IO.pipe reading/writing may be
+ locked by the flood. use tempfile.
+
+ * lib/wsdl/xmlSchema/data.rb: wrong constant reference.
+
+Mon Sep 29 16:11:23 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: clean up temporary symlink.
+ Patched by NaHi. [ruby-dev:21420]
+
+Mon Sep 29 11:16:55 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_thread_atfork): wrong format specifier.
+ [ruby-dev:21428]
+
+ * process.c (pst_inspect): better description.
+
+Mon Sep 29 02:31:44 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/utils.rb (Utils::su): use setgid and setuid to
+ set real and effective IDs. and setup group access list by
+ initgroups.
+
+Sun Sep 28 11:14:19 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * ext/digest/digest.c (Init_digest): `copy_object' was deprecated.
+ `initialize_copy' should be defined.
+
+ * ext/stringio/stringio.c (Init_stringio): ditto.
+
+Sat Sep 27 18:25:13 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/xsd/charset.rb: XSD::Charset.is_ces did return always true under
+ $KCODE = "NONE" environment. check added.
+
+ * test/xsd/test_xsd.rb: add tests for above fix.
+
+Sat Sep 27 15:58:50 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/rpc/cgistub.rb: make logging severity threshold higher.
+
+ * lib/soap/rpc/standaloneServer.rb: defer WEBrick server start to give
+ a chance to reset logging severity threshold.
+
+ * test/soap/calc/test_*, test/soap/helloworld/test_helloworld.rb: run
+ silent.
+
+Sat Sep 27 09:44:18 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/test_fileutils.rb: clear all errors on Windows.
+ [ruby-dev:21417]
+
+ * test/fileutils/test_nowrite.rb: ditto.
+
+Sat Sep 27 04:57:07 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_file.rb: new file. only asserts unlink-before-close
+ behaviour now.
+
+ * test/soap/marshal/test_digraph.rb: should close before unlink.
+ unlink-before-close pattern is not needed here.
+
+Sat Sep 27 03:32:37 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/soap/*, test/wsdl/*, test/xsd/*: move TestCase classes into
+ each module namespace. TestMarshal in
+ test/soap/marshal/test_marshal.rb crashed with
+ test/ruby/test_marshal.rb.
+
+Sat Sep 27 01:30:59 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): on win32, type of the 4th
+ argument of getsockopt is char *.
+
+Fri Sep 26 18:35:40 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/resolv-replace.rb: 1.8 compliance. [ruby-talk:82946]
+
+Fri Sep 26 17:39:27 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_marshal.rb: add test for ruby's objects.
+
+Fri Sep 26 09:52:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * defines.h (flush_register_windows): use volatile only for gcc on
+ Solaris. [ruby-dev:21403]
+
+ * lib/mkmf.rb (xsystem): use system directly to honor shell meta
+ charaters.
+
+Fri Sep 26 00:10:13 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/README: updated.
+
+Thu Sep 25 17:48:10 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl.c (ossl_buf2str): fix type of 1st argument for
+ rb_protect.
+
+ * ext/openssl/ossl_hmac.c (ossl_hmac_digest): should return meaningful
+ value.
+
+Thu Sep 25 09:00:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/ostruct.rb: Added OpenStruct#==.
+
+ * test/ostruct/test_ostruct.rb: Added.
+
+Thu Sep 25 07:55:26 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c, ext/openssl/ossl_pkey_dsa.c,
+ ext/openssl/ossl_pkey_rsa.c, ext/bigdecimal/bigdecimal.h: must
+ not use C++ or C99 style comment yet. (ruby-bugs:PR#1184)
+
+Thu Sep 25 00:23:22 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST: add SOAP4R.
+
+Thu Sep 25 00:13:15 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/soap/* (29 files): SOAP4R added.
+
+ * lib/wsdl/* (42 files): WSDL4R added.
+
+ * lib/xsd/* (12 files): XSD4R added.
+
+ * test/soap/* (16 files): added.
+
+ * test/wsdl/* (2 files): added.
+
+ * test/xsd/* (3 files): added.
+
+ * sample/soap/* (27 files): added.
+
+ * sample/wsdl/* (13 files): added.
+
+Wed Sep 24 02:08:11 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpservlet/cgihandler.rb: conform to mswin32.
+ [ruby-talk:82735], [ruby-talk:82748], [ruby-talk:82818]
+
+Tue Sep 23 23:10:16 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: add Logger#<<(msg) for writing msg without any
+ formatting.
+
+ * test/logger/test_logger.rb: ditto.
+
+Tue Sep 23 20:47:51 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * error.c (rb_warn_m): should not warn if -W0 is specified.
+ [ruby-talk:82675]
+
+Mon Sep 22 21:28:57 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST: updated.
+
+Mon Sep 22 19:22:26 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * configure.in (AC_CHECK_FUNCS): add setuid and setgid.
+
+Mon Sep 22 12:34:55 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * util.c (ruby_strtod): skip preceding zeros before counting
+ digits in the mantissa. (ruby-bugs:PR#1181)
+
+Sun Sep 21 04:12:36 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspreq_initialize): the argument
+ should be a String.
+
+ * ext/openssl/ossl_ocsp.c (ossl_ocspres_initialize): ditt.
+
+ * ext/openssl/ossl_x509attr.c (ossl_x509attr_initialize): ditto.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_initialize): ditto.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_set_value): ditto.
+
+Sat Sep 20 11:49:05 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: typo fixed.
+
+ * test/logger/test_logger.rb: new file.
+
+Fri Sep 19 11:39:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * test/testunit/*: Added.
+
+ * lib/test/unit.rb: Documentation update.
+
+ * lib/test/unit/ui/console/testrunner.rb (TestRunner#initialize):
+ Ditto.
+
+ * lib/test/unit.rb: Factored out an ObjectSpace collector.
+
+ * lib/test/unit/collector/objectspace.rb: Ditto.
+
+ * sample/testunit/*: Added.
+
+Fri Sep 19 01:00:48 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/log.rb (BasicLog#log): get rid of as ineffectual
+ condition.
+
+ * lib/webrick/log.rb (BasicLog#format): add "\n" to message.
+
+Thu Sep 18 22:43:20 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should push PROT_PCALL tag for orphans.
+
+ * eval.c (proc_invoke): should update "result" for orphans.
+
+Thu Sep 18 20:33:03 2003 Tietew <tietew-ml-ruby-list@tietew.net>
+
+ * parse.y (str_xquote): do not prepend escapes in
+ backqoute literals. [ruby-list:38409]
+
+Thu Sep 18 20:30:17 2003 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb: update document.
+
+Thu Sep 18 15:27:05 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: new file. Logger, formerly called devel-logger or
+ Devel::Logger.
+
+ * sample/logger/*: new file. samples of logger.rb.
+
+Wed Sep 17 23:41:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (localjump_destination): should not raise ThreadError
+ exception for "break". [ruby-dev:21348]
+
+ * eval.c (proc_invoke): use result instead of prot_tag->retval.
+ retval is no longer propagated to the ancestors.
+
+Wed Sep 17 20:34:00 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (tokadd_string, parse_string, yylex): escaped terminator
+ is now interpreted as is. [ruby-talk:82206]
+
+Wed Sep 17 18:52:36 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/fileutils/fileassertions.rb: new file.
+
+ * test/fileutils/test_fileutils.rb: new file.
+
+ * test/fileutils/test_nowrite.rb: new file.
+
+Wed Sep 17 18:51:02 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/strscan/test_stringscanner.rb: require test/unit.
+
+Wed Sep 17 18:35:34 2003 Minero Aoki <aamine@loveruby.net>
+
+ * test/strscan/test_stringscanner.rb: new file.
+
+Wed Sep 17 18:03:30 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl: all files are reviewed to simplify and avoid memory leak.
+
+ * ext/openssl/extconf.rb: add check for assert.h.
+
+ * ext/openssl/ossl.c (ossl_buf2str): new function to convert
+ C buffer to String and free buffer.
+
+ * ext/openssl/ossl.c (ossl_x509_ary2sk): new function to convert
+ Array of OpenSSL::X509 to STACK_OF(X509) with exception safe.
+
+ * ext/openssl/ossl.c (ossl_to_der, ossl_to_der_if_possible): new
+ functions to convert object to DER string.
+
+ * ext/openssl/ossl.h: ditto.
+
+ * ext/openssl/ossl_bio.c (ossl_membio2str): new function to convert
+ BIO to String object and free BIO.
+
+ * ext/openssl/ossl_bio.h: ditto.
+
+ * ext/openssl/ossl_pkcs7.c (ossl_pkcs7_to_der): add for "to_der".
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_to_der): ditto.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509ext_to_der): ditto.
+
+ * ext/openssl/ossl_x509ext.c (create_ext_from_array): removed
+ and reimplement in openssl/x509.rb.
+
+ * ext/openssl/ossl_x509attr.c: reimplemented and disable some
+ method temporarily. this class doesn't work fine without ASN.1
+ data support;-) I'll rewrite in near future.
+
+ * ext/openssl/lib/openssl/x509.c (X509::Attribute): get rid off
+ unused code.
+
+ * ext/openssl/lib/openssl/x509.c (X509::ExtensionFactory): refine all.
+
+Tue Sep 16 22:25:06 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: add negative tests of row_sep.
+
+Tue Sep 16 18:02:36 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should not translate character
+ class range edge. [ruby-list:38393]
+
+Tue Sep 16 16:47:56 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * MANIFEST: add test/csv/mac.csv.
+
+ * win32/Makefile.sub, bcc32/Makefile.sub (test): add phony NUL target.
+
+Mon Sep 15 19:02:52 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/csv.rb: add extra pamameter to specify row(record) separater
+ character. To parse Mac's CR separated CSV, do like this.
+ CSV.open("mac.csv", "r", ?,, ?\r) { |row| p row.to_a }
+ The 3rd parameter in this example ?, is for column separater and the
+ 4th ?\r is for row separater. Row separater is nil by default. Nil
+ separater means "\r\n" or "\n".
+
+ * test/csv/test_csv.rb: add tests for above feature.
+
+ * test/csv/mac.csv: added. Sample CR separated CSV file.
+
+Fri Sep 12 22:41:48 2003 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * ext/openssl/ossl.c: move ASN.1 stuff to ossl_asn1.[ch]
+
+ * ext/openssl/ossl.c: move BIO stuff to ossl_bio.[ch]
+
+ * ext/openssl/ossl_asn1.[ch]: new files
+
+ * ext/openssl/ossl_bio.[ch]: new files
+
+Fri Sep 12 12:30:41 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h (rb_disable_super, rb_enable_super): replace with dummy
+ expressions instead of prototypes. the functions remain yet for
+ binary compatibility. [ruby-talk:81758]
+
+Fri Sep 12 12:09:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_and): convert argument using 'to_int'.
+
+ * bignum.c (rb_big_or): ditto.
+
+ * bignum.c (rb_big_xor): ditto.
+
+Fri Sep 12 07:06:14 2003 David Black <dblack@superlink.net>
+
+ * lib/scanf.rb: Took out useless @matched_item variable; some small
+ refactoring.
+
+Thu Sep 11 08:43:44 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_require): allow "require" on $SAFE>0, if feature
+ name is not tainted.
+
+ * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser::stream):
+ Supports StringIO.
+
+Wed Sep 10 22:47:30 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.h: add a workaround for win32 platform.
+ libeay32.dll doesn't export functions defined in conf_api.h.
+
+ * ext/openssl/ossl_config.c (ossl_config_initialize): ditto.
+
+ * ext/openssl/ossl_config.c (ossl_config_add_value): ditto.
+
+ * ext/openssl/ossl_config.c (set_conf_section_i): should check
+ if the argument is Array.
+
+Wed Sep 10 22:41:54 2003 Tietew <tietew@tietew.net>
+
+ * eval.c (win32_get_exception_list): avoid VC7 warning.
+ [ruby-win32:577]
+
+Tue Sep 9 10:39:51 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (struct tag): dst should be VALUE.
+
+ * eval.c (localjump_destination): stop at the scope where the current
+ block was created. [ruby-dev:21353]
+
+Tue Sep 9 05:17:04 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_config.rb: avoid compile error in OpenSSL-0.9.6.
+
+Tue Sep 9 02:41:35 2003 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * ext/openssl/ossl_config.c: Refine compatibility.
+
+Tue Sep 9 01:50:45 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (HTTPServer#access_log): add "\n" to
+ the message.
+
+ * lib/webrick/log.rb (BasicLog#log): add "\n" only if needed.
+
+Mon Sep 8 22:15:33 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/lib/multi-tk.rb: modify security check at creating
+ a new interpreter
+
+Mon Sep 8 20:00:12 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb, lib/optparse/version.rb: search also all
+ capital versions.
+
+Mon Sep 8 19:26:33 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.h: include openssl/conf.h and openssl/conf_api.h.
+
+ * ext/openssl/ossl_config.c: refine all with backward compatibility.
+
+ * ext/openssl/ossl_config.h: export GetConfigPtr() and DupConfigPtr().
+
+ * ext/openssl/ossl_x509.c: added new constants under X509 module.
+ DEFAULT_CERT_AREA, DEFAULT_CERT_DIR, DEFAULT_CERT_FILE,
+ DEFAULT_CERT_DIR_ENV, DEFAULT_CERT_FILE_ENV and DEFAULT_PRIVATE_DIR.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_free): don't free
+ the members of the struct. it's left to GC.
+
+ * ext/openssl/ossl_x509ext.c (ossl_x509_set_config): add for config=.
+
+ * ext/openssl/ossl_x509ext.c (Xossl_x509extfactory_initialize):
+ add attr readers: issuer_certificate, subject_certificate,
+ subject_request, crl and config.
+
+Mon Sep 8 18:26:41 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/accesslog.rb (AccessLog::setup_params): use req.port
+ instead of config[:Port] or req.request_uri.port.
+
+ * lib/webrick/httprequest.rb (HTTPRequest#meta_vars): ditto.
+
+ * lib/webrick/httpservlet/filehandler.rb (FileHandler#dir_list): ditto.
+
+ * lib/webrick/config.rb: :Listen option never be used.
+
+ * lib/webrick/server.rb (GenericServer#initialize): don't use :Listen
+ option and add warning message.
+
+ * lib/webrick/log.rb (BasicLog#<<): shortcut of log(INFO, ...).
+
+ * lib/webrick/httpserver.rb (HTTPServer#accesslog): use << for logging.
+
+Sun Sep 7 16:08:28 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (lib_mainloop_core): fixed signal-trap bug
+
+ * ext/tk/lib/*.rb: Ruby/Tk works at $SAFE == 4
+
+Sat Sep 6 02:26:34 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_*.rb: assert_same, assert_match, and so on.
+
+Sat Sep 6 18:45:46 2003 Mauricio Fernandez <batsman.geo@yahoo.com>
+
+ * parse.y (assignable): call rb_compile_error(), not rb_bug().
+ [ruby-core:01523]
+
+Sat Sep 6 17:40:41 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ruby_missing.c: rid of unnecessary backward
+ compatibility stuff. and remove DEFINE_ALLOC_WRAPPER from
+ all sources.
+
+ * ext/openssl/ossl_x509ext.c (X509::Extension.new): new method.
+
+ * ext/openssl/ossl_x509ext.c (X509::Extension#oid=): new method.
+
+ * ext/openssl/ossl_x509ext.c (X509::Extension#value=): new method.
+
+ * ext/openssl/ossl_x509ext.c (X509::Extension#critical=): new method.
+
+Sat Sep 6 01:23:22 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): need to quote cmd if RUBYSHELL is set.
+
+ * win32/win32.c (CreateChild): fix condition about whether to call
+ shell or not.
+
+Sat Sep 6 00:36:20 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * Makefile.in (test): phony target.
+
+ * lib/mkmf.rb (have_library, find_library): configure by library
+ name.
+
+ * lib/optparse.rb (OptionParser#order, #permute, #parse): allow an
+ array as argument.
+
+ * test/ruby/test_*.rb: moved invariants to left side in
+ assert_equal, and use assert_nil, assert_raises and so on.
+
+ * win32/win32.c (isInternalCmd): distinguish command.com and
+ cmd.exe.
+
+ * win32/win32.c (make_cmdvector): a character just after wildcard
+ was ignored. [ruby-core:01518]
+
+Fri Sep 5 20:27:08 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_*.rb: replace 'assert(a == b)' with assert_equal(a, b)'
+
+Fri Sep 5 18:00:51 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/x509.rb: new method X509::Name::parse.
+
+ * ext/openssl/ossl_digest.c: add ossl_digest_new().
+
+ * ext/openssl/ossl_digest.h: ditto.
+
+ * ext/openssl/ossl_cipher.c: add ossl_cipher_new().
+
+ * ext/openssl/ossl_cipher.h: ditto.
+
+Fri Sep 5 15:32:04 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-font-lock-maybe-here-docs): should not
+ search delimiter forward if found in backward.
+
+Fri Sep 5 13:32:48 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/runner.rb: arguments should be keys.
+
+Fri Sep 5 12:09:55 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * test/ruby/test_system.rb (test_system): check existence of ruby
+ interpreter.
+
+Fri Sep 5 11:32:17 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (--version): fix assignment/reference order.
+
+ * lib/optparse.rb (OptionParser#help): new; OptionParser#to_s may
+ be deprecated in future.
+
+ * lib/optparse/version.rb (OptionParser#show_version): hide Object.
+
+ * test/runner.rb: fix optparse usage.
+
+ * test/runner.rb: glob all testsuits if no tests given.
+
+Fri Sep 5 10:42:58 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/runner.rb: added. gets testcases from command line and runs it.
+
+ * test/ruby/test_gc.rb: remove useless part which was for dumping test
+ result.
+
+Fri Sep 5 09:28:59 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby/test_gc.rb: added. splitter.rb which I made to split
+ sample/test.rb into test/ruby/test_* kindly removed GC test (the
+ last section in the original test) to reduce things to be worried.
+
+Fri Sep 5 03:00:04 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_iterator.rb (test_block_in_arg): add no block
+ given tests.
+
+ * test/ruby/test_iterator.rb (test_ljump): uncomment LocalJumpError
+ test.
+
+Fri Sep 5 01:10:11 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/ruby: tests for ruby itself.
+
+ * test/ruby/test_*.rb: split sample/test.rb into 28 test/unit testcases.
+ some tests could not be translates... search '!!' mark to see it.
+
+ * test/csv/test_csv.rb: should require 'csv', not '../lib/csv'. test
+ runner should set load path correctly.
+
+Fri Sep 5 01:03:59 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: close opened files for CSV::IOBuf explicitly.
+ opened file cannot be removed under win32 box.
+
+Thu Sep 4 23:59:40 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (tokadd_string): newlines have no special meanings in
+ %w/%W, otherwise they are ignored only when interpolation is
+ enabled. [ruby-dev:21325]
+
+Thu Sep 4 19:38:25 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * ext/io/wait/.cvsignore: added.
+
+ * ext/openssl/.cvsignore: added.
+
+Thu Sep 4 19:28:24 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * sample/openssl: added. Sample of standard distribution library
+ should be locate in sample/{module_name}/*.
+
+ * ext/openssl/sample/*: removed. move to sample/openssl/*.
+
+Thu Sep 4 18:02:15 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: use remove_const to reduce warnings. use
+ Dir.tmpdir to locate working files.
+
+Thu Sep 4 17:41:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-here-doc-beg-re): underscore also is
+ valid delimiter.
+
+ * misc/ruby-mode.el (ruby-here-doc-end-match): must quote
+ arbitrary string to use as regexp.
+
+ * misc/ruby-mode.el (ruby-font-lock-maybe-here-docs): must not
+ call `ruby-here-doc-end-match' unless `ruby-here-doc-beg-re'
+ matched.
+
+Thu Sep 4 15:40:07 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test/csv/test_csv.rb: run on test/unit original layer.
+
+Thu Sep 4 12:54:50 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/token.c: headerless documents with root-level spacing now
+ honored.
+
+Thu Sep 4 00:06:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (mark_frame_adj): need to adjust argv pointer if using
+ system's alloca. [ruby-core:01503]
+
+Wed Sep 3 21:33:20 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * test: add test directory. Test::Unit aware testcases and needed
+ files should be located in this directory. dir/file name convention;
+ test/{module_name}/test_{testcase_name}.rb
+ test/{module_name}/{needed_files}
+ someday, someone will write testrunner which searches test_*.rb and
+ run testcases automatically.
+
+ * test/csv/*: add testcase for lib/csv.rb.
+
+Wed Sep 3 01:37:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_f_gets): should call next_argv() before type check
+ current_file. [ruby-list:38336]
+
+Tue Sep 2 20:37:15 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/net/protocols.rb (SSLIO#ssl_connect): warning
+ for skipping server verification.
+
+Tue Sep 2 23:36:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): should retrieve retval when pcall is true.
+
+Tue Sep 2 14:09:20 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/socket/extconf.rb: check s6_addr8 in in6_addr (Tru64 UNIX).
+ the patch is submitted by nmu <nmu@users.sourceforge.jp>.
+
+ * ext/socket/getaddrinfo.c (getaddrinfo): should use in6_addr8 on
+ some platforms.
+
+ * ext/socket/getnameinfo.c (getnameinfo): ditto.
+
+Tue Sep 2 14:02:19 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib/tcltklib.c (ip_invoke): fixed bug on passing a exception
+
+ * ext/tk/lib/{tk.rb, tkcanvas.rb, tkfont.rb, tktext.rb}:
+ bug fix and improvement of font control
+
+Tue Sep 2 09:51:36 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): should not handle exceptions within rescue
+ argument. [ruby-talk:80804]
+
+Tue Sep 2 00:44:37 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * re.c (rb_memsearch): fix overrun. [ruby-talk:80759]
+
+Tue Sep 2 00:41:27 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv/iconv.c (map_charset): use lower case keys.
+
+ * ext/iconv/iconv.c (iconv_fail): just yield error and return the
+ result if a block is given.
+
+ * ext/iconv/iconv.c (iconv_convert): yield error and append the
+ result if a block is given.
+
+ * ext/iconv/charset_alias.rb (charset_alias): optional third
+ argument.
+
+ * ext/iconv/charset_alias.rb (charset_alias): use CP932 instead of
+ SHIFT_JIS on cygwin.
+
+Mon Sep 1 18:34:25 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval): make tail recursion in ELSE clause of
+ RESCUE a jump.
+
+Mon Sep 1 18:00:02 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (aref_args): forgot to call NEW_SPLAT(). reported by
+ Dave Butcher.
+
+ * eval.c (Init_Thread): protect thgroup_default. suggested by Guy
+ Decoux in [ruby-talk:80623]
+
+Mon Sep 1 16:59:10 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_switch): add RESTORE_EXIT; exit by another
+ thread termination.
+
+ * eval.c (rb_thread_start_0): should not error_print() within
+ terminated thread, because $stderr used by it might be
+ overriden now. [ruby-dev:21280]
+
+Sun Aug 31 22:46:55 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * eval.c (TAG_DST()): take no argument.
+
+ * process.c (p_gid_sw_ensure): return VALUE.
+
+Sun Aug 31 22:27:10 2003 Hidetoshi NAGAI <nagai@dumbo.ai.kyutech.ac.jp>
+
+ * process.c (p_gid_sw_ensure): lack of function type
+
+Sun Aug 31 12:25:06 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * lib/optparse.rb: --version takes an optional argument; "all" or
+ a list of package names.
+
+Sun Aug 31 10:17:02 2003 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb: yyyy/mm is not an acceptable format.
+
+ * lib/time.rb: follow above.
+
+Sat Aug 30 14:25:43 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_iter_break): should not call TAG_JUMP directly.
+
+Sat Aug 30 03:58:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (struct BLOCK): remove BLOCKTAG, use scope instead.
+
+ * eval.c (POP_TAG): no longer propagate retval. retval is now set
+ directly by localjump_destination().
+
+ * eval.c (localjump_destination): new function to cast
+ return/break local jump.
+
+ * eval.c (rb_yield_0): stop TAG_RETURN/TAG_BREAK escaping.
+
+Fri Aug 29 22:35:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * bigdecimal.c *.html: The 2nd arg. for add,sub,mult, and div is 0,
+ then result will be the same as +,-,*,/ respectively.
+
+Fri Aug 29 17:30:15 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * process.c: bug fix
+
+ * process.c: add rb_secure(2) to methods of Process::{UID,GID,Sys}
+
+ * process.c: deny handling IDs during evaluating the block given to
+ the Process::{UID,GID}.switch method
+
+ * ext/tcltklib/tcltklib.c: some methods have no effect if on slave-IP
+
+ * ext/tcltklib/tcltklib.c: can create a interpreter without Tk
+
+ * ext/tcltklib/tcltklib.c: bug fix on handling exceptions
+
+ * ext/tcltklib/MANUAL.euc: modify
+
+ * ext/tk/lib/tk.rb: freeze some core modules
+
+ * ext/tk/lib/multi-tk.rb: more secure
+
+ * ext/tk/lib/tk.rb: TkVariable.new(array) --> treat the array as the
+ Tk's list
+
+ * ext/tk/lib/tk.rb: improve accessibility of TkVariable object
+
+ * ext/tk/lib/tk.rb, ext/tk/lib/tkfont.rb, ext/tk/lib/tkcanvas.rb,
+ ext/tk/lib/tktext.rb: fix bug of font handling
+
+ * ext/tk/lib/tkfont.rb: TkFont.new() accepts compound fonts
+
+Thu Aug 28 22:07:12 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_autoload_load): call const_missing if autoloading
+ constant is not defined to allow hook.
+
+ * eval.c (rb_eval): use rb_const_get_from() instead of
+ rb_const_get_at().
+
+ * eval.c (is_defined): forgot to check NODE_COLON3.
+
+Thu Aug 28 17:30:24 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * variable.c (rb_const_get_0): should check constants defined in
+ included modules, if klass is Object. [ruby-talk:79302]
+
+ * numeric.c (check_uint): check should be done using UINT_MAX, not
+ INT_MAX. this fix is submitted by Lyle Johnson
+ <lyle@knology.net> in [ruby-core:01486]
+
+Thu Aug 28 05:02:52 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (singleton): typo fixed (ruby-bugs-ja:PR#562)
+
+Thu Aug 28 02:37:45 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_eval): *a = [1,2] now assigns [[1,2]] to a.
+ consistent with *a = [1], which set [[1]] to a.
+
+ * node.h: merge NODE_RESTARY to NODE_SPLAT.
+
+ * parse.y: rules simplified a bit by removing NODE_RESTARY.
+
+ * sample/test.rb: updated for new assignment behavior.
+
+Wed Aug 27 22:33:24 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_bug): should not use other methods; this function is
+ not for ordinary use. [ruby-dev:21259]
+
+Wed Aug 27 15:07:57 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/smtp.rb (check_response): AUTH CRAM-MD5 returns 334
+ response. [ruby-list:38279]
+
+Wed Aug 27 05:10:15 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (map_errno): support winsock error.
+
+ * win32/win32.c (pipe_exec, CreateChild, poll_child_status, waitpid,
+ kill, link, rb_w32_rename, unixtime_to_filetime, rb_w32_utime):
+ pass errno to map_errno().
+
+ * win32/win32.c (rb_w32_select, rb_w32_accept, rb_w32_bind,
+ rb_w32_connect, rb_w32_getpeername, rb_w32_getsockname,
+ rb_w32_getsockopt, rb_w32_ioctlsocket, rb_w32_listen, rb_w32_recv,
+ rb_w32_recvfrom, rb_w32_send, rb_w32_sendto, rb_w32_setsockopt,
+ rb_w32_shutdown, rb_w32_socket, rb_w32_gethostbyaddr,
+ rb_w32_gethostbyname, rb_w32_gethostname, rb_w32_getprotobyname,
+ rb_w32_getprotobynumber, rb_w32_getservbyname, rb_w32_getservbyport,
+ rb_w32_fclose, rb_w32_close): use map_errno().
+
+ * win32/win32.h: add winsock errors.
+
+Tue Aug 26 23:53:23 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/ostruct.rb (OpenStruct::method_missing): prohibit modifying
+ frozen OpenStruct. [ruby-talk:80214]
+
+Tue Aug 26 20:03:50 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_tmpsrc): add the hook for source.
+ [ruby-list:38122]
+
+Tue Aug 26 15:59:53 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * implicit.c (syck_type_id_to_taguri): corrected detection of
+ x-private types.
+
+Sun Aug 24 01:02:48 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): performance improvement.
+ [ruby-talk:79748]
+
+Sat Aug 23 23:41:16 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * file.c (rb_file_s_expand_path): avoid calling rb_scan_args() for
+ apparent cases. [ruby-talk:79748]
+
+Sat Aug 23 18:56:53 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_putchar): should use rb_str_resize() to just
+ resize a string, rb_str_cat() disallows NULL. [ruby-dev:21237]
+
+Sat Aug 23 16:48:41 2003 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: bug fix for "foo" !~ /bar/. [ruby-talk:79942]
+
+Sat Aug 23 15:59:58 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_eval, rb_iterate, block_pass): reduce PUSH/POP_TAG and
+ EXEC_TAG() for retry. [ruby-dev:21216]
+
+Sat Aug 23 02:32:33 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_splat): should check if "values" is array.
+
+ * enum.c (each_with_index_i): typo.
+
+Fri Aug 22 17:07:05 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enum.c (inject_i): use rb_yield_values.
+
+ * enum.c (each_with_index_i): ditto.
+
+ * eval.c (rb_yield_splat): new function to call "yield *values".
+
+ * string.c (rb_str_scan): use rb_yield_splat().
+
+Fri Aug 22 06:13:22 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c: refactoring of the transfer method
+ dispatch. added yaml_org_handler for faster dispatch of
+ transfers to base types.
+
+ * lib/yaml/rubytypes.rb: removed handling of builtins from
+ Ruby library.
+
+ * ext/syck/token.c: quoted and block scalars are now implicit !str
+
+ * ext/syck/implicit.c: empty string detected as !null.
+
+Fri Aug 22 01:00:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (block_pass): improve passing current block.
+
+Fri Aug 22 00:13:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: Int. overflow bug in multiplication
+ fixed, and VpNmlz() speed up.
+
+Wed Aug 20 16:44:49 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/socket.c (ruby_connect): many systems seem to have
+ a problem in select() after EINPROGRESS. [ruby-list:38080]
+
+Wed Aug 20 01:31:17 2003 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/syck.h: Parser definition problems on HP-UX.
+ [ruby-talk:79389]
+
+ * ext/syck/handler.c (syck_hdlr_get_anchor): Memory leak.
+
+ * ext/syck/syck.s (syck_io_file_read): Bad arguments to fread.
+
+ * ext/syck/rubyext.c: Tainting issues.
+
+Tue Aug 19 23:20:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c .h .html: to_s("+") implemented.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: E implemented.
+
+Tue Aug 19 11:19:33 2003 Shugo Maeda <shugo@ruby-lang.org>
+
+ * io.c (next_argv): should not call GetOpenFile() if rb_stdout is
+ not a IO (T_FILE).
+
+Tue Aug 19 07:47:10 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/ssl.rb: new file; SSL/TLS enhancement for GenericServer.
+
+ * lib/webrick/https.rb: SSLSocket handling is moved to webrick/ssl.rb.
+
+ * lib/webrick/compat.rb (File::fnmatch): remove old migration code.
+
+ * lib/webrick/httpserver.rb (HTTPServer#run): ditto.
+
+ * lib/webrick/server.rb (GenericServer#listen): the body of this
+ method is pull out as Utils::create_lisnteners.
+
+ * lib/webrick/utils.rb (Utils::create_lisnteners): new method.
+
+ * lib/webrick/server.rb (GenericServer#start): should rescue
+ unknown errors. and refine comments.
+
+ * ext/openssl/lib/openssl/ssl.rb (SSLServer#accept): should close
+ socket if SSLSocket raises error.
+
+Tue Aug 19 07:47:09 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c: sync_close is moved to SSLSocket as
+ a builtin.
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#close): ditto.
+
+ * ext/openssl/lib/openssl/buffering.rb (Buffering#puts): should
+ add a return to the tails of each line.
+
+ * ext/openssl/lib/openssl/ssl.rb: new class OpenSSL::SSL::SSLServer.
+
+ * ext/openssl/lib/net/protocols.rb (SSLIO#ssl_connect): use sync_close.
+
+ * ext/openssl/sample/echo_svr.rb: use SSLServer.
+
+ * ext/openssl/sample/echo_cli.rb: add example of SSLSocket#sync_close.
+
+Tue Aug 19 01:24:34 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/curses/curses.c (_XOPEN_SOURCE_EXTENDED): Mac OS X standard
+ headers are inconsistent at this macro. [ruby-core:01432]
+
+ * ext/curses/extconf.rb: check if _XOPEN_SOURCE_EXTENDED breaks.
+
+ * ext/tcltklib/stubs.c: Status macro in X11/Xthreads.h bothers
+ winspool.h
+
+ * instruby.rb: make list at first instead of iterator.
+ [ruby-talk:79347]
+
+Mon Aug 18 11:23:11 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): preserve raw order for **.
+
+Sun Aug 17 23:39:55 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/extconf.rb (HAVE_VA_ARGS_MACRO): need to compile.
+
+Sun Aug 17 17:10:03 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/ssl.rb (SSLSocket#sync_close=): add a
+ method to specify if the underlying IO will be closed in
+ SSLSocket#close.
+
+ * ext/openssl/lib/openssl/buffering.rb: add forwarders to
+ setsockopt, getsockopt and fcntl.
+
+ * ext/openssl/lib/net/protocols.rb: enable sync for SSLSocket.
+
+Sun Aug 17 11:32:04 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): should not force to remake Makefile when
+ installation and so on.
+
+Sat Aug 16 23:58:18 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_symbol, w_object): get rid of warnings.
+
+ * re.c (rb_memsearch): ditto.
+
+ * time.c (time_dump): ditto.
+
+ * ext/extmk.rb (extmake): not continue making when extconf.rb
+ failed.
+
+ * ext/openssl/extconf.rb: check __VA_ARGS__ macro more precisely.
+
+ * ext/openssl/ossl.h: remove version.h dependency.
+
+ * ext/openssl/ruby_missing.h: ditto.
+
+ * lib/mkmf.rb (pkg_config): use --libs output except with
+ only-L for other options. [ruby-list:38099]
+
+ * lib/mkmf.rb (create_makefile): separate rule for static
+ library from shared object.
+
+ * win32/Makefile.sub, bcc32/Makefile.sub, wince/Makefile.sub:
+ define exec_prefix and libdir.
+
+Fri Aug 15 23:15:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c .h: Bug in combination of limit & div
+ method fixed.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: atan() & sqrt() added.
+
+Fri Aug 15 12:01:44 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (HUGE_ST_INO): check whether struct stat.st_ino
+ is larger than long. [ruby-dev:21194]
+ http://www.geocities.co.jp/SiliconValley-PaloAlto/1409/ruby/beos.html
+
+ * error.c (syserr_eqq): errno might exceed Fixnum limit.
+
+ * error.c (Init_Exception): moved base initialization from
+ init_syserr().
+
+ * inits.c (rb_call_inits): postpone initializing errnos until
+ Bignum is available.
+
+Fri Aug 15 12:01:43 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/curses/curses.c (_XOPEN_SOURCE_EXTENDED): needed to let
+ keyname() and so on be declared.
+
+ * ext/curses/curses.c (curses_resizeterm, window_resize):
+ arguments conflicted with macros in term.h.
+
+ * ext/curses/curses.c (Curses module methods): ensure
+ initialized. [ruby-dev:21191]
+
+Fri Aug 15 02:08:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (id2ref): recycle check should be done by klass == 0.
+ [ruby-core:01408]
+
+Fri Aug 15 01:34:23 2003 Michal Rokos <m.rokos@sh.cvut.cz>
+
+ * ext/openssl/ossl_pkey.c: move generate_cb here
+
+ * ext/openssl/ossl_pkey_{dh|dsa|rsa}.c: adapt to this cb
+
+ * ext/openssl/openssl_missing.[ch]: add (0.9.6x, x<j) missing BN funcs
+
+ * ext/openssl/ossl_bn.c: use supplied funcs from openssl_missing.c
+
+Fri Aug 15 00:38:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c: Bug in div method fixed.
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: Newly added.
+
+ * ext/bigdecimal/sample/pi.rb: Changed so as to use math.rb.
+
+Thu Aug 14 21:19:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_Thread): Continuation#[] added. [ruby-talk:79028]
+
+Thu Aug 14 20:03:34 2003 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (OLE_FREE): should not call
+ ole_message_loop.
+
+ * ext/win32ole/win32ole.c (ole_event_free): ditto.
+
+ * ext/win32ole/win32ole.c (ole_initialize): stop calling
+ OleUninitialize at exit.
+
+Thu Aug 14 11:27:37 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (rb_data_object_alloc): check type of 1st argument.
+ [ruby-dev:21192]
+
+Thu Aug 14 00:21:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (mlhs_node): should allow "::Foo" (colon3) as lhs.
+
+ * parse.y (lhs): ditto.
+
+ * parse.y (yylex): should return tCOLON3 right after kCLASS.
+ [ruby-talk:78918]
+
+ * error.c (exc_initialize): was converting argument to string too
+ eagerly. Only check was needed. [ruby-talk:78958]
+
+Wed Aug 13 23:31:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c .h .html: Ambiguity of
+ BigDecimal::limit removed.
+
+Wed Aug 13 19:21:34 2003 Christian Neukirchen <chneukirchen@yahoo.de>
+
+ * lib/webrick/https.rb (HTTPServer#run): should set syncing-mode
+ to SSLSocket. [ruby-talk:78919]
+
+Wed Aug 13 18:13:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (POP_BLOCK): turn on BLOCK_LEFT flag when leaving block.
+
+ * eval.c (proc_invoke): unpack return/break destination when block
+ is already left.
+
+Wed Aug 13 15:58:31 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * object.c (rb_class_s_alloc): add function prototype to avoid VC++
+ warning.
+
+Wed Aug 13 13:50:59 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Win32API/Win32API.c (Win32API_initialize): should pass some
+ class to first argument of Data_Wrap_Struct(). (ruby-bugs:PR#1109)
+
+Tue Aug 12 16:55:11 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in: static link libraries to LIBRUBY_SO with static linked
+ ext. [ruby-dev:21157]
+
+ * ext/extmk.rb (extmake): sort extension library initialization order.
+
+ * ext/extmk.rb (extmake): compact $extlibs.
+
+Tue Aug 12 02:48:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (THREAD_SAVE_CONTEXT): should explicitly turn off the
+ flag before calling getcontext(2).
+
+ * eval.c (struct thread): add member to save backing store on
+ IA64. (ruby-bugs PR1086)
+
+ * eval.c (thread_mark): mark IA64 backing store region.
+
+ * eval.c (thread_free): free saved IA64 backing store.
+
+ * eval.c (rb_thread_save_context): save IA64 backing store as well.
+
+ * eval.c (rb_thread_restore_context): restore IA64 backing store.
+
+ * eval.c (THREAD_ALLOC): initialize IA64 members.
+
+Mon Aug 11 22:31:50 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/debug.rb(debug_command): inspection command should inspect
+ resulting value even if it's nil. [ruby-dev:21180] by OMAE, jun
+ <jun66j5@ybb.ne.jp>.
+
+ * lib/debug.rb(debug_command): incomplete regexp.
+
+Mon Aug 11 17:33:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call_super): do not use rb_block_given_p() for
+ check. [ruby-talk:78656]
+
+ * eval.c (BEGIN_CALLARGS): push ITER_NOT only when ITER_PRE.
+
+Sun Aug 10 10:43:05 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/openssl/buffering.rb: increase BLOCK_SIZE
+ from 1k to 16k bytes. [ruby-talk:78603]
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_s_alloc): enable
+ partial write to allow interruption in SSLSocket#write.
+
+Sun Aug 10 00:34:16 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * cygwin/GNUmakefile: remove unnecessary '--drive-name=$(CC)'
+ for ccache.
+
+Sat Aug 9 10:36:21 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (w_object): do not dump generic instance variable when
+ marshal_dump is defined.
+
+Sat Aug 9 00:35:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal.c: F style output(like 1234.56789) implemented
+ to to_s method.
+ * ext/bigdecimal_??.html: F style output(like 1234.56789)
+ implemented to to_s method.
+
+Fri Aug 8 12:33:17 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * bcc32/Makefile.sub: rubyw.exe should be a Windows GUI program.
+ add the -aa option to WLDFLAGS.
+
+Fri Aug 8 11:29:26 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * marshal.c (w_object): should set `c_arg' at first.
+
+Fri Aug 8 03:22:28 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httputils.rb (FormData#list): should not take
+ a side effect for the receiver.
+
+Thu Aug 7 14:40:37 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * cygwin/GNUmakefile: better --disbale-shared option support.
+
+ * cygwin/GNUmakefile: add forwarding DLL target for cygwin.
+
+Thu Aug 7 14:21:05 2003 Corinna Vinschen <vinschen@redhat.com>
+
+ * configure.in: Fix Cygwin specific naming of libraries to
+ be net distribution compliant. (ruby-bugs:PR#1077)
+ cygwin-ruby18.dll -> cygruby18.dll
+
+Thu Aug 7 12:51:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_at_exit): should not be called without a block.
+ block_given check added.
+
+Thu Aug 7 06:46:06 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): forgot to pop ruby_class.
+
+ * eval.c (rb_call0): update ruby_class as well as ruby_cref.
+ (ruby-bugs-ja:PR#540)
+
+Thu Aug 7 04:52:50 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_yield_0): remove ruby_frame->cbase and unify to
+ ruby_cref. [ruby-talk:78141]
+
+Thu Aug 7 04:19:15 2003 Akinori MUSHA <knu@iDaemons.org>
+
+ * gc.c: FreeBSD/ia64's mcontext_t is a bit different from that of
+ Linux/ia64. This makes gc.c compile but miniruby coredumps for
+ the moment.
+
+Thu Aug 7 00:15:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
+
+ * ext/bigdecimal.c: Comparison results adjusted to Float's.
+ * ext/bigdecimal.c: Use rb_num_coerce_????(x,y) instead of own.
+
+Wed Aug 6 22:58:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/test/unit/testcase.rb: Added equality checking.
+ * lib/test/unit/testsuite.rb: Added equality checking.
+ * lib/test/unit/assertions.rb: Fixed a warning.
+
+Wed Aug 6 17:28:10 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): pass LIBPATH to make ruby. [ruby-dev:21137]
+
+ * ext/extmk.rb (extmake): set library name as source file name in
+ Init_ext(). [ruby-dev:21137]
+
+ * lib/mkmf.rb (Logging::postpone): postpone logging messages after
+ heading message as the result of the block.
+
+ * lib/mkmf.rb (macro_defined?): append newline to src unless ended
+ with it.
+
+ * lib/mkmf.rb (have_library): treat nil function name as "main".
+ (ruby-bugs:PR#1083)
+
+ * lib/mkmf.rb (pkg_config): should append additional libraries to
+ $libs but not $LIBS. [ruby-dev:21137]
+
+ * ext/io/wait/extconf.rb: check DOSISH macro instead of platform.
+
+ * ext/digest/sha1/extconf.rb: have_library already appends library
+ name.
+
+Wed Aug 6 17:23:57 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: initialize /* OK */ variables by Qnil to stop warnings.
+
+Wed Aug 6 04:58:32 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/Setup*: add io/wait and openssl.
+
+Wed Aug 6 01:13:38 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_f_autoload): use ruby_cbase instead of ruby_class.
+
+ * eval.c (rb_f_autoload_p): ditto.
+
+ * class.c (rb_mod_init_copy): no longer implements independent
+ clone and dup methods. override "initialize_copy" instead.
+ [ruby-core:01352]
+
+ * object.c (rb_class_s_alloc): define Class allocation function.
+ this makes Classes to follow clone framework that uses
+ initialize_copy.
+
+ * object.c (rb_class_initialize): separate instantiation and
+ initialization.
+
+ * object.c (rb_obj_alloc): prohibit instantiation from
+ uninitialized class.
+
+ * object.c (rb_class_superclass): check uninitialized class.
+
+ * array.c (rb_ary_fill): wrong index processing with block. this
+ fix was done by Koji Arai <JCA02266@nifty.ne.jp> [ruby-list:38029]
+
+ * marshal.c (w_object): should preserve generic ivar for nil,
+ true, false, symbols, and fixnums.
+
+ * marshal.c (w_uclass): base_klass check should be done after
+ rb_class_real().
+
+Wed Aug 6 01:18:50 2003 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: update document.
+
+ * lib/net/pop.rb: ditto.
+
+ * lib/net/protocol.rb: ditto.
+
+Wed Aug 6 00:48:37 2003 Koji Arai <jca02266@nifty.ne.jp>
+
+ * marshal.c (w_object): should recommend marshal_dump rather than
+ _dump_data.
+
+Tue Aug 5 17:58:57 2003 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * lib/fileutils.rb (install): should preserve timestamp only.
+
+Tue Aug 5 17:31:59 2003 Ian Macdonald <ian@caliban.org>
+
+ * lib/shell/command-processor.rb (Shell::CommandProcessor::rmdir):
+ simple typo.
+
+Tue Aug 5 15:47:34 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_load): should preserve current source file/line.
+
+Tue Aug 5 10:04:42 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (str_new4): ptr may refer to null_str.
+
+Mon Aug 4 17:25:18 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.8.0 released.
+
+For the changes before 1.8.0, see doc/ChangeLog-1.8.0
+
+Local variables:
+add-log-time-format: (lambda ()
+ (let* ((time (current-time))
+ (system-time-locale "C")
+ (diff (+ (cadr time) 32400))
+ (lo (% diff 65536))
+ (hi (+ (car time) (/ diff 65536))))
+ (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t)))
+indent-tabs-mode: t
+tab-width: 8
+end:
diff --git a/doc/ChangeLog-2.0.0 b/doc/ChangeLog-2.0.0
new file mode 100644
index 0000000000..a1a79b8dca
--- /dev/null
+++ b/doc/ChangeLog-2.0.0
@@ -0,0 +1,24015 @@
+Fri Feb 8 19:56:54 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * array.c (rb_ary_dup): reverted r39004. see [Bug #7768], and
+ release manager finally decided to revert it.
+
+Fri Feb 8 16:09:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_ensure): preserve errinfo across ensure proc before
+ JUMP_TAG(). [ruby-core:52022] [Bug #7802]
+
+Fri Feb 8 16:08:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_separately): check also terminating
+ signal not only if core dumped.
+
+Fri Feb 8 13:12:04 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generator/darkfish.rb: Set encoding on output template to
+ user-specified encoding.
+ * test/rdoc/test_rdoc_generator_darkfish.rb: Test for above.
+
+ * lib/rdoc.rb: Bump version
+
+Fri Feb 8 11:53:33 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/security/policy.rb: Raise proper exceptions when
+ verifying unsigned gems (instead of crashing).
+ * test/rubygems/test_gem_security_policy.rb: Tests for the above.
+
+Fri Feb 8 10:44:44 2013 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/test_gem_dependency_installer.rb: Improve coverage of
+ --install-dir feature of gem install.
+
+Fri Feb 8 10:11:09 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/config_file.rb: Add missing require for
+ user_interaction.rb
+
+ * lib/rubygems/dependency_installer.rb: Minor refactor for clarity.
+
+Fri Feb 8 09:35:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#configuration): set all ruby names.
+ hdrdir now needs RUBY_VERSION_NAME.
+
+Fri Feb 8 08:58:26 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package/old.rb: Fix loading old format gems on ruby
+ 1.8. This commit is only so trunk and rubygems master have the same
+ code.
+
+Fri Feb 8 08:53:27 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: fixing string quotation
+ when dumping Ruby strings. Thanks Ingy
+
+ * test/psych/test_psych.rb: appropriate tests.
+
+ * test/psych/test_yaml.rb: ditto
+
+Fri Feb 8 08:50:42 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: change output reference
+ ids to be sequential numbers.
+
+Fri Feb 8 07:47:56 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package/old.rb: Disallow installation of old-format
+ gems when a security policy is active.
+ * test/rubygems/test_gem_package_old.rb: Test for above.
+
+Fri Feb 8 07:34:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/net/http.rb (HTTP.post_form): Fix module scope in documentation
+ Patch by David Albert [Bug #7794] [ruby-core:51955]
+
+Fri Feb 8 07:33:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * compar.c (cmp_equal): Document ignored exception and return false
+ By Makoto Kishimoto [Bug #7790] [ruby-dev:46925] [ruby-dev:46910]
+
+Fri Feb 8 07:17:00 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Only install local gems if
+ they end in '.gem'. Fixes github rubygems issue #407.
+ * test/rubygems/test_gem_dependency_installer.rb: Test for the above.
+
+Fri Feb 8 00:02:48 2013 Tanaka Akira <akr@fsij.org>
+
+ * process.c (obj2gid): use getgrnam_r() only if getgrnam_r() and
+ _SC_GETGR_R_SIZE_MAX is available.
+ MirOS BSD (MirBSD 10 GENERIC#1382 i386) have getgrnam_r() but
+ no _SC_GETGR_R_SIZE_MAX.
+ (obj2uid): use getpwnam_r() only if getpwnam_r() and
+ _SC_GETPW_R_SIZE_MAX is available.
+ This is consistency for obj2gid.
+ MirOS BSD have neither getpwnam_r() nor _SC_GETPW_R_SIZE_MAX.
+
+Thu Feb 7 22:01:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: define linker for shared library on MirOS BSD.
+
+Thu Feb 7 21:09:23 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_config_file.rb
+ (TestGemConfigFile#test_check_credentials_permissions): skip on
+ Windows. see [Bug #7784] [ruby-core:51864] and r39070.
+
+Thu Feb 7 20:52:40 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (config.status): added variables which were
+ missing at r39130.
+
+Thu Feb 7 15:33:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#merge_libs): insert following reversal
+ ordered elements just after the duplicated element, not overwriting
+ successive elements. [ruby-core:50314] [Bug #7467]
+
+Thu Feb 7 14:56:15 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb: Ensure digests are generated for signing.
+ * test/rubygems/test_gem_package.rb: Test for the above.
+
+ * lib/rubygems/security/policy.rb: Ensure digests are present when
+ verifying a gem and match the number of signatures bidirectionally.
+ * test/rubygems/test_gem_security_policy.rb: Test for the above.
+
+ * lib/rubygems.rb: Documentation improvements (by zzak)
+
+Thu Feb 7 05:52:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/pty/README: Remove static documentation file
+ * ext/pty/pty.c: Add License to PTY module overview
+
+Thu Feb 7 02:31:10 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * vm_insnhelper.c: attr_writer should return its argument [Bug #7773]
+
+ * test/ruby/test_basicinstructions.rb: Test for above
+
+Thu Feb 7 01:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/security.rdoc: Link to japanese version of CVE page patch by
+ nagachika
+
+Wed Feb 6 23:30:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/pty/README.expect: Removed static documentation file
+ * ext/pty/lib/expect.rb: Documentation for IO#expect
+
+Wed Feb 6 22:25:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * hash.c (env_reject_bang): hide keys array from ObjectSpace
+ * hash.c (env_select_bang): ditto
+
+Wed Feb 6 17:33:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (multiarch): add option to move architecture dependent
+ directories. [Feature #6111]
+
+ * template/ruby.pc.in: add arch dependent paths.
+
+ * configure.in (rubyarchhdrdir, sitearchhdrdir, vendorarchhdrdir): add
+ options to customize architecture dependent header directories.
+
+ * configure.in (rubyarchprefix, sitearchdir, vendorarchdir): add
+ options to customize architecture dependent library directories.
+
+ * template/ruby.pc.in, tool/mkconfig.rb, tool/rbinstall.rb: use
+ configured values.
+
+ * tool/mkconfig.rb: expand rubyarchdir to extract prefix.
+
+ * configure.in (RUBY_VERSION_NAME), template/ruby.pc.in: add
+ substitution and define.
+
+ * configure.in, version.c: parametric architecture name for paths.
+
+ * configure.in (shvar_to_cpp): convert sh variable references
+ by replacing with string literal forms in cpp.
+
+Wed Feb 6 17:05:26 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 4.0.0.rc.2
+
+Mon Feb 4 02:22:49 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_process.rb (test_setsid): ensure to call
+ Process.wait(). Reported by George Koehler. Thanks.
+
+Mon Feb 4 02:18:00 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_process.rb (test_setsid): skip when platform is
+ OpenBSD. Contributed from George Koehler.
+ [Bug #7789] [ruby-core:51889]
+
+Wed Feb 6 13:35:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_method_entry_location, rb_{mod,obj}_method_location): new
+ functions to obtain source location of method definition.
+
+ * vm_method.c (rb_obj_respond_to): show the location of old style
+ respond_to? method.
+
+Wed Feb 6 13:03:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/security.rdoc: Add link to CVEs on ruby-lang.org/en/security
+
+Wed Feb 6 12:49:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * NEWS: Add note about removal of CSV::load and CSV::dump from r39077
+
+Wed Feb 6 05:57:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/racc/parser.rb: Hide copyright notice from Racc doc
+
+Wed Feb 6 05:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/rubygems/*: Removed outdated documentation files
+ * lib/rubygems/LICENSE.txt: Include license file
+ * lib/rubygems.rb: Move Gem module documentation so rdoc can parse it
+ and link to LICENSE.txt
+ * lib/rubygems/*: Hide useless documentation from Gem module rdoc
+
+Wed Feb 6 03:45:19 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/security.rdoc: Remove documentation for unsafe CSV.load which
+ was deleted in r39077
+
+Wed Feb 6 03:27:19 2013 James Edward Gray II <james@graysoftinc.com>
+
+ * lib/csv.rb: Remove the dangerous serialization feature.
+
+Wed Feb 6 00:56:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb.rb: Remove example from restrictions, it works [Github #246]
+ Based on patch by Ryunosuke SATO
+
+Wed Feb 6 00:46:53 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_vm_stack_to_heap): call rb_vm_get_binding_creatable_next_cfp
+ instead of rb_vm_get_ruby_level_next_cfp to prevent a segfault by
+ calling Kernel#callcc. See r39067 for more details.
+ [ruby-dev:46908] [ruby-trunk - Bug #7774]
+
+ * test/ruby/test_settracefunc.rb: add a test.
+
+Tue Feb 5 18:48:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * doc/security.rdoc: add regex, eval and drb sections
+
+Tue Feb 5 17:24:02 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/servlet.rb: Fixed root search paths, filesystem paths
+ instead of HTTP paths were returned.
+ * test/rdoc/test_rdoc_servlet.rb: Test for above.
+
+Tue Feb 5 16:37:00 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/config_file.rb: Ignore permissions check on windows.
+ Windows writes 0600 file as 0644 permissions making the check
+ useless.
+
+Tue Feb 5 16:25:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_obj_respond_to): drop optional include_all flag if
+ respond_to? method is defined in old style. [Bug #7722]
+
+Tue Feb 05 15:04:34 2013 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c (rb_binding_new_with_cfp): permit to create binding object
+ of IFUNC frame.
+ When `rb_binding_new_with_cfp()' is called, VM finds out the first
+ normal (has iseq) frame and create a binding object of this frame
+ and create Env objects. `ep's of related frames are updated
+ (`ep's point Env object managed spaces).
+ However, `ep' of skipped IFUNC frame was not updated and
+ old invalid `ep' was remained. It causes serious problems.
+ To solve this issue, permit IFUNC to create binding.
+ (Maybe there is no problem on it)
+ [ruby-dev:46908] [ruby-trunk - Bug #7774]
+
+ * test/ruby/test_settracefunc.rb: add a test.
+
+ * vm.c (rb_vm_get_binding_creatable_next_cfp), vm_core.h: added.
+
+ * vm_trace.c: fix to use `rb_vm_get_binding_creatable_next_cfp()'.
+
+Tue Feb 5 14:43:15 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Fix error message, patch by pypypy [Bug #7777]
+
+Tue Feb 5 14:36:04 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (fix_pow): Handle special cases when base is 0, -1 or +1
+ [Bug #5713] [Bug #5715]
+
+ * rational.c (nurat_expt): ditto
+
+Tue Feb 5 13:27:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (rawmode_opt): use default values by `stty
+ raw`.
+
+Tue Feb 5 12:50:47 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * range.c: Use div instead of / for bsearch
+
+ * test/ruby/test_range.rb: Test showing bug when requiring mathn
+
+Tue Feb 5 12:48:38 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Use to_enum for Enumerable methods returning
+ Enumerators.
+ This makes Lazy#cycle no longer needed, so it was removed.
+ Make Enumerator#chunk and slice_before return lazy Enumerators.
+ [Bug #7715]
+
+ * internal.h: Remove ref to rb_enum_cycle_size; no longer needed
+
+ * enum.c: Make enum_cycle_size static.
+
+ * test/ruby/test_lazy_enumerator.rb: Test for above
+
+Tue Feb 5 12:48:10 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Finalize and document Lazy.new. [Bug #7248]
+ Add Lazy#to_enum and simplify Lazy#size.
+
+ * test/ruby/test_lazy_enumerator.rb: tests for above
+
+Tue Feb 5 11:35:35 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/push_command.rb: Fixed credential download for
+ `gem push --host`
+ * lib/rubygems/gemcutter_utilities.rb: ditto.
+ * test/rubygems/test_gem_commands_push_command.rb: Test for the above.
+ * test/rubygems/test_gem_gemcutter_utilities.rb: ditto.
+
+ * lib/rubygems/config_file.rb: Abort if the `gem push` credentials
+ file has insecure permissions.
+ * test/rubygems/test_gem_config_file.rb: Test for the above.
+
+ * lib/rubygems/ext/builder.rb: Do not look for Gemfile, Isolate, etc.
+ while building gem extensions.
+
+ * lib/rubygems/package.rb: Unset spec and files list if a gem's
+ signatures cannot be verified.
+ * test/rubygems/test_gem_package.rb: Test for the above.
+
+ * lib/rubygems/specification.rb: Reduce use of eval.
+ * lib/rubygems/test_case.rb: ditto.
+
+ * test/rubygems/test_gem_specification.rb: Test setting
+ specification_version for legacy gems. Dup Gem.ruby before
+ untainting in case it's frozen.
+
+ * lib/rubygems.rb: Reduce use of eval. Only read files when looking
+ for Gemfile, Isolate, etc.
+ * test/rubygems/test_gem.rb: Test for the above.
+
+Tue Feb 5 10:15:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/security.rdoc: Wrap security guide at 80 columns
+
+Tue Feb 5 10:15:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/security.rdoc: Grammatical error on security guide
+ Patch by Josh Bassett [Github fixes #245]
+
+Tue Feb 5 10:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/racc/parser.rb: Update #do_parse and #yyparse from upstream
+ See [Github tenderlove/racc@7d954b5]
+
+Tue Feb 5 09:55:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/racc: Merge Racc documentation downstream, add grammar ref file
+
+Tue Feb 5 08:03:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb.rb, lib/irb/ext/save-history.rb: Add documentation on how to
+ enabled irb history [ruby-core:51347] [Bug #7679]
+
+Tue Feb 5 07:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb.rb, lib/irb/context.rb: Add documentation on how to enable
+ auto-indentation and autocompletion using irbrc and irb_context
+ [ruby-core:51209] [Bug #7642] and [ruby-core:51348] [Bug #7680]
+
+Tue Feb 5 05:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/standard_library.rdoc: Document list of libraries and extensions
+ and their purpose or short description
+ * lib/README: Remove lib/README in favor of doc/standard_library.rdoc
+
+Tue Feb 5 04:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/json/lib/json.rb: Move module overview definition for rdoc
+
+Tue Feb 5 03:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/tracer.rb: Move class overview definition and reformat
+
+Mon Feb 4 15:10:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (rawmode_opt): initialize options for the
+ case all options are not given.
+
+Mon Feb 4 12:44:13 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c (control_frame_dump): capitalize prefix of `ep'
+ if `ep' points an env object.
+
+Mon Feb 4 04:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/English.rb: Add English module for RDoc to parse, then
+ remove_const to avoid confusion. Include full list of aliases and
+ their associated global variable.
+
+Mon Feb 4 02:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/yaml.rb (YAML::EngineManager): Documentation for #yamler and
+ #yamler= for using the removed Syck gem as the YAML::ENGINE
+
+Sun Feb 3 16:54:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/io-console.gemspec: bump. [Bug #7762]
+
+ * test/io/console/test_io_console.rb (test_stringio_getch): use more
+ descriptive assertions.
+
+ * ext/io/console/console.c (rawmode_opt): min is minimum characters,
+ not tenths.
+
+Sun Feb 3 16:13:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * doc/security.rdoc: add first cut at a Ruby security document
+
+Sun Feb 3 10:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * random.c: Document range argument for Kernel#rand.
+ [ruby-core:51794] [Bug #7770]
+
+Sun Feb 3 10:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * numeric.c: Document Float constants [ruby-core:51484] [Bug #7709]
+
+Sun Feb 3 09:38:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/profiler.rb (PROFILE_CALL_PROC, PROFILE_RETURN_PROC): add b_call
+ and b_return to profile block calls.
+
+ * lib/profiler.rb (PROFILE_CALL_PROC, PROFILE_RETURN_PROC): split
+ PROFILE_PROC for call and return events.
+
+Sat Feb 2 14:32:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/minitest/mock.rb, lib/minitest/hell.rb: nodoc top-level module
+
+Sat Feb 2 14:05:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/debug.rb: Documentation for DEBUGGER__ class methods based on
+ patch by Vincent Batts [ruby-core:51253]
+
+Sat Feb 2 13:37:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/net/smtp.rb: Fix rdoc title for Net::SMTP
+
+Sat Feb 2 13:32:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/net/pop.rb: Fix rdoc title for Net::POP3
+
+Sat Feb 2 13:00:11 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/gserver.rb (GServer#start): fix a timing issue. patch from
+ Charles Nutter. [Bug #7081]
+
+Sat Feb 2 12:36:54 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/fileutils.rb (copy_entry, wrap_traverse): preserve attributes of
+ directories on FileUtils.cp_r. The fix was proposed by Jan
+ Wedekind. [Bug #7246]
+
+ * test/fileutils/test_fileutils.rb: add a test for above.
+
+Sat Feb 2 12:30:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/uri/ftp.rb (URI::FTP.new2): nodoc method from r39013 [Bug #7301]
+
+Sat Feb 2 12:15:36 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/uri/ftp.rb (URI::FTP.new2): remove the rdoc because it is not
+ well tested yet. [Bug #7301]
+
+Sat Feb 2 12:07:41 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * ChangeLog: Forgot to add a reference to the ChangeLog of the
+ previous commit.
+
+Sat Feb 2 12:05:18 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/fileutils.rb: chmod/chmod_R with a string mode (e.g., "+x")
+ caused error in verbose mode. [Bug #7373]
+
+ * test/fileutils/test_fileutils.rb: add a test for above.
+
+Sat Feb 2 11:44:42 2013 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/English.rb: Remove some confusing words from rdoc. [Bug #7406]
+
+Sat Feb 2 10:17:12 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * NEWS: add keyword arguments.
+
+Sat Feb 2 07:45:44 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c (proc_curry): Fix arity check [Bug #5747]
+
+ * test/ruby/test_proc.rb: Test for above
+
+Sat Feb 2 07:44:15 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c: Add {*}_min_max_arity and refactor.
+ [Bug #7765]
+
+ * test/ruby/test_proc.rb: Fix wrong test
+
+Fri Feb 2 00:46:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * marshal.c: add security considerations to marshal overview, refer to
+ overview from Marshal.load documentation [#7759]
+
+Fri Feb 1 23:04:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * array.c (rb_ary_dup): make returned array the same class as the original
+ array [Bug #7768] [ruby-core:51792]
+ * test/ruby/test_array.rb (class TestArray): add test
+
+Fri Feb 1 16:35:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): prohibit setting instance variables of
+ existing class/module.
+
+Fri Feb 1 14:34:29 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/extconf.rb, ext/readline/readline.c: check
+ RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE directly in
+ readline.c. Patch by Zachary Scott. [Bug #7397] [ruby-core:49561]
+
+Thu Jan 31 21:55:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * marshal.c (marshal_load): Add documentation warning against using
+ Marshal.load on untrusted data [Bug #7759] [ruby-core:51765]
+
+Thu Jan 31 16:33:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (local_push_gen): no assigned but unused variable warnings
+ in eval as well as -e. [Feature #7730] [ruby-core:51580]
+
+Wed Jan 30 12:30:08 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_signal.rb (test_trap_puts): Fix typo. "sync"
+ should be "STDOUT.sync".
+
+Thu Jan 31 15:39:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * string.c (rb_str_aset_m): Documentation for String#[]= fix
+ Raises an IndexError if Regexp match is out of range.
+ Github fixes #243 Patch by Dmtiriy Budnik
+
+Thu Jan 31 13:54:44 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (rsock_unix_sockaddr_len): return
+ sizeof(sa_family_t) if path is empty. see "Autobind Feature" in
+ unix(7) for details.
+
+ * ext/socket/lib/socket.rb (unix_socket_abstract_name?): treat an
+ empty path as an abstract name.
+
+ * test/socket/test_unix.rb: related test.
+
+Wed Jan 30 20:58:50 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/basicsocket.c (bsock_getsockname): ignore truncated
+ part of socket address.
+ (bsock_getpeername): ditto.
+ (bsock_local_address): ditto.
+ (bsock_remote_address): ditto.
+
+ * ext/socket/unixsocket.c (unix_path): ditto.
+ (unix_addr): ditto.
+ (unix_peeraddr): ditto.
+
+ * ext/socket/init.c (cloexec_accept): ditto.
+
+Wed Jan 30 17:08:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (fstat): revert r37337, which uses _fstati64()
+ instead of fstati64() on mingw32. [Bug #7276]
+
+Wed Jan 30 15:26:37 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/unixsocket.c (rsock_init_unixsock): use rb_inspect()
+ because rb_sys_fail_str() fails if its argument contains NUL.
+
+ * test/socket/test_unix.rb: related test.
+
+Wed Jan 30 15:21:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): show the most important message, Crash
+ Report log information, first.
+
+Wed Jan 30 15:00:05 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_bsearch): Raise TypeError on bad return from block
+
+ * range.c (range_bsearch): ditto
+
+ * test/ruby/test_array.rb (class): Test for above
+
+ * test/ruby/test_range.rb (class): ditto
+
+Wed Jan 30 14:46:28 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * range.c: Restrict bsearch to integers [#7728]
+
+ * test/ruby/test_range.rb: Test for above
+
+Wed Jan 30 14:10:52 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * array.c (rb_ary_bsearch): Return enumerator if no block [#7725]
+
+ * range.c (range_bsearch): ditto
+
+ * test/ruby/test_array.rb: Test for above
+
+ * test/ruby/test_range.rb: ditto
+
+Wed Jan 30 13:53:43 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Take conjugate for inner product
+ [rubyspec:5a01ad5719f2] [ruby-dev:46101]
+
+Wed Jan 30 13:22:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (local_push_gen): warn assigned but unused variables also in
+ toplevel, except for -e option. [Feature #7730] [ruby-core:51580]
+
+Wed Jan 30 13:17:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * cont.c (cont_restore_thread): svar should be separate per fibers.
+ [ruby-core:51331] [Bug #7678]
+
+Wed Jan 30 07:15:04 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * re.c (reg_operand): Simplify and reuse error handling [Bug #7539]
+
+ * test/ruby/test_regexp.rb: Test for above
+
+Wed Jan 30 07:00:16 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * object.c: Improve error for failed implicit conversions [Bug #7539]
+
+ * error.c: Adapt rdoc
+
+ * test/ruby/test_object.rb: Test for above
+
+Tue Jan 29 21:40:12 2013 Tanaka Akira <akr@fsij.org>
+
+ * lib/net/http/generic_request.rb (encode_multipart_form_data): remove
+ tempfile explicitly.
+
+Tue Jan 29 19:27:18 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * array.c: Improve documentation about
+ comparison by hash for concerned methods. [ruby-core:51266]
+
+Tue Jan 29 17:03:28 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: fix issue of rb_debug_inspector_open().
+ The order of making binding should be stack (frame) top to bottom.
+ [Bug #7635]
+ And also fix issue of collecting klass. Collecting klass is same
+ as TracePoint#defined_class.
+ (previous version, it returns T_ICLASS (internal objects).
+
+ * test/-ext-/debug/test_debug.rb: add a test.
+
+ * ext/-test-/debug/extconf.rb, init.c, inspector.c: ditto.
+
+ * vm_backtrace.c: remove magic number and add enum CALLER_BINDING_*.
+
+ * vm_backtrace.c, include/ruby/debug.h: add new C api (experimental)
+ rb_debug_inspector_frame_self_get().
+
+ * vm.c, vm_core.h, vm_trace.c: move decl. of
+ rb_vm_control_frame_id_and_class() and constify first parameter.
+
+Tue Jan 29 16:50:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_trace.c (rb_tracepoint_enable, rb_tracepoint_disable): check safe
+ level as well as set_trace_func.
+
+ * vm_trace.c (set_trace_func, thread_{add,set}_trace_func_m): check
+ safe level as well as 1.8.
+
+Tue Jan 29 16:49:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_mod_method_arity): return original arity of the method if
+ aliased because of visibility change, like as Method#arity.
+
+Tue Jan 29 12:05:18 2013 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_marshal.rb: remove temporally files early.
+
+ * test/ruby/test_process.rb: ditto.
+
+ * test/psych/test_exception.rb: ditto.
+
+Tue Jan 29 09:26:20 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): calculate the
+ correct address length of an abstract socket.
+
+ * test/socket/test_unix.rb: related test.
+
+Mon Jan 28 18:02:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_backtrace.c (rb_debug_inspector_frame_{class,binding,iseq}_get):
+ use long as index as well as RARRAY_LEN().
+
+Mon Jan 28 17:51:38 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_separately): imply no core dump.
+
+Mon Jan 28 12:32:31 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/fcntl/fcntl.c: update document. use "file descriptor" instead
+ of "file handle" because it is not used other Ruby documents and
+ it is confusing with Windows file handle.
+ correct F_DUPFD behavior.
+
+Sat Jan 26 22:39:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object): dump instance variables of the result of
+ marshal_dump not the original object. [ruby-core:51163] [Bug #7627]
+
+ * complex.c (nucomp_marshal_dump): need to copy instance variables.
+
+ * rational.c (nurat_marshal_dump): ditto.
+
+Sat Jan 26 13:35:56 2013 Eric Hodel <drbrain@segment7.net>
+
+ * ext/fcntl/fcntl.c: Document Fcntl constants
+
+Sat Jan 26 12:54:40 2013 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c (rb_env_size): Restored documentation for ENV.size
+
+ * lib/drb/drb.rb: Documented DRb::DRb#run.
+
+ * lib/erb.rb (class ERB): Improved documentation of ERb.
+
+ * transcode.c: Documented Encoding::Converter constants.
+
+Sat Jan 26 10:09:57 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/accesslog.rb: Improved WEBrick documentation.
+ * lib/webrick/cgi.rb: ditto.
+ * lib/webrick/config.rb: ditto.
+ * lib/webrick/cookie.rb: ditto.
+ * lib/webrick/httpauth/authenticator.rb: ditto.
+ * lib/webrick/httpauth/basicauth.rb: ditto.
+ * lib/webrick/httpauth/digestauth.rb: ditto.
+ * lib/webrick/httpproxy.rb: ditto.
+ * lib/webrick/httprequest.rb: ditto.
+ * lib/webrick/httpresponse.rb: ditto.
+ * lib/webrick/https.rb: ditto.
+ * lib/webrick/httpserver.rb: ditto.
+ * lib/webrick/httpservlet/cgihandler.rb: ditto.
+ * lib/webrick/httpservlet/filehandler.rb: ditto.
+ * lib/webrick/httpservlet/prochandler.rb: ditto.
+ * lib/webrick/httputils.rb: ditto.
+ * lib/webrick/httpversion.rb: ditto.
+ * lib/webrick/log.rb: ditto.
+ * lib/webrick/server.rb: ditto.
+ * lib/webrick/ssl.rb: ditto.
+ * lib/webrick/utils.rb: ditto.
+ * lib/webrick/version.rb: ditto.
+
+Sat Jan 26 08:29:33 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/raddrinfo (rsock_unix_sockaddr_len): renamed from
+ rsock_unixpath_len, because it returns not the length of the path,
+ but the length of a socket address for the path.
+
+Sat Jan 26 01:12:23 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (test_ioctl_linux): skip if a platform is
+ not x86 because linux ioctl request number depend on cpu arch.
+ At least, alpha, mips, sparc and ppc have a different number.
+ [Bug #7718] [ruby-core:51544]
+
+Fri Jan 25 19:14:24 2013 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c: use TlsAlloc instead of __declspec(thread)
+ to avoid SEGV if win32ole.so loaded with LoadLibrary in Windows
+ XP or earlier.
+
+Fri Jan 25 16:47:31 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/socket/raddrinfo.c (rsock_unixpath_len, init_unix_addrinfo),
+ ext/socket/unixsocket.c (unixsock_connect_internal,
+ rsock_init_unixsock): calculate the correct address length of
+ an abstract socket. Without this fix, sizeof(struct sockaddr_un)
+ is specified as the length of an abstract socket for bind(2) or
+ connect(2), so the address of the socket is filled with extra NUL
+ characters. See unix(7) for details.
+
+ * ext/socket/lib/socket.rb (unix_server_socket): don't access the
+ file system if the platform is Linux and path starts with NUL,
+ which means that the socket is an abstract socket.
+
+ * test/socket/test_unix.rb: related test.
+
+Fri Jan 25 13:02:27 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/drb/drb.rb: Updated documentation based on patch from Vincent
+ Batts. [ruby-trunk - Bug #7714]
+ * lib/drb/ssl.rb: ditto.
+
+Fri Jan 25 12:23:29 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/drb/drb.rb: Improved documentation by adding or hiding methods.
+ * lib/drb/eq.rb: ditto.
+ * lib/drb/extserv.rb: ditto.
+ * lib/drb/gw.rb: ditto.
+ * lib/drb/invokemethod.rb: ditto.
+ * lib/drb/observer.rb: ditto.
+ * lib/drb/ssl.rb: ditto.
+ * lib/drb/timeridconv.rb: ditto.
+ * lib/drb/unix.rb: ditto.
+
+ * sample/drb/gw_cu.rb: Fixed bug in DRb gateway sample.
+
+Fri Jan 25 12:01:56 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: modify a comment about rb_iseq_t::local_size.
+ A patch by davidbalbert (David Albert) [Bug #6750]
+
+Fri Jan 25 10:36:31 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Documented MakeMakefile constants. Hide implementation
+ details from RDoc
+
+Fri Jan 25 10:04:07 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/compatibility.rb: Hide compatibility shims from RDoc
+
+ * lib/rubygems/config_file.rb: Hide RbConfig use from RDoc
+
+ * lib/rubygems/test_case.rb: Added note to use realpath when 1.8
+ support is dropped.
+
+Fri Jan 25 09:14:43 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generator/darkfish.rb: Fixed debug message. RDoc bug #174
+ by Thomas Leitner.
+
+ * lib/rdoc/store.rb: Fixed deletion of ri attribute data when a class
+ was loaded then saved. RDoc bug #171 by Thomas Leitner.
+ * test/rdoc/test_rdoc_store.rb: Test for above.
+
+Thu Jan 24 19:55:25 2013 Shota Fukumori <her@sorah.jp>
+
+ * NEWS (yaml): Write about bundled libyaml.
+
+Thu Jan 24 16:54:34 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/calling_methods.rdoc: Added a Method Lookup section.
+ * doc/syntax/refinements.rdoc (Method Lookup): Clarified that
+ refinement methods are looked up in classes, not instances.
+
+Thu Jan 24 16:49:17 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enum.c (enum_zip): Fix error message
+
+ * array.c (take_items): Same, for Array#zip
+
+Thu Jan 24 16:47:26 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c (lazy_zip): raise error for bad arguments
+ [Bug #7706]
+
+Thu Jan 24 16:05:08 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Optimize Lazy#zip when passed only arrays
+ [Bug #7706]
+
+Thu Jan 24 15:21:17 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Fix state handling for Lazy#zip,{drop_take}{_while}
+ [bug #7696] [bug #7691]
+
+Thu Jan 24 11:43:47 2013 Narihiro Nakamura <authornari@gmail.com>
+
+ * eval.c (f_current_dirname): Add documentation about "__dir__
+ returns always an absolute path". [Bug #7729]
+
+Thu Jan 24 10:28:30 2013 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS (RDoc): Added mention of page support and markdown support.
+
+Thu Jan 24 09:40:13 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/refinements.rdoc: Added refinements document based on
+ the specification from the wiki.
+ * doc/syntax.rdoc: Added link to refinements document.
+
+Wed Jan 23 16:29:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn_flags): fix missing
+ initialization. pointed out by phasis68 (Heesob Park) at
+ [ruby-core:51579]. [Bug #7721]
+
+Wed Jan 23 16:18:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#try_constant): fix for large unsigned.
+
+ * lib/mkmf.rb (MakeMakefile#try_constant): fix for larger constants.
+
+ * test/mkmf/test_constant.rb: tests for try_constant.
+ TODO: define check_constant and use it.
+
+Wed Jan 23 13:35:37 2013 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (ruby_init_stack): ignore `STACK_END_ADDRESS'
+ if Ruby interpreter is running on co-routine.
+ [Feature #2294]
+ https://bugs.ruby-lang.org/issues/2294#note-18
+
+Wed Jan 23 12:28:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn_flags): check the results
+ of acp_to_wstr() which can return NULL. [ruby-core:51557] [Bug #7721]
+
+Wed Jan 23 10:40:49 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/assignment.rdoc (Implicit Array Assignment): Clarify
+ that "left-hand side" means "of the assignment". Suggested by Jorge
+ Dias.
+ * doc/syntax/assignment.rdoc (Multiple Assignment): ditto.
+
+Wed Jan 23 10:34:47 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/assignment.rdoc (Local Variables and Methods): Fixed
+ example showing caching of a method's results into a local variable.
+ Added not about using an explicit receiver to call a method that
+ matches a local variable. Suggested by markov_twain on twitter.
+
+Wed Jan 23 10:20:08 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/README: Fixed typo. Patch by Pradeep Sahoo.
+ Fixes #240 on github
+
+Wed Jan 23 09:53:39 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/servlet.rb: Fixed display of site and home documentation.
+ Fixes rdoc issue #170 by Thomas Leitner.
+ * test/rdoc/test_rdoc_servlet.rb: Test for above.
+
+ * lib/rdoc/code_object.rb: Split #initialize_visibility from
+ #initialize for reuse when loading a stored object.
+ Fixes rdoc issue #171 by Thomas Leitner.
+
+ * lib/rdoc/any_method.rb: Initialize visibility for #display? For
+ rdoc issue #171
+ * lib/rdoc/attr.rb: ditto.
+ * lib/rdoc/class_module.rb: ditto.
+ * lib/rdoc/top_level.rb: ditto.
+ * test/rdoc/test_rdoc_any_method.rb: Test for above.
+ * test/rdoc/test_rdoc_attr.rb: ditto.
+ * test/rdoc/test_rdoc_class_module.rb: ditto.
+ * test/rdoc/test_rdoc_constant.rb: ditto.
+ * test/rdoc/test_rdoc_top_level.rb: ditto.
+
+Wed Jan 23 06:43:26 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/test_case.rb: Use Dir.tmpdir for rubygems tests instead
+ of ./tmp/test. Fixes [ruby-trunk - Bug #7717]
+
+Tue Jan 22 22:58:03 2013 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el (ruby-electric-curlies): Fix the bug where
+ an open curly inserted in a string is always replaced with a
+ hash sign.
+
+Mon Jan 21 15:41:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb: BASERUBY is transient at core build.
+
+Mon Jan 21 13:51:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb ($extmk): traverse parent directories for the case
+ srcdir is a symlink.
+
+Sun Jan 20 23:55:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object, r_object0): separate respond_to checks and
+ calling, and get back to the old behavior for 2.0. [Bug #7564]
+
+Sun Jan 20 22:24:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/vpath.rb (VPath#def_options): hack for msys make, which
+ converts a command line argument to non-msys command seems like a
+ path list automagically. [Bug #7710] [ruby-core:51489]
+
+Sat Jan 19 11:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * struct.c (Struct.new): Document Struct.new with block
+ Patch by Hiroyuki Iwatsuki [Bug #7674]
+
+Sat Jan 19 09:52:46 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/miscellaneous.rdoc: Added section on defined?
+
+Sat Jan 19 09:27:31 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/assignment.rdoc (Local Variables and Methods): Made it
+ more clear that local variables are created by the parser, not
+ execution. Thanks to John Hawthorn.
+
+Sat Jan 19 09:15:58 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/assignment.rdoc: Improved links
+ * doc/syntax/methods.rdoc: ditto.
+
+ * doc/syntax.rdoc: Added link to assignment document
+
+Sat Jan 19 08:47:33 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/assignment.rdoc: Added a syntax document on assignment.
+
+Fri Jan 18 14:11:01 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Added Array Decomposition.
+
+Fri Jan 18 12:54:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (gem): Gem.ensure_gem_subdirectories makes
+ subdirectories group-writable, so make them with $dir_mode.
+
+Fri Jan 18 11:24:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/win32ole.c (ole_initialize): uninitialize OLE at thread
+ ends. [Bug #2618] [ruby-core:27634]
+
+ * ext/win32ole/win32ole.c (ole_initialize): initialize OLE for each
+ threads. [Bug #2618] [ruby-core:27634]
+
+Thu Jan 17 22:10:35 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rubygems/ext/builder.rb (Gem::Ext::Builder.make): Remove
+ .time dependency from *.rb install target. It causes needless
+ *.rb install. [Bug #7698] [ruby-core:51437]
+ Reported by Tadashi Saito. Thanks!!!
+ * test/rubygems/test_gem_installer.rb
+ (TestGemInstaller#test_install_extension_and_script): Add a test
+ for the above change.
+
+Thu Jan 17 21:08:20 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * eval.c: Fix a typo in ruby_finalize() documentation.
+
+Thu Jan 17 20:28:18 2013 Benoit Daloze <eregontp@gmail.com>
+
+ * object.c: Typo in Kernel#hash documentation.
+ Patch by zed_0xff [Github Fixes #237]
+
+Thu Jan 17 10:48:56 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: use constants rather than
+ calculating Inf and NaN.
+
+Thu Jan 17 10:21:05 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/miscellaneous.rdoc: Added Ending an Expression and
+ indentation.
+
+Thu Jan 17 09:30:21 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Untaint string when checking output
+ for $SAFE=1
+
+ * lib/rubygems/specification.rb: Keep previously loaded specs as
+ active. This prevents double loading when refreshing the gem list.
+ * test/rubygems/test_gem.rb: Test for above
+
+ * lib/rubygems.rb: Bump version to 2.0.0.rc.2
+
+Thu Jan 17 09:08:37 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc: Added ? : ternary if
+
+Thu Jan 17 08:36:04 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/miscellaneous.rdoc: Added documentation for alias, undef,
+ BEGIN, END.
+ * doc/syntax/modules_and_classes.rdoc (Constants): Fixed unwrapped
+ paragraph with trailing whitespace.
+ * doc/syntax/modules_and_classes.rdoc (Scope): Added section pointing
+ to alias and undef documentation.
+ * doc/syntax.rdoc: Added link to miscellaneous section.
+
+Thu Jan 17 07:50:26 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc (Flip-Flop): Added a section on
+ the flip-flop.
+
+Thu Jan 17 06:59:51 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc (if Expressions): Fixed markup
+ error. Fixes #235 on github by FlyingFoX.
+
+Thu Jan 17 06:53:58 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/literals.rdoc (Strings): Fixed typo. Fixes #236 on
+ github by Doug Yun.
+
+Wed Jan 16 18:45:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/win32ole/lib/win32ole.rb: use TracePoint to hook all thread
+ creation not only by Thread.new and to get rid of interference with
+ svar scope. [Bug #7681] [ruby-core:51365]
+
+Wed Jan 16 09:35:53 2013 Eric Hodel <drbrain@segment7.net>
+
+ * .document: Removed extra space
+ * lib/irb/lc/.document: Hide help-message
+ * lib/minitest/.document: Hide README.txt
+ * lib/rake/lib/.document: Hide project.rake
+ * lib/rdoc/generator/template/json_index/.document: Hide JavaScript
+ files
+ * lib/rubygems/ssl_certs/.document: Hide PEM files.
+
+Wed Jan 16 03:54:28 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc: Omit optional "then" for if and
+ unless expressions. Improved description of "a if a = 0.zero?"
+ NameError. Note that "do" for for loop is optional.
+
+Wed Jan 16 03:28:47 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/calling_methods.rdoc: Link to defining methods.
+ * doc/syntax/methods.rdoc: Link to calling methods, fixed typo.
+
+Wed Jan 16 03:15:00 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Fixed link
+ * doc/syntax/modules_and_classes.rdoc: Fixed link
+ * doc/syntax.rdoc: Updated with links to the recently added pages
+
+Wed Jan 16 03:05:50 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc (redo Statement): Added note
+ about retry.
+ * doc/syntax/exceptions.rdoc: Added retry statement
+
+Tue Jan 15 23:12:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/vpath.rb (VPath#list): default separator to PATH_SEPARATOR from
+ configure.in for make, not same name constant of File for use in ruby.
+
+Tue Jan 15 22:30:04 2013 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ext/save-history.rb: identify rightly a status of a
+ history file that already exists [Bug #7694]. Thanks Nobuhiro IMAI
+ for this patch.
+
+Tue Jan 15 15:55:28 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/control_expressions.rdoc: Added description of control
+ expressions in ruby.
+
+Tue Jan 15 13:33:00 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc (Method Names): Added method names including
+ operator methods.
+ * doc/syntax/methods.rdoc (Return Values): Added note that assignment
+ methods ignore return values.
+ * doc/syntax/precedence.rdoc: Added document describing precedence.
+
+Tue Jan 15 11:49:31 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc (Block Argument): Added section on block
+ argument. Thanks to Andy Lindeman.
+
+Tue Jan 15 10:54:59 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/calling_methods.rdoc (Arguments): Added improved
+ introduction to arguments including passing style and lazy
+ evaluation. Thanks to Matt Aimonetti.
+ * doc/syntax/calling_methods.rdoc (Positional Arguments): Added
+ description for sending a message to a method with *arguments
+ * doc/syntax/calling_methods.rdoc (Default Positional Arguments):
+ Added description. Thanks to Andy Lindeman.
+ * doc/syntax/calling_methods.rdoc (Block Local Arguments):
+ Added description of block locals. Thanks to Justin Collins.
+ * doc/syntax/calling_methods.rdoc (Hash to Keyword Arguments): Added
+ section describing ** operator. Thanks to Justin Collins.
+
+Tue Jan 15 10:40:18 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * test_lazy_enumerator: Test that map & flat_map also require a block
+
+Tue Jan 15 09:22:47 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (gvl_init): Reset gvl.wait_yield explicitly when
+ fork()ing. Patch by Apollon Oikonomopoulos. Thanks!
+ [Bug #7693][ruby-core:51424]
+
+Tue Jan 15 09:27:56 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/calling_methods.rdoc (Receiver): Added :: as pointed out
+ by Tony Arcieri
+ * doc/syntax/calling_methods.rdoc (Block Argument): Fixed { } block
+ examples as pointed out by David Copeland.
+
+Tue Jan 15 09:10:29 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc (Array/Hash Argument): Moved above Keyword
+ Arguments
+ * doc/syntax/methods.rdoc (Keyword Arguments): Described ** for
+ gathering arbitrary keyword arguments.
+
+Tue Jan 15 08:56:37 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/calling_methods.rdoc: Added document describing method
+ calls.
+
+Tue Jan 15 07:39:21 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/top_level.rb: Fixed extension trimming for page names in
+ RDoc HTML output. [ruby-trunk - Bug #7673]
+ * test/rdoc/test_rdoc_top_level.rb: Test for above.
+
+Mon Jan 14 23:06:41 2013 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ext/save-history.rb: outputs its history to
+ owner-only-readable file and change the permission of a file that
+ already exists [Bug #7694]. Thanks Nobuhiro IMAI for bug reports.
+
+Mon Jan 14 17:12:48 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_flat_map_func): flat_map should call each only
+ when the value of a block returns a forcable object.
+ [ruby-core:51401] [Bug #7690]
+
+ * enumerator.c (lazy_flat_map): add documentation.
+
+ * test/ruby/test_lazy_enumerator.rb: related test.
+
+Mon Jan 14 16:42:28 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Require block for Lazy#{take|drop}_while [Bug #7692]
+
+Mon Jan 14 14:41:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_s): use CRuby style.
+
+Mon Jan 14 14:39:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c: use `RB_TYPE_P(x, t)` instead of
+ `TYPE(x) == t`.
+
+Mon Jan 14 10:18:56 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: Fix size for Enumerator::Lazy#flat_map
+
+Mon Jan 14 07:12:52 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix/lup_decomposition: Fix bugs with LUP Decomposition of
+ rectangular matrices. [rubyspec:ba849801a85]
+
+Mon Jan 14 06:46:53 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (add_ctype_to_cc): don't check dup warn on adding
+ negative ctype to cclass. [Bug #7471] [ruby-core:50344]
+
+Mon Jan 14 06:06:03 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix/eigenvalue_decomposition: Backport bugfix of Jama 1.0.3
+ [rubyspec:df87040be371]
+
+Sun Jan 13 16:45:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/psych/yaml/scanner.c: Fix typos, patch by James Dabbs
+ [Github tenderlove/psych#118]
+
+Sun Jan 13 15:00:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_sub):
+ need to specify precision for converting Rational and Float.
+ [ruby-dev:46544] [Bug #7404]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mult): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divide): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_divremain): ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb: add tests for the above fixes.
+
+Sun Jan 13 14:48:55 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix/eigenvalue_decomposition: Fix eigensystem with complex
+ eigenvectors. Patch by pypypy567.
+ [Bug #7208] [ruby-dev:46251] [rubyspec:242f8e55bd]
+
+ * lib/matrix/lup_decomposition.rb: Fix error for rectangular matrices
+ [bug#7620] [ruby-core:51118] [rubyspec:41f833ee2]
+
+Sun Jan 13 14:06:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb.rb, lib/prime.rb: Typos in overview
+ Patch by Ershad K [Github Fixes #234]
+
+Sun Jan 13 13:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/open3.rb : Typo in Open3 overview. Patch by zed_0xff
+ [Github Fixes #233]
+
+Sat Jan 12 17:42:00 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * numeric.c (do_coerce): fix for the exceptions which the coerce
+ method raises. The optimization done by r38756 is preserved.
+ [Bug #7645] [ruby-core:51213]
+
+Sat Jan 12 16:12:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/setup.mak (-runtime-): see msvcrt from link header on mswin
+ instead of running testing executable file, for cross compiling.
+
+Sat Jan 12 08:58:47 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: merge key values that
+ contain something besides a hash should be left in tact.
+
+ * test/psych/test_merge_keys.rb: test for change
+
+Sat Jan 12 07:52:47 2013 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c (ole_set_byref): support VT_UI8|VT_BYREF,
+ VT_I8|VT_BYREF in cygwin and mingw.
+
+ * ext/win32ole/win32ole.c (ole_variant2val): ditto.
+
+ * test/win32ole/test_win32ole_variant.rb (test_s_new_with_i8_byref):
+ ditto.
+
+ * test/win32ole/test_win32ole_variant.rb (test_s_new_with_ui8_byref):
+ ditto.
+
+Sat Jan 12 02:45:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * man/ruby.1 (options): include --*-encoding from r38784
+
+Fri Jan 11 23:34:48 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ruby.c (usage): sort --*-encoding in help. (same order of -E)
+
+Fri Jan 11 16:56:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb: use configured libdir value to fix
+ --enable-load-relative on systems where libdir is not default value,
+ overridden in config.site files. [ruby-core:47267] [Bug #6903]
+
+Fri Jan 11 11:59:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (dispose_string): use rb_str_free for freeing string in
+ parse.y. by Sokolov Yura <funny.falcon@gmail.com>
+ https://github.com/ruby/ruby/pull/87 fix GH-87
+
+Fri Jan 11 09:56:22 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * insns.def (defineclass): private constants should not be accessed
+ by scoped module definitions. The bug was introduced in r38495.
+
+ * test/ruby/test_module.rb: related test.
+
+Fri Jan 11 02:11:59 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/rbconfig/obsolete.rb (respond_to_missing?): use send because
+ RbConfig.respond_to_missing? is now private.
+
+Thu Jan 10 22:00:58 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (VM_DEBUG_BP_CHECK): set 0 as default.
+ This flag specifies checking BP consistency on each frame popping.
+ Now, we don't have any trouble on it, so I remove it.
+ If you feel any bugs about VM execution, then set it to 1.
+
+Thu Jan 10 21:03:05 2013 TAKANO `takano32' Mitsuhiro <tak@no32.tk>
+
+ * cont.c: define FIBER_USE_NATIVE as 0 in ia64.
+
+Thu Jan 10 19:39:05 2013 TAKANO `takano32' Mitsuhiro <tak@no32.tk>
+
+ * thread.c: fix RB_GC_SAVE_MACHINE_REGISTER_STACK define for ia64.
+
+Thu Jan 10 17:45:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in, win32/Makefile.sub ($(MKFILES)): continue if Makefile
+ unchanged.
+
+Thu Jan 10 16:31:20 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_super_method): raise a TypeError
+ instead of a NotImplementedError if self is not an instance of the
+ current class. [ruby-dev:39772] [Bug #2402]
+
+Thu Jan 10 16:47:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/extconf.rb (find_tcltk_header): use have_header instead of
+ try_cpp, which is incredibly slow with VC.
+
+Thu Jan 10 15:55:28 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * numeric.c (do_coerce): remove an unused variable.
+
+Thu Jan 10 15:35:55 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * tool/gen_dummy_probes.rb: remove comments in probes.d to fix the
+ compilation error introduced by r38755.
+
+Thu Jan 10 11:15:04 2013 Kenta Murata <mrkn@cookpad.com>
+
+ * numeric.c (do_coerce): speed optimization by using rb_check_funcall
+ instead of rb_rescue + rb_funcall.
+ This fix is based on the patch by Benoit Daloze.
+ [Bug #7645] [ruby-core:51213]
+
+Thu Jan 10 11:15:04 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * probes.d: updating probes to be more symmetrical, adding
+ documentation.
+
+ * load.c: ditto
+
+Thu Jan 10 04:23:07 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: strip trailing dots from
+ floats so that Float() will not raise an exception.
+
+ * test/psych/test_numeric.rb: test to ensure "1." can be loaded
+
+ * test/psych/test_string.rb: make sure "1." can round trip
+
+Thu Jan 10 03:38:40 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ascii only binary strings
+ will be dumped as unicode. Thanks Paul Kunysch!
+
+ * test/psych/test_string.rb: appropriate test
+
+Thu Jan 10 03:29:55 2013 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_array_): modify wrong optimization.
+ A script "[print(1)]; print(2)" should output "12".
+ However, the compiler had eliminated "[print(1)]" expression
+ because it is void expression (unused array).
+ Of course, side-effect should be remained.
+ This issue is reported by Masaya Tarui.
+
+ * bootstraptest/test_literal.rb: add a test.
+
+Wed Jan 9 22:07:42 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * load.c (load_lock): if thread shield is destroyed and there is no
+ waiting thread, insert new thread shield into load_table.
+ [Bug #7530] [ruby-core:50645]
+
+Wed Jan 9 21:43:32 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * load.c (load_lock): revert r38744. it should acquire new thread
+ shield.
+
+Wed Jan 9 15:40:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (th_init, ruby_thread_init): initialize root_svar with Qnil,
+ since lep_svar_place() expects uninitialized svar to be nil, not 0.
+
+Wed Jan 9 13:20:23 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * test/ruby/test_require.rb: improve test for r38744.
+ fix to use Tempfile instead of temporary file in current directory.
+ the patch is from nobu (Nobuyoshi Nakada).
+
+Wed Jan 9 09:53:23 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * load.c (load_lock): fix not to delete thread shield twice.
+ it may break the shield locked by another thread.
+ [Bug #7530] [ruby-core:50645]
+
+ * test/ruby/test_require.rb: a test for above.
+
+Wed Jan 9 02:13:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RBasic): to be aligned on a VALUE size
+ boundary. [Bug #7647]
+
+Tue Jan 8 14:41:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (rb_iseq_t): move flip_cnt from struct iseq_compile_data,
+ because it has same life span as enclosing iseq. [Bug #7671]
+ [ruby-core:51296]
+
+Mon Jan 7 23:43:00 2013 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal):
+ add RB_GC_GUARD to prevent the intermediate object is GCed too early.
+ This patch was made by Yusuke Endoh. [Bug #7044] [ruby-core:47632]
+
+ * test/bigdecimal/test_bigdecimal.rb: add a reproduction test for
+ the issue [Bug #7044]
+
+Mon Jan 7 21:40:36 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (Init_eval_method): main.public and main.private
+ should be private.
+
+ * proc.c (Init_Proc): main.define_method should be private.
+
+ * test/ruby/test_module.rb: related test.
+
+Mon Jan 7 20:48:47 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (Init_eval): main.include should be private.
+ [ruby-core:51293] [Bug #7670]
+
+ * test/ruby/test_module.rb (test_top_include_is_private): a new test
+ for the above change.
+
+Mon Jan 7 20:29:50 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * NEWS: remove description about `require "refinement"'.
+
+Mon Jan 7 20:15:49 2013 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (Init_eval): enable Refinements by default.
+ [ruby-core:51286] [Bug #7667]
+
+ * eval.c (rb_mod_refine, top_using): show a warning when
+ Module#refine or main.using is called at the first time.
+
+ * ext/refinement/*: removed the extension library "refinement".
+
+ * test/ruby/test_refinement.rb: fix for the above changes.
+
+Mon Jan 7 17:34:22 2013 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h (RUBY_EVENT_SPECIFIED_LINE): make it special.
+ This flag is not contained by RUBY_EVENT_TRACEPOINT_ALL.
+ This event is experimental one. It is possible to remove/rename
+ flag name after 2.0.1.
+
+ * vm_trace.c (get_event_id): return :line if SPECIFIED_LINE was
+ occurred. `:specified_line' never been returned.
+
+Mon Jan 7 15:42:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_kwrest): allow bare kwrest_mark as valid syntax. its
+ semantics is still undefined. [Bug #7662] [ruby-core:51269]
+
+Mon Jan 7 15:31:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_kwrest): reject duplicated kwrest argument name.
+
+Mon Jan 7 15:24:10 2013 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks_orig): pop tag before
+ JUMP_TAG() if frame is `finish' frame.
+ Without this patch, there is an inconsistency between control
+ frame stack and tags stack.
+ [Bug #7668]
+
+ * test/ruby/test_settracefunc.rb: add a test for above.
+
+Mon Jan 7 15:21:48 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * Makefile.in, common.mk (fake, yes-fake, no-make): these dependencies
+ are not platform dependent.
+
+ * win32/Makefile.sub ($(arch)-fake.rb): workaround.
+
+Mon Jan 7 12:09:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_callee_setup_arg_complex, vm_yield_setup_block_args):
+ set keyrest hash after making rest array, so that the last element
+ will not be overwritten. [ruby-core:51278] [Bug #7665]
+
+Mon Jan 7 09:37:24 2013 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: add a NEWS entry about RubyVM.
+
+Sun Jan 6 19:06:57 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * win32/Makefile.sub: Fix build with VC.
+ Patch by Charlie Savage. Fixes [ruby-core:51261]
+
+Sun Jan 6 18:43:48 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * bootstraptest/test_io.rb: add a test for [ruby-dev:46834].
+
+ * io.c (rb_cloexec_fcntl_dupfd) Use an emulation with dup(2) when
+ fcntl(2) and/or F_DUPFD is unavailable.
+ Suggested by akr.
+
+ * configure.in (HAVE_FCNTL): NativeClient does not provide fcntl(2).
+
+Sun Jan 6 11:11:26 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/modules_and_classes.rdoc: Fixed typo.
+
+Sun Jan 6 05:35:18 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/modules_and_classes.rdoc: Added singleton classes
+ documentation.
+
+Sun Jan 6 02:22:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/webrick/httpservlet/abstract.rb (WEBrick::HTTPServlet): Typo in
+ example. Patch by shlensky [Fixes #232 on github]
+
+Sat Jan 5 21:15:10 2013 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http/generic_request.rb:
+ Amazon ECA API and GTE/1.3 disallow requests whose host has port
+ number if its port number equals to default port number of the
+ scheme. [Bug #7650]
+
+Sat Jan 5 13:58:59 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/modules_and_classes.rdoc: Improved description of methods
+ on a module or class as suggested by Tobias Buhlmann
+
+Sat Jan 5 13:38:07 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * string.c (rb_str_enumerate_lines): fix invalid byte sequence error
+ when a separator is passed. The patch is from yoshidam (Yoshida
+ Masato).
+ [Bug #7646] [ruby-dev:46827]
+
+ * test/ruby/test_string.rb: a test for above.
+
+Sat Jan 5 12:25:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err):
+ check stdout and stderr both.
+
+Sat Jan 5 10:21:54 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/modules_and_classes.rdoc: Added documentation of syntax
+ for Modules and Classes.
+ * doc/syntax/methods.rdoc: Moved some text to the Modules and
+ Classes syntax document.
+
+Sat Jan 5 08:38:27 2013 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Added return values and scope sections,
+ slightly modified from the original patch. Fixes #227 from github by
+ Dave Brown.
+
+Sat Jan 5 08:21:41 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_cloexec_fcntl_dupfd): improve #ifdef condition.
+ * io.c (rb_maygvl_fd_fix_cloexec): ditto.
+
+Sat Jan 5 07:54:59 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/cleanup_command.rb: Clean all possible gems
+ using multiple passes. Fixes RubyGems bug #422. Refactored for
+ maintainability.
+ * test/rubygems/test_gem_commands_cleanup_command.rb: Test for above.
+
+Sat Jan 5 05:04:39 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * gc.c (vm_xrealloc): add a few comment why we avoid realloc(ptr,0).
+
+Fri Jan 4 20:17:06 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * Makefile.in (RBCONFIG): Moved from common.mk in order to use the
+ variable in Makefile.in.
+
+ * win32/Makefile.sub (RBCONFIG): Ditto.
+
+Fri Jan 4 19:45:50 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * common.mk (run, parse): Use BTESTRUBY instead of MINIRUBY to handle
+ cross-compiling cases, e.g. NativeClient.
+
+Fri Jan 4 17:58:16 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * common.mk (yes-btest): btest depends on also $(arch)-fake.rb and
+ rbconfig.rb on building for NativeClient.
+
+ * Makefile.in (fake): Avoid generating $(arch)-fake.rb unless cross
+ compiling.
+
+ * configure.in (CROSS_COMPILING): New substitution.
+
+Fri Jan 4 16:26:45 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/doctor.rb: Process directories in order in case the
+ filesystem doesn't. [ruby-trunk - Bug #7618]
+
+ Process specifications before other directories in case of bugs.
+ * test/rubygems/test_gem_doctor.rb: Test for above.
+
+ * lib/rubygems.rb: Updated version.
+
+ * test/rubygems/test_require.rb: Fixed double require of
+ benchmark.rb. RubyGems bug #420.
+
+ * test/rubygems/test_gem_commands_check_command.rb: Fixed unused
+ variable warnings.
+ * test/rubygems/test_gem_commands_query_command.rb: ditto
+ * test/rubygems/test_gem_installer.rb: ditto
+
+Fri Jan 4 15:05:25 2013 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/cross_reference.rb: Fixed matching of C#=== or #===. RDoc
+ bug #164
+ * test/rdoc/test_rdoc_cross_reference.rb: Test for above.
+
+ * lib/rdoc/parser/changelog.rb: Fixed parsing of dates. RDoc bug #165
+ * test/rdoc/test_rdoc_parser_changelog.rb: Test for above.
+
+ * lib/rdoc/parser.rb: Fixed parsing multibyte files with incomplete
+ characters at byte 1024. [ruby-trunk - Bug #6393]
+ Fixed handling of -E. [ruby-trunk - Bug #6392]
+ * test/rdoc/test_rdoc_options.rb: Test for above.
+ * test/rdoc/test_rdoc_parser.rb: ditto.
+ * test/rdoc/test_rdoc_parser_c.rb: ditto.
+ * test/rdoc/test_rdoc_parser_changelog.rb: ditto.
+ * test/rdoc/test_rdoc_parser_markdown.rb: ditto.
+ * test/rdoc/test_rdoc_parser_rd.rb: ditto.
+ * test/rdoc/test_rdoc_rdoc.rb: ditto.
+
+ * lib/rdoc/tom_doc.rb: Fixed parsing of [] in TomDoc arguments list.
+ RDoc bug #167
+ * test/rdoc/test_rdoc_tom_doc.rb: Test for above.
+
+ * lib/rdoc.rb: Update version.
+
+Fri Jan 4 11:51:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/forwardable.rb: Fix rdoc parameters for ::def_single_delegator.
+ Patch by Vladimir Andrijevik [Github Fixes #230]
+
+Fri Jan 4 00:35:11 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ Fix failures on btest for NativeClient.
+ * bootstraptest/runner.rb (nacl?): New method to distinguish NaCl
+ cross build.
+
+ * bootstraptest/test_io.rb: Skip unsupported operations.
+
+ * bootstraptest/test_literal.rb: ditto.
+
+Fri Jan 4 00:29:40 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * io.c (rb_cloexec_fcntl_dupfd): Fix failures in
+ bootstrap_test/test_io.rb. NativeClient does not support F_DUPFD
+ but supports dup2(2).
+
+Thu Jan 3 17:46:50 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/element.rb (REXML::Elements#add): Remove too much
+ "elements" in document. Sorry...
+
+Thu Jan 3 17:42:32 2013 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/element.rb (REXML::Elements#each): Add missing
+ "elements" in document. [ruby-talk:402713]
+ Reported by Wesley Rishel. Thanks!!!
+
+Thu Jan 3 15:13:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/psych/lib/psych.rb (Psych.load): Return value of
+ Psych::SyntaxError.message should be same as example.
+ Patch by Ippei Obayashi [ruby-core:51193] [Bug #7636]
+
+Thu Jan 3 14:58:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/forwardable.rb (SingleForwardable): Fix example in overview
+ Patch by Vladimir Andrijevik [Github Fixes #231]
+
+Thu Jan 3 14:32:47 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * configure.in (OBJCOPY): Fixes build error for NativeClient.
+ Avoid disabling OBJCOPY for NativeClient.
+
+ * thread_pthread.c (rb_reserved_fd_p): USE_SLEEPY_TIMER_THREAD is
+ always defined. Fixes compilation error for NativeClient.
+
+Wed Jan 02 03:09:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/zlib/zlib.c (Zlib::GzipReader): Fix typo by zed_0xff
+ [Fixes Github #229]
+
+Wed Jan 02 02:29:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * hash.c (rb_hash_update): Revert documentation from r38672
+ See: https://github.com/ruby/ruby/pull/228#issuecomment-11791013
+
+Wed Jan 02 02:16:00 2013 Zachary Scott <zachary@zacharyscott.net>
+
+ * hash.c (rb_hash_update): Documentation for Hash#merge and shallow
+ copies Patch by Yorick Peterse [Fixes Github #228]
+
+Mon Dec 31 15:10:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_backtrace.c: Add documentation for Kernel#caller_locations,
+ Kernel#caller, and Thread::Backtrace::Location
+
+Mon Dec 31 13:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * test/ruby/test_backtrace.rb: Add test for r37957 [Feature #7434]
+
+Sun Dec 30 23:33:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (simple_re_meta): escaped closing parenthesis has different
+ meaning. [Bug #7610] [ruby-core:51088]
+
+Sun Dec 30 12:09:47 2012 Charlie Somerville <charlie@charliesomerville.com>
+
+ * configure.in: use 4 argument form of AC_CHECK_HEADERS to force
+ autoconf to use compiler's result
+
+Sun Dec 30 10:58:04 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/ruby/test_keyword.rb: add a test for passing hash
+ as a last argument. [ruby-dev:46712] [Bug #7529]
+
+Sun Dec 30 10:51:29 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_insnhelper.c: set keyword hash on Proc/block calls.
+ [ruby-core:51172] [Bug #7630]
+
+ * test/ruby/test_keyword.rb: add tests for above.
+
+Sat Dec 29 21:57:11 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/completion.rb: treat rightly completion for symbol on irb
+ [Bug #7632].
+
+Sat Dec 29 21:51:30 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/curses.c (window_cury, window_curx, window_maxy,
+ window_maxx, window_begy, window_begx): use RB_UNUSED_VAR()
+ to suppress unused-but-set-variable warnings.
+
+Sat Dec 29 16:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * iseq.c (RubyVM::InstructionSequence): rdoc formatting
+
+Sat Dec 29 15:28:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * iseq.c (RubyVM::InstructionSequence): Add rdoc for new iseq features
+ added from r38085, this includes ::of, #path, #absolute_path,
+ #label, #base_label, #first_lineno, and #inspect
+
+Sat Dec 29 14:06:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * iseq.c (rb_iseq_line_trace_all, rb_iseq_line_trace_specify): Add
+ rdoc for experimental C level api of iseq, from r38076
+
+Sat Dec 29 11:37:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_obj_clone): attach clone to its singleton class during
+ cloning singleton class so that singleton_method_added will be called
+ on it. based on the patch by shiba (satoshi shiba)[Bug #5283] in
+ [ruby-dev:44477]. [Bug #5283]
+
+Sat Dec 29 10:10:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (crt_externs.h): use standard macro AC_CHECK_HEADERS.
+
+Fri Dec 28 23:12:44 2012 Charlie Somerville <charlie@charliesomerville.com>
+
+ * configure.in: check for the whether crt_externs.h is present when compiling
+ for darwin (this header is missing in the iOS SDK)
+ * eval_intern.h: check HAVE_CRT_EXTERNS_H before including crt_externs.h, if
+ not defined, include missing/crt_externs.h instead
+ * hash.c: ditto
+ * missing/setproctitle.c: ditto
+ * missing/crt_externs.h: declare _NSGetEnviron() function and define environ
+ for iOS
+
+Fri Dec 28 21:40:36 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/context.rb: IRB::Context#new: Check from JobManager
+ inside IRB namespace [Bug #7628]. Thanks rafaelfranca for bug
+ report and its patch.
+
+Fri Dec 28 17:06:17 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-electric.el (ruby-electric-curlies): Automatically
+ indent closing curly brackets when
+ ruby-electric-newline-before-closing-bracket is true.
+
+Fri Dec 28 11:50:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): pass single argument to
+ single optional parameter unchanged without splatting. [Bug #7621]
+ [ruby-dev:46801]
+
+Fri Dec 28 11:17:47 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * proc.c (method_eq): fix the documentation to refer to owner.
+ [ruby-core:51105] [Bug #7613]
+
+ * test/ruby/test_method.rb (test_alias_onwer): new test to confirm
+ that `a == b' returns false if owners of a and b are different.
+
+Fri Dec 28 07:07:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * def/id.def: use split(/^/) instead of String#lines to support
+ Ruby 1.8.5 as BASERUBY.
+
+Thu Dec 27 21:56:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * variable.c (rb_mod_remove_const): fix segv caused by r38558.
+
+Tue Dec 28 01:13:48 2012 James Edward Gray II <james@graysoftinc.com>
+
+ * lib/csv.rb: Added more Hash methods to CSV::Row.
+
+Thu Dec 27 23:27:15 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: make lex_state to EXPR_END when next token
+ is an operator after SYMBEG [Bug #6378].
+
+Thu Dec 27 21:30:21 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: allow to handle recursive heredocs on
+ irb[Bug #5648].
+
+Thu Dec 27 20:45:29 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * ext/stringio/stringio.c (strio_getline): fix not to raise TypeError
+ when limit is nil.
+ [Bug #7232] [ruby-core:48531]
+
+ * test/stringio/test_stringio.rb: a test for above.
+
+Thu Dec 27 21:08:23 2012 Charlie Somerville <charlie@charliesomerville.com>
+
+ * vm_core.h (VM_DEFINECLASS_TYPE): explicit cast to enum type to avoid 64->32
+ shorten warning
+
+Thu Dec 27 20:11:29 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * ext/stringio/stringio.c (strio_ungetc): raise IOError instead of RuntimeError
+ if the string is frozen.
+ [Bug #7231] [ruby-core:48530]
+
+ * ext/stringio/stringio.c (strio_ungetbyte): ditto.
+
+ * test/stringio/test_stringio.rb: a test for above.
+
+Wed Dec 26 23:55:18 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/context.rb: fix IRB::Inspector#keys_with_inspector [Bug #7598]
+
+Wed Dec 26 23:26:15 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/context.rb: IRB::Context#use_readline= has been obsolete
+ [Bug #6339].
+
+Wed Dec 26 21:32:46 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/context.rb: make a correct prompt from
+ IRB.conf[:IRB_NAME] on irb [Bug #6338]. Patched by sho-h.
+
+Wed Dec 26 21:09:19 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ext/math-mode.rb: make not able to change math-mode
+ after irb starting [Bug #6302]. Patched by sho-h.
+
+Wed Dec 26 12:52:36 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/init.rb: change default debug level for
+ irb[ruby-dev:46805], [Bug #6301].
+
+Wed Dec 26 11:54:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: enable -fPIE when checking -pie for fixing
+ OpenBSD build error. Patch by George Koehler. Thank you!
+ [Bug #7606] [ruby-core:51082]
+
+Wed Dec 26 07:31:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_copy_for_substr): empty string is always
+ valid or 7bit.
+
+ * string.c (rb_str_enumerate_lines, rb_str_chop): reduce duplicated
+ code.
+
+ * string.c (rb_str_enumerate_chars): prevent shared copy from GC.
+
+Wed Dec 26 01:31:16 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/init.rb, lib/irb/context.rb: fix conf.debug_level=
+ [Bug #6301] and fix irb command option: -- irb_debug_level for irb.
+
+Wed Dec 26 00:59:18 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ruby-lex.rb: improve RubyLex performance for large files
+ [Bug #5202]. Patch by ryanmelt.
+
+Tue Dec 25 22:21:06 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/output-method.rb: raise right exception when
+ IRB::OutputMethod#print don't defined [Bug #6657].
+
+Tue Dec 25 22:06:33 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks_and_pop_frame):
+ pop a frame before JUMP_TAG() if exception occurred.
+ This change fix bug of Ruby 1.9.
+ [ruby-core:51128] [ruby-trunk - Bug #7624]
+
+ * vm_core.h (EXEC_EVENT_HOOK_AND_POP_FRAME): add to use
+ `rb_threadptr_exec_event_hooks_and_pop_frame()'.
+
+ * vm.c (vm_exec): use EXEC_EVENT_HOOK_AND_POP_FRAME() while
+ exception handling. While exception handling, if an exception
+ is raised in hooks, need to pop current frame and raise this
+ raised exception by hook.
+
+ * test/ruby/test_settracefunc.rb: add a test.
+
+Tue Dec 25 21:08:53 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/init.rb, lib/irb/lc/ja/error.rb, lib/irb/lc/error.rb:
+ raise exception when illegal RC_NAME_GENERATOR defined [Bug #6455].
+
+Tue Dec 25 19:22:17 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/workspace.rb: define method to private on top-level irb
+ [Bug #5776]. Patch by davidbalbert.
+
+Tue Dec 25 19:09:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c, include/ruby/intern.h (rb_big_eql): exported.
+
+ * thread.c (recursive_check): object_id maybe a Bignum, not Fixnum on
+ LLP64. see also r38493 and r38548.
+ reported by Heesob Park at [ruby-core:51083] [Bug #7607], and patched
+ by shirosaki at [ruby-core:51095]
+
+Tue Dec 25 18:53:35 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, eval_intern.h (CHECK_STACK_OVERFLOW): move
+ CHECK_STACK_OVERFLOW() to vm_core.h and rename to
+ CHECK_VM_STACK_OVERFLOW().
+ This change is only move and rename.
+
+ * tool/instruction.rb: catch up above changes.
+
+ * vm.c, vm_insnhelper.c: ditto.
+
+ * vm_insnhelper.c (vm_stackoverflow): add a function to unify
+ raising vm stackoverflow exception.
+
+Tue Dec 25 16:16:54 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (RUBY_VM_THREAD_VM_STACK_SIZE): change default
+ VM stack size (128 KB or 256 KB -> 512 KB or 1024 KB).
+ This re-sizing corrects smaller value introduced at r38478.
+ Newer value is same VM stack size of Ruby 1.9.
+ [ruby-dev:46797] [ruby-trunk - Bug #7603]
+
+Tue Dec 25 13:38:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (compile_err_append, compile_warn_print, warn_print): use
+ rb_write_error_str() instead of writing to rb_stderr directly.
+
+ * io.c (rb_write_error_str): a stopgap measure not to unblock GVL.
+ warning from require seems to still have race condition errors.
+
+Tue Dec 25 00:59:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (NODE_OP_CDECL), compile.c (iseq_compile_each),
+ parse.y (stmt, arg): allow scoped constant op-assignment.
+ [ruby-core:40154] [Bug #5449]
+
+Mon Dec 24 04:56:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http/generic_request.rb (Net::HTTPGenericRequest):
+ set content-length to zero on empty post requests
+ by Gregory Ostermayr <gregory.ostermayr@gmail.com>
+ https://github.com/ruby/ruby/pull/201 fix GH-201
+
+Sun Dec 23 19:09:16 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: rename methods:
+ from Thread.async_interrupt_timing to Thread.handle_interrupt,
+ from Thread.async_interrupted? to Thread.pending_interrupt?.
+ Also rename option from `defer' to `never'.
+ [ruby-core:51074] [ruby-trunk - Feature #6762]
+
+ * vm_core.c, thread.c: rename functions and data structure
+ `async_errinfo' to `pending_interrupt'.
+
+ * thread.c: add global variables sym_immediate, sym_on_blocking and
+ sym_never.
+
+ * cont.c, process.c, vm.c, signal.c: ditto.
+
+ * lib/sync.rb, lib/thread.rb: catch up this renaming.
+
+ * test/ruby/test_thread.rb: ditto.
+
+Sun Dec 23 17:57:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/profiler.rb (Profiler__::PROFILE_PROC, print_profile): store
+ profile data per threads for concurrent-execution.
+ [ruby-core:22046] [Bug #1152]
+
+ * lib/profiler.rb (Profiler__::Wrapper): support calling singleton
+ methods of an instance of BasicObject.
+
+ * lib/profiler.rb (Profiler__::PROFILE_PROC): use TracePoint.
+
+Sun Dec 23 16:13:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/erb.rb: typos for ERB::new link
+
+Sun Dec 23 16:06:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/erb.rb: Document ERB::new trim_mode '-' for lines ending in -%>
+ [ruby-core:51084] [Bug #7608]
+
+Sun Dec 23 15:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb/ruby-lex.rb: Add handling for %i and %I quoting to irb
+ Patch by flori [ruby-core:49550] [Bug #7392] [Github Issue #157]
+
+Sun Dec 23 15:05:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_check_funcall_with_hook): rb_check_funcall with hook
+ which is called before calling method_missing or target method.
+
+ * marshal.c (w_object, r_object0): use rb_check_funcall_with_hook
+ instead of respond_to? and call.
+
+Sun Dec 23 14:52:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * re.c (rb_reg_eqq): doc: #=== is not a synonym for #=~, added example
+ [ruby-dev:46746] [Bug #7571]
+
+Sun Dec 23 14:35:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (BLOCKING_REGION): if fail_if_interrupted is false ignore
+ the result of blocking_region_begin(), since it always is true in
+ that case. suppress "uninitialized" warnings.
+
+Sun Dec 23 09:34:07 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/check_command.rb: Added --doctor and --dry-run
+ options to clean up after failed uninstallation.
+ * test/rubygems/test_gem_commands_check_command.rb: Test for above.
+
+ * lib/rubygems/commands/push_command.rb: Allow pushes from RubyGems
+ 2.0.0.preview3
+
+ * lib/rubygems/commands/update_command.rb: Use Gem.ruby_version
+
+ * lib/rubygems/dependency.rb: Update style.
+
+ * lib/rubygems/installer.rb: Ensure installed gem specifications will
+ be useable. Refactor.
+ * test/rubygems/test_gem_installer.rb: ditto.
+
+ * lib/rubygems/validator.rb: Fixed bug with unreadable files.
+
+ * lib/rubygems.rb: Fixed broken methods.
+ * test/rubygems/test_gem.rb: Test for above.
+
+ * test/rubygems/test_gem_commands_push_command.rb: Fixed overridden
+ Gem.latest_rubygems_version
+
+Sun Dec 23 01:52:01 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * io.c (rb_io_lines, rb_io_bytes, rb_io_chars, rb_io_codepoints):
+ Deprecate IO#{lines,bytes,chars,codepoints} and those of ARGF.
+ [Feature #6670]
+
+ * ext/stringio/stringio.c (strio_lines, strio_bytes, strio_chars)
+ (strio_codepoints): Deprecate
+ StringIO#{lines,bytes,chars,codepoints}. [Feature #6670]
+
+ * ext/zlib/zlib.c (rb_gzreader_lines, rb_gzreader_bytes):
+ Deprecate Zlib::GzipReader#{lines,bytes}. [Feature #6670]
+
+Sat Dec 23 01:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/optparse.rb: Documentation for OptionParser to remove 'shadowed
+ outer local variable' from example and make obvious ARGV with
+ non-option arguments.
+ Patch by Marcus Stollsteimer [ruby-core:47460] [Bug #6997]
+
+Sat Dec 23 00:08:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * include/ruby/intern.h: add the prototype declaration of
+ rb_num_coerce_bit.
+
+ * numeric.c (rb_num_coerce_bit): the new coerce function for bitwise
+ binary operation.
+
+ * bignum.c (rb_big_and): use coerce to convert the argument, which isn't
+ a Fixnum nor a Bignum, to the corresponding Integer object so that
+ bitwise operations can support Integer-mimic objects.
+ [Bug #1792] [ruby-core:39491]
+
+ * bignum.c (rb_big_or): ditto.
+
+ * bignum.c (rb_big_xor): ditto.
+
+ * numeric.c (bit_coerce): ditto.
+
+ * numeric.c (fix_and): ditto.
+
+ * numeric.c (fix_or): ditto.
+
+ * numeric.c (fix_xor): ditto.
+
+ * test/ruby/test_integer.rb: add tests for the above changes.
+
+ * test/ruby/test_bignum.rb: ditto.
+
+Sun Dec 23 00:04:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (QUOTE, QUOTE_ID): quote unprintable chars in strings and
+ IDs. [Bug #7574] [ruby-dev:46749]
+
+ * string.c (rb_str_quote_unprintable): ditto.
+
+Sat Dec 22 23:59:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_compile_error, rb_compile_warn, rb_compile_warning),
+ (rb_warn, rb_warning): support PRIsVALUE.
+
+Sat Dec 22 22:04:58 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * cont.c (rb_fiber_start): unify conditions.
+
+Sat Dec 22 21:47:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_wait_writable): use rb_thread_check_ints() instead
+ of rb_thread_fd_writable().
+ * io.c (rb_io_wait_readable): ditto.
+
+Sat Dec 22 20:31:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_get): symbol cannot be nested constant name.
+
+Sat Dec 22 19:26:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_get): check more strictly. [ruby-dev:46748]
+ [Bug #7573]
+
+Wed Dec 19 02:34:48 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * cont.c (rb_fiber_start): in case of jump with TAG_FATAL,
+ enqueue error into async_errinfo_queue, because you cannot call
+ TH_TAG_JUMP() in this function. [ruby-dev:45218] [Bug #5993]
+
+ * thread.c (rb_threadptr_execute_interrupts): now INT2FIX(TAG_FATAL)
+ can be popped from async_errinfo_queue.
+
+ * vm.c (rb_vm_make_jump_tag_but_local_jump): revert r38441.
+ rb_vm_make_jump_tag_but_local_jump() shouldn't return exception
+ in case of state == TAG_FATAL.
+
+ * test/ruby/test_fiber.rb (test_exit_in_fiber): fix a test to illuminate
+ Thread.exit should terminate current Thread.
+
+Sat Dec 22 13:15:08 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * gc.c (obj_id_to_ref): add a macro to treat Bignum object id.
+ This follows the change r38493.
+
+ * gc.c (id2ref): fix for working fine with Bignum object id on x64
+ Windows.
+ * gc.c (wmap_finalize): ditto.
+
+Sat Dec 22 11:30:21 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * struct.c (make_struct): remove junk ID check to allow members who
+ have junk name like "foo\000".
+ * test/ruby/test_struct.rb: Test for above.
+ [Bug #7575] [ruby-dev:46750]
+
+Sat Dec 22 05:34:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Requests may be created with a URI which sets the
+ Host header. Responses contain the requested URI for easier redirect
+ following. [ruby-trunk - Feature #6482]
+ * lib/net/http/generic_request.rb: ditto.
+ * lib/net/http/response.rb: ditto.
+ * NEWS (net/http): Updated for above.
+ * test/net/http/test_http.rb: Tests for above.
+ * test/net/http/test_http.rb: ditto.
+ * test/net/http/test_httpresponse.rb: ditto.
+
+Sat Dec 22 02:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb/slex.rb(#match): Typo, should be D_DETAIL
+ [ruby-core:51071] [Bug#7600]
+
+Sat Dec 22 02:29:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb/input-method.rb, lib/irb.rb: Typo in
+ InputMethod#readable_atfer_eof? to #readable_after_eof?
+ [ruby-core:51069] [Bug #7599]
+
+Sat Dec 22 02:19:38 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_dump.c (rb_vm_bugreport): revert r38533.
+ * addr2line.c (fill_lines): add ELF sanity check.
+ [Bug #7597] [ruby-dev:46786]
+
+Sat Dec 22 02:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb/inspector.rb, lib/irb/context.rb: Move IRB::INSPECTORS and
+ class methods to IRB::Inspector [ruby-core:51067][Bug #7598]
+
+Sat Dec 22 00:28:46 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * object.c (rb_obj_hash): shouldn't assume object_id can be long.
+ based on a patch by Heesob Park at [ruby-core:51060].
+ cf. [Backport #7454]
+
+Fri Dec 21 23:15:25 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * ext/fiddle/lib/fiddle/struct.rb (Fiddle::CStructEntity#set_ctypes):
+ CPtr -> Pointer.
+ * test/fiddle/test_c_struct_entry.rb
+ (Fiddle::TestCStructEntity#test_aref_pointer):
+ Added the test for the above.
+
+Fri Dec 21 23:12:05 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * ext/fiddle/lib/fiddle/struct.rb (Fiddle::CStructEntity#set_ctypes):
+ CPtr -> Pointer.
+ * test/fiddle/test_c_struct_entry.rb
+ (Fiddle::TestCStructEntity#test_aref_pointer_array):
+ Added the test for the above.
+
+Fri Dec 21 22:43:36 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * ext/fiddle/lib/fiddle/import.rb (Fiddle::Importer#sizeof):
+ CPtr -> Pointer.
+ * test/fiddle/test_import.rb (Fiddle::TestImport#test_sizeof):
+ Added the test for the above.
+
+Fri Dec 21 22:34:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_iseq.rb: disable a test which checks features
+ removed at r38532.
+
+Fri Dec 21 22:02:00 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{dir.h,win32.c} (rb_w32_readdir): removed old rb_w32_readdir()
+ and renamed from rb_w32_readdir_with_enc().
+ [ruby-core:24864] [Feature #1927]
+
+ * dir.c (READDIR): follow above change.
+
+Fri Dec 21 21:12:54 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): commentout addr2line call temporarily
+ in order to avoid segv. anyone can fix addr2line?
+ [Bug #7597] [ruby-dev:46786]
+
+Fri Dec 21 20:38:28 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (Init_ISeq): remove definition of the following methods:
+ ISeq#line_trace_all and ISeq#line_trace_specify because they are
+ half baked.
+ C APIs are remained as experimental. These functions will be
+ renamed, removed their parameters may be changed.
+ You can use these methods by C exts. Please give us your comments.
+
+Fri Dec 21 20:21:04 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (tracepoint_new): add code to support specified thread.
+ But not tested and this feature is not supported officially.
+
+Fri Dec 21 19:37:15 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ruby.c (process_options): need to acquire env from TOPLEVEL_BINDING
+ each time.
+ `bind->env' may update after `eval()'.
+ [Bug #7536]
+
+Fri Dec 21 18:46:50 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h, vm_core.h: define rb_trace_arg_t at
+ include/ruby/debug.h (move from vm_core.h).
+
+Fri Dec 21 17:48:15 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, vm_trace.c: fix multi-threading bug for tracing.
+ Move `trace_arg' from rb_tp_t::trace_arg to rb_thread_t::trace_arg.
+ `trace_arg' may changed by multiple threads.
+ rb_thread_t::trace_arg can represent rb_thread_t::trace_running
+ (null or non-null) and rb_thread_t::trace_running is removed.
+ After that, `rb_tp_t' is not needed to check tracing or not
+ (A running thread knows tracing or not). This is why I remove
+ tp_attr_check_active() and make new function get_trace_arg().
+
+ And this modification disable to work the following code:
+ TracePoint.trace{|tp|
+ Thread.new{p tp.event} # access `tp' from other threads.
+ }
+ I believe nobody mix threads at trace procedure.
+ This is current limitation.
+ [Bug #7590]
+
+ * cont.c (fiber_switch, rb_cont_call): use rb_thread_t::trace_arg
+ instead of rb_thread_t::trace_running.
+
+ * test/ruby/test_settracefunc.rb: add a multi-threading test.
+
+Fri Dec 21 16:38:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl (ID2ATTRSET): compile time constant macro for
+ ID_ATTRSET.
+
+ * defs/id.def (KeywordError): check duplication.
+
+ * defs/id.def: support for other scope IDs,
+ ID_{INSTANCE,GLOBAL,CONST,CLASS}.
+
+Fri Dec 21 14:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb.rb, lib/irb/*: Documentation for IRB
+
+Fri Dec 21 11:31:02 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake/*: Updated to rake 0.9.6
+ * doc/rake/*: ditto
+ * test/rake/*: ditto
+
+Fri Dec 21 08:56:34 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_trace.c (rb_suppress_tracing): remove unused variable 'vm_tracing'
+
+Fri Dec 21 01:01:45 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * lib/irb/completion.rb (CompletionProc): support completion of
+ instance variables. [ruby-dev:46710] [Bug #7520]
+
+Thu Dec 20 20:58:25 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_trace.c (rb_suppress_tracing): bugfix for vm->trace_running
+ counter. And if tracing is already true, vm_trace_running ops is
+ skipped to control overflow.
+
+Thu Dec 20 18:29:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RTEST, NIL_P): make bare expressions without
+ outermost parentheses.
+
+Thu Dec 20 17:29:00 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * NEWS: fix the description for Refinements.
+
+Thu Dec 20 16:53:59 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_core.h (rb_vm_defineclass_type_t),
+ compile.c (iseq_compile_each), insns.def (defineclass): change the
+ meaning of the third operand of defineclass as follows:
+ lower 3bits: the type of the defineclass
+ 0 = class, 1 = singleton class, 2 = module
+ 4th bit: a flag represents whether the defineclass is scoped
+ 0 = not scoped (e.g., class Foo)
+ 1 = scoped (e.g., class Bar::Baz)
+ 5th bit: a flag represents whether the superclass is specified
+ 0 = not specified (e.g., class Foo)
+ 1 = specified (e.g., class Bar < Foo)
+ If the superclass is specified and is not a class, a TypeError
+ should be raised. [ruby-dev:46747] [Bug #7572]
+
+ * test/ruby/test_class.rb: related test.
+
+Thu Dec 20 16:52:37 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: announce AEAD encryption support in the OpenSSL extension.
+
+Thu Dec 20 16:40:13 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (nonspecial_obj_id): VALUE is not compatible with Fixnum on
+ LLP64 platform, such as 64bit Windows.
+ reported by Heesob Park at [ruby-core:50255] [Bug #7454], and the
+ fix is suggested by akr.
+
+Thu Dec 20 16:39:04 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/ossl_cipher.c: fix errors for installations that do not
+ feature Authenticated Encryption.
+ * ext/openssl/extconf.rb: detect presence of EVP_CTRL_GCM_GET_TAG to
+ determine whether Authenticated Encryption can be used.
+ [Feature #6980] [ruby-core:47426]
+
+Thu Dec 20 15:55:46 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/ossl.c: do not use FIPS_mode_set if not available.
+ * test/openssl/utils.rb: revise comment about setting FIPS mode to
+ false.
+ * test/openssl/test_fips.rb: remove tests that cause errors on
+ ruby-ci.
+ [Feature #6946] [ruby-core:47345]
+
+Thu Dec 20 15:22:59 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser/ruby.rb: Ignore methods defined on constants to
+ prevent modules with the names of constants from appearing in the
+ documentation.
+ * test/rdoc/test_rdoc_parser_ruby.rb: Test for the above.
+
+Thu Dec 20 15:00:33 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/ossl_cipher.c: add support for Authenticated Encryption
+ with Associated Data (AEAD) for OpenSSL versions that support the
+ GCM encryption mode. It's the only mode supported for now by OpenSSL
+ itself. Add Cipher#authenticated? to detect whether a chosen mode
+ does support Authenticated Encryption.
+ * test/openssl/test_cipher.rb: add tests for Authenticated Encryption.
+ [Feature #6980] [ruby-core:47426] Thank you, Stephen Touset for
+ providing a patch!
+
+Thu Dec 20 12:56:53 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/to_html.rb (class RDoc): Added current heading and
+ top links to headings.
+ * lib/rdoc/generator/template/darkfish/rdoc.css: ditto
+ * test/rdoc/test_rdoc_generator_markup.rb: Test for above
+ * test/rdoc/test_rdoc_markup_to_html.rb: ditto
+
+ * test/rdoc/test_rdoc_comment.rb: Removed trailing whitespace.
+
+Thu Dec 20 11:05:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_valid_syntax): move from
+ test_syntax.rb.
+
+ * test/ruby/envutil.rb (assert_normal_exit): validate syntax before
+ running because this assertion passes even if the code fails by
+ SyntaxError.
+
+Thu Dec 20 10:29:58 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkey_dh.rb: revert special treatment of
+ FIPS-capable installations since FIPS mode is now disabled for the
+ tests.
+
+Thu Dec 20 10:23:12 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/ossl.c: add OpenSSL.fips_mode= to allow enabling FIPS
+ mode manually.
+ * test/openssl/utils.rb: turn off FIPS mode for tests. This prevents
+ OpenSSL installations with FIPS mode enabled by default from raising
+ FIPS-related errors during the tests.
+ * test/openssl/test_fips.rb: add tests for FIPS-capable OpenSSL
+ installations.
+ [Feature #6946] [ruby-core:47345]
+
+Thu Dec 20 06:59:52 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: support variable VM/Machine stack sizes.
+ Specified by the following environment variables:
+ - RUBY_THREAD_VM_STACK_SIZE: vm stack size used at thread creation.
+ default: 128KB (32bit CPU) or 256KB (64bit CPU).
+ - RUBY_THREAD_MACHINE_STACK_SIZE: machine stack size used at thread
+ creation. default: 512KB or 1024KB.
+ - RUBY_FIBER_VM_STACK_SIZE: vm stack size used at fiber creation.
+ default: 64KB or 128KB.
+ - RUBY_FIBER_MACHINE_STACK_SIZE: machine stack size used at fiber
+ creation. default: 256KB or 256KB.
+ This values are specified at launched timing. You can not change
+ these values at running time.
+ Environ variables are only *hints* because:
+ - They are aligned to 4KB.
+ - They have minimum values (depend on OSs).
+ - Machine stack settings are ignored by some OSs.
+ Default values especially fiber stack sizes are increased.
+ This change affect Fiber's behavior:
+ (1) You can run more complex program on a Fiber.
+ (2) You can not make many (thousands) Fibers because of
+ lack of address space (on 32bit CPU).
+ If (2) bothers you,
+ (a) Use 64bit CPU with big memory, or
+ (b) Specify RUBY_FIBER_(VM|MACHINE)_STACK_SIZE correctly.
+ You need to choose correct stack size carefully. These values
+ are completely rely on systems (OS/compiler and so on).
+ [Feature #4614], [Bug #7212]
+
+ * vm_core.h (rb_vm_t::default_params): add to record above settings.
+
+ * vm.c (RubyVM::DEFAULT_PARAMS): add new constant to see
+ above setting.
+
+ * thread_pthread.c: support RUBY_THREAD_MACHINE_STACK_SIZE.
+
+ * cont.c: support RUBY_FIBER_(VM|MACHINE)_STACK_SIZE.
+
+ * test/ruby/test_fiber.rb: add tests for above.
+
+ * test/ruby/test_thread.rb: ditto.
+
+Thu Dec 20 06:25:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_fiber.rb: remove a strange single quote character.
+ With this character, this script exits by SyntaxError.
+
+Thu Dec 20 01:03:00 2012 Zachary Scott <zachary@zacharyscott>
+
+ * ext/.document: Add missing ext modules to .document
+ Patch by Ryunosuke SATO [Fixes Github #224]
+
+Wed Dec 19 23:52:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (load_file_internal): use original C string as the filename
+ for parser.
+ reported by whiteleaf at [ruby-list:49085] [ruby-dev:46738]
+ [Bug #7562]
+
+Wed Dec 19 23:36:12 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * marshal.c (marshal_dump, marshal_load): fix SEGV during make rdoc
+ and test failure in TestMarshal#test_gc and test_context_switch
+ on SPARC Solaris 10 compiled with Oracle Solaris Studio 12.3.
+ [Bug #7591] [ruby-dev:46772]
+
+Wed Dec 19 19:34:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_get): nul byte is invalid as constant name.
+
+Wed Dec 19 17:54:18 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks): get rid of race
+ condition. [Bug #7589] [ruby-dev:46763]
+
+Wed Dec 19 16:30:28 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/literals.rdoc: Added 0d decimal format. Thanks Nobu!
+
+Wed Dec 19 16:19:36 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Fixed typo. Thanks to Josh Susser.
+
+Wed Dec 19 16:18:22 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/query_command.rb: Refactored to improve
+ maintainability.
+ * test/rubygems/test_gem_commands_query_command.rb: Note default gems
+ in gem list details.
+
+ * lib/rubygems/uninstaller.rb: Detect all gems for uninstallation.
+ This allows duplicate installs of default gems to be removed.
+ * lib/rubygems/specification.rb: Allow use of ::each_spec.
+ * lib/rubygems/test_case.rb: Added install_default_gems.
+ * test/rubygems/test_gem_commands_uninstall_command.rb: Moved test
+ down to the uninstaller tests.
+ * test/rubygems/test_gem_uninstaller.rb: Test for uninstallation of
+ default gems and duplicate default gems.
+
+Wed Dec 19 15:23:50 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Add () around keyword arguments example for
+ consistency. Thanks to Josh Susser.
+
+Wed Dec 19 01:51:24 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * vm.c (rb_vm_jump_tag_but_local_jump): remove unnecessary 2nd
+ argument.
+
+ * load.c (rb_load_internal): ditto.
+
+ * eval_intern.h (rb_vm_jump_tag_but_local_jump): ditto.
+
+Tue Dec 18 18:57:58 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_wait_writable): don't use rb_thread_wait_fd()
+ because it is for waiting until io readable.
+
+ * io.c (rb_io_wait_writable): always use rb_thread_fd_writable()
+ instead of bare rb_wait_for_single_fd(). we shouldn't ignore
+ return value.
+ * io.c (rb_io_wait_readable): ditto. always use rb_thread_wait_fd().
+
+Tue Dec 18 18:55:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_wait_fd_rw): fix infinite loop bug.
+ rb_wait_for_single_fd() never return positive number.
+
+Tue Dec 18 17:24:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/encoding.rb: Do not remove #! line from document when
+ setting encoding. This allows ruby executables to be parsed as ruby
+ files.
+ * test/rdoc/test_rdoc_encoding.rb: Test for above.
+
+ * lib/rdoc/parser.rb: Set the parser file name of ruby executables
+ correctly.
+ * test/rdoc/test_rdoc_parser.rb: Test for above.
+
+Tue Dec 18 16:46:15 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/literals.rdoc: Used simplified heredoc example that
+ doesn't include method definition. Added heredoc with backticks.
+
+Tue Dec 18 16:38:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/store.rb: Work around RDoc stores from older versions of
+ RDoc.
+ * test/rdoc/test_rdoc_store.rb: Test for above.
+
+Tue Dec 18 16:31:20 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ruby_lex.rb: Return a TkHEREDOC instead of a TkSTRING when
+ the heredoc identifier is followed by a line-end. This allows proper
+ display of some HEREDOCs in source view.
+ * lib/rdoc/ruby_token.rb: Added TkHEREDOC
+ * test/rdoc/test_rdoc_ruby_lex.rb: Test for above.
+
+Tue Dec 18 09:45:14 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * vm.c (rb_vm_make_jump_tag_but_local_jump): take care of the case
+ TAG_JUMP() with TAG_FATAL (ex. rb_fatal()). [ruby-core:50917]
+ [Bug #7570]
+
+ * test/ruby/test_fiber.rb (test_fatal_in_fiber): add a test for above.
+
+ * ext/-test-/fatal/extconf.rb, ext/-test-/fatal/rb_fatal.c: ditto.
+
+Tue Dec 18 13:17:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_trace.c (tracepoint_attr_defined_class): Clean up rdoc for
+ TracePoint#defined_class
+
+Tue Dec 18 12:15:59 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Fixed ruby output of requirements
+ with multiple version specifiers.
+ * test/rubygems/test_gem_ext_cmake_builder.rb: Only look for specific
+ lines in cmake output. Should fix [ruby-trunk - Bug #7579]
+
+Tue Dec 18 11:45:26 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/literals.rdoc: Added 0o octal integers.
+
+Tue Dec 18 12:28:52 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * test/openssl/test_ssl.rb: Use :TLSv1_2_client explicitly in
+ test_tls_v1_2 to prevent upstream bug.
+ [Bug #7197] [ruby-dev:46240]
+
+Tue Dec 18 11:52:34 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/lib/ssl.rb: Enable insertion of empty fragments as a
+ countermeasure for the BEAST attack by default. The default options
+ of OpenSSL::SSL:SSLContext are now:
+ OpenSSL::SSL::OP_ALL & ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS
+ [Bug #5353] [ruby-core:39673]
+
+ * test/openssl/test_ssl.rb: Adapt tests to new SSLContext default.
+
+ * NEWS: Announce the new default.
+
+Tue Dec 18 06:36:12 2012 Koichi Sasada <ko1@atdot.net>
+
+ * method.h: remove `VM_METHOD_TYPE_CFUNC_FRAMELESS' method type.
+ This method type is for optimized CFUNC such as Fixnum#+ and so on.
+ This feature is half-baked and no way to use them.
+ [Background]
+ Now, VM has opt_plus instructions to optimize `+' methods for
+ some Classes (such as Fixnum, Float (flonum)). We call this
+ type of instructions as `specialized instructions'.
+ This simple technique improve simple program dramatically.
+ However, we can make specialized instructions for only several
+ types (classes) and selectors (method names) because a large
+ instruction will be slow. In other words, this technique has no
+ extensibility.
+ To overcome this problem, VM_METHOD_TYPE_CFUNC_FRAMELESS was
+ introduced (r37198). This type is a variant of CFUNC, but called
+ their functions directly without building a method frame.
+ Any CFUNC method can be defined as frameless methods if a method
+ is not needed to make method frame. Frameless methods are faster
+ as specialized instructions (a bit slower, but no need to care).
+ No problem described at
+ http://charlie.bz/blog/why-do-singleton-methods-make-ruby-slow
+ because this technique doesn't see class, but see method body
+ itself. Alias is also no problem.
+ [Problem]
+ However, we can't set frameless method type for polymorphic methods
+ such as Array#[]. Necessity for method frame depends on which
+ parameter type. For example, Fixnum#+ needs method frame if
+ coerce is needed. Current VM_METHOD_TYPE_CFUNC_FRAMELESS is not
+ flexible and need more tuning to introduce it.
+ Expected behavior of frameless method type may be:
+ result = optimized_cfunc(params); /* call optimized cfunc */
+ if (result == Qundef) { result = normal_cfunc(); }
+ This is why I say this feature is half-baked.
+ We need to learn primitive method in Smalltalk more.
+ (I heard this name at RubyConf Taiwan this month. Thanks!)
+ [Conclusion]
+ I remove this feature and consider again.
+ This feature goes to next minor (2.1?).
+ Nobody may use this feature and there is no compatibility issue.
+
+ * proc.c (rb_method_entry_arity): ditto.
+
+ * vm_eval.c, vm_insnhelper.c, vm_method.c: ditto.
+
+Tue Dec 18 04:58:22 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (fill_id_and_klass): TracePoint#defined_class returns
+ singleton class. `set_trace_func' passed attached class (which is
+ attached/modified by singleton class) by 6th block parameter if it
+ is singleton class. Previous behavior follows this spec.
+ However, this method named `defined_class' should return singleton
+ class directly because singleton methods are defined in singleton
+ class. There are no compatible issue because TracePoint is introduced
+ after 2.0.
+ But compatibility with `set_trace_func' is broken. This means that
+ you can not replace all `set_trace_func' code with TracePoint
+ without consideration of this behavior.
+ [Bug #7554]
+
+ * test/ruby/test_settracefunc.rb: change a test to catch up
+ an above change.
+
+Tue Dec 18 03:03:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: speed up node mapping so
+ common cases are evaluated first. Thanks Kevin Menard!
+
+Tue Dec 18 02:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/optparse.rb: Remove 'developer documentation' section from rdoc
+ Patch by Marcus Stollsteimer [ruby-core:50526][Bug #7504]
+
+Tue Dec 18 02:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/matrix.rb (#lup): typo in example [ruby-core:50946][Bug #7582]
+
+Mon Dec 17 18:03:34 2012 Charlie Somerville <charlie@charliesomerville.com>
+
+ * class.c (rewrite_cref_stack, clone_method): rewrite a method's cref
+ stack when cloning into a new class to allow lexical const lookup to
+ work as expected [ruby-core:47834] [Bug #7107]
+ * test/ruby/test_class.rb (class TestClass): related test
+
+Mon Dec 17 13:56:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_flush_buffer_sync2): avoid to return 0. because
+ rb_thread_call_without_gvl2 uses 0 internally.
+ * io.c (io_flush_buffer_async2): adapt the above.
+
+Mon Dec 17 12:05:32 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax/methods.rdoc: Added a description of singleton methods.
+
+Mon Dec 17 11:35:57 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/.document: Added doc/syntax
+
+Mon Dec 17 11:25:32 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/syntax.rdoc: Added syntax guide table of contents
+ * doc/syntax/exceptions.rdoc: Syntax guide for exceptions
+ * doc/syntax/literals.rdoc: Syntax guide for literals
+ * doc/syntax/methods.rdoc: Syntax guide for methods
+
+Mon Dec 17 07:59:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Updated VERSION
+
+ * test/rubygems/test_gem_installer.rb: Fixed ambiguous first argument
+ warning.
+
+ * test/rubygems/test_gem_rdoc.rb: RDoc generation depends on installed
+ version of RDoc.
+
+Sun Dec 16 02:04:41 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (rb_sigaltstack_size): cast sysconf() return value
+ explicitly. Fix compile error on Mac OS X.
+
+Sun Dec 16 00:39:43 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * cont.c (rb_fiber_start): don't enqueue Qnil to async_errinfo_queue.
+ rb_vm_make_jump_tag_but_local_jump() could return Qnil (ex. when
+ finished by Thread.exit). [ruby-dev:45218] [Bug #5993]
+
+ * test/ruby/test_fiber.rb (test_exit_in_fiber): add test for it.
+
+Sat Dec 15 23:56:51 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/pointer.c (rb_fiddle_ptr2cptr): fix error message
+ forgotten to be changed from DL to Fiddle.
+
+Sat Dec 15 23:14:32 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (default_handler): remove rb_register_sigaltstack()
+ call. sigaltstack was already registered when creating threads.
+
+Sat Dec 15 23:08:56 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (rb_sigaltstack_size): new. calculate stack size for
+ sigsegv handler. enlarge value when x86 or x86_64 on Linux.
+ Linux has very small MINSIGSTKSZ size (2048 bytes) and
+ our sigsegv routine need 5KiB at least. [Bug #7141]
+ * internal.h: add declaration of rb_sigaltstack_size().
+ * vm_core.h: remove ALT_STACK_SIZE definition.
+
+ * signal.c (rb_register_sigaltstack): replace ALT_STACK_SIZE with
+ rb_sigaltstack_size();
+ * gc.c (Init_heap): ditto.
+ * vm.c (th_init): ditto.
+
+Sat Dec 15 18:24:21 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (f_round_common): should check overflow.
+
+Sat Dec 15 18:00:00 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (float_rationalize): reduced.
+
+Sat Dec 15 14:18:44 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (finish_writeconv): uses rb_write_internal2 if
+ fptr->write_lock have.
+
+Sat Dec 15 13:57:08 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_owned_p): remove static.
+ * io.c (io_flush_buffer): don't hold mutex if already have.
+ Now recursive lock may occur when following scenario.
+ fptr_finalize -> finish_writeconv_sync -> finish_writeconv
+ -> io_fflush.
+
+Sat Dec 15 13:38:30 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_flush_buffer): uses io_flush_buffer_async2 instead of
+ io_flush_buffer_async.
+ * io.c (io_flush_buffer_async2): new helper function for
+ io_flush_buffer. It uses rb_thread_call_without_gvl2() instead
+ of rb_thread_io_blocking_region.
+ * io.c (io_flush_buffer_sync2): new helper function for
+ io_flush_buffer_async2.
+
+Sat Dec 15 13:04:26 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (internal_write_func2): new helper function for rb_write_internal2().
+ * io.c (rb_write_internal2): new function. it uses
+ rb_thread_call_without_gvl2() instead of rb_thread_io_blocking_region().
+ * io.c (rb_binwrite_string): uses rb_write_internal2 instead of
+ rb_write_internal. [Bug #7134]
+
+Sat Dec 15 12:55:29 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_wait_writable): add to call rb_thread_wait_fd()
+ likes rb_io_wait_readable.
+
+Sat Dec 15 11:54:50 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_wait_writable): don't call rb_thread_fd_writable()
+ when EINTR. EINTR mean signal interrupt was happen. We don't
+ need any wait.
+
+Sat Dec 15 11:53:36 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_wait_fd_rw): remove silly rb_thread_alone()
+ check.
+
+Sat Dec 15 10:22:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_polling): revert but deprecate.
+
+ * include/ruby/intern.h (rb_thread_polling): deprecate.
+
+Sat Dec 15 08:37:01 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * test/rubygems/test_gem_ext_cmake_builder.rb (test_self_build):
+ get rid of false positive.
+
+Sat Dec 15 08:05:56 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb (test_uninitialized, test_backtrace,
+ test_thread_timer_and_interrupt, test_thread_join_in_trap,
+ test_thread_join_current, test_thread_join_main_thread,
+ test_main_thread_status_at_exit, test_thread_status_in_trap,
+ test_thread_status_raise_after_kill, test_mutex_owned,
+ test_mutex_owned2): move these tests from TestThreadGroup class
+ to TestThread because they are not thread group tests.
+
+ * test/ruby/test_thread.rb (test_thread_status_raise_after_kill):
+ add t.join.
+
+ * test/ruby/test_threadgroup.rb: new file. moved ThreadGroup test
+ from test_thread.rb.
+
+Sat Dec 15 08:02:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb (TestThread::Thread::new.): remove
+ th.abort_on_exception change. Test template shouldn't change
+ global flag. It prevent to test a normal case.
+
+Sat Dec 15 06:15:14 2012 Eric Hodel <drbrain@segment7.net>
+
+ * configure.in (HAVE_GCC_ATOMIC_BUILTINS): Set -march=i486 to enable
+ __sync_val_compare_and_swap. Patch by KOSAKI Motohiro.
+ [ruby-trunk - Bug #7485]
+
+Sat Dec 15 03:42:34 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/.document: add fiddle/pointer.c, fiddle/handle.c, and
+ fiddle/win32/lib as documentation.
+
+Sat Dec 15 03:06:40 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * file.c (rb_file_flock): use rb_thread_wait_for() instead of
+ rb_thread_polling(). When getting EAGAIN, we need to wait a
+ while even if no multi threading.
+ * thread.c (sleep_for_polling, rb_thread_polling) removed.
+
+Sat Dec 15 00:03:31 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (rb_f_kill): remove rb_thread_polling() because this
+ has no good effect and makes meaningless 100ms delay. 1)
+ when sending signal to another process, waiting has just silly.
+ 2) when sending signal to current process, 100ms is often not
+ enough time to wait. It depend on kernel behavior. And,
+ rb_thread_polling() doesn't make sense anyway. When rb_thread_alone()
+ is true, it doesn't wait at all and Process.kill() users don't
+ expect threading changes Process.kill() behavior. [Bug #7560]
+
+Fri Dec 14 17:10:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_params): parser_tokline to track the line number at
+ which token started. [ruby-dev:46737] [Bug #7559]
+
+ * parse.y (fcall): operation with starting line number.
+
+ * parse.y (command, primary, method_call): point method name line.
+
+ * parse.y (gettable_gen): return token line for __LINE__.
+
+Fri Dec 14 16:56:59 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_super_method): remove volatile introduced
+ in r38365.
+
+ * vm_insnhelper.c (vm_call_method): use __forceinline to prevent
+ VC++ to make vm_call_general and vm_call_super_method as the same
+ method. Thanks, Heesob Park. [Bug #7556] [ruby-core:50867]
+
+Fri Dec 14 14:59:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_separately):
+ take file and line by using caller_locations if not given.
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_separately):
+ count assertions in separated tests.
+
+Fri Dec 14 14:16:42 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/rubygems_hook.rb: Fixed generation of documentation.
+ Disabled rdoc generation by default to match RubyGems defaults.
+ Reduced diff with RubyGems::RDoc.
+ * test/rdoc/test_rdoc_rubygems_hook.rb: Tests for the above.
+ * test/rubygems/test_gem_rdoc.rb: ditto.
+
+ * lib/rdoc/store.rb: Removed useless variable assignment
+
+Fri Dec 14 13:58:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/rdoc_command.rb: When overwriting
+ documentation, remove existing documentation first.
+
+ * lib/rubygems/server.rb: Fixed documentation links.
+ * test/rubygems/test_gem_server.rb: Test for the above.
+
+ * lib/rubygems/rdoc.rb: Reduced diff with RDoc::RubyGemsHook
+ * test/rubygems/test_gem_rdoc.rb: ditto
+
+Fri Dec 14 04:08:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_separately):
+ added to execute given test source on separate process,
+ catch its resulted exception and raise it on main process.
+
+Fri Dec 14 07:43:44 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: quote strings that begin
+ with non-word characters. Thanks Alex Tambellini!
+ * test/psych/test_yaml.rb: appropriate test case
+
+Thu Dec 13 23:14:17 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_super_method): a workaround for the
+ failure of TestRefinement#test_refine_recursion in Windows.
+ See [ruby-core:50871] for details.
+
+Thu Dec 13 23:10:52 Charlie Somerville <charlie@charliesomerville.com>
+
+ * object.c (Init_Object): use rb_mod_init_copy for Class#initialize_copy
+ * class.c (rb_class_init_copy): rename to class_init_copy_check, performs type
+ checks on arguments to prevent reinitialization of initialized class
+ [ruby-core:50869] [Bug #7557]
+ * class.c (rb_mod_init_copy): use class_init_copy_check if receiver is T_CLASS
+ * test/ruby/test_class.rb (class TestClass): related test
+
+Thu Dec 13 16:53:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/class_module.rb: Fixed duplicate comments for classes and
+ modules from C.
+ * test/rdoc/test_rdoc_class_module.rb: Test for the above.
+
+ * lib/rdoc/parser/c.rb: Reload C variable names to allow proper
+ updates of an ri store for C files.
+ * lib/rdoc/rdoc.rb: ditto.
+ * lib/rdoc/store.rb: ditto.
+ * test/rdoc/test_rdoc_parser_c.rb: Test for the above.
+ * test/rdoc/test_rdoc_store.rb: ditto.
+
+Thu Dec 13 14:20:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/irb*: merge doc from doc/irb/ird.rd and improve overall
+ documentation of IRB
+ * doc/irb/irb.rd: remove stale documentation
+
+Thu Dec 13 14:10:00 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * marshal.c (r_entry0): don't taint classes and modules because
+ Marshal.load just returns the dumped classes and modules.
+ [Bug #7325] [ruby-core:49198]
+
+ * test/ruby/test_marshal.rb: related test.
+
+Thu Dec 13 14:10:13 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_require.rb (TestRequire#test_loaded_features_encoding):
+ need to check compatibility, not equality of encodings.
+
+Thu Dec 13 14:02:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_join): check encoding compatibility before joining
+ strings.
+
+Thu Dec 13 13:06:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (umethod_bind): allow another form of method transplanting
+ from a module via UnboundMethod. [ruby-core:34267][Feature #4254]
+
+Thu Dec 13 12:07:25 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_UNUSED_VAR): new macro to suppress
+ warnings for unused variables.
+
+ * ext/bigdecimal/bigdecimal.c (ENTER): use RB_UNUSED_VAR() to
+ suppress annoying warnings by -Wunused-but-set-variable in gcc 4.6.
+
+Thu Dec 13 11:22:33 2012 Koichi Sasada <ko1@atdot.net>
+
+ * method.h: remove "VM_METHOD_TYPE__MAX" from rb_method_type_t.
+ rb_method_type_t is not a number and "_MAX" causes misunderstanding.
+
+ * proc.c (rb_method_entry_arity): ditto.
+
+ * vm_eval.c (vm_call0_body): ditto.
+
+ * vm_insnhelper.c (vm_call_method): ditto.
+
+Wed Dec 12 21:40:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (Dir::Tmpname#create): deal with a prefix name which
+ starts with tilde as a plain name, not expanding as home directory.
+ [ruby-core:50793] [Bug #7547]
+
+Wed Dec 12 19:48:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: merge JSON 1.7.5.
+ fix tests and other fixes.
+
+Wed Dec 12 18:30:29 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * class.c (rb_prepend_module): move refined methods from the origin
+ of a class to the class, because refinements should have priority
+ over prepended modules.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Wed Dec 12 18:27:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (zone_str): lookup or insert by using st_update() at once.
+
+Wed Dec 12 15:30:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: add -fno-omit-frame-pointer if libexecinfo is used.
+ At least on FreeBSD ruby will crash on getting C backtrace
+ when it is compiled with other than -O0.
+
+ * vm_dump.c: enable backtrace on FreeBSD even if with optimizations.
+
+Wed Dec 12 16:08:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_rdoc.rb (TestRDocRDoc#test_normalized_file_list_non_file_directory):
+ use File::NULL for portability if possible.
+
+Wed Dec 12 16:07:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * method.h (rb_method_flag_t): name a magic number for NOEX_SAFE and
+ NOEX_WITH as NOEX_SAFE_SHIFT_OFFSET.
+
+ * method.h (rb_method_type_t, method_optimized_type): C89 forbids a
+ comma after the last element in enum.
+
+ * proc.c (rb_method_entry_arity), vm_eval.c (vm_call0_body),
+ vm_insnhelper.c (vm_call_method): add VM_METHOD_TYPE__MAX case.
+
+Wed Dec 12 14:16:35 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/class_module.rb: Added RDoc::ClassModule#documented? which
+ checks comment_location. Hide RDoc::ClassModule#comment=.
+ * test/rdoc/test_rdoc_class_module.rb: Test for above.
+
+ * lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml:
+ Fix display of the table of contents in the sidebar.
+
+ * lib/rdoc/generator/template/darkfish/table_of_contents.rhtml:
+ Use #comment_location when displaying classes or modules.
+
+ * test/rdoc/test_rdoc_store.rb: Use comment_location.
+
+Wed Dec 12 13:40:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_getivar): no uninitialized instance variables
+ warnings for non-object if attr method.
+
+Wed Dec 12 06:43:37 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * iseq.c (rb_iseq_parameters): fix limit for optional arguments.
+
+ * test/ruby/test_keyword.rb: tests for above.
+
+ * vm_core.h (struct rb_iseq_struct): update documentation
+ with keyword arguments. [Bug #7540] [ruby-core:50735]
+
+Wed Dec 12 03:45:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_exec): pass exceptions while handling an exception.
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks): propagate exceptions.
+ revert r38293 partially.
+
+Wed Dec 12 03:09:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sample/test.rb (Progress#initialize): add --verbose option and show
+ messages in one line unless --verbose is given.
+
+Wed Dec 12 01:47:02 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_using_refinement): make the method table of an iclass
+ for a refinement that of the refinement, not that of the origin of
+ the refinement, which is set by rb_include_class_new(). This
+ change is needed to make module prepend into a refinement work
+ properly.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Wed Dec 12 01:05:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/make-snapshot: add --disable-rubygem to both MINIRUBY and RUBY.
+ On making miniprelude.c, it seems use MINIRUBY. this fixes #7541
+ but rubygems also needs to be fixed for older rubies.
+
+Wed Dec 12 00:32:11 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/dl/test_func.rb (test_name_with_block, test_bind, test_qsort1):
+ call unbind to release the callback closure because maximum number
+ of callbacks is limited to DL::MAX_CALLBACK (== 5) with pure DL
+ without Fiddle.
+
+Wed Dec 12 00:13:34 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#unbind, #bound?): suppress
+ NoMethodError when Fiddle is available. [ruby-core:50756] [Bug #7543]
+ * test/dl/test_func.rb (test_bound*, test_unbind*): tests for the above.
+
+Tue Dec 11 19:38:37 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/function.c (Fiddle::Function.new): new keyword argument
+ :name to set the name attribute.
+ * ext/fiddle/lib/fiddle/import.rb (import_function, bind_function):
+ set function name by using the :name keyword argument.
+ Re-fixes r38243. [ruby-core:50566]
+ * test/fiddle/test_function.rb (test_name): test for the :name keyword
+ argument and Fiddle::Function#name.
+
+Tue Dec 11 16:57:33 2012 Eric Hodel <drbrain@segment7.net>
+
+ * common.mk: Added --pages-dir to rdoc creation. Now doc/ items show
+ up at top-level.
+ * .document: Moved doc/* entries to doc/.document
+ * doc/.document: ditto
+
+Tue Dec 11 16:44:37 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/options.rb: Added --page-dir option for moving pages in
+ doc/ to the top-level.
+ * lib/rdoc/rdoc.rb: ditto.
+ * test/rdoc/test_rdoc_options.rb: Test for the above.
+ * test/rdoc/test_rdoc_rdoc.rb: ditto.
+
+Tue Dec 11 15:24:05 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/pathname/lib/pathname.rb: Hide private methods from RDoc.
+
+Tue Dec 11 15:11:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/make-snapshot (BASERUBY): add --disable-gem to avoid load gems.
+ [Bug #7541] [ruby-core:50736]
+
+Tue Dec 11 12:00:19 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl/win32/extconf.rb: Fix typo
+ by Santiago Pastorino <santiago@wyeworks.com>
+ https://github.com/ruby/ruby/pull/221 fix GH-221
+
+Tue Dec 11 01:53:37 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix: alias {row|column}_size to {row|column}_count and use
+ the latter.
+ [Bug #7369] [ruby-core:49409]
+
+Tue Dec 11 00:26:58 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * fix the behavior when a module is included into a refinement.
+ This change is a little tricky, so it might be better to prohibit
+ module inclusion to refinements.
+
+ * include/ruby/ruby.h (RMODULE_INCLUDED_INTO_REFINEMENT): new flag
+ to represent that a module (iclass) is included into a refinement.
+
+ * class.c (include_modules_at): set RMODULE_INCLUDED_INTO_REFINEMENT
+ if klass is a refinement.
+
+ * eval.c (rb_mod_refine): set the superclass of a refinement to the
+ refined class for super.
+
+ * eval.c (rb_using_refinement): skip the above superclass (the
+ refined class) when creating iclasses for refinements. Otherwise,
+ `using Refinement1; using Refinement2' creates iclasses:
+ <Refinement2> -> <RefinedClass> -> <Refinement1> -> RefinedClass,
+ where <Module> is an iclass for Module, so RefinedClass is
+ searched before Refinement1. The correct iclasses should be
+ <Refinement2> -> <Refinement1> -> RefinedClass.
+
+ * vm_insnhelper.c (vm_search_normal_superclass): if klass is an
+ iclass for a refinement, use the refinement's superclass instead
+ of the iclass's superclass. Otherwise, multiple refinements are
+ searched by super. For example, if a refinement Refinement2
+ includes a module M (i.e., Refinement2 -> <M> -> RefinedClass,
+ and if refinements iclasses are <Refinement2> -> <M>' ->
+ <Refinement1> -> RefinedClass, then super in <Refinement2> should
+ use Refinement2's superclass <M> instead of <Refinement2>'s
+ superclass <M>'.
+
+ * vm_insnhelper.c (vm_search_super_method): do not raise a
+ NotImplementError if current_defined_class is a module included
+ into a refinement. Because of the change of
+ vm_search_normal_superclass(), the receiver might not be an
+ instance of the module('s iclass).
+
+ * test/ruby/test_refinement.rb: related test.
+
+Mon Dec 10 18:35:25 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_method_entry_without_refinements): use
+ rb_resolve_refined_method() to search superclasses if
+ me->def->orig_me is 0. This change fixes make test-all
+ TESTS="json ruby/test_refinement.rb".
+
+ * test/ruby/test_refinement.rb: related test.
+
+Mon Dec 10 17:59:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/fiddle/win32/*: library ports from DL to Fiddle.
+
+ * ext/dl/win32/extconf.rb: check fiddle. often case dl compiled prior
+ to fiddle, so this change is no meaning. in most cases, simply
+ fiddle/win32 overwrite dl/win32.
+
+Mon Dec 10 15:23:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks): exceptions in event
+ hooks should not propagate outside.
+
+Mon Dec 10 15:11:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): count flip-flop state in local iseq
+ not in each iseqs, so that the keys can be other than hidden
+ strings. [ruby-core:47253] [Bug #6899]
+
+ * vm_insnhelper.c (lep_svar_get, lep_svar_set, vm_getspecial): store
+ flip-flop states in an array instead of a hash.
+
+ * iseq.c (set_relation): main iseq also can has local scope.
+
+Mon Dec 10 10:36:12 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * lib/irb/magic-file.rb: set a encoding, which is detected from
+ the file to read, to the internal encoding.
+ [Bug #4281][ruby-dev:43036]
+
+Mon Dec 10 09:40:19 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/ext/cmake_builder.rb: Added a builder for cmake.
+ * lib/rubygems/ext.rb: ditto.
+ * lib/rubygems/installer.rb: ditto.
+ * test/rubygems/test_gem_ext_cmake_builder.rb: Test for above.
+
+Mon Dec 10 09:13:08 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb: Omit directories when packaging gems like
+ RubyGems 1.8.x
+ * test/rubygems/test_gem_package.rb: Test for above.
+
+Sun Dec 9 17:36:59 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_opt_send): Kernel#send should not use
+ refinements.
+
+ * proc.c (mnew): Kernel#method, Kernel#public_method,
+ Module#instance_method, and Module#public_instance_method should
+ not use refinements.
+
+ * vm_method.c (rb_method_boundp): Kernel#respond_to? should not use
+ refinements.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sun Dec 9 06:19:04 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markdown/entities.rb: Added documentation.
+
+ * lib/rdoc/parser/ruby.rb: Updated style
+
+ * lib/rdoc/ruby_lex.rb: Parse characters up to \u{FFFFF}
+ * test/rdoc/test_rdoc_ruby_lex.rb: Test for above.
+
+Sat Dec 8 22:38:35 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine): don't override Module#include. It's
+ unnecessary now because refinements are activated only in refine
+ blocks.
+
+Sat Dec 8 22:33:26 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c: remove Module#refinements.
+
+ * test/ruby/test_refinement.rb: remove tests for Module#refinements.
+
+Sat Dec 8 13:17:55 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (top_using): raise a RuntimeError if using is called in a
+ module definition or a method definition.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sat Dec 8 15:01:35 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/cleanup_command.rb: Skip default gems when
+ cleaning up.
+ * test/rubygems/test_gem_commands_cleanup_command.rb: Test for above.
+
+ * lib/rubygems/commands/query_command.rb: Fixed listing remote gems.
+
+ * lib/rubygems/dependency_installer.rb: Ignore non-files when looking
+ for local gems.
+ * test/rubygems/test_gem_dependency_installer.rb: Test for above.
+
+ * lib/rubygems/uninstaller.rb: The user must confirm uninstalling gems
+ that have dependencies.
+ * test/rubygems/test_gem_uninstaller.rb: Test for above.
+
+ * lib/rubygems.rb (module Gem): Updated version.
+
+ * test/rubygems/*.pem: Updated to run in FIPS mode.
+ * test/rubygems/test_gem_security.rb: ditto.
+ * test/rubygems/test_gem_security_signer.rb: ditto.
+
+Sat Dec 8 12:34:01 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_normal_superclass): super in a
+ refinement always uses the refined class as its superclass.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sat Dec 8 11:59:59 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine): raise an ArgumentError if a given
+ block is of a Proc object.
+
+ * vm_insnhelper.c (vm_call_method): store refined methods in inline
+ cache to improve performance. It's safe now because blocks cannot
+ be yielded with different refinements in the new specification.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sat Dec 8 11:17:53 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine), vm_eval.c (rb_yield_refine_block):
+ Module#refine activates all refinements defined in that module
+ only in a given block.
+
+ * string.c (sym_to_proc, sym_call): don't use refinements.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sat Dec 8 09:24:42 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_x509name.c: Completed documentation for
+ OpenSSL::X509::Name.
+
+Sat Dec 8 07:57:12 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (iow_size): return size of internal object
+ for ObjectSpace.memsize_of().
+
+ * test/objspace/test_objspace.rb: add a test.
+
+Tue Dec 08 02:39:23 2012 James Edward Gray II <james@graysoftinc.com>
+
+ * lib/csv.rb: A fix for row comparison by Stephen Wattam. [Bug #7528]
+
+Sat Dec 8 01:27:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): no need to
+ check all reports.
+
+Sat Dec 8 00:10:34 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (yield_under, eval_under): do not activate refinements
+ of the receiver in module_eval and instance_eval.
+
+ * eval.c (ruby_Init_refinement): undef Class#refine.
+
+ * eval.c (ruby_Init_refinement): remove Module#using.
+
+ * eval.c (ruby_Init_refinement): main.using should be private.
+
+ * eval.c (rb_mod_refine): the argument of Module#refine should not
+ be a module.
+
+ * insns.def (defineclass): do not activate refinements in a class or
+ module.
+
+Fri Dec 7 23:42:11 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/refinement/refinement.c: include ruby/ruby.h instead of the
+ declaration of rb_warn().
+
+Fri Dec 7 16:07:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/etc.rd: Removed stale documentation file
+ * ext/etc/etc.c: Merged documentation from doc/etc.rd and updated
+ rdoc, added documentation for Etc::Passwd and Etc::Group
+
+Fri Dec 7 16:00:57 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): no need to
+ retry skipped test. this fix makes 40% faster the whole test-all
+ with -j5 on Windows.
+
+Fri Dec 7 14:22:29 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markup/to_joined_paragraph.rb: Completed documentation
+ * lib/rdoc/parser/c.rb: ditto
+ * lib/rdoc/parser/changelog.rb: ditto
+ * lib/rdoc/servlet.rb: ditto
+ * lib/rdoc/store.rb: ditto
+
+ * lib/rdoc/store.rb: Improved HTML error page. Completed
+ documentation
+
+ * lib/rdoc/parser/ruby.rb: Fixed bug attaching a comment to A::B = 42
+ * test/rdoc/test_rdoc_parser_ruby.rb: Test for above
+
+ * test/rdoc/test_rdoc_comment.rb: Removed garbage
+
+Fri Dec 7 14:03:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/timeout.rb (Timeout#timeout): since async_interrupt_timing
+ re-raises a deferred exception, replace the timeout exception with
+ Timeout::Error after it. [Bug #7503]
+
+Fri Dec 7 13:07:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/forwardable.rd: Remove stale documentation file
+ * lib/forwardable.rb: Merge documentation from doc/forwardable.rd
+
+Fri Dec 7 09:47:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * time.c (time_mdump): dump timezone string to private instance variable
+ on marshaling.
+
+ * time.c (time_mload): load timezone string from private instance
+ variable named 'zone'.
+
+Fri Dec 7 01:15:07 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/lib/fiddle/function.rb (Fiddle::Function#name): new
+ attribute needed to switch Win32::Registry from DL to Fiddle.
+
+ * ext/fiddle/lib/fiddle/import.rb (import_function, bind_function):
+ set function name to the returned Fiddle::Function object.
+
+Fri Dec 7 00:11:44 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_refinement.rb: fix some tests to use neither
+ Module#using nor Module#module_eval.
+
+Thu Dec 6 23:27:50 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (ruby_Init_refinement): a new function to enable
+ Refinements with a warning "Refinements are experimental...".
+
+ * ext/refinement/refinement.c, ext/refinement/extconf.rb: a new
+ extension library to enable Refinements.
+
+Thu Dec 6 18:23:05 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * revised r37993 to avoid SEGV/ILL in tests. In r37993, a method
+ entry with VM_METHOD_TYPE_REFINED holds only the original method
+ definition, so ci->me is set to a method entry allocated in the
+ stack, and it causes SEGV/ILL. In this commit, a method entry
+ with VM_METHOD_TYPE_REFINED holds the whole original method entry.
+ Furthermore, rb_thread_mark() is changed to mark cfp->klass to
+ avoid GC for iclasses created by copy_refinement_iclass().
+
+ * vm_method.c (rb_method_entry_make): add a method entry with
+ VM_METHOD_TYPE_REFINED to the class refined by the refinement if
+ the target module is a refinement. When a method entry with
+ VM_METHOD_TYPE_UNDEF is invoked by vm_call_method(), a method with
+ the same name is searched in refinements. If such a method is
+ found, the method is invoked. Otherwise, the original method in
+ the refined class (rb_method_definition_t::body.orig_me) is
+ invoked. This change is made to simplify the normal method lookup
+ and to improve the performance of normal method calls.
+
+ * vm_method.c (EXPR1, search_method, rb_method_entry),
+ vm_eval.c (rb_call0, rb_search_method_entry): do not use
+ refinements for method lookup.
+
+ * vm_insnhelper.c (vm_call_method): search methods in refinements if
+ ci->me is VM_METHOD_TYPE_REFINED. If the method is called by
+ super (i.e., ci->call == vm_call_super_method), skip the same
+ method entry as the current method to avoid infinite call of the
+ same method.
+
+ * class.c (include_modules_at): add a refined method entry for each
+ method defined in a module included in a refinement.
+
+ * class.c (rb_prepend_module): set an empty table to
+ RCLASS_M_TBL(klass) to add refined method entries, because
+ refinements should have priority over prepended modules.
+
+ * proc.c (mnew): use rb_method_entry_with_refinements() to get
+ a refined method.
+
+ * vm.c (rb_thread_mark): mark cfp->klass for iclasses created by
+ copy_refinement_iclass().
+
+ * vm.c (Init_VM), cont.c (fiber_init): initialize th->cfp->klass.
+
+ * test/ruby/test_refinement.rb (test_inline_method_cache): do not skip
+ the test because it should pass successfully.
+
+ * test/ruby/test_refinement.rb (test_redefine_refined_method): new
+ test for the case a refined method is redefined.
+
+Thu Dec 6 17:29:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_here_document): flush string content between new
+ line and :string_embexpr. [ruby-core:48703] [Bug #7255]
+
+Thu Dec 6 16:35:21 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/rake/helper.rb: Load envutil correctly. Removed useless rescue
+ for signal propagation tests
+ * lib/rake/file_utils.rb: Prefer the built ruby.
+ * test/rake/test_rake_functional.rb: ditto
+
+Thu Dec 6 15:20:34 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/context.rb: Don't warn for duplicate methods while loading.
+ * test/rdoc/test_rdoc_context.rb: Test for above.
+
+Thu Dec 6 14:26:22 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/command_manager.rb: Removed string concatenation
+ syntax. [Bug #6265]
+ * lib/rubygems/commands/install_command.rb: ditto
+ * lib/rubygems/commands/uninstall_command.rb: ditto
+ * lib/rubygems/indexer.rb: ditto
+ * lib/rubygems/security/policy.rb: ditto
+ * lib/rubygems/security.rb: ditto
+ * lib/rubygems/uninstaller.rb: ditto
+ * test/rubygems/test_gem_commands_cert_command.rb: ditto
+ * test/rubygems/test_gem_package.rb: ditto
+ * test/rubygems/test_gem_security.rb: ditto
+ * test/rubygems/test_gem_security_policy.rb: ditto
+
+Thu Dec 6 14:10:08 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb: Set rubygems_version before validation.
+ Fixes issue with bundler.
+ * test/rubygems/test_gem_package.rb: Test for above.
+
+ * lib/rubygems/remote_fetcher.rb: Only update the cache when we have
+ permission. [ruby-trunk - Bug #7509]
+ * lib/rubygems/source.rb (class Gem): ditto
+ * test/rubygems/test_gem_remote_fetcher.rb: Test for above.
+ * lib/rubygems/test_utilities.rb: ditto
+
+ * lib/rubygems/specification.rb: Derive base_dir properly for default
+ gems. [ruby-trunk - Bug #7496]
+ * test/rubygems/test_gem_specification.rb: Test for above.
+
+ * lib/rubygems.rb: Untaint Dir.pwd when searching for gemdeps files
+ for operation under $SAFE=1
+
+Thu Dec 06 12:07:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: TracePoint#enable should not cause an error
+ when it is already enabled. TracePoint#disable is too.
+ [ruby-core:50561] [ruby-trunk - Bug #7513]
+
+ * test/ruby/test_settracefunc.rb: add tests.
+
+Thu Dec 6 07:19:58 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Improved display of ChangeLog files as HTML.
+ * test/rdoc*: Test for above.
+
+Thu Dec 6 04:34:19 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_uninterruptible): helper function for providing
+ temporary async_interrupt_timing(Object => :defer)
+
+ * io.c (rb_f_p): use rb_uninterruptible.
+ * io.c (rb_f_p_internal): helper function for rb_f_p().
+ * io.c (struct rb_f_p_arg): new struct for rb_f_p_internal.
+
+ * test/ruby/test_thread.rb (test_async_interrupt_and_p): test for
+ the above.
+
+Thu Dec 6 04:27:10 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_binwrite): check interrupt before io issue.
+ * test/ruby/test_thread.rb (test_async_interrupt_and_io):
+ test for the above.
+
+Thu Dec 6 01:10:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (rb_method_call_status): use Qundef as no self instead of
+ the current self.
+
+ * vm_eval.c (send_internal): public_send does not consider how it is
+ called, as mentioned in r14173. patched by charliesome (Charlie
+ Somerville). [ruby-core:50489] [Bug #7499]
+
+Wed Dec 5 23:50:23 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (getrusage_time): uses clock_gettime() with
+ CLOCK_PROCESS_CPUTIME_ID when available, which provides a 1ns
+ precision on linux. [ruby-core:50495] [Bug #7500]
+ patched by Aman Gupta.
+
+Wed Dec 5 22:46:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_vm_make_proc): save the proc made from the given block so
+ that it will not get collected. [ruby-core:50545] [Bug #7507]
+
+Wed Dec 5 22:13:57 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#bind): When Fiddle is used,
+ @ptr should be updated. This fixes SEGV raised in DL::Function#call
+ after calling DL::Function#bind. [Bug #7516] [ruby-dev:46708]
+
+ * test/dl/test_func.rb (test_bind): test for the above
+
+Wed Dec 5 18:53:00 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * thread.c (rb_thread_s_async_interrupt_timing): have to check ints
+ before jumping out.
+ * test/ruby/test_thread.rb (test_async_interrupt_with_return): add test
+ rescue has to catch a queued async exception at the time of return.
+ * test/ruby/test_thread.rb (test_async_interrupt_with_break): add test
+ rescue has to catch a queued async exception at the time of break.
+
+Wed Dec 5 16:54:28 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/memory_status.rb: suppress warning.
+ A patch from NAKAMURA Usaku.
+
+Wed Dec 5 16:06:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser/changelog.rb: Parse more ChangeLog file variations.
+ * test/rdoc/test_rdoc_parser_changelog.rb: Test for above.
+
+Wed Dec 5 12:17:11 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#initialize, DL::Function#bind):
+ ABI should be set by using CFunc#calltype even when Fiddle is used.
+ When Fiddle is used and a block is given, name should not be ignored.
+ [ruby-core:50562] [Bug #7514]
+
+ * ext/dl/lib/dl/import.rb (DL::Importer#bind_function): should respect
+ abi and name when Fiddle is used.
+
+ * test/dl/test_func.rb (test_name_with_block): test for "name" method
+ with giving a block.
+
+Wed Dec 5 11:55:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/shell.rd, doc/shell.rd.ja: Removed stale doc files
+ * lib/shell.rb, lib/shell/*: Merge and updates docs from doc/shell.rd*
+
+Wed Dec 5 11:42:38 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_settracefunc.rb: disable trace.
+
+Wed Dec 5 11:37:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#macro_defined?): use clearly different
+ strings from conflict markers.
+
+Wed Dec 5 04:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/README: Add rdoc modeline directive and formatting libs
+
+Wed Dec 5 04:04:02 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * test/ruby/test_thread.rb (test_async_interrupt_blocking): bugfix
+ about deferred check
+
+Wed Dec 5 03:35:37 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * vm_core.h (RUBY_VM_CHECK_INTS_BLOCKING): check async queue everytime.
+ * thread.c (sleep_forever): check RUBY_VM_CHECK_INTS_BLOCKING first.
+ * thread.c (sleep_timeval): ditto.
+ * test/ruby/test_thread.rb (test_async_interrupt_blocking): add a test
+ exceptions are correctly deferred and raised on :on_blocking context.
+
+Wed Dec 5 02:36:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk, defs/id.def, template/id.c.tmpl: generate id.c as well as id.h.
+
+Wed Dec 5 00:56:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_owned_p): new method that return current
+ thread have the target mutex or not. [Feature #7505] [ruby-dev:46697]
+ * test/ruby/test_thread.rb (test_mutex_owned, test_mutex_owned2):
+ test for the above.
+ * NEWS: new for the above.
+
+Wed Dec 5 00:05:47 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (make_compiler, add_put_cmd, add_insert_cmd): extract
+ methods.
+
+Tue Dec 4 18:21:04 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/ruby/memory_status.rb (Memory): use fiddle/types if available.
+
+ * test/ruby/memory_status.rb (Memory::Win32): :stdcall is needed on
+ x86 WIN32. This commit partly reverts r38054.
+
+Tue Dec 4 18:05:58 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/lib/fiddle/types.rb: copied from ext/dl/lib/dl/types.rb
+ and modified for Fiddle, needed for migration from DL to Fiddle.
+
+Tue Dec 4 17:57:09 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/lib/fiddle/import.rb (import_function, bind_function):
+ should respect call_type for migration from DL to Fiddle.
+ [Bug #7484] [ruby-core:50405]
+
+Tue Dec 4 16:54:00 2012 Eric Hodel <drbrain@segment7.net>
+
+ * .document: Added ChangeLog and doc/ChangeLog-* as documentation
+
+Tue Dec 4 16:47:46 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser/changelog.rb: Added a ChangeLog parser to RDoc.
+ * lib/rdoc/parser.rb: ditto
+ * test/rdoc/test_rdoc_parser_changelog.rb: Test for above.
+
+Tue Dec 4 16:23:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (path2class, path2module): use PRIsVALUE.
+
+ * marshal.c (w_object, marshal_dump, marshal_load): use
+ rb_check_funcall if possible.
+
+ * marshal.c (w_object, marshal_dump, r_object0, marshal_load): use
+ RB_GC_GUARD() (directly or indirectly) instead of volatile.
+
+ * variable.c (rb_path_to_class): prevent the argument from GC.
+
+Tue Dec 04 13:55:07 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_opts.h: enable optimization - operand unification.
+ Operand unification technique enable to combine
+ an instruction and specific operands and make new
+ instruction.
+
+ * defs/opt_operand.def: add several configuration
+ of operand unification.
+
+ * insns.def: use `int' instead to suppress warning.
+
+Mon Dec 3 17:58:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y: replace parser->enc with current_enc.
+
+Tue Dec 4 08:33:46 2012 Eric Hodel <drbrain@segment7.net>
+
+ * README.EXT: Converted to RDoc format
+ * README.EXT.ja: ditto
+
+Tue Dec 4 08:32:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/driver.rb: Fixed ri page display for files with
+ extensions.
+ * test/rdoc/test_rdoc_ri_driver.rb: Test for above
+
+Tue Dec 4 04:11:50 2012 Eric Hodel <drbrain@segment7.net>
+
+ * .document: Add NEWS for `ri ruby:NEWS`
+ * NEWS: Set format as rdoc
+ * doc/NEWS-1.8.7: ditto
+ * doc/NEWS-1.9.1: ditto
+ * doc/NEWS-1.9.2: ditto
+ * doc/NEWS-1.9.3: ditto
+
+Mon Dec 3 20:37:22 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.c: check VM_COLLECT_USAGE_DETAILS.
+
+Mon Dec 3 20:28:02 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_specialized_instruction):
+ change condition of using `opt_send_simple'.
+ More method invocations can be simple.
+
+Mon Dec 3 20:03:38 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_objectspace.rb: skip RuntimeError
+ which says a message "can't modify frozen File".
+ Is that correct behavior?
+
+Mon Dec 03 20:00:19 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.c: vm_analysis_insn should be static.
+
+Mon Dec 3 19:10:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (Init_Random), rational.c (Init_Rational): make marshal
+ methods private. [Feature #6539]
+
+Mon Dec 3 18:29:27 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.h: iseq_catch_table_entry::catch_type should be
+ Fixnum because they are pushed into Array in a compiler.
+ [Bug #7502]
+
+ * test/ruby/test_objectspace.rb: add a test of this issue.
+
+Mon Dec 3 18:25:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl (preserved_ids): "empty?" is not an attribute name.
+
+Mon Dec 3 16:23:09 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c (vm_backtrace_to_ary): check negative size (2nd arg).
+
+Mon Dec 3 15:50:33 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/ruby-additional.el (ruby-mode-set-encoding): Unbreak by
+ fixing a typo, s/set/setq/.
+
+Mon Dec 3 14:14:19 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): joke shouldn't use id.h defined ids.
+
+ * id.c (Init_id): ditto.
+
+ * common.mk: fix dependency.
+
+Mon Dec 3 12:43:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-mode.el (ruby-block-end-re, ruby-delimiter)
+ (ruby-mode-syntax-table, ruby-parse-partial, ruby-beginning-of-indent):
+ merge from Emacs.
+
+ * misc/ruby-mode.el (ruby-calculate-indent): fix indentation of
+ argument lines in parentheses. [Bug #5140]
+
+Mon Dec 3 07:52:41 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser.rb: Improved modeline support. Patch by nobu.
+ * test/rdoc/test_rdoc_parser.rb: Test for above.
+
+Sun Dec 3 00:06:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): stop checking string
+ taintness. [Bug #5508] [ruby-core:40510]
+
+Sun Dec 2 19:26:47 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * thread.c (RB_GC_SAVE_MACHINE_CONTEXT, rb_gc_save_machine_context):
+ extract rb_gc_save_machine_context to RB_GC_SAVE_MACHINE_CONTEXT.
+ NOTE: machine_regs and machine_stack_end must be set in current scope.
+
+Sun Dec 2 18:46:24 2012 Koichi Sasada <ko1@atdot.net>
+
+ * array.c, enum.c, insns.def, io.c, numeric.c, parse.y, process.c,
+ range.c: use prepared IDs.
+ A patch from charliesome (Charlie Somerville).
+ [Bug #7495]
+
+ * common.mk: add dependency to id.h.
+
+ * common.mk: replace ID_H_INCLUDES with id.h.
+
+Sun Dec 2 16:48:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/weakref.rb (rdoc): Clean up usage, add example,
+ note ArgumentError on WeakRef.new
+
+Sun Dec 2 16:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * gc.c (WeakMap): Add doc for internal reference, use lib/weakref.rb
+
+Sun Dec 2 07:24:23 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parser.rb: Parse files with a -*- rdoc -*- modeline
+ * test/rdoc/test_rdoc_parser.rb: Test for above
+
+Sun Dec 2 06:02:00 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * gc.h (SET_MACHINE_STACK_END): add volatile for preventing
+ harmful optimization. [ruby-dev:46665] [Bug #7468]
+
+Sun Dec 2 05:01:58 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (rb_iseq_line_trace_each): iterate `line' event only.
+
+ * test/ruby/test_iseq.rb: add a test for this change.
+
+Sun Dec 2 02:46:04 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: add TracePoint#inspect.
+
+ * test/ruby/test_settracefunc.rb: add a test for this change.
+
+Sat Dec 1 21:18:19 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_backtrace.rb: add a test for
+ Thread::Backtrace::Location#inspect.
+ BTW, tests for `caller_locations' are not enough.
+ Any volunteers are welcome.
+
+Sat Dec 1 21:06:58 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c (location_inspect_m): add
+ Thread::Backtrace::Location#inspect.
+ It same as loc_obj.to_s.inspect.
+
+Sat Dec 1 19:24:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_puts): recurse for the argument itself, not converted
+ array elements. [ruby-core:42444] [Bug #5986]
+
+Sat Dec 1 19:01:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (w_object, r_object0): call private marshal methods.
+ [Feature #6539]
+
+Sat Dec 1 18:52:22 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/cleanup_command.rb: Fix cleanup command for
+ multiple gems. [ruby-trunk - #7481] by Kouhei Sutou
+ * test/rubygems/test_gem_commands_cleanup_command.rb: Test for above.
+ * lib/rubygems.rb: Autoload Gem::Source to prevent test failures
+
+Sat Dec 1 18:17:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (Init_Complex), time.c (Init_Time): make marshal methods
+ private. [Feature #6539]
+
+ * object.c (Init_Object): make remove_instance_variable public.
+ [Feature #6539]
+
+ * id.c (Init_id), template/id.h.tmpl: add initialize_{copy,clone,dup}
+ and respond_to_missing?.
+
+ * vm_method.c (rb_method_entry_make): make above methods private.
+ [Feature #6539]
+
+Sat Dec 1 16:40:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb: move ConditionVariable related test
+ into test/thread/test_cv.rb.
+ * test/thread/test_cv.rb: new file.
+ * test/thread/test_cv.rb (test_condvar_empty_signal): new tests.
+ * test/thread/test_cv.rb (test_condvar_empty_broadcast): ditto.
+
+Sat Dec 1 15:14:25 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_thread.rb (test_cv_wait_deadlock): enable
+ cv deadlock test.
+
+Sat Dec 1 14:23:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (ConditionVariable): use hash instead of array for
+ @waiters.
+ * test/thread/test_queue.rb (test_sized_queue_and_wakeup): remove
+ a test because @waiters no longer have a chance to duplicated. Now it's
+ a hash.
+
+Sat Dec 1 17:16:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-electric.el (ruby-electric-curlies): use kill-region
+ instead of interactive command delete-backward-char.
+
+Sat Dec 1 17:12:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/inf-ruby.el (inferior-ruby-mode): fix the
+ compilation-shell-minor-mode configuration. a patch by
+ j2petkov (Jean-Christophe Petkovich) in [ruby-core:46518].
+ [Bug #6742]
+
+Sat Dec 1 15:05:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_helper): use NAMLEN() to tell the length of d_name
+ instead of strlen(), which can access beyond the boundary.
+
+Sat Dec 1 13:48:13 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Don't add default gems to $LOAD_PATH
+ as they are already there.
+
+Sat Dec 1 12:22:17 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * re-added r38053 that is reverted by r38061. Problems by r38053
+ are resolved by r38096. r38096 removed GEM_SKIP configuration.
+
+ The below is ChangeLog of r38053:
+
+ * defs/default_gems: Add base directory column.
+
+ * tool/rbinstall.rb:
+ - Install .gemspecs of default gem to
+ #{GEM_HOME}/specifications/default/.
+ - Update files parameter of .gemspecs by relative path from
+ library directory.
+
+Sat Dec 1 11:09:12 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * variable.c (rb_class_path_no_cache): add a function to get the class
+ path without caching the computed path. Some classes are frozen, and
+ will raise an exception without this.
+
+ * probes.d (cmethod-entry, cmethod-return): separate cmethods from
+ regular methods to match set trace func.
+
+ * probes_helper.h: refactor macros. Fix probes to avoid calling
+ #inspect when profiling.
+
+ * insns.def: update for use with new macros.
+
+ * vm_eval.c: ditto
+
+ * vm_insnhelper.c: ditto
+
+ * test/dtrace/test_singleton_function.rb: fix test for new output.
+
+ * test/dtrace/test_cmethod.rb: test the cmethod probes.
+
+Sat Dec 1 09:44:16 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/rdoc/test_rdoc_options.rb: Windows drive letters are
+ case-insensitive.
+
+Sat Dec 1 09:42:13 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Search for gem deps file up the directory tree.
+ * test/rubygems/test_gem.rb: Test for above.
+
+Sat Dec 1 09:33:32 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/runner.rb: Set GEM_HOME, GEM_PATH and GEM_SKIP to empty set.
+ With default_gem support in RubyGems GEM_SKIP prevents loading of
+ built-in gems.
+
+Sat Dec 1 07:16:17 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * compile.c (ADD_CATCH_ENTRY): add a cast to fix SEGV with x64 mingw
+ on Windows 8. Without cast, 0 might be non zero value at higher bits
+ in rb_ary_new3().
+ [ruby-core:50258] [Bug #7456]
+
+Sat Dec 1 04:07:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (parser.utf8): remove unused property.
+
+ * parse.y (UTF8_ENC): remove unused macro.
+
+ * parse.y (parser_tokadd_utf8): use rb_utf8_encoding() directly.
+
+Sat Dec 1 03:49:45 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/sync.rb (Sync_m#sync_synchronize): add Thread.async_interrupt_timing
+ for protecting from async interrupt.
+ * lib/sync.rb (Sync_m#sync_lock): ditto.
+
+Sat Dec 1 03:38:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (ConditionVariable#broadcast): s/RuntimeError/StandardError/
+ * lib/thread.rb (ConditionVariable#signal): ditto.
+
+Sat Dec 1 03:29:52 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (SizedQueue#pop): rewrite by using ConditionVariable.
+ * lib/thread.rb (SizedQueue#push): ditto.
+ * lib/thread.rb (SizedQueue#max): ditto.
+ * lib/thread.rb (Queue#pop): ditto.
+ * lib/thread.rb (Queue#push): ditto.
+
+ * lib/thread.rb (SizedQueue#num_waiting): adopt the above changes.
+ * lib/thread.rb (SizedQueue#initialize): ditto.
+ * lib/thread.rb (Queue#num_waiting): ditto.
+ * lib/thread.rb (Queue#initialize): ditto.
+ * test/thread/test_queue.rb (test_sized_queue_and_wakeup): ditto.
+
+Sat Dec 1 03:45:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (Thread.async_interrupt_timing): fix RDoc.
+ :never is not used any more.
+
+Sat Dec 1 02:56:19 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c: add RubyVM::InstructionSequence (ISeq) inspection methods.
+ * ISeq#path returns path of this ISeq written.
+ * ISeq#absolute_path returns absolute path.
+ * ISeq#label returns label (method name and so on).
+ * ISeq#base_label returns base label (see Thread::Backtrace::Location).
+ * ISeq#first_lineno returns first line number of this ISeq.
+ * ISeq.of(obj) returns ISeq object which obj (Proc or Method)
+ is contains.
+
+ * test/ruby/test_iseq.rb: add tests.
+
+Sat Dec 1 02:58:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * include/ruby/ruby.h (rb_event_flag_t): Maintain integer precision
+ for clang error (VALUE aka unsigned long vs unsigned int)
+
+Sat Dec 1 02:53:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/rubygems/test_gem_dependency_installer.rb: Use Gem.read_binary
+ instead of File.binread for ruby 1.8 compatibility in the rubygems
+ source repository. Updates r38075
+
+Sat Dec 1 02:33:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_threadptr_interrupt_mask, async_interrupt_timing_func):
+ merge into them into rb_thread_s_async_interrupt_timing.
+ * thread.c (rb_thread_s_async_interrupt_timing): ditto.
+
+Sat Dec 1 02:11:47 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_threadptr_interrupt_mask): add argument check.
+ * thread.c (async_interrupt_timing_arg_check_i): helper function
+ for the above.
+ * test/ruby/test_thread.rb (test_async_interrupt_timing_invalid_argument):
+ test for the above.
+
+Sat Dec 1 01:19:34 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (ConditionVariable#broadcast): protect from
+ async interrupt by using Thread.async_interrupt_timing.
+ * lib/thread.rb (ConditionVariable#signal): ditto.
+ * lib/thread.rb (ConditionVariable#wait): ditto.
+
+Sat Dec 1 02:04:23 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err):
+ raise if assert_in_out_err misused.
+
+Sat Dec 1 02:08:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rdoc/test_rdoc_rubygems_hook.rb
+ (TestRDocRubygemsHook#test_setup_unwritable): 1. check the existence
+ of the file(directory) before touch it. 2. remove test
+ file(directory) after the test. see [ruby-core:50388].
+
+Sat Dec 1 01:51:06 2012 Koichi Sasada <ko1@atdot.net>
+
+ [EXPERIMENTAL]
+ * iseq.c: add following two methods.
+ * ISeq#line_trace_all returns all line traces (line numbers)
+ * ISeq#line_trace_specify(pos, set) set `pos'th line event to
+ specified_line event (if set is true).
+ These features are introduced for debuggers (mainly to make
+ breakpoint).
+
+ * iseq.h: add decl. of C APIs.
+
+ * test/ruby/test_iseq.rb: add tests.
+
+ * vm_trace.c: add `specified_line' event.
+
+ * include/ruby/ruby.h: ditto.
+
+Sat Dec 1 01:49:52 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_dependency_installer.rb: gems are of course
+ binary files, so use a binary reading method when reading it.
+ see [ruby-core:50388].
+
+Sat Dec 1 01:21:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/command.rb (Gem::Command#get_all_gem_names_and_versions):
+ who assumes that the pathname of a gem never contains ':' ?
+ yes, on Unixen pathnames can contain ':', and on Windows they almost
+ certainly contain ':'. see [ruby-core:50388].
+
+ * lib/rubygems/requirement.rb (Gem::Requirement::PATTERN_RAW): extract
+ the regexp to match the version specifier from PATTERN to use in
+ above method.
+
+Sat Dec 1 00:48:19 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/extconf.rb, ext/fiddle/function.c
+ (Fiddle::Function::STDCALL): FFI_STDCALL is not a macro, but an
+ enumeration. [ruby-core:50398] [Bug #7483]
+
+Sat Dec 1 00:08:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_installer.rb
+ (TestGemInstaller#test_check_executable_overwrite_other_non_gem):
+ on Windows, rubygems always generate a wrapper .bat file when
+ installing a file into bin, so testing no-overwrite a wrapper file
+ and a non-wrapper file is nonsense. see [ruby-core:50388].
+
+Fri Nov 30 23:39:58 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_installer.rb
+ (TestGemInstaller#test_check_executable_overwrite_default_bin_dir):
+ if the executable to be overwritten was generated by rubygems, the
+ error message differs from the only copied one's.
+ see [ruby-core:50388].
+
+Fri Nov 30 23:27:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rubygems/test_gem_ext_ext_conf_builder.rb
+ (TestGemExtExtConfBuilder::test_class_make): reading with binary mode
+ of course introduce \r on Windows. see [ruby-core:50388].
+
+Fri Nov 30 23:11:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/specification.rb
+ (Gem::Specification.validate_permissions): don't check executability
+ of the source on Windows. they will be wrapped to .bat files when
+ installing. see [ruby-core:50388].
+
+Fri Nov 30 22:44:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (rb_vm_struct): add thread_destruct_lock field.
+ * thread.c (Init_Thread): ditto.
+ * thread.c (rb_vm_gvl_destroy): ditto.
+
+ * thread.c (thread_start_func_2): make sure vm->running_thread
+ don't point to dead thread.
+ * thread.c (timer_thread_function): close a race against thread
+ destruction. [Bug #4911][ruby-dev:43859]
+
+ * vm_core.h (rb_thread_set_current): reset running time of
+ current thread instead of previous thread. We no longer
+ assume previous running thread still live.
+
+Fri Nov 30 21:57:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * revert r38053 because it causes too many test failures.
+ if you've already installed r38053 or later, remove the installed
+ lib/ruby/gems/2.0.0 directory and reinstall this revision or later.
+
+Fri Nov 30 21:07:56 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit/parallel.rb (Test::Unit::Worker.run): wrap LoadError
+ because it's Gem::LoadError sometimes. see [Bug #6882]
+
+Fri Nov 30 20:47:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: TracePoint#self returns invoking/exiting thread object
+ at thread_begin/end event.
+
+ * test/ruby/test_settracefunc.rb: fix test.
+
+Fri Nov 30 19:55:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/memory_status.rb (Memory::Win32): use fiddle instead of dl,
+ but I doubt fiddle is not compatible with dl. (if you are interested,
+ see the diff.) [ruby-core:50194] [Bug #7443]
+
+Fri Nov 30 19:37:44 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * defs/default_gems: Add base directory column.
+
+ * tool/rbinstall.rb:
+ - Install .gemspecs of default gem to
+ #{GEM_HOME}/specifications/default/.
+ - Update files parameter of .gemspecs by relative path from
+ library directory.
+
+Fri Nov 30 19:30:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_trace.c:
+ tracepoint_attr_return_value (TracePoint#return_value):
+ include `:b_return` for method doc
+ tracepoint_enable_m, tracepoint_disable_m (#enable/#disable):
+ don't have block argument, document block scope
+
+Fri Nov 30 18:52:56 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (tracepoint_disable_m, tracepoint_enable_m):
+ fix block parameter.
+ No argument should be given to a block which is passed
+ to TracePoint#enable (and disable).
+
+Fri Nov 30 18:23:26 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: rename Thread.control_interrupt
+ to Thread.async_interrupt_timing.
+ The option name `:never' is also changed to `:defer'.
+ [ruby-core:50375] [ruby-trunk - Feature #6762]
+
+ * thread.c: remove Thread.check_interrupt.
+ This method is difficult to understand by name.
+
+ * thread.c: add Thread.async_interrupted?.
+ This method check any deferred async interrupts.
+
+ * test/ruby/test_thread.rb: change tests for above.
+
+Fri Nov 30 18:24:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_trace.c: Documentation for TracePoint API
+ [ruby-core:47243] [Feature #6895]
+
+Fri Nov 30 17:43:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_cmp_m): try to compare with to_str result if
+ possible before calling <=> method. [ruby-core:49279] [Bug #7342]
+
+ * string.c (rb_str_cmp_m): use rb_check_funcall instead of respond_to
+ and call.
+
+ * string.c (rb_str_cmp_m): return fixed value, one of -1,0,+1 always.
+
+Fri Nov 30 16:19:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (rb_vm_bugreport): get rid of calling methods in sigsegv
+ handler. based on a patch by charliesome (Charlie Somerville)
+ [ruby-core:49573] [Bug #7402]
+
+Fri Nov 30 16:05:44 2012 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS: Added RubyGems 2.0.0
+
+Fri Nov 30 15:24:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): fix false usage of local variable, it cannot
+ appear in fname state [ruby-core:49659] [Bug #7408]
+
+Fri Nov 30 15:20:12 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb: Load YAML for building gems.
+ * test/rubygems/test_gem_commands_contents_command.rb: Sort expected
+ output of default gem contents. Re-fixes r38004 and r38005.
+
+Fri Nov 30 15:15:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * vm_trace.c (set_trace_func): Formatting of params and events
+
+Fri Nov 30 14:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/net/http.rb: Net::HTTP::Patch to list of HTTP Request Classes
+ Patch by Ryunosuke SATO [Fixes #217 on github]
+
+Fri Nov 30 14:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/cgi.rb: CGI example for HTML generation
+ Patch by Marcus Stollsteimer [ruby-core:50303] [Bug #7465]
+
+Fri Nov 30 13:52:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * time.c: Documentation improvements, grammar and formatting
+ Patch by Bernd Homuth [ruby-core:49203] [Bug #7326]
+
+Fri Nov 30 13:48:33 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc.rb: Set version to 4.0.0.preview2
+ * lib/rubygems.rb: Set version to 2.0.0.preview2
+
+Fri Nov 30 13:11:53 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/setup_command.rb: Remove old files on install
+ of RubyGems. (not by rbinstall.rb).
+ * test/rubygems/test_gem_commands_setup_command.rb: Test for above.
+
+Fri Nov 30 12:47:59 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/abbrev.rb (Abbrev#abbrev): A fixed string prefix pattern
+ should only match the beginning of each word, not the beginning
+ of every line in it.
+
+ * lib/abbrev.rb (Abbrev#abbrev): Stop using a regexp that causes a
+ false warning. [Bug #7471]
+
+Fri Nov 30 12:30:55 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/test_abbrev.rb: Add tests for lib/abbrev.rb.
+
+Fri Nov 30 12:27:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/spec_fetcher.rb: Allow prerelease spec fetching to fail
+ for bundler.
+ * test/rubygems/test_gem_spec_fetcher.rb: Test for above.
+
+Fri Nov 30 12:20:53 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake/backtrace.rb: Removed duplication in
+ Rake::Backtrace::SUPPRESSED_PATHS
+ * test/rake/test_rake_backtrace.rb: Skip tests when tmpdir is in the
+ suppressed pattern.
+
+Fri Nov 30 11:07:45 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * revert r37993 to avoid SEGV in tests.
+
+Fri Nov 30 10:38:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/ri/driver.rb: Relaxed matching for pages to be more
+ user-friendly.
+ * test/rdoc/test_rdoc_ri_driver.rb: Test for above.
+
+Fri Nov 30 09:50:16 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/markdown.rb: Fixed warnings with -w
+
+Fri Nov 30 09:38:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (RB_GC_GUARD_PTR): add note.
+
+ * vm_backtrace.c (backtrace_to_str_ary): use RB_GC_GUARD() instead of
+ RB_GC_GUARD_PTR() which has no effect.
+ (backtrace_to_location_ary): ditto.
+ (vm_backtrace_to_ary): ditto.
+
+Fri Nov 30 09:22:52 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/contents_command.rb: Sort output from command.
+ Replaces r38004, r38005
+ * test/rubygems/test_gem_commands_contents_command.rb: ditto.
+
+ * lib/rubygems/defaults.rb: Use Gem.path_separator for jruby support.
+ * lib/rubygems/path_support.rb: ditto
+
+Fri Nov 30 08:34:03 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/generator/darkfish.rb: Silenced warning
+ * test/rdoc/test_rdoc_rdoc.rb: ditto
+
+ * lib/rdoc/markup/parser.rb: Use byteslice when available for
+ performance
+ * test/rdoc/test_rdoc_markup_parser.rb: Test for above
+ * lib/rdoc/test_case.rb: ditto
+
+ * lib/rdoc/parser/ruby.rb: Fixed bug parsing yield({})
+ * test/rdoc/test_rdoc_parser_ruby.rb (end):
+
+ * lib/rdoc/rubygems_hook.rb: Skip default gems. Display generator
+ name properly.
+ * test/rdoc/test_rdoc_rubygems_hook.rb: Test for above
+
+ * lib/rdoc/servlet.rb: Fixed typo.
+
+Fri Nov 30 08:09:56 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c : remove a unused function.
+
+Fri Nov 30 07:46:42 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (rb_objspace_call_finalizer): finalize_deferred may free up
+ a object which is reachable from a part after this function,
+ e.g. ruby_vm_destruct(). [ruby-dev:46647] [Bug #7452]
+
+ * test/ruby/test_gc.rb (test_finalizing_main_thread): add a test
+ for above.
+
+Fri Nov 30 07:43:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_interrupted): avoid warning of
+ implicit conversion.
+
+ * thread.c (rb_threadptr_execute_interrupts): ditto.
+
+Fri Nov 30 07:34:28 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: add GC guards.
+
+Fri Nov 30 07:21:33 2012 Koichi Sasada <ko1@atdot.net>
+
+ [EXPERIMENTAL: NEED DISCUSS]
+ * vm_trace.c: add events
+ * :thread_begin - hook at thread beginning.
+ * :thread_end - hook at thread ending.
+ * :b_call - hook at block enter.
+ * :b_return - hook at block leave.
+ This change slow down block invocation.
+ Please try and give us feedback until 2.0 code freeze.
+
+ * include/ruby/ruby.h: ditto.
+
+ * compile.c (rb_iseq_compile_node): ditto.
+
+ * insns.def: ditto.
+
+ * thread.c: ditto.
+
+ * vm.c: ditto.
+
+ * include/ruby/debug.h: add a comment.
+
+ * test/ruby/test_settracefunc.rb: add a tests.
+
+Fri Nov 30 06:56:30 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * test/minitest/*: Imported minitest 4.3.2 (r8027)
+
+Fri Nov 30 04:16:29 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake/*: Updated to rake 0.9.5
+ * test/rake/*: ditto.
+ * NEWS: ditto.
+
+Fri Nov 30 02:53:47 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * vm.c: add a return hook when a method raises an exception.
+
+ * probes_helper.h: look up klass and method if none are provided.
+
+ * eval.c: update macro usage.
+
+ * vm_eval.c: ditto.
+
+ * vm_insnhelper.c: ditto.
+
+ * test/dtrace/test_function_entry.rb: test for change.
+
+Fri Nov 30 02:27:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * compile.c (compile_array_): refix r37991 remove assertion:
+ it is true only if type == COMPILE_ARRAY_TYPE_HASH.
+ [ruby-dev:46658] [Bug #7466]
+
+ * vm.c (m_core_hash_from_ary): add assertion instead of above.
+
+ * vm.c (m_core_hash_merge_ary): ditto.
+
+Thu Nov 29 19:15:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (compile_array_): hash elements must be paired even for
+ literal elements. [ruby-dev:46658] [Bug #7466]
+
+Thu Nov 29 22:39:35 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/openssl/ossl_ssl.c (ssl_npn_encode_protocol_i): fix byte order
+ issue on big-endian architecture [ruby-core:50292] [Bug #7463]
+
+Thu Nov 29 22:23:31 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/openssl/test_cipher.rb (test_ctr_if_exists): add CTR mode test
+ if underlying OpenSSL supports it. See #4408
+
+Thu Nov 29 21:42:16 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_method_entry_make): add a method entry with
+ VM_METHOD_TYPE_REFINED to the class refined by the refinement if
+ the target module is a refinement. When a method entry with
+ VM_METHOD_TYPE_UNDEF is invoked by vm_call_method(), a method with
+ the same name is searched in refinements. If such a method is
+ found, the method is invoked. Otherwise, the original method in
+ the refined class (rb_method_definition_t::body.orig_def) is
+ invoked. This change is made to simplify the normal method lookup
+ and to improve the performance of normal method calls.
+
+ * vm_method.c (EXPR1, search_method, rb_method_entry),
+ vm_eval.c (rb_call0, rb_search_method_entry): do not use
+ refinements for method lookup.
+
+ * vm_insnhelper.c (vm_call_method): search methods in refinements if
+ ci->me is VM_METHOD_TYPE_REFINED. If the method is called by
+ super (i.e., ci->call == vm_call_super_method), skip the same
+ method entry as the current method to avoid infinite call of the
+ same method.
+
+ * class.c (include_modules_at): add a refined method entry for each
+ method defined in a module included in a refinement.
+
+ * class.c (rb_prepend_module): set an empty table to
+ RCLASS_M_TBL(klass) to add refined method entries, because
+ refinements should have priority over prepended modules.
+
+ * proc.c (mnew): use rb_method_entry_with_refinements() to get
+ a refined method.
+
+ * test/ruby/test_refinement.rb (test_inline_method_cache): do not skip
+ the test because it should pass successfully.
+
+ * test/ruby/test_refinement.rb (test_redefine_refined_method): new
+ test for the case a refined method is redefined.
+
+Thu Nov 29 17:45:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_const_set): show namespace in warning messages.
+ [Feature #7190]
+
+Thu Nov 29 17:31:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems.rb (Gem.load_yaml): return if Kernel#gem is not defined
+ yet. This causes crash if test-all requires libraries in a certain
+ order. A simple reproducible code is
+ ruby --disable-gem -e'require"yaml";require"minitest/autorun"'
+
+Thu Nov 29 17:19:26 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/tracer.rb: Updated to match removal of custom_require from
+ RubyGems.
+ * test/test_tracer.rb: ditto. Improved failure message if the test
+ fails
+
+Thu Nov 29 17:15:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * gc.c: Documentation for GC, GC::Profiler, ObjectSpace, and
+ ObjectSpace::WeakMap [ruby-core:50245] [Bug #7449]
+
+Thu Nov 29 17:12:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/generic_erb.rb, tool/id2token.rb: add --path-separator option
+ for mingw where make and built ruby live in different world.
+
+ * tool/vpath.rb: extract from tool/instruction.rb.
+
+Thu Nov 29 17:11:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/io/wait/test_io_wait.rb (TestIOWait#fill_pipe):
+ Errno::EWOULDBLOCK may not be the same as Errno::EAGAIN. patch by
+ phasis68 (Heesob Park) at [ruby-core:49894]. [Bug #7420]
+
+Thu Nov 29 17:03:38 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/test_case.rb: Determine path to certificates to avoid
+ build-dir problems.
+ * test/rubygems/test_gem_security_signer.rb: Use predetermined paths
+ to avoid build-dir problems.
+
+Thu Nov 29 16:18:14 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/test_case.rb: Disable loading of keys and certificates
+ outside rubygems or ruby tests as the files are not available (or
+ necessary).
+
+Thu Nov 29 16:14:41 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c (rb_debug_inspector_open): use RARRAY_LENINT() for
+ int variable.
+
+Thu Nov 29 15:59:55 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h: add rb_debug_inspector_* APIs.
+
+ * vm_backtrace.c: ditto.
+
+ * common.mk: add dependency from vm_backtrace.o to
+ include/ruby/debug.h.
+
+ * proc.c (rb_binding_new_with_cfp): constify.
+
+ * vm.c (rb_vm_get_ruby_level_next_cfp): constify.
+
+ * vm_core.h, vm_trace.c: move decls.
+
+Thu Nov 29 15:56:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/test_case.rb (RDoc::TestCase#verbose_capture_io):
+ defined for asserts of warnings.
+
+ * test/rdoc: use verbose_capture_io on asserts of warnings.
+ they failed when tests was run with RUBYOPT=-W0.
+
+Thu Nov 29 15:53:38 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/psych/extconf.rb: added --enable-bundled-libyaml option. this
+ enforces using bundled libyaml.
+
+Thu Nov 29 15:51:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Updated to RubyGems 2.0
+ * test/rubygems*: ditto.
+
+ * common.mk (prelude): Updated for RubyGems 2.0 source rearrangement.
+
+ * tool/change_maker.rb: Allow invalid UTF-8 characters in source
+ files.
+
+Thu Nov 29 15:38:14 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h: provide rb_tracearg_*() APIs,
+ instead of rb_tracepoint_attr_*().
+ These APIs are for debuggers/profilers.
+ They will be explained in another docs sometime.
+
+ * vm_trace.c: ditto.
+
+Thu Nov 29 15:10:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/minitest/test_minitest_unit.rb: restore orig_verbose only
+ if it is set. This broke rdoc's tests.
+ http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20121129T050102Z.diff.html.gz
+
+Thu Nov 29 14:56:30 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_tracepoint_attr_method_id):
+ rename TracePoint#id to TracePoint#method_id.
+
+ * include/ruby/debug.h: ditto.
+
+ * test/ruby/test_settracefunc.rb: ditto,
+
+Thu Nov 29 14:49:10 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_tracepoint_attr_defined_class):
+ rename TracePoint#klass to TracePoint#defined_class.
+ [ruby-core:50187] Re: [ruby-trunk - Feature #6895]
+
+ * include/ruby/debug.h: ditto.
+
+ * test/ruby/test_settracefunc.rb: ditto.
+
+Thu Nov 29 14:27:57 2012 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stat): prepare Symbol objects at first time
+ to make it fast.
+
+Thu Nov 29 14:02:15 2012 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (gc_stat): GC.stat supports new information
+ * total_allocated_object: total allocated object number.
+ * total_freed_object: total freed object number.
+ Above two numbers are only accumulated and they will
+ overflow (return to 0). Please use them as a hint.
+
+Thu Nov 29 12:13:54 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 4.3.2 (r8026)
+ * test/minitest/*: ditto
+
+Thu Nov 29 11:06:06 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_start_func_2): remove unused code. When
+ th->safe_level == 4, th->errinfo never be thrown. So, to
+ create new exception makes no sense.
+
+Thu Nov 29 10:29:53 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: same as a last patch.
+
+Thu Nov 29 10:24:25 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: use `long' for return values of `NUM2LONG()'.
+
+Thu Nov 29 09:52:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (do_select): suppress warning (uninitialized value warning)
+ with UNINITIALIZED_VAR().
+
+Thu Nov 29 09:36:09 2012 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (ruby_cleanup): delay THREAD_KILLED timing.
+ It should be located just before rb_thread_terminate_all().
+
+Thu Nov 29 09:10:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c (vm_backtrace_to_ary): support range argument
+ like Array#[].
+ [ruby-core:50092] [ruby-trunk - Feature #7434]
+ Test and document is not available. Please help us.
+
+Thu Nov 29 06:46:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_start_func_2): small cleanups.
+
+Thu Nov 29 06:37:08 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_start_func_2): remove unused code.
+ this function never be used for main thread.
+
+Thu Nov 29 06:27:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_start_func_2): remove unused code.
+ errinfo = th->errinfo; and errinfo = rb_errinfo(); are
+ the same.
+
+Thu Nov 29 05:26:32 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c (backtrace_to_str_ary2): rename to backtrace_to_str_ary.
+
+ * vm_backtrace.c (rb_backtrace_to_str_ary): use `backtrace_to_str_ary()'.
+
+ * vm_backtrace.c (backtrace_to_frame_ary): rename to
+ backtrace_to_location_ary.
+
+Thu Nov 29 05:19:25 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * probes.d: Change function-entry probe to method-entry.
+ * insns.def: ditto
+ * probes_helper.h: ditto
+ * test/dtrace/test_function_entry.rb: ditto
+ * test/dtrace/test_singleton_function.rb: ditto
+ * vm.c: ditto
+ * vm_eval.c: ditto
+ * vm_insnhelper.c: ditto
+
+Thu Nov 29 04:45:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: rename Class name from
+ ::RubyVM::Backtrace and ::RubyVM::Backtrace::Location
+ to ::Thread::Backtrace and ::Thread::Backtrace::Location.
+
+Wed Nov 28 23:52:02 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * NEWS (Thread) remove incompatible changes about trap.
+
+Wed Nov 28 23:39:01 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_mutex_sleep): fix to allow spurious wakeup.
+ [ruby-dev:46654] [ruby-trunk - Bug #7455]
+
+ * NEWS: write about spurious wakeup.
+
+Wed Nov 28 22:57:23 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread_win32.c: catch up latest change of BLOCKING_REGION.
+
+Wed Nov 28 22:54:21 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): fix undefined behavior.
+ Should not access scope local variable from outer scope.
+
+Wed Nov 28 22:20:55 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * test/ruby/test_thread.rb (test_thread_status_in_trap): change test for
+ thread status in trap. now can accept Thread#join and Thread#value in trap.
+
+Wed Nov 28 21:58:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/thread.h (rb_thread_call_without_gvl2): change
+ meaning of function.
+ This function is called with same parameters of
+ `rb_thread_call_without_gvl()'.
+ However, if interrupts are detected, then return immediately.
+
+ * thread.c: implement `rb_thread_call_without_gvl2()'.
+
+Wed Nov 28 21:31:21 2012 Masaya Tarui <tarui@ruby-lang.org>
+
+ * thread.c (thread_join_sleep): check spurious wakeup by itself for
+ corresponding status change in trap context.
+ * vm_core.h (struct rb_thread_struct): add rb_thread_list_t and use as join_list for
+ reentry by trap context.
+ * thread.c (thread_start_func_2): ditto.
+ * thread.c (remove_from_join_list): ditto.
+ * thread.c (rb_thread_atfork): ditto.
+ * thread.c (thread_join): ditto. & remove trap handler check.
+ * thread.c (sleep_forever): add argument : spurious_check.
+ * thread.c (sleep_timeval): ditto.
+ * thread.c (rb_thread_sleep_forever): set spurious_check.
+ * thread.c (rb_thread_sleep_deadly): ditto.
+ * thread.c (sleep_for_polling): ditto.
+ * thread.c (rb_thread_wait_for): ditto.
+ * thread.c (sleep_wait_for_interrupt): bypass spurious_check.
+
+Wed Nov 28 21:23:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/psych/yaml/emitter.c (yaml_emitter_write_indicator): constify.
+
+ * ext/psych/yaml/emitter.c (yaml_emitter_write_block_scalar_hints):
+ ditto.
+
+ * ext/psych/extconf.rb: mingw32 also needs macros for win32, not
+ only mswin32.
+
+ * ext/psych/extconf.rb: compile sources in the source directory
+ without copying by using VPATH.
+
+Wed Nov 28 21:18:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#each_compile_rules): splat $(*VPATH*) for
+ each VPATH elements.
+
+Wed Nov 28 16:40:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (enum rb_thread_status): remove THREAD_TO_KILL
+ * vm_core.h (struct rb_thread_struct): add to_kill field
+ * thread.c (terminate_i): convert THREAD_TO_KILL to to_kill.
+ * thread.c (rb_threadptr_to_kill): ditto.
+ * thread.c (rb_thread_kill): ditto.
+ * thread.c (rb_thread_wakeup_alive): ditto.
+ * thread.c (thread_list_i): ditto.
+ * thread.c (static const char): ditto.
+ * thread.c (thread_status_name): ditto.
+ * thread.c (rb_thread_status): ditto.
+ * thread.c (rb_thread_inspect): ditto.
+ * vm_backtrace.c (thread_backtrace_to_ary): ditto.
+
+ * thread.c (rb_threadptr_execute_interrupts): fix thread status
+ overwritten issue. [Bug #7450] [ruby-core:50249]
+
+ * test/ruby/test_thread.rb (test_hread_status_raise_after_kill):
+ test for the above.
+ * test/ruby/test_thread.rb (test_thread_status_in_trap): test for
+ thread status in trap.
+ * test/ruby/test_thread.rb (test_status_and_stop_p): remove
+ Thread.control_interrupt unsafe test. Thread#kill no longer
+ changes thread status. Instead of, Thread#kill receiver changes
+ their own status when receiving kill signal.
+
+Wed Nov 28 16:21:46 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (struct rb_mutex_struct): add allow_trap field.
+ * internal.h (rb_mutex_allow_trap): added.
+ * thread.c (rb_mutex_lock, rb_mutex_unlock): check mutex->allow_trap.
+ * thread.c (mutex_sleep): remove trap check because it uses
+ rb_mutex_lock and rb_mutex_unlock internally.
+ * thread.c (rb_mutex_allow_trap): new helper function for the above.
+
+ * io.c (io_binwrite): mark fptr->write_lock as writable in trap.
+
+ * test/ruby/test_signal.rb (test_trap_puts): test for the above.
+
+Wed Nov 28 16:59:12 2012 Koichi Sasada <ko1@atdot.net>
+
+ * proc.c: remove Proc#== and Proc#eql?.
+ Proc objects compared with their object ids.
+ [Bug #4559]
+
+ * test/ruby/test_proc.rb: remove related test.
+
+Wed Nov 28 16:41:04 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/servlet.rb: Add support for serving documentation from a
+ subdirectory.
+ * lib/rdoc/generator/darkfish.rb: ditto
+ * test/rdoc/test_rdoc_servlet.rb: Test for above
+ * test/rdoc/test_rdoc_servlet.rb: ditto
+
+Wed Nov 28 15:37:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: fix r37924: run only on i[3-6]86-linux.
+
+Wed Nov 28 15:31:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (FMODE_SYNCWRITE): removed unused macro.
+
+Wed Nov 28 15:19:25 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * configure.in: revert r37911, r37906 and r37904 which break build
+ with non-gcc and/or non-IA32 compilers, e.g. Solaris Studio,
+ Fujitsu C Compiler. [ruby-dev:46646] [Bug #7451]
+
+Wed Nov 28 14:50:55 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/psych/extconf.rb: copy sources into build directory,
+ not into srcdir.
+
+Wed Nov 28 14:34:06 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_lock): moved trap context check from
+ rb_mutex_trylock because try_lock have no change to make
+ a deadlock.
+ * thread.c (rb_mutex_trylock): ditto.
+ * NEWS: news for the above.
+
+Wed Nov 28 13:39:54 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_s_new): uses main_thread->status instead of
+ th->inhibit_thread_creation for preventing thread creation.
+ * vm_core.h (rb_vm_struct): remove inhibit_thread_creation field.
+ * thread.c (rb_thread_terminate_all): ditto.
+
+Wed Nov 28 13:27:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/extconf.rb: use embedded libyaml if no system libyaml is
+ found. [ruby-core:49463]
+ * ext/psych/lib/psych.rb: updating to psych 2.0.0
+ * ext/psych/lib/psych/deprecated.rb: updated docs
+ * ext/psych/psych.gemspec: updated to psych 2.0.0
+ * ext/psych/psych.h: fixing header file include for rename
+ * ext/psych/psych_emitter.c: renamed to avoid libyaml conflict.
+ * ext/psych/psych_emitter.h: ditto
+ * ext/psych/psych_parser.c: ditto
+ * ext/psych/psych_parser.h: ditto
+ * ext/psych/psych_to_ruby.c: ditto
+ * ext/psych/psych_to_ruby.h: ditto
+ * ext/psych/psych_yaml_tree.c: ditto
+ * ext/psych/psych_yaml_tree.h: ditto
+ * ext/psych/yaml/LICENSE: embedding libyaml 0.1.4
+ * ext/psych/yaml/api.c: ditto
+ * ext/psych/yaml/config.h: ditto
+ * ext/psych/yaml/dumper.c: ditto
+ * ext/psych/yaml/emitter.c: ditto
+ * ext/psych/yaml/loader.c: ditto
+ * ext/psych/yaml/parser.c: ditto
+ * ext/psych/yaml/reader.c: ditto
+ * ext/psych/yaml/scanner.c: ditto
+ * ext/psych/yaml/writer.c: ditto
+ * ext/psych/yaml/yaml.h: ditto
+ * ext/psych/yaml/yaml_private.h: ditto
+
+Wed Nov 28 12:54:59 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_join): A trap handler check was moved from
+ thread_join_m because Thread#value should be raised an exception
+ too.
+ * thread.c (thread_join_m): remove trap handler check.
+ * test/ruby/test_thread.rb (test_thread_join_in_trap): add test
+ for thread#value.
+ * NEWS: documentation fix for the above.
+
+Wed Nov 28 11:07:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/fiddle/closure.c: Documentation for Fiddle
+ * ext/fiddle/lib/fiddle/import.rb: ditto
+ * ext/fiddle/lib/fiddle/value.rb: ditto
+ * ext/fiddle/lib/fiddle/pack.rb: ditto
+ * ext/fiddle/lib/fiddle/cparser.rb: ditto
+ * ext/fiddle/lib/fiddle/struct.rb: ditto
+ * ext/fiddle/lib/fiddle/function.rb: ditto
+
+Wed Nov 28 09:15:51 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * ext/strscan/strscan.c: Added #charpos for multibyte string position.
+ * test/strscan/test_stringscanner.rb: ditto
+
+Wed Nov 28 09:00:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/fiddle.c: adding alignment constants for compatibility
+ with DL.
+ * ext/fiddle/fiddle.h: ditto
+ * ext/fiddle/lib/fiddle/cparser.rb: importing the C parser for DL
+ backwards compatibility.
+ * ext/fiddle/lib/fiddle/import.rb: importing the import DSL for DL
+ backwards compatibility.
+ * ext/fiddle/lib/fiddle/pack.rb: importing structure pack for DL
+ backwards compatibility.
+ * ext/fiddle/lib/fiddle/value.rb: ditto
+ * ext/fiddle/lib/fiddle/struct.rb: importing struct DSL for DL backwards
+ compatibility.
+ * test/dl/test_c_struct_entry.rb: importing tests
+ * test/dl/test_c_union_entity.rb: ditto
+ * test/dl/test_cparser.rb: ditto
+ * test/dl/test_import.rb: ditto
+ * test/fiddle/test_c_struct_entry.rb: ditto
+ * test/fiddle/test_c_union_entity.rb: ditto
+ * test/fiddle/test_cparser.rb: ditto
+ * test/fiddle/test_import.rb: ditto
+
+Wed Nov 28 08:56:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * doc/globals.rdoc: Add documentation file for magic globals
+ [ruby-core:29048] [Bug #3022]
+
+Wed Nov 28 08:55:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * .document: Add README's to be included with docs
+
+Wed Nov 28 08:26:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/dl/lib/dl.rb: Deprecation notice for DL
+
+Wed Nov 28 08:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/fiddle/closure.c: Documentation for Fiddle
+ * ext/fiddle/pointer.c: ditto
+ * ext/fiddle/function.c: ditto
+ * ext/fiddle/lib/fiddle.rb: ditto
+ * ext/fiddle/fiddle.c: ditto
+ * ext/fiddle/handle.c: ditto
+
+Wed Nov 28 04:53:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/fiddle/handle.c: Make Fiddle independent of DL, copy DL::Handle
+ to Fiddle::Handle.
+ * ext/fiddle/pointer.c: Make Fiddle independent of DL, copy
+ DL::Pointer to Fiddle::Pointer.
+ * test/fiddle/test_func.rb: relevant tests
+ * test/fiddle/test_handle.rb: ditto
+ * test/fiddle/test_pointer.rb: ditto
+ * ext/dl/lib/dl/struct.rb: use Fiddle::Pointer if available
+ * ext/fiddle/extconf.rb: check for dlfcn.h
+ * ext/fiddle/fiddle.c: add constants for sizeof() things
+ * ext/fiddle/fiddle.h: include dlfcn.h
+ * ext/fiddle/function.c: expose a C function for creating new
+ Fiddle::Function objects.
+ * ext/fiddle/lib/fiddle.rb: include constants for dl backwards compat
+ * ext/fiddle/lib/fiddle/function.rb: read the pointer from the
+ function for dl backwards compat.
+ * test/dl/test_callback.rb: check the addresses of the pointers rather
+ than their types.
+ * test/fiddle/helper.rb: remove dependency on dl
+ * test/fiddle/test_closure.rb: ditto
+ * test/fiddle/test_fiddle.rb: ditto
+
+Wed Nov 28 03:03:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (opt-dir): don't use non portable flag -E of sed.
+
+Wed Nov 28 02:55:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (ARCH_FLAG): __sync_val_compare_and_swap_4 needs
+ -march=$target_cpu on at least linux gcc 4.1.
+ patched by KOSAKI Motohiro
+
+Tue Nov 27 22:03:09 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (rb_str_enumerate_chars, rb_str_enumerate_codepoints)
+ (rb_str_enumerate_lines): Dummy initialization of ary has been
+ replaced with UNINITIALIZED_VAR().
+
+Tue Nov 27 21:29:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c (bigdivrem): optimize the way to retry calculation of
+ bigdivrem so that the calculation is started from the point where
+ the last interruption was occurred.
+
+ * bignum.c (bigdivrem1): ditto.
+
+ * test/ruby/test_bignum.rb: add a test case for rb_bigdivrem in the
+ case that an interruption is occurred during bigdivrem1 is running.
+
+Tue Nov 27 19:56:43 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (rb_vm_make_env_object): make Proc object if Env is possible
+ to point block.
+ [ruby-core:41038] [ruby-trunk - Bug #5634]
+
+ * vm.c (rb_vm_make_proc): No need to make Proc object here.
+
+ * bootstraptest/test_proc.rb: add tests.
+
+Tue Nov 27 18:51:06 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ruby_atomic.h (ATOMIC_CAS): added for Solaris and other platforms.
+ * ruby_atomic.h, signal.c (NEED_RUBY_ATOMIC_OPS): renamed from
+ NEED_RUBY_ATOMIC_EXCHANGE.
+ * signal.c (ruby_atomic_compare_and_swap): naive, non-atomic
+ compare-and-swap implementation only used for platforms without
+ valid support for atomic operations.
+
+Tue Nov 27 17:43:46 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/*: Added --root option for building documentation outside
+ the source directory.
+ * test/rdoc/*: ditto
+ * common.mk (rdoc): Added --root to rdoc rule
+
+Tue Nov 27 16:24:45 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/rdoc/test_rdoc_ri_paths.rb: Fixed duplicate path bug which
+ caused windows failures.
+
+Tue Nov 27 16:06:00 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/rdoc/test_rdoc_generator_darkfish.rb: Updated tests for windows
+ * test/rdoc/test_rdoc_options.rb: ditto
+ * test/rdoc/test_rdoc_parser.rb: ditto
+ * test/rdoc/test_rdoc_rdoc.rb: ditto
+ * test/rdoc/test_rdoc_ri_driver.rb: ditto
+ * test/rdoc/test_rdoc_servlet.rb: ditto
+
+Tue Nov 27 15:13:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * common.mk (rdoc): Set --debug for rdoc generation in case of bugs
+
+Tue Nov 27 14:56:45 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/rubygems_hook.rb: Updated for (upcoming) RubyGems 2
+ import.
+ * test/rdoc/test_rdoc_rubygems_hook.rb: ditto
+
+Tue Nov 27 13:59:29 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * NEWS: add improvements of the garbage collector.
+
+Tue Nov 27 13:27:46 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc*: Updated to RDoc 4.0 (pre-release)
+ * bin/rdoc: ditto
+ * test/rdoc*: ditto
+ * NEWS: Updated with RDoc 4.0 information
+
+Tue Nov 27 12:17:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_terminate_all): retry broadcast only when
+ an exception is raised.
+
+Tue Nov 27 12:02:25 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_terminate_all): broadcast terminate event
+ not only an interrupt exception but any exceptions.
+
+Tue Nov 27 10:55:09 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * eval.c (ruby_cleanup): set thread status to THREAD_KILLED
+ for preventing thr.raise.
+ * test/ruby/test_thread.rb (test_main_thread_status_at_exit):
+ test for the above.
+
+Tue Nov 27 10:31:29 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_terminate_all): suppress a warning.
+
+Tue Nov 27 09:29:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_join): raises ThreadError if target thread
+ is a main thread.
+ * test/ruby/test_thread.rb (test_thread_join_main_thread):
+ test for the above.
+ * NEWS: news for the above.
+
+Tue Nov 27 09:24:47 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_join): raises ThreadError if target thread
+ is a current thread.
+ * test/ruby/test_thread.rb (test_thread_join_current):
+ test for the above.
+ * NEWS: news for the above.
+
+Tue Nov 27 09:59:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): close mkmf.log for each libraries so that
+ failure messages are not mixed.
+
+Tue Nov 27 09:58:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/*/extconf.rb, ext/openssl/extconf.rb: get git rid of
+ post-1.8 feature require_relative for cross compilation.
+ [ruby-core:50160] [Bug #7439]
+
+Tue Nov 27 09:17:59 2012 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: add TracePoint.
+
+Tue Nov 27 08:16:03 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: rename TracePoint#file and TracePoint#line
+ to TracePoint#path and TracePoint#lineno respectively.
+ They are consistent to RubyVM::Backtrace::Location.
+
+ * include/ruby/debug.h: ditto.
+
+ * vm_core.h: ditto.
+
+ * test/ruby/test_settracefunc.rb: ditto.
+
+Tue Nov 27 08:04:26 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_terminate_all): broadcast eTerminateSignal
+ again when Ctrl-C was pressed. [Feature #1952] [ruby-dev:39107]
+
+Tue Nov 27 07:58:03 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: add members to rb_trace_arg_t:
+ * `klass_solved' represents klass and id is checked.
+ * `line' represents line calculated from cfp.
+ * `file' represents line calculated from cfp.
+
+ * vm_trace.c: fix to use above data structures.
+ No need to calculate klass and id, line and file
+ pairs for each trace points.
+
+Tue Nov 27 07:47:09 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_terminate_all): add RUBY_VM_CHECK_INTS_BLOCKING().
+ Otherwise the loop in this function behave as busy loop because
+ native_sleep() return immediately when RUBY_VM_INTERRUPTED() is true.
+
+Tue Nov 27 04:12:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): git rid of post-1.8 features for cross
+ compilation. [ruby-core:50160] [Bug #7439]
+
+Tue Nov 27 00:13:41 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_trylock, rb_mutex_unlock, mutex_sleep):
+ raises ThreadError if called from trap handler as Thread#join.
+ * NEWS: news for the above.
+
+Mon Nov 26 23:55:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * NEWS: update for Thread#join incompatible change.
+
+Mon Nov 26 22:44:24 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_terminate_all): use native_sleep() instead
+ of rb_thread_schedule(). Otherwise, it consume 100% cpu meaninglessly.
+ [Bug #5368] [ruby-dev:44546]
+ * thread.c (thread_start_func_2): last sub-thread wakes up main thread.
+
+Mon Nov 26 21:16:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (RUBY_VM_SET_TIMER_INTERRUPT, RUBY_VM_SET_INTERRUPT)
+ (RUBY_VM_SET_FINALIZER_INTERRUPT, RUBY_VM_SET_TRAP_INTERRUPT)
+ (RUBY_VM_INTERRUPTED): use enum symbol instead of immediate value.
+ * thread.c (thread_join_m, rb_threadptr_execute_interrupts): ditto.
+ * signal.c (signal_exec): ditto.
+
+Mon Nov 26 20:23:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_join_m): use th->interrupt_mask instead of
+ th->in_trap.
+
+ * vm_core.h (struct rb_thread_struct): remove in_trap member.
+ * signal.c (signal_exec): ditto.
+ * thread.c (thread_create_core): ditto.
+ * thread.c (Init_Thread): ditto.
+
+Mon Nov 26 20:23:49 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_argf.rb (TestArgf#test_chars): since marshal data is
+ binary, shouldn't pass via text mode. use base64 encoded data.
+
+Mon Nov 26 19:45:18 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ruby_atomic.h (ATOMIC_CAS): new macro for compare-and-exchange.
+
+ * vm_core.h (struct rb_thread_struct): add interrupt_mask member.
+ * thread.c (thread_create_core, Init_Thread): initialize
+ th->thread_mask.
+
+ * vm_core.h (RUBY_VM_INTERRUPTED_ANY): new macro for avoiding
+ bare th->interrupt_flag.
+ * vm_core.h (RUBY_VM_INTERRUPTED, RUBY_VM_INTERRUPTED): check
+ th->interrupt_mask.
+ * thread.c (set_unblock_function, rb_thread_schedule): replace
+ th->interrupt_flag with RUBY_VM_INTERRUPTED_ANY()
+
+ * signal.c (signal_exec): set up thread->interrupt_mask for
+ preventing recursive trap handler.
+ * vm_core.h (RUBY_VM_CHECK_INTS, RUBY_VM_CHECK_INTS_BLOCKING): ditto.
+
+ * thread.c (rb_threadptr_execute_interrupts):
+ don't process interrupt if it is masked.
+ [Bug #6009] [ruby-core:42524]
+
+Mon Nov 26 19:43:42 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (make_compile_option_value): add trace_instruction option.
+ a patch by davidbalbert (David Albert).
+ [Bug #6786]
+
+Mon Nov 26 19:10:53 2012 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_thread.rb: try to `join' each 100
+ threads.
+ This benchmark seems consuming long time on travis-ci
+ several times (and make `failure').
+
+Mon Nov 26 18:22:56 2012 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: specify label `built-ruby'.
+
+ * benchmark/driver.rb: quote path.
+
+Mon Nov 26 18:26:28 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (signal_exec): add volatile to make sure setjmp safe.
+
+Mon Nov 26 18:19:47 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (signal_exec): suppress "warning: variable 'signum'
+ might be clobbered by 'longjmp' or 'vfork'" warning.
+
+Mon Nov 26 18:15:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: accept multiple `-e'.
+ You don't need to use `;' separation character.
+ [ruby-core:50139] [ruby-trunk - Bug #7380]
+
+Mon Nov 26 17:10:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * string.c (rb_str_enumerate_chars, rb_str_enumerate_codepoints)
+ (rb_str_enumerate_lines): suppress "may be used uninitialized in
+ this function" warning.
+
+Mon Nov 26 17:00:12 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (rb_thread_struct): added 'in_trap' member for marking
+ running trap handler.
+ * signal.c (signal_exec): turn on in_trap when running trap.
+ * thread.c (Init_Thread, thread_create_core): initialize in_trap
+ when creating new threads.
+ * thread.c (thread_join_m): raise ThreadError when running trap
+ handler.Bug [#6416][ruby-core:44956]
+ * test/ruby/test_thread.rb (test_thread_join_in_trap): new test
+ for the above.
+
+Mon Nov 26 16:36:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (argf_each_codepoint): add missing ARGF#codepoints [Bug #7438]
+
+Mon Nov 26 15:50:29 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c (bigdivrem): restart calculation when bigdivrem1 was
+ interrupted by signal. Otherwise, ruby script may see a garbage
+ value.
+
+Mon Nov 26 15:33:02 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c (big_div_struct): added volatile to 'stop' member.
+ Otherwise, "if (bds->stop)" check in bigdivrem1 don't read
+ memory and ignore interrupt.
+ * bignum.c (bigdivrem, rb_big_stop): ditto.
+
+Mon Nov 26 12:11:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub (DLNOBJ): missing in r37821.
+
+Mon Nov 26 10:50:19 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_process.rb (test_setsid): added a few wait for
+ preventing that Process.getsid(io.pid) makes Errno::ESRCH.
+
+Sun Nov 25 22:34:00 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * array.c (ary_resize_smaller): new function to resize array.
+
+ * array.c (rb_ary_delete): refactoring to extract a function.
+
+ * array.c (rb_ary_delete_same): refactoring.
+ It renames function, reduces duplicated code and removes unused
+ code.
+
+ * gc.c (wmap_final_func): follow the above change.
+
+ * internal.h (rb_ary_delete_same): ditto.
+
+Sun Nov 25 22:27:33 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * array.c: fixes for the updated documentation in r35858:
+ Typos and #take/#drop accept to take/drop 0 elements.
+
+Sun Nov 25 19:43:29 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * NEWS: add a news about iconv.
+
+Sun Nov 25 03:49:23 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb, test/test_set.rb: Move tests embedded in lib/set.rb
+ to test/test_set.rb.
+
+Sun Nov 25 03:44:50 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (rb_str_each_line, rb_str_lines): String#lines now
+ returns an array instead of an enumerator. Passing a block is
+ deprecated but still supported for backwards compatibility.
+ Based on the patch by yhara. [Feature #6670]
+
+ * string.c (rb_str_each_char, rb_str_chars): Ditto for
+ String#chars.
+
+ * string.c (rb_str_each_codepoint, rb_str_codepoints): Ditto for
+ String#codepoints.
+
+ * string.c (rb_str_each_byte, rb_str_bytes): Ditto for
+ String#bytes.
+
+ * NEWS: Add notes for the above changes.
+
+Sun Nov 25 02:07:37 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_warning)
+ (Test::Unit::Assertions#assert_warn), test/ruby/envutil.rb,
+ test/ruby/test_enumerator.rb, test/ruby/test_io_m17n.rb,
+ test/ruby/test_regexp.rb, test/ruby/test_syntax.rb:
+ assert_warn() and assert_warning() are reversed.
+
+Sat Nov 24 21:08:50 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * gc.c (wmap_final_func): rename variables to clarify the meaning.
+ In wmap2obj the key is WeakRef and the value is referenced object.
+ In obj2wmap the key is referenced object and the value is an array
+ of WeakRef.
+
+ * gc.c (wmap_finalize): ditto.
+ [ruby-core:49044] [Bug #7304]
+
+Sat Nov 24 21:01:55 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * array.c (rb_ary_delete_same_obj): new function for WeakRef.
+ This deletes same objects as item argument in the array.
+
+ * internal.h (rb_ary_delete_same_obj): add a declaration.
+
+ * gc.c (wmap_final_func): remove WeakRef object reference from the
+ array. rb_ary_delete() is not usable because it uses rb_equal() to
+ compare object references.
+
+ * gc.c (wmap_finalize): remove recycled object references from weak
+ map hash properly. How to get object reference from object id was
+ wrong. st_delete() doesn't work properly if key and value arguments
+ are same. The key of obj2wmap is referenced object and the value of
+ obj2wmap is WeakRef array.
+
+ * gc.c (wmap_aset): obj2wmap should contain WeakRef array in the
+ definition.
+
+ * test/test_weakref.rb
+ (TestWeakRef#test_not_reference_different_object,
+ TestWeakRef#test_weakref_finalize): add tests for above.
+ [ruby-core:49044] [Bug #7304]
+
+Sat Nov 24 19:44:41 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c (unicode_iconv_combine): returning flags are
+ nkf_char.
+
+Sat Nov 24 19:29:18 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_rubyoptions.rb (test_usage, test_usage_long):
+ reduced, renamed.
+
+Sat Nov 24 13:10:14 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c (rb_tracepoint_attr_raised_exception): should not check
+ value before event checking.
+
+ * vm_trace.c (rb_tracepoint_attr_return_value): ditto.
+
+ * test/ruby/test_settracefunc.rb: add tests for TracePoint#return_value
+ and TracePoint#raised_exception.
+
+Sat Nov 24 12:47:27 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_process.rb (TestProcess#test_setsid): "./ruby-trunk"
+ doesn't work on all environments. EnvUtil.rubybin would be suitable.
+
+Sat Nov 24 12:28:04 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * array.c (rb_ary_aref): fix Segmentation fault at TestArray#test_aref
+ on x64 mingw. Variable argument of rb_scan_args() should be a pointer
+ (VALUE *), but 0 of variable argument seems not equal to null pointer
+ on x64 mingw.
+
+Sat Nov 24 11:47:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c (proc_getsid): adds new method for getting session id.
+ Contributed from fumiyas (Fumiyasu SATOH). Thank you!
+ [Feature #6757] [ruby-dev:45977]
+ * configure.in: adds getsid check.
+ * test/ruby/test_process.rb (TestProcess#test_setsid): new test
+ for the above.
+ * NEWS: news for the above.
+
+Sat Nov 24 10:59:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (thread_create_core): don't use th->thread_id before
+ initialized.
+
+Sat Nov 24 00:00:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options, process_options, ruby_process_options): take
+ care of the case argc is 0, and check if argv has NULL.
+ [ruby-core:49889] [Bug #7423]
+
+Sat Nov 24 00:00:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (--disable-dln): option to disable dynamic linking
+ feature. [ruby-core:37676] [Feature #4946]
+
+Fri Nov 23 23:44:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#pkg_config): strip all white spaces for
+ mingw64+MSYS pkg-config which erroneously emits extra newlines.
+ [ruby-core:47998] [Bug #7163]
+
+Fri Nov 23 17:31:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (usage): wrap description lines if options are too long.
+
+Fri Nov 23 11:13:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_usage2): refine
+ assertion.
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_usage2): now
+ --help option is for modern terminals.
+
+Fri Nov 23 10:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/socket/ipsocket.c (IPSocket#peeraddr): Fix example
+ [ruby-core:46429] [Bug #6732]
+
+Fri Nov 23 02:40:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/cgi/core.rb: Documentation for CGI#header alias
+ Based on a patch by Marcus Stollsteimer
+ [ruby-core:49585] [Bug #7405]
+
+Thu Nov 22 23:48:10 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (is_swept_object): extract from is_dead_object().
+
+ * gc.c (rb_gcdebug_print_obj_condition): add the function for debug.
+ This function shows some conditions of given object (e.g.,
+ marked, in heap, swept).
+
+ * gc.c (rb_gcdebug_sentinel): add the function for debug.
+ This function allow check to inadvertently free up an object.
+
+Thu Nov 22 23:45:18 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * array.c (rb_ary_shared_with_p): fix cache validity check.
+ If #pop or #shift has been called against $: or $", the array will
+ be still shared with the snapshot. We check array length for cache
+ validity.
+ [ruby-core:49518] [Bug #7383]
+
+ * test/ruby/test_require.rb
+ (TestRequire#test_require_with_array_pop,
+ TestRequire#test_require_with_array_shift): add tests for above.
+
+Thu Nov 22 21:48:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk, win32/Makefile.sub (probes.dmyh): now be made in current
+ (=build) directory if build from the repository.
+
+Thu Nov 22 21:34:51 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/ruby/test_rubyoptions.rb: added a test.
+
+Thu Nov 22 20:32:07 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (string_to_c_strict, string_to_c): check NUL.
+ * rational.c (string_to_r_strict, string_to_r): ditto.
+
+Thu Nov 22 20:21:45 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * Makefile.in (.dmyh.h): removed $(VPATH). GNU make don't
+ recognize suffix rule with VPATH.
+
+Thu Nov 22 18:11:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk, Makefile.in, win32/Makefile.sub (.dmyh.h): nmake merges
+ explicit rules for same target, but not merges explicit rules and
+ implicit rules -- always explicit rules win. So, need to add an
+ explicit rule for probes.h. [Bug #7421] [ruby-core:49839]
+
+Thu Nov 22 18:01:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (probes.o): add -C to ignore #include in probes.d.
+
+ * probes.d: include vm_opts.h instead of vm_core.h.
+
+ * vm_opts.h (VM_COLLECT_USAGE_DETAILS): move definition from vm_core.h.
+
+Thu Nov 22 17:45:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8: Merge b0a6577a521d1bba5e19853f95d5c4b9be1072b5.
+ Support JIS X 0213 and some bugfixes.
+
+Thu Nov 22 17:39:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * tool/gen_dummy_probes.rb: don't change #include, #if and #endif
+ lines. [Bug #7370]
+
+Thu Nov 22 16:58:26 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * Makefile.in: run preprocessor when making probe.h
+ * probes.d: define probe insn and insn__operand only when
+ VM_COLLECT_USAGE_DETAILS is 1. [Bug #7370]
+
+Thu Nov 22 16:20:49 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm.c: Don't define vm_collect_usage_operand() and
+ static void vm_collect_usage_insn() when disabling
+ VM_COLLECT_USAGE_DETAILS. (refix r37796)
+
+Thu Nov 22 15:26:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_insnhelper.h: partly revert r37631 (DTrace support).
+ "vm usage information is always collected, so uncomment the
+ functions." causes performance impact. [Bug #7370]
+ Off course this revert disables related probes.
+
+Thu Nov 22 14:14:36 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * re.c (rb_memsearch_ss): Apply performance improvement to short
+ byte array search for platforms without memmem(3).
+ [Feature #6311] [ruby-dev:45530]
+
+Thu Nov 22 12:52:19 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/ruby/test_string.rb (TestString#test_index): Add some
+ corner cases to tests for String#index, which might fail if ruby
+ directly used a buggy memmem(3) implementation.
+
+Thu Nov 22 08:06:42 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * test/ruby/test_gc.rb (test_profiler_clear): fix wrong method
+ calls [Bug #7419] [ruby-core:49828].
+
+Thu Nov 22 02:22:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * NEWS: edited (order etc).
+
+Wed Nov 21 22:52:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/wait/wait.c (io_wait_readable): add alias wait_readable.
+
+ * ext/io/wait/wait.c (io_wait_writable): this is easier to use than
+ IO.select for a single IO object and is immune to the
+ limitations/inefficiency of select() on platforms where poll/ppoll
+ is available. patched by Eric Wong. [Feature #4646]
+
+Wed Nov 21 22:27:52 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (garbage_collect): remove a duplicative probe.
+
+Wed Nov 21 22:08:48 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_profile_clear): realloc profile records if its size is
+ higher than the threshold, GC_PROFILE_RECORD_DEFAULT_SIZE * 2.
+
+Wed Nov 21 21:53:29 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_to_c): added.
+
+Wed Nov 21 21:35:38 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * include/ruby/util.h: removed extra semicolon in definition of
+ macro.
+ * compile.c: ditto.
+ * cont.c: ditto.
+ * math.c: ditto.
+ * node.c: ditto.
+ * parse.y: ditto.
+
+Wed Nov 21 18:46:37 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * rational.c (read_digits): due to a bit tighter rb_cstr_to_inum().
+
+Wed Nov 21 16:13:37 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_so_nsieve_bits.rb: add an encoding pragma because
+ this benchmark using strings (literals) as binary sequence.
+ Now, they are UTF-8 strings. [ruby-dev:46578]
+
+Wed Nov 21 00:57:43 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * file.c (Init_File): null device definition uses rb_define_const
+ instead of rb_file_const.
+
+Wed Nov 21 00:28:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/test_m17n_comb.rb (test_str_crypt): Use RbConfig to get
+ libc's directory. Patched by Vit Ondruch [ruby-core:49763] [Bug #7312]
+
+Tue Nov 20 23:28:26 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * marshal.c: add marshal readahead. marshalized Array, Hash and Struct
+ have size at least number of its elements, marshal readahead will
+ read the certain readable length and buffer when it needs more bytes.
+ marshal readahead prevents many calls to IO#getbyte and IO#read,
+ then it enables performance improvement.
+ [ruby-dev:45637] [Feature #6440]
+
+Tue Nov 20 22:35:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (.d.h): replace char * to const char * because somehow
+ current dtrace removes const of function declaration in probes.d.
+
+Tue Nov 20 21:41:04 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/debug.h: introduced.
+ Debugging/profiling features will be located.
+
+ * vm_trace.c: expose C-level TracePoint APIs.
+ Note that they are experimental.
+
+ * vm_trace.c, include/ruby/debug.h: rename `rb_hook_flag_t'
+ to `rb_event_hook_flag_t'.
+ Macro names `RUBY_HOOK_FLAG_*' are also renamed to
+ `RUBY_EVENT_HOOK_FLAG_*'.
+
+ * debug.h, vm_debug.h: rename debug.h to vm_debug.h.
+
+ * common.mk: ditto.
+
+ * debug.c, main.c, vm_core.h: ditto.
+
+Tue Nov 20 21:12:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (RUBY_DTRACE_AVAILABLE): only check dtrace availability.
+
+ * configure.in (RUBY_DTRACE_POSTPROCESS): restore.
+
+Tue Nov 20 21:22:44 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_type.rb (test_implemented_ole_types):
+ IShellDispatch6 bundled in Windows 8. Thanks to phasis68 (Heesob
+ Park). [ruby-core:49580][Bug #7403]
+
+Tue Nov 20 21:06:41 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: some improvements.
+ * rational.c: ditto.
+
+Tue Nov 20 21:01:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (incs): BSD make cannot deal with non-prefixed dependency
+ and prefixed target.
+
+Tue Nov 20 20:10:23 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_bsearch): fix rdoc bug (O(n log n) -> O(log n)).
+ Patch by Charlie Somerville. [ruby-core:49661] [Bug #7409]
+
+ * range.c (range_bsearch): ditto.
+
+Tue Nov 20 19:02:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: rename and add TracePoint APIs.
+ (1) TracePoint.new(...){...} creates a new trace point
+ but does not make it enable.
+ (2) TracePoint.trace(...){...} creates a new trace point
+ and enable it (same as old behavior).
+ (3) TracePoint#enable make it enable (renamed from TracePoint#retrace).
+ If block given, when enable only in block.
+ (4) TracePoint#disable make it disable (renamed from TracePoint#untrace).
+ If block given, when disable only in block.
+ (5) TracePoint#enabled? returns this trace is enable or not.
+ [Feature #6895]
+
+ * test/ruby/test_settracefunc.rb: add tests.
+
+Tue Nov 20 18:35:05 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: add two methods:
+ (1) TracePoint#return_value which returns return
+ value on the :return and :c_return event.
+ (2) TracePoint#raised_exception which returns raised exception
+ value on the :raise event.
+ Each methods raise RuntimeError if it is called at unsupported
+ event.
+ Please review and give us feedback until next preview
+ release (Dec/2012) of Ruby 2.0.0.
+ [Feature #6895]
+
+ * insns.def, vm.c, vm_eval.c, vm_insnhelper.c, eval.c, thread.c:
+ ditto.
+
+ * vm_trace.c, vm_core.h: move definition of rb_trace_arg_t from
+ vm_trace.c to vm_core.h.
+ Caller fills rb_trace_arg_t and pass the pointer of this variable.
+
+ * test/ruby/test_settracefunc.rb: fix tests to test this change.
+
+Tue Nov 20 17:31:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: fix dtrace didn't work on darwin.
+
+ * configure.in (RUBY_DTRACE_AVAILABLE): unify RUBY_DTRACE_POSTPROCESS
+ and RUBY_DTRACE_BSD_BROKEN.
+
+Tue Nov 20 15:20:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * file.c (File.extname): Documentation for extname on dotfiles and
+ files ending with a dot. Also, added example for this.
+ [ruby-core:47852] [Bug #7112]
+
+Tue Nov 20 14:19:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_signal.rb (TestSignal#test_signame): fix windows
+ test failure. Process.kill on windows can't send a signal to
+ another process.
+
+Tue Nov 20 13:58:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (Init_IO): moved all rb_file_const() into file.c.
+ * file.c (Init_File): replace with rb_file_const() with
+ rb_define_const() because RDoc don't care rb_file_const.
+ [Bug #5530]
+
+Tue Nov 20 12:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ruby.c (usage_msg): Fix typo [ruby-core:49205] [Bug #7327]
+
+Tue Nov 20 12:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * file.c (File::NULL): Document File::NULL constant
+ [ruby-core:49384] [Bug #7365]
+
+Tue Nov 20 12:05:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_read): Windows 8 fixed one of a bug of console
+ API.
+ based on the patch by Heesob Park at [ruby-core:49479] [Bug #7379]
+
+Tue Nov 20 11:14:33 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (--enable-dtrace): always call RUBY_DTRACE_BSD_BROKEN
+ for portability.
+ As the note, FreeBSD 8 has DTrace as the optional
+ feature (it is enabled by the build option), but doesn't have USDT.
+ FreeBSD 9 has USDT but they are still optional. FreeBSD 10 will
+ enable them by default.
+ The variable $rb_cv_prog_dtrace_g is "yes" only on FreeBSD 9 with
+ optional DTrace or FreeBSD 10. If it is "no", you cannot know
+ whether it doesn't need -G or DTrace is disabled. (by checking
+ error code, you can know)
+
+Mon Nov 19 22:55:48 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * configure.in (--enable-dtrace): change help message
+
+Tue Nov 20 11:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/tracer.rb (Tracer.trace_func): printf to stdout
+ Patch by Michal Fojtik [ruby-core:45219] [Bug #6490]
+
+Mon Nov 19 21:24:18 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * vm_dump.c: not to include probes.h because the code does not depend
+ on it.
+ * common.mk (vm_dump.$(OBJEXT)): remove dependency on probes.h
+
+Tue Nov 20 10:14:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_s_check_interrupt): removed redundant
+ GET_THREAD().
+
+Tue Nov 20 10:12:46 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_threadptr_async_errinfo_active_p): added a small
+ comment.
+
+Tue Nov 20 10:05:56 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_blocking_region_end): replaced GET_THREAD()
+ with ruby_thread_from_native(). We don't have GVL here.
+
+Tue Nov 20 09:56:15 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_threadptr_execute_interrupts) removed.
+ * thread.c (rb_threadptr_execute_interrupts_common) renamed to
+ rb_threadptr_execute_interrupts. I.e. unified
+ rb_threadptr_execute_interrupts and rb_threadptr_execute_interrupts_common.
+ * thread.c (rb_thread_schedule, rb_thread_execute_interrupts) s/_common//.
+
+Tue Nov 20 09:48:34 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (rb_get_next_signal): removed pointless signal
+ disabling. pthread_sigmask() only changes current thread
+ mask.
+
+Tue Nov 20 09:36:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (install_sighandler): added comments why we need
+ rb_disable_interrupt().
+
+Tue Nov 20 09:31:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (rb_disable_interrupt, rb_enable_interrupt): removed
+ USE_TRAP_MASK.
+ * signal.c (trap_arg, trap_ensure): removed.
+ * signal.c (trap, sig_trap): removed pointless signal disabling.
+ We don't need it because we no longer run trap handler on signal
+ handler context.
+
+Tue Nov 20 09:20:49 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * prelude.rb: Moved Mutex#synchronize to
+ * thread.c (rb_mutex_synchronize_m): here. [Bug #4266]
+
+Tue Nov 20 08:36:15 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (sig_signame): implements Signal.signame method
+ [Feature #5613]
+ * test/ruby/test_signal.rb (test_signame): adds test for above
+ * NEWS: add an item about above
+
+Mon Nov 19 16:30:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * struct.c (rb_struct_each_pair): yield associated pairs so that
+ an unsplat argument can get both, for consistency with Hash,
+ OpenStruct, and etc. [ruby-dev:46533] [Bug #7382]
+
+Mon Nov 19 16:17:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBS): libelf is need on only FreeBSD.
+
+Mon Nov 19 16:08:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (RUBYLIB): purelib option in runruby.rb is deprecated
+ since r28841, so set to an empty list to get rid of a bogus path in
+ child processes, which caused an insecure operation exception in
+ test/ruby/test_encoding.rb:test_unsafe.
+
+Mon Nov 19 15:40:50 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (script): add OPTS=-v, requested by @_ko1.
+
+Mon Nov 19 15:09:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: fix didn't enable_dtrace=yes on auto.
+
+ * configure.in: see enable_dtrace for adding libelf on FreeBSD.
+
+ * common.mk: VPATH is not needed.
+
+Mon Nov 19 14:55:51 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: add `Thread#backtrace_locations' method.
+ This method is similar to `caller_locations' method for
+ specific method.
+ And fix to accept `level' and `n' parameters for `Thread#backtrace'
+ and `Thread#backtrace_locations'.
+ `caller' (and `caller_locations') do not return `caller' method
+ frame.
+ However, `Thread#backtrace' (and `Thread#backtrace_locations')
+ return `Thread#backtrace' method frame itself
+ if `Thread.current.backtrace' was called.
+
+ * vm_backtrace.c: ditto.
+
+ * internal.h: ditto.
+
+ * test/ruby/test_backtrace.rb: add tests.
+
+Mon Nov 19 14:54:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * Makefile.in, common.mk (probes.h): moved to common.mk and changed to
+ see $(srcdir).
+
+ * common.mk (probes.dmyh): now created it on $(srcdir) always.
+
+ * win32/Makefile.sub (.SUFFIXES): removed common suffix.
+
+Mon Nov 19 10:00:10 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (.SUFFIX): bsdmake needs .SUFFIX is defined before use.
+
+ * common.mk: fix path of probes.dmyh.
+
+ * common.mk (vm_dump.o): depend probes.h.
+
+ * configure.in: FreeBSD's USDT requires libelf.
+
+Mon Nov 19 01:11:59 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * vm_core.h, probes_helper.h (RUBY_DTRACE_FUNC_ENTRY_HOOK,
+ RUBY_DTRACE_FUNC_RETURN_HOOK): move from vm_core.h to new file
+ probes_helper.h for narrowing dependency to probes.h.
+ * common.mk (VM_CORE_H_INCLUDES): remove dependency to probes.h.
+ * common.mk (vm.$(OBJEXT)): add dependency to probes_helper.h.
+ * vm.c, vm_insnhelper.c: include probes_helper.h.
+
+Sun Nov 18 16:33:00 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * configure.in, Makefile.in, common.mk: support DTrace on Solaris 10,
+ based on r26235 by Yugui. On Solaris 10, low optimization level
+ may also be needed, e.g. optflags="-xO1" or "-xO0" with Oracle
+ SolarisStudio 12.3 cc.
+
+ * configure.in (--enable-dtrace): new option to enable/disable
+ DTrace support. By default, trying to enable if dtrace command
+ is found on the system. It is disabled when cross compiling.
+
+ * configure.in (RUBY_DTRACE_POSTPROCESS): new macro. checks whether
+ the dtrace on the system needs postprocessing with "dtrace -G".
+ The postprocessing is needed on Solaris 10 and other platforms.
+
+ * configure.in (RUBY_DTRACE_BSD_BROKEN): new macro. checks whether
+ the dtrace supports USDT.
+
+ * configure.in (DTRACE): move after RUBY_DTRACE_POSTPROCESS.
+
+ * configure.in (LD): On Solaris, /usr/ccs/bin/ld is preferred.
+
+ * configure.in, Makefile.in, common.mk (DTRACE_OBJ): new macro for
+ DTrace probe object generated by postprocessing with "dtrace -G".
+
+ * Makefile.in, common.mk (probes.$(OBJEXT)): DTrace probe object
+ generated by the postprocessing. New file probes.stamp is for
+ rebuilding related objects that may be modified by "dtrace -G".
+
+ * configure.in, Makefile.in, common.mk (DTRACE_GLOMMED_OBJ): new
+ macro for DTrace static library hacks.
+
+ * configure.in, Makefile.in (LIBRUBY_A_OBJS): ditto.
+
+ * Makefile.in, common.mk (ruby-glommed.$(OBJEXT)): new target with
+ rule for DTrace static library hacks.
+
+ * common.mk (DTRACE_DEPENDENT_OBJS): objects depended on probes.h.
+
+Sun Nov 18 09:31:47 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (read_comp): mathn compliant.
+ * rational.c (read_num): ditto.
+
+Sun Nov 18 02:50:12 2012 Luis Lavena <luislavena@gmail.com>
+
+ * win32/file.c (replace_to_long_name): correct logic around wildcard
+ characters detection and ensure wide-chars are used as pattern.
+ [ruby-core:49451] [Bug #7374]
+
+Sun Nov 18 02:02:46 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (read_comp): modified handling of polar form.
+
+Sun Nov 18 00:50:44 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (read_comp): fixed handling of polar form.
+
+Sun Nov 18 00:14:46 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (string_to_c_strict, string_to_c): rewrote without regexp.
+ * rational.c (string_to_r_strict, string_to_r): ditto.
+
+Sat Nov 17 23:53:05 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (make_patterns): should not accept extra sign.
+
+Sat Nov 17 21:45:12 Luis Lavena <luislavena@gmail.com>
+
+ * win32/file.c (replace_to_long_name): skip expansion for all wildcard
+ characters.
+ [ruby-core:49451] [Bug #7374]
+
+ * test/ruby/test_file_exhaustive.rb: add more assertions to test.
+
+Sat Nov 17 12:14:50 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: use literal YAML style
+ when emitting multi-line strings. Thanks @atambo
+
+ * test/psych/test_yaml.rb: test for change.
+
+Sat Nov 17 12:03:41 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: avoid raising exceptions when
+ parsing Floats and Integers. Thanks riffraff [ruby-core:44426]
+ * test/psych/test_numeric.rb: associated test
+
+Sat Nov 17 11:34:31 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * st.c (st_update): pass the key in st_table so that we can free
+ memory of the key in st_table when deleting.
+ [ruby-core:49220] [Bug #7330]
+
+ * test/-ext-/st/test_update.rb
+ (Bug::StTable#test_pass_objects_in_st_table): add a test.
+
+Sat Nov 17 11:26:36 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/core_ext.rb: move Kernel#y so that it can
+ manually be required as 'psych/y'.
+
+ * ext/psych/lib/psych/y.rb: ditto
+
+Sat Nov 17 08:13:48 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * lib/abbrev.rb: fix r37113. Correct examples, fix style
+ and show explicit dependency (require 'abbrev').
+
+Sat Nov 17 07:35:15 2012 Luis Lavena <luislavena@gmail.com>
+
+ * win32/file.c (replace_to_long_name): skip automatic path expansion
+ when wildcard character is used. [ruby-core:49451] [Bug #7374]
+
+ * test/ruby/test_file_exhaustive.rb: add a test for above.
+
+Sat Nov 17 00:50:23 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * marshal.c (w_object): add flonum to arg->data to keep reference index
+ consistency. [ruby-core:49323] [Bug #7348]
+
+ * test/ruby/test_marshal.rb: add a test for above.
+
+Sat Nov 17 00:40:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (incs): dist files need probes.dmyh.
+
+ * common.mk (probes.dmyh): depends on generator script.
+
+ * Makefile.in, common.mk, configure.in, win32/Makefile.sub (probes.h):
+ select generating with dtrace or copying dummy file by suffix rules.
+
+Fri Nov 16 19:24:10 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_call_without_gvl2): change the parameter of
+ `func' from `int *skip_interrupt' to `VALUE *flags'.
+ If (flags & RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS) is not zero,
+ then skip checking interrupt.
+ [ruby-core:46547]
+
+ * include/ruby/thread.h: ditto.
+
+Fri Nov 16 18:59:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (no-dtrace-probes.h): dmyprobes.h is in srcdir.
+
+ * common.mk (dmyprobes.h): ditto.
+
+Fri Nov 16 17:57:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (probes.h): split build commands for dtrace-available
+ and unavailable platforms.
+
+ * Makefile.in (incs): probes.h is a platform dependent file, so it
+ cannot be a part of prereq target. move it to all-incs.
+
+ * configure.in (DTRACE): move after AC_PROG_CC since cross_compiling
+ is set in it.
+
+ * configure.in (DTRACE): ignore non-prefixed version if
+ cross-compiling.
+
+ * Makefile.in, win32/Makefile.sub (probes.h): fix copying dmyprobes.h
+ path when outplace-build.
+
+Fri Nov 16 15:27:36 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * lib/net/pop.rb (POP3.certs): fix typo in comment.
+ patch from no6v (Nobuhiro IMAI) <nov@yo.rim.or.jp>.
+ [ruby-dev:46519] [Bug #7355]
+
+Fri Nov 16 12:36:47 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rake/helper.rb (Rake::TestCase#setup): revert r37669.
+ @orig_PWD should be the original pwd.
+
+ * test/rake/test_*.rb: don't use @orig_PWD to load libraries.
+ It should be specified with relative path from the file.
+
+Fri Nov 16 10:22:52 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rake/helper.rb (Rake::TestCase#setup): @orig_PWD shouldn't be
+ Dir.pwd when the build directory is different from source directory.
+
+Fri Nov 16 09:41:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rake/version.rb: workaround fix to build. see #7366
+ [ruby-dev:46522]
+
+Fri Nov 16 07:23:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake*: Updated to rake 0.9.4
+ http://rake.rubyforge.org/doc/release_notes/rake-0_9_4_rdoc.html for
+ a list of changes in 0.9.4.
+
+ * test/rake*: ditto
+
+ * NEWS: ditto
+
+Fri Nov 16 06:58:52 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake*: Updated to rake 0.9.3. See
+ http://rake.rubyforge.org/doc/release_notes/rake-0_9_3_rdoc.html for
+ a list of changes in 0.9.3.
+
+ * test/rake*: ditto
+
+ * bin/rake: ditto
+
+ * NEWS: ditto
+
+Thu Nov 15 22:39:32 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * range.c (range_bsearch): fix some bugs: a documentation bug, a wrong
+ condition, missed break in switch/case, and workaround for GCC
+ optimization. See [ruby-core:49364] in detail. A great patch from
+ Heesob Park. [Bug #7352] [Feature #4766]
+
+ * array.c (rb_ary_bsearch): fix similar bug (missed break).
+
+ * test/ruby/test_range.rb: add two test cases for above.
+
+Thu Nov 15 22:41:57 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.h (GENTRY): GENTRY should be pointer size.
+ A patch by yoshidam (Yoshida Masato) [Bug #7332].
+
+Thu Nov 15 13:20:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * man/erb.1: Fix grammar and copyright dates
+ * man/goruby.1: ditto
+ * man/irb.1: ditto
+ * man/rake.1: ditto
+ * man/ri.1: ditto
+ * man/ruby.1: ditto
+ Patch by Arthur Gunn
+ [Fixes Github #210]
+
+Thu Nov 15 11:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * man/ruby.1: Grammar edits for man page
+ Based on a patch by Michael Endsley [Fixes Github #183]
+
+Thu Nov 15 00:47:20 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * array.c (rb_ary_bsearch): add Array#bsearch for binary search.
+ [ruby-core:36390] [Feature #4766]
+
+ * test/ruby/test_array.rb: add a test for above.
+
+ * range.c (range_bsearch): add Range#bsearch for binary search.
+ [ruby-core:36390] [Feature #4766]
+
+ * test/ruby/test_range.rb: add a test for above
+
+ * NEWS: added the two new methods.
+
+Wed Nov 14 13:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/fileutils.rb (chmod): Add "X" to modes, convert format to table
+ [ruby-core:48965] [Bug #7288]
+
+Wed Nov 14 11:51:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/csv.rb (init_comments): Document private method #init_comments.
+ Based on a patch from Vincent Batts [ruby-core:49172] [Bug #7319]
+
+Wed Nov 14 00:54:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * Makefile.in (probes.h): create from probes.d
+
+Tue Nov 13 18:44:01 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_cfunc_with_frame): don't use ci after
+ EXEC_EVENT_HOOK because ci can be overridden.
+
+ * vm_eval.c: ditto.
+
+ * method.h: change invoker's parameters types.
+
+ * vm_method.c (call_cfunc_invoker_func): ditto.
+
+Tue Nov 13 18:01:54 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_using): raise an ArgumentError if cyclic using is
+ detected. based on the patch by Charlie Somerville.
+ [ruby-core:49092] Bug #7308
+
+ * test/ruby/test_refinement.rb: related test.
+
+Tue Nov 13 17:40:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (vm_insnhelper.c): this target is useless and causes
+ ruby always need rebuild.
+
+Tue Nov 13 17:35:49 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (insn_data_to_s_detail): remove debug lines.
+
+Tue Nov 13 17:28:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_caller_setup_args): save and restore
+ ci->argc and ci->blockptr before and after method invocations
+ because these method dispatches can override call_info.
+
+ * bootstraptest/test_method.rb: add tests for this fix.
+
+Tue Nov 13 16:38:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * common.mk (dmyprobes.h): always create for make dist.
+
+ * Makefile.in (probes.h): create or copy dmyprobes.h
+
+ * win32/Makefile.sub: only do copy dmyprobes.h.
+
+Tue Nov 13 15:37:21 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in (.SUFFIX): .SUFFIX is needed here for .d.h on bsd make.
+
+Tue Nov 13 15:34:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk Makefile.in win32/Makefile.sub (.d.h): it's not common.
+
+Tue Nov 13 12:27:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: disable dtrace because it doesn't work on FreeBSD.
+
+ * common.mk (clean-local): rm probes.h.
+
+ * common.mk (parse.o): depend $(PROBES_H_INCLUDES).
+
+ * common.mk (.d.h): moved from Makefile.in and use BASERUBY.
+
+ * tool/gen_dummy_probes.rb: reimplemented with ruby because sed is not
+ available on Windows Microsoft VC++ environment.
+
+Tue Nov 13 12:30:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/README.win32: added mention about build directory. currently
+ we can not build ruby in win32 directory. this problem is reported
+ by Masahiro Kitajima <katonbo@katontech.com>.
+
+Tue Nov 13 11:03:47 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * re.c (rb_memsearch_ss): performance improvement by using memmem(3) if
+ possible. [ruby-dev:45530] [Feature #6311]
+
+ * configure.in: check existence of memmem(3) and that it is not broken.
+
+Tue Nov 13 06:50:02 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * probes.d: add DTrace probe declarations. [ruby-core:27448]
+
+ * array.c (empty_ary_alloc, ary_new): added array create DTrace probe.
+
+ * compile.c (rb_insns_name): allowing DTrace probes to access
+ instruction sequence name.
+
+ * Makefile.in: translate probes.d file to appropriate header file.
+
+ * common.mk: declare dependencies on the DTrace header.
+
+ * configure.in: add a test for existence of DTrace.
+
+ * eval.c (setup_exception): add a probe for when an exception is
+ raised.
+
+ * gc.c: Add DTrace probes for mark begin and end, and sweep begin and
+ end.
+
+ * hash.c (empty_hash_alloc): Add a probe for hash allocation.
+
+ * insns.def: Add probes for function entry and return.
+
+ * internal.h: function declaration for compile.c change.
+
+ * load.c (rb_f_load): add probes for `load` entry and exit, require
+ entry and exit, and wrapping search_required for load path search.
+
+ * object.c (rb_obj_alloc): added a probe for general object creation.
+
+ * parse.y (yycompile0): added a probe around parse and compile phase.
+
+ * string.c (empty_str_alloc, str_new): DTrace probes for string
+ allocation.
+
+ * test/dtrace/*: tests for DTrace probes.
+
+ * vm.c (vm_invoke_proc): add probes for function return on exception
+ raise, hash create, and instruction sequence execution.
+
+ * vm_core.h: add probe declarations for function entry and exit.
+
+ * vm_dump.c: add probes header file.
+
+ * vm_eval.c (vm_call0_cfunc, vm_call0_cfunc_with_frame): add probe on
+ function entry and return.
+
+ * vm_exec.c: expose instruction number to instruction name function.
+
+ * vm_insnhelper.c: add function entry and exit probes for cfunc
+ methods.
+
+ * vm_insnhelper.h: vm usage information is always collected, so
+ uncomment the functions.
+
+Mon Nov 12 19:14:50 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (isinf, isnan): isinf() and isnan() are macros on
+ DragonFly which cannot be found by AC_REPLACE_FUNCS(). This
+ workaround enforces the fact that they exist on DragonFly.
+
+Mon Nov 12 15:59:38 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo),
+ vm_insnhelper.c (vm_search_method): revert r37616 because it's too
+ slow. [ruby-dev:46477]
+
+ * test/ruby/test_refinement.rb (test_inline_method_cache): skip
+ the test until the bug is fixed efficiently.
+
+Mon Nov 12 14:28:01 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb (each_export): skip garbage generated by VS2012's
+ nmake.
+ reported and patched by Yoshida Masato at [Bug #7333] [ruby-dev:46484]
+
+Sun Nov 11 18:58:55 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_date_{parse,strptime}.rb: changed the format of
+ some extra messages.
+
+Sun Nov 11 18:41:34 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (date__parse): revised the tight parser
+ (about handling of apostrophes).
+
+Sun Nov 11 15:39:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): just warn for wrong elements now.
+ [ruby-dev:46440] [Bug #7300]
+
+ * hash.c (rb_hash_s_create): refine error messages.
+
+ * error.c (rb_builtin_class_name): share for above.
+
+Sun Nov 11 15:12:18 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (top_using): remove Kernel#using, and add main.using instead.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sun Nov 11 13:41:01 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_using_refinement, rb_mod_using, f_using): clear method
+ cache only when using is called explicitly.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sun Nov 11 12:56:34 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * lib/pstore.rb (PStore): fix not to replace ThreadError raised in
+ #transaction block with PStore::Error.
+ [ruby-core:39238] [Bug #5269]
+
+Sun Nov 11 11:36:19 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo):
+ add a new field for inline method cache.
+
+ * vm_insnhelper.c (vm_search_method): check rb_call_info_t::refinements
+ not to confuse inline method cache when module_eval is used with
+ refinements.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Sun Nov 11 08:45:45 2012 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * ruby.c: removed a comma before "before"
+
+Sat Nov 10 23:02:31 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: move immutable fields from struct heaps_slot and struct
+ sorted_heaps_slot into struct heaps_header.
+ Based on a patch from Sokolov Yura [Feature #6199][ruby-core:43592]
+
+Sat Nov 10 19:28:16 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: modified doc.
+ * rational.c: ditto.
+
+Sat Nov 10 18:20:10 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c: edited about era.
+
+Sat Nov 10 12:13:41 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * tool/rbinstall.rb: Don't install *.gemspec under lib/.
+ [ruby-core:48966] [Bug #7289]
+ Reported by Vit Ondruch. Thanks!!!
+
+Sat Nov 10 00:49:26 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ruby_atomic.h: renamed from atomic.h to avoid header file name
+ conflict on Solaris 10. [ruby-dev:46414] [Bug #7287]
+
+ * gc.c, signal.c, vm_core.h, common.mk: reflect the rename from
+ atomic.h to ruby_atomic.h.
+
+Sat Nov 10 00:46:57 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * atomic.h: Revert r37491 which is a temporary workaround.
+
+Sat Nov 10 00:33:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * siphash.h: check configure macros before include newer headers.
+
+Fri Nov 9 23:33:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/erb.rb (ERB#run, ERB#result): eval under isolated bindings for
+ safe concurrent use. [ruby-core:47638] [Bug #7046]
+
+Fri Nov 9 23:05:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (BYTE_ORDER): define using configured WORDS_BIGENDIAN.
+
+ * siphash.c (sip_init_state): use union to suppress warnings by gcc
+ 4.7.
+
+Fri Nov 9 19:40:03 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_splice): fix r37583 doesn't consider the case when
+ beg > array length.
+
+Fri Nov 9 16:11:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rb_memhash): use siphash.
+
+Fri Nov 9 16:08:46 2012 Sokolov Yura funny-falcon <funny.falcon@gmail.com>
+
+ * array.c: speedup Array#unshift by using space in shared array.
+ [Feature #6638]
+ - when array owns its shared array (ARY_SHARED_NUM == 1), and there
+ is enough space then try unshift values directly into shared
+ array.
+ - when resulting array is big (~>64 items) then make it shared with
+ enough room for future #unshifts, and then insert into shared
+ array.
+
+ * array.c (rb_ary_splice): use shared array in rb_ary_slice.
+ [Feature #6638]
+ - use ary_ensure_room_for_push when rb_ary_slice used to add at the
+ end of array, cause rb_ary_concat use rb_ary_slice.
+
+ * array.c (ary_ensure_room_for_push): make array really suitable for
+ queue. [Feature #6638]
+ when array is shared (which happens after Array#shift), and
+ ARY_SHARED_NUM == 1 (which is very often when array used as queue),
+ then make rb_ary_push push directly into shared array.
+
+ * array.c (rb_ary_modify): steal shared array's container when
+ ARY_SHARED_NUM == 1. [Feature #6638]
+ - Do not allocate new memory in rb_ary_modify when ARY_SHARED_NUM == 1
+ and length almost same.
+ - Store ARY_CAPA instead of RARRAY_LEN in ary_make_shared, to make
+ it useful.
+ - Fix rb_ary_sort_bang accordantly.
+
+Fri Nov 9 16:00:00 2012 Zachary Scott <zzak@zacharyscott.net>
+
+ * ext/bigdecimal/bigdecimal.c: Documentation for BigDecimal
+ Based on a patch from Vincent Batts [ruby-core:49047] [Bug #7305]
+
+Fri Nov 9 15:25:42 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb (Shellwords#shellescape): Add back my original
+ real world example with some enhancement.
+
+ * lib/shellwords.rb (Shellwords#shelljoin): Undo part of the
+ previous rdoc change. This new example using a string-only
+ array was not in line with the description.
+
+Fri Nov 9 12:58:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_crypt): crypt(3) may return NULL.
+ Latest glibc (2.16?) crypt(3) actually returns NULL. [Bug #7312]
+
+Fri Nov 9 12:07:06 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * include/ruby/ruby.h (alloca), eval_intern.h (alloca), gc.c
+ (alloca): Make alloca() globally available by moving the
+ ultimate ifdef's to ruby/ruby.h. Gcc hides its builtin alloca()
+ when compiling with -ansi, and linking thus fails on platforms
+ that lack their own alloca() implementation in libc, which
+ include OpenBSD and some ports of NetBSD. We use alloca()
+ everywhere including from within third party C extensions, so
+ alloca() must be made globally available. [Bug #7307]
+
+ * addr2line.c (alloca): Replace the alloca() part with the
+ ultimate ifdef's. [Bug #7307]
+
+Fri Nov 9 09:30:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * io.c (IO#new):
+ Fix indentation from r37444
+ [ruby-core:48052] [Bug #7179]
+
+Fri Nov 9 07:36:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c (bigmul0): enable big_mul_toom3.
+ [ruby-core:48552] [Bug #7242]
+
+ * bignum.c (bigmul1_toom3): fix incorrect calculation.
+ the patch is made by Heesob Park.
+ [ruby-core:48552] [Bug #7242]
+
+Fri Nov 9 05:33:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c (bigmul0): disable big_mul_toom3 temporarily.
+ [ruby-core:48552] [Bug #7242]
+
+ * test/ruby/test_bignum.rb (test_mul_large_numbers):
+ add a test for bigmul1_toom3 suggested in [Bug #7242].
+
+Thu Nov 8 21:57:59 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * re.c (rb_memsearch): performance improvement by using memchr().
+ [ruby-dev:45397] [Feature #6173]
+
+Thu Nov 8 19:02:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
+ treat \r as newline as mame pointed. [ruby-dev:46425] [Bug #7278]
+
+Thu Nov 8 11:32:11 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (--with-opt-dir): Avoid nesting of double quotes
+ inside backquotes, since some traditional shells like PD KSH
+ (which OpenBSD's /bin/sh bases on) fail to parse them.
+
+Thu Nov 8 09:34:00 2012 Kenta Murata <mrkn@cookpad.com>
+
+ * numeric.c: Add a caution that the results of the comparing
+ operations of two NaNs are undefined.
+ [#1720] [ruby-dev:38725] [ruby-core:36966]
+
+Thu Nov 8 04:45:21 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * include/ruby/intern.h: Restore rb_enumeratorize as it was before
+ r37497 and introduce rb_enumeratorize_with_size instead. [#7302]
+
+ * enumerator.c: ditto.
+
+Wed Nov 7 15:22:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (ruby_float_step): fix r37514: it yielded with NaN
+ if the unit is infinity.
+
+Wed Nov 7 15:46:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/webrick.rb: fix typo. reported by Rohit Arondekar.
+ https://github.com/ruby/ruby/pull/211
+
+Wed Nov 7 15:34:12 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb: alias CGI#http_header to CGI#header.
+
+Wed Nov 7 12:49:39 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine): set RMODULE_IS_REFINEMENT to a created
+ refinement module, and don't override method_added.
+
+ * vm_method.c (rb_method_entry_make): check redefinition of
+ optimized methods when a method is added to a refinement module.
+ [ruby-core:48970] [Bug #7290]
+
+ * test/ruby/test_refinement.rb: related test.
+
+Wed Nov 7 11:48:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-additional.el (ruby-mode-set-encoding): now encoding needs
+ to be set always explicitly actually. [Feature #6679]
+
+Wed Nov 7 09:15:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_const_get): avoid inadvertent symbol creation.
+
+Wed Nov 7 07:52:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (rb_enum_cycle_size): prefix with rb.
+
+Wed Nov 7 04:32:15 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/ruby/test_file_exhaustive.rb: Remove FIXME skip on Windows
+ specific test because the test in question was already fixed.
+
+Wed Nov 7 03:45:12 2012 Luis Lavena <luislavena@gmail.com>
+
+ * ext/zlib/extconf.rb: Recognize zlibwapi as linking library.
+ Patch by Daniel Berger.
+
+ [ruby-core:44979] [Feature #6421]
+
+Wed Nov 7 02:06:40 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * enumerator.c: New method #size; constructor accepts size.
+ Have #to_enum accept a block
+ Warn when using deprecated form of constructor
+ Support #size for enumerators created from enumerators
+ Support for lazy.{map|flat_map|...}.size.
+
+ * include/ruby/intern.h: RETURN_SIZED_ENUMERATOR for support of
+ sized enumerators.
+
+ * array.c: Support for various enumerator.size.
+
+ * enum.c: ditto.
+
+ * hash.c: ditto.
+
+ * numeric.c: ditto.
+
+ * range.c: ditto.
+
+ * string.c: ditto.
+
+ * struct.c: ditto.
+
+ * vm_eval.c: ditto.
+
+Tue Nov 6 20:40:28 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * object.c (rb_mod_const_get): Fix constant missing exception class
+ and message to maintain backwards compatibility. Constant search
+ should start at Object when constant starts with '::'
+
+ * test/ruby/test_module.rb: test for fixes
+
+Tue Nov 6 16:50:00 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * lib/tempfile.rb (Tempfile#inspect): fix confusing #inspect.
+ previous Tempfile#inspect says it is a File, but actually
+ it is not a File.
+
+ t = Tempfile.new("foo") #=> #<File:/tmp/foo20121106-31970-1ffbum0>
+ t.is_a? File #=> false
+
+ now Tempfile#inspect returns like:
+
+ t = Tempfile.new("foo")
+ #=> #<Tempfile:/tmp/foo20121106-31970-1ffbum0>
+
+ [ruby-core:47544] [Bug #7027]
+
+Tue Nov 6 16:22:30 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * atomic.h: add #include <sys/atomic.h> for the workaround of
+ header file name conflict of atomic.h with /usr/include/atomic.h
+ on Solaris 10. [ruby-dev:46414] [Bug #7287]
+
+Tue Nov 6 14:38:00 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/win32ole/test_win32ole.rb: now source encoding is UTF-8, so
+ binary strings in old scripts are dangerous.
+
+Tue Nov 6 14:25:09 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
+ don't use /n in universal regexp. [ruby-dev:46394] [Bug #7278]
+
+Tue Nov 6 09:42:26 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_b): Add String#b, returning a copied string
+ whose encoding is ASCII-8BIT. [ruby-dev:45992] [Feature #6767]
+
+Tue Nov 6 09:37:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (load_file_internal): set default source encoding as
+ UTF-8 instead of US-ASCII. [ruby-core:46021] [Feature #6679]
+
+ * parse.y (parser_initialize): set default parser encoding as
+ UTF-8 instead of US-ASCII.
+
+Tue Nov 6 05:48:06 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_require.rb
+ (TestRequire#test_require_to_path_redefined_in_load_path,
+ TestRequire#test_require_to_str_redefined_in_load_path):
+ Suppress method redefined warning when test-all with RUBYOPT=-w.
+
+Thu Nov 8 00:24:14 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/curses/view.rb: Do not fail if the file to view is shorter
+ than the screen height.
+
+Mon Nov 5 11:40:00 2012 Mark Somerville <mark@scottishclmibs.com>
+
+ * thread_pthread.c (rb_reserved_fd_p): fix typo in macro check
+ that prevented the ifdef ever being true.
+ [Bug #7281] [ruby-core:48940]
+
+Mon Nov 5 23:28:57 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * file.c (rb_get_path_check_to_string): extract from
+ rb_get_path_check(). We change the spec not to call to_path of
+ String object.
+
+ * file.c (rb_get_path_check_convert): extract from rb_get_path_check().
+
+ * file.c (rb_get_path_check): follow the above change.
+
+ * file.c (rb_file_expand_path_fast): remove check_expand_path_args().
+ Instead we call it in load.c.
+
+ * file.c (rb_find_file_ext_safe): use rb_get_expanded_load_path() to
+ reduce expand cost.
+
+ * file.c (rb_find_file_safe): ditto.
+
+ * internal.h (rb_get_expanded_load_path): add a declaration.
+
+ * internal.h (rb_get_path_check_to_string, rb_get_path_check_convert):
+ add declarations.
+
+ * load.c (rb_construct_expanded_load_path): fix for compatibility.
+ Same checks in rb_get_path_check() are added. We don't replace
+ $LOAD_PATH and ensure that String object of $LOAD_PATH are frozen.
+ We don't freeze non String object and expand it every time. We add
+ arguments for expanding load path partially and checking if load path
+ have relative paths or non String objects.
+
+ * load.c (load_path_getcwd): get current working directory for checking
+ if it's changed when getting load path.
+
+ * load.c (rb_get_expanded_load_path): fix for rebuilding cache properly.
+ We check if current working directory is changed and rebuild expanded
+ load path cache. We expand paths which start with ~ (User HOME) and
+ non String objects every time for compatibility. We make this
+ accessible from other source files.
+
+ * load.c (rb_feature_provided): call rb_get_path() since we changed
+ rb_file_expand_path_fast() not to call it.
+
+ * load.c (Init_load): initialize vm->load_path_check_cache.
+
+ * vm.c (rb_vm_mark): mark vm->load_path_check_cache for GC.
+
+ * vm_core.h (rb_vm_struct): add vm->load_path_check_cache to store data
+ to check load path cache validity.
+
+ * test/ruby/test_require.rb (TestRequire): add tests for require
+ compatibility related to cached expanded load path.
+ [ruby-core:47970] [Bug #7158]
+
+Mon Nov 5 23:26:05 2012 Greg Price <price@mit.edu>
+
+ * load.c (rb_get_expanded_load_path): cache the expanded load
+ path. This saves 4KB of allocation and some stats for every
+ element of the load path (so nearly a MB in my Rails app)
+ on every require.
+
+ * load.c (rb_construct_expanded_load_path): ensure that $LOAD_PATH
+ entries are frozen strings. The user must mutate $LOAD_PATH
+ itself rather than its individual entries.
+
+ * vm_core.h (rb_vm_struct): add fields.
+
+ * vm.c (rb_vm_mark): mark new fields.
+
+ * ruby.c (process_options): modify $LOAD_PATH directly rather than
+ its elements.
+ Patch by Greg Price.
+ [ruby-core:47970] [Bug #7158]
+
+Mon Nov 5 23:24:42 2012 Greg Price <price@mit.edu>
+
+ * load.c (rb_feature_p, rb_provide_feature): index $LOADED_FEATURES
+ so that require isn't so slow.
+
+ * load.c (rb_provide_feature, get_loaded_features_index): ensure
+ that $LOADED_FEATURES entries are frozen strings. The user
+ must mutate $LOADED_FEATURES itself rather than its individual
+ entries.
+
+ * load.c (reset_loaded_features_snapshot): add a new function to reset
+ vm->loaded_features_snapshot.
+
+ * load.c (get_loaded_features_index_raw): add a new function to get
+ the loaded-features index.
+
+ * load.c (features_index_add_single): add a new function to add to the
+ loaded-features index a single feature.
+
+ * load.c (features_index_add): add a new function to add to the
+ loaded-features index all the required entries for `feature`.
+
+ * vm_core.h (rb_vm_struct): add fields.
+
+ * vm.c (rb_vm_mark): mark new fields.
+
+ * include/ruby/intern.h (rb_hash_clear): declare function.
+
+ * hash.c (rb_hash_clear): make function non-static.
+ Patch by Greg Price.
+ [ruby-core:47970] [Bug #7158]
+
+Mon Nov 5 23:23:51 2012 Greg Price <price@mit.edu>
+
+ * array.c (rb_ary_shared_with_p): new function.
+ Expose whether two arrays are shared (read-only, C only).
+
+ * include/ruby/intern.h (rb_ary_shared_with_p): declare.
+ Patch by Greg Price.
+ [ruby-core:47970] [Bug #7158]
+
+Mon Nov 5 23:21:14 2012 Greg Price <price@mit.edu>
+
+ * load.c (loaded_feature_path): clarify and briefly comment
+ function. These clarifications have no effect on the behavior
+ of the function.
+
+ * load.c (rb_feature_p): explain the search loop. Especially
+ useful because the logic is complicated as described in the
+ second paragraph.
+ Patch by Greg Price.
+ [ruby-core:47970] [Bug #7158]
+
+Mon Nov 5 22:45:03 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * ext/dl/win32/lib/Win32API.rb (Win32API#call): use 64bit pointer for x64
+ Windows. This would fix
+ TestSecureRandom#test_s_random_bytes_without_openssl error.
+ [ruby-core:47451] [Bug #6990]
+
+Mon Nov 5 22:09:26 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * cygwin/GNUmakefile.in (uncommon.mk): link *.res.o.
+ EXTOBJES is defined in uncommon.mk. *.res.o setting should be below
+ uncommon.mk.
+ [ruby-core:48858] [Bug #7277]
+
+Mon Nov 5 11:35:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_thread_init, native_thread_destroy):
+ removed HAVE_PTHREAD_CONDATTR_INIT check because this silly
+ #ifdef makes use-uninitialized-var issue and (2) native_cond_initialize()
+ already have a right platform and caller don't need any additional care.
+ [Bug #6825]
+
+Mon Nov 5 10:57:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi/core.rb: check if Tempfile is defined before use it.
+
+ * lib/cgi/core.rb: remove tempfiles only if tempfiles exist
+
+Mon Nov 5 12:17:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/uri/http.rb (URI::HTTP.build): Fix example
+ Patch by Carina C. Zona
+ [Fixes #209 Github]
+
+Mon Nov 5 09:55:05 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/core.rb: remove tempfile more early.
+
+Sun Nov 4 20:29:46 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi.rb, lib/cgi/*/rb: rename CGI#header to CGI#http_header,
+ add and update HTML5 tag generator. [Bug #7110]
+ Patch provided by Marcus Stollsteimer, thank you !
+
+Sun Nov 4 11:47:39 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * lib/fileutils.rb (module FileUtils): repatch [ruby-core:39622]
+ [Feature #5337]. improve performance of FileUtils.compare_stream.
+ [ruby-core:47545] [Feature #7028]
+
+Sun Nov 4 11:27:54 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (recursive_equal): fix to return true when self and other
+ are resized to same size and the current index become out of
+ range.
+
+ * test/ruby/test_array.rb: add a test for the above.
+
+Sun Nov 4 10:19:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (file_s_fnmatch): match with expanding braces if FNM_EXTGLOB
+ is set. [ruby-core:40037] [Feature #5422]
+
+Sat Nov 3 23:38:15 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: modified doc.
+ * rational.c: ditto.
+
+Sat Nov 3 22:38:55 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: modified doc.
+
+Sat Nov 3 18:35:55 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_vm_rewrite_ep_in_errinfo, vm_rewrite_ep_in_errinfo):
+ merge code and remove `rb_vm_rewrite_ep_in_errinfo'.
+
+Sat Nov 3 18:15:24 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c, proc.c: avoid unnecessary `rb_vm_rewrite_ep_in_errinfo'
+ calls.
+
+Sat Nov 3 17:53:43 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * bin/testrb: Use only Test::Unit::AutoRunner in test-unit gem
+ compatible API to be available by both test/unit bundled in Ruby
+ and test-unit gem.
+ * lib/test/unit.rb (Test::Unit::AutoRunner): Move codes from testrb.
+
+Sat Nov 3 14:56:21 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (parse_eu): should capture apostrophe too.
+
+Sat Nov 3 14:46:15 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (date__parse): revised the tight parser.
+
+Sat Nov 3 14:43:42 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/xmldecl.rb (REXML::XMLDecl#content): Add missing \A
+ and \z.
+
+Sat Nov 3 14:42:55 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/output.rb (REXML::Output#initialize): Use normalized
+ encoding name.
+
+Sat Nov 3 14:41:17 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/output.rb (REXML::Output): Don't output BOM in middle
+ of the output string.
+ * test/rexml/test_document.rb: Add a test for the above change.
+
+Sat Nov 3 14:09:55 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * NEWS: Add an item about REXML::Document#write.
+
+Sat Nov 3 13:46:49 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_document.rb: Fix tests that expect encoding name
+ isn't normalized.
+
+Sat Nov 3 13:26:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * dir.c (Dir#glob):
+ Documentation for pattern section, backslash subsection
+ Patch by Eric Bouchut
+ [ruby-core:48528] [Bug #7230]
+
+Sat Nov 3 13:26:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * io.c (IO#new):
+ Documentation for IO#open modes and formatting
+ [ruby-core:48052] [Bug #7179]
+
+Sat Nov 3 13:01:02 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_encoding.rb (EncodingTester#test_in_different_out):
+ Fix a test that expects encoding in XML declaration is changed by
+ Output's encoding. It is dropped feature.
+
+Sat Nov 3 12:49:45 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Document encoding
+ option. Now different encoding between XML file's encoding and
+ XML declaration's encoding is support.
+ [Feature #4872] (work in progress)
+ * lib/rexml/xmldecl.rb (REXML::XMLDecl#write): Always use XMLDecl's
+ encoding.
+ * test/rexml/test_document.rb: Update tests for the above change.
+
+Sat Nov 3 12:18:35 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (recursive_equal): fix not to make invalid pointers when
+ self and other are resized to same size in #== of their elements.
+ [ruby-dev:46373] [Feature #6177]
+
+Sat Nov 3 12:06:15 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_xml_declaration.rb (TestXmlDeclaration#test_*):
+ Remove needless prefix from test names.
+
+Sat Nov 3 12:04:52 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_xml_declaration_parent_child.rb: Rename to ...
+ * test/rexml/test_xml_declaration.rb: ... this.
+
+Sat Nov 3 11:43:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * hash.c (rb_hash_delete): Correct grammar
+ Patch by Glenn Oppegard
+ [Fixes #208 Github]
+
+Sat Nov 3 11:28:28 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * NEWS: add a news about GC::Profiler.raw_data.
+
+Sat Nov 3 11:01:32 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * NEWS: add a news about rb_newobj_of() and NEWOBJ_OF().
+
+Sat Nov 3 10:17:41 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * eval.c (f_current_dirname): add the new method for Kernel.
+ This method almost same as File.dirname(__FILE__). One
+ different behavior is it returns nil when __FILE__ returns nil.
+ [Feature #3346]
+
+ * NEWS: ditto
+
+ * test/ruby/test_method.rb: related test.
+
+Sat Nov 3 09:03:34 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_refinement.rb (test_new_method_by_send,
+ test_new_method_by_method_object): add tests for Kernel#send and
+ Kernel#method with refinements.
+
+ * test/ruby/test_refinement.rb (test_symbol_to_proc): add a test
+ calling a proc created by Symbol#to_proc outside the scope where
+ a refinement is closed over.
+
+Sat Nov 3 04:14:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_vm_rewrite_ep_in_errinfo): rewrite all catch points in
+ errinfo, not only the topmost frame. based on the patch by
+ ktsj (Kazuki Tsujimoto) in [ruby-dev:45656]. [Bug #6460]
+
+Fri Nov 2 20:11:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#timestamp_file): remove @ which looks like
+ configure variables.
+
+ * lib/mkmf.rb (MakeMakefile#timestamp_file): use .-. instead of !, a
+ special character of NMAKE and BSD make. [Bug #7265]
+
+Fri Nov 2 17:55:39 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (_run_parallel): Delete status line before showing
+ results. Patch by Hiroshi Shirosaki. [Bug #6897] [ruby-core:47250]
+
+ * lib/test/unit.rb (_run_parallel): Fix strange result when disabled retrying.
+ Patch by Hiroshi Shirosaki. [Bug #6897] [ruby-core:47250]
+
+Fri Nov 2 17:52:12 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * object.c (rb_mod_to_s): Module#{to_s,inspect}, when invoked on
+ a refinement, returns a string in the format #<refinement:C@M>,
+ where C is a refined class and M is a module at which the refinement
+ is defined.
+
+ * eval.c (rb_mod_refine): store information on a refinement for the
+ above change.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Fri Nov 2 16:57:52 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * vm_dump.c (rb_vm_bugreport): Because of many log directories,
+ making directory lists readable.
+
+Fri Nov 2 16:44:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * vm_dump.c (rb_vm_bugreport): add ~/Library/Logs/DiagnosticReports
+ in the locations list of crash reports.
+
+Fri Nov 2 14:52:52 2012 Masaki Matsushita <glass.saga@gmail.com>
+
+ * array.c (recursive_equal): performance improvement by avoiding
+ overhead to call rb_ary_elt().
+ [ruby-dev:45412] [Feature #6177]
+
+Fri Nov 2 14:47:53 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * string.c (sym_to_proc, sym_call): A Proc created by Symbol#to_proc
+ should close over the current refinements.
+ [ruby-dev:46345] [Bug #7261]
+
+ * vm_eval.c (rb_call0, rb_search_method_entry,
+ rb_funcall_passing_block_with_refinements): add a new argument
+ `refinements' for the above changes.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Fri Nov 2 08:24:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (top_define_method): new method, main.define_method.
+ [ruby-core:45715] [Feature #6609]
+
+ * eval.c (top_include): fix a warning message, main is not a class or
+ module.
+
+Fri Nov 2 04:41:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#timestamp_file): use ! instead of %, a GNU
+ make special character.
+
+Fri Nov 2 04:40:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_process.rb (test_execopts_preserve_env_on_exec_failure):
+ use never existing file in the current temporary directory.
+
+Fri Nov 2 04:23:20 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: add feature to tag preview/rc.
+
+Fri Nov 2 03:23:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/mkmf.rb: fix for if config["libdir"] is nil.
+
+Thu Nov 1 23:06:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/make-snapshot: fix wrong regexp for releasing preview.
+ patched by mame.
+
+Thu Nov 1 22:27:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: add a news about objspace,
+ ObjectSpace.reachable_objects_from.
+
+Thu Nov 1 21:57:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new),
+ test/bigdecimal/test_bigdecimal.rb:
+ Fix exception message of BigDecimal constructor with a Float.
+
+Thu Nov 1 21:52:20 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_add),
+ test/bigdecimal/test_bigdecimal.rb:
+ need to specify precision for converting Rational and Float.
+ [ruby-core:48045] [Bug #7176]
+
+Thu Nov 1 21:42:20 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb: Revert r37404. My ubuntu box has
+ actually the directory named "/nonexistent"... Sorry.
+
+Thu Nov 1 21:28:28 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * test/ruby/test_process.rb: Process.exec raised EACCES on Linux
+ 3.5.0-17-generic. This is a temporal fix to rescue that exception.
+ Needs kosaki's review.
+
+Thu Nov 1 21:19:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (set_relation): parent_iseq need to be set regardless iseq
+ type. fix r37397.
+
+Thu Nov 1 19:47:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (RUBY_STACK_MIN): may not a compile time constant.
+ fix r37079. [ruby-dev:46322] [Bug #7247]
+
+Thu Nov 1 16:44:36 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * NEWS: add note for Module#refine, Module#refinements,
+ Module#using, and Kernel#using.
+
+Thu Nov 1 14:41:47 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_using_module): using should be used indirectly.
+ [ruby-dev:46326] [Feature #7251]
+
+Wed Oct 31 18:17:38 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_profile_record): don't define unused variables when
+ GC_PROFILE_MORE_DETAIL is 0.
+
+Wed Oct 31 18:10:53 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_prof_mark_timer_stop): count is not initialized.
+
+Wed Oct 31 09:28:24 2012 Eric Hodel <drbrain@segment7.net>
+
+ * thread.c (rb_thread_call_without_gvl2): Note that ubf() may or may
+ not be called with the GVL. Hinted that rb_thread_call_with_gvl()
+ can be used to access ruby functionality.
+
+Wed Oct 31 09:06:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * thread.c (rb_thread_call_without_gvl2): Update documentation to
+ natural English.
+ * thread.c (rb_thread_call_with_gvl): ditto.
+
+Wed Oct 31 02:53:07 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/dl/lib/dl/struct.rb: fix strange require order. [ruby-dev:45702]
+
+ * ext/dl/lib/dl/value.rb: ditto
+
+ * test/dl/test_c_struct_entry.rb: remove strange require order from
+ tests.
+
+ * test/dl/test_c_union_entity.rb: ditto
+
+Tue Oct 30 23:59:32 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refine): fix the error message when no block is
+ given. [ruby-dev:46319] [Bug #7244]
+
+ * test/ruby/test_refinement.rb: related test.
+
+Tue Oct 30 19:27:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (redirect_dup2): set standard handles when new fd is stdio,
+ because if there is no allocated console at the moment Windows does
+ not automatically associate it for child process's standard handle.
+ this is adhoc workaround.
+ reported by Martin Thiede at [ruby-core:48542] [Bug #7239].
+
+ * io.c (rb_cloexec_dup2): ditto.
+
+Tue Oct 30 03:08:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rbconfig/obsolete.rb (Config): re-introduce warnings for a
+ lame-duck. [ruby-core:46836] [Bug #6809]
+
+Tue Oct 30 02:20:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * thread.c: added Thread#thread_variable_(get|set),
+ Thread#thread_variable?, and Thread#thread_variables for operating
+ on variables that are local to threads. [ruby-core:47790]
+
+ * vm.c: ditto
+
+ * test/ruby/test_thread.rb: tests for thread variables.
+
+Mon Oct 29 18:22:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_close): close separately per each
+ instances, as well as IO.
+
+Mon Oct 29 10:22:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/handlers/recorder.rb: added a class for
+ recording YAML parse and emit events.
+
+ * ext/psych/lib/psych/handler.rb: adding a list of events so that
+ handler classes can more easily be meta-programmed.
+
+ * test/psych/handlers/test_recorder.rb: tests for the change.
+
+Mon Oct 29 05:48:52 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/ostruct.rb: Add [] and []=, base on a patch by Thomas Sawyer.
+ Also accept {Open}Struct as argument to new.
+ Add #eql?, #hash & #each_pair
+ Protect new_ostruct_member
+
+Mon Oct 29 03:20:58 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Fix determinant_e [ruby-dev:46305] [Bug #7228]
+
+Sun Oct 28 23:52:25 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_document.rb: Add tests for parsing XML encoded
+ by UTF-8 with BOM.
+
+Sun Oct 28 23:47:09 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/source.rb: Move encoding detection code to base class.
+ * lib/rexml/encoding.rb: Remove needless encoding detection code.
+
+Sun Oct 28 21:40:13 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb: Fix a bug that UTF-8 is used
+ for UTF-16XX encoded XML that doesn't have encoding="UTF-16" in
+ XML declaration.
+ * test/rexml/test_document.rb: Add tests for the above change.
+
+Sun Oct 28 21:37:34 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_document.rb: Group tests that they parse
+ UTF-16XX encoded XML that has encoding="UTF-16" in XML declaration.
+
+Sun Oct 28 21:25:11 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/source.rb (REXML::IOSource#initialize): Reduce
+ @line_break initialize code. It should be done only in #encoding=.
+ * lib/rexml/parsers/baseparser.rb: Don't set UTF-16 encoding to
+ source by encoding="UTF-16" in XML declaration because UTF-16XX
+ source encoding should be set in Source#initialize or
+ IOSource#initialize. They should handle BOM. Parser should not
+ consider about it.
+
+Sun Oct 28 21:18:37 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * test/rexml/test_document.rb: Add tests for parsing XML encoded
+ by UTF-16 with BOM.
+
+Sun Oct 28 19:12:11 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (iso8601_{ext,bas}_time): should not match
+ empty string.
+
+Sun Oct 28 18:51:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (date__parse): revised the tight parser.
+
+Sun Oct 28 15:41:50 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Add :encoding option
+ to support custom XML encoding.
+ [Feature #4872] (work in progress)
+ * test/rexml/test_document.rb: Add tests for the above change.
+
+Sun Oct 28 15:00:19 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Remove needless
+ indent in document.
+
+Sun Oct 28 14:59:14 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Accept options
+ Hash as argument.
+ * test/rexml/test_document.rb: Add tests for the above change.
+
+Sun Oct 28 14:09:44 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Fix wrong usage
+ in document.
+
+Sun Oct 28 14:03:48 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/document.rb (REXML::Document#write): Fix wrong method
+ names in document.
+
+Sun Oct 28 10:12:15 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: `tree` should return the
+ same thing on every call.
+
+ * test/psych/visitors/test_yaml_tree.rb: related test.
+
+Sun Oct 28 10:05:03 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: YAML Tree object should
+ be able to take an emitter object as it's output.
+
+ * test/psych/visitors/test_yaml_tree.rb: related test.
+
+Sun Oct 28 08:23:16 2012 Koichi Sasada <ko1@atdot.net>
+
+ * bignum.c (bignew_1): Bignum instances are frozen.
+ Feature #3222
+
+ * include/ruby/ruby.h: Fixnum instances are also frozen.
+
+ * class.c (singleton_class_of): check Bignum before
+ singleton checking.
+
+ * test/ruby/test_bignum.rb: add a test.
+
+ * test/ruby/test_fixnum.rb: ditto.
+
+ * test/ruby/marshaltestlib.rb, test/ruby/test_eval.rb,
+ test/ruby/test_object.rb: catch up above changes.
+
+Sun Oct 28 04:38:06 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_define_method): remove type and frozen checking.
+ Checking is done in `rb_singleton_class()'.
+
+Sun Oct 28 00:49:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assign_in_cond): warn for static content object assignments
+ in conditional statements. [ruby-dev:43083] [Feature #4299]
+
+Sat Oct 27 23:33:41 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * gc.c (gc_profile_result, gc_profile_report): use internal structures
+ to avoid allocations and progressively print the output for #report.
+ [ruby-core:47163] [Bug #6865]
+
+Sat Oct 27 11:01:10 2012 Koichi Sasada <ko1@atdot.net>
+
+ * numeric.c (rb_float_new_in_heap), include/ruby/ruby.h:
+ make all Float objects frozen.
+ [ruby-dev:46081] [ruby-trunk - Feature #6936]
+ Most part of patch by NARUSE, Yui <naruse@ruby-lang.org>.
+
+ * class.c (singleton_class_of): raise TypeError when
+ trying to define a singleton method on Float objects.
+
+ * vm.c (vm_define_method): ditto.
+
+ * test/ruby/marshaltestlib.rb: catch up above changes.
+
+ * test/ruby/test_class.rb: ditto.
+
+ * test/test_pp.rb: ditto.
+
+Sat Oct 27 10:50:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * object.c (rb_mod_const_get): make sure the constant name is
+ converted to a string before searching. [ruby-core:48405]
+
+Sat Oct 27 10:12:13 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * iseq.c (rb_iseq_compile_with_option): Instead of testing
+ respond_to, just check if the argument is actually a file,
+ because by calling user-defined gets something weired can
+ happen. Patch by Glass_saga. [ruby-dev:40202] [Bug #2861]
+
+ * parse.y (ripper_initialize): ditto.
+
+Sat Oct 27 10:07:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (enum lex_state_e): [EXPERIMENTAL] lex_state as bit field /
+ IS_lex_state() macro. based on the patch by Dave B in
+ [ruby-core:23503]. [Feature #1493]
+
+Sat Oct 27 10:05:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h (fstat): use _fstati64() instead of fstati64()
+ on mingw32.
+
+Sat Oct 27 06:28:33 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * object.c (rb_mod_const_get): const_get accepts qualified constant
+ strings. e.g. Object.const_get("Foo::Bar::Baz") [ruby-core:41404]
+
+ * test/ruby/test_module.rb: tests for new behavior
+
+Fri Oct 26 13:24:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (literal_concat_gen): merge fixed strings across
+ concatenated literals, after an interpolation.
+
+Thu Oct 25 17:48:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (has_redirection): should use shell (cmd.exe) when
+ the commandline contains '&'.
+ reported by Roger Pack at [ruby-core:47912] [Bug #7143], and
+ patched by Heesob Park at [ruby-core:47931].
+
+Thu Oct 25 15:00:08 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h, class.c: remove (revert)
+ `rb_add_method_cfunc_frameless()' API.
+ This API is not mature to become an official API.
+ For example, we can not use this API with
+ `rb_define_private_method()'.
+
+ * method.h, vm_method.c (rb_add_method_cfunc_frameless): removed.
+
+Thu Oct 25 13:35:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/mkconfig.rb: remove string literal concatenation.
+
+Wed Oct 24 18:49:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/objspace/objspace.c (type2sym, count_objects_size): use enum
+ instead of size_t which may be larger than actual values.
+
+Wed Oct 24 17:41:24 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: add `-x' or `--exclude' option
+ to specify exclude benchmark name pattern.
+ You can specify "-x foo" if you want to exclude the benchmarks
+ if the name of benchmark contains `foo'.
+
+Wed Oct 24 11:57:24 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_prepare_free_objects): rename to match the behavior of
+ this function.
+
+Wed Oct 24 11:55:19 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (reachable_object_from_i): change data
+ structure of the result of reachable objects. Keys of table
+ contains object_id of each reachable objects. Value of table
+ is an object itself or an instance of InternalObjectWrapper.
+ To avoid duplication, we use st_table and object_id keys.
+
+ * ext/objspace/objspace.c (type2sym): bug fix.
+ Should use `i' instead of `type'.
+
+Wed Oct 24 10:33:09 2012 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (garbage_collect, gc_marks): move the location of
+ clear and restore rb_objspace_t::mark_func_data
+ from garbage_collect() to gc_marks().
+
+Wed Oct 24 10:17:45 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (Init_objspace): add a new method
+ `ObjectSpace::InternalObjectWrapper#internal_object_id' which returns
+ an object id of a wrapped internal object.
+
+Wed Oct 24 08:55:04 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c (ObjectSpace.reachable_objects_from):
+ internal object support.
+ If given object `obj' has references to internal objects
+ (such as T_NODE objects), then this method returns instances of
+ `ObjectSpace::InternalObjectWrapper' instead of that internal objects.
+ This instance contains a reference to an internal object and you can
+ check the type of internal object using
+ `ObjectSpace::InternalObjectWrapper#type' method.
+ Rdoc of `InternalObjectWrapper' is not prepared yet.
+
+ * gc.c (rb_objspace_reachable_objects_from), gc.h: change
+ an interface of 'rb_objspace_reachable_objects_from()'
+
+ * gc.c, gc.h: add two APIs
+ - rb_objspace_markable_object_p(obj): check markable or not.
+ - rb_objspace_internal_object_p(obj): check internal or not.
+
+Wed Oct 24 05:52:36 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): remove `default' and
+ add a case for `VM_METHOD_TYPE_UNDEF'.
+
+Wed Oct 24 05:41:18 2012 Koichi Sasada <ko1@atdot.net>
+
+ * eval_error.c (error_print), vm_eval.c (eval_string_with_cref),
+ vm_trace.c (rb_suppress_tracing): use TH_PUSH_TAG() instead of
+ PUSH_TAG().
+
+Wed Oct 24 05:17:52 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (vm_call0_body): remove RUBY_VM_CHECK_INTS()
+ after method invocation using rb_call0().
+
+ * vm_eval.c (vm_call0_body): remove default section on top of
+ switch statement and add cases for `VM_METHOD_TYPE_CFUNC_FRAMELESS'
+ and `VM_METHOD_TYPE_UNDEF'.
+
+ * vm_eval.c (vm_call0_body): remove useless brackets.
+
+Tue Oct 23 22:34:49 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (thread_raise_m): check interrupts after Thread#raise
+ if a target thread is the current thread because the behavior
+ of Thread.current.raise is expected to perform same as
+ Kernel.raise (by rubyspec).
+
+Tue Oct 23 17:08:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (usage, process_options): show more info in --help.
+ [EXPERIMENTAL] [ruby-core:48072] [Bug #7184]
+
+Tue Oct 23 14:20:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * misc/ruby-electric.el using variable `last-command-event' instead of
+ obsolete `last-command-char', so that work with Emacs trunk.
+ a patch by Victor Deryagin <vderyagin AT gmail.com>.
+
+Tue Oct 23 14:06:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (visibility_option): visibility attribute is not
+ available before GCC 4, so do not use -fvisibility option in that
+ case. [ruby-core:48147] [Bug #7205]
+
+Tue Oct 23 12:57:29 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h, vm_insnhelper.c, vm_eval.c (OPT_CALL_CFUNC_WITHOUT_FRAME):
+ add a new optimization and its macro `OPT_CALL_CFUNC_WITHOUT_FRAME'.
+ This optimization makes all cfunc method calls `frameless', which
+ is faster than ordinal cfunc method call.
+ If `frame' is needed (for example, it calls another method with
+ `rb_funcall()'), then build a frame. In other words, this
+ optimization delays frame building.
+ However, to delay the frame building, we need additional overheads:
+ (1) Store the last call information.
+ (2) Check the delayed frame building before the frame is needed.
+ (3) Overhead to build a delayed frame.
+ rb_thread_t::passed_ci is storage of delayed cfunc call information.
+ (1) is lightweight because it is only 1 assignment to `passed_ci'.
+ To achieve (2), we modify GET_THREAD() to check `passed_ci' every
+ time. It causes 10% overhead on my environment.
+ This optimization only works for cfunc methods which do not need
+ their `frame'.
+ After evaluation on my environment, this optimization does not
+ effective every time. Because of this evaluation results, this
+ optimization is disabled at default.
+
+ * vm_insnhelper.c, vm.c: add VM_PROFILE* macros to measure behaviour
+ of VM internals. I will extend this feature.
+
+ * vm_method.c, method.h: change parameters of the `invoker' function.
+ Receive `func' pointer as the first parameter.
+
+Tue Oct 23 06:21:05 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: just get the constant defined in Ruby.
+
+ * ext/psych/lib/psych/syntax_error.rb: Psych::SyntaxError now inherits
+ from StandardError rather than SyntaxError. Thanks Eric Hodel!
+
+ * test/psych/test_exception.rb: tests for change.
+
+Tue Oct 23 06:17:36 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Cache symbols while
+ tokenizing. Thanks Kevin Menard!
+
+Tue Oct 23 06:15:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Updated the RegExp to catch
+ Strings earlier in the tokenization process. Thanks Kevin Menard!
+
+Tue Oct 23 06:12:39 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Handle nil tags specially
+ to avoid slow method_missing calls. Thanks Kevin Menard!
+
+Tue Oct 23 06:07:57 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Ignore bad timestamps. If
+ something looks like a timestamp but has an invalid component, treat
+ it as a string instead of throwing an ArgumentError.
+ Thanks Rhett Sutphin!
+
+ * test/psych/test_scalar_scanner.rb: appropriate tests.
+
+Tue Oct 23 06:04:07 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Fix scalar_scanner to
+ understand strings starting with an underscore and containing only
+ digits. Thanks Kelley Reynolds.
+
+ * test/psych/test_scalar_scanner.rb: test for fix
+
+Tue Oct 23 06:00:41 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: Changed comment in psych.rb to update new
+ home page for libyaml. Thanks to Carolyn Ann.
+
+Sun Oct 21 19:12:59 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_core.h (rb_vm_t::trace_running): add a new field
+ `trace_running' to store vm global tracing status.
+
+ * vm_trace.c: fix SEGV bug. event_hook was free'd
+ even when the hook is still used in another thread.
+ [ruby-dev:46141] [Bug #7032]
+
+Sun Oct 21 19:12:42 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_core.h (rb_vm_t::trace_flag): remove `trace_flag'
+ which is no longer used.
+
+Sun Oct 21 18:34:27 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c (date__parse): uses more tight parser if
+ defined TIGHT_PARSER. now inactivated; because it introduces
+ incompatibilities and it is a bit slow.
+
+Sat Oct 20 15:35:06 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * include/ruby/ruby.h: add C APIs.
+ VALUE rb_newobj_of(VALUE klass, VALUE flags)
+ #define NEWOBJ_OF(obj,type,klass,flags)
+ These allow to change a allocation strategy depending on klass
+ or flags.
+
+ * gc.c: ditto
+
+ * array.c: use new C API.
+ * bignum.c: ditto
+ * class.c: ditto
+ * complex.c: ditto
+ * ext/socket/ancdata.c: ditto
+ * ext/socket/option.c: ditto
+ * hash.c: ditto
+ * io.c: ditto
+ * marshal.c: ditto
+ * numeric.c: ditto
+ * object.c: ditto
+ * random.c: ditto
+ * range.c: ditto
+ * rational.c: ditto
+ * re.c: ditto
+ * string.c: ditto
+ * struct.c: ditto
+ [Feature #7177][Feature #7047]
+
+Sat Oct 20 12:50:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * ext/socket/socket.c: Documentation for Socket
+ Based on a patch by David Albert
+ [Bug #7105] [ruby-core:47828]
+
+Sat Oct 20 11:00:00 2012 Zachary Scott <zachary@zacharyscott.net>
+
+ * lib/open-uri.rb: Documentation for OpenURI
+
+Sat Oct 20 06:18:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * hash.c (initialize_copy): unset the default proc if there isn't one
+ for the target hash, call to_hash, check frozen status.
+
+Fri Oct 19 22:22:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_vm_jump_tag_but_local_jump): pass through thrown objects.
+ [ruby-dev:46234] [Bug #7185]
+
+ * vm_eval.c (rb_eval_cmd): if state is non-zero, val should be nil and
+ rb_vm_jump_tag_but_local_jump() just jump tag.
+
+Fri Oct 19 22:11:55 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * pack.c (pack_unpack): set encoding of the
+ 'H','h','B' and 'B' modifiers to US-ASCII.
+
+ * test/ruby/test_pack.rb: tests for the above.
+ [ruby-core:47653][Bug #7050]
+
+ * test/test_securerandom.rb: tests for SecureRandom.hex
+ from tenderlove. [ruby-core:46792][Bug #6799]
+
+Fri Oct 19 19:29:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * method.h (rb_method_cfunc_t::invoker): add new field (func ptr)
+ `invoker'. `invoker' function invoke cfunc body
+ (rb_method_cfunc_t::func).
+ `invoker' is set at method definition timing.
+ With this change, the big `switch' (branch) in `call_cfunc()'
+ is no longer needed.
+ However, the performance benefit is only a bit.
+
+ * vm_core.h (rb_call_info_t::aux::func): add a new field to store
+ cfunc body function pointer.
+
+ * vm_method.c (call_cfunc_invoker_func): add a new function which
+ returns a suitable invoke function.
+
+ * vm_method.c (setup_method_cfunc_struct): added.
+
+ * vm_method.c (rb_add_method): fix to set `invoker'.
+
+ * vm_eval.c (vm_call0_body): catch up above changes.
+
+ * vm_insnhelper.c (call_cfunc): removed.
+
+ * vm_insnhelper.c (vm_call_cfunc): fix to call cfunc body
+ with `invoker' function.
+
+Fri Oct 19 16:55:58 2012 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, vm_eval.c: use TH_PUSH_TAG() instead of PUSH_TAG().
+
+Fri Oct 19 11:13:55 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: remove unexpected `output'.
+ (commit miss)
+
+Fri Oct 19 10:24:03 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_search_method): remove needless local variable.
+
+Fri Oct 19 10:22:26 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bmx_temp.rb: removed.
+ This file should not be in repository.
+
+Fri Oct 19 10:20:10 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: add new option `--ruby-arg [ARG]'
+ which is passed as a launch parameter for each ruby's execution.
+ ($ ruby [ARG] [File])
+
+Thu Oct 18 18:42:35 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_send_simple): move the location of
+ `opt_send_simple' to the place near `send' definition.
+ (to take care about icache locality).
+
+Thu Oct 18 18:29:25 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (send): remove unused condition.
+ This condition will be true after r37258.
+
+ * vm_insnhelper.c (vm_caller_setup_args): remove `UNLIKELY' on
+ checking blockiseq (it seems `LIKELY').
+
+Thu Oct 18 17:31:58 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_send_simple): introduce new instruction used
+ when no need to care about block and splat.
+
+ * compile.c: use the `opt_send_simple' instruction.
+
+Thu Oct 18 16:44:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (rb_add_method_cfunc, rb_add_method_cfunc_frameless):
+ check arity earlier at definition time.
+
+Thu Oct 18 15:11:31 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c: add `inline' keyword to several functions.
+ Compilers (gcc) are conservative than I expected.
+
+Thu Oct 18 15:01:15 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: add a decl. of
+ `rb_define_frameless_method()'.
+
+Thu Oct 18 14:31:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (new_callinfo): set a temporary index of callinfo
+ (used in `iseq_set_sequence()') to rb_call_info_t::aux::index.
+ rb_call_info_t::argc is initialized by same value of
+ rb_call_info_t::orig_argc.
+
+Thu Oct 18 14:11:08 2012 Koichi Sasada <ko1@atdot.net>
+
+ * class.c (rb_define_frameless_method): rename from
+ rb_define_method_fast(). Defined method with this C API
+ does not make a method frame. It is bit lightweight than
+ ordinal C functions. Now only 0 or 1 argc are permitted.
+
+ * method.h (VM_METHOD_TYPE_CFUNC_FRAMELESS): rename macro name
+ from VM_METHOD_TYPE_CFUNC_FAST.
+
+ * vm_insnhelper.c, vm_method.c: rename related functions.
+
+ * proc.c (rb_method_entry_arity): catch up above changes.
+
+Thu Oct 18 10:30:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assignable_gen): fail if yyerror occurred. fix a bug in
+ r36973.
+
+Thu Oct 18 09:23:03 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * hash.c (initialize_copy): duping should rehash the hash.
+
+ * test/ruby/test_hash.rb: added a test to ensure rehash.
+
+Wed Oct 17 21:16:47 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * common.mk (WPROGRAM): need same dependencies as PROGRAM.
+
+ * cygwin/GNUmakefile.in (uncommon.mk): move include position
+ below WPROGRAM definition to be defined in uncommon.mk.
+
+ * ext/extmk.rb (all, static): fix make rubyw.exe failure with make -jN.
+ If make of ruby.exe and rubyw.exe run in parallel, link dll and link
+ exe run in parallel, which causes link failure on mingw. To fix this,
+ we make ruby.exe and rubyw.exe in one make process.
+ [ruby-core:48007] [Bug #7165]
+
+Wed Oct 17 16:25:34 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm2_method_missing.rb: add a benchmark to measure
+ performance of invoking `method_missing'.
+
+Wed Oct 17 16:23:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_getivar): fix to use `aux.index' instead of
+ `aux.opt_pc'.
+
+Wed Oct 17 16:03:54 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method_missing): make a refactoring
+ about method_missing process. Use `vm_call_method()' to invoke
+ `method_missing' method instead of `rb_funcall2()'.
+ In `vm_call_method()', set fastpath to `vm_call_method_missing()'
+ if it can be cached.
+
+ * vm_core.h (rb_call_info_t): add new field
+ `rb_call_info_t::aux::missing_reason' to pass the reason to
+ `vm_call_method_missing()'.
+
+Wed Oct 17 15:33:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (opt-dir): allow multiple directories separated by
+ $PATH_SEPARATOR as well as dir_config in mkmf.rb. [ruby-core:47868]
+ [Bug #7120]
+
+Wed Oct 17 15:08:13 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: fix Net::IMAP::ResponseParser to accept
+ message/delivery-status ([ruby-core:47920] [Bug #7146]),
+ message/rfc822 attachments ([ruby-core:47921] [Bug #7147]), and
+ (BODY ("MIXED")) ([ruby-core:47951] [Bug #7153]).
+ patched by Tony Arkles.
+
+ * test/net/imap/test_imap_response_parser.rb: related test.
+
+Wed Oct 17 11:04:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_hash.rb (TestHash#test_dup_equality): added a new test
+ to show the problem of r37232.
+
+Wed Oct 17 10:48:40 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_method): fix a build error that occurs
+ when OPT_INLINE_METHOD_CACHE is 0.
+
+Wed Oct 17 08:46:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm2_dstr.rb: add a benchmark to measure
+ performance of dynamic generated string ("foo#{bar}baz").
+
+Wed Oct 17 08:32:46 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_dstr_fragments): use `putobject' instead of
+ `putstring' for all of strings used by NODE_DSTR because
+ ruby users can not grab this string.
+ For example, the string object of "baz" in "foo#{bar}baz"
+ is located by `putobject' (users can not touch "baz" object
+ directly). This change reduces GC pressure.
+ This improvement is suggested by Aaron Patterson.
+
+Wed Oct 17 08:02:57 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_threadptr_interrupt_mask): fix to check interrupt
+ after interrupt_mask changed.
+
+Wed Oct 17 06:42:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): fix to return value immediately.
+ Remove CHECK_INTS() after that method dispatch.
+
+Wed Oct 17 06:25:56 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * hash.c (initialize_copy): copy the underlying st_table on dup,
+ rather than copying the hash key by key. [ruby-core:48009]
+
+ * test/ruby/test_hash.rb: relevant tests for initialize_copy
+
+Wed Oct 17 06:17:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_iseq_setup_2): separate tailcall and normal
+ method frame setup functions.
+ Add checking interrupts at the tailcall setup function.
+
+Wed Oct 17 05:35:37 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm1_yield.rb: add a benchmark to measure `yield'
+ (invoke empty block) performance.
+
+ * benchmark/bm_vm2_method_with_block.rb: add a benchmark to measure
+ method invocation with empty block.
+
+Wed Oct 17 05:05:07 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_invoke_block): vm_caller_setup_args() can skip
+ when splat flag is not set.
+
+Wed Oct 17 01:53:47 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_getivar, vm_setivar): support index inline cache
+ with rb_call_info_t to speedup `attr' getter and setter.
+ Cached index is stored in rb_call_info_t::aux::index.
+ `index' == 0 means not cached. `index' > 0 means cached and cached
+ index is `index - 1'.
+
+ * insns.def ((get|set)instancevariable): use new wrapper functions
+ vm_(get|set)instancevariable() defined in vm_insnhelper.c.
+
+ * vm_core.h (rb_call_info_t::aux): introduce new union data because
+ opt_pc can share with index.
+
+Tue Oct 16 22:24:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb (show_results): Show speedup ratio
+ with first executables score at last of results
+ if two or more executables are given.
+
+Tue Oct 16 21:59:01 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: some refactoring.
+ (1) Remove `average differential'.
+ In this benchmark driver, We should not care about `average'.
+ We use fastest score because this score should not include
+ any disturbances (affections of background process, etc).
+ If you care about timing affect, I recommend `median'
+ score with more than 5 examinations rather than simple
+ `average' score (`average' score was affected by error scores).
+ (2) Show log file name.
+ (3) Change default directory from './' to driver's directory.
+
+Tue Oct 16 14:56:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_join): need to check again after any conversion run.
+ [ruby-core:48012] [Bug #7168]
+
+Tue Oct 16 12:52:14 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#assert_file):
+ rename from file_assertion.
+
+Tue Oct 16 11:30:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_join): hide the result under construction until
+ return.
+
+ * file.c (rb_file_join): check nul-byte only for strings, since
+ FilePathStringValue() does it. [ruby-core:48012] [Bug #7168]
+
+ * file.c (rb_file_join): path names must be ASCII-compatible.
+ [ruby-core:48012] [Bug #7168]
+
+ * file.c (check_path_encoding): new function to ensure path name
+ encoding to be ASCII-compatible.
+
+Tue Oct 16 09:40:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): use
+ Regexp.new instead of literal to ignore a parser warning.
+
+Tue Oct 16 09:30:30 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): ignoring
+ warnings are already set in setup method.
+
+Tue Oct 16 06:44:06 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): fix wrong condition.
+
+Tue Oct 16 06:29:18 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_call_method): disable CI_SET_FASTPATH() if
+ this method call needs splat argument because cached functions
+ (vm_call_attrset, vm_call_ivar, vm_call_cfunc_fast_(unary|binary))
+ do not check an arity.
+
+ * bootstraptest/test_method.rb: add a test to check an above issue.
+
+Tue Oct 16 06:15:44 2012 Koichi Sasada <ko1@atdot.net>
+
+ * method.h: introduce new method type VM_METHOD_TYPE_CFUNC_FAST.
+ This method is similar to VM_METHOD_TYPE_CFUNC methods, but
+ called cfunc without building new frame (does not push new control
+ frame). If error is occurred in cfunc, the backtrace only shows
+ caller frame and upper.
+ This kind of methods can be added by rb_define_method_fast().
+ This feature is similar to specialized instructions (opt_plus, etc),
+ but more flexible (but a bit slower).
+
+ * class.c (rb_define_method_fast): added.
+ Maybe it will be renamed soon.
+
+ * vm_insnhelper.c (vm_call_method): support method type
+ VM_METHOD_TYPE_CFUNC_FAST.
+
+ * proc.c (rb_method_entry_arity): catch up new method type.
+
+ * vm_method.c (rb_add_method_cfunc_fast): added.
+
+Tue Oct 16 02:32:29 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.h (CI_SET_FASTPATH): add new parameter `enabled'.
+ If `enable' is 0 then CI_SET_FASTPATH() doesn't work.
+ And add new configuration option OPT_CALL_FASTPATH. If this macro
+ was defined by 0, then CI_SET_FASTPATH() doesn't work any more.
+
+ * vm_insnhelper.c (vm_call_method): Pass `0' for `enabled' parameter
+ of CI_SET_FASTPATH if this method is protected.
+
+Tue Oct 16 02:17:35 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (VM_CALL_*): rename VM_CALL_*_BIT
+ to VM_CALL_* (remove `_BIT' suffix).
+ Add comments on each macros.
+ Remove unused macro VM_CALL_TAILRECURSION_BIT.
+
+ * compile.c, iseq.c, insns.def, vm_insnhelper.c: ditto.
+
+Mon Oct 15 22:14:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (Test::Unit::Assertions#file_assertion):
+ rewrite file assertions.
+
+Mon Oct 15 09:41:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): skip CI_SET_FASTPATH() if
+ it was called from vm_yield_setup_args().
+
+Mon Oct 15 05:20:13 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.h CI_SET_FASTPATH: introduce new macro
+ `CI_SET_FASTPATH(ci, func)'. This macro set `ci->call' as `func'.
+ `func' (ci->call) is called at the last of `send'
+ (and `invokesuper') instruction.
+ `CI_SET_FASTPATH' does not set `ci->call' when the method
+ (stored in `ci->me') is `protected'.
+
+ * vm_insnhelper.c (vm_call_method): use `CI_SET_FASTPATH'.
+ After several checking (visibility, argc checking), the result of
+ checking can be reused until re-definition of this method
+ with inline method cache.
+
+ Note that this optimization is now experimental.
+ If you find any problem about it, please tell us.
+
+Mon Oct 15 04:51:55 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c: refactoring.
+ - move all `call' related functions to the last of file.
+ - make functions for respective method types in vm_call_method().
+ (all functions have same function parameters)
+
+ * vm_core.h: add `opt_pc' field in `rb_call_info_t'
+ as temporal variable.
+
+ * vm_eval.c (vm_call0_body): catch up above changes.
+
+Mon Oct 15 03:51:46 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm1_attr_ivar(_set).rb: added (for method dispatch speed).
+
+ * benchmark/bm_vm1_float_simple.rb: added (for flonum/float).
+
+Mon Oct 15 02:51:16 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (vm_call0_body): add new function.
+ `vm_call0()' makes call_info struct and calls `vm_call0_body()'
+ with this struct. In near future, `vm_call0()' will be removed
+ because all of `vm_call0()' users setup call_info struct by itself.
+
+Mon Oct 15 01:38:06 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (send, invokesuper, invokeblock, opt_*), vm_core.h:
+ use only a `ci' (rb_call_info_t) parameter instead of using
+ parameters such as `op_id', 'op_argc', `blockiseq' and flag.
+ These information are stored in rb_call_info_t at the compile
+ time.
+ This technique simplifies parameter passing at related
+ function calls (~10% speedups for simple method invocation at
+ my machine).
+ `rb_call_info_t' also has new function pointer variable `call'.
+ This `call' variable enables to customize method (block)
+ invocation process for each place. However, it always call
+ `vm_call_general()' at this changes.
+ `rb_call_info_t' also has temporary variables for method
+ (block) invocation.
+
+ * vm_core.h, compile.c, insns.def: introduce VM_CALL_ARGS_SKIP_SETUP
+ VM_CALL macro. This flag indicates that this call can skip
+ caller_setup (block arg and splat arg).
+
+ * compile.c: catch up above changes.
+
+ * iseq.c: catch up above changes (especially for TS_CALLINFO).
+
+ * tool/instruction.rb: catch up above changes.
+
+ * vm_insnhelper.c, vm_insnhelper.h: ditto. Macros and functions
+ parameters are changed.
+
+ * vm_eval.c (vm_call0): ditto (it will be rewritten soon).
+
+Sun Oct 14 12:30:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (rb_f_sub, rb_f_gsub): pass the given block.
+ [ruby-core:47967] [Bug #7157]
+
+Sat Oct 13 23:15:39 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * regparse.c (parse_char_class): should match with a hyphen after a
+ range in a character class.
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_char_class): fixed wrong
+ test.
+
+ * test/ruby/test_regexp.rb (TestRegexp#check): now can accept the
+ error message.
+
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): renamed
+ because the previous name was wrong.
+
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): added
+ more test pattern.
+
+Sat Oct 13 03:01:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (realpath_rec): prevent link from GC while link_names refers
+ the content.
+
+Sat Oct 13 01:37:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_regexp.rb
+ (TestRegexp#test_raw_hyphen_and_type_char_after_range): added new
+ test. ref [ruby-core:47115] [Backport #6853]
+
+Fri Oct 12 21:55:08 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * include/ruby/win32.h (rb_w32_pow): set floating point precision
+ for mingw-w64 x86 pow(). This improves the precision of pow() on
+ Windows XP for TestFloat#test_round_with_precision failure.
+ [ruby-core:47911] [Bug #7142]
+
+Fri Oct 12 21:37:25 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/webrick/test_cgi.rb (TestWEBrickCGI#test_cgi): skip a test
+ depending on locale on Windows. ENV[] doesn't work properly if
+ console code page is not equal to file system encoding.
+ [ruby-core:47910] [Bug #7140]
+
+Fri Oct 12 20:40:29 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (posix_sh_cmds): the command name of colon is ":".
+
+Fri Oct 12 18:18:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_get_path_check): path name must not contain NUL bytes.
+
+Fri Oct 12 16:06:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * tool/merger.rb: now can merge revision(s) without --ticket again.
+
+Fri Oct 12 14:10:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (dir_config, init_mkmf): use configured libdir value as
+ default library path. [ruby-core:43726] [Bug #6207]
+
+Fri Oct 12 05:25:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/timeout.rb (timeout):
+ Remove paragraph on wrong implementation detail.
+ [ruby-core:47739] [Bug #7088]
+
+Thu Oct 11 23:09:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_sub{seq,pos,str}, rb_str_each_{line,codepoint}):
+ prevent String copies from GC. [ruby-core:47881] [Bug #7135]
+
+Thu Oct 11 07:40:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * iseq.c (insn_operand_intern): cast op to rb_call_info_t* before
+ compare with iseq->callinfo_entries whose type is rb_call_info_t*.
+
+Thu Oct 11 03:37:08 2012 Koichi Sasada <ko1@atdot.net>
+
+ * bootstraptest/test_block.rb: add tests for block with super.
+
+Thu Oct 11 02:54:07 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c: fix debug prints to catch up recent changes
+ such as VM data structures.
+
+Thu Oct 11 02:50:34 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (insn_operand_intern): add support disasm TS_CALLINFO
+ operands.
+
+Wed Oct 10 15:12:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess#test_execopts_gid): skip on
+ windows because the platform does not have Process.group method.
+ patched by Jon Forums in [ruby-core:47878] [Bug #7133].
+
+Tue Oct 9 23:18:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_file, assert_file_not): more
+ descriptive assertions for File predicates.
+
+Tue Oct 9 18:01:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_sample): use rb_random_ulong_limited, since
+ precision of long may be larger than double.
+
+ * random.c (rb_random_ulong_limited): new function to return a random
+ value from 0 upto limit as unsigned long, similarly to
+ rb_genrand_ulong_limited but with arbitrary RNG object.
+
+Tue Oct 9 17:13:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_execarg_addopt, rb_execarg_run_options): add :uid and
+ :gid options. [ruby-core:47414] [Feature #6975]
+
+Tue Oct 9 14:36:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_free): fix memory leak.
+ rb_iseq_t::callinfo_entries should be freed.
+
+Tue Oct 9 14:28:18 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (rb_call_info_t): add new type `rb_call_info_t'.
+ This data structure contains information including inline method
+ cache. After that, `struct iseq_inline_cache_entry' does not
+ need to contain inline cache for method invocation.
+ Other information will be added to this data structure.
+
+ * vm_core.h (rb_iseq_t): add `callinfo_entries' and `callinfo_size'
+ members to `rb_iseq_t'.
+
+ * insns.def, compile.c: Use CALL_INFO instead of IC.
+
+ * tool/instruction.rb: support CALL_INFO as operand type.
+
+ * vm_insnhelper.c, vm_insnhelper.h: ditto.
+
+Sun Oct 7 23:54:33 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_run_func): don't call inflate() when
+ z->stream.avail_in == 0. it return Z_BUF_ERROR.
+ but deflate() could be called with z->stream->avail_in == 0 because
+ it has hidden buffer in z->stream->state (opaque structure).
+ fix for gem install error. [ruby-dev:46149] [Bug #7040]
+
+Mon Oct 8 23:55:41 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_refinements): new method Module#refinements.
+
+ * test/ruby/test_refinement.rb: add new tests for the above changes.
+
+Mon Oct 8 23:02:19 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c, gc.c, iseq.c, node.h, vm_insnhelper.c, vm_insnhelper.h,
+ vm_method.c: rename omod and overlaid modules to refinements.
+
+ * eval.c (hidden_identity_hash_new): renamed from identity_hash_new.
+
+Sun Oct 7 04:50:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/abbrev.rb: Documentation examples for Abbrev.
+ [ruby-core:47442] [Bug #6985]
+
+Sun Oct 7 04:50:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * thread.c (rb_thread_aref):
+ Grammar in Thread documentation.
+ Patch by Steve Klabnik [ruby-core:47799] [Bug #7099]
+
+Sun Oct 7 04:37:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * string.c (rb_str_match):
+ Clarify behavior for captured strings and local variable assignment
+ Patch by Marcus Stollsteimer [ruby-core:47668] [Bug #7062]
+
+Sat Oct 6 18:31:36 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_opts.h (OPT_GLOBAL_METHOD_CACHE): new build option to
+ enable/disable global method caching. [ruby-dev:46203] [Bug #7111]
+
+ * vm_method.c (rb_method_entry_get_with_omod): don't use global
+ method cache if OPT_GLOBAL_METHOD_CACHE is 0.
+
+Sat Oct 6 16:32:04 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (search_method): check omod only once for performance.
+
+Sat Oct 6 09:42:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/encdb.c, enc/utf_16_32.h (ENC_DUMMY_UNICODE): endian-less wide
+ UTF encodings are dummy but Unicode.
+
+ * encoding.c (rb_encdb_set_unicode): set Unicode flag.
+
+ * template/encdb.h.tmpl: allow ENC_DUMMY variants.
+
+ * encoding.c (rb_enc_unicode_p): oniguruma provides Unicode flag.
+
+Fri Oct 5 17:18:42 JST 2012 TAKANO Mitsuhiro <tak@no32.tk>
+
+ * template/Doxyfile.tmpl: remove SHOW_DIRECTORIES and
+ HTML_ALIGN_MEMBERS lines. They have been obsolete in
+ Doxygen version 1.8.2.
+
+Fri Oct 5 15:26:18 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/objspace/objspace.c: add ObjectSpace#reachable_objects_from.
+ This method returns an array of objects referenced by given object.
+ If given object is special objects such as true/false/nil/Fixnum etc
+ then it returns nil. See rdoc for details.
+ [ruby-core:39772]
+
+ * test/objspace/test_objspace.rb: add a test for this method.
+
+ * gc.c: add rb_objspace_reachable_objects_from().
+ To make this function, add several member `mark_func_data'
+ to rb_objspace_t. If mark_func_data is not null, then
+ gc_mark() calls mark_func_data::mark_func.
+
+ * gc.h: export rb_objspace_reachable_objects_from().
+
+Thu Oct 4 23:40:04 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (init_heap): call init_mark_stack before to allocate
+ altstack. This change avoid the stack overflow at the signal
+ handler on 32bit, but I don't understand reason... [Feature #7095]
+
+Thu Oct 4 22:39:27 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (getlocal, setlocal): remove old getlocal/setlocal
+ instructions and rename getdaynmic/setdynamic instructions
+ to getlocal/setlocal.
+
+ * compile.c: ditto.
+
+ * iseq.c: remove TS_DINDEX.
+
+ * vm_exec.h (dindex_t): remove type definition of `dindex_t'.
+
+ * tool/instruction.rb: ditto.
+
+Thu Oct 4 21:44:17 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_analysis_insn|operand|register): use st_insert
+ instead of using rb_hash_aset() because rb_hash_aset()
+ check $SAFE.
+
+Thu Oct 4 21:15:26 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (VM_COLLECT_USAGE_DETAILS): make new VM usage analysis
+ hooks (old macro name is COLLECT_USAGE_ANALYSIS).
+ This feature is only for VM developers. (I'm not sure I can use
+ `VM developers' (the plural form) in this sentence).
+ If VM_COLLECT_USAGE_DETAILS is not 0, VM enables the following
+ usage collection features:
+ (1) instruction: collect instruction usages.
+ (2) operand: collect operand usages.
+ (3) register: collect register usages.
+ The results are stored in
+ RubyVM::USAGE_ANALYSIS_INSN for (1, 2),
+ RubyVM::USAGE_ANALYSIS_INSN_BIGRAM for (1) and
+ RubyVM::USAGE_ANALYSIS_REGS for (3).
+ You can stop collecting usages with
+ RubyVM::USAGE_ANALYSIS_INSN_STOP(),
+ RubyVM::USAGE_ANALYSIS_OPERAND_STOP(),
+ RubyVM::USAGE_ANALYSIS_REGISTER_STOP()
+ for (1), (2), (3) respectively.
+ You can also change the hook functions by setting
+ C level global variables
+ `ruby_vm_collect_usage_func_(insn|operand|register)'
+ for (1), (2), (3) respectively.
+ See codes for more details.
+
+ * tool/instruction.rb: fix macro names.
+
+ * iseq.c (insn_operand_intern): make it export (used in vm.c).
+ fix to skip several processes if not needed (pointer is 0).
+
+ * vm_dump.c: move codes for collection features to vm.c.
+
+ * vm_exec.h: rename macro and function names.
+
+ * vm_insnhelper.h: ditto.
+
+Thu Oct 4 18:59:14 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_settracefunc.rb (test_tracepoint):
+ remove unused test case.
+ (this test case is redefined by newer tests)
+
+Thu Oct 4 17:24:51 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (rb_objspace_call_finalizer): call gc_mark_stacked_objects
+ at suitable point.
+
+Thu Oct 4 16:31:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_objspace_call_finalizer): mark self-referencing finalizers
+ before run finalizers, to fix SEGV from btest on 32bit.
+
+ * gc.c (gc_mark_stacked_objects): extract from gc_marks().
+
+Thu Oct 4 11:43:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): round stack limit to page size
+ boundary to calculate stack size more precisely. [ruby-dev:46174]
+ [Bug #7084]
+
+Wed Oct 3 19:51:57 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: Use the non-recursive marking instead of recursion. The
+ recursion marking of CRuby needs checking stack overflow and the
+ fail-safe system, but these systems not good at partial points,
+ for example, marking deep tree structures. [ruby-dev:46184]
+ [Feature #7095]
+
+ * configure.in (GC_MARK_STACKFRAME_WORD): removed. It's used by
+ checking stack overflow of marking.
+
+ * win32/Makefile.sub (GC_MARK_STACKFRAME_WORD): ditto.
+
+Wed Oct 3 15:33:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): use getrlimit() for the main
+ thread on Mac OS X, since pthread_get_stack{addr,size}_np()
+ return the default value always, but not the ulimit value.
+ [ruby-dev:46174] [Bug #7084]
+
+Wed Oct 3 11:43:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_reopen): improvement to accept optional arguments.
+ a patch by Glass_saga (Masaki Matsushita) in [ruby-core:47806].
+ [Feature #7103]
+
+Wed Oct 3 04:36:11 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_add_file): Added
+ documentation
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths):
+ ditto
+ * ext/openssl/ossl_x509store.c (ossl_x509store_add_cert): ditto
+
+Wed Oct 3 02:23:37 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * error.c (exc_to_s, name_err_to_s, name_err_mesg_to_str): do not
+ taint messages.
+
+Tue Oct 2 16:47:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (identity_hash_new): hide internal hashes for refinements.
+
+ * eval.c (rb_mod_refine): no default value.
+
+Mon Oct 1 22:54:02 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (identity_hash_new): new function to create a new identity
+ hash.
+
+ * eval.c (rb_overlay_module, rb_mod_using, rb_mod_refine): use
+ identity_hash_new().
+
+Mon Oct 1 02:34:53 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * configure.in (--with-opt-dir): Make this also work on DLDFLAGS
+ so LIBRUBY_SO links fine with libexecinfo installed in a
+ non-system directory.
+
+Sun Sep 30 23:32:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * vm_dump.c (rb_vm_bugreport): add /Library/Logs/DiagnosticReports
+ in the list of locations of crash reports.
+
+Sun Sep 30 21:18:03 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_concat): use memcpy to copy a string which contains
+ NUL characters. [ruby-core:47751] [Bug #7090]
+
+Sat Sep 29 19:41:53 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): kill child process
+ before Timeout::Error is raised. rmdir of mktmpdir fails with
+ EACCES if child process is alive on Windows.
+
+ * test/thread/test_queue.rb (TestQueue): increase timeout.
+ This test takes long time on Windows XP.
+
+Sat Sep 29 19:41:33 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/net/http/test_http.rb (TestNetHTTP#test_proxy_address):
+ clear environment variables. If http_proxy environment variable was
+ set, the test failed.
+
+ * test/net/http/test_http.rb (TestNetHTTP#test_proxy_port): ditto.
+
+Sat Sep 29 19:41:11 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/drb/drbtest.rb (DRbCore#teardown):
+ Use Process.kill :KILL on Windows because Process.kill :INT silently
+ fails on Windows 7 and raises EINVAL on Windows XP for spawned
+ process with new_pgroup: false.
+
+ * test/drb/drbtest.rb (DRbAry#teardown): ditto.
+
+Sat Sep 29 19:40:32 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic):
+ set script encoding to work with LANG=C. It would work on both
+ Windows and Unix. Refix of r37051.
+
+Sat Sep 29 11:21:06 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (rb_vm_using_modules): use using_modules before
+ klass to fix method lookup order, and use klass even if klass is
+ not a module to make refinements in class_eval invoked on classes
+ work.
+
+ * eval.c (rb_using_module): accept a class as the second argument.
+
+ * eval.c (rb_mod_using, f_using): raise a TypeError if the argument
+ is not a module.
+
+ * test/ruby/test_refinement.rb: add new tests for the above changes.
+
+Sat Sep 29 02:18:57 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic):
+ Use ruby only on Windows since the test fails on Unix with LANG=C.
+ [ruby-core:47709] [Bug #7076]
+
+Fri Sep 28 22:19:31 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic):
+ echo command doesn't work properly against non-ascii character on
+ Windows with chcp 437. Instead we use ruby.
+ [ruby-core:47709] [Bug #7076]
+
+Fri Sep 28 17:54:31 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_setup_method): refactoring.
+ Remove src_argc and use iseq->arg_size directly.
+
+Fri Sep 28 17:26:27 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/installer.rb (check_that_user_bin_dir_is_in_path):
+ test_generate_bin_bindir_with_user_install_warning(TestGemInstaller)
+ fails on Windows with msys bash. It makes comparing paths
+ case-insensitive.
+ pick from upstream to fix a failure of test-all [ruby-core:47711]
+ https://github.com/rubygems/rubygems/commit/c474edb2f3704206f04da1c8c6cf9fb079d84abe
+
+Fri Sep 28 15:44:45 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (search_method): copy refinement iclasses to search
+ superclasses correctly.
+
+ * test/ruby/test_refinement.rb: related test.
+
+Fri Sep 28 15:15:41 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (opt_checkenv): remove unused instruction `opt_checkenv'.
+
+ * compile.c (iseq_compile_each): ditto.
+
+ * node.h: remove unused node `NODE_OPTBLOCK'.
+
+ * ext/objspace/objspace.c, gc.c (gc_mark_children): ditto.
+
+Fri Sep 28 13:14:34 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: now VM_DEBUG_BP_CHECK should be 1.
+
+Fri Sep 28 12:51:54 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: remove rb_control_frame_t::bp (bp: base pointer).
+ `bp' can be calculate by `sp' (stack pointer) of previous frame.
+ Now, `bp_check' field is remained for debug. You can eliminate
+ this field by setting VM_DEBUG_BP_CHECK as 0.
+
+ * vm_insnhelper.c (vm_base_ptr): add `vm_base_ptr(cfp).
+ This function calculates base pointer from cfp.
+
+ * vm_insnhelper.c (vm_setup_method): push `recv' value on top of
+ value stack (before method parameters).
+ This change is for keeping consistency with normal method dispatch.
+
+ * insns.def: fix to use vm_base_ptr().
+
+ * vm.c (vm_exec): ditto.
+
+ * vm_dump.c: remove `bp' related dumps.
+
+ * cont.c (fiber_init): fix to check VM_DEBUG_BP_CHECK.
+
+Fri Sep 28 10:40:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_reopen): accept File::Constants as well as mode string.
+ based on the patch by Glass_saga (Masaki Matsushita) in
+ [ruby-core:47694]. [Feature #7067]
+
+Thu Sep 27 18:36:51 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_overlay_module, rb_mod_refine): accept a module as the
+ argument of Module#refine.
+
+ * vm_method.c (search_method): if klass is an iclass, lookup the
+ original module of the iclass in omod in order to allow
+ refinements of modules.
+
+ * test/ruby/test_refinement.rb: add tests for the above changes.
+
+Thu Sep 27 18:12:20 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/syslog/lib/syslog/logger.rb: add a formatter to the
+ Syslog::Logger object. [Bug #7065]
+ * test/syslog/test_syslog_logger.rb: ditto.
+
+Wed Sep 26 16:39:57 2012 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def: add new instruction `opt_empty_p' for optimize `empty?'
+ method. Apply a patch proposed at [ruby-dev:46120]
+ [ruby-trunk - Feature #6972] by Glass_saga (Masaki Matsushita).
+
+ * compile.c (iseq_specialized_instruction), vm.c, vm_insnhelper.h:
+ ditto.
+
+ * id.c, template/id.h.tmpl: ditto.
+
+ * test/ruby/test_optimization.rb: test for this changes.
+
+Tue Sep 25 09:59:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (invokesuper): klass in cfp is not valid in at_exit and
+ END blocks. [ruby-core:47680] [Bug #7064]
+
+Tue Sep 25 08:11:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * iseq.c (rb_iseq_defined_string): the index of defined_strings must
+ be the value of type - 1.
+
+Mon Sep 24 17:36:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (defined_expr), insns.def (defined): share single frozen
+ strings. [EXPERIMENTAL] [ruby-core:47558][Feature #7035]
+
+ * iseq.c (rb_iseq_defined_string): make expression strings.
+
+Mon Sep 24 11:22:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: add --ticket option to add ticket number.
+
+Sun Sep 23 21:51:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (String#unspace): unescape with backslashes. normal
+ makes need to escape spaces with backslashes. nmake is not the
+ case. [Bug #7036]
+
+ * lib/mkmf.rb (create_makefile): use timestamp file dependencies for
+ directories.
+
+ * lib/mkmf.rb: unexpand macros.
+
+ * lib/mkmf.rb (LIBPATHFLAG): no needs to escape library path here.
+
+ * lib/mkmf.rb (MakeMakefile#configuration): make prefix paths
+ internal to deal with in Makefile.
+
+ * lib/mkmf.rb (MakeMakefile#mkintpath): not a global function now.
+
+Sun Sep 23 02:33:37 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * complex.c: Fix examples of r36993.
+ Keep the simple definition, mathematics define the result.
+ Based on patch by Robin Dupret. Fixes #188 on github.
+
+Sat Sep 22 07:15:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * ext/ripper/lib/ripper.rb:
+ Match sample output to Ripper.sexp from current trunk version.
+ [Bug #6929]
+
+Thu Sep 20 23:05:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_cond_initialize): destroy condattr
+ after using it. Patch by Stanislav Sedov. Thank you.
+ [Bug #7041] [ruby-core:47619]
+
+Thu Sep 20 22:53:02 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (native_cond_initialize): clean up #ifdef condition.
+
+Thu Sep 20 16:42:44 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/drb/ssl.rb (DRb::DRbSSLSocket::SSLConfig::DEFAULT): add
+ SSLTmpDhCallback for configuration option.
+
+ * lib/drb/ssl.rb (setup_ssl_context): copy the value of tmp_dh_callback.
+
+ * test/drb/ut_array_drbssl.rb: set tmp_dh_callback to suppress warning.
+
+ * test/drb/ut_drb_drbssl.rb: ditto.
+
+Thu Sep 20 10:56:08 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/drb/ut_drb.rb: revert a part of r36987, and get rid of a warning
+ with another method. if the substitution is removed, the ExtSrv
+ object will be GC'ed and some tests will be blocked.
+
+Thu Sep 20 07:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * complex.c: Examples for Complex Documentation.
+ Patch by Robin Dupret.
+ Fixes #184 on github.
+
+Thu Sep 20 07:15:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * ext/ripper/lib/ripper.rb: Documentation for Ripper.
+ +:void_stmt+ is meaningless
+ [Bug #6929] [ruby-core:47507]
+
+Thu Sep 20 07:05:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/csv.rb (Object#CSV, Array#to_csv, String#parse_csv):
+ Examples and documentation for CSV.
+ [Bug #6880] [ruby-core:47218]
+
+Thu Sep 20 00:42:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (take_items), enum.c (enum_zip): raise TypeError at
+ non-enumerable objects, not NoMethodError. [ruby-dev:46145]
+ [Bug #7038]
+
+ * vm_eval.c (rb_check_block_call): check_funcall variant with block
+ function.
+
+Tue Sep 18 17:51:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_attrs): add npn_select_db to
+ suppress warning: instance variable @npn_select_cb not initialized
+
+Sun Sep 16 17:47:00 2012 Eric Hodel <drbrain@segment7.net>
+
+ * tool/change_maker.rb: Update svn detection for subversion 1.7's
+ single .svn directory.
+
+Sun Sep 16 11:39:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_set_read_length): if the read length equals to the buffer
+ string size then nothing to do. or ensure the string modifiable
+ before setting the length only when the former is shorter. based on
+ the patch in [ruby-core:47541] by Hiroshi Shirosaki.
+ [ruby-core:46586] [Bug #6764]
+
+Sun Sep 16 08:57:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (strict_warnflags): separate strict flags from
+ warnflags only for core. [ruby-dev:46105]
+
+Sun Sep 16 08:16:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .editorconfig: add. [ruby-core:47548] [Feature #7030]
+
+Sat Sep 15 01:56:40 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: Merge upstream: 50a383c84.
+ [ruby-dev:46128] [Bug #7005]
+
+Sat Sep 15 00:20:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c (rb_nkf_convert): suppress warning.
+
+Fri Sep 14 04:05:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * array.c (rb_ary_diff, rb_ary_uniq):
+ Enhance documentation for array uniqueness
+ Based on a patch by Robin Dupret
+ [Bug #6872] [ruby-core:47209]
+
+Fri Sep 14 03:30:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * array.c (rb_ary_select):
+ Update documentation for Array#select
+ * enum.c (enum_find_all, enum_reject):
+ Update documentation for Enumerable#find_all and Enumerable#reject
+ Based on a patch by Jeff Saracco
+ [Bug #6908] [ruby-core:47285] [Fixes #166 on github]
+
+Fri Sep 14 00:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * signal.c (rb_f_kill):
+ Update documentation for Process.kill to reflect kill(2)
+ Patch by Richo Healey
+
+Thu Sep 13 21:40:49 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * lib/securerandom.rb (SecureRandom.random_bytes):
+ Use 64bit value as pointer for Windows x64 to fix SystemCallError.
+
+ * lib/securerandom.rb (SecureRandom.lastWin32ErrorMessage):
+ Set proper encoding to avoid invalid byte sequence error.
+ [ruby-core:47451] [Bug #6990]
+
+Thu Sep 13 11:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/optparse.rb: Remove unreachable email address from documentation
+ [Bug #6996] [ruby-core:47459]
+
+Thu Sep 13 11:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/xmlrpc.rb: Documentation for XMLRPC
+ * lib/xmlrpc/datetime.rb: ditto.
+ * lib/xmlrpc/parser.rb: ditto.
+ * lib/xmlrpc/client.rb: ditto.
+ * lib/xmlrpc/utils.rb: ditto.
+ * lib/xmlrpc/README.rdoc: ditto.
+ * lib/xmlrpc/create.rb: ditto.
+ * lib/xmlrpc/base64.rb: ditto.
+ * lib/xmlrpc/config.rb: ditto.
+ * lib/xmlrpc/httpserver.rb: ditto.
+ * lib/xmlrpc/server.rb: ditto.
+ * lib/xmlrpc/marshal.rb: ditto.
+ * lib/xmlrpc/README.txt: ditto.
+ [Bug #6909] [ruby-core:47286]
+
+Thu Sep 13 10:22:11 2012 Takashi Toyoshima <toyoshim@gmail.com>
+
+ * configure.in: Don't use PIE on Haiku because loader support is not
+ enough.
+
+Thu Sep 13 08:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * lib/shellwords.rb: Documentation for Shellwords.
+
+Thu Sep 13 08:00:00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * ext/ripper/lib/ripper.rb: Documentation for Ripper.
+ * ext/ripper/lib/ripper/lexer.rb: ditto.
+ * ext/ripper/lib/ripper/sexp.rb: ditto.
+ * ext/ripper/lib/ripper/filter.rb: ditto.
+ * ext/ripper/lib/ripper/core.rb: ditto.
+ [Bug #6929] [ruby-core:47309]
+
+Wed Sep 12 22:59:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_method_missing, vm_call_method): reuse arguments
+ on the VM stack and get rid of ALLOCA.
+
+Wed Sep 12 22:45::00 2012 Zachary Scott <zzak@ruby-lang.org>
+
+ * ext/pathname/lib/pathname.rb: Documentation for Pathname.
+ * ext/pathname/pathname.c: ditto.
+ [Bug #6947] [ruby-core:47354]
+
+Mon Sep 10 10:19:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: fixed wrong change in a part of r34802.
+
+Sun Sep 9 22:02:50 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/socket/basicsocket.c (rsock_bsock_send):
+ avoid unnecessary select() calls before doing I/O
+ Patch by Eric Wong. [Feature #4538] [ruby-core:35586]
+ * ext/socket/init.c (rsock_s_recvfrom): ditto.
+ * ext/socket/init.c (rsock_s_accept): ditto.
+ * ext/socket/udpsocket.c (udp_send): ditto.
+ * io.c (io_fflush): ditto.
+ * io.c (io_binwrite): ditto.
+ * io.c (rb_io_syswrite): ditto.
+
+Mon Sep 10 01:38:51 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (nogvl_close, maygvl_close, nogvl_fclose, maygvl_fclose):
+ suppress integer <-> pointer cast warnings.
+ [Feature #4570] [ruby-core:35711]
+
+Mon Sep 10 01:36:00 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_close): notify fd close before releasing gvl.
+ * io.c (fptr_finalize): modify fptr->mode before releasing gvl.
+ remove unnecessary rb_thread_fd_close().
+ [Feature #4570] [ruby-core:35711]
+
+Mon Sep 10 00:16:34 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c: exec() requires to be single threaded also on Haiku.
+ by Takashi Toyoshima <toyoshim@gmail.com>
+ https://github.com/ruby/ruby/pull/178
+
+Sun Sep 9 21:21:15 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (Queue#pop): Fixed double registration issue when
+ mutex.sleep is interrupted. [Bug #5258] [ruby-dev:44448]
+ * lib/thread.rb (SizedQueue#push): ditto.
+
+ * test/thread/test_queue.rb (test_sized_queue_and_wakeup,
+ test_queue_pop_interrupt, test_sized_queue_pop_interrupt,
+ test_sized_queue_push_interrupt): new tests.
+
+Sun Sep 9 20:20:31 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/sync.rb (Sync_m#sync_lock): Fixed wakeup/raise unsafe code.
+ Patched by Masaki Matsushita. [Bug #5355] [ruby-dev:44521]
+
+ * test/thread/test_sync.rb (test_sync_lock_and_wakeup,
+ test_sync_upgrade_and_wakeup, test_sync_lock_and_raise):
+ new test.
+
+Sun Sep 9 18:39:46 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/intern.h (rb_thread_blocking_region): Added
+ a comment of recommended alternative way.
+
+Sun Sep 9 18:37:05 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/sync.rb (Sync_m): Removed RCS_ID.
+
+Sun Sep 9 18:21:03 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (test_advise_pipe): new test to check
+ io.advise() against anonymous io object don't make crash.
+ made by Eric Wong. [Bug #6081] [ruby-core:42880]
+
+Sun Sep 9 16:47:12 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (nogvl_close, maygvl_close, nogvl_fclose, maygvl_fclose):
+ new functions.
+ * io.c (fptr_finalize): release GVL if possible.
+ Patched by Eric Wong. [Feature #4570] [ruby-core:35711]
+
+Sun Sep 9 16:08:48 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (io_bufread): removed unnecessary rb_thread_wait_fd().
+ Patch by Eric Wong. [Bug #6629] [ruby-core:45789]
+ * io.c (rb_io_sysread): ditto.
+ * io.c (copy_stream_fallback_body): ditto.
+
+Sun Sep 9 15:21:52 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_mutex_lock): stop multiple threads use
+ pthread_cond_timedwait() concurrently. [Bug #6278] [ruby-core:44275]
+
+Sat Sep 8 18:52:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (struct rb_classext_struct): move allocator function into
+ rb_classext_t from ordinary method table. [ruby-dev:46121]
+ [Feature #6993]
+
+ * object.c (rb_obj_alloc): call allocator function directly.
+
+ * vm_method.c (rb_define_alloc_func, rb_undef_alloc_func)
+ (rb_get_alloc_func): use allocator function in rb_classext_t.
+
+Fri Sep 7 01:21:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake), lib/mkmf.rb (have_framework): fix splitting
+ options with an argument, not using NUL as special character.
+ [ruby-core:47447] [Bug #6987]
+
+Thu Sep 6 14:49:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rp): FLONUM support.
+
+ * include/ruby/ruby.h (ruby_special_consts): define FLONUM constants
+ always, so that they are available from gdb.
+
+ * include/ruby/ruby.h (RB_FLOAT_TYPE_P): merge FLONUM and non-FLONUM
+ versions. inline TYPE() comparison and FLONUM_P() should be
+ optimized away on non-FLONUM.
+
+Thu Sep 6 08:20:55 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 3.4.0 (r7762)
+ * test/minitest/*: ditto
+
+Wed Sep 5 19:20:53 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (rb_warn4S): renamed from rb_warn4(), because the case in
+ r36911 takes a string.
+
+ * parse.y (rb_warn4S): use ripper_warnS() for ripper.
+
+ * parse.y (ripper_warnS): now it is used.
+
+Wed Sep 5 15:51:52 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (notifications): [experimental] update notification
+ template.
+
+Wed Sep 5 15:21:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (rb_warn4): added as a rb_warn variant to warn with explicit
+ source file name and line in parse.y.
+
+ * parse.y (warn_unused_var): use rb_warn4 to suppress warning on ripper.
+
+Wed Sep 5 13:30:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (glob_make_pattern): names under recursive need to be single
+ basenames to match for each name. [ruby-core:47418] [Bug #6977]
+
+Tue Sep 4 20:55:17 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/envutil.rb (EnvUtil#invoke_ruby): show Timeout::Error
+ instead of IOError if the timeout has expired.
+
+ * test/test_pstore.rb
+ (PStoreTest#test_pstore_files_are_accessed_as_binary_files):
+ increase timeout because this test is slow on Windows.
+ [ruby-core:47402] [Bug #6965]
+
+Tue Sep 4 11:28:57 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * vm_eval.c (ruby_eval_string_from_file_protect): initializer
+ element is not computable at load time.
+
+Tue Sep 4 07:48:35 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_asn1_rb:
+ test/openssl/test_ssl_session.rb:
+ test/openssl/test_x509name.rb:
+ test/openssl/test_buffering.rb:
+ test/openssl/test_x509cert.rb:
+ test/openssl/test_ssl.rb: Refactor code that leads to warnings on
+ Ruby CI.
+
+Tue Sep 4 07:02:56 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/utils.rb: Use DSS1 as DSA signature digest for all
+ OpenSSL versions < 1.0.0.
+ [Feature #6946] [ruby-core:47405]
+
+Mon Sep 3 21:22:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_float_value): suppress warnings.
+ [ruby-core:47406][Bug #6971]
+
+Mon Sep 3 14:49:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/matrix.rb (Vector#magnitude): accumulate squares of absolute
+ values to fix for complex vector. [ruby-dev:46100] [Bug #6966]
+
+Mon Sep 3 10:09:36 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb: Detect OpenSSL_FIPS macro
+ ext/openssl/ossl.c: Expose OpenSSL::OPENSSL_FIPS constant to
+ indicate whether OpenSSL runs in FIPS mode.
+ test/openssl/test_pkey_dh.rb: Generate 256 bit keys for
+ non-FIPS installations to improve test performance (e.g. for
+ rubyci).
+ test/openssl/utils.rb: Replace DSS1 as certificate signature
+ digest with SHA1 for FIPS installations when using DSA by
+ introducing TestUtils::DSA_SIGNATURE_DIGEST.
+ test/openssl/test_x509cert.rb:
+ test/openssl/test_x509crl.rb:
+ test/openssl/test_x509req.rb: Use DSA_SIGNATURE_DIGEST
+ NEWS: Introduce OpenSSL::OPENSSL_FIPS
+
+ These changes allow running the OpenSSL tests in FIPS mode
+ while keeping a high performance for non-FIPS installations.
+ Introduction of OpenSSL::OPENSSL_FIPS allows for applications
+ to react to special requirements when using OpenSSL in FIPS mode.
+ [Feature #6946] [ruby-core:47345]
+
+Sun Sep 2 21:46:28 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/utils.rb: Use a cached DH key instead of generating a
+ new one each time.
+
+Sun Sep 2 05:41:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/ssl.rb (WEBrick::Config::SSL): add new key
+ SSLTmpDhCallback to set SSLContext#tmp_dh_callback.
+
+ * lib/webrick/ssl.rb (WEBrick::GenericServer#setup_ssl_context):
+ follow above.
+
+Sat Sep 1 18:50:50 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (#initialize_copy, #eql): Use instance_variable_get
+ instead of instance_eval.
+
+Fri Aug 31 21:47:56 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/test/unit/test-unit.gemspec: Make test/unit default gem.
+ [Feature #6875] [ruby-dev:46051]
+
+Fri Aug 31 18:35:02 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb: Check existence of OPENSSL_NPN_NEGOTIATED.
+ ext/ossl_ssl.c: Support Next Protocol Negotiation. Protocols to be
+ advertised by the server can be set in the SSLContext by using
+ SSLContext#npn_protocols=, protocol selection on the client is
+ supported by providing a selection callback with
+ SSLContext#npn_select_cb. The protocol that was finally negotiated
+ is available through SSL#npn_protocol.
+ test/openssl/test_ssl.rb: Add tests for Next Protocol Negotiation.
+ NEWS: add news about NPN support.
+ [Feature #6503] [ruby-core:45272]
+
+Fri Aug 31 17:38:43 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#{each,reject!,select!}, SortedSet#each): Pass
+ the original block through instead of creating one that only
+ yields the passed argument.
+
+Fri Aug 31 16:23:20 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb: Introduce several new error classes where only
+ ArgumentError and StandardError were used. IPAddr::Error is
+ their common ancestor class that inherits from ArgumentError for
+ backward compatibility. Submitted by Jon Daniel. Fixes #173 on
+ GitHub.
+
+Fri Aug 31 14:51:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/bigdecimal/test_bigdecimal.rb (TestBigDecimal#test_to_f): added
+ for previous commit.
+
+Fri Aug 31 14:32:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): use self's sign to
+ determine 0.0 and Inf's sign instead of internal double value's.
+ Reported by phasis68 (Heesob Park) at [ruby-core:47381] [Bug #6955]
+
+Fri Aug 31 14:31:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl, tool/id2token.rb: make id.h independent from
+ parse.h, and make parse.c dependent on it instead.
+
+Fri Aug 31 14:27:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): fix race conditions at install-ext.
+ target files need to depend on destination directory timestamp
+ files, not phony targets.
+
+Fri Aug 31 14:03:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_trace.c (clean_hooks): do not access freed memory.
+
+ * vm_trace.c (rb_threadptr_exec_event_hooks): fix uninitialized state
+ when no events is executed.
+
+Thu Aug 30 18:21:51 2012 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_close): call rb_last_status_clear.
+
+Thu Aug 30 16:17:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): check underflow since
+ strtod() sets errno to ERANGE at underflow too. [ruby-core:47342]
+ [Bug #6944]
+
+Thu Aug 30 12:44:43 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/set.rb (Set#{<,>,<=,>=}): Define comparison operators as
+ shorthand for the {proper_}{subset?,superset?} methods (finally).
+ Given a push by Alexander E. Fischer.
+
+Thu Aug 30 09:21:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/ftp.rb (URI::FTP#initialize): raise InvalidURIError if "//"
+ is not present [ruby-core:47344] [Bug #6945]
+
+Thu Aug 30 07:45:12 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/ruby/test_file_exhaustive.rb: fix test introduced in r36811 for
+ posix environments where HOME is not defined. [ruby-core:47322]
+
+Wed Aug 29 23:42:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_last_status_clear): declared.
+
+ * process.c (rb_last_status_clear): exported.
+ (rb_f_system): call rb_last_status_clear.
+
+ * io.c (rb_f_backquote): call rb_last_status_clear.
+
+Wed Aug 29 22:01:15 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_f_system): check failures of waitpid.
+ [ruby-talk:398687]
+
+Wed Aug 29 15:03:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBDIR_BASENAME): use configured libdir value to fix
+ --enable-load-relative on systems where libdir is not default value,
+ overridden in config.site files. [ruby-core:47267] [Bug #6903]
+
+ * ruby.c (ruby_init_loadpath_safe): ditto.
+
+Wed Aug 29 14:34:41 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c: SIZE_MAX is defined in stdint.h, so r36755 breaks
+ 32bit FreeBSD. [ruby-core:47360] [Bug #6948]
+
+Wed Aug 29 04:50:04 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/utils.rb
+ test/openssl/test_pair.rb
+ test/openssl/test_pkey_dh.rb: Use 1024 bit DH parameters to satisfy
+ OpenSSL FIPS requirements. Patch by Vit Ondruch.
+ [Bug #6938] [ruby-core:47326]
+
+Tue Aug 28 22:31:49 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * insns.def (checkmatch): suppress warnings. [ruby-core:47339]
+ [Bug #6930]
+
+Tue Aug 28 20:03:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: Fixing Haiku R1/alpha3 build with gcc-4.4.4.
+ - omit ANSI standard flags to compile socket extension where
+ anonymous union is required.
+ - remove redundant -be flags.
+ by Takashi Toyoshima <toyoshim@gmail.com>
+ https://github.com/ruby/ruby/pull/168
+
+Tue Aug 28 11:32:37 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * nacl/GNUmakefile.in (.rbconfig.time): r36828 was incomplete.
+ It did not run correctly on clean build.
+
+Tue Aug 28 09:25:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (Makefile): make to depend on common.mk, to
+ stop and force to re-run make process when common.mk is changed.
+
+Mon Aug 27 20:19:49 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/etc/test_etc.rb (TestEtc#test_getgrgid): fix for non unique GID.
+ No unixen systems guarantee that GID is unique. Etc.getgrgid would
+ not return the first entry in the order of Etc.group for shared GID.
+ [ruby-core:47312] [Bug #6935]
+
+Mon Aug 27 18:19:36 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h (rb_float_value): optimize it.
+ This technique was pointed by shinichiro.hamaji
+ <http://shinh.skr.jp/m/?date=20120825#p02>.
+
+Mon Aug 27 15:08:25 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * common.mk (vm_trace.o): Added a missing dependency.
+
+Sun Aug 26 09:29:32 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * nacl/GNUmakefile.in (package): make package should install
+ example.html for nacl build
+
+ Patch by Takashi Toyoshima <toyoshim AT gmail.com>.
+
+Sun Aug 26 09:22:33 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * nacl/GNUmakefile.in (CC, LD, NM, AR, AS, RANLIB, OBJDUMP, OBJCOPY)
+ Rewrites these variables instead of PATH.
+ NaCl port uses a toolchain which is specified by NACL_SDK_ROOT
+ environment variable. Originally, NaCl build added the toolchain
+ under the NACL_SDK_ROOT to the PATH. But updating PATH doesn't work
+ on Mac.
+ (RBCONFIG): Replaces configs with the variable updates above.
+
+ * configure.in: Thus it is no longer necessary to check $PATH.
+
+ Based on a patch by Takashi Toyoshima <toyoshim AT gmail.com>.
+
+Sun Aug 26 16:53:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (checkmatch): suppress warnings. [ruby-core:47310]
+ [Bug #6930]
+
+ * vm_core.h (VM_FRAME_TYPE_FINISH_P): ditto.
+
+Fri Aug 24 15:42:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): use timestamp for destination
+ directories to make them before making or copying files there.
+ [ruby-dev:46067] [Bug #6904]
+
+Fri Aug 24 12:40:15 2012 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in (mingw): add shlwapi to the list of dependency
+ libs for Windows.
+ * win32/Makefile.sub (EXTSOLIBS): ditto.
+
+ * internal.h: declare internal functions rb_w32_init_file,
+ rb_file_expand_path_internal and rb_file_expand_path_fast.
+
+ * file.c (Init_File): invoke Windows initialization rb_w32_init_file
+
+ * win32/file.c (rb_file_load_path_internal): new function.
+ Windows-specific implementation that replaces file_expand_path.
+ [Bug #6836][ruby-core:46996]
+
+ * win32/file.c (rb_w32_init_file): new function. Initialize codepage
+ cache for faster conversion encodings lookup.
+
+ * file.c (file_expand_path): rename to rb_file_expand_path_internal.
+ Conditionally exclude from Windows.
+
+ * file.c (rb_file_expand_path_fast): new function. delegates to
+ rb_file_expand_path_internal without performing a hit to the
+ filesystem.
+
+ * file.c (file_expand_path_1): use rb_file_expand_path_internal without
+ path expansion (used by require).
+ * file.c (rb_find_file_ext_safe): ditto.
+ * file.c (rb_find_file_safe): ditto.
+
+ * load.c (rb_get_expanded_load_path): use rb_file_expand_path_fast.
+ * load.c (rb_feature_provided): ditto.
+
+ * file.c (rb_file_expand_path): use rb_file_expand_path_internal with
+ path expansion.
+ * file.c (rb_file_absolute_path): ditto.
+
+ * test/ruby/test_file_exhaustive.rb: new tests to exercise
+ rb_file_expand_path_internal implementation and compliance with
+ existing behaviors.
+
+Fri Aug 24 07:35:24 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http/backward.rb (class Net): Restored Net::HTTPSession to
+ fix backwards-compatibility with ancient Net::HTTP. [Bug #6889]
+
+Thu Aug 23 20:58:55 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * common.mk: support `make id.h` without `rm .id.h.time` after
+ `rm id.h`.
+
+Thu Aug 23 20:48:45 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_fixnum.rb (TestFixnum#test_singleton_method): new test.
+
+ * test/ruby/test_bignum.rb (TestBignum#test_singleton_method): ditto.
+
+ * test/ruby/test_float.rb (TestFloat#test_singleton_method): ditto.
+
+ * test/ruby/test_symbol.rb (TestSymbol#test_singleton_method): ditto.
+
+Thu Aug 23 20:34:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * class.c (singleton_class_of): flonum can't have singleton class.
+
+ * vm.c (vm_define_method): flonum can't have singleton method.
+
+Thu Aug 23 19:18:33 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (win32/*): macro RUBY_H_INCLUDES is not defined there,
+ so need to move dependency rules under the definition of it.
+
+Thu Aug 23 19:16:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: refactoring. remove unused rules, and update
+ some rules which are not used usually to fit current macros.
+
+Thu Aug 23 16:46:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_find_file_ext_safe, rb_find_file_safe): default to
+ US-ASCII for encdb and transdb.
+
+ * load.c (search_required): keep encoding of feature name. set
+ loading path to filesystem encoding. [Bug #6377][ruby-core:44750]
+
+ * ruby.c (add_modules, require_libraries): assume default external
+ encoding as well as ARGV.
+
+Thu Aug 23 16:20:04 2012 Koichi Sasada <ko1@atdot.net>
+
+ * include/ruby/ruby.h: introduce flonum technique for
+ 64bit CPU environment (sizeof(double) == sizeof(VALUE)).
+ flonum technique enables to avoid double object creation
+ if the double value d is in range about between
+ 1.72723e-77 < |d| <= 1.15792e+77 or 0.0.
+ flonum Float value is immediate and their lowest two bits
+ are b10.
+ If flonum is activated, then USE_FLONUM macro is 1.
+ I'll write detailed in this technique on
+ https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/Flonum_tech
+
+ * benchmark/bmx_temp.rb: add an benchmark for simple
+ Float calculation.
+
+ * gc.c (id2ref, rb_obj_id): add flonum Float support.
+
+ * include/ruby/intern.h: move decl of rb_float_new(double)
+ to include/ruby/ruby.h.
+
+ * insns.def, vm.c, vm_insnhelper.c: add flonum optimization
+ and simplify source code.
+
+ * vm_insnhelper.h (FLONUM_2_P): added.
+
+ * marshal.c: support flonum output.
+
+ * numeric.c (rb_float_new_in_heap): added.
+
+ * parse.y: support flonum.
+
+ * random.c: ditto.
+
+Thu Aug 23 16:12:40 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/mkmf.rb (create_makefile): add dependency to header files when
+ depend files don't exist. now we can remove simple (and often
+ wrong) depend files in most cases.
+
+Thu Aug 23 16:02:20 2012 Koichi Sasada <ko1@atdot.net>
+
+ * ext/date/depend: add dependency to $(ruby_headers).
+
+Thu Aug 23 12:51:39 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * insns.def (invokesuper): reverted r36640 partially to make super
+ in a thread work correctly. [ruby-core:47284] [Bug #6907]
+
+ * test/ruby/test_super.rb: related test.
+
+Thu Aug 23 12:30:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat: support --with(out)?-ext(ensions) options.
+
+Thu Aug 23 11:52:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: Fixing Haiku build.
+ - -lbe is not required for linking
+ - stack protector doesn't work for now because of the default gcc's
+ bug
+ by Takashi Toyoshima <toyoshim@gmail.com>
+ https://github.com/ruby/ruby/pull/167
+
+ * signal.c (ruby_signal): haiku doesn't have SIGBUS.
+
+Thu Aug 23 11:32:44 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/open-uri/test_open-uri.rb (TestOpenURI#test_read_timeout): this
+ test expects that the server thread will be killed in sleep, but 0.01
+ sec is too short to reach there.
+
+Thu Aug 23 10:49:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: use the value of --with-opt-dir on building ruby
+ itself. [ruby-dev:46064] [Bug #6900]
+
+Thu Aug 23 10:36:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (ID_H_TARGET): revert a part of r36724 and r36751. they
+ break mswin build from clean source.
+
+Thu Aug 23 02:37:35 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/syck: removed. Fixes [ruby-core:43360]
+
+ * test/syck: removed.
+
+ * lib/yaml.rb: only require psych, show a warning if people try to set
+ the engine to syck.
+
+Thu Aug 23 01:46:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * insns.def: search up the cf stack for an object that is an instance
+ of the recipient class. Fixes [ruby-core:47186]
+
+ * test/ruby/test_super.rb: related test.
+
+Wed Aug 22 19:46:24 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:47266].
+
+Wed Aug 22 19:41:19 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:47226].
+
+Wed Aug 22 16:57:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (configuration): extract least ruby headers list as
+ ruby_headers, so depend files can use default dependency
+ explicitly.
+
+Wed Aug 22 15:27:50 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_setup_method): fix last commit of
+ vm_insnhelper.c (r36771). [ruby-dev:46065] [Bug #6901]
+ Should not disable tail call opt on FINISH_FRAME.
+ This flag should be propagated correctly.
+
+Wed Aug 22 14:05:23 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: support TracePoint. [ruby-trunk - Feature #6895]
+
+ * test/ruby/test_settracefunc.rb: add tests for above.
+
+ * proc.c (rb_binding_new_with_cfp): add an internal function.
+
+ * vm.c (rb_vm_control_frame_id_and_class): add an internal function.
+
+ * vm_trace.c: add rb_add_event_hook2() and rb_thread_add_event_hook2().
+ Give us the good name for them!
+
+Wed Aug 22 11:38:16 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (before_script): Turned out that make -j is broken.
+
+Wed Aug 22 11:23:35 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_setup_method): should not enable tail call
+ optimization for frames with VM_FRAME_FLAG_FINISH.
+ [ruby-dev:46065] [Bug #6901]
+
+Wed Aug 22 11:20:47 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/test_case.rb: run test with psych if exist.
+
+Thu Aug 16 12:09:51 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * nacl/pepper_main.c (init_loadpath): Pushes the correct load path on
+ other architectures than x86_64. Fixes #6873.
+
+Wed Aug 15 19:37:33 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * configure.in (ac_cv_func_shutdown): shutdown(2) has a dummy
+ implementation but has no declaration and does not work in
+ NativeClient SDK pepper_20.
+
+Wed Aug 15 19:29:29 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * common.mk (vm_backtrace.o): Added missing dependencies.
+
+ * ext/nkf/depend (nkf.o): ditto.
+
+ * ext/ripper/depend (ripper.o) ditto.
+
+Wed Aug 22 07:27:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI.escapeHTML): use &#39;
+ [ruby-core:47221] [Bug #6861]
+
+Tue Aug 21 21:59:22 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/observer.rb: fix typo. https://github.com/ruby/ruby/pull/162 by
+ unsymbol (Philip Cunningham).
+
+Tue Aug 21 20:30:06 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * test/fileutils/test_fileutils.rb (TestFileUtils#teardown):
+ do not assume cwd is TMPROOT and never remove current directory.
+ [ruby-core:47224][Bug #6884]
+
+Tue Aug 21 17:29:56 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * addr2line.c (fill_lines): need check and cast of the file size of
+ target binary because there are some platforms which off_t > size_t.
+
+Tue Aug 21 17:07:58 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (compiler): [experimental] clang support.
+
+Tue Aug 21 15:44:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#bind): fixes an error in
+ test/dl/test_import.rb (DL::TestImport#test_carried_function)
+ introduced by r36718.
+ the instance of the anonymous class which wraps the block should have
+ same methods and instance variables of self.
+
+Tue Aug 21 14:29:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (scriptbin.mk): no need to include twice.
+
+Tue Aug 21 10:52:08 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/unit/test.rb (Test::Unit::ProxyError): new exception class to
+ wrap exceptions raised in workers in parallel test mode.
+
+ * test/unit/parallel.rb (Test::Unit::Worker#puke): use above wrapper
+ exception.
+ [Bug #6882] [ruby-dev:46054]
+
+Tue Aug 21 10:40:06 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test_continuation.rb (tracing_with_thread_set_trace_func):
+ fix to use Thread#set_trace_func(nil), not set_trace_func(nil).
+
+Tue Aug 21 09:32:41 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 3.3.0 (r7676)
+ * test/minitest/*: ditto
+
+Tue Aug 21 09:05:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/testunit/tests_for_parallel/ptest_forth.rb: added a test case
+ which causes an error.
+
+ * test/testunit/test_parallel.rb: follow above change.
+ see [Bug #6882]
+
+Tue Aug 21 05:43:00 2012 James Edward Gray II <james@graysoftinc.com>
+
+ * lib/csv.rb: Fixes #161 on github
+ * lib/csv.rb: You can now specify a pattern for :skip_lines.
+ Matching lines will not be passed to the CSV parser.
+ * lib/csv.rb: Patch by Christian Schwartz.
+
+Tue Aug 21 05:25:41 2012 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (rb_reg_initialize_m): Forgot to update output for or'd-options
+ example.
+
+Tue Aug 21 05:18:03 2012 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (rb_reg_initialize_m): Update example to show that regexp
+ options use | an not || to avoid confusion.
+
+Mon Aug 20 23:02:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y: more descriptive token names in syntax error messages.
+
+Mon Aug 20 20:36:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_method): follow iclasses as klass in cfp
+ but not included modules. [ruby-core:47241] [Bug #6891]
+
+ * vm_insnhelper.c (vm_call_bmethod): pass defined_class to follow
+ proper ancestors. [ruby-core:47241] [Bug #6891]
+
+Mon Aug 20 11:40:27 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * common.mk: fix failed to make with -j2.
+ https://gist.github.com/3397935
+
+Mon Aug 20 10:51:01 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb, lib/test/unit/parallel.rb:
+ generate error message (String) in parallel.rb instead of
+ marshalling Exception. Fixes [Bug #6882] [ruby-dev:46054]
+
+Sun Aug 19 01:24:32 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * enum.c: fix docs. https://github.com/ruby/ruby/pull/129 by
+ richardkmichael (Richard Michael).
+
+Sun Aug 19 00:47:26 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/fileutils.rb: fix typo.
+ https://github.com/ruby/ruby/pull/155 by simonc (Simon COURTOIS).
+
+Sat Aug 18 09:57:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend: fix inplace-build condition. enc.mk is generated with
+ setting $srcdir to enc, but pwd is still top build directory.
+ [ruby-core:47236] [Bug #6888]
+
+Fri Aug 17 23:28:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_any_to_s, rb_obj_inspect): preserve encodings of class
+ name and instance variable names.
+
+Fri Aug 17 12:39:33 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/dl/func.rb (DL::Function#bind): allow to return/break from
+ the callback method. (Fiddle already allows it.)
+ [Bug #6389] [ruby-dev:45604]
+
+Thu Aug 16 19:54:24 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c, vm_core.h: simplify tracing mechanism.
+
+ (1) add rb_hook_list_t data structure which includes
+ hooks, events (flag) and `need_clean' flag.
+ If the last flag is true, then clean the hooks list.
+ In other words, deleted hooks are contained by `hooks'.
+ Cleanup process should run before traversing the list.
+ (2) Change check mechanism
+ See EXEC_EVENT_HOOK() in vm_core.h.
+ (3) Add `raw' hooks APIs
+ Normal hooks are guarded from exception by rb_protect().
+ However, this protection is overhead for too simple
+ functions which never cause exceptions. `raw' hooks
+ are executed without protection and faster.
+ Now, we only provide registration APIs. All `raw'
+ hooks are kicked under protection (same as normal hooks).
+
+ * include/ruby/ruby.h: remove internal data definition and
+ macros.
+
+ * internal.h (ruby_suppress_tracing), vm_trace.c: rename
+ ruby_suppress_tracing() to rb_suppress_tracing()
+ and remove unused function parameter.
+
+ * parse.y: fix to use renamed rb_suppress_tracing().
+
+ * thread.c (thread_create_core): no need to set RUBY_VM_VM.
+
+ * vm.c (mark_event_hooks): move definition to vm_trace.c.
+
+ * vm.c (ruby_vm_event_flags): add a global variable.
+ This global variable represents all of Threads and VM's
+ event masks (T1#events | T2#events | ... | VM#events).
+ You can check the possibility kick trace func or not
+ with ruby_vm_event_flags.
+ ruby_vm_event_flags is maintained by vm_trace.c.
+
+ * cont.c (fiber_switch, rb_cont_call): restore tracing status.
+ [Feature #4347]
+
+ * test/ruby/test_continuation.rb: ditto.
+
+Thu Aug 16 19:15:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_class_initialize): forbid inheriting uninitialized
+ class. another class tree not based on BasicObject cannot exist.
+ [ruby-core:47148][Bug #6863]
+
+Thu Aug 16 11:52:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/-ext-/test_printf.rb (Test_SPrintf#test_{taint,untrust}): use
+ plain object so that the results of to_s and inspect are infected.
+ [ruby-dev:46053] [Bug #6881]
+
+Thu Aug 16 09:46:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c: remove unnecessary macros to check traditional C.
+ https://github.com/ruby/ruby/pull/46 by lateau (Daehyub Kim).
+
+ * vsnprintf.c: remove K&R.
+
+Wed Aug 15 20:47:49 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * object.c (rb_obj_inspect): Kernel#inspect: do not call #to_s. A class
+ can now benefit from the nice default #inspect even if it defines #to_s.
+ Also, there is no more unexpected change in #inspect result.
+
+ * NEWS: Add note about the change.
+
+ * bignum.c, io.c, numeric.c, object.c, proc.c, vm.c (Init_*):
+ Adapt internal structures (by aliasing #inspect to #to_s) so they
+ don't rely on the removed behavior (#inspect calling overridden #to_s).
+
+ * test/ruby/test_object.rb (test_inspect): add tests for Kernel#inspect.
+
+ * lib/pp.rb (class PP): do not call #to_s anymore, as #inspect
+ no more does (mame).
+
+ * test/test_pp.rb (class PPInspectTest): remove related assertion (mame).
+ [ruby-core:43238][Feature #6130]
+
+ * test/drb/drbtest.rb (DRbCore#teardown, DRbAry#teardown):
+ adapt DRb tests with the new change (shirosaki).
+ [ruby-core:47182][Bug #6866]
+
+Wed Aug 15 18:05:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#failed): need to delete the
+ status line if the status is skipped and -q is specified.
+
+Wed Aug 15 16:26:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (ruby__sfvextra): the result should be infected by the
+ given strings.
+
+ * sprintf.c (ruby__sfvwrite): set buffer length and exclude
+ uninitialized garbage to get correct coderange.
+
+Wed Aug 15 16:20:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (ID_H_TARGET): make timestamp file of id.h so that the
+ header will not be remade repetitively.
+
+Wed Aug 15 11:39:53 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_trace.c: separate trace_func related functions from
+ thread.c.
+
+ * thread.c: ditto.
+
+ * common.mk: add vm_trace.o.
+
+ * inits.c: call Init_vm_trace().
+
+Tue Aug 14 16:25:46 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/erb/test_erb.rb (test_html_escape): add assertions for the
+ cases where the argument is not a String.
+
+Tue Aug 14 16:03:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (check_valid_dir): reject "..." as directory name.
+ [Bug #6851]
+
+Tue Aug 14 16:02:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file_exhaustive.rb
+ (TestFileExhaustive#test_stat_dotted_prefix): added.
+
+Tue Aug 14 15:39:09 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file_exhaustive.rb
+ (TestFileExhaustive#test_stat_drive_root): added.
+
+Tue Aug 14 10:38:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Util.html_escape): fix r36687: call to_s before
+ passing it to CGI.escapeHTML.
+
+Mon Aug 13 13:13:19 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/erb.rb (ERB::Util.html_escape): use CGI.escapeHTML to escape
+ single quotes. [ruby-core:47138] [Bug #6861]
+
+Sun Aug 12 11:57:20 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (invoke_block_from_c): fix unintentional block passing.
+ [ruby-dev:45071] [Bug #5832]
+
+Fri Aug 10 08:41:28 2012 Eric Hodel <drbrain@segment7.net>
+
+ * gc.c (gc_malloc_allocated_size): RDoc does not process macros, so
+ mention this method is only available when ruby is built with
+ CALC_EXACT_MALLOC_SIZE
+ * gc.c (gc_malloc_allocations): ditto
+
+Thu Aug 9 23:46:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkrunnable.rb: see build_os instead of target arch for
+ cross-compiling.
+
+ * configure.in (MINIRUBY): use real path for include path.
+
+ * template/fake.rb.in (builddir): remove duplications
+
+Thu Aug 9 20:03:11 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_file_exhaustive.rb
+ (TestFileExhaustive#test_stat_special_file): add a test.
+ GetFileAttributesExW fails to get attributes of special files
+ such as pagefile.sys.
+
+ * win32/win32.c (check_valid_dir): for performance, check the path
+ by FindFirstFileW only if the path contains "..."
+
+ * win32/win32.c (winnt_stat): use GetFileAttributesExW instead of
+ FindFirstFileW since GetFileAttributesExW is faster.
+ Based on the patch by Dusan D. Majkic.
+ [ruby-core:47083] [Feature #6845]
+
+Thu Aug 9 18:33:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (proc_options): show version only once even if -v and
+ --version are given together.
+ http://twitter.com/d6rkaiz/status/233491797085671424
+
+Thu Aug 9 12:37:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/openssl/test_config.rb (OpenSSL#test_constants): skip this
+ test if platform is Mac OS X or Windows. [Bug #6830]
+
+Wed Aug 8 22:51:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (eval_under): singletons other than special constants
+ don't need cref-scope hack.
+
+Wed Aug 8 22:45:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (.y.h): split from .y.c rule to manage dependency on
+ parse.h. [ruby-core:46741] [Bug #6789]
+
+ * common.mk (id.h): keep old file unless changed.
+
+Wed Aug 8 17:11:20 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (ADD_INSNL): make ADD_INSNL as alias of ADD_INSN1.
+
+Wed Aug 8 17:08:14 2012 Koichi Sasada <ko1@atdot.net>
+
+ * bootstrap/test_exception.rb: fix a last committed test.
+
+Wed Aug 8 16:27:58 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def (checkmatch):
+ remove checkincludearray instruction and
+ add new instruction checkmatch.
+ This change is to solve
+ [Bug #4438] "rescue args type check omitted".
+
+ * iseq.c: increment ISEQ_MAJOR_VERSION because removal of
+ checkincludearray instruction.
+
+ * vm_core.h: add several definitions for
+ the checkmatch instruction.
+
+ * vm_insnhelper.c (check_match): added.
+
+ * bootstraptest/test_exception.rb: add a test.
+
+ * test/ruby/test_exception.rb: ditto.
+
+Wed Aug 8 05:51:20 2012 Eric Hodel <drbrain@segment7.net>
+
+ * proc.c (method_clone): Added documentation. Patch by Robin Dupret.
+ Fixes #152 on github.
+
+Tue Aug 7 20:19:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (Init_readline): rl_catch_signals=0 returns
+ back. Without this, on FreeBSD9 and readline 6.2 irb can't catch ^C.
+ [Bug #5423]
+
+Tue Aug 7 20:12:39 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_exec.c, insns.def (leave): solve problems on
+ OPT_CALL_THREADED_CODE.
+ Catch up finish frame structure on OPT_CALL_THREADED_CODE.
+
+ * vm_core.h: add rb_thread_t#retval for temporary space on
+ OPT_CALL_THREADED_CODE.
+
+ * vm.c (th_init): clear rb_thread_t#retval as Qundef.
+
+ * vm_dump.c (rb_vmdebug_debug_print_pre): fix debug print format.
+
+Tue Aug 7 11:58:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_require.rb (TestRequire#test_require_twice): added.
+
+Tue Aug 7 11:35:37 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_method.c (rb_redefine_opt_method): use RCLASS_ORIGIN to avoid
+ SEGV when a module-prepended class is refined.
+
+Tue Aug 7 10:46:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file_exhaustive.rb
+ (TestFileExhaustive#test_expand_path*): refactoring. split the method
+ into some chunks of the same kind of tests.
+
+Tue Aug 7 00:31:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_special_singleton_class_of): utility function.
+
+ * vm_eval.c (eval_under): special deal for class variable scope with
+ instance_eval.
+
+ * vm_eval.c (rb_obj_instance_eval, rb_obj_instance_exec): allow method
+ definition in instance_eval of special constants. [ruby-core:28324]
+ [Bug #2788]
+
+Tue Aug 7 00:23:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (CVAR_LOOKUP): split into helper functions.
+
+Mon Aug 6 19:15:11 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_variant.rb: setting WIN32OLE.locale
+ to pass some assertion. Thanks to Hiroshi Shirosaki.
+ [ruby-core:46873][Bug #6814]
+
+Mon Aug 6 15:54:50 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * internal.h, class.c, eval.c, insns.def: find the appropriate
+ receiver for super called in instance_eval. If such a receiver is
+ not found, raise NoMethodError. [ruby-dev:39772] [Bug #2402]
+
+Mon Aug 6 14:54:38 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * include/ruby/ruby.h, eval.c, vm_insnhelper.c: fix typo.
+
+Mon Aug 6 13:13:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (vm_call_super): since cfp->klass is always class or
+ iclass, no search from method entry.
+
+ * insns.def (defined): now should use klass in the current control
+ frame to search superclass, not me->klass. reported by naruse.
+
+Mon Aug 6 11:19:19 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/etc/test_etc.rb (TestEtc#test_getpwuid): `s' is never set to nil.
+
+Mon Aug 6 11:08:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/syslog/test_syslog_logger.rb: skip unless Syslog module is
+ available.
+
+Mon Aug 6 00:40:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_log): fix format specifier.
+
+Mon Aug 6 00:39:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (NUM2ULONG): optimize by inline as well as
+ NUM2LONG, and cast to unsigned long explicitly for the platforms
+ where SIZEOF_VALUE is larger than SIZEOF_LONG.
+
+ * include/ruby/ruby.h (NUM2SSIZET): fix type to cast.
+
+Sun Aug 5 21:10:36 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c : if ENABLE_VM_OBJSPACE is 1, rest_sweep is not defined.
+ remove unused declarations. [ruby-core:47004] [Bug #6837]
+
+Sun Aug 5 19:31:57 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: just move functions and so on. I don't touch any internal
+ implementation.
+
+Sun Aug 5 13:22:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: use gcc-4.2 prior to clang, gcc, and cc if exist for
+ the use of Snow Leopard's old clang. see also r36594, r36610, r36611.
+
+Sun Aug 5 06:55:10 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_{core,strftime}.c: [ruby-core:46990].
+
+Sat Aug 4 22:56:20 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: use inline functions instead of macros, and close up
+ related codes for the profiler.
+
+Sat Aug 4 20:37:56 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_mark_children): use gc_mark_ptr instead of marking
+ a object directly.
+
+Sat Aug 4 10:02:03 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_alias.rb (test_super_in_aliased_module_method):
+ add a test case for [ruby-dev:46028], which fails in 1.8.
+
+Sat Aug 4 01:56:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_normal_superclass): no longer needs
+ receiver, klass is always unique in the ancestors now.
+
+Sat Aug 4 01:27:40 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * insns.def (invokesuper): reverted r36612 so that super in an
+ aliased method will not call the same method.
+
+Fri Aug 3 19:26:10 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * insns.def (invokesuper): don't skip the same class. instead, use
+ rb_method_entry_get_with_omod() to avoid infinite loop when
+ super is used with refinements. [ruby-core:30450] [Bug #3351]
+
+Fri Aug 3 19:21:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: use clang prior to gcc only when self-compiling on
+ darwin. search default compilers on other platforms. [Bug #6816]
+
+Fri Aug 3 17:25:49 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: move RUBY_MINGW32 after AC_PROG_CC.
+ RUBY_MINGW32 uses AC_TRY_CPP and it sets CC and CPP. [Bug #6816]
+
+ * configure.in: don't use AC_PROG_CC in AS_CASE.
+
+Fri Aug 3 17:21:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/runner.rb: get rid of loading previously installed gems.
+ [ruby-dev:46025]
+
+Fri Aug 3 16:40:01 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (notifications): [experimental] IRC notifications.
+
+Thu Aug 2 20:32:29 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_mod_using): new method Module#using. [experimental]
+
+ * eval.c (rb_mod_refine): new method Module#refine. [experimental]
+
+ * eval.c (f_using): new method Kernel#using. [experimental]
+
+Thu Aug 2 20:08:02 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * class.c, insns.def, method.h, proc.c, vm.c, vm_core.h, vm_eval.c,
+ vm_insnhelper.c, vm_insnhelper.h, vm_method.c: add klass to
+ rb_control_frame_t to implement super correctly.
+
+Thu Aug 2 13:23:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (AC_PROG_CC): AC_PROG_CC tries clang at first on
+ darwin. [Bug #6816]
+
+Thu Aug 2 11:39:25 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: return true or false. Patch by Dirkjan Bussink. [Bug #6821]
+
+ * test/ruby/test_gc.rb: add test-case for this bug.
+
+Thu Aug 2 10:51:12 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+
+ * ext/openssl/lib/openssl/digest.rb
+ test/openssl/test_digest.rb: Add Digest module function to OpenSSL
+ module and test it. Patch provided by Eric Hodel.
+ [ruby-core:46908][Feature #6819]
+
+Wed Aug 1 22:29:12 2012 Benoit Daloze <eregontp@gmail.com>
+
+ * ext/digest/digest.c (hexencode_str_new): return an ASCII string
+
+ * test/digest: tests for all kind of digests encodings
+ [ruby-core:46792][Bug #6799]
+
+Wed Aug 1 05:50:53 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_encoding):
+ Fix test_encoding failure on Windows.
+ With chcp 65001, 1252 and 437, test_encoding failed. Test result
+ depends on locale because LANG environment variable doesn't affect
+ locale on Windows.
+ [ruby-core:46872] [Bug #6813]
+
+Wed Aug 1 00:33:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (include_class_new): fix duplication of prepended module.
+ since m_tbl of prepended module is always zero, copy from its
+ copy iclass of original.
+
+Tue Jul 31 18:22:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (classname): tell if found name is permanent. search
+ tmp_classpath only if class id is set. [ruby-core:42865][Bug #6078]
+
+ * variable.c (rb_class_path): duplicate found temporary path.
+
+ * variable.c (rb_set_class_path_string, rb_set_class_path): set class
+ id to find classpath.
+
+Tue Jul 31 10:36:12 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: updated to released version.
+
+ * ext/psych/psych.gemspec: ditto
+
+Tue Jul 31 06:18:06 2012 Eric Hodel <drbrain@segment7.net>
+
+ * time.c (time_sec): Remove extra wording about leap seconds and refer
+ directly to Wikipedia's leap second page for further information.
+ [Bug #6749]
+
+Mon Jul 30 23:01:47 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rubygems/platform.rb (Gem::Platform#initialize): Support pattern
+ like x86_64-netbsd6.99.7.
+
+Mon Jul 30 21:00:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (find_class_path): no retry when preferred is given.
+
+ * variable.c (classname): if classid is set try it to find full
+ qualified class path, and then try arbitrary class path. try
+ tmp_classpath at last even if enclosing namespace is anonymous.
+ fix r36574. [ruby-core:42865][Bug #6078]
+
+ * variable.c (rb_set_class_path_string, rb_set_class_path): set
+ tmp_classpath instead of classpath if the name is not permanent.
+
+Mon Jul 30 14:24:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c: store anonymous class path in tmp_classpath but not in
+ classpath. [ruby-core:42865][Bug #6078]
+
+Mon Jul 30 13:11:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (DLDFLAGS): on Darwin, deprecate -flat_namespace to get
+ rid of huge imported symbols table.
+
+ * configure.in (LIBRUBY_RELATIVE): libruby_so is not made when
+ disable-shared, so no absolute path is used for it and executable
+ file is runnable anywhere.
+
+Mon Jul 30 01:30:10 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * common.mk: add a dependency. [ruby-core:46741] [Bug #6789]
+
+Sun Jul 29 15:44:47 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * thread.c (thread_create_core): hide th->async_errinfo_mask_stack from
+ ObjectSpace.each_object. refix of r36539.
+
+Sun Jul 29 23:57:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/option.c (inet_ntop): use rb_w32_inet_ntop, instead of
+ inet_ntop directly, which is unavailable on older version Windows.
+
+ * win32/win32.c (rb_w32_inet_ntop): type should be const.
+
+Sun Jul 29 14:20:34 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * thread.c (Init_Thread): does not need to set klass
+ explicitly.
+
+Sun Jul 29 06:21:04 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * win32/win32.c: suppress warning redeclared on mingw64.
+ *_s functions are declared if MINGW_HAS_SECURE_API is defined.
+ Follow up r36556.
+
+Sun Jul 29 00:28:46 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: remove unused initialization.
+
+Sat Jul 28 16:26:09 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * win32/win32.c (gmtime_r): use _gmtime64_s() with x86_64-w64-mingw32.
+
+ * win32/win32.c (localtime_r): use _localtime64_s() with
+ x86_64-w64-mingw32. Since FileTimeToSystemTime() seems not work with
+ large value under x64. Mingw-w64 doesn't have these declaration.
+ [ruby-core:46780] [Bug #6794]
+
+Fri Jul 27 18:25:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_check_io): make public.
+
+ * process.c (check_exec_redirect): try conversion to IO on redirect
+ parameters. [ruby-core:44181] [Bug #6269]
+
+Fri Jul 27 17:58:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CPPOUTFILE): get rid of variable conflict so
+ CPPFLAGS is not duplicated. [ruby-core:43097] [Bug #6119]
+
+Fri Jul 27 12:12:36 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb: should not export DllMain().
+ reported by luis at [ruby-core:46743] [Bug #6790], solved by
+ Heesob Park, and confirmed by nobu.
+
+Thu Jul 26 14:51:29 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/net/http/test_https.rb (TestNetHTTPS#test_session_reuse):
+ localhost is not (always) 127.0.0.1. Don't expect that.
+
+Thu Jul 26 07:18:38 2012 <kanemoto@ruby-lang.org>
+
+ * ext/json/fbuffer/fbuffer.h: avoid compilation error on AIX by
+ -ansi -std=iso9899:199409 (r36038). [ruby-core:46744] [Bug #6791].
+
+Thu Jul 26 00:42:23 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * thread.c (thread_create_core, Init_Thread): hide
+ th->async_errinfo_queue and th->async_errinfo_mask_stack from
+ ObjectSpace.each_object.
+
+Wed Jul 25 17:41:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c, rational.c: compatible marshal loader for compatibilities
+ with 1.8. [ruby-core:45775] [Bug #6625]
+
+Wed Jul 25 17:17:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * atomic.h: prefer GCC atomic builtins than Windows APIs, if possible,
+ since they are generic.
+
+Wed Jul 25 11:16:57 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/.document: Removed. All files in net/ should be included in
+ RDoc.
+
+Wed Jul 25 10:00:23 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/testunit/test_redefinition.rb: broken class/method names.
+
+Wed Jul 25 09:26:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi/html.rb: Use << instead of +=.
+ `a += b` is syntax sugar of `a = a + b`; it creates a new string
+ object. `a << b` is concatenation and doesn't create new object.
+
+Wed Jul 25 09:16:26 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/cgi/html.rb (element_init): suppress redefine warning.
+ Don't define methods if they are already defined.
+
+Wed Jul 25 09:05:38 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Added SSL session reuse across connections for a
+ single instance to speed up connection. [Feature #5341]
+ * NEWS: ditto
+ * test/net/http/test_https.rb: Tests for #5341
+
+Wed Jul 25 06:54:24 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc: Fix spelling
+
+Wed Jul 25 06:49:12 2012 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (rb_reg_s_last_match): Update $~ to reference Regexp
+ documentation about "special global variables". [Bug #6723]
+
+Wed Jul 25 06:28:56 2012 Eric Hodel <drbrain@segment7.net>
+
+ * iseq.c: Added documentation. Patch by David Albert. [Bug #6785]
+
+Wed Jul 25 03:05:06 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * parse.y: added symbols and qsymbols productions for %i and %I
+ support. %i{ .. } returns a list of symbols without interpolation,
+ %I{ .. } returns a list of symbols with interpolation. Thanks to
+ Josh Susser for inspiration of this feature. [Feature #4985]
+
+ * ext/ripper/eventids2.c: added ripper events for %i and %I.
+
+ * test/ripper/test_parser_events.rb: ripper tests
+
+ * test/ripper/test_scanner_events.rb: ditto
+
+ * test/ruby/test_array.rb: test for %i and %I behavior
+
+Tue Jul 24 23:34:43 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * include/ruby/win32.h (rb_w32_pow): add new function.
+ We use powl() instead of broken pow() for x64-mingw32. This workaround
+ fixes test failures related to floating point numeric.
+ [ruby-core:46686] [Bug #6784]
+
+Tue Jul 24 15:01:24 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_socket, rb_w32_socketpair): remember the family
+ in the high word of socklist value.
+
+ * win32/win32.c (overlapped_socket_io, recvmsg, sendmsg, setfl): follow
+ above changes.
+
+ * win32/win32.c (rb_w32_getsockname): set remembered family to the
+ argument when OS's function fails.
+
+Tue Jul 24 12:35:13 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_dir_m17n.rb: remove a garbage.
+
+ * test/ruby/test_dir_m17n.rb: convert from ascii-8bit to other encoding
+ with 8bit bytes always fails.
+
+Tue Jul 24 12:32:18 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_dir_m17n.rb: sorry, typo.
+
+Tue Jul 24 12:13:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_dir_m17n.rb: refactoring. RE should be in the left side
+ of the =~ operator, and compare the result with nil is meaningless.
+
+Tue Jul 24 11:35:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_pack.rb (test_pack_unpack_M): was redefined
+ accidentally.
+
+Tue Jul 24 09:31:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Updated to RubyGems 1.8.24, a bugfix release.
+
+Tue Jul 24 08:30:15 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/ruby/test_dir_m17n.rb (create_and_check_raw_file_name): add new
+ helper method to ease encoding testing. Patch by Oleg Sukhodolsky.
+ [ruby-core:46589][Bug #6765]
+
+ * test/ruby/test_dir_m17n.rb (test_filename_extutf8): use filesystem
+ encoding when reading entries and comparing.
+
+ * test/ruby/test_dir_m17n.rb (test_filename_utf8_raw_name): removed.
+
+ * test/ruby/test_dir_m17n.rb (test_filename_utf8_raw_jp_name): split test.
+
+Tue Jul 24 08:09:30 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/win32ole/test_win32ole_method.rb (is_ruby64?): Correct platform
+ used to identify mingw-w64 (x64-mingw32). Patch by Hiroshi Shirosaki.
+ [ruby-core:46651][Bug #6782]
+
+Tue Jul 24 07:22:58 2012 Eric Hodel <drbrain@segment7.net>
+
+ * time.c (time_sec): Updated description of leap seconds for accuracy.
+ Based on patch by Marcus Stollsteimer. [Bug #6749]
+
+Tue Jul 24 07:03:11 2012 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (rb_str_sub): Fixed wording of documentation to match the
+ replacement operation. Minor cleanup of markup. [Bug #6719]
+ * string.c (rb_str_sub_bang): Minor wording change for clarity, minor
+ cleanup of markup.
+
+Mon Jul 23 23:58:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/Makefile.in (TARGET_NAME, TARGET_ENTRY): needed for EXTDLDFLAGS
+ on some platforms. [ruby-core:46600] [Bug #6768]
+
+ * enc/depend: no longer needs tweaking DLDFLAGS for TARGET names.
+
+Mon Jul 23 22:48:19 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: use respond_to? to test Tempfile.
+ [ruby-dev:45995] [Bug #6781] reported by hsbt (Hiroshi SHIBATA).
+
+Mon Jul 23 14:43:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBPATHENV): LIBPATH is used on AIX, but not
+ SHLIB_PATH which was carelessly copied from HP/UX. suggested by
+ Perry Smith at [ruby-core:46397]. [Bug #6728]
+
+Mon Jul 23 01:55:08 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/uri/test_generic.rb (URI#test_find_proxy): add tests with
+ empty *_proxy env variables.
+
+Mon Jul 23 01:47:26 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/uri/test_generic.rb (URI#with_env): unset proxy related env
+ variables. [Bug #6774]
+
+ * test/uri/test_generic.rb (URI#test_find_proxy): fix failures
+ when proxy related env variables already set. [Bug #6774]
+
+Sun Jul 22 23:58:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (rb_threadptr_execute_interrupts_common): increase
+ running_time_us on THREAD_TO_KILL like on THREAD_RUNNABLE.
+ This cause not to switch from a thread which is to be killed
+ on FreeBSD and Mac OS X. see also the test.
+ This issue maybe exist for long time but happens after r36430.
+
+Sat Jul 21 06:21:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: fixes for r36476. [Feature #6546]
+ http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20120720T030101Z.diff.html.gz
+
+ * lib/net/http.rb (Net::HTTP.newobj): return back for compatibility.
+
+ * lib/net/http.rb (Net::HTTP.new): set default_port if proxy port is
+ not given.
+
+ * lib/net/http.rb (Net::HTTP#initialize): ditto.
+
+ * lib/net/http.rb (Net::HTTP#proxy?): return true or false.
+
+ * lib/net/http.rb (Net::HTTP#proxy_address): check proxy_uri is not nil.
+
+ * lib/net/http.rb (Net::HTTP#proxy_port): ditto.
+
+Sat Jul 21 23:12:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): STACK_GROW_DIR_DETECTION is
+ necessary on platforms with unknown stack direction. [Bug #6761]
+
+Sat Jul 21 15:13:42 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/testcase.rb (method_added): refactoring.
+
+Sat Jul 21 14:06:41 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/testcase.rb: warn when test_* method is redefined.
+ Patch by mame (Yusuke Endoh). [Feature #2643] [ruby-core:27790]
+
+ * test/testunit/test_redefinition.rb: Test for above.
+
+ * test/testunit/test4test_redefinition.rb: Ditto.
+
+Sat Jul 21 08:41:14 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/logger.rb: Updated example in Logger comment to match other
+ examples and fixed a bug. Patch by Marcus Stollsteimer.
+ [Bug #6759]
+
+Fri Jul 20 17:20:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (rb_random_real): refine error message.
+
+Fri Jul 20 11:03:17 2012 Eric Hodel <drbrain@segment7.net>
+
+ * NEWS: Updated net/http for automatic proxy detection (#6546) and
+ automatic gzip and deflate compression (#6492, #6494).
+
+Fri Jul 20 10:55:38 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Net::HTTP now automatically detects and uses
+ proxies from the environment. A proxy may also be specified as
+ before.
+
+ Net::HTTP::Proxy still creates anonymous classes, but these classes
+ are only used to store configuration information. When an HTTP
+ instance is created the configuration is now copied.
+
+ Additionally, Net::HTTP::ProxyDelta is no longer used by Net::HTTP
+
+ [Feature #6546]
+ * lib/open-uri.rb: Moved URI::Generic#find_proxy to uri/generic.
+ * lib/uri/generic.rb: Imported find_proxy from open-uri.
+ * test/open-uri/test_open-uri.rb: Moved proxy-discovery tests to URI.
+ * test/uri/test_generic.rb: Imported proxy-discovery tests from
+ open-uri.
+ * test/net/http/test_http.rb: Added tests for proxy behavior.
+
+Fri Jul 20 09:34:11 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/socket/test_socket.rb: Ignore IPv6 unique local addresses on OS
+ X (iCloud Back to my Mac addresses) for test_udp_socket since they do
+ not act as loopback addresses. [Bug #6692]
+
+Fri Jul 20 09:32:14 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/socket/raddrinfo.c (addrinfo_ipv6_unique_local_p): Added
+ Addrinfo#ipv6_unique_local? to detect RFC 4193 unique local
+ addresses. Part of #6692
+ * ext/socket/rubysocket.h: Add IN6_IS_ADDR_UNIQUE_LOCAL macro if
+ missing.
+ * test/socket/test_addrinfo.rb: Test for ipv6_unique_local?
+
+Fri Jul 20 07:40:32 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http/response.rb: Automatically inflate gzip and
+ deflate-encoded response bodies. [Feature #6942]
+ * lib/net/http/generic_request.rb: Automatically accept gzip and
+ deflate content-encoding for requests. [Feature #6494]
+ * lib/net/http/request.rb: Updated documentation for #6494.
+ * lib/net/http.rb: Updated documentation for #6492 and #6494, removed
+ Content-Encoding handling now present in Net::HTTPResponse.
+ * test/net/http/test_httpresponse.rb: Tests for #6492
+ * test/net/http/test_http_request.rb: Tests for #6494
+ * test/open-uri/test_open-uri.rb (test_content_encoding): Updated test
+ for automatic content-encoding handling.
+
+Fri Jul 20 03:42:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c: use #ifdef, not #if.
+
+Thu Jul 19 15:08:40 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_s_control_interrupt,
+ rb_thread_s_check_interrupt): added for
+ Thread.control_interrupt and Thread.check_interrupt.
+ See details on rdoc.
+ I'll make an ticket for this feature.
+
+ * test/ruby/test_thread.rb: add a test for Thread.control_interrupt.
+
+ * thread.c (rb_threadptr_raise): make a new exception object
+ even if argc is 0.
+
+ * thread.c (rb_thread_kill): kill thread immediately if target thread
+ is current thread.
+
+ * vm_core.h (RUBY_VM_CHECK_INTS_BLOCKING): added.
+ CHECK_INTS while/after blocking operation.
+
+ * vm_core.h (RUBY_VM_CHECK_INTS): require rb_thread_t ptr.
+
+ * cont.c (fiber_switch): use replaced RUBY_VM_CHECK_INTS().
+
+ * eval.c (ruby_cleanup): ditto.
+
+ * insns.def: ditto.
+
+ * process.c (rb_waitpid): ditto.
+
+ * vm_eval.c (vm_call0): ditto.
+
+ * vm_insnhelper.c (vm_call_method): ditto.
+
+Thu Jul 19 22:46:48 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb: remove temporally files early.
+
+Thu Jul 19 15:38:35 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * variable.c (rb_mod_class_variables): return inherited variables
+ except when the optional argument is set to false.
+ [ruby-dev:44034] [Bug #4971]
+
+ * variable.c (rb_mod_constants): fix typo in documentation.
+
+Thu Jul 19 14:30:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h: move mark function declarations that should be private.
+
+Thu Jul 19 14:18:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/init.c (rsock_init_sock): need to update max fd on all
+ platforms.
+
+Thu Jul 19 14:15:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_gc_mark_threads): remove deprecated function.
+
+Thu Jul 19 13:28:03 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/net/http/test_http.rb (TestNetHTTPLocalBind#test_bind_to_local*):
+ re-enable the tests because now it's OK on windows.
+
+Thu Jul 19 13:26:25 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: now enable IPv6 by default on mswin.
+
+Thu Jul 19 09:33:46 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/emitter.c (initialize): allow a configuration object to be
+ passed to the constructor so that mutation isn't required after
+ instantiation.
+
+ * ext/psych/lib/psych/handler.rb: add configuration object
+
+ * ext/psych/lib/psych/visitors/emitter.rb: use configuration object if
+ extra configuration is present.
+
+Thu Jul 19 08:20:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_file.rb: remove temporally files early.
+
+Thu Jul 19 07:37:41 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/drb/drbtest.rb: fixed: can't delete unix domain sockets problem.
+
+Thu Jul 19 03:41:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c: Added #include <strings.h> for ffs(). Patch by Perry
+ Smith. Thank you. [Bug #6748]
+
+Thu Jul 19 01:56:02 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/intern.h (rb_num_zerodiv): Added NORETURN.
+ Patched by Xi Wang. [Bug #6736]
+
+Wed Jul 18 23:57:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * pack.c (pack_pack): round down too long uuencode width. folding
+ width in uuencode format cannot be longer than 63 bytes.
+
+Wed Jul 18 23:04:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_empty_p): fix wrong condition introduced in r36438.
+
+ * ext/sdbm/init.c (fsdbm_empty_p): ditto.
+
+Wed Jul 18 23:08:57 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_beginendblock.rb: remove temporally files early.
+
+Wed Jul 18 22:43:02 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_autoload.rb: remove temporally files early.
+
+Wed Jul 18 21:59:46 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_argf.rb: use temporally directory.
+
+Wed Jul 18 19:41:19 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/openssl/test_config.rb: remove temporally files early.
+
+Wed Jul 18 17:45:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_builtin_type_name): map by index.
+
+Wed Jul 18 16:17:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_framework): get rid of separating -framework
+ option and its argument and dealing with the argument as a library
+ or an object name. if $LDFLAGS were an array...
+
+Wed Jul 18 16:09:10 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/extconf.rb: support PDCurses. patched by Luis Lavena.
+ [ruby-core:46485] [Feature #6735]
+
+Wed Jul 18 15:50:25 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * parse.y (primary): allow an empty grouped expression as the
+ operand of the not operator (e.g., not ()).
+ [ruby-core:45976] [Bug #6674]
+
+ * parse.y (parser_yylex): show no warning for a grouped expression
+ as the operand of the not operator (e.g., not (a)) or as an
+ argument of a method call without parentheses (e.g., foo (a)).
+ [ruby-core:39050] [Bug #5214]
+
+Wed Jul 18 15:33:21 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_thread_call_without_gvl2): added.
+ it can skip last CHECK_INTS. See document for more details.
+ Document about it was updated a bit.
+
+ * include/ruby/thread.h (decl. of rb_thread_call_without_gvl2): added.
+
+ * thread.c (rb_thread_call_with_gvl): remove "EXPERIMENTAL!"
+ warning from a document.
+
+Wed Jul 18 14:53:21 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (EXTDLDFLAGS): split options for each extension
+ libraries, and unused in ruby.pc. [Bug #6734]
+
+ * lib/mkmf.rb (MakeMakefile#configuration): add EXTDLDFLAGS.
+
+Wed Jul 18 14:47:23 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c: fix last commit miss.
+
+Wed Jul 18 14:16:51 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c (rb_threadptr_async_errinfo_*): manage async errors queue.
+ Async events such as an exception throwed by Thread#raise,
+ Thread#kill and thread termination (after main thread termination)
+ will be queued to th->async_errinfo_queue.
+ - clear: clear the queue.
+ - enque: enque err object into queue.
+ - deque: deque err object from queue.
+ - active_p: return 1 if the queue should be checked.
+ rb_thread_t#thrown_errinfo was removed.
+
+ * vm_core.h: add declarations of rb_threadptr_async_errinfo_*.
+ remove rb_thread_t#thrown_errinfo field and
+ add rb_thread_t#async_errinfo_queue (queue body: Array),
+ rb_thread_t#async_errinfo_queue_checked (flag),
+ rb_thread_t#async_errinfo_mask_stack(Array, not used yet).
+
+ * vm.c (rb_thread_mark): fix a mark function.
+
+ * cont.c (rb_fiber_start): enque an error.
+
+ * process.c (after_fork): clear async errinfo queue.
+
+Wed Jul 18 14:25:55 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * pack.c: (ditto) bitwise operations are not char. Apply explicit
+ casts on them.
+
+Wed Jul 18 12:59:50 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * encoding.c (load_encoding): explicit cast to suppress warning.
+ Though the cast truncates some bits, from heuristic analysis I
+ believe it is OK to do so here.
+
+ * bignum.c (rb_cstr_to_inum): ditto.
+
+Wed Jul 18 12:55:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/benchmark.rb: Fix Benchmark.benchmark output with an empty
+ caption. patched by Benoit Daloze. [ruby-core:45719] [Bug #6610]
+
+Wed Jul 18 10:00:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/debug.rb: Added toplevel documentation. Based on patch by Oscar
+ Del Ben. [Bug #6743], fixes #146 on github.
+
+Wed Jul 18 09:33:59 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/win32ole/test_win32ole_event.rb (TestWIN32OLE_EVENT): use
+ standard skip method to skip tests.
+
+Wed Jul 18 09:26:45 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/logger.rb: Updated typos and output to match modern Logger
+ output. Patch by Marcus Stollsteimer. [Bug #6738]
+
+Wed Jul 18 07:59:29 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+
+ * lib/cgi/util.rb (CGI.escapeHTML,unescapeHTML): Add &apos; for HTML5
+ escaping.
+ [Feature #6620]
+
+Tue Jul 17 22:17:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/open-uri.rb: call io.close! for Tempfile.
+
+Tue Jul 17 16:41:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * proc.c (rb_proc_arity): return normal value (not -n-1) if it is not
+ a labmda, or it is a labmda and no arg_opts. [Bug #5694]
+
+Tue Jul 17 03:56:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: strings with YAML anchors
+ are properly referenced. Patched by Joe Rafaniello via Github:
+ https://github.com/tenderlove/psych/pull/69
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
+ * test/psych/test_alias_and_anchor.rb: test for change
+
+Mon Jul 16 23:20:24 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_float_cmp): use FIXNUM_MIN and FIXNUM_MAX,
+ instead of LONG_MIN and LONG_MAX.
+
+Mon Jul 16 22:50:41 2012 Tanaka Akira <akr@fsij.org>
+
+ * numeric.c (flo_to_s): use the exponential form if the integer part
+ is longer than or equal DBL_DIG.
+ [ruby-dev:45960] [ruby-trunk - Bug #6741]
+
+Mon Jul 16 22:01:00 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/readline/readline.c: fixed docs. [Bug #6740][ruby-core:46501]
+ patched by Nobuhiro IMAI.
+
+Mon Jul 16 19:24:01 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_float_eq): new function.
+ (rb_big_eq): use rb_integer_float_eq.
+
+ * internal.h (rb_integer_float_eq): declared.
+
+ * numeric.c (flo_eq): use rb_integer_float_eq.
+ (fix_equal): ditto.
+
+Mon Jul 16 19:02:31 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_float_cmp): rename a local variable.
+
+Mon Jul 16 18:40:26 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_integer_float_cmp): renamed from rb_big_float_cmp.
+
+ * internal.h: follow the above change.
+
+ * numeric.c: ditto.
+
+Mon Jul 16 17:57:54 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_float_cmp): compare an integer and float precisely.
+ [ruby-core:31376] [Bug #3589] reported by Tomasz Wegrzanowski.
+
+Mon Jul 16 17:29:45 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_float_cmp): support fixnum for argument x.
+
+ * numeric.c (fix_equal): use rb_big_float_cmp.
+ (fix_cmp): ditto.
+ (fix_gt): ditto.
+ (fix_ge): ditto.
+ (fix_lt): ditto.
+ (fix_le): ditto.
+ (flo_eq): ditto.
+ (flo_cmp): use rb_big_float_cmp for fixnum argument.
+ (flo_gt): ditto.
+ (flo_ge): ditto.
+ (flo_lt): ditto.
+ (flo_le): ditto.
+
+Mon Jul 16 17:05:53 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/fileutils/test_fileutils.rb: add test for FileUtils#uptodate?
+
+Mon Jul 16 16:56:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/fileutils.rb (FileUtils.uptodate?): remove useless parameter.
+ patched by Oscar Del Ben.[Bug #6708][ruby-core:46256]
+
+Mon Jul 16 15:37:56 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (rb_big_eq): use rb_big_float_cmp.
+
+Mon Jul 16 15:00:45 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_big_float_cmp): declared.
+
+ * bignum.c (rb_big_float_cmp): extracted from rb_big_cmp and big_op.
+ (rb_big_cmp): use rb_big_float_cmp.
+ (big_op): ditto.
+
+ * numeric.c (flo_cmp): use rb_big_float_cmp.
+ (flo_gt): ditto.
+ (flo_ge): ditto.
+ (flo_lt): ditto.
+ (flo_le): ditto.
+
+Mon Jul 16 14:14:21 2012 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (enum big_op_t): new type.
+ (big_op): use enum big_op_t.
+ (big_gt): ditto.
+ (big_ge): ditto.
+ (big_lt): ditto.
+ (big_le): ditto.
+
+Sat Jul 14 18:18:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_get_values_at): fill with nil out of range.
+ [ruby-core:43678] [Bug #6203]
+
+Sat Jul 14 17:17:55 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * cont.c (cont_restore_0): improve docs. [Bug #6706][ruby-core:46243]
+ patched by Oscar Del Ben via https://github.com/ruby/ruby/pull/140
+
+Sat Jul 14 17:08:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_s_create): raise an exception, when input elements
+ are not one or two elements arrays. [ruby-core:39945] [Bug #5406]
+
+Sat Jul 14 16:16:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): use
+ Array#uniq!.
+
+ * lib/test/unit.rb (Test::Unit::Runner#deal): deal tasks to workers.
+
+ * lib/test/unit.rb (Test::Unit::Runner#quit_workers): close and kill
+ all workers.
+
+ * lib/test/unit.rb (Test::Unit::Runner#delete_worker): delete dead
+ worker from working set.
+
+ * lib/test/unit.rb (Test::Unit::Runner#launch_worker): add new worker
+ to working set.
+
+ * lib/test/unit.rb (Test::Unit::Runner#launch_worker): extract.
+
+ * lib/test/unit.rb (Test::Unit::Runner#start_watchdog): extract.
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): move
+ initializations with nothing to release outside begin/ensure.
+
+Sat Jul 14 16:04:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_join): should not infected by separator if it is not
+ used. [ruby-core:42161][Bug #5902]
+
+Sat Jul 14 02:31:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_thread_blocking_region): fix declarations
+ prototypes without arguments in C++ have different meanings than C.
+
+Thu Jul 12 12:32:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/runner.rb: skip default gems to get rid of loading old versions
+ before installation.
+
+Thu Jul 12 11:44:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_new_frozen): since the result object should have
+ same tainted/untrusted bits with the original object, return new
+ object if the shared object unmatch. [ruby-core:39745][Bug #5374]
+
+Thu Jul 12 10:46:39 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/net/http/test_http.rb (TestNetHTTPLocalBind#test_bind_to_local*):
+ cannot cross between network interfaces on Windows, so skip this test
+ until we find better test.
+
+Thu Jul 12 08:48:33 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 3.2.0 (r7598)
+ * test/minitest/*: ditto
+
+Thu Jul 12 05:11:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defined): use method entry and id in cfp for proper
+ superclass, since klass in iseq is shared by dynamically defined
+ methods from the same block. [ruby-core:45831][Bug #6644]
+
+Thu Jul 12 01:49:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#connect): use local_host and local_port
+ if specified. patched by Ricardo Amorim [Feature #6617]
+
+Wed Jul 11 17:36:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: append ENCOBJS to DLDOBJS but not EXTSOLIBS which is
+ not a target, to compile enc/encinit.c.
+
+Wed Jul 11 12:38:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_mul): nonstatic initializer
+ of an aggregate type is a C99ism.
+
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_mul): get rid of VC++
+ warnings.
+
+Mon Jul 9 16:11:30 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * vm_eval.c (rb_eval_string_from_file,
+ rb_eval_string_from_file_protect): new functions to replace
+ rb_compile_main_from_string() and ruby_eval_main().
+
+ * nacl/pepper_ruby.c: Follows the change in vm_eval.c
+
+Mon Jul 9 14:05:42 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ Reverts a half of r36079. As we discussed on ruby-dev@ and IRC,
+ we do not need to disclose intermediate representation of program.
+ The program embedding CRuby should use rb_eval_string family.
+ * include/ruby/ruby.h (ruby_opaque_t): removed.
+ (ruby_compile_main_from_file, ruby_compile_main_from_string,
+ ruby_eval_main): removed.
+
+ * eval.c (ruby_eval_main_internal): became ruby_exec_internal() again.
+ (ruby_eval_main): removed.
+
+ * ruby.c (PREPARE_PARSE_MAIN) reverted.
+ (parse_and_compile_main, ruby_compile_main_from_file,
+ ruby_compile_main_from_string): removed
+
+Wed Jul 11 10:16:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby.h (HAVE_RUBY_THREAD_H): to show ruby/thread.h to be
+ available. fixup of r36355.
+
+Wed Jul 11 03:26:47 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Added streaming support to inflate processing.
+ This allows zlib streams to be processed without huge memory growth.
+ [Feature #6612]
+ * NEWS: ditto
+ * ext/zlib/zlib.c (zstream_expand_buffer): Uses rb_yield when a block
+ is given for streaming support. Refactored to use
+ zstream_expand_buffer_into to remove duplicate code.
+ * ext/zlib/zlib.c (zstream_expand_buffer_protect): Added wrapper
+ function to pass jump state back through GVL-free section to allow
+ zstream clean-up before terminating the ruby call.
+ * ext/zlib/zlib.c (zstream_expand_buffer_without_gvl): Acquire GVL to
+ yield processed chunk of output stream.
+ * ext/zlib/zlib.c (zstream_detach_buffer): When a block is given,
+ returns Qnil mid-stream and yields the output buffer at the end of
+ the stream.
+ * test/zlib/test_zlib.rb: Updated tests
+
+Tue Jul 10 22:57:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/thread.h: new header file for thread stuff.
+
+ * thread.c (rb_thread_call_without_gvl): export. [Feature#4328]
+ returns void* instead of VALUE. [Feature #5543]
+
+ * thread.c (rb_thread_blocking_region): deprecate. [ruby-core:46295]
+
+Tue Jul 10 10:48:59 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h (NT, NtInitialize): removed unused old macros.
+
+Tue Jul 10 10:43:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * configure.in: removed --enable/disable-win95 options. (see r36342)
+
+Tue Jul 10 00:44:41 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h: Removed RUBY_GLOBAL_SETUP completely. It is
+ no meaning definition since r24894.
+ * main.c: ditto.
+ * nacl/pepper_main.c: ditto.
+
+Mon Jul 9 23:59:36 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * dln.c: Simplify and make consistent an ifdef for Mac OS X.
+ * ext/socket/rubysocket.h: ditto.
+ * ext/tk/stubs.c: ditto.
+ * io.c: ditto.
+ * process.c: ditto.
+ * signal.c: ditto.
+ * vm_dump.c: ditto.
+
+Mon Jul 9 17:37:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (win95_stat): removed unnecessary macro.
+
+Mon Jul 9 17:22:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat, win32/setup.mak, win32/Makefile.sub: omitted
+ Win9x support. removed --enable/disable-win95 options.
+
+ * include/ruby/win32.h, file.c, win32/win32.c: ditto.
+
+ * win32/README.win32: ditto.
+
+Mon Jul 9 13:28:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (DLDFLAGS): use TARGET_ENTRY to specify an entry point
+ instead of TARGET which may contain non-identifier characters.
+
+ * lib/mkmf.rb (create_makefile): add TARGET_NAME which is the first
+ part consists of only word characters. [ruby-core:46248][Bug #6709]
+
+Sun Jul 8 07:36:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (shadowing_lvar_gen, warn_unused_var): no warnings for
+ variables starting with _. [ruby-core:46160][Feature #6693]
+
+Sat Jul 7 23:07:30 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * test/csv/test_features.rb: add require for Tempfile.
+ * test/csv/test_serialization.rb: ditto.
+
+Fri Jul 6 06:49:50 2012 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_aref): Added a description of the behavior of
+ index positioning. [Bug #6680]
+ * array.c (rb_ary_aset): ditto. Reordered sentences for clarity.
+ * string.c (rb_str_aref_m): Added a description of the behavior of
+ index positioning
+
+Fri Jul 6 05:38:44 2012 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (rb_str_bytesize): Improve documentation. Patch by Oscar
+ Del Ben from github issue #138.
+ * string.c (rb_str_empty): ditto.
+ * string.c (rb_str_times): ditto.
+ * string.c (rb_str_dump): ditto.
+ * string.c (rb_str_center): ditto.
+
+Fri Jul 6 04:05:59 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (zstream_expand_buffer_without_gvl): Use
+ ruby_xrealloc() to avoid crash with CALC_EXACT_MALLOC_SIZE.
+
+Thu Jul 5 17:32:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h: move ThreadShield declarations from intern.h.
+
+Thu Jul 5 16:00:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (ThreadShield): rename from Barrier.
+
+Thu Jul 5 15:14:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb (show_progress): refine error output. do not
+ count non-empty error message, but just warn.
+
+ * bootstraptest/runner.rb (error): show errors immediately if tty.
+
+Thu Jul 5 12:28:11 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/net/http/test_httpresponses.rb: Add a test file for
+ Net::HTTPResponses and put a test case for the previous bug.
+
+Thu Jul 5 06:33:52 2012 Mark Dodwell <mark@mkdynamic.co.uk>
+
+ * lib/net/http/responses.rb: Fix 4xx classes to inherit correctly
+ from Net::HTTPClientError. [Bug #6700]
+
+Wed Jul 4 21:55:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (proc_options): warn only if -K and -w option is specified.
+ see also r36274 [Feature #5206]
+
+Wed Jul 4 21:41:44 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * gc.c, atomic.h (ATOMIC_SIZE_*): moved from gc.c to atomic.h
+ [ruby-dev:45909]
+
+Wed Jul 4 19:13:15 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole.rb (test_s_codepage_changed):
+ FileSystemObject only supports ANSI or UTF-16LE encoding.
+ Patch by h.shirosaki (Hiroshi Shirosaki) [ruby-trunk - Bug #6650]
+
+Wed Jul 4 11:52:12 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (ATOMIC_SIZE_*): 64bit Windows support.
+
+Wed Jul 4 11:11:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_frame_callee, rb_f_callee_name): fix to return the
+ called id. this longstanding bug has been caused and blocked by
+ the structure of old rb_control_frame_t and rb_iseq_t.
+
+ * vm_insnhelper.c (vm_push_frame): set proper method entry.
+
+Wed Jul 4 08:29:31 2012 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_aref): Updated documentation to indicate the
+ starting index is an index into the array or string. Updated
+ examples to show behavior of indexes at the end of an array or
+ string. Based on patch by Marcus Stollsteimer. [Bug #6680]
+ * array.c (rb_ary_aset): ditto.
+ * string.c (rb_str_aref): ditto. Also added descriptive argument
+ names to call-seq section.
+
+Wed Jul 4 07:05:59 2012 Eric Hodel <drbrain@segment7.net>
+
+ * test/zlib/test_zlib.rb (test_inflate_partial_input): Added test for
+ inflating incomplete zlib streams.
+
+Tue Jul 3 23:14:16 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * gc.c (ATOMIC_SIZE_EXCHANGE): fix function name on Solaris [Bug #6689]
+ [ruby-dev:45904]
+
+Tue Jul 3 16:07:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (vm_malloc_fixup, vm_xrealloc, vm_xfree, after_gc_sweep): use
+ atomic operations to update malloc_params.
+
+Tue Jul 3 14:50:16 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (zstream_run_func): Don't exit run loop for buffer
+ error. [Feature #6615]
+ * ext/zlib/zlib.c: Fix style to match existing functions.
+
+Tue Jul 3 12:05:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): also needed the workaround for VC8
+ for x64. [ruby-dev:45875] [Bug #6676]
+ reported by aves_ramphastos (Seigo Ishigane)
+
+Tue Jul 3 11:56:46 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (zstream_detach_buffer): Refactored tainting of
+ output string, moving it from the callee to zstream_detach_buffer.
+ * ext/zlib/zlib.c (rb_zstream_finish): ditto
+ * ext/zlib/zlib.c (rb_zstream_flush_next_out): ditto
+ * ext/zlib/zlib.c (rb_deflate_deflate): ditto
+ * ext/zlib/zlib.c (rb_deflate_flush): ditto
+ * ext/zlib/zlib.c (rb_inflate_inflate): ditto
+
+Tue Jul 3 11:16:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (runnable): make symbolic links to run in build directory.
+
+Tue Jul 3 10:46:06 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ruby.c (proc_options): warn if -K option is specified. [Feature #5206]
+
+Tue Jul 3 06:12:13 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (Init_Object): Added RDoc location pointers for
+ Kernel#methods, Kernel#protected_methods, Kernel#private_methods and
+ Kernel#public_methods. [Bug #6666]
+
+Tue Jul 3 06:02:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (zstream_run): Process zlib streams without GVL.
+ [Feature #6615]
+ * NEWS: ditto.
+
+Mon Jul 2 22:13:04 2012 Tanaka Akira <akr@fsij.org>
+
+ * thread.c (rb_thread_aref): add explanation for why Thread#[] and
+ Thread#[]= are fiber-local and not thread-local.
+ reported by Julien A. [ruby-core:41606] [ruby-trunk - Bug #5750]
+
+Mon Jul 2 21:25:55 2012 Tanaka Akira <akr@fsij.org>
+
+ * time.c (timew_out_of_timet_range): specialization for
+ SIZEOF_TIME_T == SIZEOF_INT64_T.
+
+Mon Jul 2 17:06:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_include_module): include modules after the origin.
+
+ * class.c (include_modules_at): skip prepended modules.
+
+ * class.c (rb_prepend_module): now basic.klass in ICLASS refers the
+ old original class/module. [ruby-dev:45868][Bug #6662]
+
+ * class.c (rb_mod_ancestors): ditto.
+
+ * vm_method.c (search_method): search method entry from the origin
+ iclass.
+
+Mon Jul 2 05:54:58 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:46058].
+
+Mon Jul 2 05:35:43 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (d_lite_marshal_load): accepts old dump.
+
+Mon Jul 2 03:21:53 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * README.EXT.ja: fixed args of have_struct_member() ,
+ create_makefile() same as r35977. however, mkmf.rb include
+ no Japanese-docs, so Appendix C was not removed. [Bug #6597]
+
+Fri Jun 29 05:08:41 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit/parallel.rb: workaround fix for rubygems.
+ RubyGems can't find rake if the source directory is not equal to
+ the directory which is running the test. [Bug #6604]
+
+Thu Jun 28 20:33:15 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/win32ole/test_win32ole.rb (test_s_codepage_changed):
+ FileSystemObject only supports ANSI or UTF-16LE encoding.
+ Patch by bosko (Bosko Ivanisevic) [ruby-trunk - Bug #6650]
+
+Thu Jun 28 09:27:09 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * class.c (class_instance_method_list): consider prepended Class/Module
+ when recur != 0. [ruby-dev:45863] [Bug #6660]
+
+ * test/ruby/test_module.rb (test_prepend_instance_methods_false): add
+ a test for it.
+
+
+Thu Jun 28 06:12:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_mod_ancestors): fix ancestors order.
+ [ruby-core:45919][Bug #6658] [ruby-dev:45861][Bug #6659]
+
+Wed Jun 27 21:28:59 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/racc/parser.rb: NotImplementError is not exist.
+
+ * lib/irb/output-method.rb (IRB::OutputMethod#print): ditto.
+
+Wed Jun 27 21:31:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_prepend_module): ancestors of prepending module also
+ should be included. [ruby-core:45914][Bug #6654]
+
+Wed Jun 27 21:01:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (class_instance_method_list): m_tbl in prepended
+ class/module is NULL. [ruby-core:45915][Bug #6655]
+
+Wed Jun 27 16:48:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_prepend_module): prepend module into another module.
+
+ * eval.c (rb_mod_prepend): new method Module#prepend. [Feature #1102]
+
+Wed Jun 27 09:15:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (is_popen_fork): check if fork and raise NotImplementedError if
+ unavailable.
+
+ * io.c (rb_io_s_popen): allow environment variables hash and exec
+ options as flat parameters, not in an array arguments.
+ [Feature#6651] [EXPERIMENTAL]
+
+ * process.c (rb_execarg_extract_options): extract exec options, but no
+ exceptions on non-exec options and returns them as a Hash.
+
+ * process.c (rb_execarg_setenv): set environment variables.
+
+Tue Jun 26 16:57:14 2012 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.c (register_cached_thread_and_wait):
+ return immediately if malloc() failed.
+ [ruby-core:43960] [ruby-trunk - Bug #6235]
+
+ * thread_pthread.c (USE_THREAD_CACHE): check already defined or not.
+
+Tue Jun 26 10:01:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_s_popen): revert r36213 "popen: shell commands with
+ envvar" because it disabled to let single command bypass shell.
+
+Mon Jun 25 17:49:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (rb_mix_module): revert Module#mix.
+
+Mon Jun 25 16:57:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_mod_define_method): allow method transplanting from a
+ module to either class or module. [ruby-core:34267][Feature #4254]
+
+Mon Jun 25 11:34:45 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * internal.h: use rb_pid_t instead of pid_t because of there is no
+ definition of pid_t here on Windows.
+
+Mon Jun 25 00:25:01 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in (for stack end address): remove human68k specific
+ check. It is no longer supported.
+
+Sun Jun 24 23:02:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): merge win32 code using spawnv().
+
+Sun Jun 24 22:53:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (check_exec_fds): separate check_exec_fds_1() since
+ nonstatic initializer of an aggregate type is not allowed by C89.
+
+Sun Jun 24 07:47:17 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): options field removed.
+
+ * process.c: follow the rb_execarg change.
+
+Sat Jun 23 23:48:21 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_spawn_cmd): unused variable removed to suppress a
+ warning.
+ (save_env): ditto.
+
+ [ruby-core:45797] reported by Luis Lavena.
+
+Sat Jun 23 23:19:31 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add new_pgroup_given and new_pgroup_flag
+ fields.
+
+ * process.c (EXEC_OPTION_NEW_PGROUP): removed.
+ (proc_spawn_cmd): take a struct rb_execarg argument.
+ use the new fields.
+ (rb_execarg_addopt): use the new fields.
+ (rb_spawn_process): follow the proc_spawn_cmd change.
+
+ [ruby-core:45794] [ruby-trunk - Bug #6633] reported by Luis Lavena.
+
+Sat Jun 23 20:26:36 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add fd_dup2, fd_close, fd_open,
+ fd_dup2_child fields.
+
+ * process.c (EXEC_OPTION_DUP2): removed.
+ (EXEC_OPTION_CLOSE): removed.
+ (EXEC_OPTION_OPEN): removed.
+ (EXEC_OPTION_DUP2_CHILD): removed.
+ (mark_exec_arg): mark the new fields.
+ (check_exec_redirect1): change condition for default option.
+ (check_exec_redirect): take a struct rb_execarg argument.
+ use the new fields.
+ (rb_execarg_addopt): follow the check_exec_redirect change.
+ (check_exec_fds): use the new fields.
+ (save_redirect_fd): ditto.
+
+Sat Jun 23 19:01:18 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_execarg_fixup): fix envopts condition.
+
+Sat Jun 23 18:44:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (check_exec_redirect1): extracted from
+ check_exec_redirect.
+
+Sat Jun 23 17:22:02 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (save_env): don't use EXEC_OPTION_UNSETENV_OTHERS.
+ (rb_execarg_run_options): ditto.
+
+Sat Jun 23 17:04:08 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add env_modification field.
+
+ * process.c (EXEC_OPTION_ENV): removed.
+ (mark_exec_arg): mark env_modification field.
+ (rb_exec_fillarg): update the new field, instead of options array.
+ (rb_execarg_fixup): use the new field.
+ (save_env): ditto.
+ (rb_execarg_run_options): ditto.
+
+Sat Jun 23 16:27:01 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add rlimit_limits field.
+
+ * process.c (EXEC_OPTION_RLIMIT): removed.
+ (mark_exec_arg): mark rlimit_limits field.
+ (rb_execarg_addopt): update the new fields, instead of options array.
+ (run_exec_rlimit): use the new field.
+ (rb_execarg_run_options): clear sarg using MEMZERO. use the new
+ field.
+
+Sat Jun 23 14:29:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add chdir_given and chdir_dir fields.
+
+ * process.c (EXEC_OPTION_CHDIR): removed.
+ (mark_exec_arg): mark chdir_dir field.
+ (rb_execarg_addopt): update the new fields, instead of options array.
+ (rb_execarg_run_options): use the new fields.
+
+Sat Jun 23 13:20:47 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add close_others_given, close_others_do and
+ close_others_maxhint fields.
+
+ * process.c (EXEC_OPTION_CLOSE_OTHERS): removed.
+ (rb_execarg_addopt): update the new fields, instead of options array.
+ (check_exec_fds): take eargp as an argument. update the
+ close_others_maxhint field.
+ (rb_execarg_fixup): follow the argument change of check_exec_fds.
+ (rb_execarg_run_options): use the new fields.
+
+Sat Jun 23 10:41:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add unsetenv_others_given and
+ unsetenv_others_do fields.
+
+ * process.c (EXEC_OPTION_UNSETENV_OTHERS): removed.
+ (rb_execarg_addopt): update the new fields, instead of options array.
+ (rb_execarg_fixup): use the new fields.
+
+Sat Jun 23 09:35:47 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: use the variable name "soptions" for sargp->options.
+
+Sat Jun 23 09:17:49 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: use the name "sargp" for struct rb_execarg variables
+ consistently for saving process attributes.
+
+ * io.c: ditto.
+
+Sat Jun 23 07:59:57 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: use the name "eargp" for struct rb_execarg variables
+ consistently except for saving process attributes.
+
+ * io.c: ditto.
+
+ * ext/pty/pty.c: ditto.
+
+Wed Jun 20 18:27:03 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * common.mk: Add missing dependencies.
+
+Fri Jun 22 20:27:39 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg): add pgroup_given and pgroup_pgid fields.
+
+ * process.c (EXEC_OPTION_PGROUP): removed.
+ (rb_execarg_addopt): update the new fields, instead of options array.
+ (run_exec_pgroup): take a struct rb_execarg argument. refer the new
+ fields.
+ (rb_execarg_run_options): follow run_exec_pgroup change.
+
+Fri Jun 22 18:48:51 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * README.EXT, README.EXT.ja: use "sval" for the third argument
+ name of Data_Wrap_Struct().
+ Suggested by @satoh_fumiyasu. Thanks!!!
+
+Fri Jun 22 18:04:26 2012 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c, vm_eval.c: set th->base_block properly.
+ th->base_block is information for (a) parsing, (b) compiling
+ and (c) setting up the frame to execute the program passed by
+ `eval' method. For example, (1) parser need to know up-level
+ variables to detect it is variable or method without paren.
+ Befor (a), (b) and (c), VM set th->base_block by passed bindng
+ (or previous frame information). After execute (a), (b) and (c),
+ VM should clear th->base_block. However, if (a), (b) or (c)
+ raises an exception, then th->base_block is not cleared.
+ Problem is that the uncleared value th->balo_block is used for
+ irrelevant iseq compilation. It causes SEGV or critical error.
+ I tried to solve this problem: to clear them before exception,
+ but finally I found out that it is difficult to do it (Ruby
+ program can be run in many places).
+ Because of this background, I set th->base_block before
+ compiling iseq and restore it after compiling.
+ Basically, th->base_block is dirty hack (similar to global
+ variable) and this patch is also dirty.
+
+ * bootstraptest/test_eval.rb: add a test for above.
+
+ * internal.h: remove unused decl.
+
+ * iseq.c (rb_iseq_compile_with_option): add base_block parameter.
+ set th->base_block before compilation and restore it after
+ compilation.
+
+ * ruby.c (require_libraries): pass 0 as base_block instead of
+ setting th->base_block
+
+ * tool/compile_prelude.rb (prelude_eval): apply above changes.
+
+ * vm.c, vm_eval.c: ditto.
+
+ * vm_core.h: add comments.
+
+Fri Jun 22 18:19:38 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: pass struct rb_execarg value instead of its options
+ field for saving process attribute changing functions.
+ (save_redirect_fd): take a struct rb_execarg argument.
+ (run_exec_dup2): ditto.
+ (run_exec_close): ditto.
+ (run_exec_open): ditto.
+ (run_exec_dup2_child): ditto.
+ (run_exec_pgroup): ditto.
+ (run_exec_rlimit): ditto.
+ (save_env): ditto.
+ (rb_execarg_run_options): follow the above functions change.
+
+Fri Jun 22 17:55:48 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_backtrace.rb: decrease recursion depth
+ to reduce consuming stack size.
+
+Fri Jun 22 13:36:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_init, random_load): cannot initialize frozen object
+ again, nor with tainted/untrusted object. [Bug #6540]
+
+Fri Jun 22 13:32:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_copyable): new function, to ensure the target is
+ not frozen and the source is not tainted nor untrusted.
+
+Fri Jun 22 05:55:20 2012 Eric Hodel <drbrain@segment7.net>
+
+ * eval.c (ruby_cleanup): Fixed typo. Patch by Trever Dawe.
+ Fixes #131 (github). [ruby-trunk - Bug #6619]
+
+Thu Jun 21 21:16:58 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_execarg_addopt): take a VALUE argument instead of
+ struct rb_execarg.
+ (rb_exec_arg_addopt): follow the rb_execarg_addopt change.
+ (check_exec_options_i): ditto.
+
+ * io.c (pipe_open): follow the rb_execarg_addopt change.
+
+ * internal.h (rb_execarg_addopt): follow the definition change.
+
+Thu Jun 21 20:34:19 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): take a VALUE argument instead of
+ struct rb_execarg.
+ (rb_check_exec_options): ditto.
+ (check_exec_options_i): ditto.
+
+Thu Jun 21 19:48:05 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_async_signal_safe): use rb_execarg_run_options
+ instead of rb_run_exec_options_err.
+ (rb_spawn_process): ditto.
+
+Thu Jun 21 19:02:43 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): take a VALUE argument instead of
+ struct rb_execarg.
+ (rb_execarg_init): follow the rb_exec_fillarg change.
+
+Thu Jun 21 18:36:43 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_execarg_init): take a VALUE argument instead of
+ struct rb_execarg.
+ (rb_execarg_new): follow the rb_execarg_init change.
+ (rb_exec_arg_init): ditto.
+
+ * internal.h (rb_execarg_init): follow the definition change.
+
+Thu Jun 21 17:20:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (new_args_tail_gen): fix GC problem of keyword rest
+ argument. the wrapped struct should be bound to the wrapping node
+ before assignment of child nodes, to get rid of the case the
+ children are referred by only the struct pointer which is not a
+ subject of GC. [ruby-core:45744]
+
+Thu Jun 21 07:06:52 2012 Koichi Sasada <ko1@atdot.net>
+
+ * error.c (err_append): rename err_append() to compile_err_append()
+ and move definition body. err_append() is used only by compiling.
+
+Thu Jun 21 06:21:54 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_execarg_fixup): take a VALUE argument instead of
+ struct rb_execarg.
+
+ * internal.h (rb_execarg_fixup): follow the definition change.
+
+ * io.c (pipe_open): follow rb_execarg_fixup change.
+
+ * ext/pty/pty.c (establishShell): ditto.
+
+Wed Jun 20 21:25:37 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (struct rb_execarg): add umask_given and umask_mask
+ fields.
+
+ * process.c (STATIC_ASSERT): removed.
+ (rb_execarg_addopt): follow the rb_execarg change.
+ (rb_execarg_run_options): ditto.
+
+Wed Jun 20 20:38:23 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (struct rb_execarg) moved and renamed from
+ struct rb_exec_arg in intern.h.
+
+ * include/ruby/intern.h (struct rb_exec_arg): refer Data object which
+ contains struct rb_execarg.
+
+ * process.c: use struct rb_execarg instead of struct rb_exec_arg
+ except functions declared in intern.h.
+ (rb_exec_arg_addopt): extract a pointer to struct rb_execarg from
+ struct rb_exec_arg.
+ (rb_exec_arg_init): ditto.
+ (rb_exec_arg_fixup): ditto.
+ (rb_run_exec_options_err): ditto.
+ (rb_run_exec_options): ditto.
+ (rb_exec_err): ditto.
+ (rb_exec): ditto.
+
+ * io.c: use struct rb_execarg instead of struct rb_exec_arg.
+
+ * ext/pty/pty.c: ditto.
+
+Wed Jun 20 19:13:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_execarg_new): declared.
+ (rb_execarg_get): ditto.
+
+ * process.c (mark_exec_arg): new function.
+ (free_exec_arg): ditto.
+ (memsize_exec_arg): ditto.
+ (exec_arg_data_type): defined.
+ (rb_execarg_new): new function.
+ (rb_execarg_get): ditto.
+ (rb_f_exec): use rb_execarg_new.
+ (rb_spawn_internal): ditto.
+ (rb_f_spawn): ditto.
+
+ * io.c (pipe_open_v): use rb_execarg_new.
+ (pipe_open_s): ditto.
+
+ * ext/pty/pty.c (establishShell): use rb_execarg_new.
+
+Wed Jun 20 16:36:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/setproctitle.c (environ): use (*_NSGetEnviron()) instead of
+ environ on Darwin for namespace cleanness, same as [ruby-core:00537].
+ [ruby-core:45615] [Bug #6576]
+
+Wed Jun 20 11:33:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_execarg_addopt): always make Fixnum, and ignore higher
+ bits in too large umask value.
+
+Wed Jun 20 11:24:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): deal with
+ sudden-death of workers.
+
+Mon Jun 18 20:34:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * time.c (init_leap_second_info): fix non-ANSI function declaration.
+
+Mon Jun 18 20:29:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ruby.c (rb_f_sub): use ansi style declaration.
+ * ruby.c (rb_f_gsub): ditto.
+ * ruby.c (rb_f_chomp): ditto.
+
+Mon Jun 18 20:26:23 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * random.c (rb_random_int32): get rid of "warning: constant 0x100000000
+ is so big it is long" warning.
+
+Mon Jun 18 20:07:23 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * dir.c (dir_initialize): get rid of "unused return: argc = rb_scan_args()"
+ warning.
+
+Mon Jun 18 19:31:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/missing.h: include math.h before checking INFINITY
+ and NAN. Otherwise, strange macro redefinition will occur.
+
+Mon Jun 18 19:12:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * array.c (ary_reverse): use ansi style declaration.
+
+Tue Jun 19 18:43:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/backward/rubysig.h: fix visibility. [Bug #6607]
+
+Tue Jun 19 17:51:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_execarg_run_options): do not call any methods in the
+ async-signal-safe function. mask has been checked with NUM2MODET()
+ already and converted with LONG2NUM().
+
+Tue Jun 19 11:59:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (Init_readline): don't set 0 to
+ rl_catch_signals and rl_catch_sigwinch. [Bug #5423]
+
+Tue Jun 19 11:52:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_s_get_special_prefixes): suppress
+ warning: uninitialized instance variable.
+
+Tue Jun 19 11:43:16 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_getc): fix editline compatibility
+ broken by r36123. [Bug #6601]
+
+Mon Jun 18 17:10:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_subpos): split from rb_str_substr. returns
+ adjusted position for substring.
+
+Mon Jun 18 10:42:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_getc): deal with ESC just followed
+ by ASCII as meta prefix in incremental search mode. based on the
+ patch from rctay (Tay Ray Chuan) at [ruby-core:45682]. [Bug #6601]
+
+Sun Jun 17 22:23:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (rb_file_directory_p): move documentation for Dir.exist? from
+ file.c so that the proper description will be shown instead of the
+ documentation of File.directory?. [ruby-core:45685]
+
+Sun Jun 17 16:21:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_win32.h (rb_thread_lock_t): make a union for USE_WIN32_MUTEX.
+ this internal is used only in thread_win32.c, but has to be complete
+ to define rb_thread_t.
+
+ * thread_win32.c (native_mutex_lock, native_mutex_destroy): fix for
+ USE_WIN32_MUTEX.
+
+ * thread_win32.c (native_cond_timedwait_ms): rename reserved pattern
+ name. user defined symbols should not start with __.
+
+Sat Jun 16 19:24:01 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: define date_sg_t.
+
+Sat Jun 16 18:46:57 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_tmx.h: offset in struct tmx_funcs is now int.
+ * ext/date/date_strftime.c: ditto.
+ * ext/date/date_core.c: ditto.
+
+Sat Jun 16 18:31:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (ruby_setup): set running state in the normal case before
+ popping a tag.
+
+Sat Jun 16 07:46:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): format workers
+ results in the parent.
+
+Sat Jun 16 07:12:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/runruby.rb (File.realpath): return real path of expanded path.
+ [Bug #6598]
+
+Sat Jun 16 07:12:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bootstraptest/runner.rb (main): ignore -j option for compatibility
+ with test/unit.
+
+Sat Jun 16 07:11:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#puke): modify only result and
+ drop useless reports, not override entirely.
+
+ * lib/test/unit/parallel.rb (Test::Unit::Worker#_run_suite): report
+ unformatted results. formatting messages is not a workers task.
+
+ * lib/test/unit/parallel.rb (Test::Unit::Worker#puke): store raw
+ results.
+
+Sat Jun 16 01:27:14 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: bumping psych to 1.3.3
+ * ext/psych/psych.gemspec: ditto
+
+Fri Jun 15 20:54:28 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * vm_backtrace.c (backtrace_collect): rename from backtreace_collect.
+
+Fri Jun 15 19:22:13 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: remove VM_FRAME_MAGIC_FINISH (finish frame type).
+ Before this commit:
+ `finish frame' was place holder which indicates that VM loop
+ needs to return function.
+ If a C method calls a Ruby methods (a method written by Ruby),
+ then VM loop will be (re-)invoked. When the Ruby method returns,
+ then also VM loop should be escaped. `finish frame' has only
+ one instruction `finish', which returns VM loop function.
+ VM loop function executes `finish' instruction, then VM loop
+ function returns itself.
+ With such mechanism, `leave' instruction (which returns one
+ frame from current scope) doesn't need to check that this `leave'
+ should also return from VM loop function.
+ Strictly, one branch can be removed from `leave' instruction.
+ Consideration:
+ However, pushing the `finish frame' needs costs because
+ it needs several memory accesses. The number of pushing
+ `finish frame' is greater than I had assumed. Of course,
+ pushing `finish frame' consumes additional control frame.
+ Moreover, recent processors has good branch prediction,
+ with which we can ignore such trivial checking.
+ After this commit:
+ Finally, I decide to remove `finish frame' and `finish'
+ instruction. Some parts of VM depend on `finish frame',
+ so the new frame flag VM_FRAME_FLAG_FINISH is introduced.
+ If this frame should escape from VM function loop, then
+ the result of VM_FRAME_TYPE_FINISH_P(cfp) is true.
+ `leave' instruction checks this flag every time.
+ I measured performance on it. However on my environments,
+ it improves some benchmarks and slows some benchmarks down.
+ Maybe it is because of C compiler optimization parameters.
+ I'll re-visit here if this cause problems.
+
+ * insns.def (leave, finish): remove finish instruction.
+
+ * vm.c, vm_eval.c, vm_exec.c, vm_backtrace.c, vm_dump.c:
+ apply above changes.
+
+Fri Jun 15 19:11:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#puke): always add skipped
+ results to the report for parallel test. [Bug #6595]
+
+Fri Jun 15 09:01:35 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * nacl/pepper_main.c: Removed an unnecessary and erroneous inclusion.
+
+Thu Jun 14 22:59:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_CPPOUTFILE): check if output is really sent to
+ specified file to tell if -o option works. [ruby-dev:45742]
+ [Bug#6591]
+
+ * configure.in (RUBY_CPPOUTFILE): check if output file is actually
+ created. [ruby-dev:45742] [Bug#6591]
+
+Thu Jun 14 22:10:50 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_exec_sh): don't strip leading spaces of the script.
+
+Thu Jun 14 15:54:02 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (rb_file_s_basename, rb_file_s_dirname): documentation fix.
+ File.basename and File.dirname support File::ALT_SEPARATOR.
+
+Thu Jun 14 11:10:10 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * nacl/pepper_main.c: Applies the new embedding API to pepper_ruby.
+
+Thu Jun 14 10:44:41 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * include/ruby/ruby.h: Grouped APIs for embedding CRuby interpreter.
+ (ruby_setup, ruby_compile_main_from_file,
+ ruby_compile_main_from_string, ruby_eval_main,
+ ruby_set_script_name): new APIs to embed CRuby.
+ (ruby_opaque_t) Opaque pointer to an internal data, to NODE or iseq
+ in particular.
+
+ * eval.c (ruby_setup): Similar to ruby_init but returns an error code
+ instead of exit(3) on error.
+ (ruby_eval_main): Similar to ruby_exec_node but returns the
+ evaluation result.
+ (ruby_eval_main_internal): renamed from ruby_exec_internal.
+
+ * ruby.c (toplevel_context): new helper function.
+ (PREPARE_EVAL_MAIN): moved.
+ (process_options): refactored with new functions.
+ (parse_and_compile_main) new helper function.
+ (ruby_compile_main_from_file, ruby_compile_main_from_string) new API
+ (ruby_set_script_name): new API.
+
+
+Thu Jun 14 10:39:48 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * eval.c: Add doxygen comments.
+
+ * ruby.c: ditto.
+
+ * thread_pthread.c: ditto
+
+ * version.c: ditto.
+
+ * vm_core.h: ditto.
+
+Thu Jun 14 10:16:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: revert r36071 and add NetBSD to blacklist of -ansi.
+
+Thu Jun 14 07:59:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (get_stack): Linux is the only OS which includes
+ the size of guard page into the stack size.
+
+Thu Jun 14 06:21:00 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/drb/drb.rb: Replace broken links to the English DRb book.
+ Patch by Zachary Scott. [ruby-trunk - Bug #6544]
+
+Thu Jun 14 06:17:47 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/observer.rb: Update broken link to the Programming Ruby book.
+ Patch by Zachary Scott. [ruby-trunk - Bug #6536]
+ * lib/drb/drb.rb: ditto.
+
+Thu Jun 14 05:23:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (PFETCH_READY): suppress Wunused-but-set-variable.
+
+ * regparse.c (is_onechar_cclass): restructured to clarify that c is
+ used iff found == 1.
+
+Thu Jun 14 02:54:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: use -fbuiltin with -ansi -std=iso9899:199409.
+ This prevents errors introduced by disabling builtin functions,
+ which is the sub-effect of -ansi/-std.
+ Now NetBSD can use -ansi -std=iso9899:199409.
+ Maybe mingw, cygwin and darwin can also.
+
+Thu Jun 14 02:53:30 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Makefile.in: don't remove macros. now name2ctype uses macros.
+
+ * tool/enc-unicode.rb: add comment why it uses Hash#index.
+
+ * enc/unicode/{name2ctype.kwd,name2ctype.src,name2ctype.h.blt}:
+ update to follow the current name2ctype.h.
+ FYI current Unicode version is 6.1.
+
+Thu Jun 14 00:16:59 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/net/http/responses.rb, lib/webrick/httpstatus.rb: Add HTTP
+ response codes added in RFCs 2817 and 4918. [ruby-core:45547]
+ [Feature #6569]
+
+ * lib/net/http/responses.rb: Rename Net::HTTPMultipleChoice to
+ Net::HTTPMultipleChoices, leaving the former as alias to the
+ latter for backward compatibility. [ruby-core:45547]
+ [Feature #6569]
+
+ * lib/net/http/responses.rb: Add comments about unused,
+ still-in-draft and private extension response codes.
+ [ruby-core:45547] [Feature #6569]
+
+Wed Jun 13 22:44:32 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/dl/test_func.rb (test_qsort1, test_qsort2): use TYPE_SIZE_T
+ for size_t variables. [ruby-dev:45733] [Bug #6584]
+
+Wed Jun 13 22:18:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: remove -ansi and -std options for lgamma_r() and
+ finite().
+
+Wed Jun 13 21:46:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: cygwin does not provide some declarations in strict
+ ANSI mode.
+
+Wed Jun 13 20:19:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_internal): move a variable declaration.
+
+Wed Jun 13 17:54:38 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * regparse.c (PFETCH_READY): this line was to suppress warning,
+ but did emit warnings if -Wuninitialized was set. Assigning
+ NULL instead if pfetch_prev should suffice the situation.
+
+Wed Jun 13 17:51:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: cygwin needs C99 for some stuff, e.g.,
+ pthread_attr_setstacksize, sched_yield.
+
+Wed Jun 13 17:50:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (.c.i): add warnflags to make the result consistent with
+ compilation.
+
+Wed Jun 13 15:12:07 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: On Windows platforms, system provided headers are
+ VC++ optimized. That is, C++ habits are often contaminated into
+ various headers. Most frequent situation is the use of //
+ comments. We bypass ANSI C mode for them. Otherwise extension
+ libs cannot include those headers.
+
+Wed Jun 13 13:39:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/win32.h: get rid of C99 style one line comments.
+
+Wed Jun 13 13:39:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_alias_internal): use strdup defined as macro.
+
+Wed Jun 13 10:20:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_exec_fillarg): get rid of SIZE_T_MAX which may need
+ more headers.
+
+ * process.c (rb_exec_fillarg): fix array element size. "continue" and
+ "readonly" exceeded the size.
+
+ * process.c (rb_exec_fillarg): use shell if the first word is reserved
+ or special built-in name.
+ http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
+
+ * process.c (rb_exec_fillarg): treat '=' only in the first word. if
+ the first word does not contain '=', it is the command name and
+ environment assignments cannot be anymore.
+
+Tue Jun 12 23:45:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/mkmf.rb: add dummy clean-static target to prevent errors for the
+ case real clean-static target doesn't exist.
+
+Tue Jun 12 22:49:42 2012 Naohisa Goto <ngotogenome@gmail.com>
+
+ * process.c (rb_exec_arg_fixup): fix compile error
+
+Tue Jun 12 21:40:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): treat '=' character as a meta
+ character to detect assignments preceding command name.
+
+Tue Jun 12 20:29:19 2012 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_exec_arg_init): deprecated.
+ (rb_exec_arg_addopt): ditto.
+ (rb_exec_arg_fixup): ditto.
+ (rb_run_exec_options): ditto.
+ (rb_run_exec_options_err): ditto.
+
+ * internal.h (rb_execarg_init): declared.
+ (rb_execarg_addopt): ditto.
+ (rb_execarg_fixup): ditto.
+ (rb_execarg_run_options): ditto.
+
+ * process.c: call rb_execarg_addopt, rb_execarg_fixup,
+ rb_execarg_run_options, rb_execarg_init.
+ (rb_execarg_addopt): renamed from rb_exec_arg_addopt.
+ (rb_exec_arg_addopt): stub to call rb_execarg_addopt.
+ (rb_execarg_init): renamed from rb_exec_arg_init.
+ (rb_exec_arg_init): stub to call rb_execarg_init.
+ (rb_execarg_fixup): renamed from rb_exec_arg_fixup.
+ (rb_exec_arg_fixup): stub to call rb_execarg_fixup.
+ (rb_execarg_run_options): renamed from rb_run_exec_options_err.
+ (rb_run_exec_options_err): stub to call rb_execarg_run_options.
+ (rb_run_exec_options): call rb_execarg_run_options.
+
+ * io.c: call rb_execarg_addopt, rb_execarg_fixup,
+ rb_execarg_run_options, rb_execarg_init.
+
+ * ext/pty/pty.c (establishShell): call rb_execarg_init and
+ rb_execarg_fixup.
+
+Tue Jun 12 18:39:59 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * configure.in: enable strict ANSI mode by default in case of GCC,
+ requested by _ko1.
+
+Tue Jun 12 06:40:23 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): detect '#' as a meta character.
+
+Mon Jun 11 22:15:44 2012 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_proc_exec_n): deprecated.
+ (rb_exec): ditto.
+ (rb_exec_err): ditto.
+ (rb_fork): ditto.
+ (rb_fork_err): ditto.
+
+Mon Jun 11 18:49:52 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: on checking libexecinfo, don't specify /use/local.
+ On FreeBSD people must specify --with-opt-dir or --with-execinfo-dir.
+
+Mon Jun 11 12:14:37 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: remove lfp (local frame pointer) and rename
+ dfp (dynamic frame pointer) to ep (environment pointer).
+ This change make VM `normal' (similar to other interpreters).
+ Before this commit:
+ Each frame has two env pointers lfp and dfp. lfp points
+ local environment which is method/class/toplevel frame.
+ lfp[0] is block pointer.
+ dfp is block local frame. dfp[0] points previous (parent)
+ environment pointer.
+ lfp == dfp when frame is method/class/toplevel.
+ You can get lfp from dfp by traversing previous environment
+ pointers.
+ After this commit:
+ Each frame has only `ep' to point respective environment.
+ If there is parent environment, then ep[0] points parent
+ environment (as dfp). If there are no more environment,
+ then ep[0] points block pointer (as lfp). We call such ep
+ as `LEP' (local EP). We add some macros to get LEP and to
+ detect LEP or not.
+ In short, we replace dfp and lfp with ep and LEP.
+ rb_block_t and rb_binding_t member `lfp' and `dfp' are removed
+ and member `ep' is added.
+ rename rb_thread_t's member `local_lfp' and `local_svar' to
+ `root_lep' and `root_svar'.
+ (VM_EP_PREV_EP(ep)): get previous environment pointer. This macro
+ assume that ep is not LEP.
+ (VM_EP_BLOCK_PTR(ep)): get block pointer. This macro assume
+ that ep is LEP.
+ (VM_EP_LEP_P(ep)): detect ep is LEP or not.
+ (VM_ENVVAL_BLOCK_PTR(ptr)): make block pointer.
+ (VM_ENVVAL_BLOCK_PTR_P(v)): detect v is block pointer.
+ (VM_ENVVAL_PREV_EP_PTR(ptr)): make prev environment pointer.
+ (VM_ENVVAL_PREV_EP_PTR_P(v)): detect v is prev env pointer.
+
+ * vm.c: apply above changes.
+ (VM_EP_LEP(ep)): get LEP.
+ (VM_CF_LEP(cfp)): get LEP of cfp->ep.
+ (VM_CF_PREV_EP(cfp)): utility function VM_EP_PREV_EP(cfp->ep).
+ (VM_CF_BLOCK_PTR(cfp)): utility function VM_EP_BLOCK_PTR(cfp->ep).
+
+ * vm.c, vm_eval.c, vm_insnhelper.c, vm_insnhelper.h, insns.def:
+ apply above changes.
+
+ * cont.c: ditto.
+
+ * eval.c, eval_intern.h: ditto.
+
+ * proc.c: ditto.
+
+ * thread.c: ditto.
+
+ * vm_dump.c: ditto.
+
+ * vm_exec.h: fix function name (on vm debug mode).
+
+Mon Jun 11 11:52:18 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * compile.c (iseq_set_sequence): nonstatic initializer of an
+ aggregate type is a C99ism.
+
+ * compile.c (enum compile_array_type_t): comma at the end of enum
+ list is a C99ism.
+
+ * vm_backtrace.c (enum LOCATION_TYPE): ditto.
+
+Mon Jun 11 06:31:33 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_proc_exec_n): revert the function removed at r35889.
+
+Mon Jun 11 06:20:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): assign return
+ value to the variable err.
+
+Mon Jun 11 06:17:06 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (native_cond_initialize): fix typo in r36022.
+ this cause a failure on FreeBSD 8.2 amd64.
+ http://fbsd.rubyci.org/~chkbuild/ruby-trunk/log/20120610T130201Z.diff.html.gz
+
+Mon Jun 11 05:21:57 2012 Koichi Sasada <ko1@atdot.net>
+
+ * .gdbinit (SDR): add SDR function. It's only for VM debugging.
+
+Sun Jun 10 21:50:45 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * nacl/nacl_config.rb: Fixed for 32bit hosts.
+
+Sun Jun 10 20:23:14 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ Fixes threading on NativeClient.
+
+ * thread_pthread.c (timer_thread_sleep): Extracted out a function from
+ thread_timer(). Added an alternative implementation for platforms
+ that lacks select(2) or pipe(2).
+ (rb_thread_create_timer_thread, native_cond_initialize,
+ native_cond_destroy): Replaced wrong HAVE_XXX checks.
+
+ * configure.in (pthread_attr_init): New check.
+
+Sun Jun 10 21:30:11 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_without_timer_thread): renamed from rb_exec_err.
+ (rb_exec_err): new stub function to call
+ rb_exec_without_timer_thread.
+ (rb_f_exec): call rb_exec_without_timer_thread.
+ (rb_exec): call rb_exec_without_timer_thread.
+
+Sun Jun 10 21:13:10 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork): call rb_fork_internal instead of rb_fork_err.
+
+Sun Jun 10 20:55:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_ruby): call rb_fork_internal directly.
+
+Sun Jun 10 20:19:40 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_ruby): new function.
+ (rb_f_fork): use rb_fork_ruby instead of rb_fork.
+ (rb_daemon): ditto.
+
+ * io.c (pipe_open): use rb_fork_ruby instead of rb_fork.
+
+ * internal.h (rb_fork_ruby): declared.
+
+Sun Jun 10 18:58:16 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/net/http/response.rb: Remove a duplicated rdoc and leave a
+ pointer.
+
+ * lib/net/http/responses.rb: Add RFC numbers to base on.
+
+Sun Jun 10 18:31:42 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * configure.in (RUBY_NACL): Warns if $PATH does not contain the path
+ to NativeClient SDK. PATH variable redefinition in GNUmakefile does
+ not work for GNU make 3.81.
+
+Sun Jun 10 17:54:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.h (IS_STACK_DIR_UPPER): utility macro.
+
+ * thread_pthread.c (get_stack): seems stack size does not include
+ guard size on Mac OS X.
+
+ * thread_pthread.c (ruby_init_stack): adjust stack size for offset of
+ addr from the bottom.
+
+Sun Jun 10 15:49:47 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (retry_fork): call after_fork except in a child process.
+ (rb_fork_internal): restrict after_fork call condition.
+
+Sun Jun 10 14:19:33 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: NetBSD 6 adds libexecinfo but it only works on amd64.
+ http://www.mail-archive.com/source-changes-full@netbsd.org/msg38729.html
+
+Sun Jun 10 12:43:23 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_f_exec): call rb_exec_async_signal_safe except on
+ Mac OS X. cf. the comment in before_exec_non_async_signal_safe.
+
+Sun Jun 10 12:15:18 2012 Tanaka Akira <akr@fsij.org>
+
+ * io.c (popen_exec): don't call rb_thread_atfork_before_exec. use
+ rb_exec_async_signal_safe instead of rb_exec_err.
+ (pipe_open): use rb_fork_async_signal_safe instead of rb_fork_err.
+
+Sun Jun 10 11:44:57 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_internal): call after_fork only unless
+ chfunc_is_async_signal_safe.
+
+Sun Jun 10 11:33:01 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_ec.c
+ test/openssl/test_pkey_ec.rb: Add support for EC_POINT_mul.
+ Patch provided by Sambasiva Suda. Thanks!
+ [ruby-core:44408][ruby-trunk - Feature #6310]
+
+Sun Jun 10 10:48:15 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * lib/openssl/ssl.rb: Use a simple random number to generate the
+ session id. MD5, as was used before, causes problems when
+ using a FIPS version of OpenSSL. Issue was found by Jared
+ Jennings, thank you!
+ [ruby-trunk - Bug #6137]
+
+Sun Jun 10 10:27:34 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: Add note about the new private key export behavior.
+
+Sun Jun 10 10:24:51 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_async_signal_safe): exported.
+
+ * ext/pty/extconf.rb: modify $INCFLAGS to include internal.h
+
+ * ext/pty/pty.c: include internal.h.
+ (chfunc): don't call rb_thread_atfork_before_exec. use
+ rb_exec_async_signal_safe instead of rb_f_exec.
+ (establishShell): set up earg. use rb_fork_async_signal_safe
+ instead of rb_fork_err.
+
+ * internal.h (rb_exec_async_signal_safe): declared.
+ (rb_fork_async_signal_safe): declared.
+
+Sun Jun 10 10:21:37 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl.c
+ ext/openssl/ossl_pkey_rsa.c
+ ext/openssl/ossl_pkey_dsa.c
+ ext/openssl/ossl_pkey_ec.c: Forbid export passwords that are less
+ than four characters long, as OpenSSL itself does not allow this.
+ Issue found by Eric Hodel.
+ * ext/openssl/ossl_pkey_ec.c: Add export as an alias of to_pem,
+ following the PKey interface contract.
+ * test/openssl/test_pkey_dsa.rb
+ test/openssl/test_pkey_rsa.rb
+ test/openssl/test_pkey_ec.rb: Add tests that assert correct
+ behaviour when dealing with passwords that are less than four
+ characters long.
+ [ruby-core: 42281][ruby-trunk - Bug #5951]
+
+Sun Jun 10 10:14:26 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_f_exec): use rb_exec_arg_prepare.
+
+Sun Jun 10 06:43:51 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: split after_exec into async-signal-safe part and rest.
+ (after_exec_async_signal_safe): extracted from after_exec.
+ (after_exec_non_async_signal_safe): ditto.
+ (after_exec): call them.
+ (rb_exec_async_signal_safe): call after_exec_async_signal_safe.
+ (rb_exec_err): call after_exec_non_async_signal_safe instead of
+ after_exec.
+
+Sun Jun 10 06:21:10 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: document new features of Ruby OpenSSL.
+
+Sun Jun 10 03:09:41 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl.c: Fix error in example. Patch by David Albert.
+
+ Add/extend existing documentation. Examples now also cover RSA
+ signatures and PBKDF2.
+ [ruby-core: 45154][ruby-trunk - Bug #6475]
+
+
+Sun Jun 10 01:41:45 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Introduce SSLContext#renegotiation_cb and
+ remove SSLContext#disable_client_renegotiation and related
+ functionality introduced in r35797. The new callback approach
+ gives clients maximum flexibility to decide on their own what to
+ do on renegotiation attempts.
+ Add documentation for SSL module and SSLError.
+ * test/openssl/test_ssl.rb: Add a test for
+ SSLContext#renegotiation_cb.
+
+Sun Jun 10 01:37:18 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_internal): initialize exc.
+
+Sun Jun 10 00:19:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: don't use non async-signal-safe functions in a child
+ process before exec, for invoking a command.
+ (rb_exec_atfork): call rb_exec_async_signal_safe only.
+ (retry_fork): take chfunc_is_async_signal_safe argument. call
+ before_fork and after_fork only unless chfunc_is_async_signal_safe.
+ (send_child_error): take chfunc_is_async_signal_safe argument.
+ send an exception only unless chfunc_is_async_signal_safe.
+ (recv_child_error): take chfunc_is_async_signal_safe argument.
+ receive an exception only unless chfunc_is_async_signal_safe.
+ (rb_fork_internal): renamed from rb_fork_err and take
+ chfunc_is_async_signal_safe argument.
+ use rb_protect only unless chfunc_is_async_signal_safe.
+ (rb_fork_err): call rb_fork_internal with false as
+ chfunc_is_async_signal_safe.
+ (rb_fork_async_signal_safe): call rb_fork_internal with true as
+ chfunc_is_async_signal_safe.
+ (rb_spawn_process): call rb_fork_async_signal_safe instead of
+ rb_fork_err.
+
+Sat Jun 9 23:57:03 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_err): rewrite a complex "if" statement.
+
+Sat Jun 9 23:44:29 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (before_exec_async_signal_safe): extracted from
+ before_exec.
+ (before_exec_non_async_signal_safe): ditto.
+ (before_exec): call before_exec_async_signal_safe and
+ before_exec_non_async_signal_safe.
+ (rb_exec_async_signal_safe): call before_exec_async_signal_safe.
+ (rb_exec_err): call before_exec_non_async_signal_safe instead of
+ before_exec.
+
+Sat Jun 9 23:36:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_load, insn_operand_intern, rb_iseq_disasm)
+ (rb_iseq_parameters): use rb_id2str() instead of rb_id2name() to
+ keep encoding.
+
+ * string.c (rb_str_symname_p): new function that checks if the string
+ is valid as a symbol name. split from sym_inspect().
+
+Sat Jun 9 22:27:05 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (retry_fork): rewrite a complex "for" statement by
+ simple statements.
+
+Sat Jun 9 21:50:04 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (retry_fork): extracted from rb_fork_err.
+ (send_child_error): ditto.
+ (recv_child_error): ditto.
+
+Sat Jun 9 17:21:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_load): type is a symbol, and invalid as ID in common.
+
+Sat Jun 9 10:57:14 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_async_signal_safe): extracted from rb_exec_err.
+
+Sat Jun 9 09:31:07 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: simplified because close_others option is always
+ enabled by default.
+ (rb_f_exec): don't need to set the option.
+ (rb_exec_arg_prepare): don't need to set the option. don't need
+ default_close_others argument.
+ (rb_spawn_internal): don't need to give default_close_others
+ argument for rb_exec_arg_prepare. don't need default_close_others
+ argument.
+ (rb_spawn_err): don't need to give default_close_others
+ argument for rb_spawn_internal.
+ (rb_spawn): don't need to give default_close_others
+ argument for rb_spawn_internal.
+ (rb_f_system): don't need to give default_close_others argument for
+ rb_spawn_internal.
+ (rb_f_spawn): don't need to give default_close_others argument for
+ rb_exec_arg_prepare.
+
+Sat Jun 9 09:00:58 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_proc_exec): call before_exec() here addition to
+ rb_exec_err.
+
+Sat Jun 9 08:30:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (ruby_init_stack): use stack info if possible.
+
+Sat Jun 9 08:21:32 2012 Eric Hodel <drbrain@segment7.net>
+
+ * README.EXT (prepare extconf.rb): Added note to see MakeMakefile for
+ documentation of extconf.rb functions. Patch by Zachary Scott.
+ [ruby-trunk - Feature #6522]
+ * README.EXT (Appendix C): Removed in favor of MakeMakefile.
+ Patch by Zachary Scott.
+ * lib/mkmf.rb: Merged documentation from README.EXT Appendix C. Patch
+ by Zachary Scott.
+
+Sat Jun 9 08:16:47 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc: Completed wording in the description of the =~ operator.
+ [ruby-trunk - Bug #6529]
+
+Sat Jun 9 08:09:38 2012 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (rb_str_start_with): Removed "p" from start_with? examples
+ to match other String method examples. [ruby-trunk - Bug #6553]
+ * string.c (rb_str_end_with): Updated end_with? to use code markup
+ instead of italic.
+
+Sat Jun 9 07:56:03 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/benchmark.rb: Updated formatting of Benchmark documentation for
+ consistency. [ruby-trunk - Bug #6533]
+
+Sat Jun 9 07:46:26 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/delegate.rb: Added documentation for Delegator#!. Patch by
+ Zachary Scott. [ruby-trunk - Feature #6534]
+
+Sat Jun 9 07:39:50 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http/responses.rb: Add RFC 6585 response codes. Patch by
+ Sangil Jung. [ruby-trunk - Feature #6480]
+ * lib/net/http/response.rb: ditto
+ * lib/net/http.rb: ditto
+ * lib/webrick/httpstatus.rb: ditto
+
+Sat Jun 9 01:24:28 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_err): before_exec() call moved from proc_exec_cmd
+ and proc_exec_sh.
+ (rb_proc_exec): ditto.
+
+Sat Jun 9 01:11:07 2012 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_exec_arg_init): declaration changed to
+ return a value.
+
+ * process.c (rb_exec_arg_init): return a value.
+
+Fri Jun 8 23:44:14 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: don't check the availability of FD_CLOEXEC. It should
+ be available if fork() is available.
+
+ * io.c: ditto.
+
+Fri Jun 8 22:39:32 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_err): revert r35955. The condition needs !chfunc
+ to close ep[0] and ep[1]. The catched exception is re-raised
+ immediately after that if status is not NULL.
+
+Fri Jun 8 19:43:33 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_err): after_exec() call moved from proc_exec_cmd
+ and proc_exec_sh.
+ (rb_proc_exec): ditto.
+
+Fri Jun 8 19:00:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (ARGV_COUNT): unused macro removed.
+ (ARGV_SIZE): ditto.
+ (ALLOC_ARGV): ditto.
+ (ALLOC_ARGV_WITH_STR): ditto.
+
+Fri Jun 8 16:19:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/runner.rb (src_testdir): expand real path so that
+ TestGem#test_self_find_files does not fail by aliased load path when
+ srcdir contains a symbolic link.
+
+ * tool/runruby.rb (srcdir): ditto.
+
+Fri Jun 8 12:04:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork_err): error state in the child process is prior
+ to exceptions in proc_syswait().
+
+ * process.c (rb_fork_err): determine status on errors.
+
+ * ext/pty/pty.c (establishShell): reraise exception if something
+ raised during sleep.
+
+ * ext/pty/pty.c (establishShell): now needs status to protect from
+ exceptions in rb_fork_err().
+
+Thu Jun 7 22:13:05 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_fork_err): Fix the condition to use rb_protect.
+
+Thu Jun 7 20:29:12 2012 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h: rb_exec_arg and related stuff moved back from
+ internal.h
+
+Thu Jun 7 15:53:03 2012 Koichi Sasada <ko1@atdot.net>
+
+ * .gdbinit: add function `trace_machine_instructions' to trace
+ in native machine assemble.
+ See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/MachineInstructionsTraceWithGDB
+ for more details.
+
+Wed Jun 6 21:31:21 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_exec_cmd) renamed from proc_exec_v.
+ (proc_exec_sh): renamed from rb_proc_exec_e.
+ (proc_spawn_cmd_internal): renamed from proc_spawn_v.
+ (proc_spawn_cmd): renamed from proc_spawn_n.
+ (proc_spawn_sh): renamed from proc_spawn.
+
+Wed Jun 6 21:18:47 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (try_with_sh): please take care of the macro defined by
+ you.
+
+Wed Jun 6 20:45:08 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_exec_v): don't call dln_find_exe_r here because it
+ is not async-signal-safe and proc_exec_v is called in a child
+ process.
+ command_abspath field of rb_exec_arg.
+ (rb_exec_fillarg): call dln_find_exe_r and set command_abspath.
+ (rb_exec_err): Give the absolute path of the invoking command for
+ proc_exec_v, instead of the command name.
+
+ * internal.h: add command_abspath field for rb_exec_arg.
+
+Wed Jun 6 20:08:01 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (try_with_sh): take envp argument.
+ (exec_with_sh): ditto. use it for execve.
+ (proc_exec_v): provide envp for try_with_sh.
+
+Wed Jun 6 13:25:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_wrap_io_handle): new API.
+ this API wraps an I/O handle (HANDLE or SOCKET) and returns fd.
+ the second parameter should be combination of O_*, for example,
+ O_RDWR | O_BINARY | O_NOINHERIT.
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_unwrap_io_handle): new
+ API. this API unwraps an I/O handle and close the fd (not closes
+ the handle itself).
+
+ [Feature #4906] [ruby-core:37227]
+
+Wed Jun 6 13:18:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_close): of course, console handle is not socket.
+
+Wed Jun 6 12:37:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_run_exec_options_err): allocate a temporary buffer for
+ run_exec_dup2() for restoring fds on non-fork environments.
+
+Wed Jun 6 09:45:21 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/dl/test_c_{struct_entry,union_entity}.rb: sorry, typos.
+
+Wed Jun 6 05:27:54 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): check use_shell field before accessing
+ a union field.
+
+Wed Jun 6 04:58:44 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_spawn_process): prog variable is not used for Unix.
+
+Wed Jun 6 00:20:37 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_exec_arg_init): change return type to void.
+
+ * process.c (rb_exec_arg_init): don't return a value.
+ (rb_exec_arg_prepare): ditto.
+ (rb_spawn_process): don't take the prog argument. extract the
+ information from earg.
+ (rb_spawn_internal): follow rb_spawn_process change.
+ (rb_f_spawn): ditto.
+
+ * io.c (pipe_open): don't take the prog argument. extract the
+ information from eargp.
+ (pipe_open_v): follow pipe_open change.
+ (pipe_open_s): ditto.
+
+Tue Jun 5 23:51:33 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_exec_arg): use union to represent command invocation
+ with/without shell.
+
+ * process.c: follow the rb_exec_arg change.
+
+ * io.c (pipe_open): ditto.
+
+Tue Jun 5 22:28:46 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h: rb_exec_arg and related stuff moved from intern.h
+
+ * include/ruby/intern.h (rb_proc_exec_n): removed.
+
+Tue Jun 5 21:57:22 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_arg_fixup): allocate a temporary buffer for
+ run_exec_dup2 here because it should be async-signal-safe.
+ (run_exec_dup2): use the temporary buffer.
+ (run_exec_dup2_tmpbuf_size): new function.
+
+ * include/ruby/intern.h (rb_exec_arg): add dup2_tmpbuf field.
+
+Tue Jun 5 20:13:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_obj_init_copy): should check if trusted too.
+
+Tue Jun 5 19:59:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (strtok): declaration removed because it is not used.
+
+Tue Jun 5 19:33:51 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (proc_spawn): don't detect simple command line here
+ because rb_exec_fillarg already did.
+
+Tue Jun 5 19:21:10 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): bail out a loop eagerly.
+
+Tue Jun 5 19:15:14 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c: add comments about async-signal-safe.
+
+ * io.c: ditto.
+
+Tue Jun 5 09:25:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * io.c: Edited documentation for IO and File open and new and
+ Kernel#open for consistency and clarity.
+
+Mon Jun 4 21:53:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_sysinit): let the system not display the
+ critical-error-handler message box and the Windows Error Reporting
+ dialog. [ruby-core:45389] [Bug #6535]
+
+Mon Jun 4 19:36:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_fillarg): allocate one more element before
+ beginning in argv_str for try_with_sh.
+
+ * internal.h (ARGVSTR2ARGC): adjust for the above change.
+ (ARGVSTR2ARGV): ditto.
+
+Mon Jun 4 19:17:06 2012 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (ARGVSTR2ARGC): defined.
+ (ARGVSTR2ARGV): defined.
+
+ * process.c (proc_exec_v): use ARGVSTR2ARGV.
+ (rb_spawn_process): use ARGVSTR2ARGC and ARGVSTR2ARGV.
+
+ * io.c (pipe_open): use ARGVSTR2ARGV.
+
+Mon Jun 4 16:13:00 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.h: remove magical code "lfp[0] & 0x02".
+ Current VM doesn't use this bit.
+
+ * vm_core.h (RUBY_VM_GET_BLOCK_PTR): added.
+
+ * eval.c (rb_block_given_p): use RUBY_VM_GET_BLOCK_PTR().
+
+ * vm_eval.c (rb_f_block_given_p): ditto.
+
+Mon Jun 4 15:39:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (constat_apply): apply VT100 functions.
+ [ruby-core:44958] [Feature #6418]
+
+ * win32/win32.c (constat_parse): parse some VT100 escape sequence.
+
+Mon Jun 4 14:06:12 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_exec_err): should preserve errno.
+
+Mon Jun 4 13:10:11 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/dl/test_c_{struct_entry,union_entity}.rb: broken require.
+
+Mon Jun 4 12:01:21 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_backtrace.rb: fix test.
+ Windows path includes `:' character.
+
+Mon Jun 4 11:42:39 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h (rb_location_t): fix type and field name.
+ (1) rename rb_location_t to rb_iseq_location_t.
+ (2) rename field names of rb_iseq_location_t to adjust
+ RubyVM::Backtrace::Location methods.
+ (2-1) filename -> path
+ (2-2) filepath -> absolute_path
+ (2-3) basename -> base_label
+ (2-4) name -> label
+ (3) rename filed name rb_iseq_location_t#line_no to
+ rb_iseq_location_t#first_lineno to clear purpose of this field.
+ (4) The field names rb_binding_t#(filename|line_no) are also renamed
+ to rb_binding_t#(path|first_lineno).
+
+ * compile.c: apply above changes.
+
+ * iseq.c: ditto.
+
+ * proc.c: ditto.
+
+ * vm*.c: ditto.
+
+Mon Jun 4 11:40:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): also load TYPE_USRMARSHAL, TYPE_DATA using
+ compatible loader.
+
+Mon Jun 4 11:33:42 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * process.c (rb_run_exec_options_err): restore save_env() call for
+ non-fork environments.
+
+ * process.c (rb_exec_err): restore environments after the failure of
+ exec to fix [ruby-core:44093] [Bug #6249] on non-fork environments
+
+Mon Jun 4 10:42:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (pipe_open): follow up changes in r35889.
+
+ * process.c (proc_spawn_n): now uses char ** instead of VALUE *.
+
+ * process.c (rb_spawn_process): prog is now VALUE of String, not char *.
+
+Mon Jun 4 06:12:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_object0): remove old warning for _alloc.
+
+Mon Jun 4 04:24:06 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * marshal.c: experimental test aborted.
+ * complex.c: ditto.
+ * rational.c: ditto.
+ * include/ruby/intern.h: ditto.
+
+Mon Jun 4 00:45:18 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_spawn_process): fix for Windows. not tested.
+
+Mon Jun 4 00:11:51 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_proc_exec_e): don't use ISSPACE(). \f, \r and \v
+ are not word separator in Bourne shell.
+
+Sun Jun 3 23:47:30 2012 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_exec_arg): remove argc and argv fields.
+ add use_shell, argv_str and argv_buf fields.
+
+ * process.c (rb_proc_exec_e): don't split shell command line arguments
+ here to avoid memory allocation in a child process.
+ (rb_exec_fillarg): split shell command line arguments here.
+ (proc_exec_v): takes argv_str argument instead of argv.
+ (rb_proc_exec_ne): removed.
+ (rb_proc_exec_n): removed.
+ (rb_run_exec_options_err): don't initialize the removed fields.
+ (rb_exec_err): don't initialize the removed fields.
+ call proc_exec_v directly instead of rb_proc_exec_ne.
+ (rb_spawn_process): use use_shell field.
+
+Sun Jun 3 21:53:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * GPL: update text of GPLv2. [ruby-core:44488] [Bug #6328]
+ http://www.gnu.org/licenses/gpl-2.0.txt
+
+Sun Jun 3 21:22:52 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_exec_getargs): remove rb_exec_arg argument.
+
+Sun Jun 3 21:14:26 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * marshal.c: calls directly rb_{Complex,Rational}_marshal_load().
+ But now disabled. [experimental]
+ * complex.c: followed the above.
+ * rational.c: ditto.
+ * include/ruby/intern.h: ditto.
+
+Sun Jun 3 21:18:17 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_check_argv): use rb_str_new_frozen instead of
+ rb_str_new4.
+
+Sun Jun 3 20:10:52 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_proc_exec_e): extended version of rb_proc_exec() to
+ call execle().
+ (rb_proc_exec): use rb_proc_exec_e().
+ (rb_exec_err): use rb_proc_exec_e().
+
+Sun Jun 3 19:47:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (vm_living_thread_num): suppress a warning.
+
+Sun Jun 3 17:23:52 2012 Tanaka Akira <akr@fsij.org>
+
+ * use execve() to preserve environment variables when exec method is
+ failed. [ruby-core:44093] [ruby-trunk - Bug #6249]
+
+ * include/ruby/intern.h (rb_exec_arg): add envp_str and envp_buf field
+ to store envp of execve().
+
+ * process.c (proc_exec_v): takes envp_str as an argument and use it
+ for execve().
+ (rb_proc_exec_ne): extended version of rb_proc_exec_n().
+ (rb_proc_exec_n): use rb_proc_exec_ne().
+ (rb_proc_exec): follow proc_exec_v() change.
+ (fill_envp_buf_i): new function.
+ (rb_exec_arg_fixup): set up envp_str and envp_buf.
+ (save_env_i): removed.
+ (save_env): removed.
+ (rb_run_exec_options_err): don't modify environment variables.
+ (rb_exec_err): use rb_proc_exec_ne().
+
+Sun Jun 3 16:33:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c: revert r35879 "now marshal_{load|dump} are external."
+
+ * complex.c (nucomp_marshal__{dump,load}): should use rb_marshal_{dump,load}.
+
+ * rational.c (nurat_marshal__{dump,load}): ditto.
+
+Sun Jun 3 14:13:58 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: checks whether the object is frozen or not.
+
+Sun Jun 3 14:00:51 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c: wrote Complex#_dump and Complex::load. But now
+ disabled (due to compatibility) [experimental].
+
+ * rational.c: wrote Rational#_dump and Rational::load. ditto.
+
+Sun Jun 3 10:23:32 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_marshal_load): [ruby-core:45394]
+ * rational.c (nurat_marshal_load): ditto.
+
+Sun Jun 3 03:15:46 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (onig_number_of_names): suppress a warning.
+
+Sun Jun 3 01:36:52 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: change names.
+ (1) Class name: RubyVM::FrameInfo -> RubyVM::Backtrace::Location.
+ (2) Method name: RubyVM::FrameInfo.caller ->
+ Kernel.caller_locations.
+ (3) Instance methods of
+ RubyVM::FrameInfo (RubyVM::Backtrace::Location)
+ (3-1) name -> label
+ (3-2) basename -> base_label (basename is confusing with
+ File.basename)
+ (3-3) line_no -> lineno (We have already similar name
+ File#lineno, commented by kou [ruby-dev:45686]).
+ (3-4) filename -> path.
+ (3-5) filepath -> absolute_path.
+ (3-5) iseq -> removed (we will make other APIs to access iseq
+ and other information of frame for debugging).
+
+ * test/ruby/test_backtrace.rb: apply above changes.
+ And apply comment from kou [ruby-dev:45686].
+
+Sun Jun 3 00:49:11 2012 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: fix to build vm_backtrace.c only itself (vm_backtrace.c
+ is no longer included from vm.c). I hope this separation reduce
+ compile time of vm.c.
+
+ * internal.h: ditto.
+
+ * vm.c, vm_core.h, vm_dump.c, vm_eval.c: ditto.
+
+ * vm_eval.c: some functions (callee, etc) moved to vm_backtrace.c.
+
+Sun Jun 3 00:20:53 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_backtrace.c: added. Separate backtrace related functions to
+ this file.
+
+ * vm.c, common.mk: ditto.
+
+Sat Jun 2 18:09:02 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/ipaddr.rb: Inhibit zero-filled octets in an IPv4 address in
+ all platforms. [ruby-dev:45671]
+
+ * lib/ipaddr.rb: Allow the x:x:x:x:x:x:d.d.d.d form not limited to
+ IPv4 mapped/compatible addresses. This change also makes it
+ possible for the parser to understand IPv4 mapped and compatible
+ IPv6 addresses in non-compressed form.
+
+ * lib/ipaddr.rb: Stop exposing IPSocket.valid*? methods which were
+ only usable on non-IPv6-ready platforms.
+
+Sat Jun 2 16:59:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_enc_cr_str_buf_cat): don't reset coderange as unknown.
+ the condition 'ptr_a8 && str_cr != ENC_CODERANGE_7BIT' means not
+ unknown, str is also ASCII-8BIT because str_encindex == ptr_encindex,
+ and nont (str_cr == ENC_CODERANGE_UNKNOWN) and
+ str_cr != ENC_CODERANGE_7BIT means str_cr is valid because ASCII-8BIT
+ can't be broken. [ruby-dev:45688] [Bug #6509]
+
+Sat Jun 2 07:04:48 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc (Performance): Replaced incorrect example of reducing
+ backtracking through anchoring with reduced backtracking through a
+ range. [ruby-trunk - Bug #6525]
+
+Sat Jun 2 06:34:15 2012 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc (Performance): Removed useless sample output from final
+ performance example and switched from #match to #=~ for consistency.
+ [ruby-trunk - Bug #6524]
+
+Fri Jun 1 09:30:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (class_or_module_required): extract check for class or
+ module.
+
+Fri Jun 1 08:50:47 2012 Eric Hodel <drbrain@segment7.net>
+
+ * array.c: Updated Array documentation formatting. Patch by Zachary
+ Scott. [ruby-trunk - Feature #6517]
+
+Fri Jun 1 06:57:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl/lib/dl/struct.rb (DL::CStructEntity#set_ctypes): Refactored
+ #set_ctypes using newer ruby features to simplify its implementation.
+ * test/dl/test_c_struct_entry.rb (class DL): Test to verify
+ refactoring.
+
+Fri Jun 1 06:40:25 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (Init_Object): Restored Kernel documentation based on
+ Pickaxe book documentation. Patch by Zachary Scott.
+ [ruby-trunk - Feature #6521]
+
+Fri Jun 1 06:29:42 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (rb_equal): Let Object be a link in #=== documentation.
+ Patch by Zachary Scott. [ruby-trunk - Feature #6518]
+
+Thu May 31 09:27:06 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl/lib/dl/struct.rb (DL::CStructEntity::size): Refactored ::size
+ to remove unused variables and simplify using newer ruby features.
+ * test/dl/test_c_struct_entry.rb: Test to validate refactoring
+
+Thu May 31 08:40:34 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl/lib/dl/struct.rb (DL::CUnionEntity#set_ctypes): Refactored
+ #set_types to reuse DL::CUnionEntity::size
+ * test/dl/test_c_union_entity.rb: Added test
+
+Thu May 31 08:20:14 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl/lib/dl/struct.rb (DL::CUnionEntity::size): Fixed ::size to
+ return the size of the union.
+ * test/dl/test_c_union_entity.rb: Test for DL::CUnionEntity::size
+
+Thu May 31 07:45:43 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl: Added documentation. Patch by Vincent Batts.
+ [ruby-trunk - Bug #6496]
+
+Wed May 30 16:30:00 2012 Kenta Murata <mrkn@cookpad.com>
+
+ * ext/bigdecimal/lib/bigdecimal/jacobian.rb,
+ ext/bigdecimal/lib/bigdecimal/newton.rb:
+ fix documentation comments.
+ Patch by alperakgun from github.com/shyouhei/ruby/pull/8
+
+Wed May 30 16:20:00 2012 Kenta Murata <mrkn@cookpad.com>
+
+ * ext/bigdecimal/lib/bigdecimal/jacobian.rb (Jacobian#dfdxi):
+ fix jacobian to get stuck in an infinite loop when a solution is not
+ found due to forget to increment nRetry counter.
+ Patch by alperakgun from github.com/shyouhei/ruby/pull/8
+
+Wed May 30 10:58:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (utc_offset_arg): utc offset can be precision in seconds.
+ e.g. old Europe/Lisbon (c.f. [ruby-dev:40066])
+
+Wed May 30 06:20:29 2012 Eric Hodel <drbrain@segment7.net>
+
+ * error.c (exc_set_backtrace): Updated documentation to indicate
+ set_backtrace allows a string as well as an array of strings.
+ [ruby-trunk - Bug #6501]
+
+Tue May 29 17:28:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime_with_timespec): support GNU extension triple
+ colons modifier. [EXPERIMENTAL]
+
+ * strftime.c (rb_strftime_with_timespec): check conversion with locale
+ modifier.
+
+ * strftime.c (rb_strftime_with_timespec): colons are valid only for
+ 'z' and must come just before it.
+
+Mon May 28 16:56:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_prepare_run): StatusLineOutput
+ needs job_status to be :replace.
+
+Mon May 28 13:35:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (do-install-*): fix dependencies. based on the patch by
+ nagachika at [ruby-dev:45683]. [Bug #6506]
+
+Mon May 28 12:03:04 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (obj_free): doesn't free a method table if it doesn't
+ exist. [ruby-dev:44436]
+ * test/ruby/test_gc.rb (class TestGc): added the test case for
+ this issue.
+
+Sun May 27 23:37:48 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm1_lvar_init.rb: added.
+ This benchmark measures a initialize time of non-used variable.
+
+ * benchmark/bm_vm1_lvar_set.rb: added.
+ This benchmark measures a local variables initialization time.
+
+ * benchmark/bm_vm2_bigarray.rb: added.
+ This benchmark mesures a big array literal creation time.
+
+ * benchmark/bm_vm2_bighash.rb: added.
+ This benchmark mesures a big hash literal creation time.
+
+ * benchmark/bm*: change notation "i=0" to "i = 0".
+
+Sun May 27 13:33:26 2012 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/driver.rb: fix to continue benchmarks when
+ an error is occurred.
+
+Sun May 27 11:27:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_prepare_run): fix operator
+ precedence, so that platform and TERM should be counted.
+
+Sun May 27 10:02:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: allows %Ok and %Ol.
+
+Sun May 27 09:29:20 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: modified doc.
+
+Sat May 26 19:04:34 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: added description.
+
+Sat May 26 18:14:57 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: reduced the code.
+
+Sat May 26 18:08:59 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * time.c: modified doc.
+ * ext/date/date_core.c: ditto.
+
+Sat May 26 17:05:45 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (backtrace_*): change type of lev and n from size_t to int.
+ Also set type of rb_backtrace_t#backtrace_size to int.
+ A patch from nobu.
+
+ * vm_eval.c: ditto.
+
+Sat May 26 16:26:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (realpath_rec): UNC prefix does not end with path separator,
+ so new separator is needed after it.
+
+Sat May 26 15:29:22 2012 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_backtrace.rb (test_caller_lev):
+ decrease recursion size.
+
+Sat May 26 13:50:48 2012 Koichi Sasada <ko1@atdot.net>
+
+ * NEWS: add Kernel#caller's second argument.
+
+Sat May 26 13:40:29 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (RubyVM::FrameInfo): add a class to access each frame
+ information. You don't need to parse strings from caller().
+ FrameInfo has the following methods:
+ FrameInfo#name: method name, class name, etc with decorations.
+ FrameInfo#basename: name without decorations.
+ FrameInfo#line_no: line number.
+ FrameInfo#filename: file name.
+ FrameInfo#filepath: full filepath.
+ FrameInfo#iseq: iseq if it is iseq frame (defined by ruby script)
+ FrameInfo#to_s: return caller() method style string.
+ RubyVM::FrameInfo.caller(n, lev) returns array of FrameInfo objects.
+ The name "RubyVM::FrameInfo.caller" is long and ambiguous (it is
+ confusing with Kernel::caller() method), we need to change the name
+ before Ruby 2.0 release. Good names or comments are welcome.
+
+ * test/ruby/test_backtrace.rb: add a test for above change.
+
+Sat May 26 12:18:09 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (frame_info_to_str): add `break'.
+
+ * vm.c (backtrace_object): remove lev and n parameter.
+ backtrace_object always returns all of backtrace information.
+
+ * vm.c (rb_backtrace_to_str_ary): fix to use backtrace_object().
+ This change improve performance of caller(lev, n).
+
+ * benchmark/bm_vm3_backtrace.rb: added to check above improvement.
+ FYI: measurement on my laptop, 1.9.3p229 needs 5.125 sec,
+ and current trunk only needs 0.299sec.
+
+Sat May 26 11:05:09 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (rb_frame_info_t): keep previous ISEQ frame info for CFUNC
+ frame info. And fix to cache a calculated line_no of ISEQ frame
+ info.
+
+Sat May 26 09:54:53 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Allow disabling client-side renegotiation.
+ * test/openssl/test_ssl.rb: Simple tests for this.
+
+ Client-side renegotiation is still considered problematic, even
+ when used in the context of secure renegotiation (RI, RFC 5746).
+ The changes allow users to either completely disable client
+ renegotiation on the server, or to specify a maximum number of
+ handshakes allowed in total. The number of total handshakes is
+ counted in a callback set as SSL_set_info_callback. If the
+ maximum number of handshakes is exceeded an error will be raised
+ We do not support renegotiation in the OpenSSL extension, therefore
+ this feature can only be tested externally.
+ The feature is opt-in, the default setting will be to allow
+ unlimited client renegotiation, as was the case before.
+
+Fri May 25 23:38:58 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ssl.rb: Clarify the intention of errors to be
+ expected. Two errors are possible when connection is refused due
+ to a protocol version that was explicitly disallowed,
+ OpenSSL::SSL::SSLError or Errno::ECONNRESET, depending on the
+ OpenSSL version in use.
+
+Fri May 25 22:19:40 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Revert r35583
+ * test/openssl/test_ssl.rb: Handle ECONNRESET in code instead to avoid
+ the test failing in Ruby CI [1]
+
+ [1] http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20120507T190102Z.log.html.gz#test-all
+
+Fri May 25 19:51:36 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_eval.c (rb_f_caller): caller() method accepts second optional
+ argument `n' which specify how many frames should return.
+ For example, `caller(0, 1)' returns only one frame information
+ which calls caller() method. If there are less than n frame
+ information, then all frame information are returned. If n is 0,
+ then always return [].
+ This fix is part of [ruby-dev:42345] [Ruby 1.9-Feature#3917].
+ However, performance and features are not enough.
+ RDoc is also not available.
+
+ * test/ruby/test_backtrace.rb: add a test for above.
+
+Fri May 25 17:05:07 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (oldbt_init, vm_backtrace_str_ary): arg->data should
+ be initialized before calling `backtrace_each()'.
+
+Fri May 25 16:11:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * trunk/ext/-test-/printf/printf.c: change function names because of
+ conflict with msvcrt. fixed build error of mswin.
+
+Fri May 25 10:52:52 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: refactoring backtrace related functions.
+ (1) unify similar functions (rb_backtrace_each() and
+ backtrace_object()). backtrace_each() is a unified function.
+ variation:
+ a) backtrace_object(): create backtrace object.
+ b) vm_backtrace_str_ary(): create bt as an array of string.
+ c) vm_backtrace_print(): print backtrace to specified file.
+ d) rb_backtrace_print_as_bugreport(): print backtrace on
+ bugreport style.
+ (2) remove rb_backtrace_each(). Use backtrace_each() instead.
+ (3) change the type of lev parameter to size_t.
+ a) lev == 0 means current frame (exception, etc use it).
+ b) lev == 1 means upper frame (caller(0) use it).
+
+ * vm_core.h, vm_dump.c, vm_eval.c: ditto.
+
+ * vm.c (backtrace_object(), vm_backtrace_str_ary()): fix to return a
+ correct size of caller(lev) array.
+ Let n be a "caller(0).size" then ln as caller(lev).size should be
+ (n - lev). However, the previous implementation returns a wrong
+ size array (ln > n - lev). [ruby-dev:45673]
+
+ * test/ruby/test_backtrace.rb: add tests for backtrace.
+
+Fri May 25 08:51:39 2012 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c (enum_count): Enumerable#count no longer uses #size when
+ counting elements. Patch by Nobuhiro IMAI. [ruby-trunk - Bug #6473]
+
+Fri May 25 01:15:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (ruby__sfvextra): [EXPERIMENTAL] use inspect instead of
+ to_s if plus flag is given.
+
+ * vsnprintf.c (BSD_vfprintf): pass sign flag.
+
+Fri May 25 00:37:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rubygems/test_gem_indexer.rb (setup, teardown): save @tempdir
+ to remove it properly. [Bug #5348]
+
+Thu May 24 23:36:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): [EXPERIMENTAL] object representation in
+ rb_enc_vsprintf(). [Feature #5896]
+
+Thu May 24 15:33:01 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_method.c (rb_method_defined_by): removed.
+ nobu pointed out that rb_method_basic_definition_p() is enough
+ for last commit.
+
+ * error.c, eval_error.c: change for above.
+
+Thu May 24 14:30:13 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c: add RubyVM::Backtrace object (btobj).
+ Backtrace information contains an array consists of location
+ information for each frames by string.
+ RubyVM::Backtrace object is lightweight backtrace information,
+ which contains complete information to generate traditional style
+ backtrace (an array of strings) with faster generation.
+ If someone accesses to backtrace information via
+ Exception#backtrace, then convert a RubyVM::Backtrace object to
+ traditional style backtrace.
+ This change causes incompatibility on marshal dumped binary
+ of Exception. If you have any trouble on it, please tell us
+ before Ruby 2.0 release.
+ Note that RubyVM::Backtrace object should not expose Ruby level.
+
+ * error.c, eval.c, vm_eval.c: ditto.
+
+ * internal.h: ditto.
+
+ * eval_error.c: fix to skip "set_backtrace" method invocation in
+ creating an exception object if it call a normal set_backtrace
+ method (defined by core).
+
+ * test/ruby/test_settracefunc.rb: fix for above change.
+
+ * vm_method.c (rb_method_defined_by): added. This function
+ checks that the given object responds with the given method
+ by the given cfunc.
+
+ * benchmark/bm_vm2_raise1.rb, benchmark/bm_vm2_raise2.rb:
+ add to measure exception creation speed. raise1 create
+ exception objects from shallow stack frame. raise2 create
+ exception objects from deep stack frame.
+
+Thu May 24 12:07:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_strip_bom): check EOF. [Bug #6487][ruby-core:45203]
+
+Wed May 23 22:06:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http/header.rb (Net::HTTPHeader#range): fix broken parser of
+ HTTP Range request. Old one can't parse invalid specs and multiple
+ specs correctly.
+
+Wed May 23 10:18:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (finish_overlapped_socket, overlapped_socket_io):
+ replace ECONNABORTED to EPIPE in send, sendto and sendmsg to improve
+ BSD socket compatibility. this change removes a failure on the test
+ of net/ftp.
+
+Wed May 23 05:35:58 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Broke up Net::HTTP into individual files.
+ [ruby-trunk - Feature #6435]
+ * lib/net/http/backward.rb: ditto.
+ * lib/net/http/response.rb: ditto.
+ * lib/net/http/exceptions.rb: ditto.
+ * lib/net/http/responses.rb: ditto.
+ * lib/net/http/generic_request.rb: ditto.
+ * lib/net/http/header.rb: ditto.
+ * lib/net/http/request.rb: ditto.
+ * lib/net/http/proxy_delta.rb: ditto.
+ * lib/net/http/requests.rb: ditto.
+
+Wed May 23 05:15:11 2012 Eric Hodel <drbrain@segment7.net>
+
+ * class.c (rb_mod_init_copy): Clear the cached inspect string of a
+ dup'd anonymous module or class. [ruby-trunk - Bug #6454]
+ * test/ruby/test_module.rb (class TestModule): ditto
+
+Tue May 22 16:49:15 2012 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: add a data type rb_location_t to store iseq location
+ information.
+ rb_location_t#filename, filepath, name and line_no was moved from
+ rb_iseq_t. rb_location_t#basename is a new field which is
+ similar to `name' field without any decoration.
+ `name' field contains some decoration such as `block in foo'.
+ `basename' only contains `foo'.
+ rb_iseq_t contains memory object of rb_location_t.
+
+ * iseq.c: setup rb_location_t for each rb_iseq_t memory objects.
+
+ * compile.c, proc.c, vm.c, vm_dump.c, vm_eval.c, vm_insnhelper.c,
+ vm_method.c: support about it.
+
+Tue May 22 00:45:05 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * struct.c (rb_struct_members): Refactoring. As Struct#members had
+ returned an array of String, the old code was needed to convert
+ Symbols to Strings. But it is almost unnecessary because the
+ method now returns an array of Symbols. A patch by Masaki
+ Matsushita <glass.saga at gmail dot com> [Feature #6218]
+ [ruby-dev:45451]
+
+Mon May 21 19:20:25 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#retrbinary): close only if conn is not nil
+ because transfercmd may fail and return nil.
+
+ * lib/net/ftp.rb (Net::FTP#retrlines): ditto.
+
+Mon May 21 15:10:28 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/syslog/syslog.c: Classify constants and macros into several
+ sub-modules. (Syslog::Priority, Syslog::Level, Syslog::Option
+ and Syslog::Macros)
+
+ * ext/syslog/syslog.c (mSyslog_inspect): Use rb_sprintf().
+
+ * ext/syslog/syslog.c (mSyslog_inspect): Make sure self is a
+ module before calling rb_class2name().
+
+Mon May 21 12:44:11 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (install): It seems tcl/tk is skipped in Travis
+ CI. Trying to fix the situation.
+
+Mon May 21 12:11:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enc/depend (ENCOBJS): add dependencies.
+
+ * enc/make_encmake.rb (target_encodings): extract dependencies.
+
+Mon May 21 11:26:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::FTP#transfercmd): rescue shutdown.
+
+Sun May 20 23:00:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): reopen $stdout to NULL, since setting
+ $stdout cannot affect child processes.
+
+Sun May 20 21:36:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/shift_jis.c (code_to_mbclen): return
+ ONIGERR_INVALID_CODE_POINT_VALUE if the code is invalid.
+
+ * string.c (tr_next): increment character until the code
+ is a valid character. [ruby-dev:45652] [Bug #6450]
+
+Sun May 20 12:25:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (LIBRUBY_SO): link EXTSOLIBS too.
+
+ * ext/extmk.rb (mf.macro): use EXTSOLIBS instead of SOLIBS to get rid
+ of discard libraries needed by default. [Bug #6462]
+
+Sat May 19 19:04:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (command_output): ENCOBJS is needed for all linked
+ ruby, if --disable-shared and --with-static-linked-ext.
+
+ * ext/extmk.rb (command_output): dmyext is needed as DLDOBJS if no
+ static linked extensions.
+
+ * Makefile.in, common.mk (PROGRAM): no extension libraries.
+
+ * common.mk (build-ext): pass macros for libruby.so.
+
+ * ext/extmk.rb (command_output): link extension libraries and encoding
+ libraries into libruby.so, not ruby executable.
+
+ * ext/extmk.rb (command_output): fold long macro lines.
+
+ * Makefile.in (LIBEXT): add macro.
+
+ * configure.in (ENCOBJS, EXTOBJS): use LIBEXT, not hardcoded suffix.
+
+ * Makefile.in (LIBRUBY_A): fix typo. re-applying r35242.
+
+Sat May 19 04:46:53 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/openssl/extconf.rb: Use Logging::message instead of message.
+ * ext/zlib/extconf.rb: ditto.
+
+Fri May 18 18:13:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#configuration): keep space at end of
+ OUTFLAG and COUTFLAG. [ruby-dev:45650]
+
+Fri May 18 17:39:42 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): Added error
+ check when failing fcntl(). [Bug #6147] [ruby-dev:45364]
+
+Fri May 18 17:41:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): link archives only, skip script only
+ extension libraries.
+
+Fri May 18 17:25:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c: bump up fiber machine stack size when running on 64bit
+ arch. [Bug #6344] [ruby-dev:45554]
+
+Fri May 18 15:20:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb (URI::Generic.build): duplicate args before adding
+ new items. (don't change arguments)
+
+ * lib/uri/generic.rb (URI::Generic.build): use URI::Generic::COMPONENT
+ if this method is called from URI::Generic.
+
+ * lib/uri/generic.rb (URI::Generic.build2): escape only if the item is
+ a String.
+
+ * lib/uri/generic.rb (URI::Generic.build2): use DEFAULT_PARSER because
+ it doesn't have parser method. [Bug #6420]
+
+Fri May 18 15:54:07 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/zlib/extconf.rb: Use an exception instead of bare puts.
+
+Fri May 18 15:53:05 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/psych/extconf.rb: Use an exception instead of bare abort.
+
+Fri May 18 15:51:32 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/fiddle/extconf.rb: Use an exception instead of bare abort.
+
+Fri May 18 15:49:35 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/readline/extconf.rb: Use an exception instead of bare exit.
+
+Fri May 18 15:38:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/ripper/extconf.rb: Use an exception instead of bare
+ Logging.message.
+
+Fri May 18 15:23:06 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/openssl/extconf.rb: Clarify a message when hit Apple
+ OpenSSL issue.
+
+Fri May 18 15:14:32 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/extmk.rb: Show a message when extconf.rb raised an exception.
+ * ext/openssl/extconf.rb: Use exception raising instead of message
+ and/or abort. We want to display error message to console _and_
+ logging into mkmf.log.
+
+Fri May 18 06:14:07 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/syslog/lib/syslog/logger.rb: Added Syslog::Logger which was
+ ported from the SyslogLogger gem. [ruby-trunk - Feature #5096]
+ * NEWS: ditto.
+ * test/syslog/test_syslog_logger.rb: ditto.
+
+Fri May 18 01:28:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (transcode_string): fix encoding index names.
+ Thanks markizko for reporting.
+
+Thu May 17 23:03:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: fix function name to be checked, to initialize
+ rb_thread_cond_t properly.
+
+ * thread_pthread.c (native_cond_initialize, native_cond_destroy):
+ fix macro name.
+
+Thu May 17 12:53:07 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * thread.c, thread_pthread.c: Moved pthread-specific preprocessor
+ hacks to thread_pthread.c
+
+Thu May 17 12:18:47 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * io.c: Fix a mistake on merging the patch in the previous commit.
+
+Thu May 17 11:33:07 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ Imports Ruby's port to NativeClient (a.k.a NaCl).
+ Patch by Google Inc. [ruby-core:45073].
+
+ * configure.in (RUBY_NACL): New M4 func to configure variables for
+ NaCl.
+ (RUBY_NACL_CHECK_PEPPER_TYPES): New M4 func to check the old names
+ of Pepper interface types.
+ (BTESTRUBY): New variable to specify which ruby should be run on
+ "make btest". NaCl can run the built binary by sel_ldr, but it need
+ rbconfig.rb. So this variable is distinguished from $MINIRUBY.
+
+ * thread_pthread.c: Disabled some features on NaCl.
+
+ * io.c: ditto.
+
+ * process.c: ditto.
+
+ * signal.c: ditto.
+
+ * file.c: ditto.
+
+ * missing/flock.c: ditto.
+
+ * nacl/pepper_main.c: An example implementation of Pepper application
+ that embeds Ruby.
+
+ * nacl/example.html: An example of web page that uses the Pepper
+ application.
+
+ * nacl/nacl-config.rb: Detects variants of NaCl SDK.
+
+ * nacl/GNUmakefile.in: Makefile template for NaCl specific build
+ process.
+
+ * nacl/package.rb: script for packaging a NaCl-Ruby embedding
+ application.
+
+ * nacl/reate_nmf.rb: Wrapper script of create_nmf.py
+
+ * dln.c (dln_load): Added a hack to call on NaCl.
+
+ * util.c (ruby_getcwd): Path to the current directory is not available
+ on NaCl.
+
+Thu May 17 10:54:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/extconf.rb: add -l options to $libs not $LDFLAGS,
+ to be passed to EXTLIBS in exts.mk.
+
+ * enc/encinit.c.erb: use %-lines to adjust indent in the generated file.
+
+ * lib/mkmf.rb (MakeMakefile#have_framework): combine -framework option
+ and its argument with an equal sign not to be separated in merge_libs.
+
+ * ext/tk/extconf.rb: ditto.
+
+ * ext/extmk.rb: EXTLDFLAGS also needs to be passed.
+
+Wed May 16 15:44:22 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ * configure.in: Fix an unbalanced quote.
+
+Wed May 16 15:43:10 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb (exts.mk): use double quotes instead of single quotes
+ for commandline because it's not recognized as quotes on Windows.
+
+Wed May 16 15:15:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LD): enclose with single quotes but not double quotes
+ not to expand command substitution.
+
+Wed May 16 14:19:51 2012 Yuki Yugui Sonoda <yugui@google.com>
+
+ Supports static linking of extensions and encodings again.
+ Fixes --with-static-linked-ext.
+
+ Patch by Google Inc. [ruby-core:45073].
+
+ * Makefile.in (ENCOBJS, EXTOBJS): New variables to specify static
+ linked libraries. Also reintroduces extinit.o, introduces encinit.o
+ introduces encinit.o
+
+ * common.mk: Builds static libraries rather than shared objects if
+ specified.
+
+ * configure.in (LD): new substitution.
+
+ * enc/depend: Supports static linked libraries
+ (libencs, libenc, libtrans): New target.
+
+ * enc/encinit.c.erb: new template to generate the initialization of
+ statically linked encodings.
+
+ * enc/make_encmake.rb (--module): new flag to specify whether static
+ or dynamic.
+
+ * transcode_data.h (TRANS_INIT): New macro to get rid of the name
+ collision of encoding initializers and transcoder initializers.
+
+ * ext/extmk.rb: Fixes the behavior on $extstatic is true.
+
+ * lib/mkmf.rb (clean-static): new target to clean up static linked
+ libraries.
+
+ * ruby.c (process_options): New initializes statically linked
+ encodings here.
+
+Wed May 16 14:30:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c: fixed a merge mistake of r33878, reported by nobu via IRC.
+
+Wed May 16 06:59:41 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: should also be aware of flags on
+ complex specifier.
+
+Wed May 16 05:11:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: fix a bug with string
+ subclass dumping and loading.
+
+ * test/psych/test_array.rb: pertinent tests
+
+ * test/psych/test_string.rb: ditto
+
+Wed May 16 01:31:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: convert omap tagged maps to
+ Psych::Omap objects rather than hashes. [Bug #6425]
+
+ * test/psych/test_omap.rb: pertinent test.
+
+Wed May 16 01:15:45 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: keep a reference to
+ custom coders so that GC does not impact dumped yaml reference ids.
+
+Tue May 15 23:59:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Options#setup_options): add --color option.
+
+ * lib/test/unit.rb (Test::Unit::Runner#_prepare_run): defer color code
+ initialization to regard --color option.
+
+Mon May 14 16:28:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (f_arglist): should reset lexical states after empty
+ argument list with no parenthesis as well as parenthesized list,
+ so that reserved name method definition work. [ruby-dev:45626]
+ [Bug #6403]
+
+Mon May 14 00:14:24 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * enumerator.c (lazy_take_func, lazy_take): multiple calls of
+ force/to_a method to Enumerator::Lazy#take should return same
+ results. [ruby-dev:45634] [Bug #6428]
+
+ * test/ruby/test_lazy_enumerator.rb (test_take_recycle): add test for
+ above.
+
+Sun May 13 23:38:31 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * test/ruby/test_io.rb (test_flush_in_finalizer1): don't use IO.for_fd
+ to close IO objects. it create IO object with already closed fd, and
+ cause occasional Errno::EBADF in following tests. [ruby-core:45020]
+ [Bug #6228]
+
+Sun May 13 23:32:16 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO): revert r35631. it broke the intent of
+ test_flush_in_finalizer1. [ruby-core:43951] [Bug #6228]
+
+Sun May 13 22:46:36 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/etc/etc.c (passwd_ensure): move endpwent() call from
+ passwd_iterate to close /etc/passwd on exception.
+ (group_ensure): move endgrent() call from group_iterate to close
+ /etc/group on exception.
+
+Sun May 13 18:10:43 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: removed unused code and changed the style.
+
+Sun May 13 17:37:56 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: refactored.
+
+Sun May 13 06:40:12 2012 Luis Lavena <luislavena@gmail.com>
+
+ * test/ruby/test_io.rb (class TestIO): Disable GC during IO tests to
+ avoid file descriptors being GC'ed. Suggestion by Tomoyuki Chikanaga
+ [ruby-core:43951][Bug #6228]
+
+Sat May 12 07:00:16 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/sdbm/init.c: Added documentation. Patch by Justin Collins,
+ cleanup by Zachary Scott. [ruby-trunk - #6410]
+
+Sat May 12 06:02:03 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/fileutils.rb (cp_r): Fixed cp_r example. Patch by TJ Koblentz
+ from pull request #114. [ruby-trunk - Bug #6411]
+
+Sat May 12 05:23:06 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (rb_threadptr_execute_interrupts_common):
+ test_signal_requiring of test/ruby/test_signal.rb fail if the sub
+ process is killed on waiting IO in lex_io_gets in rb_load_file in
+ rb_load_internal in require.
+ This is because
+ (1) the process receive the killing signal in
+ rb_thread_io_blocking_region in rb_read_internal in lex_io_gets.
+ (2) set th->errinfo as INT2FIX(TAG_FATAL) at
+ rb_threadptr_execute_interrupts_common.
+ (3) escape rb_load_file in rb_load_internal and jump to EXEC_TAG()
+ without set loaded as TRUE.
+ (4) call first rb_exc_raise(GET_THREAD()->errinfo); because loaded
+ is FALSE as above. this errinfo should be an exception object
+ but this is INT2FIX(TAG_FATAL).
+ Don't call first rb_exc_raise if GET_THREAD()->errinfo is Fixnum.
+
+Fri May 11 14:23:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary): begin/end block should be isolated from outside.
+ [ruby-dev:45631][Bug #6419]
+
+Fri May 11 14:09:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (PUSH): to prevent VALUE from GC,
+ must not cast it to unsigned long, which may be shorter than
+ VALUE, and the result can be mere garbage.
+
+Fri May 11 09:51:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#failed): no unnecessary
+ newlines if no reports to be displayed.
+
+Thu May 10 10:55:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/minitest/test_minitest_mock.rb: Correct requiring path to
+ metametameta.rb.
+
+ * test/minitest/test_minitest_unit.rb: Correct requiring path to
+ metametameta.rb.
+
+Thu May 10 10:18:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (lex_state_name): returns name for lex_state_e, for debug
+ use.
+
+Wed May 9 16:36:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#pkg_config): check if libs resulted from
+ pkg-config works actually.
+
+Wed May 9 16:01:38 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (decode_utf7, encode_utf7): refactored by
+ Nobuyoshi Nakada, to use String#encode.
+
+Wed May 9 13:26:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rubygems/test_gem_remote_fetcher.rb: skip OpenSSL dependent
+ tests if not available.
+
+Wed May 9 08:09:38 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 3.0.0 (r7435)
+ * test/minitest/*: ditto
+ * test/rubygems/*: Imported fixes for buggy use of assert_match
+ and deprecated assert_block
+ UNBUNCH YOUR PANTIES. THE TESTS DO NOT RUN CLEAN ON OSX.
+
+Wed May 9 06:28:59 2012 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (rb_reg_equal): Removed incorrect example for Regexp#== with
+ "n" option. [ruby-talk - Bug #6415]
+
+Wed May 9 06:23:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: reverted.
+
+Wed May 9 04:31:26 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/rinda/ring.rb (lookup_ring_any): fix Rinda::RingFinger.primary
+ hungs forever. [ruby-talk:395364]
+
+Tue May 8 21:09:00 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * include/ruby/win32.h (FD_SET): change function to macro.
+ To avoid buffer overflow when smaller FD_SETSIZE is used in ext
+ libraries.
+
+ * win32/win32.c (rb_w32_fdset): this function is not used anymore.
+ But we leave this for compatibility.
+
+ * win32/win32.c (rb_w32_select_with_thread): fix SEGV when smaller
+ FD_SETSIZE is used in ext libraries. Dereference of fd_set pointer
+ causes SEGV.
+
+ * test/-ext-/win32/test_fd_setsize.rb(TestFdSetSize): add tests for
+ above.
+ * ext/-test-/win32/fd_setsize/depend: ditto.
+ * ext/-test-/win32/fd_setsize/extconf.rb: ditto.
+ * ext/-test-/win32/fd_setsize/fd_setsize.c: ditto.
+
+ [ruby-core:44588] [Bug #6352]
+
+Tue May 8 20:44:46 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * io.c (io_unread): fix IO#pos with mode 'r' bug on Windows.
+ If the end of reading buffer is CR, io_unread() needs to unread one
+ more byte.
+ [ruby-core:44874] [Bug #6401]
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_pos_with_buffer_end_cr):
+ add a test for above.
+
+Tue May 8 13:38:17 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/date/date_core.c: improving introduction in Date/DateTime
+ documentation. patched by Daniel Kaufman via Github.
+ https://github.com/ruby/ruby/pull/110
+
+Tue May 8 13:36:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (POSTLINK): default to : command to get rid of flag
+ only command, since BSD make does not work with it.
+
+Tue May 8 13:35:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (MiniTest#run_test): remove exact trace and get rid
+ of IndexError, which could caused by modified $@ sometimes.
+
+Tue May 8 11:21:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/minitest/metametameta.rb (MetaMetaMetaTestCase#assert_report):
+ support drive letter on Windows. yes, the original code is metameta.
+
+Tue May 8 08:54:48 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/abbrev.rb: Fixed typo in abbrev pattern documentation. Based on
+ patch by Mark Rushakoff. [ruby-trunk - #6346]
+
+Tue May 8 07:44:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_start_ssl): remove useless rb_sys_fail
+ before ossl_raise. this cause a test failure on Linux.
+ http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20120507T190102Z.log.html.gz
+
+Tue May 8 05:35:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (Init_Object): Added reference to variable.c where
+ public_constant and private_constant documentation lives. [#6381]
+
+Tue May 8 04:47:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#output): prefer local output to
+ get rid of unexpected side effect in test/minitest/metametameta.rb.
+
+ * lib/test/unit.rb (MiniTest#run_test): show the running test in $0.
+
+ * lib/test/unit.rb (Test::Unit::StatusLineOutput): new class to output
+ in status line.
+
+ * test/testunit/test_hideskip.rb (TestHideSkip#test_hideskip):
+ MiniTest#puke now reports Skipped messages only if verbose mode.
+
+ * test/testunit/test_sorting.rb (TestTestUnitSorting#test_sorting):
+ ditto.
+
+ * lib/test/unit.rb (Test::Unit::Runner#puke): modify only result and
+ drop useless reports, not override entirely.
+
+ * bootstraptest/runner.rb (exec_test, show_progress): show rotators
+ and pass/fail counts.
+
+ * sample/test.rb (PROGRESS): refine output.
+
+Tue May 8 02:34:26 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/minitest/unit.rb (assert_match): refix of r35563.
+ r35563 breaks the intention of the original change.
+ https://github.com/seattlerb/minitest/commit/68858105b2eb11c85105ffac5f32b662c59397f3
+ * lib/minitest/unit.rb (refute_match): ditto.
+
+Mon May 7 21:19:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Merge JSON 1.7.1.
+ https://github.com/flori/json/commit/e5b9a9465c1159fae533bca320d950b772bcb4ac
+
+Mon May 7 22:54:22 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: add support for option flags
+ OpenSSL::SSL::OP_NO_TLSv1_1
+ OpenSSL::SSL::OP_NO_TLSv1_2
+ to allow blocking specific TLS versions. Thanks to Justin Guyett for
+ pointing this out to me.
+ * test/openssl/test_ssl.rb: add tests to assert correct behavior when
+ blocking certain versions of TLS/SSL both on server and client side.
+ Also refactored tests to reduce boilerplate code a little.
+ * test/openssl/utils.rb: rescue Errno::ECONNRESET for tests where
+ client rejects the connection because a forbidden protocol version
+ was used.
+
+Mon May 7 20:14:15 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (random_bytes): call to_int method for the
+ argument at first.
+
+Mon May 7 17:54:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/minitest/unit.rb (assert_match): replace matcher only if both
+ matcher and obj are String. fix r35541. [Bug #6405]
+ DON'T COMMIT IF YOU CAN'T RUN TEST.
+ FIX AS SOON AS POSSIBLE YOU BREAK TESTS.
+ patched by ayumin.
+ https://github.com/seattlerb/minitest/pull/124
+
+ * lib/minitest/unit.rb (refute_match): ditto.
+
+Mon May 7 13:41:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (PROGRAM), configure.in (POSTLINK): sign built program
+ using RUBY_CODESIGN identity.
+
+Mon May 7 13:03:55 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (body_type_attachment): parse body type
+ "ATTACHMENT". [ruby-core:44849] [Bug #6397]
+
+Mon May 7 10:49:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): define IDs before
+ they are used. [ruby-core:44900] [Bug #6406]
+
+Mon May 7 10:27:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/rmd160/rmd160.c (RMD160_Update): fix for huge data.
+
+Mon May 7 10:23:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/fileutils/fileasserts.rb: use assert_equal, assert_match, and so on.
+
+ * test/ruby/enc/test_utf16.rb, test/ruby/enc/test_utf32.rb,
+ test/ruby/test_io_m17n.rb (assert_str_equal): ditto.
+
+ * test/rubygems/test_gem_remote_fetcher.rb
+ (assert_data_from_{server,proxy}): ditto.
+
+ * test/test_pstore.rb (test_thread_safe): ditto.
+
+Mon May 7 10:16:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rubygems/test_gem_installer.rb (TestGemInstaller#test_dir): fix
+ argument order. expected value must come first.
+
+Mon May 7 09:14:11 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: support TLSv1.1 & TLSv1.2. Add
+ SSLContext#version to inspect the version that was negotiated for
+ a given connection.
+ * ext/openssl/extconf.rb: detect TLS 1.1 & 1.2 support.
+ * test/openssl/test_ssl.rb: add tests for TLS 1.1 & 1.2 given they
+ are supported by the native OpenSSL being used.
+
+Sun May 6 21:34:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_encoding_set): suppress warnings. [ruby-dev:45627]
+ this tmp1 is not required after r35538.
+
+ * addr2line.c: suppress warnings.
+
+Sun May 6 18:39:39 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_compile_each): remove unused variable `size'.
+
+Sun May 6 14:50:03 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb: show actual read length in an error message.
+
+Sat May 5 06:43:10 2012 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.12.1 (r7323)
+ * test/minitest/*: ditto
+
+Sat May 5 01:47:33 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/zlib/test_zlib.rb (test_inflate): add a test for Zlib.inflate.
+ patched by headius (Charles Nutter). [ruby-core:44859] [Bug #6398]
+
+ * test/zlib/test_zlib.rb (test_deflate): add a test for Zlib.deflate.
+
+Sat May 5 00:53:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (parse_mode_enc): remove warnings 'Ignoring internal encoding'.
+ [ruby-core:44455] [Bug #6324]
+
+ * io.c (io_encoding_set): ditto.
+
+Fri May 4 07:19:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/rdoc/parser.rb (RDoc.binary?): fix wrong regexp.
+ [ruby-core:44798] [Bug #6393]
+
+Fri May 4 01:33:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/rdoc/parser.rb (RDoc.alias_extension): a real file is irrelevant
+ to aliasing. [ruby-core:44796][Bug #6392]
+
+ * lib/rdoc/parser.rb (RDoc.zip?): non-existent file will not be a zip
+ file.
+
+ * lib/rdoc/parser.rb (RDoc.can_parse_by_name): accept aliased
+ extension file names.
+
+ * lib/rdoc/parser.rb (RDoc.binary?): binary read data may have
+ incomplete multibyte sequence. [ruby-core:44798][Bug #6393]
+
+Wed May 2 23:55:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): expand
+ real path to get rid of loading same files via symlinks.
+
+Wed May 2 23:26:04 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (rb_fiber_m_transfer): improve sample code in Fiber#transfer
+ documentation. emphasize the difference between transfer and resume.
+
+Wed May 2 23:21:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): allow spaces between lambda arrow and
+ parenthesis. [ruby-dev:45605][Feature #6390]
+
+Wed May 2 19:06:30 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * cont.c (rb_fiber_m_transfer): Improved Fiber documentation.
+ patched by Anuj Dutta. [ruby-core:44540][Bug #6343]
+
+Wed May 2 13:06:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README, README.ja: reformatted using rdoc markup. based on the
+ patches by zzak (Zachary Scott) in [Feature #6388].
+
+ * README, README.ja: updated the author's mail address.
+
+Wed May 2 09:46:09 2012 Kouji Takao <kouji@takao7.net>
+
+ * ext/readline/readline.c (Readline.special_prefixes=)
+ (Readline.special_prefixes): new function. An original patch was
+ created by nagachika. [Feature #5784]
+
+Tue May 1 22:18:45 2012 Kouji Takao <kouji@takao7.net>
+
+ * ext/readline/readline.c (Readline.pre_input_hook)
+ (Readline.insert_text, Readline.redisplay): new function. An
+ original patch was created by nagachika. [Feature #5785]
+
+Tue May 1 15:46:48 2012 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: "$(Q)-..." doesn't work on nmake.
+
+Tue May 1 15:32:10 2012 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk: replace '@' prefix to '$(Q)' to control build
+ process outputs.
+
+Tue May 1 14:17:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/deprecation.rb (OpenSSL.check_func): check if header is
+ available for macro compatibility.
+
+Tue May 1 10:53:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_settracefunc.rb: ignore traces from another threads
+ because Kernel.set_trace_func affects other threads.
+
+Tue May 1 06:04:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/sha2/sha2.c (REVERSE32): explicitly cast since unsigned
+ long may be larger than sha2_word32.
+
+ * ext/digest/sha2/sha2.c (SHA{256,512,384}_{Final,End}): should clear
+ whole content, not pointer size.
+
+ * ext/digest/*/extconf.rb: use pkg_config to use same library with
+ openssl. [ruby-core:44755][Bug #6379]
+
+ * ext/openssl/deprecation.rb: extract check for broken Apple OpenSSL.
+
+Tue May 1 05:02:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (optflags): disable unsafe optimizations.
+ [ruby-core:44679][Bug #6370]
+
+Mon Apr 30 23:36:49 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/fileutils.rb (copy_metadata): use File.lchown and File.lchmod to
+ update meta data of symlinks.
+
+Mon Apr 30 23:05:53 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_continuation.rb (tracing_with_set_trace_func): don't
+ call Continuation from other threads. [ruby-dev:45596] [Bug #6382]
+
+Mon Apr 30 20:10:04 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/zlib/extconf.rb: detect z_crc_t type which will be defined
+ since zlib-1.2.7.
+
+ * ext/zlib/zlib.c (rb_zlib_crc_table): use z_crc_t if available.
+
+Mon Apr 30 09:02:15 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/openssl/lib/openssl/ssl.rb: add hostname to "hostname does not
+ match server cert." error. patched by Wes Morgan via Github.
+ https://github.com/ruby/ruby/pull/122
+
+Mon Apr 30 04:43:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/yaml_events.rb: implicit styles should not
+ be changeable for JSON events.
+
+Sun Apr 29 06:12:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (assoc, parser_yylex): add syntax to splat keyword hash.
+ [ruby-core:44591][Feature #6353]
+
+ * compile.c (compile_array_): generate keyword splat insns.
+
+ * vm.c (m_core_hash_merge_kwd): merge keyword hash into intermediate
+ hash. leftward argument is prior currently.
+
+Fri Apr 27 12:34:23 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/cfunc.c (rb_dlcfunc_call): should convert a Bignum value to
+ unsigned long long on Win64.
+ [ruby-core:44636][Bug #6364] reported by raylinn@gmail.com (ray linn)
+
+Fri Apr 27 10:58:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/readline/test_readline.rb (setup): avoid affected by user's
+ inputrc file. [ruby-dev:45584][Bug #6357]
+
+Fri Apr 27 01:45:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (rb_threadptr_execute_interrupts_common):
+ handle timer_interrupt only on the first loop for the case to avoid
+ the infinite loop like following case:
+ * there is 2 Ruby threads (3 pthreads)
+ (1) main thread is waiting at gvl_yield:112 (native_cond_wait)
+ (2) sub thread works
+ (3) sub thread waits at gvl_yield:133 (native_mutex_unlock)
+ (4) main thread works
+ (5) main thread goes to gvl_acquire_common
+ (6) main thread call rb_wakeup_timer_thread
+ (7) timer thread set timer interrupt to the main thread
+ (8) main thread works
+ (9) main thread waits at gvl_acquire_common:64 (native_cond_wait)
+ (10) sub tread works
+ (11) set sub thread as the current thread
+ (12) run Ruby thread
+ (13) ...100ms
+ (14) sub thread goes to rb_threadptr_execute_interrupts_common
+ (15) sub thread call rb_thread_schedule_limits
+ (16) sub thread call gvl_release_common
+ (17) sub threads waits at gvl_yield:121 (native_cond_wait)
+ (18) main threads works
+ (19) main thread back to gvl_yield
+ (20) set main thread as the current thread
+ (21) main thread call gvl_yield
+ (22) main thread waits at gvl_yield:112 (native_cond_wait)
+ As described above, the main thread can't escape from
+ rb_threadptr_execute_interrupts_common.
+ See extended memo: http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/R35480_ExtendedMemo
+
+Fri Apr 27 07:15:07 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): support the longest
+ path in sockaddr_un, really.
+ reported by nagachika.
+ http://d.hatena.ne.jp/nagachika/20120426/ruby_trunk_changes_35474_35476
+
+Thu Apr 26 12:28:06 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (init_unix_addrinfo): support the longest
+ path in sockaddr_un.
+ (inspect_sockaddr): ditto.
+ (addrinfo_mdump): ditto.
+ (addrinfo_mload): ditto.
+ (rsock_unixpath_str): new function.
+ (rsock_unixpath): removed.
+ (rsock_unixaddr): use rsock_unixpath_str.
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): support the longest
+ path in sockaddr_un.
+ (sock_s_unpack_sockaddr_un): ditto.
+ (sock_s_gethostbyaddr): unused variable removed.
+
+ * ext/socket/unixsocket.c (rsock_init_unixsock): support the longest
+ path in sockaddr_un.
+
+ * ext/socket/rubysocket.h (rsock_unixpath_str): declared.
+ (rsock_unixpath): removed.
+
+ * test/socket/test_unix.rb: comment out test_nul because abstract unix
+ sockets may contain NULs.
+
+Thu Apr 26 01:32:33 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/optparse/test_summary.rb (test_summary_containing_space): add
+ test for r35467. OptionParser#to_a shouldn't split banner by spaces.
+
+Wed Apr 25 23:02:46 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (init_unix_addrinfo): refine error message
+ format.
+ (addrinfo_mload): show more information on "too long AF_UNIX path"
+ error.
+ (addrinfo_unix_path): ditto for "too short AF_UNIX address" and
+ "too long AF_UNIX address" error.
+
+Wed Apr 25 05:46:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#to_a): split for each lines.
+ [ruby-dev:45568][Bug #6348]
+
+Tue Apr 24 21:57:53 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/raddrinfo.c (init_unix_addrinfo): show actual path length
+ when it is too long for Unix socket.
+
+ * ext/socket/unixsocket.c (rsock_init_unixsock): ditto.
+
+ * ext/socket/socket.c (sock_s_pack_sockaddr_un): ditto.
+
+Tue Apr 24 21:43:58 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * lib/net/smtp.rb (check_continue): raise an error with an explanatory
+ message. [ruby-core:35854] [Feature #4598]
+
+Tue Apr 24 21:11:31 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#to_a): should split by end-of-line,
+ and MUST TEST IT, MUST RUN THE TEST, MUST VERIFY BEFORE BACKPORT.
+ [ruby-dev:45568][Bug #6348]
+
+Tue Apr 24 19:59:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/euc_jp.c: added EUC-JP-2004 and its alias EUC-JISX0213.
+ [ruby-dev:45571] [Feature #6349]
+ Requested by Kyouhei Yanagita <yanagi@shakenbu.org>.
+
+ * enc/trans/japanese_euc.trans: ditto.
+
+ * enc/trans/JIS/JISX0213-[12]%UCS@{BMP,SIP}.src: JIS X 0213:2004 ->
+ Unicode mapping table from NetBSD.
+
+ * enc/trans/JIS/UCS@{BMP,SIP}%JISX0213-[12].src: Unicode -> JIS X
+ 0213:2004 mapping table from NetBSD.
+
+ * tool/transcode-tblgen.rb: added SIP support.
+
+ * test/ruby/test_transcode.rb: tests of above changes.
+
+Tue Apr 24 18:12:13 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c: fix to output warning when the same literals
+ are available as a condition of same case clause.
+ And remove information ('#n') because we can find duplicated
+ condition with explicit line numbers.
+ [ruby-core:38343] [Ruby 1.9 - Bug #5068]
+
+ * test/ruby/test_syntax.rb: add a test for above.
+
+Tue Apr 24 17:03:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (waitpid): need to check the return value of
+ FindChildSlotByHandle() before passing poll_child_status().
+ this fixed a SEGV in test-all. reported by ko1 via IRC.
+
+Tue Apr 24 16:04:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): EXPR_BEG by keywords is a start point of
+ commands. [ruby-dev:45563][Bug #6347]
+
+ * parse.y (superclass): ditto for superclass.
+
+ * parse.y (parser_parse_string, parser_here_document): ditto for
+ string interpolation.
+
+ * parse.y (parser_yylex): ditto for singleton class.
+
+Tue Apr 24 15:51:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser#to_a): should split by end-of-line
+ [ruby-dev:45568][Bug #6348]
+
+ * lib/optparse.rb (OptionParser#to_a): String#to_a is no longer
+ defined. [ruby-dev:45568][Bug #6348]
+
+Tue Apr 24 12:46:50 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * hash.c, object.c, struct.c, lib/ostruct.rb: add to_h methods.
+ [Feature #6276]
+
+Tue Apr 24 10:54:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/drb/drbtest.rb ({DRbCore,DRbAry}#teardown): cannot pass SIGTERM
+ to another process on Windows, so use SIGINT instead.
+
+Tue Apr 24 00:25:39 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_check_deadlock): refine an error message of deadlock
+ detection. [ruby-core:44336] [Bug #6288]
+
+Tue Apr 24 00:14:42 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (primary): remove wrong "fixpos" that caused incorrect
+ source_location of blocks. [ruby-core:42232] [Bug #5930]
+
+ * test/ruby/test_proc.rb: add a test for above.
+
+Mon Apr 23 22:56:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/iconv: deprecated. [Feature #6322]
+
+Mon Apr 23 22:07:00 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_unix.rb (bound_unix_socket): make temporary
+ filename shorter for less possibility of Unix socket path over
+ 107 bytes when TMPDIR has long path.
+
+Mon Apr 23 20:35:49 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (szInternalCmds, internal_match, internal_cmd_match):
+ get rid of a segmentation fault with GCC 4.7.0.
+ reported by raylinn@gmail.com (ray linn) at [ruby-core:44505]
+ [Bug #6333], and patched by mame.
+
+ * test/ruby/test_system.rb (TestSystem#test_system): test for it.
+
+Mon Apr 23 20:11:02 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/drb/ssl.rb: generate 1024 bits RSA key instead of 512 bits.
+ OpenSSL 1.0.1 rejects 512 bits RSA key for TLS1.2 with SHA512.
+ http://rt.openssl.org/Ticket/Display.html?id=2769&user=guest&pass=guest
+ reported by Bohuslav Kabrda.
+ [ruby-core:43844] [ruby-trunk - Bug #6221]
+
+Mon Apr 23 19:54:33 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/drb/drbtest.rb: rescue Errno::ESRCH for Process.kill.
+ reported by NARUSE, Yui. [ruby-dev:45551]
+
+Mon Apr 23 14:16:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * .gdbinit (rb_ps_vm): follow st_table's packing change.
+
+Mon Apr 23 10:43:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: disable rubygems not to load rbconfig.rb before
+ fake.rb. [ruby-core:44492][Bug #6329]
+
+Sun Apr 22 20:26:06 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/drb/extservm.rb (DRb::ExtServManager): don't use /bin/sh to
+ invoke service subprocess. mark detach threads for clean up.
+
+ * test/drb/drbtest.rb: clean up the service subprocess in teardown.
+
+ * test/drb/test_drb.rb: set @service_name for teardown.
+
+ * test/drb/test_drbunix.rb: ditto.
+
+ * test/drb/test_drbssl.rb: ditto.
+
+ [ruby-dev:45547]
+
+Sun Apr 22 07:51:29 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/drb/ssl.rb: close accepted TCP socket if SSL accept is failed.
+ [ruby-dev:45541]
+
+Sat Apr 21 14:36:49 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb: fix sticks on some tests problem
+ [Bug #6272]
+
+Fri Apr 20 12:24:04 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem: Removed to avoid
+ conflict with ca-bundle.pem
+ * lib/rubygems/ssl_certs/VerisignClass3PublicPrimaryCertificationAuthority-G2.pem:
+ ditto.
+ * lib/rubygems/ssl_certs/Entrust_net-Secure-Server-Certification-Authority.pem:
+ ditto.
+
+Fri Apr 20 08:07:06 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.23 which contains security
+ fixes:
+
+ RubyGems now disallows redirection from HTTPS to HTTP.
+
+ RubyGems now verifies SSL connections.
+
+ See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
+ changes since 1.8.22.
+ * test/rubygems: ditto.
+
+Thu Apr 19 16:33:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime_with_timespec): fix carry-up bug and
+ overwrite '+' with '-' if negative offset less than a hour.
+ [ruby-core:44447][Bug #6323]
+
+Thu Apr 19 09:39:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/-test-/win32/dln/extconf.rb: need import library for ordinal
+ entry even on mingw. [ruby-core:44441][Bug #6320]
+
+Thu Apr 19 09:35:15 2012 Eric Hodel <drbrain@segment7.net>
+
+ * random.c (random_init): Clarify that the default seed is
+ Random.new_seed, not zero. Based on patch by Roger Pack.
+ [ruby-trunk - Bug #6313]
+ * random.c (rb_f_srand): ditto.
+
+Thu Apr 19 08:59:02 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/curses/curses.c (window_nodelay): Fixed call-seq of nodelay to
+ include the '='.
+
+ Improved description window.nodelay=.
+
+Thu Apr 19 08:47:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * io.c (io_readpartial): Document the output buffer parameter is
+ overwritten with the read contents even when non-empty.
+ Patch by yu nobuoka. [ruby-trunk - Bug #6285]
+ * io.c (io_read_nonblock): ditto.
+ * io.c (io_read): ditto.
+ * io.c (rb_io_sysread): ditto.
+ * io.c (argf_read): ditto.
+ * io.c (argf_readpartial): ditto.
+ * ext/stringio/stringio.c (strio_read): ditto.
+ * test/ruby/test_argf.rb (class TestArgf): Add test for existing
+ behavior of read outbuf.
+ * test/ruby/test_io.rb (class TestIO): ditto.
+ * test/stringio/test_stringio.rb (class TestStringIO): ditto.
+
+Wed Apr 18 22:58:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (DOT, DOXYGEN): use AC_CHECK_PROGS instead of
+ AC_CHECK_PROG which needs the third argument. [ruby-core:44433]
+ [Bug #6316]
+
+ * configure.in (PKG_CONFIG): fix condition to skip older version
+ of pkg-config. continue in backticks does not affect outside.
+
+Wed Apr 18 13:59:40 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/file.c (INVALID_FILE_ATTRIBUTES): define for old SDK.
+
+Wed Apr 18 10:22:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime_with_timespec): add an interim digit for
+ the timezone offset which is less than an hour.
+
+Wed Apr 18 09:58:29 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/version.rb: Fixed init_with warning by calling into
+ yaml_initialize (for syck) from psych's init_with
+
+Wed Apr 18 09:03:43 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.22 plus r33517 and r35337 which
+ were ported to the rubygems git repository.
+
+ See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
+ changes since 1.8.11.
+
+ * test/rubygems: ditto.
+
+Tue Apr 17 22:18:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * strftime.c (rb_strftime_with_timespec): fix padding of time zone
+ offset. [ruby-dev:43287][Bug #4458]
+
+Tue Apr 17 13:11:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dln.c (rb_w32_check_imported): skip ordinal entries. based on a
+ patch by phasis68 (Heesob Park) at [ruby-core:44381].
+ [ruby-core:44371][Bug #6303]
+
+Mon Apr 16 18:22:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * spec/default.mspec: expand relative path for ruby_exe which uses
+ them with Dir.chdir; it breaks relative paths, for example
+ core/kernel/exec_spec.rb.
+
+Mon Apr 16 16:22:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (gmtime_r, localtime_r): POSIX compliant reentrant
+ versions.
+
+ * configure.in (RUBY_MSVCRT_VERSION): define on mingw too.
+
+ * win32/Makefile.sub (config.h): prefix RT_VER with RUBY and make
+ more descriptive to get rid of potential conflict.
+
+Mon Apr 16 15:19:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (NO_RUBY_VENDOR_LIB): fix missing comma.
+
+Mon Apr 16 12:17:12 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb (hermitian?): Bug fix, patch by George Koehler
+ [Bug #6290] [rubyspec:4b9573d7613]
+
+Mon Apr 16 09:42:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/remote_fetcher.rb (Gem::RemoteFetcher#download): should
+ use File.identical? to check the identity of the files.
+ this fixed an error of a test on Windows.
+
+Sat Apr 14 12:55:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (UNREACHABLE): gcc 4.4 eliminates unreachable code
+ if -O3 is given.
+
+ * win32/win32.c (child_result): dropped colon.
+
+Sat Apr 14 10:45:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#start):
+ partially revert r35315.
+
+ * test/webrick/test_server.rb (test_start_exception):
+ received signal is delivered to the main thread, so it is needed to
+ emulate it. patched by Eric Hodel. [ruby-core:44348] [Feature #6236]
+
+Sat Apr 14 09:35:45 2012 Eric Hodel <drbrain@segment7.net>
+
+ * variable.c (trace_ev): Removed "not reached" comment as this line is
+ reached.
+ * variable.c (rb_obj_remove_instance_variable): Replaced "not reached"
+ comment with the UNREACHABLE macro.
+ * variable.c (rb_mod_const_missing): ditto.
+ * variable.c (rb_mod_remove_cvar): ditto.
+ * enum.c (first_i): ditto.
+ * string.c (rb_str_aref): ditto.
+ * string.c (str_byte_aref): ditto.
+ * string.c (rb_to_id): ditto.
+ * io.c (rb_io_fmode_modestr): ditto.
+ * io.c (rb_io_oflags_modestr): ditto.
+ * pack.c (num2i32): ditto.
+ * vm_eval.c (rb_method_missing): ditto.
+ * vm_eval.c (rb_f_throw): ditto.
+ * dir.c (dir_read): ditto.
+ * win32/win32.c (child_result): ditto.
+ * struct.c (rb_struct_getmember): ditto.
+ * struct.c (rb_struct_set): ditto.
+ * struct.c (rb_struct_aref_id): ditto.
+ * eval.c (rb_f_raise): ditto.
+ * process.c (rb_f_exit_bang): ditto.
+ * process.c (rb_f_exit): ditto.
+ * process.c (rb_f_abort): ditto.
+ * ext/-test-/iter/break.c (iter_break_value): ditto.
+ * ext/pty/pty.c (pty_check): ditto.
+ * ext/openssl/ossl_pkey.c (ossl_pkey_new): ditto.
+ * ext/readline/readline.c (rb_remove_history): ditto.
+ * ext/stringio/stringio.c (strio_unimpl): ditto.
+ * numeric.c (num_sadded): ditto.
+ * numeric.c (num_init_copy): ditto.
+ * numeric.c (rb_num2ll): ditto.
+ * numeric.c (rb_num2ull): ditto.
+ * vm_insnhelper.c (call_cfunc): ditto.
+ * ruby.c (opt_W_getter): ditto.
+ * bignum.c (rb_big_coerce): ditto.
+ * file.c (rb_f_test): ditto.
+
+Sat Apr 14 08:38:20 2012 Eric Hodel <drbrain@segment7.net>
+
+ * encoding.c (rb_enc_codepoint_len): Use UNREACHABLE to avoid "control
+ reaches end of non-void function" warnings. [ruby-trunk - Bug #6066]
+ * re.c (name_to_backref_number): ditto.
+ * object.c (rb_Float): ditto.
+ * io.c (io_readpartial): ditto.
+ * io.c (io_read_nonblock): ditto.
+ * pack.c (rb_uv_to_utf8): ditto.
+ * proc.c (rb_method_entry_arity): ditto.
+ * vm_method.c (rb_f_notimplement): ditto.
+ * struct.c (rb_struct_aset_id): ditto.
+ * class.c (rb_scan_args): ditto.
+ * process.c (rlimit_resource_type): ditto.
+ * process.c (rlimit_resource_value): ditto.
+ * process.c (p_uid_switch): ditto.
+ * process.c (p_gid_switch): ditto.
+ * ext/digest/digest.c (rb_digest_instance_update): ditto.
+ * ext/digest/digest.c (rb_digest_instance_finish): ditto.
+ * ext/digest/digest.c (rb_digest_instance_reset): ditto.
+ * ext/digest/digest.c (rb_digest_instance_block_length): ditto.
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): ditto.
+ * ext/dl/handle.c (rb_dlhandle_close): ditto.
+ * ext/tk/tcltklib.c (pending_exception_check0): ditto.
+ * ext/tk/tcltklib.c (pending_exception_check1): ditto.
+ * ext/tk/tcltklib.c (ip_cancel_eval_core): ditto.
+ * ext/tk/tcltklib.c (lib_get_reltype_name): ditto.
+ * ext/tk/tcltklib.c (create_dummy_encoding_for_tk_core): ditto.
+ * ext/tk/tkutil/tkutil.c (tk_hash_kv): ditto.
+ * ext/openssl/ossl_ssl.c (ossl_ssl_session_reused): ditto.
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_key_dsa_verify_asn1): ditto.
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_is_at_infinit): ditto.
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_is_on_curve): ditto.
+ * ext/fiddle/conversions.c (generic_to_value): ditto.
+ * ext/socket/raddrinfo.c (rsock_io_socket_addrinfo): ditto.
+ * ext/socket/socket.c (sock_s_getnameinfo): ditto.
+ * ext/ripper/eventids2.c (ripper_token2eventid): ditto.
+ * cont.c (return_fiber): ditto.
+ * dmydln.c (dln_load): ditto.
+ * vm_insnhelper.c (vm_search_normal_superclass): ditto.
+ * bignum.c (big_fdiv): ditto.
+ * marshal.c (r_symlink): ditto.
+ * marshal.c (r_symbol): ditto.
+
+Fri Apr 13 17:12:09 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * hash.c (inspect_i): keep string's coderange.
+
+Fri Apr 13 15:26:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_hash_aset, rb_hash_update, rb_hash_update_by): use
+ st_update() to reduce evaluation of hash values.
+
+Fri Apr 13 15:17:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#stop): fix r35303;
+ this method is to deny new connections, not shutdown yet.
+
+ * lib/webrick/server.rb (WEBrick::GenericServer#start):
+ re-raise exception only when the exception is Interrupt (^C).
+
+Thu Apr 12 19:51:45 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: added some notes.
+
+Wed Apr 11 17:16:49 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (compile_array, compile_array_):
+ Divide big array (or hash) literals into several blocks and
+ concatenate them. There was a problem that a big array (hash)
+ literal causes SystemStackError exception (stack overflow)
+ because VM push all contents of the literal onto VM stack to
+ make an array (or hash). To solve this issue, we make several
+ arrays (hashes) and concatenate them to make a big array (hash)
+ object. [ruby-dev:37701] [Bug #982]
+
+ * compile.c (iseq_compile_each, setup_args): use modified
+ compile_array.
+
+ * vm.c (m_core_hash_from_ary, m_core_hash_merge_ary,
+ m_core_hash_merge_ptr): added for above change.
+
+ * id.c (Init_id), parse.y: add core method ids.
+
+ * bootstraptest/test_literal.rb: add simple tests.
+
+ * bootstraptest/test_eval.rb: remove rescue clause to catch
+ SystemStackError exception.
+
+ * test/ruby/test_literal.rb: add tests to check no stack overflow.
+
+Thu Apr 12 07:10:37 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri/generic.rb (module URI): URI now downcases the scheme to
+ follow RFC 2396 section 3.1. [ruby-trunk - Feature #4551]
+ * test/uri/test_generic.rb (class URI): Test for above
+
+Thu Apr 12 06:15:44 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/protocol.rb (module Net): Added ReadTimeout to match
+ OpenTimeout. ReadTimeout is now raised by rbuf_fill instead of
+ Timeout::Error to help users distinguish what type of timeout
+ occurred. [ruby-trunk - Feature #6088]
+ * lib/net/pop.rb (module Net): Updated documentation for ReadTimeout
+ and OpenTimeout.
+ * lib/net/http.rb (module Net): ditto
+ * lib/net/smtp.rb (module Net): ditto
+ * lib/net/telnet.rb (module Net): Net::ReadTimeout is now raised in
+ waitfor to match Net::Protocol.
+ * test/net/http/test_http.rb: Updated Timeout::Error expectation to
+ Net::ReadTimeout.
+ * test/net/ftp/test_ftp.rb: ditto
+
+Thu Apr 12 05:27:01 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick/server.rb (module WEBrick::GenericServer): A server
+ will now continue only when a StandardError subclass is raised. For
+ other exception types the error will be logged at the fatal level and
+ the server will safely stop. Based on a patch by Alex Young.
+ [ruby-trunk - Feature #6236]
+ * test/webrick/test_server.rb: Test for new exception handling
+ behavior. Join the server thread instead of busy-waiting for it to
+ shut down to remove race conditions.
+
+Thu Apr 12 03:50:44 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit:Runner::Worker#_run_suites):
+ call GC.start before running the test suites.
+
+Wed Apr 11 22:31:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_check_id_cstr): new function to check if ID is
+ registered with NUL-terminated C string.
+
+ * sprintf.c (rb_str_format): avoid inadvertent symbol creation.
+
+Wed Apr 11 20:28:36 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * io.c (rb_io_eof): use eof() instead of io_fillbuf(). It's because
+ io_unread() doesn't work properly when reading CRLF with read(length)
+ and mode 'r'.
+ [ruby-core:44189][Bug #6271]
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_read_crlf_and_eof):
+ test for above.
+
+Wed Apr 11 07:38:33 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/digest/sha2/lib/sha2.rb (Digest#block_length): Fixed method name
+ in documentation examples. Patch by naleski via
+ https://github.com/ruby/ruby/pull/115
+
+Wed Apr 11 07:33:13 2012 Eric Hodel <drbrain@segment7.net>
+
+ * pack.c (pack_pack): Warn when an invalid character is found in the
+ format string when $VERBOSE is true. [ruby-trunk - Feature #5219]
+ * pack.c (pack_unpack): ditto
+ * test/ruby/test_pack.rb (class TestPack): Test for warnings on
+ invalid format characters.
+
+Wed Apr 11 06:11:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (rb_str_tr): Documented use of \ to escape characters.
+ [ruby-trunk - Bug #6161]
+ * string.c (rb_str_count): ditto
+
+Wed Apr 11 05:14:51 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/abbrev.rb: Clarified that Abbrev.abbrev returns a Hash instead
+ of an Array. Patch by Andrei Bocan. [ruby-trunk - Bug #6107]
+
+Wed Apr 11 03:02:24 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/ripper/lib/ripper/sexp.rb: fix spelling. patched by
+ Jonathan Hinkle via https://github.com/ruby/ruby/pull/116
+
+Tue Apr 10 19:07:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_enc_raise): new function to raise an exception with
+ the message in the given encoding. patched by now (Nikolai
+ Weibull) at [ruby-core:41160]. [Feature #5650]
+
+Tue Apr 10 18:19:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#send_request_with_body_stream):
+ use IO.copy_stream for requests using body_stream.
+ patched by Eric Wong. [ruby-core:40898] [Feature #5605]
+
+Tue Apr 10 16:53:21 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c: add prototype declarations for older Mac OS X.
+ [ruby-core:43376][Bug #6170]
+
+Tue Apr 10 15:35:21 2012 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c (iseq_set_sequence): show a hint if there are duplicated
+ "when" clauses. [ruby-core:41502] [ruby-trunk - Feature #5716]
+
+Tue Apr 10 09:57:00 2012 Eric Hodel <drbrain@segment7.net>
+
+ * string.c (rb_str_split_m): Documented behavior of split on the empty
+ string. [ruby-trunk - Feature #3575]
+
+Tue Apr 10 09:48:31 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (rb_deflate_s_deflate): Fixed ruby example replacing
+ NO_FLUSH with FINISH. [ruby-trunk - Bug #6273]
+
+Mon Apr 9 23:10:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (isUNCRoot, winnt_stat): support long UNC.
+ [ruby-core:30623][Feature #3399]
+
+Mon Apr 9 15:16:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (string_content, parser_yylex): count brace nesting to
+ dispatch embexpr_end. [ruby-core:43775][Bug #6211]
+
+Mon Apr 9 13:06:58 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * hash.c (rb_hash_set_default_proc): Accept nil, patch by Run Paint
+ [Feature #4234]
+
+ * test/ruby/test_hash.rb: test for above.
+
+Mon Apr 9 08:01:15 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: gets the value with range() consistently.
+ * ext/date/date_strftime.c (range): now just replaces the given item.
+
+Mon Apr 9 06:58:01 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * complex.c (nucomp_expt): [ruby-core:44170].
+
+Mon Apr 9 02:52:03 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * complex.c (nucomp_expt): the result of f_complex_new2 may be a fixnum
+ with mathn. [ruby-core:44170] [Bug #6267]
+
+Sun Apr 8 22:46:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/generator/generator.c (generate_json_bignum):
+ add RB_GC_GUARD.
+ http://fb.rubyci.org/~chkbuild/ruby-trunk/log/20120407T210301Z.diff.html.gz
+
+Sun Apr 8 07:26:40 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/utils.rb (WEBrick::Utils::TimeoutHandler): get keys
+ and fetch values from it to prevent @timeout_info's error
+ "can't add a new key into hash during iteration".
+
+Sun Apr 8 06:51:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_unread): cast as long the value for extra_max.
+ [ruby-core:44137] [Bug #6257]
+
+Sun Apr 8 06:46:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#send_body_io):
+ use readpartial to get data even if the response is streaming data and
+ each data is smaller than @buffer_size.
+ patched by yu nobuoka. [ruby-dev:45471] [Bug #6230]
+
+Sat Apr 7 22:35:36 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * include/ruby/win32.h (rb_w32_aspawn_flags): add the declaration of
+ new function.
+
+ * process.c (enum): add EXEC_OPTION_PGROUP and move the position
+ above for the usage in proc_spawn_n().
+
+ * process.c (proc_spawn_n): add an argument to pass new option
+ `new_pgroup`. The option specifies CREATE_NEW_PROCESS_GROUP flag to
+ CreateProcessW(). This flag is necessary for the usage of
+ Process.kill on the subprocess on Windows.
+
+ * process.c (rb_exec_arg_addopt): ditto.
+
+ * process.c (rb_spawn_process): ditto.
+
+ * process.c (documentation for rb_f_spawn): add documentation for new
+ option `new_pgroup` of spawn.
+
+ * test/ruby/test_process.rb (TestProcess#test_execopts_new_pgroup):
+ add tests for option `new_pgroup`.
+
+ * test/ruby/test_thread.rb
+ (TestThreadGroup#test_thread_timer_and_interrupt):
+ add option `new_pgroup: true` to spawn on Windows. It's needed for
+ Process.kill on a subprocess.
+
+ * win32/win32.c (CreateChild): add an argument to pass
+ dwCreationFlags of CreateProcessW().
+
+ * win32/win32.c (rb_w32_spawn): ditto.
+
+ * win32/win32.c (rb_w32_aspawn_flags): add new function to pass
+ dwCreationFlags.
+
+ * win32/win32.c (rb_w32_aspawn): refactor to move the content to
+ rb_w32_aspawn_flags().
+ [ruby-core:43245][Bug #6131]
+
+Sat Apr 7 22:32:00 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_thread.rb
+ (TestThreadGroup#test_thread_timer_and_interrupt): skip on Windows.
+ Process.kill cannot kill a subprocess if CREATE_NEW_PROCESS_GROUP
+ flag is not specified in a call to CreateProcessW().
+
+ * win32/win32.c (CreateChild): revert the usage of
+ CREATE_NEW_PROCESS_GROUP flag for compatibility.
+ [ruby-core:43245][Bug #6131]
+
+Sat Apr 7 10:28:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: bumping up psych version to match release.
+ * ext/psych/psych.gemspec: ditto
+
+Sat Apr 7 02:07:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: fall back to any encoding if the external
+ encoding is wrong. [ruby-core:44163]
+ * test/psych/test_encoding.rb: fix test
+
+Fri Apr 6 16:24:24 2012 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * struct.c (documentation for rb_struct_members_m):
+ fix 'array of strings' to 'array of symbols'
+ [ruby-core:44152][Bug #6264]
+
+Fri Apr 6 14:27:04 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * Makefile.in ($(LIBRUBY_A)): fix typo.
+
+Thu Apr 5 13:26:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * missing/alloca.c (xmalloc, xfree): use ruby version, not
+ depending on RUBY_LIB_PREFIX. [ruby-dev:45492][Bug #6255]
+
+Wed Apr 4 13:06:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/ftp/ftp.rb (Net::FTP#close): restore original read_timeout.
+
+Wed Apr 4 10:33:31 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/ftp/ftp.rb (Net::FTP#close): ignore exceptions from shutdown and
+ read on closing.
+
+Wed Apr 4 01:48:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/ftp/ftp.rb (Net::FTP#close): close socket more gracefully.
+
+ * lib/ftp/ftp.rb (Net::BufferedSocket#shutdown): added.
+
+ * test/net/ftp/test_ftp.rb (FTPTest#create_ftp_server): wait socket
+ with shutdown and read.
+
+Tue Apr 3 19:00:52 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/net/ftp/test_ftp.rb (FTPTest#create_ftp_server): should wait
+ a little before closing socket because if the client call
+ Net::FTP#getmultiline the socket is suddenly closed by the server in
+ the getline loop.
+
+Tue Apr 3 18:33:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (setreuid, setregid): suppress warnings.
+ [ruby-core:43374][Bug #6169]
+
+Tue Apr 3 10:18:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (inspect_enumerator): suppress uninitialized
+ instance variable warnings. [ruby-dev:45449][Bug #6214]
+ patched by no6v (Nobuhiro IMAI).
+
+Mon Apr 2 13:25:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse/ac.rb: autoconf-like options.
+
+Mon Apr 2 10:34:00 2012 eregon <eregontp@gmail.com>
+
+ * string.c (rb_str_start_with, rb_str_end_with): raise an error if
+ an argument is not convertible to a String.
+ [ruby-core:40623][Bug #5536]
+
+Mon Apr 2 03:35:25 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/server.rb (WEBrick::GenericServer): close socket only if
+ the socket is not closed yet.
+
+Sun Apr 1 23:03:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/ftp.rb (Net::BufferedSocket): should delegate send() to @io
+ for Net::FTP#abort and Net::FTP#status.
+
+Sun Apr 1 00:41:56 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb: fixed the domain name in examples.
+
+Sat Mar 31 21:39:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/utils.rb (WEBrick::Utils::TimeoutHandler): dup to prevent
+ @timeout_info's "can't add a new key into hash during iteration".
+
+Sat Mar 31 14:22:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (hash_default_value): extract from rb_hash_aref(), to be
+ shared with rb_hash_shift(), so that overriding Hash#default
+ will be respected.
+
+Sat Mar 31 14:16:02 2012 Sokolov Yura (funny-falcon) <funny.falcon@gmail.com>
+
+ * hash.c: do not allocate st_table when it is not necessary.
+
+Sat Mar 31 13:42:39 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (read_timeout=, open_timeout=): supported timeout.
+
+Sat Mar 31 13:20:40 2012 Sokolov Yura (funny-falcon) <funny.falcon@gmail.com>
+
+ * hash.c: remove unnecessary checks for Qundef in hash iterations.
+ since hash use st_foreach_check for iterations, such checks are
+ needless.
+
+Sat Mar 31 12:05:01 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_x509cert.c: Fix doc typo.
+
+Sat Mar 31 10:13:24 2012 Sokolov Yura (funny-falcon) <funny.falcon@gmail.com>
+
+ * st.c (st_foreach_check, st_foreach): remove ancient check. This
+ check are from initial ordered hash commit when first entry were
+ created with entry->fore = entry->back = entry.
+
+ * st.c (st_delete): use real_entries in st_delete for packed tables
+
+Sat Mar 31 07:53:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_foreach_check): remove the entry by replacing with never
+ when ST_DELETE.
+
+ * hash.c (st_foreach_safe): since table is not for VALUE, Qundef is
+ not special value, so use 0 instead. therefore this function can be
+ applied to only st_table which 0 is invalid as keys, e.g., IDs.
+
+ * hash.c: Qundef cannot be passed from st_foreach_check().
+
+ * hash.c, marshal.c, object.c, variable.c: fix callback argument types
+ of iterators.
+
+Thu Mar 29 23:50:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_update): pass pointer to key to the callback function.
+
+Thu Mar 29 16:36:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_update): add existing parameter to the callback function.
+
+Thu Mar 29 16:35:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (terminal_width, del_status_line, put_status):
+ extract as methods.
+
+Thu Mar 29 10:20:18 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkcs7.c: fix crash when parsing garbage data.
+ * test/openssl/test_pkcs7.rb: assert correct behavior for it.
+ Thanks to Matt Venables for reporting the issue.
+ [ruby-core:43250][Bug #6134]
+
+Thu Mar 29 10:16:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread_win32.c (TIME_QUANTUM_USEC): 10ms(= old setting) [experimental]
+ cf. [Bug #6098]
+
+Thu Mar 29 10:12:12 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (rb_threadptr_execute_interrupts_common): use defined
+ TIME_QUANTUM_USEC instead of a magic number. there is no meanings
+ to use different values for checking interval of interruption and
+ thread switching limits.
+ cf. [Bug #6098]
+
+Thu Mar 29 09:26:17 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_x509cert.rb: exclude test that fails when issuing
+ a certificate with RSA signature and DSS1 digest for earlier
+ OpenSSL versions when used in conjunction with OpenSSL 1.0.1.
+ Thanks, Vit Ondruch, for reporting the issue.
+ [ruby-core:42949][Bug #6089]
+
+Thu Mar 29 08:25:35 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * NEWS: add note about unified behavior of encoding nil values in
+ instances of OpenSSL::ASN1::ASN1Data.
+
+Thu Mar 29 07:45:36 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: raise TypeError when trying to encode nil
+ values for Primitive instances.
+ * test/openssl/test_asn1.rb: Assert consistent behavior when
+ encoding nil values: Primitives raise TypeError, Constructives
+ raise NoMethodError.
+ Fixes [ruby-core:43009][Bug #6102]
+
+Wed Mar 28 16:39:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (obj2uid, obj2gid): allow strings as input user/group id.
+ [ruby-core:40923][Feature #5610]
+
+Wed Mar 28 15:06:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * marshal.c (r_symreal): default to ASCII-8BIT for non-ascii symbols,
+ otherwise it should be converted to US-ASCII in rb_intern_str() if
+ possible. [ruby-core:43762][Bug #6209]
+
+Wed Mar 28 08:44:24 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: updating version to match gem
+ * ext/psych/psych.gemspec: ditto
+ * ext/psych/lib/psych/visitors/to_ruby.rb: fixing deprecation warning
+
+Tue Mar 27 23:44:11 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_unread): fixed memory leak. report by nagachika via IRC.
+
+Tue Mar 27 22:44:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (verconf.h): separate load path specific stuff from
+ config.h.
+
+Tue Mar 27 22:43:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/Makefile.sub: fix config.h path to include.
+
+Tue Mar 27 17:08:08 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * win32/win32.c (check_if_dir): fix memory leak.
+
+Tue Mar 27 13:13:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_new_empty): should copy also the encoding as an
+ empty substring. [ruby-dev:45441][Bug #6206]
+
+Mon Mar 26 23:43:04 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (parse227, parse228, parse229): don't use $~.
+
+Mon Mar 26 23:34:40 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (parse227, parse228, parse229): don't use local
+ variables defined by named capture for other Ruby implementations
+ such as Rubinius.
+
+Mon Mar 26 23:19:03 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (parse_pasv_port): refactored.
+
+Mon Mar 26 19:49:49 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/net/ftp/test_ftp.rb: add the test, which was forgotten in the
+ previous commit.
+
+Mon Mar 26 19:37:27 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/ftp.rb (parse227, parse228, parse229): refactored.
+
+Mon Mar 26 11:46:23 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (inspect_enumerator): show method arguments of
+ lazy enumerators correctly.
+
+Mon Mar 26 13:51:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (check_if_dir, check_if_wdir): fix for Visual C++
+ not to use S_ISDIR(). [Feature #2408][ruby-core:26925]
+
+ * ruby.c (load_file_internal): ditto.
+
+Mon Mar 26 11:46:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ruby.c (load_file_internal): bail out if the script is a directory.
+ [Feature #2408][ruby-core:26925]
+
+ * win32/win32.c (rb_w32_open, rb_w32_wopen): check if the file is a
+ directory when access denied, to set errno to EISDIR.
+
+Sun Mar 25 18:13:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (tr_setup_table): fix multiple non latin argument for
+ non latin (over 256 characters) tr-like methods.
+ [ruby-core:43371] [Bug #6167]
+
+Sun Mar 25 00:46:06 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator (lazy_initialize): set the instance variable "receiver"
+ to include the receiver to the return value of inspect on a lazy
+ enumerator directly created by Enumerator::Lazy.new.
+
+ * enumerator (RETURN_LAZY): don't set the instance variable "receiver".
+
+Sat Mar 24 23:59:00 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator (enumerator_inspect): include the original receiver and
+ method name of Enumerator::Lazy in the result of inspect.
+ [ruby-core:43345] [Bug #6159]
+
+ * enumerator (InitVM_Enumerator): don't use rb_define_alias for
+ some methods such as collect in order to make rb_frame_this_func()
+ return the correct method names.
+
+Sat Mar 24 22:22:18 2012 Sambasiva Rao Suda <sambasivarao@gmail.org>
+
+ * time.c (time_init_1): Time.new will accept seconds as string or
+ int. [ruby-core:43569][Bug #6193]
+
+Fri Mar 23 15:12:12 2012 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c (documentation for str_encode): Explain
+ that transcoding to the same encoding is a no-op
+ (i.e. no exceptions, no replacements,...).
+ [ruby-core:43557][Bug #6190]
+
+Fri Mar 23 13:19:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_str_to_inum): must be ASCII compatible encoding as
+ well as String#hex and String#oct. [ruby-core:43566][Bug #6192]
+
+ * string.c (rb_must_asciicompat): check if ASCII compatible.
+
+Thu Mar 22 23:14:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_encode_bang, encoded_dup): if nothing was
+ transcoded, just set encoding but leave coderange unchanged as
+ force_encoding. [ruby-core:43557][Bug #6190]
+
+Thu Mar 22 22:30:44 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * io.c (static int io_fflush): add the definition.
+ Use it in set_binary_mode_with_seek_cur().
+
+ * io.c (set_binary_mode_with_seek_cur): refactoring to split the
+ content into io_unread(). Fix the possibility of buffer overflow.
+
+ * io.c (io_unread): add new implementation for Windows. Previous one
+ caused invalid cursor position using IO#pos with OS text mode. New
+ one fixes the bug.
+
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_pos_dont_move_cursor_position): add a test for
+ above bug.
+ [ruby-core:43497] [Bug #6179]
+
+Thu Mar 22 19:55:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_fstat, rb_w32_fstati64): convert FILETIME
+ to time_t directly, not to be affected by TZ unnecessarily.
+
+ * win32/win32.c (unixtime_to_filetime): convert time_t to FILETIME
+ simply.
+
+Thu Mar 22 13:43:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_rsa.c (rsa_generate): fix argument type.
+ [Bug #6094]
+
+Thu Mar 22 11:14:10 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_pos_with_getc): updated.
+ see [ruby-core:43550]
+
+Wed Mar 21 17:57:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c: Merge Onigmo 3d855b30d574536d3ae600260208c6624ae4791c.
+ [Bug#6143] [Bug#6144] [Bug#6145]
+
+Wed Mar 21 17:01:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_pos_with_getc): added.
+ see [Bug #6179][ruby-core:43518]
+
+Mon Mar 19 17:18:51 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_flat_map_func): convert the block value to
+ Array if it doesn't respond to each. [ruby-core:43334]
+ [Bug #6155]
+
+Mon Mar 19 16:34:14 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enum.c (zip_i): variadic argument needs explicit cast on the
+ platforms where VALUE is longer than int.
+
+Mon Mar 19 15:36:41 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (enumerable_lazy): add an example of take and first
+ to the documentation. [ruby-core:43344] [Bug #6158]
+ add the description of the behavior when a block is given to zip
+ or cycle.
+
+Mon Mar 19 15:20:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_specialized_instruction): DRY and replace chain
+ of if-else with switch for special instructions. based on a
+ patch by Vasfed. https://github.com/ruby/ruby/pull/105
+
+Mon Mar 19 15:05:54 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/test_pty.rb: same as r29280, skip tests when PTY allocation
+ failed (that's not our fault).
+
+Sun Mar 18 23:21:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (aligned_free): fix condition for free. memalign() and
+ posix_memalign() are not defined together normally.
+
+Sun Mar 18 18:31:45 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * gc.c (aligned_malloc, aligned_free): added fallback implementations
+ for platforms like OSX Leopard.
+
+Sun Mar 18 17:17:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_pow): estimate result bit size more precisely.
+ [ruby-core:30735][Feature #3429]
+
+Sun Mar 18 17:17:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (free_method_entry_i): method entry may be in
+ unlinked_method_entry_list. [ruby-core:43383][Bug #6171]
+
+Sun Mar 18 15:27:31 2012 Tanaka Akira <akr@fsij.org>
+
+ * compile.c: typo fix by Run Paint Run Run.
+ [ruby-core:28368] [Bug #2824]
+
+Sun Mar 18 10:01:02 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * lib/profiler.rb: support calling singleton methods of
+ an instance of BasicObject.
+
+Sat Mar 17 06:56:58 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c: Fix indentation of Class#inherited example.
+
+Sat Mar 17 01:46:05 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * string.c (trnext): fix bug with string ending with '\\'.
+ [ruby-dev:45374][Bug #6160]
+
+ * test/ruby/test_string.rb (TestString#test_delete): test for
+ above.
+
+Fri Mar 16 20:06:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (trnext): should advance char-wise.
+ [ruby-core:43335][Bug #6156]
+
+Fri Mar 16 17:42:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (block_append_gen): fix unreachable warning line number.
+ should warn at the code, not jump.
+
+Fri Mar 16 17:33:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_take): allocate buffer array before iteration, as well
+ as enum_first did.
+
+ * enum.c (enum_first): remove duplication.
+
+Fri Mar 16 14:43:18 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * load.c (ruby_init_ext): don't free the given pointer itself.
+ It is not guaranteed even that the pointer is on heap.
+
+Fri Mar 16 14:37:57 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (rb_mod_module_eval): fix the documentation of
+ class_eval to mention class variable lookup. [ruby-core:40649]
+ [Bug #5544]
+
+Fri Mar 16 14:27:11 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * vm_eval.c (rb_mod_module_eval): fix the documentation of
+ class_eval to mention constant lookup. [ruby-core:41718]
+ [Bug #5777]
+
+Fri Mar 16 14:10:45 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (initialize): raise Net::IMAP::Error when the
+ connection is closed without a greeting response.
+ [ruby-core:40938] [Bug #5616]
+
+Fri Mar 16 13:50:12 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (rfc822_text): ignore [] after RFC822.
+ [ruby-core:40945] [Bug #5620]
+
+Fri Mar 16 12:00:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (argument_error): use line number at the beginning
+ of lambda, not the first code of its body.
+ [ruby-core:43314][Bug #6151]
+
+ * iseq.c (rb_iseq_first_lineno): constified.
+
+Fri Mar 16 11:20:07 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_take): don't enumerate an extra value.
+ [ruby-dev:45370] [Bug #6152]
+
+Fri Mar 16 06:30:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (lazy_zip_func): variadic argument needs explicit cast
+ on the platforms where VALUE is longer than int.
+
+ * enumerator.c (lazy_init_iterator): no need to check overflow twice.
+
+Fri Mar 16 05:47:09 2012 Eric Hodel <drbrain@segment7.net>
+
+ * enumerator.c (lazy_init_iterator): Fix type error (int vs long).
+
+Thu Mar 15 23:13:36 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enum.c (rb_enum_values_pack): rename from enum_values_pack, and
+ remove static.
+
+ * enumerator.c (lazy_init_iterator, lazy_init_yielder,
+ lazy_select_func, lazy_reject_func, lazy_grep_func): handle
+ multiple values correctly.
+
+ * enumerator.c (lazy_grep): change the behavior when a block is
+ given, to be consistent with Enumerable#grep.
+
+Thu Mar 15 19:12:31 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_zip): rescue StopIteration returned by
+ Enumerator#next.
+
+Thu Mar 15 18:19:53 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_zip, lazy_cycle): Enumerator::Lazy#{zip,cycle}
+ should be eager when a block is given, to be consistent with
+ Enumerable#{zip,cycle}.
+
+Thu Mar 15 17:45:27 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (InitVM_Enumerator): renamed Enumerable::Lazy to
+ Enumerator::Lazy.
+
+Thu Mar 15 16:37:38 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (enumerable_lazy): added cycle to the documentation.
+
+Thu Mar 15 15:37:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yylex): fix warning line number.
+
+Thu Mar 15 15:19:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (lazy_cycle): check argument number overflow before
+ creating temporary array.
+
+Thu Mar 15 15:04:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (ruby_strtod): no need to check same digit for hexdigit
+ twice. [ruby-dev:45363][Bug #6146]
+
+ * parse.y (sym_check_asciionly): check ascii compatibility before
+ scanning for code range.
+
+ * parse.y (intern_str): set to us-ascii if ascii only.
+ [ruby-dev:45363][Bug #6146]
+
+ * file.c (ruby_enc_find_basename): allow NULL as alllen.
+ [ruby-dev:45363][Bug #6146]
+
+Thu Mar 15 14:49:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_conv_enc_opts): default to original encoding.
+
+Thu Mar 15 13:47:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * hash.c (env_str_new, rb_f_getenv, env_fetch): use rb_str_conv_enc()
+ instead of rb_str_encode() to simplify the code.
+
+Thu Mar 15 12:44:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_ugetenv): new API to
+ accept and to return UTF-8 strings.
+
+ * win32/win32.c (rb_w32_getenv): follow above change.
+
+ * win32/win32.c (rb_w32_get_environ): returns UTF-8 environment area.
+
+ * hash.c (env_str_new, rb_f_getenv, env_fetch): follow above changes.
+ [Bug #5570] [ruby-core:40737]
+
+Thu Mar 15 10:57:27 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_cycle): add Enumerable::Lazy#cycle.
+
+Thu Mar 15 10:31:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_arity.rb (TestArity#err_mess): use assert_raise.
+
+Thu Mar 15 07:03:52 2012 Eric Hodel <drbrain@segment7.net>
+
+ * vm_eval.c (check_funcall): Raise ArgumentError if respond_to?
+ requires more than three arguments. [Bug #6000]
+
+ * test/ruby/test_object.rb (class TestObject): Test for respond_to?
+ requiring more than three arguments.
+
+Thu Mar 15 06:08:06 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * include/ruby/intern.h: Add rb_check_arity, rb_error_arity [#6085]
+
+ * array.c: Use rb_check_arity / rb_error_arity
+
+ * class.c: ditto
+
+ * enumerator.c: ditto
+
+ * eval.c: ditto
+
+ * file.c: ditto
+
+ * hash.c: ditto
+
+ * numeric.c: ditto
+
+ * proc.c: ditto
+
+ * process.c: ditto
+
+ * random.c: ditto
+
+ * re.c: ditto
+
+ * signal.c: ditto
+
+ * string.c: ditto
+
+ * struct.c: ditto
+
+ * transcode.c: ditto
+
+ * vm_eval.c: ditto
+
+ * vm_insnhelper.c: ditto & implementation of rb_error_arity
+
+ * test/ruby/test_arity.rb: tests for above
+
+Thu Mar 15 06:08:05 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * vm_insnhelper.c: improve number of arguments error in case of
+ optional parameters (issue #6085)
+
+ * include/ruby/intern.h: define UNLIMITED_ARGUMENTS
+
+ * test/ruby/test_arity.rb: test for above
+
+Thu Mar 15 00:58:04 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (enumerable_lazy): fix the documentation of
+ Enumerable#lazy.
+
+Wed Mar 14 22:01:06 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_init_iterator): break when Qundef is returned
+ to make obj.drop(3).take(2) work properly.
+
+ * enumerator.c (lazy_take_while): add Enumerable::Lazy#take_while.
+
+ * enumerator.c (lazy_drop): add Enumerable::Lazy#drop.
+
+ * enumerator.c (lazy_drop_while): add Enumerable::Lazy#drop_while.
+
+ * enumerator.c (InitVM_Enumerator): add Enumerable::Lazy#force as an
+ alias of to_a.
+
+Wed Mar 14 19:28:40 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_take): add Enumerable::Lazy#take.
+
+Wed Mar 14 18:40:36 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c: use long for array indices.
+
+Wed Mar 14 18:25:18 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c: moved the comment of StopIteration.
+
+Wed Mar 14 17:55:29 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (flodivmod): must go through the same pass if HAVE_FMOD or
+ not. this is a bugfix of r35013.
+
+Wed Mar 14 16:41:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/test_tmpdir.rb (TestTmpdir#test_world_writable): skip on Windows.
+
+Wed Mar 14 15:09:23 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c: fix flodivmod for cornercases [Bug #6044]
+ add ruby_float_mod
+
+ * insns.def (opt_mod): use ruby_float_mod
+
+ * internal.h: declare ruby_float_mod
+
+ * test/ruby/test_float.rb: tests for above
+
+ * test/ruby/envutil.rb: create helper assert_is_minus_zero
+
+Wed Mar 14 10:44:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (lazy_grep_func): should use === instead of =~, as
+ well as Enumerable#grep
+
+Wed Mar 14 08:15:54 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_flat_map_func): use each for non-Array objects.
+
+Wed Mar 14 08:06:35 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_zip): add Enumerable::Lazy#zip.
+
+ * enumerator.c (lazy_lazy): just returns self.
+
+Wed Mar 14 07:48:36 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (datetime_s_now): [ruby-core:43256].
+
+Tue Mar 13 22:00:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_set_arguments): keyword rest arg without keyword args.
+
+ * node.c (dump_node): dump kw_rest_arg too.
+
+ * parse.y (block_param, f_arg): more kwrest patterns.
+ [ruby-core:42455][Bug #5989]
+
+ * parse.y (new_args_gen): no extra kw_rest_arg if no keyword rest arg.
+
+Tue Mar 13 15:17:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (block_param, f_args): add rules for the case arguments
+ begin with kwrest. [ruby-core:42455][Bug #5989]
+
+Tue Mar 13 12:37:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_encoding_set): always warn if external encoding and internal
+ encoding are identical. [ruby-core:40727] [Bug #5568]
+
+Tue Mar 13 12:37:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c: add ObjectSpace::WeakMap. [ruby-dev:44565][Bug #5350]
+
+ * lib/weakref.rb: use WeakMap instead of _id2ref.
+
+Tue Mar 13 10:59:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (prepare): skip if basedir is not defined.
+ [ruby-core:39135][Bug #5238]
+
+ * tool/rbinstall.rb (CONFIG.[]): check for mandatory
+ configurations.
+
+Tue Mar 13 00:09:18 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (enumerable_lazy): added documentation.
+
+Mon Mar 12 20:19:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/tmpdir.rb (Dir::tmpdir): test the current directory suitable for
+ temporary directory.
+
+Mon Mar 12 20:08:16 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/fileutils.rb (fu_have_symlink?): specify TypeError for rescue
+ clause.
+
+Mon Mar 12 19:23:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_find_encoding): new function find encoding from
+ arbitrary object as a pointer to rb_encoding, and return NULL if
+ not found.
+
+ * io.c (io_encoding_set): just warn unsupported encodings, but not
+ exception. [ruby-core:40726] [Bug #5567]
+
+Mon Mar 12 19:03:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (Init_eval_method): respond_to? and
+ respond_to_missing? are public.
+
+Mon Mar 12 14:56:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (NEW_YIELD), parse.y (new_yield_gen): array-values flags
+ has been already obsolete. patch by Thomas Enebo.
+ [ruby-core:41929][Bug #5847]
+
+Mon Mar 12 12:44:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_method.c (Init_eval_method): copy basic methods to Exception.
+ [ruby-core:40287][Bug #5473]
+
+Mon Mar 12 10:13:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_jump.c (rb_exec_end_proc): remember the latest exit status.
+ [ruby-core:43173][Bug #5218]
+
+Mon Mar 12 07:33:12 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/tmpdir.rb: update document for changing
+ FileUtils.remove_entry_secure to FileUtils.remove_entry.
+
+ * NEWS: add incompatibility note for lib/tmpdir.rb.
+
+Mon Mar 12 07:19:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/tmpdir.rb (Dir.tmpdir): should not use world-writable but
+ non-sticky directory.
+
+ * lib/tmpdir.rb (Dir.mktmpdir): check the parent directory.
+
+Mon Mar 12 07:04:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (Init_Random): removed rb_Random_DEFAULT and register as
+ mark-object instead of global variable.
+
+Mon Mar 12 07:03:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * random.c (random_s_rand): ensure default PRNG is re-initialized
+ after fork. patched by Eric Wong. [ruby-core:41209][Bug #5661]
+
+Sun Mar 11 23:57:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * pack.c (pack_unpack): when unpack('M') occurs an illegal byte
+ sequence, output the "=" character and the following character in
+ the decoded data without any transformation.
+ [ruby-dev:44875] [Bug #5635]
+
+Sun Mar 11 22:32:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Merge 164a75c8bd2007d32c4d7665d53140d8fc126dcd.
+ [ruby-core:41917] [Bug #5846]
+
+Sun Mar 11 17:10:04 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Put error message into STDERR if failed to launch
+ worker (job) process. [ruby-dev:44802] [Bug #5577]
+
+ * lib/test/unit/parallel.rb: If failed to increment_io, exit with code
+ 2. [ruby-dev:44802] [Bug #5577]
+
+Sun Mar 11 15:46:45 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * io.c: fix rdoc of `IO.binwrite` to show same as `IO.write` except
+ it opens file with mode "wb:ASCII-8BIT". [Bug #5782] [ruby-core:42592]
+
+Sat Mar 10 23:52:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c: pack tables also generic keys. patched by Sokolov Yura at
+ https://github.com/ruby/ruby/pull/84
+
+ * st.c: add st_foreach_check for fixing iteration over packed table
+ and st_delete_safe. patched by Sokolov Yura at
+ https://github.com/ruby/ruby/pull/84
+
+ * st.c: fix packed num_entries on delete_safe. patched by Sokolov
+ Yura at https://github.com/ruby/ruby/pull/84
+
+Fri Mar 9 14:29:32 2012 Shugo Maeda <shugo@ruby-lang.org>
+
+ * enumerator.c (lazy_flat_map): add Enumerable::Lazy#flat_map.
+
+Fri Mar 9 06:29:22 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb (load, parse): stop parsing or loading after
+ the first document has been parsed.
+
+ * test/psych/test_stream.rb: pertinent tests.
+
+Fri Mar 9 06:17:05 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb (parse_stream, load_stream): if a block is
+ given, documents will be yielded to the block as they are parsed.
+ [ruby-core:42404] [Bug #5978]
+
+ * ext/psych/lib/psych/handlers/document_stream.rb: add a handler that
+ yields documents as they are parsed
+
+ * test/psych/test_stream.rb: corresponding tests.
+
+Fri Mar 9 00:35:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (lazy_initialize, enumerable_lazy): no additional
+ arguments.
+
+Fri Mar 9 00:30:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c: add Enumerable#lazy. based on the patch by
+ Innokenty Mikhailov at <https://github.com/ruby/ruby/pull/101>
+ [ruby-core:37164] [Feature #4890]
+
+Fri Mar 9 00:25:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enumerator.c (enumerator_each, generator_each): pass arguments to
+ the block with yielder.
+
+Fri Mar 9 00:25:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_cat): new function to concat objects into array.
+
+Thu Mar 8 16:44:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * .gdbinit (rb_numtable_entry): update for recent refactoring of
+ st_table.
+
+Wed Mar 7 22:41:50 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/xmlrpc/client.rb (module XMLRPC): fix typo.
+
+ * test/xmlrpc/test_client.rb (test_async_call): add test for
+ XMLRPC::Client#call_async to check above fix.
+
+Wed Mar 7 16:30:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_load_fail): should honor encoding.
+
+ * load.c (load_failed): ditto.
+
+Wed Mar 7 12:26:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_load_fail): use path as a string, not char*.
+
+ * internal.h: (rb_load_fail): moved from ruby/intern.h.
+
+ * ruby.c (load_file_internal): fname cannot be NULL.
+
+Wed Mar 7 08:32:43 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * error.c (rb_loaderror_with_path): Adding the missing file as an
+ instance variable to the LoadError exception.
+ [ruby-core:39079]
+
+ * load.c: call rb_loaderror_with_path so that the missing path is
+ added to the exception.
+
+ * ruby.c: call rb_loaderror rather than raising our own LoadError
+ exception.
+
+ * include/ruby/intern.h: add declaration for rb_loaderror_with_path.
+
+ * test/ruby/test_require.rb: add supporting test for LoadError#path
+ method.
+
+Wed Mar 7 08:28:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/parser.rb: support i8 types. Thanks Stas Kelvich!
+ [ruby-core:29246] [Feature #3090]
+
+ * test/xmlrpc/test_client.rb: supporting test
+
+Wed Mar 7 07:43:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb: assume servers that do not send a Content-Type
+ header are sending 'text/xml'. Thanks Nathan Leavitt!
+ [ruby-core:41204] [Bug #5660]
+
+ * test/xmlrpc/test_client.rb: supporting test
+
+Wed Mar 7 07:39:28 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/xmlrpc/test_client.rb: adding a test for performing an XMLRPC
+ call.
+ * test/xmlrpc/data/blog.xml: supporting XML document for the response.
+
+Tue Mar 6 16:24:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string): escape simple regexp meta
+ character terminators.
+
+Tue Mar 6 10:11:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (set_rawmode): clear ECHOE and ECHOK
+ bits too.
+
+ * ext/io/console/console.c (echo_p): ignore ECHOE and ECHOK bits.
+ [ruby-dev:45309] [Bug #6116]
+
+ * ext/io/console/console.c (console_raw): fix rdoc.
+
+ * ext/io/console/console.c (console_set_echo): mentioned about
+ platform dependency.
+
+Tue Mar 6 07:18:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb: switch net/http post2 calls to modern
+ `request_post` methods.
+
+Tue Mar 6 02:31:20 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/core_ext.rb: only extend Kernel if IRB is loaded
+ in order to stop method pollution.
+
+Tue Mar 6 01:34:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (block_call): rules for block_call after block_call.
+ based on a patch by pasberth https://github.com/ruby/ruby/pull/102
+ [ruby-dev:45308][Bug #6115]
+
+Tue Mar 6 01:24:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (block_command, block_call): simplified rules.
+
+Mon Mar 5 18:28:35 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_regexp.rb (TestRegexp#test_source): fix typo.
+ * test/ruby/test_regexp.rb (TestRegexp#test_equal): ditto.
+
+Mon Mar 5 17:11:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/lib/syck/rubytypes.rb (Exception.yaml_new): fix bug
+ that causes YAML serialization problem for Exception.
+ Exception#initialize doesn't use visible instance variable for
+ the exception message, so call the method with the message.
+ patched by Jingwen Owen Ou <jingweno AT gmail.com>.
+ http://github.com/ruby/ruby/pull/41
+
+Mon Mar 5 16:50:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_sleep.rb (TestSleep#test_sleep_5sec): syntax error.
+
+ * test/ruby/test_sleep.rb (TestSleep#test_sleep_5sec): call uname
+ only on linux because it's a workaround for linux only.
+
+Mon Mar 5 12:44:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (unpack_entries): chain entries directly. based on a patch
+ by Sokolov Yura <funny.falcon AT gmail.com>.
+
+ * st.c (unpack_entries): use union instead of casted pointer.
+ patched by Sokolov Yura <funny.falcon AT gmail.com>.
+
+ * st.c: use PACKED_ENT and FIND_ENTRY. patched by Sokolov
+ Yura <funny.falcon AT gmail.com>.
+
+ * st.c (unpack_entries): reallocate bins if packed array size
+ is not same as initial bins size. based on a patch by
+ Sokolov Yura <funny.falcon AT gmail.com>.
+
+Mon Mar 5 11:51:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/bigdecimal/lib/bigdecimal/math.rb: remove description about
+ BigMath#log. patched by Sho Hashimoto [ruby-dev:45307] [Bug #6112]
+
+ * string.c (str_byteslice): fix typo.
+
+Sun Mar 4 23:21:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string): regexp engine doesn't need
+ terminators to be escaped. [ruby-core:40364][Bug #5484]
+
+Sat Mar 3 22:51:46 2012 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_run_exec_options_err): chdir at last to interpret
+ relative pathnames from the current directory of the parent process.
+
+Sat Mar 3 12:20:44 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strftime.c: reassigned some variables.
+
+Sat Mar 3 12:12:16 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_{parse,strptime}.c: [ruby-dev:45303].
+
+Sat Mar 3 10:09:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb (initialize): net/http defaults to 1_2 in 1.8+,
+ so we can safely remove the call to enable it.
+
+Sat Mar 3 08:42:25 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb (new2): use URI for uri parsing.
+ * test/xmlrpc/test_client.rb: test that query params are passed to the
+ client constructor.
+
+Sat Mar 3 08:20:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb (new2): raises an ArgumentError on bad
+ arguments.
+ * test/xmlrpc/test_client.rb: tests for bad uris
+
+Sat Mar 3 08:08:11 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/xmlrpc/client.rb (new2): fix custom port specification when an
+ SSL uri is used.
+ * test/xmlrpc/test_client.rb: tests for XMLRPC::Client.new2
+
+Sat Mar 3 08:03:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/syck/rubyext.c (mktime_do): use ISDIGIT().
+ [ruby-core:43060] [Bug #6108]
+
+ * ext/syck/token.c (sycklex_yaml_utf8): cast as unsigned char.
+ [ruby-core:43060] [Bug #6108]
+
+Sat Mar 3 06:57:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (ruby_pc): make configurable. [Bug #6051]
+
+Fri Mar 2 17:49:03 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * .travis.yml (branches): Enable TravisCI for ruby_1_9_3.
+
+Fri Mar 2 17:13:33 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/ruby/test_array.rb (test_combination2): Make the test case for
+ [ruby-core:29240] more descriptive.
+ cf. http://bugs.jruby.org/6518
+
+Fri Mar 2 16:37:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (file_expand_path): use wcscasecmp().
+
+Fri Mar 2 16:36:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.c (native_cond_timeout): cast explicitly to suppress
+ a warning.
+
+Fri Mar 2 16:35:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): cmd is no longer used if fork is available.
+
+Thu Mar 1 16:13:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h (rb_file_const, rb_file_load_ok): moved functions for
+ internal use only.
+
+Thu Mar 1 15:40:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/makedirs.bat: new command to make intermediate
+ directories, and not to report any errors if the directory
+ already exists.
+
+ * win32/Makefile.sub (MAKEDIRS): enable command extensions.
+
+Thu Mar 1 01:25:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (is_onechar_cclass): optimize character class
+ Merge Onigmo 27278c12e6674043cc8affca6507e20e119a86ee.
+
+ * regparse.c (is_onechar_cclass): [bug] unexpected match occurs when a
+ char class contains no char
+
+ * enc/unicode.c (init_case_fold_table): define the sizes of case
+ folding tables in casefold.h
+
+Wed Feb 29 16:11:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub (MAKEDIRS): use mkdir of cmd.exe instead of ruby.
+ [Bug #6103] [ruby-core:43012]
+
+ * win32/README.win32: added a notice about command extension of cmd.exe.
+
+Wed Feb 29 15:39:39 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_readpartial_locktmp): skip on
+ windows because of the platform restriction.
+
+Wed Feb 29 15:38:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/memory_status.rb (Memory): syntax error.
+
+Wed Feb 29 13:06:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/memory_status.rb: use /proc/self/status if it is in
+ the expected format.
+
+Wed Feb 29 06:14:51 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: reverted r34825.
+
+Tue Feb 28 23:20:01 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * Makefile.in (PLATFORM_DIR): add a variable for `win32` directory.
+ * Makefile.in (clean-platform): add new target.
+ It cleans `win32` directory.
+
+ * common.mk (clean): add a dependency for `win32` directory.
+ * common.mk (distclean): ditto.
+ * common.mk (distclean-platform): add new target.
+ It cleans `win32` directory.
+ * common.mk ($(PLATFORM_D)): add new target to make `win32` directory.
+ * common.mk (win32/win32.$(OBJEXT)): move win32.o into `win32`
+ directory.
+ * common.mk (win32/file.$(OBJEXT)): add new target for win32/file.c.
+
+ * configure.in: move win32.o into `win32` directory and add
+ win32/file.o to MISSING.
+
+ * file.c (file_load_ok, rb_file_load_ok): replace static
+ file_load_ok() with public rb_file_load_ok().
+ It's to link Windows implementation in win32/file.c.
+ * file.c (rb_find_file_ext_safe): ditto.
+ * file.c (rb_find_file_safe): ditto.
+
+ * win32/file.c (rb_file_load_ok): new file. Add Windows specific
+ optimized implementation of rb_file_load_ok(). We created a
+ separated file to avoid too many #ifdef macro which is unreadable.
+
+ * win32/Makefile.sub (PLATFORM_DIR): add a variable for `win32`
+ directory.
+ * win32/Makefile.sub (MISSING): move win32.obj into `win32`
+ directory and add win32/file.obj to MISSING.
+ * win32/Makefile.sub (MAKEDIRS): replace MINIRUBY with BASERUBY.
+ It's because miniruby doesn't exist when making `win32` directory.
+ * win32/Makefile.sub (clean-platform): add new target to clean `win32`
+ directory.
+ * win32/Makefile.sub ({$(srcdir)}.c{}.obj): make it not match
+ win32/file.c to build properly.
+ * win32/Makefile.sub (win32/win32.$(OBJEXT)): move win32.obj into
+ `win32` directory.
+
+ Patch created with Luis Lavena.
+ [ruby-core:42480] [Feature #5999]
+
+Tue Feb 28 20:27:25 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:42998]
+
+Tue Feb 28 18:47:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_binwrite, rb_io_syswrite): use shared frozen source
+ strings.
+
+ * io.c (io_fread, io_getpartial, rb_io_sysread): set buffer size
+ after check if readable, which can cause thread switch.
+ [ruby-dev:45297][Bug #6099]
+
+Tue Feb 28 17:16:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/time.rb (Time#xmlschema): use strftime specifiers instead of
+ fractional exponential calculation which yields undesirable
+ result. [ruby-core:42997][Bug #6100]
+
+Tue Feb 28 14:15:29 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/protocol.rb: Add OpenTimeout subclass of Timeout::Error
+ * lib/net/pop.rb: Modernize Timeout usage. Patch by Eric Wong.
+ Use Net::OpenTimeout instead of Timeout::Error. [Bug #5765]
+ * lib/net/http.rb: ditto
+ * lib/net/smtp.rb: ditto
+ * lib/net/telnet.rb: ditto
+
+Tue Feb 28 13:51:12 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Retry HTTP requests for additional network errors.
+ Introduce OpenTimeout subclass of Timeout::Error. [Bug #6001]
+ * test/net/http/test_http.rb: Reduce timeout to 0.01s for faster test
+ * test/net/http/test_https.rb: ditto
+
+Tue Feb 28 11:44:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (debugflags): check if -ggdb is accepted.
+ [ruby-core:42875][Bug #6080]
+
+Tue Feb 28 10:28:51 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: default open YAML files with utf8 external
+ encoding. [ruby-core:42967]
+ * test/psych/test_tainted.rb: ditto
+
+Mon Feb 27 23:46:09 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (opt_bv_decl): allow newline at the end. [ruby-dev:45292]
+
+Mon Feb 27 20:43:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_set_pos): add rdoc about textmode.
+
+ * test/ruby/test_io.rb (TestIO#test_setpos): use binmode.
+
+Mon Feb 27 17:00:15 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * string.c (rb_str_crypt): Update rdoc and state that this
+ function is system dependent. Reviewed by nobu, thanks to
+ @takai.
+
+Mon Feb 27 17:03:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): since methods
+ can be overridden, so should not make an assumption on the type
+ of results. [ruby-core:42969][Bug #6093]
+
+Mon Feb 27 10:54:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (try_cppflags, try_cflags, try_ldflags): replace the
+ target flags if the given flag is accepted.
+
+Mon Feb 27 10:53:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/rubygems/test_gem_specification.rb (test_self_from_yaml_syck_default_key_bug):
+ ignore the test for too old versions.
+
+Mon Feb 27 10:53:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit.rb (Test::Unit::Runner#puke): skips with no
+ messages should be trivial.
+
+Mon Feb 27 10:50:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c, process.c, time.c, ext: use rb_sys_fail_str instead of
+ rb_sys_fail.
+
+Mon Feb 27 10:48:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/openssl/extconf.rb: suppress useless deprecation warnings
+ from OpenSSL added by Apple.
+
+Sun Feb 26 23:29:49 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (add_code_range_to_buf0): wrong condition of duplicated
+ warnings.
+
+Sun Feb 26 11:26:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (iseq_compile_each): call on special object instead of
+ self. since stabby lambda is a syntax, so it should not be
+ affected by the context. [ruby-core:42349][Bug #5966]
+
+ * insns.def (send): no special deal for FCALL. self should be put
+ on TOS instead.
+
+Sun Feb 26 05:35:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * error.c (report_bug): use buf and snprintf to avoid consuming stack.
+ [ruby-dev:45272] [Bug #6058]
+
+Sat Feb 25 17:41:19 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb (headers): try ambiguous headers at last.
+
+Sat Feb 25 17:07:15 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/fileutils.rb: use chomp(?/) instead of sub to optimize and avoid
+ to regexping invalid string.
+
+Sat Feb 25 16:18:24 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * complex.c (nucomp_marshal_load): raise error on invalid data.
+ reported by John Firebaugh [ruby-core:42860] [Bug #6076]
+
+Sat Feb 25 14:46:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl.c (Init_dl): support intrinsic types, size_t, ptrdiff_t
+ and intptr_t. [ruby-core:42460][Feature #5992]
+
+ * ext/fiddle/fiddle.c (Init_fiddle): ditto.
+
+ * ext/dl/lib/dl/cparser.rb (DL::CParser#parse_ctype): ditto.
+
+Sat Feb 25 11:08:28 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c (Init_curses): use rb_define_const once for
+ Curses::VERSION.
+
+ * ext/dbm/dbm.c (Init_dbm): ditto for DBM::VERSION.
+
+Sat Feb 25 10:34:22 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c (Init_curses): make Curses::VERSION
+ understandable without context.
+
+ * ext/dbm/dbm.c (Init_dbm): ditto for DBM::VERSION.
+
+Sat Feb 25 07:53:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string): insert a backslash only if
+ quoted by single quotes. [ruby-dev:45281] [Bug #6069]
+
+Sat Feb 25 07:53:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_inspect), io.c (rb_io_inspect): keep encoding of path.
+ [Bug #6072]
+
+Sat Feb 25 07:53:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_initialize): keep path in original encoding.
+
+ * error.c (syserr_initialize): prefer the encoding of message over
+ locale. [ruby-dev:45279][Bug #6071]
+
+Sat Feb 25 06:55:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (utime_internal): fix a variable missed to replace.
+ [ruby-core:42864] [Bug #6077]
+
+Fri Feb 24 18:21:55 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/zlib/test_zlib.rb (TestZlibGzipReader#test_encoding): Add
+ encoding testcases for GzipReader#read. read() emits
+ Encoding.default_external in contrast to read(size) emits BINARY.
+ See also: http://bugs.jruby.org/6208
+
+Fri Feb 24 17:56:39 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/ruby/test_literal.rb (TestRubyLiteral#test_special_const):
+ test for https://bugs.php.net/bug.php?id=61095
+
+Fri Feb 24 16:48:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c, file.c, io.c (rb_sys_fail_path): use rb_sys_fail_str.
+
+ * error.c: new functions to deal exceptions with string instances.
+
+ * dir.c, file.c, io.c: use rb_sys_fail_path.
+
+Fri Feb 24 15:49:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (__builtin_unreachable): check for clang.
+ [ruby-core:42849]
+
+ * include/ruby/ruby.h (UNREACHABLE): fallback definition.
+
+Fri Feb 24 13:54:33 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: prevent a memory leak by protecting calls to
+ handler callbacks.
+ * test/psych/test_parser.rb: test to demonstrate leak.
+
+Fri Feb 24 12:07:34 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/net/http.rb: Fix documentation. Patched from Florian Mhun
+ via http://github.com/ruby/ruby/pull/96
+
+Fri Feb 24 11:48:07 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * string.c (rb_str_prepend): Fix documentation for String#prepend.
+ Patched from Franck Verrot via http://github.com/ruby/ruby/pull/98
+ and Andrew Horsman via http://github.com/ruby/ruby/pull/55
+
+Fri Feb 24 10:08:33 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb (Net::HTTP#transport_request): Fix infinite loop
+ upon EOFError or Errno::ECONNRESET where count is reset to 0.
+ * test/net/http/test_http.rb (class TestNetHTTPKeepAlive): Test for
+ above.
+
+Fri Feb 24 09:05:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * complex.c (Init_Complex): Document Complex::I. Patch by Sylvain
+ Daubert. [Feature #5623]
+
+Fri Feb 24 08:52:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string, parser_yylex): insert a backslash
+ if the next character is non-ascii. [ruby-dev:45278] [Bug #6069]
+
+Fri Feb 24 08:13:20 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/profiler.rb: Add Profiler documentation by Gonzalo Rodriguez.
+ [Bug #5816]
+
+Fri Feb 24 08:08:38 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: set parser encoding based on the YAML input
+ rather than user configuration.
+ * test/psych/test_encoding.rb: corresponding tests.
+ * test/psych/test_parser.rb: ditto
+ * test/psych/test_tainted.rb: ditto
+
+Fri Feb 24 08:02:52 2012 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c (Init_Hash): Add section on how objects are used as Hash keys
+ and how to use custom classes as Hash keys.
+
+Fri Feb 24 07:36:11 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (rb_obj_eql): Improve equality documentation by adding an
+ example of equal? vs == and recommending eql? be aliased to == when
+ overridden.
+
+Fri Feb 24 07:21:15 2012 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (rb_obj_hash): Added note that the hash value is not
+ deterministic on Marc-Andre's suggestion. Expanded description of
+ the purpose of the hash method. [Bug #6068]
+
+Thu Feb 23 23:01:21 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: unused macro removed.
+
+Thu Feb 23 22:26:53 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/test_curses.rb: new file.
+
+Thu Feb 23 19:57:56 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/rain.rb: trap SIGHUP, SIGINT, SIGQUIT and SIGTERM only.
+
+Thu Feb 23 19:56:48 2012 Tanaka Akira <akr@fsij.org>
+
+ * signal.c (sig_trap): show signal name on error.
+
+Thu Feb 23 12:21:48 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: use DBM_SUFFIX only to detect header of
+ Berkeley DB.
+
+Thu Feb 23 10:00:18 2012 Eric Hodel <drbrain@segment7.net>
+
+ * io.c (rb_io_f_sync): Fix double-negative typo. [ruby-trunk - #5837]
+
+Thu Feb 23 09:57:21 2012 Eric Hodel <drbrain@segment7.net>
+
+ * load.c (rb_f_require): Add note to require for scope of items in the
+ loaded file. [ruby-trunk - #5910]
+
+Thu Feb 23 03:58:08 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/ostruct.rb (delete_field): Bug fix so previous value is
+ returned. Patch by Nick Recobra [Bug #6063]
+
+Thu Feb 23 02:33:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): fail only if conflicting
+ text/binary modes given explicitly. [ruby-dev:45268][Bug #6055]
+
+Wed Feb 22 23:27:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/iconv/test_option.rb: enabled. [ruby-core:42802][Bug #6061]
+
+Wed Feb 22 21:45:56 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c: use defined() to suppress a warning.
+
+Wed Feb 22 21:44:29 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: refactored.
+
+Wed Feb 22 20:42:28 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: try to distinguish curses_version is a
+ function or variable.
+
+ * ext/curses/curses.c (Init_curses): refine Curses::VERSION.
+
+Wed Feb 22 19:47:03 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: show the chosen header and library.
+
+Wed Feb 22 19:22:31 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * reverted 34739 for test/date.
+
+Wed Feb 22 19:08:55 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: refactored.
+
+Wed Feb 22 18:44:41 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (setup_options): add option "--retry" as opposite
+ for "--no-retry"
+
+Wed Feb 22 18:34:02 2012 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (setup_options): add option "--show-skip" to
+ cancel "--hide-skip" (-q)
+
+Wed Feb 22 17:36:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_s_foreach): argument check before making Enumerator.
+ [ruby-dev:31525]
+
+Wed Feb 22 17:07:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_s_foreach): return enumerator including keyword
+ arguments. [ruby-dev:45267][Bug #6054]
+
+Wed Feb 22 12:15:16 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: allow llvm-gcc because it work fine with r34278.
+
+Wed Feb 22 10:57:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regparse.c (fetch_token): don't use // comment.
+
+Wed Feb 22 10:32:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/mkmf/test_framework.rb: try CoreFoundation framework, than
+ Cocoa which is dependent on QuickTime SDK which has separated
+ since Xcode 4.3.
+
+Wed Feb 22 10:18:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (test-all, test-ruby): more dependencies.
+
+Wed Feb 22 06:48:55 2012 Eric Hodel <drbrain@segment7.net>
+
+ * file.c (rb_f_test): Fix formatting of Kernel#test rdoc.
+
+Wed Feb 22 06:12:15 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: check DBM_SUFFIX for Mac OS X.
+ Its ndbm.h doesn't include db.h.
+
+Wed Feb 22 06:02:42 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c (fdbm_initialize): disable Berkeley DB error messages.
+
+ * ext/dbm/extconf.rb: check DBC type for above.
+
+ [ruby-dev:45269]
+
+Tue Feb 21 20:23:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (rb_any_hash): treat Qundef like as other special constants.
+
+ * hash.c (hash_foreach_iter): fix signature.
+
+Tue Feb 21 19:39:34 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c (Init_curses): use curses_version() for
+ Curses::VERSION.
+
+Tue Feb 21 18:21:25 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c : remove gc_clear_mark_on_sweep_slots() and use
+ rest_sweep() instead of it, because some dead objects might be
+ marked in next the mark phase by false pointers.
+ [ruby-core:42672]
+
+Tue Feb 21 16:08:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (rb_hash_proc): get wrapped pointer properly. [Bug #6048]
+
+Tue Feb 21 14:41:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/ruby.pc.in: added rubylibprefix, {rubylib,vendor,site}dir
+ and {ruby,vendor,site}archdir. [ruby-core:42766][Feature #6052]
+
+Tue Feb 21 09:13:25 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * proc.c (method_hash, proc_hash): Fix {Unbound}Method#hash
+ [Bug #6048]. Isolate hash computation for proc
+
+ * internal.h: Declaration for above
+
+ * vm_method.c (rb_method_definition_hash): Computation for
+ hash part of a method definition
+
+ * method.h: Declaration for above
+
+ * test/ruby/test_method.rb: Test for above
+
+Tue Feb 21 02:56:15 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * enumerator.c (enumerator_rewind): update the documentation.
+ fixed: #6053
+
+Mon Feb 20 23:38:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * enc/depend: ignore mktable.c because it's not encoding library.
+ [ruby-core:42760] [Bug #6049]
+
+Mon Feb 20 21:40:53 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: fold too long lines.
+
+Mon Feb 20 21:16:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * lib/fileutils.rb: revert a line modified accidentally at r34669.
+ This fixes mingw test errors in TestDir_M17N.
+ [ruby-core:42728] [Feature #4970]
+
+Mon Feb 20 21:09:27 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/curses.c (Init_curses): define Curses::VERSION.
+
+Mon Feb 20 21:08:00 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/curses/extconf.rb: restore $libs and $defs for each
+ header/library choice.
+
+Mon Feb 20 19:57:26 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: weaken header/library consistency check if db is
+ "ndbm". It seems several (possibly historical) distributions
+ provide libndbm. However the content of libndbm vary: Berkeley DB,
+ GDBM or even 4.3BSD NDBM. (Mandriva, Tru64 UNIX, OpenSuSE,
+ SCO OpenServer, ...)
+ "ndbm" is not searched automatically now (dblib doesn't contain it)
+ but configure --with-dbm-type=ndbm choose libndbm and ndbm.h.
+
+Mon Feb 20 19:15:57 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: refine variable names.
+
+Mon Feb 20 15:50:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check if -fstack-protector is really available.
+
+Sun Feb 19 23:43:38 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: show header and library found.
+
+Sun Feb 19 23:01:01 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c (Init_dbm): refine DBM::VERSION definition.
+
+ * ext/dbm/extconf.rb: provide RUBYDBM_GDBM_HEADER macro.
+
+Sun Feb 19 17:07:27 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb (test_dbmfile_suffix): check pag and dir is
+ empty for 4.3BSD ndbm.
+
+Sun Feb 19 03:00:30 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb (test_dbmfile_suffix): check magic numbers.
+
+Sun Feb 19 01:05:41 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: detect GDBM's ndbm.h by testing dbm_clearerr is
+ an empty macro.
+
+Sun Feb 19 00:25:55 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: don't choose 'dbm' if _GDB_H_ is defined which
+ is available since GDBM 1.9 because 'gdbm_compat' is appropriate
+ choice since GDBM 1.8.1.
+
+Sat Feb 18 23:27:00 2012 Kenta Murata <mrkn@mrkn.jp>
+
+ * random.c: remove a duplicated comment.
+
+Sat Feb 18 18:43:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb (dblib): prefer recent GDBM over older GDBM.
+ (have_declared_libvar): new function to check a declared variable
+ exists in a library.
+ (have_undeclared_libvar): renamed from renamed from have_libvar.
+ (headers.db_check2): check that GDBM version variable if GDBM header
+ is chosen.
+
+ * ext/dbm/dbm.c (Init_dbm): use HAVE_DECLARED_LIBVAR_GDBM_VERSION and
+ HAVE_UNDECLARED_LIBVAR_GDBM_VERSION macro.
+
+Sat Feb 18 13:53:01 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb (test_dbmfile_suffix): DBM::VERSION should
+ be Berkeley DB if foo.db is created by DBM.open.
+
+Sat Feb 18 13:40:37 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb (test_dbmfile_suffix): test dbm file suffix.
+
+Sat Feb 18 12:50:59 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c (DBM::VERSION): define it by detecting _GDBM_H_ or
+ _DBM_IOERR.
+
+Sat Feb 18 07:52:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/enc-unicode.rb: don't use 1.9 feature on tools.
+
+Sat Feb 18 02:48:39 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/fileutils.rb: refactored FileUtil methods to use the
+ `define_command` API. Patch from 7rans <transfire@gmail.com>
+ * test/fileutils/test_dryrun.rb: corresponding test refactoring
+ * test/fileutils/test_nowrite.rb: ditto
+ * test/fileutils/test_verbose.rb: ditto
+
+Fri Feb 17 21:39:36 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: remove dbm.
+
+Fri Feb 17 21:18:39 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: refine header/library mismatch detection.
+ check only for ndbm.h except libc. check _GDBM_H_ for gdbm.
+ check _DBM_IOERR for the original ndbm.
+
+Fri Feb 17 20:30:44 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: don't check libdbm. It is not a ndbm
+ implementation. (libdbm in Version 7 Unix is database library
+ for single database per process.)
+
+Fri Feb 17 15:38:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * Merge Onigmo-5.13.1. [ruby-dev:45057] [Feature #5820]
+ https://github.com/k-takata/Onigmo
+ cp reg{comp,enc,error,exec,parse,syntax}.c reg{enc,int,parse}.h
+ cp oniguruma.h
+ cp tool/enc-unicode.rb
+ cp -r enc/
+
+Fri Feb 17 15:20:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (enum_each_slice): arrays to be yielded can be newly
+ created in the block.
+
+ * enum.c: move work variables to objects not to let called blocks
+ access stack area out of scope. [Bug #5801]
+
+Fri Feb 17 12:35:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: remove borders from the commit message which is used
+ when the commit doesn't change ChangeLog.
+
+Fri Feb 17 11:50:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (btest, btest-ruby, test-sample test-knownbugs)
+ (test-all, test-ruby): depend on prog.
+
+Fri Feb 17 09:56:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (create_header): log the content of header.
+
+Fri Feb 17 09:44:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/transcode-tblgen.rb (import_ucm): don't use \h because the
+ script should work with ruby 1.8.
+
+ * tool/enc-unicode.rb: ditto.
+
+Fri Feb 17 07:33:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * enum.c (id_lshift): use constant ID.
+
+Fri Feb 17 07:30:53 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: refactored to split too long conditions.
+
+Fri Feb 17 00:23:25 2012 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb: fix skip condition for libgdbm 1.8.0 or prior.
+ reported by Bohuslav Kabrda.
+ [ruby-core:42685] [ruby-trunk - Bug #6036]
+
+Fri Feb 17 00:04:21 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: check _DB_H_ macro unavailable except
+ Berkeley DB library.
+
+Thu Feb 16 05:41:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (splatarray): make new array if flag is set.
+
+ * compile.c (iseq_compile_each): make new array with
+ splat. [ruby-core:21901][Feature #1125]
+
+Thu Feb 16 00:14:04 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/abbrev.rb (Array#abbrev): add missing '"' in documentation.
+
+Wed Feb 15 22:20:19 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (rb_fiber_reset_root_local_storage): add a new function to
+ restore rb_thread_t::local_storage.
+
+ * cont.c (rb_obj_is_fiber): add a new function to tell finalizer to
+ prevent fibers from destroy.
+
+ * gc.c (rb_objspace_call_finalizer): don't sweep fibers at finalizing
+ objspace.
+
+ * internal.h (rb_fiber_reset_root_local_storage, rb_obj_is_fiber):
+ add prototypes.
+
+ * vm.c (ruby_vm_destruct): reset main thread's local_storage before
+ free main thread. rb_thread_t::local_storage is replaced by fiber's
+ local storage when forked from fiber, and it should be already freed
+ when the fiber was destroyed. [ruby-core:41456] [Bug #5700]
+
+ * test/ruby/test_fiber.rb (test_fork_from_fiber): add test for fork
+ from fiber.
+
+Wed Feb 15 19:57:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/fiddle/closure.c (callback): deal with unsigned integers.
+ [ruby-core:42458][Bug #5991][Bug #6022]
+
+ * ext/fiddle/conversions.c (value_to_generic, generic_to_value):
+ ditto.
+
+ * ext/fiddle/closure.c (callback): same as r34506.
+
+Wed Feb 15 17:41:31 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (io_strsetbuf): call rb_str_modify to make str independent
+ before calling rb_str_set_len for r34580.
+
+Wed Feb 15 12:30:10 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (Init_zlib): Added Zlib::TEXT and note that
+ Zlib::ASCII is deprecated in zlib 1.2.3 and newer.
+
+Wed Feb 15 12:24:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Move constant descriptions to constants. Remove
+ extra comment block at the top of Init_zlib().
+
+Wed Feb 15 12:30:46 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/ostruct.rb: Create getters and setters after dup.
+ [Bug #6028] [rubyspecs:0380bcc]
+
+Wed Feb 15 10:59:52 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (HEAP_BITMAP_LIMIT): HEAP_BITMAP_LIMIT is computed on the
+ basis of HEAP_SIZE because it must covers a whole heap block.
+ [ruby-trunk - Bug #6006]
+
+Wed Feb 15 09:27:45 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (Init_zlib): Added Zlib::FIXED and Zlib::RLE
+ strategies.
+ * NEWS: Add note about the new Zlib constants.
+
+Wed Feb 15 09:11:36 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c: Improve documentation. [ruby-trunk - Bug #5948]
+
+Wed Feb 15 07:28:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * encoding.c (Init_Encoding): Add IO example of internal and external
+ encoding. Fixed a typo in the force_encoding example. [#5949]
+
+Wed Feb 15 06:58:21 2012 Eric Hodel <drbrain@segment7.net>
+
+ * encoding.c (Init_Encoding): Add Encoding documentation.
+ [ruby-trunk - Bug #5949]
+ * encoding.c (rb_set_default_external): Fix typo in documentation.
+
+Tue Feb 14 20:22:11 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (CEILDIV): rename to a appropriate name.
+
+Tue Feb 14 18:07:20 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (assign_heap_slot): SEGV happens cause on 64-bit platform
+ sometime there should be `objs-=2` instead of `objs--`.
+ [Bug #6006]
+ patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92
+
+Tue Feb 14 16:00:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_setstrbuf): cut down the buffer if longer.
+
+Tue Feb 14 15:06:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (build_message): skip escaped
+ question marks.
+
+Tue Feb 14 12:10:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (autoload_const_set, autoload_require): fix
+ signatures.
+
+Tue Feb 14 05:23:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * process.c (proc_wait): Change typo "SystemError" to
+ "SystemCallError". [ruby-trunk - Bug #5962]
+ * process.c (proc_wait2): ditto
+
+Tue Feb 14 05:18:24 2012 Eric Hodel <drbrain@segment7.net>
+
+ * enumerator.c: Document use of Enumerator.new for creating a lazy
+ enumeration for filtering/chaining. [ruby-trunk - Feature #707]
+
+Mon Feb 13 23:01:50 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * vm_method.c (rb_method_boundp):
+ obj.respond_to?(:a_protected_method) should return false because
+ calling a protected method may cause NoMethodError if called
+ from outside the class inheritance tree. Kernel#respond_to? is
+ mostly used to test if it is safe to call a method, so the false
+ positive should be avoided. [ruby-dev:40461] [ruby-dev:41739]
+ [ruby-dev:41837]
+
+Mon Feb 13 21:52:06 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (HEAP_OBJ_LIMIT, HEAP_BITMAP_LIMIT): HEAP_OBJ_LIMIT used
+ `sizeof(struct heaps_slot)` while heap is currently allocated
+ with `struct heaps_header`.
+ HEAP_BITMAP_LIMIT were calculated from
+ `HEAP_OBJ_LIMIT/sizeof(uintptr_t)` - one Byte for each object,
+ not one Bit. [Bug #6006]
+ patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92
+
+Mon Feb 13 18:30:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_setstrbuf): defer resizing buffer string until data is
+ read actually.
+
+Mon Feb 13 10:24:39 2012 Loren Segal <lsegal@soen.ca>
+
+ * io.c (Init_IO): use directive hack to make ARGF documentable
+ in other tools. [ruby-core:42515][Bug #6007]
+
+Sun Feb 12 20:43:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_event_hook_func_t): add argument names.
+
+Sun Feb 12 16:30:23 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * tool/merger.rb (#default_merge_branch): Add support for
+ Subversion 1.7 which adopted a whole new working directory
+ structure.
+
+Sun Feb 12 15:14:41 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * benchmark/driver.rb: suppress unused/shadowing variable warnings.
+
+Sun Feb 12 03:14:40 2012 Eric Hodel <drbrain@segment7.net>
+
+ * vm_eval.c (check_funcall): Call respond_to? with matching arity for
+ legacy single-argument implementations. [ruby-trunk - Bug #6000]
+
+Sat Feb 11 12:04:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * compile.c (defined_expr): guard the whole expression.
+ [ruby-dev:45021][Bug#5786]
+
+Sat Feb 11 08:34:42 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (rb_inflate_add_dictionary): Added
+ Zlib::Inflate#add_dictionary to allow users to pre-specify
+ for using during #inflate. [ruby-trunk - Feature #5937]
+
+Sat Feb 11 08:23:02 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (do_inflate): Inflate more data if buffered data
+ exists. Allows Zlib::Inflate#set_dictionary to work.
+ [ruby-trunk - Bug #5929]
+
+Sat Feb 11 06:00:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dir.c (fnmatch): The * needs to be escaped to avoid formatting in
+ fnmatch comment.
+ patched by @dalton. https://github.com/ruby/ruby/pull/91
+
+Fri Feb 10 03:41:31 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: removed external encoding setter, allow parser
+ to be reused.
+ * ext/psych/lib/psych/parser.rb: added external encoding setter.
+ * test/psych/test_parser.rb: test parser reuse
+
+Fri Feb 10 01:30:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl.h (ALIGN_OF): use offsetof().
+
+ * ext/dl/dl.h (DLALIGN): round up at once and get rid of overflow.
+
+Fri Feb 10 00:47:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (assert_no_memory_leak): new assertion to
+ check memory leak by invoking child ruby process and watch its
+ memory size.
+
+Thu Feb 9 23:41:44 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/pathname/test_pathname.rb (test_binread): add assertion to
+ check encoding.
+
+Thu Feb 9 16:48:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/dl.c (Init_dl): fix mangled document.
+
+Thu Feb 9 16:10:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/memory_status.rb (Memory::Win32): 64bit support.
+
+Thu Feb 9 16:08:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/value.rb (DL::ValueUtil.{unsigned_value,signed_value}):
+ currently pack/unpack does not accept "q!" and "Q!".
+
+Thu Feb 9 16:01:29 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/fiddle/conversions.c (value_to_generic): src is not guaranteed as
+ a Bignum if the type is LONG_LONG. it may be a Fixnum if the value
+ is small.
+
+Thu Feb 9 11:32:36 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/types.rb: Win64 support.
+
+Thu Feb 9 04:12:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/pathname/test_pathname.rb: not read but binread.
+ patched by Benoit Daloze, [ruby-core:42440] [Bug #5984]
+
+Wed Feb 8 22:29:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_modify_expand): fix memory leak.
+
+Wed Feb 8 14:06:59 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c: Add SSL constants and allow to unset SSL
+ option to prevent BEAST attack. See [Bug #5353].
+
+ In OpenSSL, OP_DONT_INSERT_EMPTY_FRAGMENTS is used to prevent
+ TLS-CBC-IV vulnerability described at
+ http://www.openssl.org/~bodo/tls-cbc.txt
+ It's known issue of TLSv1/SSLv3 but it attracts lots of attention
+ these days as BEAST attack. (CVE-2011-3389)
+
+ Until now ossl sets OP_ALL at SSLContext allocation and call
+ SSL_CTX_set_options at connection. SSL_CTX_set_options updates the
+ value by using |= so bits set by OP_ALL cannot be unset afterwards.
+
+ This commit changes to call SSL_CTX_set_options only 1 time for each
+ SSLContext. It sets the specified value if SSLContext#options= are
+ called and sets OP_ALL if not.
+
+ To help users to unset bits in OP_ALL, this commit also adds several
+ constant to SSL such as
+ OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS. These constants were
+ not exposed in Ruby because there's no way to unset bits in OP_ALL
+ before.
+
+ Following is an example to enable 0/n split for BEAST prevention.
+
+ ctx.options = OP_ALL & ~OP_DONT_INSERT_EMPTY_FRAGMENTS
+
+ * test/openssl/test_ssl.rb: Test above option exists.
+
+Wed Feb 8 13:12:02 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_x509name.c: Use the numerical representation of
+ unrecognized OIDs instead of the sn "UNDEF".
+
+ * test/openssl/test_x509name.rb: Add tests for the fixed behavior.
+
+ Patch provided by Paul Kehrer, thank you!
+ [ruby-core:41769] [Feature #5787]
+
+Wed Feb 8 09:49:58 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: don't abort, update first.
+
+Wed Feb 8 09:47:33 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: Call INT2NUM only once for GeneralString.
+ Thanks to Mantas Mikulenas for noticing and providing a patch!
+ [ruby-core:42358] [Bug #5972]
+
+Wed Feb 8 09:19:00 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_cipher.c: Add warning about key as IV.
+
+Tue Feb 7 20:08:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * error.c (exc_inspect): Fix typo. patch from Trent Ogren
+ via https://github.com/ruby/ruby/pull/90
+
+Tue Feb 7 19:37:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c: refactor packed entries using structs.
+
+Tue Feb 7 14:52:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_update): table can be unpacked in the callback.
+
+ * st.c (st_foreach): should not yield same pair when checking
+ after unpacking.
+
+Mon Feb 6 21:55:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/merger.rb: abort if the working directory is dirty.
+
+ * tool/merger.rb: update the working directory after commit.
+
+Mon Feb 6 00:16:27 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): return ASCII-8BIT even if 2nd string
+ is ascii only string. [ruby-core:42354] [Bug #5968]
+
+Fri Feb 3 07:16:47 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/webrick.rb: Moved proxy rewriting to WEBrick::HTTPProxy.
+ * lib/webrick/httpproxy.rb: Add examples of creating a proxy server
+ and response rewriting using HTTPProxy.
+
+Fri Feb 3 06:53:22 2012 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_x509store.c: Add class documentation for
+ OpenSSL::X509::Store
+
+Thu Feb 2 22:28:13 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/net/http/test_https_proxy.rb
+ (HTTPSProxyTest#test_https_proxy_authentication):
+ add workaround to avoid to hang up without openssl.
+ see [ruby-dev:45021][Bug #5786]
+
+ * test/resolv/test_dns.rb (TestResolvDNS#test_query_ipv4_address):
+ ditto.
+
+Thu Feb 2 21:48:18 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb: use meaningful names.
+
+Thu Feb 2 21:38:52 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb, test/rexml/test_namespace.rb:
+ fix the default xml namespace URI validation.
+ [ruby-dev:45169] [Bug #5956]
+ Reported by Miho Hiramatsu. Thanks!!!
+
+Thu Feb 2 17:51:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (argf_next_argv): reset ARGF.next_p on ARGV.replace.
+ r34409 breaks replacing ARGV.
+ [ruby-dev:45160] [Bug #5952]
+
+Thu Feb 2 16:21:01 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/net/http/test_http.rb (TestNetHTTPKeepAlive#*): remove debug
+ output.
+
+Thu Feb 2 01:24:34 2012 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * parse.y (debug_lines, coverage): set file path encoding for coverage
+ result. [ruby-dev:44950]
+
+Wed Feb 1 14:38:31 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/tempfile.rb (Tempfile#unlink, Tempfile::Remover#call): Just
+ call File.unlink and ignore ENOENT because existence check
+ before unlinking does not help in terms of race condition.
+
+ * lib/tempfile.rb (Tempfile#unlink, Tempfile::Remover#call): My
+ comment about thread safeness is obsolete.
+
+Wed Feb 1 09:50:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * doc/re.rdoc (Repetition): fix typo. reported by Ori Avtalion
+ and patched by Zachary Scott. [Bug #5947]
+
+Wed Feb 1 06:38:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_close): skip stdin, which should be readable again.
+ [ruby-dev:45160] [Bug #5952]
+
+ * io.c (argf_readlines): reinitialize after all read to be
+ readable again.
+
+Tue Jan 31 21:27:43 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * configure.in (HEAP_ALIGN_LOG): HEAP_ALIGN_LOG should be page
+ size in OpenBSD. [ruby-core:42158][Bug #5901]
+
+ * gc.c : avoid to redefine.
+
+Tue Jan 31 14:27:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/envutil.rb (EnvUtil.invoke_ruby): yield also child pid
+ in block form.
+
+Mon Jan 30 19:08:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (vm_call0): should pass block to enumerators. patched
+ by Kazuki Tsujimoto. [ruby-dev:44961][Bug #5731]
+
+ * vm_eval.c (method_missing), vm_insnhelper.c (vm_call_method):
+ ditto. patched by satoshi shiba.
+
+Mon Jan 30 12:31:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * file.c (append_fspath): need to set the encoding to result always.
+
+Mon Jan 30 10:38:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/irb/test_completion.rb: skip if cannot load irb/completion
+ (maybe readline does not exist).
+
+Sun Jan 29 22:47:19 2012 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * tool/config.{guess,sub}: updated to automake-1.11.2.
+
+Sun Jan 29 12:17:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ respect encodings. [Bug #5941]
+
+Sat Jan 28 09:33:33 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * win32/win32.c (rb_w32_read): fix an issue that $stdin.read doesn't
+ terminate by CTRL-C on Windows.
+ [ruby-dev:45149] [Bug #5812]
+
+Sat Jan 28 08:18:11 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/ruby/test_thread.rb
+ (TestThreadGroup#test_thread_timer_and_interrupt): skip exit status
+ assertion because we cannot get signal status on Windows.
+
+ * win32/win32.c (CreateChild): create process group to receive the
+ signal by GenerateConsoleCtrlEvent().
+
+ * win32/win32.c (kill): use CTRL_BREAK_EVENT instead of CTRL_C_EVENT
+ if a process group is specified. CTRL_C_EVENT signal cannot be
+ generated for process groups for the specification.
+ [ruby-dev:45149] [Bug #5812]
+
+Sat Jan 28 07:46:03 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * thread_win32.c (rb_w32_wait_events_blocking): use
+ ruby_thread_from_native() instead of GET_THREAD() because
+ GET_THREAD() doesn't always return the current thread and
+ WaitForMultipleObjects() at rb_w32_read() doesn't return by
+ Thread#kill. This fixes TestQueue#test_thr_kill failure on
+ Windows.
+
+ * thread_win32.c (rb_w32_wait_events): use ruby_thread_from_native()
+ instead of GET_THREAD() for consistency with the above change.
+
+ * thread_win32.c (rb_w32_sleep): ditto.
+
+ * thread_win32.c (rb_w32_Sleep): ditto.
+ [ruby-dev:45149] [Bug #5812]
+
+Sat Jan 28 07:28:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/zlib/test_zlib.rb (TestZlibGzipReader#test_reader_wrap): set
+ binmode explicitly for fixing test error on Windows. This is consistent
+ with r34243.
+ [ruby-dev:45149] [Bug #5812]
+
+Sat Jan 28 05:53:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/irb/completion.rb (IRB::InputCompletor::CompletionProc):
+ ignore non-string name modules. [ruby-core:42244][Bug #5938]
+
+Fri Jan 27 16:31:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (HEAP_ALIGN, HEAP_ALIGN_MASK): DRY, let compiler calculate
+ from HEAP_ALIGN_LOG.
+
+Thu Jan 26 11:03:37 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/matrix.rb: Clean up extra whitespace in output documentation.
+
+Thu Jan 26 03:24:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (io_getch): default delegating method
+ for StringIO. https://github.com/nobu/io-console/issues/4
+
+ * ext/stringio/stringio.c: moved some methods to hidden modules.
+
+Wed Jan 25 13:27:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_s_basename): ignore non-ascii extension in
+ different encoding, which cannot match.
+
+ * file.c (rmext): no extension to strip if empty string.
+
+ * file.c (rb_enc_path_next, rb_enc_path_skip_prefix)
+ (rb_enc_path_last_separator, rb_enc_path_end)
+ (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware
+ path handling functions.
+
+ * file.c (rb_home_dir, file_expand_path, rb_realpath_internal)
+ (rb_file_s_basename, rb_file_dirname, rb_file_s_extname)
+ (rb_file_join): should respect the encodings of arguments than
+ file system encoding. [ruby-dev:45145] [Bug #5919]
+
+ * dir.c (check_dirname, ruby_glob0): ditto.
+
+ * ext/pathname/pathname.c (path_sub_ext): ditto.
+
+Tue Jan 24 14:20:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (rb_iter_break_value): new function to break a block with
+ the value. [ruby-dev:45132] [Feature #5895]
+
+Tue Jan 24 12:58:41 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (rb_Hash): add Kernel#Hash conversion method like
+ Array() or Float(). a patch from Run Paint Run Run. Fix #3131
+
+Tue Jan 24 11:38:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI.encode_www_form_component): initialize on
+ requiring to support JRuby, which runs parallel multithreads.
+ [ruby-core:42222] [Bug #5925]
+
+ * lib/uri/common.rb (URI.decode_www_form_component): initialize on
+
+Mon Jan 23 20:33:11 2012 Jason Kay <geniture@me.com>
+
+ * lib/net/http.rb (Net::HTTP#connect): Writing entire packet at
+ once to avoid incomplete transmission. Current code using
+ writeline was causing sub-optimal conversing with a proxy due to
+ the connect tunnel request headers being split over multiple
+ packets. The modification I made allows the connect request to
+ be written as one packet, avoiding problems and optimizing the
+ conversation.
+
+ https://github.com/ruby/ruby/pull/72
+ [Feature #5460]
+
+Mon Jan 23 17:06:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/mailto.rb (URI::MailTo.build): follow Array#to_s change of
+ Ruby 1.9; use Array#join. [Bug #5840]
+
+Mon Jan 23 16:42:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (extract_binmode): raise an exception if binmode/textmode
+ is specified with both vmode and opthash.
+ [ruby-core:42199] [Bug #5918]
+
+Mon Jan 23 16:35:27 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): set ASCII-8BIT if binmode is specified
+ with opthash. [ruby-core:42197] [Bug #5917]
+
+Mon Jan 23 10:08:00 2012 Kenta Murata <mrkn@cookpad.com>
+
+ * test/cgi/test_cgi_util.rb (test_cgi_escape_preserve_encoding):
+ add a test for CGI::escape to preserve encoding.
+
+ * test/cgi/test_cgi_util.rb (test_cgi_unescape_preserve_encoding):
+ add a test for CGI::unescape to preserve encoding.
+
+Mon Jan 23 00:45:34 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/rdoc-mode.el (rdoc-imenu-create-index): Add imenu support
+ to rdoc-mode.
+
+ * misc/rdoc-mode.el (rdoc-mode): Fix regexp patterns containing
+ "\s " where CR/LF is not supposed to match.
+
+Sun Jan 22 15:41:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_intern3): split to registration check and new
+ registration.
+
+ * parse.y (rb_intern_str): make interned string shared with the
+ given string.
+
+ * parse.y (rb_intern3, rb_intern_str): check the coderange first.
+
+Sat Jan 21 22:21:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (FIXNUM_P): simple flag should be int.
+
+Sat Jan 21 21:51:19 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (rb_enc_compatible): fix segv on symbols.
+ [ruby-core:42204] [Bug #5921]
+
+Sat Jan 21 11:43:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (dir_chdir, check_dirname): get rid of optimization-out.
+
+Fri Jan 20 20:47:37 2012 Kenta Murata <mrkn@cookpad.com>
+
+ * lib/cgi/util.rb (CGI.escape): support a string with invalid byte
+ sequence. [Bug #5913]
+
+ * test/cgi/test_cgi_util.rb
+ (test_cgi_escape_with_invalid_byte_sequence): test for the above
+ change.
+
+Fri Jan 20 17:37:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm.c (vm_exec): remove workaround for LLVM because r34278 fixes it.
+
+ * vm_insnhelper.c (vm_call_cfunc): ditto.
+
+Fri Jan 20 14:31:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP#transport_request): retry a idempotent
+ request automatically. [ruby-dev:45030] [Bug #5790]
+ [ruby-core:41821] [Bug #5813]
+
+ * lib/net/http.rb (Net::HTTP#keep_alive_timeout=): added to specify
+ the second to reconnect the TCP connection on Keep-Alive.
+ The default value is 2 second because current servers uses 2 sec.
+ http://ftp-admin.blogspot.com/2009/09/keepalivetimeout2.html
+
+ * lib/net/http.rb (Net::HTTP#begin_transport): reconnect TCP
+ connection on keep-alive timeout.
+
+Thu Jan 19 07:53:09 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_strptime.c: moved detector of leftover.
+
+Thu Jan 19 07:10:47 2012 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_parse.c: [ruby-core:42173].
+
+Wed Jan 18 18:11:02 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * misc/rdoc-mode.el (rdoc-mode): Add provide so that requiring
+ this library succeeds.
+
+Wed Jan 18 18:06:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/curses/curses.c (cWindow, cMouseEvent): made typed data.
+
+Wed Jan 18 12:49:15 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Added support for loading
+ subclasses of String with ivars
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Added support for dumping
+ subclasses of String with ivars
+ * test/psych/test_string.rb: corresponding tests
+
+Wed Jan 18 10:39:47 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Added ability to load array
+ subclasses with ivars.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Added ability to dump
+ array subclasses with ivars.
+ * test/psych/test_array.rb: corresponding tests
+
+Tue Jan 17 17:18:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (SPT_TYPE): enable as SPT_REUSEARGV on Darwin.
+
+ * missing/setproctitle.c (ruby_init_setproctitle): changed prefix.
+
+Tue Jan 17 12:32:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (aligned_malloc, aligned_free): covered missing defined
+ operators and fixes for cygwin.
+
+Tue Jan 17 10:54:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (do_hash): it's the time to remove cast to unsigned int.
+
+Tue Jan 17 07:30:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * st.c (unpack_entries): Fix r34310: on unpacking, the position of
+ a hash must be do_hash-ed value.
+
+ * st.c (add_packed_direct): ditto.
+
+Mon Jan 16 16:41:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (Regexp): fix incorrect options when casting to
+ a Regexp, and suppress encoding option warnings.
+ https://github.com/ruby/ruby/pull/82
+
+Mon Jan 16 11:22:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (rb_chsize): no need to get the current file size.
+
+Mon Jan 16 00:41:33 2012 Sokolov Yura <funny.falcon@gmail.com>
+
+ * st.c: st use function instead of macro. In my current
+ environment (Ubuntu 11.04 32bit gcc-4.5.2) it gives 4%
+ performance improvement.
+
+ https://github.com/ruby/ruby/pull/77
+
+Sun Jan 15 14:09:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * object.c (rb_inspect): raise the result is not compatible with
+ the default external encoding. [ruby-core:42095] [Bug #5848]
+ If the default external encoding is ASCII compatible, the encoding of
+ inspected result must be compatible with it.
+ If the default external encoding is ASCII incompatible,
+ the result must be ASCII only.
+
+Sun Jan 15 13:21:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json/parser/parser.rl (json_string_unescape): workaround fix
+ for over optimization of GCC 4.7. [ruby-core:42085] [Bug #5888]
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51862
+
+Sat Jan 14 22:24:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/callback/mkcallback.rb (gencallback): suppress unused
+ variables.
+
+Sat Jan 14 21:56:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (iseq_data_to_ary): check line info table boundary. line
+ number 0 means no line number info is needed. [ruby-dev:45130]
+ [Bug #5894]
+
+Sat Jan 14 18:24:13 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * error.c (exc_equal): clear rb_thread_t::errinfo when ignore
+ an exception under rb_protect(). [ruby-core:41979] [Bug #5865]
+
+Sat Jan 14 12:02:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_enc_vsprintf): relaxed the restriction. since the
+ implementation deeply depends on plain char, so wchar_t based
+ encodings are not supported.
+
+Sat Jan 14 12:00:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exc_equal): ignore exceptions during implicit
+ conversion. [ruby-core:41979] [Bug #5865]
+
+Sat Jan 14 05:58:54 2012 Eric Hodel <drbrain@segment7.net>
+
+ * io.c (rb_io_s_read): Fix formatting of open_args comment. Reported
+ by Adam Prescott.
+
+Fri Jan 13 18:41:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * sprintf.c (rb_enc_vsprintf): can be used for ASCII compatible
+ encodings only.
+
+Fri Jan 13 18:29:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_mutex_unlock_th): simplified.
+
+ * thread.c (rb_barrier_waiting): fix potential overflows.
+
+Fri Jan 13 17:23:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_unlock): update loading table at once.
+
+Fri Jan 13 16:44:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exc_equal): try implicit conversion for delegator.
+ [ruby-core:41979] [Bug #5865]
+
+Fri Jan 13 03:46:53 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb (Shellwords#shellescape): shellescape() now
+ stringifies the given object using to_s.
+
+ * lib/shellwords.rb (Shellwords#shelljoin): shelljoin() accepts
+ non-string objects in the given array, each of which is
+ stringified using to_s.
+
+ * lib/shellwords.rb: Fix rdoc markups.
+
+Fri Jan 13 03:38:36 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb (Shellwords#shellsplit): Fix a bug where
+ consecutive backslashes in double quotes are all removed except
+ the one at the tail.
+
+Fri Jan 13 03:28:00 2012 Luis Lavena <luislavena@gmail.com>
+
+ * ext/socket/extconf.rb (if ipv6): only define _WIN32_WINNT if was not
+ previously defined. This solve warnings with multiple defines in
+ command line with GCC 4.6.1
+
+Thu Jan 12 18:44:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb: fix r33904 and revert r33905. initialize global
+ variables with init_mkmf before initializing constants.
+ [ruby-dev:45124] [Bug #5879]
+
+Thu Jan 12 13:51:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (cont_restore_0): prevent optimizing out `sp'. sp is used for
+ reserving a memory space with ALLOCA_N for restoring machine stack
+ stored in cont->machine_stack, but clang optimized out it (and
+ maybe #5851 is also caused by this).
+ This affected TestContinuation#test_check_localvars.
+
+ * cont.c (cont_restore_1): revert workaround introduced in r32201.
+
+Thu Jan 12 02:14:43 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * object.c: Added examples for Object#is_a? and
+ Object#instance_of? patched from Manoj Kumar.
+ [Bug #5880] [ruby-core:42057]
+
+Thu Jan 12 00:57:48 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/mkmf.rb: verbose-mode can use by RM, RMDIRS, etc.
+ (e.g. make V=1 realclean)
+
+Wed Jan 11 23:40:21 2012 Naohisa Goto <ngoto@gen-info.osaka-u.ac.jp>
+
+ * string.c (rb_str_concat): set array element after definition
+ to fix compile error with Fujitsu C Compiler 5.6 on Solaris 10
+ on Sparc. [Bug #5878] [ruby-dev:45123]
+
+Wed Jan 11 22:52:51 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (ruby_mimmalloc): don't set allocated size to header.
+ ruby_mimmalloc() doesn't increment allocated_size/allocations and
+ decrement them in ruby_xfree() cause inconsistency.
+
+ * gc.c (ruby_xfree): don't decrement allocated_size/allocations if
+ allocated size record is 0.
+
+Wed Jan 11 22:36:43 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/readline/test_readline.rb (test_completion_proc_empty_result):
+ ensure clearance of Readline's line_buffer after the test.
+
+Tue Jan 10 21:57:38 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * ext/dbm/dbm.c (Init_dbm): fix a build error on mswin32.
+ use `extern __declspec(dllimport)` for dll link with VC.
+ [ruby-core:41996] [Bug #5869]
+
+Tue Jan 10 15:31:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm.c (vm_exec): refix r34162; suppress warning and add description.
+
+Tue Jan 10 15:13:58 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ use rb_memerror().
+
+Tue Jan 10 12:49:42 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c: in fact, i686-linux doesn't need to define _XOPEN_SOURCE 600.
+
+Tue Jan 10 12:44:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (ruby_mimmalloc): defined for objects need not rb_objspace,
+ but should return pointer suitable for ruby_xfree;
+ main vm and main thread.
+ patched by Sokolov Yura. https://github.com/ruby/ruby/pull/79
+
+ * internal.h: ditto.
+
+ * vm.c (Init_BareVM): use ruby_mimmalloc.
+
+ * ext/dl/cfunc.c: #include <ruby/util.h>.
+
+ * ext/syslog/syslog.c: use xfree because it is allocated by
+ ruby_strdup.
+
+Tue Jan 10 12:13:56 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ fix compile error.
+
+Tue Jan 10 10:41:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ empty completion result does not mean memory error.
+
+Tue Jan 10 02:19:22 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/test_io.rb (test_autoclose_true_closed_by_finalizer,
+ test_autoclose_true_closed_by_finalizer): skip if IO objects are
+ not recycled yet. [ruby-dev:45098] [Bug #5850]
+
+Tue Jan 10 00:41:28 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/tempfile.rb (Tempfile#_close): clear @tempfile and @data[1] even
+ when exception is raised at @tempfile.close. [ruby-dev:45113]
+
+ * lib/tempfile.rb (Tempfile#unlink): fix a typo.
+
+Tue Jan 10 00:32:17 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (run_finalizer): clear rb_thread_t::errinfo when ignore
+ an exception under rb_protect(). [ruby-dev:45113]
+
+Mon Jan 9 23:37:43 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ fix typos.
+
+Mon Jan 9 20:55:34 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c : don't embed struct heaps_slot to a heap block because it
+ can causes copy-on-write of memory page on heap block when its
+ free_next is rewritten.
+
+Mon Jan 9 20:26:33 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/pathname/pathname.c (path_entries): add document suggested by
+ the thread [ruby-core:41959] [Bug #5859].
+
+Mon Jan 9 20:14:13 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (family_addrinfo): don't require protocol
+ equality. For example, protocol 0 and IPPROTO_TCP is not problem
+ for TCP.
+
+Mon Jan 9 20:08:52 2012 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (family_addrinfo): return the given
+ addrinfo object.
+ Patch by Ippei Obayashi. [ruby-dev:45095] [Bug #5845]
+
+Mon Jan 9 19:40:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/zlib/test_zlib.rb (TestZlibGzipWriter#test_writer_wrap): set
+ binmode explicitly.
+
+Mon Jan 9 14:42:41 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: free_slots is changed Singly linked list. clear
+ free_slots before sweep.
+
+Mon Jan 9 07:46:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c: i686-linux needs to define _XOPEN_SOURCE 600 for posix_memalign.
+
+Mon Jan 9 04:24:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (rb_objspace_free): global_List is allocated with xmalloc.
+ patched by Sokolov Yura. https://github.com/ruby/ruby/pull/78
+
+ * dln_find.c: remove useless replacement of free.
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ strings for readline must allocated with malloc.
+
+ * process.c (run_exec_dup2): use free; see also r20950.
+
+ * re.c (onig_new_with_source): use malloc for oniguruma.
+
+ * vm.c (ruby_vm_destruct): use free for VMs.
+
+ * vm.c (thread_free): use free for threads.
+
+Mon Jan 9 04:24:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * dln_find.c: remove useless replacement of free.
+
+ * ext/readline/readline.c (filename_completion_proc_call):
+ matches should use xfree.
+
+ * ext/readline/readline.c (username_completion_proc_call): ditto.
+
+Mon Jan 9 01:12:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (rb_enc_uint_char): raise RangeError when added codepoint
+ is invalid. [Feature #5855] [Bug #5863] [Bug #5864]
+
+ * string.c (rb_str_concat): ditto.
+
+ * string.c (rb_str_concat): set encoding as ASCII-8BIT when the string
+ is US-ASCII and the argument is an integer greater than 127.
+
+ * regenc.c (onigenc_mb2_code_to_mbclen): rearrange error code.
+
+ * enc/euc_jp.c (code_to_mbclen): ditto.
+
+ * enc/shift_jis.c (code_to_mbclen): ditto.
+
+Sun Jan 8 20:31:45 2012 Narihiro Nakamura <narihiro@netlab.jp>
+
+ * gc.c : consider header bytes which are used by malloc.
+
+Sun Jan 8 11:54:43 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (aligned_free): support MinGW. Patch by Hiroshi Shirosaki.
+
+Sun Jan 8 11:43:05 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (slot_sweep): add a assertion instead of a debug print.
+
+Sun Jan 8 01:18:19 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb:
+ avoid platform bug. [Bug #5858] [ruby-dev:45108]
+
+Sun Jan 8 00:46:34 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * gc.c: get rid of implicit narrowing conversion.
+
+Sun Jan 8 00:10:10 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in: check posix_memalign(3) and memalign(3).
+
+ * gc.c (aligned_malloc): use configure's result instead of
+ _POSIX_C_SOURCE and _XOPEN_SOURCE because they can't be used
+ to check availability at least on FreeBSD.
+
+Sat Jan 7 22:25:50 2012 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c: use Bitmap Marking algorithm to avoid copy-on-write of
+ memory pages. See [ruby-dev:45085] [Feature #5839]
+ [ruby-core:41916].
+
+ * include/ruby/ruby.h : FL_MARK rename to FL_RESERVED1.
+
+ * node.h : ditto.
+
+ * debug.c : ditto.
+
+ * object.c (rb_obj_clone): FL_MARK move to a bitmap.
+
+ * class.c (rb_singleton_class_clone): ditto.
+
+Sat Jan 7 00:47:07 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * configure.in: always define CANONICALIZATION_FOR_MATHN.
+ [ruby-dev:45100] [Bug #5852]
+
+Fri Jan 6 23:11:20 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * include/ruby/version.h: RUBY_API_VERSION 2.0.0
+
+Fri Jan 6 12:24:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * object.c (rb_inspect): raises Encoding::CompatibilityError if the
+ result is incompatible with the default external encoding.
+ [ruby-core:41931] [Bug #5848]
+
+Thu Jan 5 15:26:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (check_valid_dir): strict checking of root.
+ GetDriveType() succeeds with non root directory as the argument,
+ even if MSDN says that the API needs the root directory.
+ this patch fixes a failure of test/ruby/test_file_exhaustive.rb.
+
+Thu Jan 5 12:15:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (rb_file_join): separator is appended by array length - 1
+ times. patched by Benoit Daloze [ruby-core:41901] [Bug #5841]
+
+Thu Jan 5 11:47:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/common.rb (URI::Parser#initialize_regexp):
+ use \A \z instead of ^ $. [Bug #5843]
+
+Wed Jan 4 17:55:53 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * array.c (rb_ary_sample): add example for Array#sample
+ based on patch from https://github.com/ruby/ruby/pull/74
+
+Wed Jan 4 14:24:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (str_nth_len): count ascii-only run at the end. this
+ bug appears only when single-byte-optimization is disabled due
+ to unknown coderange. [ruby-core:41896] [Bug #5836]
+
+Wed Jan 4 11:32:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (check_valid_dir): special case for a root directory.
+ Reported by Masateru OKAMOTO at [Bug #5819].
+
+Wed Jan 4 00:19:54 2012 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb: use private instead of _xxx
+ method name. This is Ruby code not Python code.
+ refs #5696
+
+Tue Jan 3 23:57:37 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/rexml/parsers/baseparser.rb: rexml BaseParser uses
+ instance_eval unnecessarily on listener add.
+ patch from Charles Nutter. [Bug #5696] [ruby-core:41437]
+
+Tue Jan 3 20:44:13 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * README: add comment for Git user. patch from Arun Agrawal.
+ * README.ja: ditto.
+
+Tue Jan 3 15:58:22 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * thread.c: changed documentation for "thread-local" variables.
+ patch from Julien Ammous.
+
+Tue Jan 3 15:50:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * process.c: Fix typo. patch from Aviv Ben-Yosef.
+
+Tue Jan 3 13:43:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * tool/merger.rb: allow r0123 style revision number.
+
+Tue Jan 3 11:17:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * tool/merger.rb (#version_up): version.h date should be Japanese
+ locale date.
+
+Mon Jan 2 22:08:00 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * tool/file2lastrev.rb (VCS::detect): Add support for Subversion
+ 1.7 which adopted a whole new working directory structure.
+
+ * tool/file2lastrev.rb (VCS::detect): Simply use .each instead of
+ .sort.reverse_each which looks too arbitrary. If you want SVN
+ to be tried first, then you just have to register it first as it
+ is right now.
+
+Mon Jan 2 20:53:36 2012 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb (random_bytes): use IO#read instead of
+ IO#readpartial to make the intent more clear.
+
+Mon Jan 2 15:26:39 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/ruby/test_object.rb (test_send_with_block): add a normal case.
+
+Mon Jan 2 15:18:54 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/ruby/test_object.rb (test_send_with_block): moved from
+ bootstraptest/test_flow.rb.
+
+Mon Jan 2 15:10:11 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/test/unit/parallel.rb: use pack("m0") instead of
+ pack("m").gsub("\n","").
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#run): ditto.
+
+Mon Jan 2 15:05:09 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#run): use
+ File.basename with suffix instead of gsub.
+
+Mon Jan 2 14:55:28 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): find may
+ return nil and nil can not dup.
+
+Sun Jan 1 12:23:10 2012 Akinori MUSHA <knu@iDaemons.org>
+
+ * lib/shellwords.rb (Shellwords#shellescape): Drop the //n flag
+ that only causes warnings with no real effect. [Bug #5637]
+
+Sat Dec 31 06:28:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (rb_barrier_waiting): save the number of waiting threads
+ in RBASIC()->flags. [ruby-dev:45002] [Bug #5768]
+
+ * thread.c (rb_barrier_wait): increment and decrement around
+ rb_mutex_lock, and use rb_barrier_waiting().
+
+ * thread.c (rb_barrier_release): use rb_barrier_waiting().
+
+ * thread.c (rb_barrier_destroy): ditto.
+
+Mon Dec 26 17:20:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm.c (vm_exec): add guard to prevent optimization for LLVM clang.
+
+Fri Dec 30 17:01:12 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * vm_eval.c (rb_f_send): fix obj.send() documentation issue.
+ [Bug #5125] [ruby-core:38633]
+
+Thu Dec 29 22:36:16 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#_run_parallels): fix
+ premature exit when all workers' status are :ready or :prepare.
+ [ruby-dev:45061] [Bug #5822]
+
+Thu Dec 29 01:51:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * include/ruby/ruby.h: fix #error pragma. LLP64 platform is supported.
+
+ * include/ruby/st.h: ditto.
+
+Wed Dec 28 11:22:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (FileUtils::Entry_#entries): use utility method
+ instead of typoed regexp. [ruby-core:41829] [Bug #5817]
+
+Wed Dec 28 02:08:04 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * vm_insnhelper.c (unknown_keyword_error): add GC guard to prevent
+ intermediate object from GC.
+
+Tue Dec 27 22:34:54 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (Worker#close): "closing IO if IO is closed"
+ should be "closing IO if IO isn't closed"
+
+Tue Dec 27 22:04:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.c (st_update): new function to lookup the given key and
+ update the value. [ruby-dev:44998]
+
+Tue Dec 27 21:17:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * node.h (rb_args_info): change pre_args_num and post_args_num as
+ int, to match with rb_iseq_t.
+
+ * parse.y (new_args_gen): check overflow.
+
+Mon Dec 26 22:38:35 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_insnhelper.c (unknown_keyword_error): make it kind a error
+ message when unknown keyword is given. It require more work.
+ See [ruby-core:40518] and [ruby-core:40541] in detail.
+
+Mon Dec 26 22:31:07 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.h (struct rb_iseq_struct), compile.c (iseq_set_arguments),
+ iseq.c (rb_iseq_parameters), vm_insnhelper.c
+ (vm_callee_setup_arg_complex): support Method#parameters for keyword
+ arguments. The provisional spec is what Benoit Daloze proposed.
+ [ruby-core:40541]
+
+ * test/ruby/test_keyword.rb: add a test for above.
+
+Mon Dec 26 22:15:27 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * vm_core.h (struct rb_iseq_struct), compile.c (iseq_set_arguments,
+ iseq_compile_each), vm_insnhelper.c (vm_callee_setup_arg_complex):
+ implement keyword arguments. See [ruby-core:40290]
+ The feature is promised to be included in 2.0, but the detail spec
+ is still under discussion; this commit is a springboard for further
+ discussion. Please try it and give us feedback.
+ This commit includes fixes for some problems reported by Benoit
+ Daloze <eregontp AT gmail.com> [ruby-core:40518] and Marc-Andre
+ Lafortune <ruby-core-mailing-list AT marc-andre.ca>
+ [ruby-core:41772].
+
+ * iseq.c (iseq_free, prepare_iseq_build): bookkeeping.
+
+ * test/ruby/test_keyword.rb: add tests for keyword arguments.
+
+ * test/ripper/dummyparser.rb (class DummyParser): temporal fix for
+ ripper test.
+
+Mon Dec 26 22:00:17 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * node.h, node.c, parse.y: implement a parser part for keyword
+ arguments.
+ This is a preparation for keyword argument (see [ruby-core:40290]).
+
+ * gc.c (gc_mark_children): bookkeeping.
+
+Mon Dec 26 21:03:18 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * node.h, parse.y (new_args_gen), compile.c (iseq_set_arguments): use
+ struct rb_args_info instead of NODEs.
+ This is a preparation for keyword argument (see [ruby-core:40290]).
+
+ * node.c (dump_node), gc.c (gc_mark_children, obj_free): bookkeeping.
+
+Mon Dec 26 20:59:51 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * node.h, parse.y (lambda, f_larglist): remove NEW_LAMBDA hack.
+ This is a preparation for keyword argument (see [ruby-core:40290]).
+
+Mon Dec 26 22:01:19 2011 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * io.c (rb_sys_fail_path): move the definition.
+ Move above for using it in set_binary_mode_with_seek_cur().
+
+ * io.c (set_binary_mode_with_seek_cur): fix improper seek cursor.
+ Seeking file cursor with setting binary mode has possibility to
+ cause infinite loop. Fixed the bug and refined error handling.
+ Introduced at r34043.
+
+ And cleanups as below.
+ Remove unnecessary parentheses of `fptr`.
+ Use return value of setmode().
+
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_seek_with_setting_binmode): add a test for above.
+ [ruby-core:41671] [Bug #5714]
+
+Mon Dec 26 17:01:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * common.mk (LIBRUBY_A): depends on main.o since r33774.
+ [ruby-core:41786] [Bug #5796]
+
+Mon Dec 26 13:07:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io.rb (TestIO#test_autoclose): Tempfile.new doesn't
+ accept the block argument.
+
+Mon Dec 26 13:06:52 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb: Avoid zombie processes on "--separate" option
+ added at r34121.
+
+Mon Dec 26 04:01:23 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_cipher.c: Update and complete documentation.
+
+Sun Dec 25 23:16:11 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb (test_separate): Test for "--separate"
+ option (r34121)
+
+Sun Dec 25 22:39:49 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (_run_parallel):
+ New option "--separate" for test/unit; when running tests with this
+ option, a job process will be restarted after one test file has done.
+ This means all test files will run with separated process.
+
+ * lib/test/unit/parallel.rb: Fix for above. Now parallel.rb puts
+ "ready!" for first ready, "ready" for afters.
+
+Sun Dec 25 00:02:15 2011 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in: change --with-ntver to --with-winnt-ver to be more
+ descriptive in the context. [ruby-core:41794]
+
+Sat Dec 24 23:25:15 2011 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in: add --with-ntver option to match win32/configure.bat
+ functionality. Set 0x0501 as default. [ruby-core:35010]
+ [ruby-core:35035]
+
+Sat Dec 24 12:38:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (proc_call): get rid of optimization-out by clang.
+
+ * proc.c (rb_proc_call, rb_proc_call_with_block): ditto.
+
+Sat Dec 24 10:56:32 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): check if outstream
+ is closed to get rid of a bug of readline 6. [ruby-dev:45043]
+ [Bug #5803]
+
+Sat Dec 24 06:59:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/readline/test_readline.rb (test_line_buffer__point): use
+ lambda not to exit entire method by "return". or "next" for
+ proc. [ruby-dev:45042] [Bug #5802]
+
+Sat Dec 24 01:20:39 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm_eval.c (send_internal): PASS_PASSED_BLOCK_TH must be placed
+ just before calling rb_call0.
+
+ * bootstraptest/test_flow.rb: add a test for above.
+
+Sat Dec 24 00:55:16 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/tempfile.rb (Tempfile#initialize): warn if a block is given.
+
+Fri Dec 23 16:14:30 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ in Readline module with GNU Readline 6 case, Readline module
+ resets completion_append_character to " ", after it executes
+ completion. So, Readline module stores
+ completion_append_character, and Readline module always sets it
+ after Readline module executes completion. [ruby-dev:43456]
+ [Feature #4635]
+
+Fri Dec 23 15:59:05 2011 TAKAO Kouji <kouji@takao7.net>
+
+ * ext/readline/readline.c (Init_readline): libedit check
+ rl_getc_function only when rl_initialize() is called, and
+ using_history() call rl_initialize(). This assignment should be
+ placed before using_history(). [ruby-core:40641] [Bug #5539]
+
+Fri Dec 23 10:14:47 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/thread/test_queue.rb (test_thr_kill): show the number of loop
+ run when the test failed.
+
+Fri Dec 23 09:23:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/test_pty.rb (test_pty_check_default): call PTY.check until
+ "cat" command is finished.
+
+Fri Dec 23 06:03:00 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * common.mk: add "check succeeded" message.
+
+ * README, README.ja: follow above change.
+
+Fri Dec 23 06:00:39 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/bigdecimal/bigdecimal.h: add satisfy cc-mode comment.
+ * util.c: ditto.
+
+Fri Dec 23 00:08:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/test_pty.rb (test_pty_check_default): "cat" may not terminated
+ in the 0.1 second.
+
+Thu Dec 22 23:37:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_thread.rb (test_condvar_timed_wait): don't test the
+ maximum sleep time. Ruby is not a real-time system.
+
+Thu Dec 22 22:37:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread_pthread.c (ping_signal_thread_list): remove return value.
+ * thread_pthread.c (check_signal_thread_list): add a new function to
+ check if signal thread list is empty.
+ * thread_pthread.c (thread_timer): check signal thread list after
+ timer_thread_function(). main thread might be added into signal thread
+ list during timer_thread_function().
+
+Thu Dec 22 00:40:24 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/bigdecimal/bigdecimal.c (VpMult, VpCtoV, VpSqrt): remove assigned
+ but unused variables.
+
+Wed Dec 21 18:28:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk (newline.c, miniprelude.c): revert r33949 because the change
+ broke mswin build, and the changer said no reason about the change.
+ [ruby-dev:45016] [Bug #5783]
+
+Wed Dec 21 12:35:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_s_allocate): follow
+ Allocation Framework. [Bug #5775]
+
+Wed Dec 21 02:25:36 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/emitter.c: fixing clang warnings. Thanks Joey!
+
+Wed Dec 21 01:06:00 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * ext/bigdecimal/README: Update redmine.ruby-lang.org to bugs.ruby-lang.org
+ * ext/socket/ancdata.c: ditto
+ * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb: ditto
+ * test/syck/test_yaml.rb: ditto
+ * doc/ChangeLog-1.9.3: ditto
+
+Tue Dec 20 23:50:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * PStore content update perf optimization. Patch by Masaki Matsushita.
+ See #5248.
+
+ * lib/pstore.rb (save_data):
+
+ * Delete inadequate Marshal check.
+
+ * Deferred file truncation: when writing the new content, truncate
+ the saved file to the data size after writing the data, instead of
+ truncating whole bytes before writing data.
+
+ * Deferred MD5 calculation: when comparing MD5 hash to check the
+ content modification, calculate MD5 hash of new data iif the
+ content length is differ from the old one.
+
+ * Compare content size with String#bytesize instead of String#size.
+
+Tue Dec 20 21:00:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: uses to_integer instead.
+ * test/date/test_switch_hitter.rb: added a test.
+
+Tue Dec 20 15:04:18 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * Make sure to clear $! when ignoring an exception
+
+ * ext/openssl/ossl.c (ossl_pem_passwd_cb0, ossl_verify_cb):
+ pem_passwd_cb and verify_cb ignores the exception raised in a
+ callback proc so it should clear $! for subsequent execution.
+
+ That's said, both subsequent processes for pem_passwd_cb and
+ verify_cb raises another exception before leaking $! to Ruby world.
+ We cannot test this fix in Ruby land.
+
+ * test/openssl/test_pkey_rsa.rb
+ (test_read_private_key_pem_pw_exception): Test for pem_passwd_cb +
+ exception.
+
+Tue Dec 20 11:49:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/date/test_date_base.rb (test_jd): tests for
+ [ruby-dev:45008].
+
+Tue Dec 20 10:20:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/date/date_core.c (wholenum): fix the type of the return value.
+
+Tue Dec 20 05:03:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * README.ja: Update redmine.ruby-lang.org to bugs.ruby-lang.org
+ * README: ditto
+ * common.mk: ditto
+ * man/erb.1: ditto
+ * man/irb.1: ditto
+ * man/ri.1: ditto
+ * man/ruby.1: ditto
+ * sparc.c: ditto
+ * tool/install-sh: ditto
+
+Tue Dec 20 02:15:18 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-dev:45008].
+
+Sun Dec 18 18:52:37 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * vm.c (vm_define_method): improve guard of iseq from GC. Fix
+ failure or segmentation fault in test_singleton_method(TestGc)
+ on sparc Solaris10 compiled with Oracle Solaris Studio 12.2.
+ [Bug #5762] [ruby-dev:45000] [Bug #4178]
+
+Sun Dec 18 14:34:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): does not follow
+ allocation framework right now. [ruby-core:41710] [Bug #5773]
+
+Sun Dec 18 12:42:48 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: BigDecimals can be restored
+ from YAML.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: BigDecimals can be dumped
+ to YAML.
+ * test/psych/test_numeric.rb: tests for BigDecimal serialization
+
+Sun Dec 18 12:03:13 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Strings that look like dates
+ should be treated as strings and not dates.
+
+ * test/psych/test_scalar_scanner.rb: corresponding tests.
+
+Sun Dec 18 09:43:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/thread/test_queue.rb (test_thr_kill): extend timeout.
+ this test takes a long time at slow machine.
+
+Sun Dec 18 09:36:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/ruby/envutil.rb (invoke_ruby): remove :timeout option before
+ pass it to Kernel#spawn.
+
+Fri Dec 16 17:18:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README, README.ja: 'make check' is preferable to 'make test'.
+
+Thu Dec 15 23:16:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * error.c (builtin_type_name): don't return pointer to the buffer of
+ temporary String object.
+
+Thu Dec 15 17:56:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_type): make typed data.
+
+Thu Dec 15 17:40:28 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_type): fix typo.
+
+Thu Dec 15 14:48:35 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/strscan/strscan.c: use typed data with
+ onig_region_memsize().
+
+Thu Dec 15 14:33:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_typeddata): refine error message with
+ including expected struct name.
+
+Thu Dec 15 13:15:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regcomp.c (onig_region_memsize): implemented for memsize_of().
+
+ * ext/objspace/objspace.c (memsize_of): use it.
+
+Thu Dec 15 10:44:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_reject_bang, rb_ary_delete_if): update rdoc.
+ documentation from Thomas Leitner <t_leitner AT gmx.at> in
+ [ruby-core:41616]. [Bug #5752]
+
+Thu Dec 15 10:10:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_require.rb (test_race_exception): get rid of
+ not-guaranteed timing issue. [ruby-core:41655] [Bug #5754]
+
+Wed Dec 14 21:58:42 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_{read_with_binmode_and_get[cs]}): only for Windows.
+
+Wed Dec 14 19:57:23 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * common.mk,Makefile.in,win32/Makefile.sub (ECHO1): move platform
+ specific hack from common.mk to Makefile.in (and win32/Makefile.sub).
+ [Bug #5711]
+
+ * lib/mkmf.rb: we can generate Makefile as we like.
+
+Wed Dec 14 19:22:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_fd_is_text): new function.
+
+ * win32/win32.c (init_stdhandle): set default mode of stdin as binmode.
+
+ * io.c (set_binary_mode_with_seek_cur): new function to replace
+ SET_BINARY_MODE_WITH_SEEK_CUR macro. now returns previous mode of the
+ fd and take care of LF in rbuf.
+
+ * io.c (do_writeconv): set text mode when needed.
+
+ * io.c (io_read): need to change the mode of the IO to binmode
+ temporally when the length for IO#read, because IO#read with length
+ must behave so.
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{read_with_length,
+ read_with_length_binmode,get[cs]_and_read_with_binmode,
+ read_with_binmode_and_get[cs],read_write_with_binmode}): tests for
+ above changes.
+
+ all patches are written by Hiroshi Shirosaki. [ruby-core:41496]
+ [Feature #5714]
+
+Wed Dec 14 15:28:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (str_encode): about the extension of :fallback
+ option since 1.9.3.
+
+Wed Dec 14 12:19:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_unlock): release loading barrier and then remove it
+ from loading_table if it is not in-use. [Bug #5754]
+
+ * thread.c (rb_barrier_release, rb_barrier_destroy): return
+ whether any other threads are waiting on it.
+
+Wed Dec 14 11:23:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread_pthread.c (ubf_select): call rb_thread_wakeup_timer_thread()
+ only when it is not timer_thread. [Bug #5757] [ruby-dev:44985]
+ patched by Tomoyuki Chikanaga.
+
+Wed Dec 14 10:20:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_lock): delete the loading barrier if it has been
+ destroyed.
+
+ * thread.c (rb_barrier_wait): return nil for recursive lock
+ instead of false, to distinguish it from destroyed barrier.
+
+Wed Dec 14 01:24:55 2011 okkez <okkez000@gmail.com>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): fix memory
+ leak. [ruby-dev:44904] [Bug #5688]
+
+Wed Dec 14 00:01:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (primary): point method name line. [ruby-core:40936]
+ [Bug #5614]
+
+Tue Dec 13 23:43:48 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * error.c (name_err_mesg_to_str): clear rb_thread_t::errinfo when
+ ignore exception under rb_protect(). [ruby-core:41612] [Bug #5755]
+
+ * test/ruby/test_exception.rb (test_exception_in_name_error_to_str):
+ add a corresponding test.
+
+Tue Dec 13 16:13:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (load_unlock): all threads requiring one file should
+ share same loading barrier, so it must be kept alive while those
+ are waiting on it. [ruby-core:41618] [Bug #5754]
+
+Tue Dec 13 07:30:14 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/webrick/httpresponse.rb (setup_header): 1xx responses
+ are allowed to have Keep-Alive connections.
+
+ * test/webrick/test_httpresponse.rb: corresponding test.
+
+Tue Dec 13 07:13:28 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/webrick/httpresponse.rb (setup_header): 204 and 304 responses
+ are allowed to have a Keep-Alive connection. [ruby-core:41581]
+
+ * test/webrick/test_httpresponse.rb: corresponding test.
+
+Tue Dec 13 06:29:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_magic_comment): should pass the proper value.
+ [ruby-dev:44984][Bug #5753]
+
+Tue Dec 13 05:50:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_yield_setup_block_args): splat single
+ argument if optional arguments are defined not only mandatory or
+ post arguments. [ruby-core:41557] [Bug #5730]
+
+Mon Dec 12 22:35:39 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * parse.y (stmt_or_begin): changed the error message for BEGIN not
+ at toplevel. [ruby-dev:44963] [Bug #5738]
+
+Mon Dec 12 17:29:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * README: Fixed SupportedPlatforms URL in the README.
+ patched by eMxyzptlk. https://github.com/ruby/ruby/pull/62
+
+Mon Dec 12 17:26:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_feature_p): lazy assigned load_path searched in
+ loading_table were not expanded, but all features, pushed to
+ loading table, are expanded. a patch by Yura Sokolov
+ <funny.falcon AT gmail.com> in [ruby-core:41545]. [Bug #5727]
+
+Mon Dec 12 15:41:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_truncate): fix typo. patched by
+ Nick Howard <ndh AT baroquebobcat.com>.
+ https://github.com/ruby/ruby/pull/65
+
+Sun Dec 11 12:19:17 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb: includes the sequence number of UID in a error
+ message. suggested by art lussos.
+ [ruby-core:41413] [Feature #5692]
+
+Sun Dec 11 11:42:10 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/syslog/syslog.c: fix a typo. [ruby-core:41585] [Bug #5740]
+
+Sun Dec 11 10:48:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (exit_initialize): deal with true and false as well as
+ Kernel#exit. [ruby-dev:44951] [Bug #5728]
+
+Sun Dec 11 10:37:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_check_to_int): new function to convert a VALUE to
+ an Integer if possible, but returns nil instead of raising an
+ exception otherwise.
+
+Sun Dec 11 10:34:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_exit_status_code): extract from rb_f_exit_bang and
+ rb_f_exit. assume 0 to be success in Kernel#exit! too.
+
+Fri Dec 9 19:24:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/trans/iso-8859-16-tbl.rb: add ISO-8859-16 converter.
+
+ * enc/trans/single_byte.trans: ditto.
+
+Fri Dec 9 14:28:40 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_path_convert): don't convert it when the path string is
+ ascii only. [ruby-core:41556] [Bug #5733]
+ tests are contributed by nobu.
+
+Fri Dec 9 08:00:15 2011 Luis Lavena <luislavena@gmail.com>
+
+ * include/ruby/win32.h: undef stat to silence mingw-w64 stat
+ redefinition warnings (GCC 4.6.3).
+
+Thu Dec 8 23:38:24 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * variable.c (set_const_visibility): clear inline-cache when constant's
+ visibility is modified. [ruby-dev:44929]
+
+ * test/ruby/test_module.rb (test_private_constants_clear_inlinecache):
+ add test for it.
+
+Thu Dec 8 23:26:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): should sort after map, not before
+ it. in this case there is no difference, but we should write better
+ code. this bad smell was caught by nagachika.
+
+Thu Dec 8 22:31:13 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile): need to sort the array of current
+ srcs before comparing to the sorted old srcs.
+ fixed the problem that the configuring stage of exts were always
+ run, introduced at r33801.
+
+Thu Dec 8 13:26:24 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rexml/test_order.rb (OrderTester#test_more_ordering): use
+ Zlib::GzipReader.open instead of Zlib::GzipReader.new with File.new.
+ fixed a test error on Windows introduced at r33946.
+
+Thu Dec 8 13:11:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess#test_sete[gu]id): silently
+ skip if not implemented such functions (such as, on Windows).
+ fixed test errors on Windows introduced at r33953.
+
+Thu Dec 8 12:57:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/extconf.rb: forgotten to define HAVE_SOCKETPAIR for
+ windows.
+ fixed test errors on Windows introduced at r33947.
+
+Thu Dec 8 12:11:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_WERROR_FLAG): append all warning flags which
+ are enabled to compile, so that printf format modifiers properly
+ fail. [ruby-core:41351] [Bug #5679]
+
+Thu Dec 8 07:20:15 2011 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc: Document difference between match and =~, options with
+ Regexp.new and global variables. Patch by Sylvain Daubert.
+ [Ruby 1.9 - Bug #5709]
+
+Thu Dec 8 06:53:10 2011 Eric Hodel <drbrain@segment7.net>
+
+ * doc/re.rdoc: Fix example code to match documentation. Patch by
+ Jarno Lamberg. [Ruby 1.9 - Bug #5624]
+
+Wed Dec 7 19:04:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (rpath): fix typo in the help string. a patch from
+ Yuji Yamano <yyamano AT kt.rim.or.jp> in [ruby-list:48568].
+
+Wed Dec 7 18:55:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (vm_set_top_stack, vm_set_eval_stack): check for stack
+ overflow with stack_max before push new frame. [ruby-core:41520]
+ [Bug #5720]
+
+ * vm.c (vm_set_main_stack): no stack overflow chances after
+ vm_set_eval_stack().
+
+Wed Dec 7 09:58:15 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/bigdecimal/bigdecimal.c: Document +@, -@, hash, INFINITY, Nan.
+ Patch by Sylvain Daubert. [Ruby 1.9 - Feature #5622]
+
+Wed Dec 7 09:48:00 2011 Eric Hodel <drbrain@segment7.net>
+
+ * io.c (Init_IO): Mention io/console methods. [Ruby 1.9 - Bug #5602]
+ * ext/io/console/console.c: Mention that io/console must be required
+ similar to lib/time.rb
+
+Wed Dec 7 08:04:31 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb (module Psych): parse and load methods take
+ an optional file name that is used when raising Psych::SyntaxError
+ exceptions
+ * ext/psych/lib/psych/syntax_error.rb (module Psych): allow nil file
+ names and handle nil file names in the exception message
+ * test/psych/test_exception.rb (module Psych): Tests for changes.
+
+Tue Dec 6 18:26:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c: use db_version() instead of DB_VERSION_STRING to
+ detect runtime Berkeley DB version.
+ use dpversion instead of _QDBM_VERSION to detect runtime QDBM
+ version.
+ [ruby-dev:44948]
+
+Tue Dec 6 12:30:41 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: detect gdbm_version in libgdbm.
+
+ * ext/dbm/dbm.c: make DBM::VERSION more informative for gdbm, qdbm and
+ Berkeley DB 1.x. [ruby-dev:44944]
+
+Tue Dec 6 07:26:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * range.c: Improve documentation for Range. Patch by Chris Zetter.
+ [Ruby 1.9 - Bug #5656]
+
+Mon Dec 5 19:08:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regparse.c (PFETCH_READY): separate gcc specific trick.
+
+Mon Dec 5 19:01:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_seteuid_m): fix argument.
+
+ * test/ruby/test_process.rb (test_geteuid): fix typo.
+
+ * test/ruby/test_process.rb (test_getegid, test_set[eg]uid): add.
+
+Mon Dec 5 18:56:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (big_rshift), compile.c (validate_label,
+ iseq_build_from_ary_exception), cont.c (cont_capture), dir.c
+ (dir_open_dir), gc.c (objspace_each_objects), io.c (pipe_open)
+ (rb_io_advise), parse.y (parser_compile_string)
+ (rb_parser_compile_file), proc.c (binding_free), process.c
+ (rb_proc_exec_n, rb_seteuid_core, proc_setegid, rb_setegid_core)
+ (p_uid_exchange, p_gid_exchange), regparse.c (strdup_with_null),
+ signal.c (sig_dfl), vm.c (rb_iseq_eval, rb_iseq_eval_main),
+ vm_insnhelper.c (vm_expandarray): suppress
+ unused-but-set-variable warnings.
+
+ * class.c (rb_obj_methods), compile.c (iseq_compile_each),
+ iseq.c(iseq_load, rb_iseq_parameters), pack.c (pack_pack),
+ regcomp.c (is_not_included, update_string_node_case_fold),
+ transcode.c (rb_econv_open0, make_replacement),
+ vm_eval.c (raise_method_missing): remove unused variable.
+
+ * signal.c (reserved_signal_p): static.
+
+Mon Dec 5 14:27:23 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/{subst.h,win32.h}, ext/socket/rubysocket.h: revert
+ r33876. [ruby-core:41475] [Bug #5706]
+
+ * ext/socket/extconf.rb: the alternative hack for [Bug #5675].
+
+Mon Dec 5 10:18:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/zlib/zlib.c (rb_gzreader_initialize): revert a part of r33937.
+ 1st, to change the mode of an IO is very sensitive problem, so
+ the maintainer of this library should judge it.
+ 2nd, usually Zlib::GzipReader.new is not called directly. #initialize
+ is called via .open, and in the method the I/O is opened in binary
+ mode, so there is no problem without changing the mode in #initialize.
+
+Sun Dec 4 22:53:12 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/tempfile.rb: don't use lock directory. [ruby-dev:39197]
+
+Sun Dec 4 22:34:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/tempfile.rb (Tempfile::MAX_TRY): remove unused constant.
+
+Sun Dec 4 12:11:28 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * lib/pp.rb: fix rdoc.
+
+Sun Dec 4 12:03:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#methods): Kernel#methods receives
+ zero or one argument. [ruby-core:37118] [Bug #4882]
+
+Sun Dec 4 10:15:00 2011 Luis Lavena <luislavena@gmail.com>
+
+ * ext/zlib/zlib.c (rb_gzreader_initialize): use binary mode by default
+ under Windows. Patch by Hiroshi Shirosaki. [ruby-core:40706]
+ [Feature #5562]
+
+ * include/ruby/encoding.h (void rb_econv_binmode): define NEWLINE
+ decorator.
+
+ * io.c (rb_cloexec_fcntl_dupfd): Introduce NEED_READCONV and
+ NEED_WRITECONV to replace universal newline decorator by CRLF only
+ when required to improve file reading and writing under Windows.
+ Patch by Hiroshi Shirosaki. [ruby-core:40706] [Feature #5562]
+ * io.c (do_writeconv): adjust binary mode if required.
+ * io.c (read_all, appendline, swallow, rb_io_getline_1): ditto.
+ * io.c (io_getc, rb_io_each_codepoint, rb_io_ungetc): ditto.
+ * io.c (rb_io_binmode, rb_io_ascii8bit_binmode): ditto.
+ * io.c (rb_io_extract_modeenc, rb_sysopen): ditto.
+ * io.c (pipe_open, prep_stdio, io_encoding_set): ditto.
+ * io.c (rb_io_s_pipe, copy_stream_body): ditto.
+
+ * test/ruby/test_io_m17n.rb (EOT): add test for pipe and stdin in
+ binary mode.
+
+ * win32/win32.c (init_stdhandle): remove O_BINARY from stdhandle
+ initialization.
+ * win32/win32.c (rb_w32_write): use FTEXT mode accordingly.
+
+Sat Dec 3 20:49:16 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (set_const_visibility): print a warning when no argument
+ is passwd to Module#private_constant. [ruby-list:48558]
+
+ * vm_method.c (set_method_visibility): ditto for
+ Module#private_class_method.
+
+Sat Dec 3 20:43:14 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * variable.c (set_const_visibility): Module#private_constant has
+ changed the visibility of only the first argument. Now it changes
+ all of them. [ruby-list:48558]
+
+ * test/ruby/test_module.rb: add a test for above.
+
+Sat Dec 3 07:17:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (CFLAGS): append ARCH_FLAG.
+
+ * configure.in (ARCH_FLAG): exclude from CFLAGS.
+
+ * configure.in (UNIVERSAL_INTS): include short int. fix for
+ test/mkmf.
+
+Fri Dec 2 15:48:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.c (VpAllocReal): reduce extra frac.
+
+Fri Dec 2 15:41:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: check whether -pie or -Wl,-pie is valid as
+ LDFLAGS. [ruby-core:41438] [Bug#5697]
+
+ * configure.in: use $linker_flag for LDFLAGS option which is not
+ limited to particular platforms.
+
+Thu Dec 1 23:21:58 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread_pthread.c (thread_timer): call prctl(PR_SET_NAME) only if
+ PR_SET_NAME is available.
+
+Thu Dec 1 22:31:16 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (linux_get_maxfd): change local variable name.
+
+Thu Dec 1 16:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/socket/extconf.rb: add arguments for macro calls.
+ [ruby-core:41370] [Bug#5681]
+
+Thu Dec 1 16:20:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (MakeMakefile#try_func): fix broken patch at r33834.
+
+Thu Dec 1 14:43:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.h (Real): suppress false warning from
+ clang. [ruby-core:41418] [Bug#5693]
+
+Thu Dec 1 10:31:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LDFLAGS): -fstack-protector is always needed to
+ link static library created with it. [ruby-core:41387]
+ [Bug#5686]
+
+Thu Dec 1 07:03:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add sys/prctl.h test.
+ * thread_pthread.c (thread_timer): call prctl(PR_SET_NAME) to change
+ thread name. It may help to debug.
+
+Wed Nov 30 23:35:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * variable.c (rb_path2class): don't raise NameError when the middle
+ constant of the path is not defined but defined on toplevel.
+ [ruby-core:41410] [Bug #5691]
+
+Wed Nov 30 20:02:02 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * transcode.c: Simplified rb_econv_binmode, avoided a warning on cygwin.
+
+Wed Nov 30 08:57:07 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Use MakeMakefile's rm_f to avoid conflict with Rake or
+ FileUtils.
+ * test/ruby/test_module.rb: Hide MakeMakefile's inclusion in Object
+
+Wed Nov 30 09:12:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rdoc/encoding.rb (RDoc::Encoding.read_file): fixup newline chars
+ on Windows.
+ see https://github.com/rdoc/rdoc/issues/87
+
+ * test/rdoc/test_rdoc_markup_pre_process.rb
+ (TestRDocMarkupPreProcess#test_include_file,
+ TestRDocMarkupPreProcess#test_include_file_encoding_incompatible):
+ follow above change.
+
+Wed Nov 30 09:09:37 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): parse method can take an option file
+ name for use in exception messages.
+ * test/psych/test_parser.rb: corresponding tests.
+
+Tue Nov 29 09:07:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Fix indentations of constants at end of module.
+ Document some constants.
+
+Tue Nov 29 09:58:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_write_error2): suppress unused variable warning.
+
+Tue Nov 29 07:45:26 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Wrap comments to 78 columns and clean up formatting.
+
+Tue Nov 29 05:54:18 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/mkmf.rb: Wrap mkmf.rb in module MakeMakefile to clean up Object
+ documentation. [Ruby 1.9 - Feature #5658]
+ * ext/extmk.rb: Use MakeMakefile::CONFIG instead of Object::CONFIG
+ * test/mkmf/base.rb: ditto
+
+Tue Nov 29 00:08:57 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (INSTRUBY_ARGS): added --mantype to apply mdoc2man.rb
+ to man pages. Fixes #5598.
+ (do-install-nodoc, do-install-local, do-install-man,
+ dont-install-nodoc, dont-install-local, dont-install-man):
+ No longer needs --mantype.
+
+ Reported by Rainer Orth <ro AT cebitec.uni-bielefeld.de>,
+ patch by George Koehler <xkernigh AT netscape.net>.
+
+Mon Nov 28 22:26:31 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rake/test_rake_directory_task.rb
+ (TestRakeDirectoryTask#test_directory_win32): shouldn't create any
+ file/directory on root directory. create on @tempdir (= Dir.pwd).
+ see https://github.com/jimweirich/rake/issues/91
+
+Mon Nov 28 12:57:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_write_error2): fwrite() returns ssize_t.
+
+Mon Nov 28 12:47:19 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * parse.y (nodetype, nodeline): static. these functions are for
+ debugging, and not intend to be public.
+
+Mon Nov 28 12:37:54 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c (initial_params): static. it seems to be forgotten at r33501.
+
+Mon Nov 28 12:32:24 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/win32.h, win32/win32.c (GetCurrentThreadHandle): remove
+ unused old API.
+
+Mon Nov 28 12:29:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/mkexports.rb (Exports#initialize): remove old symbol name.
+
+Mon Nov 28 12:15:28 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/mkexports.rb (Exports#read_substitution): need to read
+ from subst.h too. [Bug #5675]
+
+Mon Nov 28 11:46:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_io_flush): release GVL during fsync() on Windows.
+
+Mon Nov 28 11:00:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/subst.h: typo of r33876.
+
+Mon Nov 28 10:36:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/subst.h: moved Windows specific substitutions from
+ win32.h.
+
+ * ext/socket/rubysocket.h: include ruby/subst.h. [Bug #5675]
+
+Mon Nov 28 10:20:58 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{Makeilfe.sub,win32.c} (FILE_COUNT, FILE_READPTR): move the
+ definitions from config.h to win32.c. I dared to have left such
+ macros, for other future compiler support.
+ [ruby-core:41313] [Bug #5674]
+
+Mon Nov 28 09:28:30 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_uchmod): typo. [Bug#5671] [ruby-dev:44898]
+
+ * test/ruby/test_file.rb (TestFile#test_chmod_m17n): test of above bug.
+
+Sun Nov 27 21:25:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: added -fno-strict-overflow. it suppress annoying
+ -Wstrict-overflow warning.
+
+Sun Nov 27 20:58:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_write_error2): get rid of warning on linux. fwrite
+ of glibc is tagged __attribute__ ((__warn_unused_result__))
+ if _FORTIFY_SOURCE != 0.
+ * vm_dump.c (rb_vm_bugreport): ditto.
+
+Sun Nov 27 19:09:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (stack_protector): disable on mingw. [Bug#5676]
+
+ * Makefile.in (DLDFLAGS): also needs -fstack-protector.
+ [Bug#5676]
+
+Sun Nov 27 14:13:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add -fstack-protector into XLDFLAGS as well as
+ XCFLAGS if stack-protector is used.
+
+Sun Nov 27 13:09:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: workaround to avoid MacOS X build error.
+ Maybe autoconf 2.61 is slightly buggy. [ruby-core:41316]
+
+Sun Nov 27 04:57:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (--no-undefined): r33840 breaks FreeBSD and DragonFly
+ with gcc 4.4 or later. Their environ is in /usr/libexec/ld-elf.so.1,
+ so it will be false negative.
+
+Sun Nov 27 04:55:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP::SSL_IVNAMES): rerefix 33701.
+ SSL_ATTRIBUTES stores names for set_params, they are symbol.
+ SSL_IVNAMES stores instance variable names.
+
+Sun Nov 27 00:16:07 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_body): use 0666 for permission argument for open.
+ [ruby-core:40865]
+
+Sat Nov 26 23:01:38 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_engine.rb: remove side effect of generic engine
+ load by explicitly loading software-based "openssl" engine for
+ all tests.
+
+Sat Nov 26 20:41:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP.get_response): enable use_ssl
+ if given URI object is https.
+ patched by Mark Ferlatte [ruby-core:40665] [Bug #5545]
+
+ * lib/net/http.rb (Net::HTTP.post_form): ditto.
+
+Sat Nov 26 20:01:18 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb (Net::HTTP::SSL_ATTRIBUTES): refix 33701.
+ store instance variable symbol names.
+
+Sat Nov 26 15:40:25 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (script): should be ./configure
+
+Sat Nov 26 15:39:18 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (before_script): wrong name, sorry.
+
+Sat Nov 26 15:31:34 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml (before-script): autoconf required.
+
+Sat Nov 26 15:24:05 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * .travis.yml: Travis enable.
+
+Sat Nov 26 10:47:50 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb: remove checks for available functions.
+ * ext/openssl/missing.h: ditto.
+ Thanks, Tim Mooney for reporting this!
+ [Bug #5432] [ruby-core:40088]
+
+Sat Nov 26 10:22:28 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: add comment on where to find implementation
+ of OpenSSL::SSL::SSLSocket#session.
+
+Sat Nov 26 05:00:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (--no-undefined): RUBY_TRY_CFLAGS does nothing for
+ linker flags. use RUBY_TRY_LDFLAGS.
+
+Fri Nov 25 11:37:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (ioctl_narg_len, linux_iocparm_len): reinstantiate linux
+ specific narg length calculation.
+ * test/ruby/test_io.rb (test_ioctl_linux2): add new test for old and
+ unstructured ioctl.
+
+Fri Nov 25 10:39:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * Makefile.in (EXTLDFLAGS): export it.
+ * configure.in: add --no-undefined if --enable-shared is specified.
+ Gentoo enabled this option long time. Also, export EXTLDFALGS.
+
+Fri Nov 25 08:48:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: turn on PIE if --enable-shared is not specified.
+
+Fri Nov 25 08:05:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add -fstack-protector. It help to protect us from
+ stack smashing attack.
+
+Fri Nov 25 08:03:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add -D_FORTIFY_SOURCE=2. It provide some compile
+ time and runtime check for security.
+
+Fri Nov 25 08:00:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/mkmf.rb: get rid of warnings of mkmf.rb if -Wmissing-declarations
+ and/or -Wold-style-definition warnings if specified.
+ Patch by Nikolai Weibull. Thank you! [Bug #5459] [ruby-core:40200]
+
+Fri Nov 25 07:46:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add -Wall always.
+
+Thu Nov 24 20:02:40 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/openssl/test_engine.rb: use IO#reopen to restore stderr.
+
+Thu Nov 24 19:59:56 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_reopen): re-initialize buffering mode for stdout and
+ stderr.
+
+Thu Nov 24 11:12:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_io_fsync,rb_io_fdatasync): release GVL during fsync().
+ fsync() and fdatasync() may take a long time on slow disks and/or
+ if there is much dirty data.
+ Patch by Eric Wong. [Feature #5665] [ruby-core:41247]
+
+Thu Nov 24 10:05:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_engine.rb: Suppress output from 'openssl'
+ engine's RC4 cipher.
+ [Bug #5633] [ruby-core:41026]
+
+Thu Nov 24 08:05:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey_dsa.c: remove redundant colon from error
+ message.
+ * ext/openssl/ossl_ssl.c: ditto.
+ * ext/openssl/ossl_pkey_rsa: ditto.
+ patched by Eric Hodel [Bug #5604] [ruby-core:40896]
+
+Wed Nov 23 20:03:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (ioctl_narg_len): don't use _IOC_SIZE macro on Linux.
+ On Linux some constants for ioctl(2) doesn't include the size of
+ its return value and 16bit value; for example FIONREAD 0x541B.
+ Moreover the manual, ioctl_list(2), says "Note that the size
+ bits are very unreliable: in lots of cases they are wrong,
+ either because of buggy macros using sizeof(sizeof(struct)),
+ or because of legacy values."
+ So we shouldn't use it.
+
+Tue Nov 22 18:07:32 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (_pioinfo): need to declare _pioinfo() before using
+ _osfhnd and other macros which uses _pioinfo() internally.
+
+Tue Nov 22 17:49:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (_pioinfo): make an inline function.
+
+Tue Nov 22 11:26:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+Tue Nov 22 11:33:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/win32.c (dupfd): argument of _osfhnd and so on should not
+ have side effect.
+
+Tue Nov 22 11:26:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * bignum.c (rb_big_divide): refix of r33536. Don't change behavior of Bignum#/.
+ [ruby-core:40429] [Bug #5490]
+
+Tue Nov 22 10:46:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * numeric.c (ruby_float_step): improve floating point calculations.
+ [ruby-core:35753] [Bug #4576]
+
+ * numeric.c (ruby_float_step): correct the error of floating point
+ numbers on the excluding case.
+ patched by Masahiro Tanaka [ruby-core:39608]
+
+ * numeric.c (ruby_float_step): use the end value when the current
+ value is greater than or equal to the end value.
+ patched by Akira Tanaka [ruby-core:39612]
+
+Tue Nov 22 06:59:21 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb (test_fcntl_dupfd): there is no known platform
+ which don't have F_DUPFD. [ruby-dev:44874]
+
+Tue Nov 22 04:46:22 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: remove autoload from psych
+ * ext/psych/lib/psych/json.rb: ditto
+
+Tue Nov 22 00:44:59 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_io.rb (test_fcntl_dupfd): the argument of F_DUPFD is
+ minimum file descriptor.
+
+Tue Nov 22 00:25:17 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (linux_get_maxfd): get rid of a warning.
+
+Mon Nov 21 23:39:14 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (linux_get_maxfd): new function to find maximum fd on Linux.
+ (rb_close_before_exec): use linux_get_maxfd.
+
+Mon Nov 21 06:16:24 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (fiber_switch): ignore fiber context switch
+ because destination fiber is same as current fiber.
+ With out this, it may segv on FreeBSD 9.
+ patched by Koichi Sasada.
+
+Sun Nov 20 23:22:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb (extract_makefile, extmake): regenerate makefiles
+ if globbed source file list is changed.
+
+ * lib/mkmf.rb (create_makefile): store ORIG_SRCS.
+
+Sun Nov 20 22:43:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enc/unicode.c (PROPERTY_NAME_MAX_SIZE): +1.
+ reported by Ken Takata. [ruby-dev:44894][Bug #5652]
+
+Sun Nov 20 11:01:28 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/set.rb (SortedSet.setup): remove old_init after initialize
+ method is redefined. The remove before redefinition makes the
+ warning prevention fragile. [ruby-dev:44892]
+
+Sun Nov 20 04:01:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (enc/unicode/name2ctype.h): remove duplicated
+ ifdefs.
+
+Sat Nov 19 19:31:47 2011 Tanaka Akira <akr@fsij.org>
+
+ * time.c (TIME_COPY_GMT): copy vtm.utc_offset and vtm.zone too.
+ patch by Tomoyuki Chikanaga.
+ [ruby-dev:44827] [Bug #5586]
+
+Sat Nov 19 16:36:57 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/net/http/test_http.rb: remove temporally files in ensure clause.
+
+Sat Nov 19 08:18:41 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/net/http/test_http.rb: remove temporally files.
+
+Fri Nov 18 17:18:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_raw, console_set_raw)
+ (console_getch): optional parameters. [EXPERIMENTAL]
+
+Fri Nov 18 16:12:11 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/io/console/console.c (console_cooked, console_set_cooked):
+ new methods to reset cooked mode. [EXPERIMENTAL]
+
+Fri Nov 18 13:20:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/unit/assertions.rb (MINI_DIR): quick dirty hack to get rid of
+ warnings when using assert/assert_respond_to.
+
+Fri Nov 18 13:03:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_cloexec_open): set O_NOINHERIT instead of O_CLOEXEC if it is
+ available (for Windows).
+
+ * win32/win32.c (fcntl): on F_DUPFD, determine the inheritance of the
+ new handle by O_NOINHERIT flag of original fd.
+
+Fri Nov 18 08:00:41 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.8.1 (r6750)
+ * test/minitest/*: ditto
+ * configure.in: Improved gcc-llvm error message to help people migrate.
+
+Thu Nov 17 20:43:34 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: revert a part of the patch in [ruby-dev:41531].
+ don't use db.h with other headers. [ruby-dev:44884].
+
+Thu Nov 17 20:23:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * benchmark/bm_io_select[23].rb: use Process::RLIMIT_NOFILE only when
+ it is defined. if it is not defined, assume 64 as the max of fds.
+
+Thu Nov 17 10:36:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb (load_file): make sure opened yaml files are
+ also closed. [ruby-core:41088]
+
+Wed Nov 16 18:13:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * Makefile.in (LIBRUBY_A): check if generated linked library is
+ valid for extconf.
+
+Wed Nov 16 13:51:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2ulong): need to calc in unsigned long, because
+ the range of VALUE is larger than it on LLP64 platform, such as Win64.
+ this change fixes the failures of test/-ext-/num2int.
+
+Wed Nov 16 12:02:47 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/webrick/test_cgi.rb (TestWEBrickCGI#start_cgi_server): there are
+ no guarantee of existence of RbConfig::CONFIG['LIBPATHENV'].
+ it only exists in Unix-like environments.
+
+ * test/webrick/test_filehandler.rb
+ (WEBrick::TestFileHandler#test_script_disclosure): ditto.
+
+Wed Nov 16 11:34:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (argf_next_argv): wrong timing of setting ecflags.
+ fixed the failure of TestArgf#test_textmode introduced at r33662.
+
+Wed Nov 16 10:45:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/-test-/num2int/num2int.c: remove an unnecessary and wrong decl
+ of rb_stdout. it's declared in ruby.h correctly.
+
+Wed Nov 16 10:26:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * bignum.c (rb_big2ull): add a cast to get rid of a VC++ warning.
+
+Wed Nov 16 09:39:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/minitest/unit.rb (assert_raises): experimental fix to run
+ correctly on chkbuild over 64bit linux. call exception_details only
+ when the detail is really needed to avoid create needless inspect
+ under ulimit-ed environment.
+
+Wed Nov 16 06:34:30 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_thread.rb (test_condvar_timed_wait): use
+ assert_operator.
+
+Tue Nov 15 21:56:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/ruby/test_sleep.rb (test_sleep_5sec): 0.1sec tolerance is too
+ small for busy environment.
+
+Tue Nov 15 20:08:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c, thread.c, ext/pty/pty.c, ext/fiddle/closure.c: use
+ __linux__ macro for consistency.
+
+Tue Nov 15 14:45:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h(NUM2LONG, NUM2INT, NUM2SHORT, NUM2LL,
+ INT2NUM, UINT2NUM, LONG2NUM, ULONG2NUM, NUM2CHR): wrap by
+ macros.
+
+Tue Nov 15 13:38:14 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * include/ruby/defines.h (FLUSH_REGISTER_WINDOWS): move sparc asm code
+ to a separate file sparc.c for preventing inlining optimization.
+ Patched by Jurij Smakov. [Bug #5244] [ruby-core:40685]
+ * sparc.c (rb_sparc_flush_register_windows): ditto.
+ * configure.in: ditto.
+
+Tue Nov 15 13:11:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h: get rid of gcc specific rb_long2int(),
+ NUM2LONG(), NUM2INT(), NUM2SHORT(), NUM2LL(), INT2NUM(),
+ UINT2NUM(), LONG2NUM(), ULONG2NUM() and NUM2CHR()
+ implementation. Because 1) They don't make any better code
+ at all. 2) Inline function have a better debugger supoort.
+
+Tue Nov 15 09:58:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (TestIO#test_fcntl_dupfd): fix OpenBSD test
+ failure. [ruby-dev:44872]
+
+Tue Nov 15 09:50:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * regcomp.c (print_indent_tree): fix double printing of ENCLOSE_OPTION
+ children bug. patched by Suraj Kurapati. [ruby-core:40964]
+
+Tue Nov 15 01:53:48 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/ruby/test_io.rb (test_fcntl_dupfd): fix test error on
+ SnowLeopard. Pointed out by CHIKANAGA Tomoyuki. [ruby-dev:44866]
+
+Mon Nov 14 22:06:02 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/openssl/ossl_pkey.c (ossl_pkey_new_from_file): set close-on-exec
+ flag.
+
+ * ext/openssl/ossl_x509cert.c (rb_fd_fix_cloexec): ditto.
+
+Mon Nov 14 14:54:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c (rb_big2ull): fix 32bit platform breakage. we must
+ not assume sizeof(VALUE) == sizeof(LONG_LONG).
+ * test/-ext-/num2int/test_num2int.rb (class TestNum2int):
+ fix false assumption on 32bit platform.
+
+Mon Nov 14 14:52:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * numeric.c (rb_fix2ushort): fix typo. use num rb_num2ushort()
+ instead of num2uint().
+
+Sun Nov 13 10:31:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h: add #ifdef comment.
+
+Sun Nov 13 10:28:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/ruby.h: add NUM2SHORT(), NUM2USHORT() macros.
+ * numeric.c: ditto.
+
+ * test/-ext-/num2int/test_num2int.rb: add testcases for NUM2SHORT().
+ * ext/-test-/num2int/num2int.c: ditto.
+
+Sun Nov 13 10:23:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bignum.c (rb_big2ull): fix off-by-twice bug of NUM2ULL.
+ * test/-ext-/num2int/test_num2int.rb (class TestNum2int):
+ fix a testcase too.
+
+Sun Nov 13 10:22:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/-ext-/num2int/test_num2int.rb (class TestNum2int):
+ add FIXNUM tests.
+
+Sun Nov 13 09:57:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * numeric.c (check_uint): fix off-by-one bug of NUM2UINT.
+ * bignum.c (rb_big2ulong): fix off-by-one bug of NUM2ULONG.
+
+ * test/-ext-/num2int/test_num2int.rb: add a testcase for NUM2INT()
+ NUM2UINT(), NUM2LONG(), NUM2ULONG(), NUM2LL and NUM2ULL().
+ * ext/-test-/num2int/depend: ditto.
+ * ext/-test-/num2int/extconf.rb: ditto.
+ * ext/-test-/num2int/num2int.c: ditto.
+
+Sun Nov 13 23:47:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dbm/extconf.rb: use convertible_int.
+
+Sun Nov 13 23:45:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (checking_for): should not modify the result.
+
+ * lib/mkmf.rb (have_struct_member): accept compiler options.
+
+ * lib/mkmf.rb (convertible_int): add restricted support of struct
+ member, and TYPEOF_ macro.
+
+Sun Nov 13 23:21:24 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_reorganize): set close-on-exec flag after
+ gdbm_reorganize(). gdbm_reorganize() opens a new database internally.
+
+Sun Nov 13 19:57:18 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: rollback for each headers for each libraries.
+
+Sun Nov 13 16:24:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: treat libc as a choice for a library which
+ provide ndbm API.
+
+Sun Nov 13 15:40:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: duplicate $libs and $defs when save them.
+
+Sun Nov 13 12:43:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: rollback $libs and $defs when db detection is
+ failed. It fixes -lgdbm -lqdbm when the system has qdbm and gdbm
+ without gdbm_compat.
+
+Sat Nov 12 21:14:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/webrick/test_cgi.rb (class TestWEBrickCGI): respect
+ RbConfig::CONFIG["LIBPATHENV"]. [Bug #5135] [ruby-core:38653]
+ * test/webrick/test_filehandler.rb (class WEBrick): ditto.
+
+Sat Nov 12 20:57:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (test_fcntl_dupfd): skip if Fcntl::DUPFD
+ is not defined. Pointed out by CHIKANAGA Tomoyuki. Thanks.
+
+Sat Nov 12 17:26:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (do_ioctl, ioctl_narg_len, setup_narg, rb_ioctl): use
+ ioctl_req_t.
+
+Sat Nov 12 17:01:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dbm/extconf.rb (headers.db_check): reduce duplicated code.
+
+Sat Nov 12 15:59:42 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: dbm_clearerr should be available in all ndbm
+ implementation. If it is not available, it is caused by
+ header/library mismatch such that Berkeley DB header & gdbm library.
+
+ * ext/dbm/dbm.c (fdbm_store): use dbm_clearerr() unconditionally.
+ gdbm 1.9 provides it as a real function instead of a empty macro.
+
+Sat Nov 12 13:35:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * bootstraptest/runner.rb: don't suppress SIGINT.
+ [Feature #5612] [ruby-dev:44856]
+
+Sat Nov 12 11:20:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (fcntl_narg_len): introduce narg calculation for fcntl instead
+ of hard coded 256.
+ * io.c (setup_narg): ditto.
+
+Sat Nov 12 11:19:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (test_fcntl_dupfd): add another fcntl test.
+
+Sat Nov 12 11:18:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/ruby/test_io.rb (test_fcntl_lock_freebsd): add a testcase
+ of fcntl lock for freebsd.
+
+Sat Nov 12 11:16:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (ioctl_narg_len): Linux doesn't have IOCPARM_LEN macro, but
+ has _IOC_SIZE. support it.
+
+Sat Nov 12 11:13:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (rb_ioctl): don't expose our sanity check value to ruby script.
+ It may change string value meaning if the value is string.
+ (e.g. MacOS X has F_GETPATH ioctl)
+ * io.c (rb_fcntl): ditto.
+
+Sat Nov 12 11:06:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (ioctl_req_t): Type of req argument of ioctl() depend on platform.
+ Moreover almost all linux ioctl can't be represented by 32bit integer
+ (i.e. MSB is 1). We need wrap ioctl argument type.
+ [Bug #5429] [ruby-dev:44589]
+ * io.c (struct ioctl_arg): ditto.
+ * io.c (rb_ioctl): ditto.
+ * test/ruby/test_io.rb (test_ioctl_linux): add a testcase for ioctl
+
+Sat Nov 12 11:00:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (struct io_cntl_arg): remove io_p member.
+ * io.c (nogvl_fcntl, do_fcntl, rb_fcntl): separated from ioctl functions.
+ * io.c (nogvl_io_cntl): remove fcntl depended logic.
+ * io.c (io_cntl): ditto.
+ * io.c (rb_io_ctl): ditto.
+ * io.c (rb_io_ioctl): ditto.
+
+Sat Nov 12 10:59:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (setup_narg): fix off by one bug.
+
+Sat Nov 12 10:56:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (+setup_narg): factor out length calculation logic.
+ * io.c (rb_io_ctl): ditto.
+
+Sat Nov 12 10:52:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (+ioctl_narg_len) new helper function.
+ * io.c (rb_io_ctl): don't use ioctl specific length check
+ if caller is fcntl.
+
+Fri Nov 11 23:00:46 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: db_prefix is not required now.
+
+Fri Nov 11 21:13:30 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_initialize): use GDBM_CLOEXEC if available.
+
+Fri Nov 11 21:00:05 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: fix dbm_pagfno and dbm_dirfno detection with
+ Berkeley DB. Macro definitions needs arguments to detect correctly.
+ SIZEOF_DSIZE needs -DDB_DBM_HSEARCH because db.h defines datum type
+ only if DB_DBM_HSEARCH is defined.
+
+Fri Nov 11 18:41:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_seteuid): separate an internal wrapper function
+ from the method implementation.
+
+Fri Nov 11 17:21:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_library, find_library, have_func): allow
+ arguments of function to be checked.
+
+Fri Nov 11 17:09:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_dump.c (HAVE_BACKTRACE): fallback to 0.
+
+ * vm_dump.c (rb_vm_bugreport): show "Other runtime information"
+ header only when available.
+
+ * vm_dump.c (rb_vm_bugreport): get rid of modifying the content of
+ VM directly.
+
+ * vm_dump.c (rb_vm_bugreport): check if vm is non-null.
+ Pointed out by Ikegami Daisuke <ikegami.da@gmail.com>.
+ Thank you.
+
+Fri Nov 11 12:36:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (pipe_open): Remove fflush(stdin). it's no effect.
+ Pointed out by Ikegami Daisuke <ikegami.da@gmail.com>.
+ Thank you.
+
+Fri Nov 11 07:33:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb (Net::HTTP::SSL_ATTRIBUTES): Use symbol keys instead
+ of string keys to avoid duplicating parameters in
+ OpenSSL::SSL:SSLContext#set_params.
+
+Thu Nov 10 15:02:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_library, have_func, have_var, have_header):
+ add compiler option parameter.
+
+Thu Nov 10 07:45:16 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/lib/openssl/ssl.rb (class OpenSSL::SSL::SSLContext):
+ Document #set_params.
+
+Wed Nov 9 11:36:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (gvl_yield): don't prevent concurrent sched_yield().
+ [Bug #5130] [ruby-core:38647]
+
+Wed Nov 9 23:20:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_update_max_fd): fstat(2) can fail with other than
+ EBADF. [ruby-dev:44837] [Bug #5593]. Cf.
+ http://pubs.opengroup.org/onlinepubs/9699919799/functions/fstat.html
+
+ * io.c (rb_sysopen): max fd is updated in rb_sysopen_internal()
+ already.
+
+Wed Nov 9 22:13:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file.rb (TestFile#test_utime_with_minus_time_segv):
+ fixed previous commit.
+
+Wed Nov 9 19:53:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_file.rb (TestFile#test_utime_with_minus_time_segv):
+ add test for r33685.
+
+Wed Nov 9 19:00:44 2011 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_fiber.rb: add tests for r33684 (Fiber#resume).
+
+Wed Nov 9 16:40:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (unixtime_to_filetime): should check the return value
+ of localtime(). reported by snowjail at gmail.com.
+ [ruby-dev:44838] [Bug #5596]
+
+Thu Nov 9 13:17:25 2011 Koichi Sasada <ko1@atdot.net>
+
+ * cont.c (rb_fiber_m_transfer, rb_fiber_resume): prohibit using
+ "resume" after "transfer" method are used. You should not mix
+ "resume" fiber and "transfer" fiber.
+ [Bug #5526]
+
+ * NEWS: add information about this change.
+
+Wed Nov 9 11:40:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/Doxyfile.tmpl (INCLUDE_PATH): add srcdir and include.
+ [ruby-core:40843] [Bug #5597]
+
+Wed Nov 9 11:02:54 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * thread.c (do_select): fix cast, tv_sec is time_t.
+
+Wed Nov 9 10:32:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: should not use test -e for portability.
+ [ruby-core:40841] [Bug #5594]
+
+Wed Nov 9 04:52:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/tree_builder.rb: dump complex numbers,
+ rationals, etc with reference ids.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
+ * ext/psych/lib/psych/visitors/to_ruby.rb: loading complex numbers,
+ rationals, etc with reference ids.
+ * test/psych/test_object_references.rb: corresponding tests
+
+Tue Nov 8 23:34:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dbm/dbm.c (fdbm_fetch, fdbm_key, fdbm_delete, fdbm_store)
+ (fdbm_has_key, fdbm_has_value): get rid of overflow.
+
+ * ext/gdbm/gdbm.c (rb_gdbm_fetch2, rb_gdbm_nextkey)
+ (rb_gdbm_delete, fgdbm_store, fgdbm_has_key): ditto.
+
+ * ext/dbm/dbm.c (fdbm_delete_if): hide intermediate objects.
+
+ * ext/gdbm/gdbm.c (fgdbm_delete_if): ditto.
+
+ * ext/dbm/extconf.rb: check size of datum.dsize to get rid of
+ overflow.
+
+Tue Nov 8 23:30:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * addr2line.c (PATH_MAX): define if not defined. [ruby-core:40840]
+
+Tue Nov 8 23:26:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/tk/tcltklib.c (rb_thread_critical): fix type.
+
+ * ext/tk/tcltklib.c (eventloop_sleep, lib_eventloop_core): int is
+ enough for micro seconds. may need to check overflow in the
+ setter though.
+
+ * ext/tk/tcltklib.c (RSTRING_LENINT): check overflow if necessary.
+
+ * ext/tk/tcltklib.c (RbTk_ALLOC_N): wrapper for ckalloc() which
+ takes an int.
+
+ * ext/tk/tcltklib.c (ip_ruby_cmd_receiver_get, tcltklib_compile_info):
+ get rid overflow.
+
+ * ext/tk/tcltklib.c (tcltklib_compile_info): constified.
+
+Tue Nov 8 20:50:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/dbm/test_dbm.rb: split tests for read only database.
+
+ * test/gdbm/test_gdbm.rb: ditto.
+
+Tue Nov 8 18:59:07 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (MasterDevice): define only when used.
+ (SlaveDevice): ditto.
+ (deviceNo): ditto.
+
+Tue Nov 8 17:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/ruby.h (rb_long2int): define as a macro always, so
+ that cpp conditionals can tell if it is provided.
+
+Tue Nov 8 17:30:50 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (cpp_command): remove multiple -arch flags since cpp
+ cannot work.
+
+Tue Nov 8 14:50:55 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_fwrite): call rb_w32_write_console() only if FMODE_TTY is
+ set. this is the one of the reason of IO writing slowness of Windows
+ in 1.9.3 or later.
+
+Tue Nov 8 11:01:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/pty/pty.c (get_device_once): FreeBSD 8 supported O_CLOEXEC flag
+ for posix_openpt, but FreeBSD 9's posix_openpt doesn't support
+ O_CLOEXEC and fails if specified.
+
+Tue Nov 8 02:36:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_READ_MASK,
+ ECONV_NEWLINE_DECORATOR_WRITE_MASK): new macro.
+
+ * io.c (rb_io_extract_modeenc, pipe_open, prep_stdio, argf_next_argv):
+ set TEXTMODE_NEWLINE_DECORATOR_ON_WRITE for textmode on creating IO
+ if the flag is available.
+
+ * io.c (make_writeconv): drop decorators for reading.
+
+ * io.c (make_readconv): drop decorators for writing.
+
+ * io.c (do_writeconv): existing writeconv is not the condition to raise
+ ArgumentError. should check textmode or not.
+
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_{cr,lf,crlf}_decorator_on_stdout): test above
+ changes.
+
+Mon Nov 7 22:03:47 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/gdbm/gdbm.c (fgdbm_initialize): set close-on-exec flag.
+
+Mon Nov 7 20:31:52 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: make sure strings that look
+ like base 60 numbers are serialized as quoted strings.
+ * test/psych/test_string.rb: test for change.
+
+Mon Nov 7 20:26:37 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/psych/test_yamlstore.rb: make test case inherit from MiniTest,
+ load psych/helper so that psych is loaded.
+
+Mon Nov 7 20:18:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * test/psych/test_yamldbm.rb: Test case should inherit from MiniTest,
+ load psych/helper so that psych and friends are loaded.
+
+Mon Nov 7 20:15:44 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: check dbm_pagfno() and dbm_dirfno().
+
+ * ext/dbm/dbm.c: use above to set close-on-exec flag.
+
+Mon Nov 7 20:05:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_fflush): remove fsync().
+
+ * io.c (rb_io_flush, rb_io_rewind): fsync() here.
+
+ these changes reduces fsync() calls to improve performance.
+ first reported at [ruby-list:48515] by ak7 at mail.goo.ne.jp .
+ [Bug #5585]
+
+Mon Nov 7 19:43:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_close_before_exec): use F_MAXFD if available.
+ F_MAXFD is available on NetBSD since NetBSD 2.0.
+
+Mon Nov 7 19:25:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_default_stdout_stderr_mode): new test for
+ r33627-33629. see [backport #5565]
+
+Mon Nov 7 01:14:22 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/debug.rb: add help for 'pp' and 'r[estart]'. patch
+ from Sho Hashimoto. [Bug #5093] [ruby-dev:44222]
+
+Sun Nov 6 14:49:58 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/rubysocket.h (rsock_recvmsg): declared.
+
+ * ext/socket/ancdata.c (rsock_recvmsg): extracted from
+ nogvl_recvmsg_func.
+ (nogvl_recvmsg_func): use rsock_recvmsg.
+
+ * ext/socket/unixsocket.c (recvmsg_blocking): use rsock_recvmsg.
+
+Sun Nov 6 03:22:36 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_engine.rb: add test for engine cipher. RC4 is used
+ because AES is not supported by the "openssl" engine currently.
+
+Sun Nov 6 00:11:52 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/test/unit.rb (Test::Unit::Options#non_options): options[:ruby]
+ should be an array. This fixes
+ "./ruby test/runner.rb test/testunit/test_parallel.rb"
+ [ruby-dev:44782]
+
+Sat Nov 5 20:30:30 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
+
+ * insns.def: Some fixes and tweaks to English explanations
+
+Sat Nov 5 19:11:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_fcntl_dupfd): don't clear try_dupfd_cloexec if
+ fcntl(F_DUPFD) failed as fcntl(F_DUPFD_CLOEXEC).
+
+Sat Nov 5 18:05:12 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rsock_socketpair0): refactored.
+
+Sat Nov 5 17:55:52 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (rsock_socket0): don't clear try_sock_cloexec if
+ SOCK_CLOEXEC is not a reason for EINVAL.
+
+Sat Nov 5 16:27:52 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/pathname/lib/pathname.rb, ext/tk/lib/multi-tk.rb,
+ ext/tk/sample/demos-en/widget, lib/benchmark.rb, lib/irb/cmd/fork.rb,
+ lib/mkmf.rb, lib/net/ftp.rb, lib/net/smtp.rb, lib/open3.rb,
+ lib/pstore.rb, lib/rexml/element.rb, lib/rexml/light/node.rb,
+ lib/rinda/tuplespace.rb, lib/rss/maker/base.rb,
+ lib/rss/maker/entry.rb, lib/scanf.rb, lib/set.rb, lib/shell.rb,
+ lib/shell/command-processor.rb, lib/shell/process-controller.rb,
+ lib/shell/system-command.rb, lib/uri/common.rb: remove unused block
+ arguments to avoid creating Proc objects.
+
+Sat Nov 5 15:45:04 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (rsock_socket0): extract single socket() call with
+ CLOEXEC handling from rsock_socket.
+
+Sat Nov 5 13:49:40 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * lib/pathname.rb (Pathname#find): return an enumerator if
+ no block is given.
+
+ * test/pathname/test_pathname.rb: add tests for above.
+
+ [ruby-dev:44797] [Feature #5572]
+
+Sat Nov 5 11:18:12 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rsock_socketpair0): don't clear
+ try_sock_cloexec if SOCK_CLOEXEC is not a reason for EINVAL.
+
+Fri Nov 4 14:08:19 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_pkey_rsa.c (rsa_generate): [SECURITY] Set RSA
+ exponent value correctly. Awful bug. This bug caused exponent of
+ generated key to be always '1'. By default, and regardless of e
+ given as a parameter.
+
+ !!! Keys generated by this code (trunk after 2011-09-01) must be
+ re-generated !!! (ruby_1_9_3 is safe)
+
+ * test/openssl/test_pkey_rsa.rb: Add tests for default exponent and
+ specifying exponent by a parameter.
+
+Fri Nov 4 01:31:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_engine.rb: add first tests for builtin "openssl"
+ engine.
+
+Fri Nov 4 08:41:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb:
+ * ext/openssl/ossl_engine.c: add some missing OpenSSL engines.
+ Thanks, Yui Naruse, for providing the patch!
+ [Bug #5548] [ruby-core:40670]
+
+Fri Nov 4 04:54:10 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/configure.bat: disable delayed expansion of enironment variable.
+ [Bug #5517] [ruby-core:40531]
+
+Fri Nov 4 03:45:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (make_writeconv): fixed typo of previous commit.
+
+Fri Nov 4 01:56:30 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (make_writeconv): unversal_newline converter is for reading.
+ so, if the io is text mode and has ECONV_UNIVERSAL_NEWLINE_DECORATOR
+ flag, use crlf_newline converter for writing.
+ this change fixes the problem about the luck of CR up Kernel.p and
+ Kernel.puts to stdout/stderr on Windows.
+
+Fri Nov 4 01:04:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (Init_readline): like r18313, libedit's
+ replace_history_entry may use offset instead of which.
+ so introduce history_replace_offset_func and initialize it.
+
+ * ext/readline/readline.c (hist_set): use history_replace_offset_func.
+
+Fri Nov 4 00:53:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/readline/readline.c (Init_readline): fix wrong condition.
+
+Thu Nov 3 23:53:04 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * encoding.c (rb_locale_charmap): ignore calling nl_langinfo_codeset()
+ on Windows except cygwin. [experimental]
+
+Thu Nov 3 22:45:09 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rsock_socketpair0): extracted from
+ rsock_socketpair to set close-on-exec flag for each socketpair()
+ call.
+
+Thu Nov 3 22:12:41 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/socket/init.c (rsock_socket): set close-on-exec flag when
+ SOCK_CLOEXEC is not available.
+
+Thu Nov 3 08:36:00 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_engine.rb: call Engine::cleanup on exit.
+ Patch provided by Yui Naruse, thanks!
+ [Bug #5547] [ruby-core:40669]
+
+Wed Nov 2 21:36:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * complex.c (nucomp_rationalize): fix function. [ruby-core:40667]
+ [Bug #5546]
+
+Wed Nov 2 08:16:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/webrick/utils.rb: fix fcntl call.
+
+ * lib/drb/unix.rb: ditto.
+
+Wed Nov 2 00:43:59 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/psych/test_yamldbm.rb: avoid platform dependency.
+ patch by Naohisa Goto. [ruby-dev:44763] [Bug #5535]
+ * test/syck/test_yamldbm.rb: ditto.
+
+Wed Nov 2 00:14:15 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * test/ruby/test_marshal.rb: renamed methods duplicated with those
+ of marshaltestlib.rb.
+
+Tue Nov 1 22:08:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: reject llvm-gcc.
+
+Tue Nov 1 21:39:00 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_cloexec_pipe): remove workaround of r33587.
+ The bug of NetBSD is fixed on Mon Oct 31 21:31:29 UTC 2011.
+ http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=45545
+
+Tue Nov 1 19:49:08 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_reopen): call rb_fd_fix_cloexec instead of
+ rb_maygvl_fd_fix_cloexec.
+
+Tue Nov 1 19:00:30 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_io_reopen): call rb_maygvl_fd_fix_cloexec after freopen().
+
+Tue Nov 1 17:17:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): reset coderange after expanding path.
+
+Tue Nov 1 14:55:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (nogvl_io_cntl): rb_cloexec_fcntl_dupfd's 2nd argument is int.
+
+ * process.c (move_fds_to_avoid_crash): ditto.
+
+Tue Nov 1 13:14:33 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vsnprintf.c (BSD_vfprintf): support 'll' prefix.
+
+ * vsnprintf.c (__sfeof): rename to avoid the collision with NetBSD's
+ one.
+
+ * vsnprintf.c (__sferror): ditto.
+
+ * vsnprintf.c (__sclearerr): ditto.
+
+ * vsnprintf.c (__sfileno): ditto.
+
+Tue Nov 1 12:36:16 2011 Tanaka Akira <akr@fsij.org>
+
+ * internal.h (rb_maygvl_fd_fix_cloexec): change the visibility for
+ ext/socket.
+
+Tue Nov 1 12:00:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_maygvl_fd_fix_cloexec): renamed from fd_set_cloexec.
+
+ * internal.h (rb_maygvl_fd_fix_cloexec): declared.
+
+ * ext/socket/init.c (cloexec_accept): use rb_maygvl_fd_fix_cloexec.
+ (rsock_s_accept_nonblock): use rb_update_max_fd.
+ (rsock_s_accept): use rb_update_max_fd.
+
+Tue Nov 1 08:24:40 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (cloexec_accept): new function to use accept4 if
+ available.
+ (rsock_s_accept_nonblock): use cloexec_accept.
+ (accept_blocking): ditto.
+
+ * ext/socket/extconf.rb: check accept4.
+
+Tue Nov 1 07:31:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (nogvl_recvmsg_func): use MSG_CMSG_CLOEXEC if
+ available.
+
+ * ext/socket/unixsocket.c (recvmsg_blocking): ditto.
+
+Tue Nov 1 05:59:41 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rsock_socketpair): use SOCK_CLOEXEC if
+ available.
+
+Tue Nov 1 02:56:17 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ruby.c (load_file_internal): convert the encoding of load path if
+ needed by platform. calling open() was replaced by rb_cloexec_open()
+ at r33549, but the function expected UTF-8 pathname on Windows.
+ (open() expected "locale" pathname.)
+ reported by taco via IRC.
+
+ * ruby.c (load_file): change the type of the 2nd parameter to pass its
+ encoding to load_file_internal().
+
+ * ruby.c (process_options, rb_load_file): follow above change.
+ NOTE: we should pass encoding information to rb_load_file().
+
+Mon Oct 31 23:49:38 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (rsock_socketpair): extracted from
+ rsock_sock_s_socketpair.
+
+Mon Oct 31 23:31:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/init.c (rsock_socket): use SOCK_CLOEXEC if available.
+
+Mon Oct 31 21:47:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_cloexec_pipe): NetBSD 6.0 will support pipe2(2),
+ but its return value is -1 or larger than 0.
+
+Mon Oct 31 22:04:54 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/dbm.c (fdbm_initialize): use O_CLOEXEC if available.
+
+Mon Oct 31 21:47:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_fd_fix_cloexec): renamed from
+ rb_fd_set_cloexec.
+
+ * io.c: follow the above renaming.
+
+ * ext/pty/pty.c: ditto.
+
+ * ext/socket/init.c: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/ancdata.c: ditto.
+
+ * ext/socket/unixsocket.c: ditto.
+
+Mon Oct 31 21:02:43 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb (Resolv::DNS): retry IO.select for premature wakeup.
+
+Mon Oct 31 20:14:22 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (fd_set_cloexec): clear CLOEXEC flag for standard file
+ descriptors.
+ (rb_cloexec_dup): use rb_cloexec_fcntl_dupfd.
+ (rb_cloexec_fcntl_dupfd): use F_DUPFD_CLOEXEC if available.
+
+Mon Oct 31 19:14:11 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/resolv/test_dns.rb: don't check maximum slept time.
+ ruby doesn't guarantee the maximum time because it is not a
+ realtime application.
+
+Mon Oct 31 13:10:06 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (setfl): extract from fcntl().
+
+ * win32/win32.c (dupfd): new function to support F_DUPFD. based on a
+ patch written by akr.
+
+ * win32/win32.c (fcntl): use above functions.
+
+ * include/ruby/win32.h (F_DUPFD): define. [experimental]
+
+ * include/ruby/win32.h (F_SETFL): change the value to correspond with
+ other platforms.
+
+Mon Oct 31 12:37:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (get_device_once): use O_CLOEXEC for posix_openpt if
+ available.
+
+Mon Oct 31 12:05:24 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_dup2): check oldfd == newfd at first.
+ pointed by KOSAKI Motohiro. [ruby-dev:44713]
+
+Mon Oct 31 10:50:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (rb_cloexec_fcntl_dupfd): this function needs F_DUPFD.
+
+ * io.c (nogvl_io_cntl): use rb_cloexec_fcntl_dupfd() only if the
+ platform has F_DUPFD.
+
+Mon Oct 31 00:50:00 2011 Luis Lavena <luislavena@gmail.com>
+
+ * configure.in: check -fno-omit-frame-pointer acceptance and usage
+ under MinGW. [ruby-core:39957] [Bug #5407]
+
+Mon Oct 31 00:16:11 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_cloexec_fcntl_dupfd): declared.
+
+ * io.c (rb_cloexec_fcntl_dupfd): new function.
+ (nogvl_io_cntl): use rb_cloexec_fcntl_dupfd.
+
+ * process.c (move_fds_to_avoid_crash): use rb_cloexec_fcntl_dupfd.
+
+Sun Oct 30 22:46:46 2011 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: check pipe2.
+
+ * io.c (rb_cloexec_pipe): use pipe2 if available.
+
+Sun Oct 30 22:32:44 2011 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (fill_standard_fds): use fstat() instead of fcntl(F_GETFD)
+ for MinGW. reported by Luis Lavena. [ruby-core:40526] [Bug #5516]
+
+Sun Oct 30 21:12:47 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_cloexec_pipe): declared.
+
+ * io.c (rb_cloexec_pipe): new function.
+ (rb_pipe): use rb_cloexec_pipe.
+
+ * thread_pthread.c (rb_thread_create_timer_thread): use
+ rb_cloexec_pipe.
+
+Sun Oct 30 20:06:07 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_dup): refine control flow.
+ (rb_cloexec_dup2): ditto.
+
+Sun Oct 30 18:45:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * ruby.c (fill_standard_fds): new function to open closed standard
+ file descriptors.
+ (ruby_sysinit): call fill_standard_fds.
+
+Sun Oct 30 10:50:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (install_recursive, bin-comm): split mere
+ string not path name. [ruby-core:40462] [Bug #5492]
+
+Sun Oct 30 10:47:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_cloexec_dup, rb_cloexec_dup2): CLOEXEC has been set if
+ dup3 succeeded.
+
+Sun Oct 30 09:58:48 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_dup): don't allocate standard file descriptors.
+
+Sun Oct 30 08:29:51 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_dup2): don't set CLOEXEC for standard file
+ descriptors.
+
+Sun Oct 30 07:47:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * configure.in: check dup3.
+
+ * io.c (rb_cloexec_dup2): use dup3 if available.
+
+Sat Oct 29 22:06:37 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_cloexec_dup2): declared.
+
+ * io.c (rb_cloexec_dup2): new function.
+ (io_reopen): use rb_cloexec_dup2.
+
+Sat Oct 20 21:08:18 2011 Tajima Akio <artonx@yahoo.co.jp>
+
+ * win32/Makefile.sub (CONFIG_H): have stdint.h if VC2010.
+ [Bug #5243]
+
+Sat Oct 29 20:59:08 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_dup): use F_DUPFD_CLOEXEC if available.
+
+Sat Oct 29 20:00:26 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_cloexec_dup): declared.
+
+ * io.c (rb_cloexec_dup): new function.
+ (ruby_dup): use rb_cloexec_dup.
+
+ * ext/pty/pty.c (pty_getpty): use rb_cloexec_dup.
+
+ * ext/openssl/ossl_bio.c (ossl_obj2bio): ditto.
+
+Sat Oct 29 16:11:34 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c (sdbm_prep): use O_CLOEXEC if available.
+
+Sat Oct 29 14:26:56 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_cloexec_open): use O_CLOEXEC if available.
+
+Sat Oct 29 12:57:15 2011 Tanaka Akira <akr@fsij.org>
+
+ * process.c (ruby_setsid): use rb_cloexec_open.
+ (rb_daemon): ditto.
+
+ * ruby.c (load_file_internal): ditto.
+
+ * file.c (rb_file_s_truncate): ditto.
+ (file_load_ok): ditto.
+
+ * random.c (fill_random_seed): ditto.
+
+ * ext/pty/pty.c (chfunc): ditto.
+ (get_device_once): ditto.
+
+ * ext/io/console/console.c (console_dev): ditto.
+
+Sat Oct 29 10:40:19 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_cloexec_open): declared.
+
+ * io.c (fd_set_cloexec): extracted from rb_fd_set_cloexec.
+ (rb_cloexec_open): new function.
+ (sysopen_func): use rb_cloexec_open.
+ (rb_sysopen_internal): use rb_update_max_fd instead of
+ rb_fd_set_cloexec.
+
+Sat Oct 29 09:05:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread_pthread.h: no Structured Exception Handling like macros.
+ [ruby-core:40432] [Bug #5491]
+
+Fri Oct 28 22:05:34 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c: RCS $Id$ removed.
+
+Thu Oct 27 18:58:00 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (parser_nextc): set encoding for the buffer of ripper.
+
+Fri Oct 28 06:06:08 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c (sdbm_prep): set FD_CLOEXEC flags for file
+ descriptors.
+ (fd_set_cloexec): new function.
+
+Fri Oct 28 03:01:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * vm_insnhelper.c (vm_call_cfunc): adding back useless hack. For some
+ reason, this fixes CFP errors on OS X 10.7.
+
+Fri Oct 28 00:09:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/sdbm/_sdbm.c (sdbm_prep): refactored for less nesting.
+
+Thu Oct 27 18:28:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_DEFINE_IF): revert r33534 partially to get
+ rid of AS_ECHO which is not available in autoconf 2.61.
+ [ruby-dev:44702]
+
+Thu Oct 27 16:10:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * bignum.c (rb_big_divide): raise ZeroDivisionError if divisor is
+ zero, as well as Fixnum. [ruby-core:40429] [Bug #5490]
+
+Thu Oct 27 14:56:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_FUNC_ATTRIBUTE): unset temporary variable.
+
+ * configure.in (RUBY_STACK_GROW_DIRECTION): substitute CPU name as
+ shell variable name. based on the patch by The Written Word Inc. at
+ [ruby-core:40421]. [Bug #5488]
+
+Thu Oct 27 09:57:56 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/ruby.h (SIZE_MAX): define SIZE_MAX if not defined.
+ patched by The Written Word Inc. [ruby-core:40422] [Bug #5489]
+
+Thu Oct 27 08:47:38 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/psych/parser.c: remove unused variable.
+
+Thu Oct 27 08:38:41 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/extconf.rb: add -Wall flag by default when compiler is
+ GCC.
+
+Wed Oct 26 15:24:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_file_join): honor input encodings than ASCII-8BIT.
+ [ruby-core:40338] [Bug #5483]
+
+Tue Oct 25 21:52:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/defines.h: use "__sparc" instead of "sparc" and
+ "__sparc__".
+
+ * dln.c: ditto.
+
+ [ruby-dev:44694]
+
+Tue Oct 25 06:34:39 2011 Eric Hodel <drbrain@segment7.net>
+
+ * re.c (match_aref): Use <code> around indexing examples to prevent
+ hyperlinks. [ruby-talk:389396]
+
+Mon Oct 24 23:55:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * complex.c: use "__sun" instead of "__sun__" to detect SunOS.
+
+ * math.c: ditto.
+
+ * hash.c: ditto.
+
+ * atomic.h: ditto.
+
+ * ext/io/wait/wait.c: ditto.
+
+ [ruby-dev:44693]
+
+Mon Oct 24 22:45:37 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c: use "__sun" instead of "sun" to detect SunOS.
+
+ * dln.c: ditto.
+
+ * cont.c: ditto.
+
+ * ext/sdbm/_sdbm.c: ditto.
+
+ [ruby-dev:44693]
+
+Mon Oct 24 22:38:08 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/pty/pty.c (get_device_once): delay rb_fd_set_cloexec() until
+ grantpt() on Solaris. grantpt() doesn't work with CLOEXEC on
+ Solaris 10.
+ reported by Naohisa GOTO. [ruby-dev:44688] [Bug #5475]
+
+Mon Oct 24 08:18:14 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (copy_stream_fallback_body): check nil for EOF of read method.
+ patch by Eric Wong. [ruby-core:39134] [Bug #5237]
+
+Sun Oct 23 18:21:23 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/tk/MANUAL_tcltklib.eng: fix typo.
+
+Sun Oct 23 18:03:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (rb_infinity, rb_nan): aggregated member initializers
+ need braces.
+
+Sun Oct 23 16:43:43 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/io/wait/wait.c: ioctl(2) is declared in unistd.h on Solaris.
+
+Sun Oct 23 16:33:35 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/tk/MANUAL_tcltklib.eng: fix typo. reported by Mimura-san.
+ [ruby-dev:44683] [Bug #5471]
+
+Sun Oct 23 08:01:29 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_fd_set_cloexec): set close-on-exec flag only if F_GETFD is
+ defined. reported by Luis Lavena. [ruby-core:40281] [Bug #5470]
+
+Sat Oct 22 19:48:50 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/openssl/test_ssl.rb (test_multibyte_read_write): start server
+ for each length to avoid race condition.
+
+Sat Oct 22 18:49:24 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_fd_set_cloexec): declared.
+
+ * io.c (rb_fd_set_cloexec): new function.
+ (ruby_dup): call rb_fd_set_cloexec to set close-on-exec flag.
+ (rb_sysopen_internal): ditto.
+ (rb_pipe): ditto.
+ (io_reopen): ditto.
+ (io_cntl): ditto.
+
+ * process.c (rb_f_exec): change the default :close_others option to
+ true.
+ (rb_f_system): ditto.
+ (move_fds_to_avoid_crash): call rb_fd_set_cloexec to set
+ close-on-exec flag.
+ (ruby_setsid): ditto.
+ (rb_daemon): ditto.
+
+ * thread_pthread.c (rb_thread_create_timer_thread): call
+ rb_fd_set_cloexec to set close-on-exec flag.
+
+ * ruby.c (load_file_internal): ditto.
+
+ * file.c (rb_file_s_truncate): ditto.
+ (file_load_ok): ditto.
+
+ * random.c (fill_random_seed): ditto.
+
+ * ext/pty/pty.c (chfunc): ditto.
+ (get_device_once): ditto.
+
+ * ext/openssl/ossl_bio.c (ossl_obj2bio): ditto.
+
+ * ext/socket/init.c (rsock_socket): ditto.
+ (rsock_s_accept_nonblock): ditto.
+ (rsock_s_accept): ditto.
+
+ * ext/socket/socket.c (rsock_sock_s_socketpair): ditto.
+
+ * ext/socket/ancdata.c (discard_cmsg): ditto.
+ (make_io_for_unix_rights): ditto.
+
+ * ext/socket/unixsocket.c (unix_recv_io): ditto.
+
+ * ext/io/console/console.c (console_dev): ditto.
+
+ [ruby-core:38140] [Feature #5041]
+
+Sat Oct 22 17:46:27 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: fix a exception name in previous patch.
+
+Sat Oct 22 17:43:33 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/resolv.rb: make timeout configurable for DNS query.
+ patch by Eric Wong. [ruby-core:38533] [Feature #5100]
+
+Sat Oct 22 02:07:48 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * numeric.c (rb_infinity, rb_nan): use union to prevent bus error
+ caused by misalignment. [Bug #5469] [ruby-dev:44657]
+
+ * include/ruby/missing.h (INFINITY, NAN): ditto
+
+Fri Oct 21 22:02:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (initial_params): pack in a struct.
+
+ * gc.c (rb_gc_set_params): set parameters always.
+ [ruby-dev:44648] [Bug #5467]
+
+Fri Oct 21 12:10:20 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * atomic.h: change Solaris checking macro because atomic_ops can work
+ not only with Sun Studio but also with Fujitsu C Compiler.
+
+Fri Oct 21 02:11:00 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ns_spki.c: Complete documentation.
+ * test/openssl/test_ns_spki.rb: Integrate SPKI#to_text.
+
+Thu Oct 20 22:47:28 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (socklist_insert, socklist_lookup, socklist_delete):
+ new functions to wrap of st_insert(), st_lookup() and st_delete() to
+ socklist.
+ allocating socklist is deferred until it is really needed.
+
+ * win32/win32.c (exit_handler): delete socklist only if it is
+ initialized.
+
+ * win32/win32.c (rb_w32_sysinit, StartSockets): refactoring: move
+ initialization of select_mutex to StartSockets().
+
+ * win32/win32.c (exit_handler): refactoring: delete select_mutex only
+ if winsock is used.
+
+Thu Oct 20 22:38:53 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkcs5.c: add note on timing attacks and general
+ documentation.
+
+Thu Oct 20 21:19:15 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * vm_eval.c (check_funcall): set array elements one-by-one to fix
+ compile error with Fujitsu C Compiler 5.6 on Solaris 10 on Sparc.
+ [Bug #5464] [ruby-dev:44632]
+
+Thu Oct 20 13:09:35 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/defines.h (flush_register_windows): use software
+ trap on Debian Sparc 32-bit userspace. [Bug #5244]
+
+Thu Oct 20 12:28:22 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkcs5.rb: add RFC 6070 tests for PBKDF2 with
+ HMAC-SHA1
+
+Thu Oct 20 11:42:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * util.c (mmprepare): fix for fragmental size.
+
+ * util.c (mmswap_, mmrot3_): portability improvement.
+
+Thu Oct 20 05:58:02 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_ns_spki.c (Init_ossl_ns_spki): Stub documentation
+ for Netscape SPKI.
+
+Thu Oct 20 05:13:39 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.6.2 (r6712)
+ * test/minitest/*: ditto
+
+Thu Oct 20 06:55:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * lib/openssl/buffering.rb: Force multi-byte strings to be treated as
+ binary data.
+ * test/openssl/test_ssl.rb: Add test for it.
+
+ Thanks to Niklas Baumstark for reporting the issue!
+
+ [Ruby 1.9 - Bug #5233] [ruby-core:39120]
+
+Wed Oct 19 17:06:54 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * version.h (RUBY_VERSION): finally declare start of 2.0 work!
+
+Wed Oct 19 11:48:44 2011 Eric Hodel <drbrain@segment7.net>
+
+ * error.c (Init_Exception): Document $! and $@. Provide
+ recommendations for creating exceptions for a library.
+
+Wed Oct 19 11:25:46 2011 Eric Hodel <drbrain@segment7.net>
+
+ * error.c (Init_Exception): Add hierarchy of Exception subclasses.
+ Based on patch by Sylvain Daubert. [Ruby 1.9 - Bug #5438]
+
+Wed Oct 19 11:04:47 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c: Reformat block args to a single standard, { |args| ... }.
+ Patch by b t. [Ruby 1.9 - Bug #5393]
+
+Wed Oct 19 12:11:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Remove set, but unused variables.
+ ext/openssl/ossl_pkey.c: ditto
+
+ * ext/openssl/ossl_pkey_dh.c: Make functions passed to
+ rb_thread_blocking_region return VALUE instead of void.
+ ext/openssl/ossl_pkey_dsa.c: ditto
+ ext/openssl/ossl_pkey_rsa.c: ditto
+
+Tue Oct 18 23:28:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (identhash): share with type_numhash.
+
+ * st.c (st_hashtype_num): rename from type_numhash.
+
+Tue Oct 18 23:07:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_core.h (ruby_current_thread): probeprofiler has been removed
+ long ago.
+
+Tue Oct 18 23:05:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/ripper/eventids2.c (ripper_init_eventids2): separate
+ initializations of IDs and objects.
+
+ * ext/ripper/tools/generate.rb (generate_eventids1): ditto.
+
+ * parse.y (Init_ripper, InitVM_ripper): fix inversed roles.
+
+Sun Oct 16 19:46:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/bigdecimal/bigdecimal.gemspec (files): fixed typo, and
+ removed nonexistent file.
+
+ * ext/bigdecimal/bigdecimal.gemspec (homepage): added.
+
+ * ext/io/console/io-console.gemspec (homepage): ditto.
+
+Fri Oct 14 12:13:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/pty/pty.c (pty_check): should return nil until the child
+ terminates or stops. [ruby-dev:44600] [Bug #2642]
+
+Fri Oct 14 11:19:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_ary_rotate): export.
+
+Fri Oct 14 05:58:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * atomic.h (ATOMIC_INC, ATOMIC_DEC): return old values.
+ [ruby-dev:44596] [Bug #5439]
+
+ * signal.c (ruby_atomic_exchange): no needs to define on the
+ platforms where atomic.h is available.
+
+Thu Oct 13 19:29:40 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * atomic.h (ATOMIC_*): use atomic_ops(3C) when SunStudio on Solaris.
+ [ruby-dev:44596] [Bug #5439]
+
+Thu Oct 13 18:13:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * atomic.h(ATOMIC_SET): add cast to void to prevent misuse.
+ [ruby-dev:44596] [Bug #5439]
+
+Thu Oct 13 18:04:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer):
+ should use ATOMIC_EXCHANGE() to check the previous value.
+ [ruby-dev:44596] [Bug #5439]
+
+Wed Oct 12 23:39:58 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * test/openssl/test_ssl.rb: Move duplicated tests for SSL::Session to
+ test_ssl_session.rb
+
+Tue Oct 11 08:49:40 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_initialize): Improve explanation of Array.new
+ parameters. Patch by Alvaro Pereyra Rabanal. [Ruby 1.9 - Bug #5425]
+ * array.c (rb_ary_s_try_convert): Fix typo (try => tries)
+ * array.c (rb_ary_rindex): Add spacing for block.
+ * array.c (rb_ary_uniq_bang): Describe block
+ * array.c (rb_ary_uniq): ditto
+
+Tue Oct 11 07:55:38 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c: Add a description to Array, minor cleanups. Patch by
+ Andrea Singh. [Ruby 1.9 - Bug #5412]
+
+Tue Oct 11 06:09:52 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/pp.rb: Move PP documentation to top of class PP. Patch by
+ Sylvain Daubert. [Ruby 1.9 - Bug #5430]
+
+Tue Oct 11 06:06:29 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/coverage/coverage.c (Init_coverage): Change list format and
+ describe Coverage.result output. Patch by Sylvain Daubert.
+ [Ruby 1.9 - Bug #5428]
+
+Tue Oct 11 05:53:23 2011 Eric Hodel <drbrain@segment7.net>
+
+ * object.c (Init_Object): Add reference to BasicObject, brief
+ explanation of constant lookup. Based on patch by Alvaro Pereyra
+ Rabanal.
+ [Ruby 1.9 - Bug #5426]
+
+Sun Oct 9 11:06:52 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/psych/test_yamldbm.rb: don't run test if the system
+ don't support yaml/dbm.
+
+ * test/syck/test_yamldbm.rb: ditto.
+
+Sat Oct 8 08:54:56 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c (group_by): Improve group_by description. Patch by b t.
+ [#5411]
+
+Sat Oct 8 03:17:51 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/shell.rb: Document some methods of Shell. Patch by Carol
+ Nichols. [Ruby 1.9 - Bug #5417]
+
+Fri Oct 7 17:54:28 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/test/unit/assertions.rb (assert_send, assert_not_send):
+ parenthesize non-empty arguments.
+
+Fri Oct 7 06:35:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c: Use + for arguments described in documentation to allow
+ rdoc -C2 to work better. Remove <code> from method references to
+ allow cross-references in HTML documentation.
+
+Thu Oct 6 18:46:23 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * vm_eval.c (make_no_method_exception): fix typo.
+
+ * vm_insnhelper.c, vm_insnhelper.h: ditto.
+
+Thu Oct 6 16:29:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (make_no_method_execption): extract from
+ raise_method_missing().
+
+ * vm_eval.c (send_internal): remove inadvertent symbol creation
+ from public_send. based on a patch by Jeremy Evans <code AT
+ jeremyevans.net> in [ruby-core:38576]. [Feature #5112]
+
+ * vm_insnhelper.c (vm_call_method): remove inadvertent symbol
+ creation from send and __send__, too.
+
+Thu Oct 6 14:59:11 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/time.rb: Clean up Time documentation. Patch by Jake Goulding.
+ [Ruby 1.9 - Bug #5416]
+
+Thu Oct 6 10:00:54 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c (group_by): Improve documentation based on patch by b t.
+
+Thu Oct 6 09:56:30 2011 Eric Hodel <drbrain@segment7.net>
+
+ * enum.c: Clean up wording in Enumerable documentation. Patch by b t.
+ [Ruby 1.9 - Bug #5411]
+
+Thu Oct 6 09:17:18 2011 Eric Hodel <drbrain@segment7.net>
+
+ * time.c (Init_Time): Remove editorial comments from Time
+ documentation, fix link.
+
+Thu Oct 6 09:14:20 2011 Eric Hodel <drbrain@segment7.net>
+
+ * time.c (Init_Time): Improve Time documentation. Patch by Shane
+ Emmons. [Ruby 1.9 - Bug #5404]
+ * lib/time.rb: Improve time.rb documentation including Time.strptime.
+ Patch by Shane Emmons. [Ruby 1.9 - Bug #5402]
+
+Thu Oct 6 08:54:05 2011 Eric Hodel <drbrain@segment7.net>
+
+ * random.c: Improve documentation of Random. Patch by Gregory
+ Parkhurst. [Ruby 1.9 - Bug #5410]
+
+Thu Oct 6 01:44:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * cont.c (cont_mark): mark original Thread object from saved_thread.
+ [ruby-dev:44571] [Bug #5386]
+
+Wed Oct 5 16:33:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_cfunc): remove useless hack.
+
+Wed Oct 5 05:56:39 2011 Eric Hodel <drbrain@segment7.net>
+
+ * hash.c (Init_Hash): Improve Hash documentation. Patch by Alvaro
+ Pereyra Rabanal. [Ruby 1.9 - Bug #5405]
+
+Wed Oct 5 05:47:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * random.c (Init_Random): Add a top-level comment for Random. Patch
+ by Brett Bim. [Ruby 1.9 - Bug #5403]
+
+Wed Oct 5 02:50:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/syntax_error.rb: Add file, line, offset, and
+ message attributes during parse failure.
+ * ext/psych/parser.c: Update parser to raise exception with correct
+ values.
+ * test/psych/test_exception.rb: corresponding tests.
+
+Wed Oct 5 01:52:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c (parse): Use context_mark for indicating error
+ line and column.
+
+Wed Oct 5 01:22:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: use normal begin / rescue
+ since postfix rescue cannot receive the exception class. Thanks
+ nagachika!
+
+Tue Oct 4 21:10:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * class.c (class_alloc): allocate extra memory after containing
+ object setup to get rid of rare-but-potential memory leak.
+
+ * gc.c (gc_mark_children): skip marking extended members if ptr is
+ NULL.
+
+Tue Oct 4 16:17:50 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/time.rb (Time.strptime): use Time.at if d[:seconds] is set.
+ Reported by Christopher Eberz. [ruby-core:39903] Bug #5399
+
+Tue Oct 4 11:44:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (rb_gc_set_params): ruby_verbose can be Qnil, so use RTEST.
+
+Tue Oct 4 08:33:41 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/etc/etc.c: Document Etc, Etc.sysconfdir, Etc.systmpdir. Patch
+ by mathew murphy. [Ruby 1.9 - Bug #5396]
+
+Tue Oct 4 08:21:51 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/shellwords.rb: Update toplevel comment with an example. Patch
+ by Samnang Chhun. [Ruby 1.9 - Bug #5388]
+
+Tue Oct 4 08:15:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * proc.c (proc_call): Update documentation to match argument handling
+ of proc/Proc.new/lambda/->()
+
+Tue Oct 4 07:59:16 2011 Eric Hodel <drbrain@segment7.net>
+
+ * proc.c (proc_call): Fix documentation of Proc#call vs Proc#===.
+ [Ruby 1.9 - Bug #5349]
+
+Tue Oct 4 07:43:18 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_initialize): Make Array.new description match
+ call-seq. Patch by Henry Maddocks. [Ruby 1.9 - Bug #5344]
+
+Tue Oct 4 07:35:23 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_initialize): Add output for examples. Patch by
+ Jonathan Mukai. [Ruby 1.9 - Bug #5216]
+
+Tue Oct 4 07:30:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * array.c (rb_ary_s_create): Add example results for Array::[]. Patch
+ by Jonathan Mukai. [Ruby 1.9 - Bug #5215]
+
+Tue Oct 4 07:15:17 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.11. Move Deprecate into the
+ Gem namespace.
+
+Tue Oct 4 06:43:47 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: update psych version.
+ * ext/psych/psych.gemspec: generate new gemspec for new version.
+
+Tue Oct 4 06:29:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: calling `yaml` rather than `to_yaml`.
+ * ext/psych/lib/psych/nodes/node.rb: Rename `to_yaml` to just `yaml`
+ in order to avoid YAML::ENGINE switching from replacing this method.
+ * test/psych/helper.rb: fix tests for method name change.
+ * test/psych/test_document.rb: ditto
+ * test/psych/visitors/test_emitter.rb: ditto
+
+Tue Oct 4 06:20:19 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Match values against the
+ floating point spec defined in YAML to avoid erroneous parses.
+ * test/psych/test_numeric.rb: corresponding test.
+
+Tue Oct 4 05:59:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: ToRuby visitor can be
+ constructed with a ScalarScanner.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ScalarScanner can be
+ passed to the YAMLTree visitor.
+
+Tue Oct 4 05:47:23 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Define Regexp::NOENCODING
+ for 1.9.2 backwards compatibility.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Fix Date string
+ generation for 1.9.2 backwards compatibility.
+
+Mon Oct 3 23:56:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (rb_gc_set_params): output GC parameter change messages only
+ if -w/-v options are specified. these messages are output to stderr,
+ not to stdout. [ruby-core:39795] [Bug #5380]
+
+ * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
+
+Sun Oct 2 20:05:32 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_thread_mark), cont.c (cont_mark): revert r33369 and r33371
+ that may cause SEGV in certain environments.
+
+Sun Oct 2 12:14:06 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/psych/test_yamldbm.rb: add test case.
+ * test/syck/test_yamldbm.rb: ditto.
+
+Sun Oct 2 11:28:09 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * lib/yaml/store.rb: make initialize method signature match the
+ superclass signature.
+
+Sun Oct 2 10:44:01 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * io.c: fix documentation of ARGF.lineno=.
+
+Sat Oct 1 20:03:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (have_framework): try as Objective-C.
+ https://twitter.com/nagachika/status/120294447660539904
+
+Sun Oct 2 08:43:25 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_thread_mark), cont.c (cont_mark): self pointer should not
+ be marked by itself. Patch by Koichi Sasada.
+ [ruby-dev:44567] [Bug #5386]
+
+Sun Oct 2 00:42:14 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_thread_mark): rb_thread_t needs self to be marked.
+ [ruby-dev:44566] [Bug #5386]
+
+Sat Oct 1 09:48:53 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * gc.c (add_heap_slots, init_heap): reset heaps_inc zero when
+ heap slots are expanded by environment variable RUBY_HEAP_MIN_SLOTS.
+ [ruby-core:39777] [Bug #5380]
+
+ * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
+
+ * test/ruby/envutil.rb (assert_normal_exit): add :child_env option to
+ enable pass environment variables to child process.
+
+Thu Sep 29 13:17:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (ary_join_1): should not copy the encoding of non-string
+ element after string element. [ruby-core:39776] [Bug #5379]
+
+Thu Sep 29 11:53:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (slot_sweep, rb_gc_finalize_deferred)
+ (rb_objspace_call_finalizer, rb_gc): run finalizers
+ sequentially. [ruby-dev:44562]
+
+Thu Sep 29 20:37:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/gdbm/gdbm.c (rb_gdbm_fatal): adjust argument type.
+
+Thu Sep 29 20:10:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (is_id_value, is_live_object): extract from id2ref().
+
+ * gc.c (run_finalizer): use object instead of object id.
+
+Thu Sep 29 20:07:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * use RB_TYPE_P which is optimized for constant types, instead of
+ comparison with TYPE.
+
+Wed Sep 28 09:20:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (pthread_np.h): needs pthread.h to be included
+ previously on OpenBSD. a patch by George Koehler <xkernigh AT
+ netscape.net> at [ruby-core:39752]. [Bug #5376]
+
+Wed Sep 28 04:41:35 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/psych/test_yamlstore.rb: use tmpdir for tmpfile.
+ * test/syck/test_yamlstore.rb: ditto.
+
+Wed Sep 28 04:10:46 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/bigdecimal/README: update report to.
+
+Tue Sep 28 04:05:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal_en.html: removed because this file isn't
+ maintained now.
+
+ * ext/bigdecimal/bigdecimal_ja.html: ditto.
+
+Tue Sep 27 09:55:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c: make native_fd_select().
+ * thread.c (do_select): remove #ifdef _WIN32. Instead, use
+ native_fd_select() always.
+
+Tue Sep 27 09:44:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (do_select): remove cygwin specific hack. It's layer
+ violation and too large hack.
+ * thread.c (cmp_tv, subtract_tv): removed.
+
+Tue Sep 27 03:50:19 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/rexml/test_sax.rb: add require 'rexml/document'.
+
+Tue Sep 27 03:32:27 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/psych/test_yamldbm.rb: fix #setup and #teardown.
+ [Bug #5370] [ruby-core:39730]
+ * test/syck/test_yamldbm.rb: ditto.
+
+Mon Sep 26 11:27:38 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httputils.rb: Add MIME Type definition of .js and .svg.
+ patched by Hal Brodigan. [ruby-core:39704] [Bug #5365]
+
+Mon Sep 26 09:20:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: remove DJGPP support. It's not longer supported
+ since ruby 1.9.0.
+
+Mon Sep 26 09:07:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * include/ruby/defines.h: remove NextStep, OpenStep, Rhapsody
+ support. Last activity of their OSes are 7 years ago.
+ * configure.in: ditto.
+ * dir.c: ditto.
+ * ext/tk/extconf.rb: ditto.
+
+Mon Sep 26 09:02:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: remove a code for human68k. it's no longer
+ supported since r19677.
+
+Sun Sep 25 23:43:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: fix int_ossl_asn1_decode0_cons when being
+ fed arbitrary string values.
+ Clearly distinguish between the cases "universal, infinite and
+ not a SEQUENCE or SET" and "universal SEQUENCE or SET, possibly
+ infinite". Raise error for universal tags that are not infinite.
+ * test/openssl/test_asn1.rb: add a test for this.
+
+ Thanks to Hiroshi Yoshida for reporting this bug.
+ [Bug #5363] [ruby-dev:44542]
+
+Sun Sep 25 20:57:18 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/syck/test/yamldbm.rb: add test for Syck::DBM.
+ * test/psych/test_yamldbm.rb: add test for Psych::DBM.
+ * test/psych/test_yamlstore.rb: add test for Psych::PStore.
+
+Sun Sep 25 20:54:10 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/yaml/dbm/dbm.rb: fix #update, add #key for using instead #index.
+ [Bug #5305][ruby-dev:44485]
+
+Sun Sep 25 16:54:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (require_enc): reject only loading from untrusted
+ load paths. [ruby-dev:44541] [Bug #5279]
+
+ * transcode.c (load_transcoder_entry): ditto.
+
+Sun Sep 25 16:45:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in: ignore all warnings from an arbitrary
+ header in /usr/local/include.
+
+Sun Sep 25 03:43:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enum.c (slice_before_i): use rb_attr_get to suppress wrong warning
+ for internal instance variable slicebefore_initial_state.
+
+Fri Sep 23 14:20:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_asn1.c: remove unused variable.
+
+Fri Sep 23 13:46:59 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ssl_session.rb: execute test_session_exts_read
+ only for OpenSSL versions >= 0.9.8k. Thanks, Eric Wong, for
+ reporting this.
+ [Bug #4961] [ruby-core:37726]
+
+Fri Sep 23 11:59:08 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ssl_session.rb: ensure server calls callbacks in
+ test_ctx_server_session_cb. Thanks to Eric Wong for the patch.
+ [Bug #5336] [ruby-core:39619]
+
+Thu Sep 22 02:53:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_cfunc): suppress a warning. note that
+ `volatile type *var' doesn't make var itself volatile.
+
+Thu Sep 22 01:52:48 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * thread_pthread.c (ubf_select): activate timer thread when interrupt
+ blocking thread.
+ A patch created by Koichi Sasada. [ruby-core:39634] [Bug #5343]
+ to cover race condition, timer thread periodically send SIGVTARLM to
+ threads in signal thread list. so you should activate timer thread
+ when interrupt a thread.
+
+Wed Sep 21 16:55:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/io/wait/test_io_wait.rb (TestIOWait#setup): of course, the
+ behavior of mingw is just same with mswin.
+
+Tue Sep 20 18:08:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_get_cvar_base): reduce duplicated checks and
+ move a warning outside the loop.
+
+Mon Sep 19 18:55:51 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * lib/fileutils.rb (module FileUtils): improve performance of
+ FileUtils.compare_stream. a patch by Masaki Matsushita.
+ [Feature #5337] [ruby-core:39622]
+
+Mon Sep 19 18:42:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb:
+ select() with timeout may return early in old Linux kernels
+ with 250 Hz tickrate and no dynticks, so skip everything older
+ than 2.6.32 (which has long term support).
+ And, Make the timing assertions consistently use assert_operator with
+ timing difference in error message
+ Patch by Eric Wong. [Bug #5335] [ruby-core:39618]
+
+Mon Sep 19 09:28:06 2011 Eric Hodel <drbrain@segment7.net>
+
+ * test/openssl/test_ssl.rb (class OpenSSL): Test
+ OpenSSL::SSL::SSLSocket#session and #session=.
+
+Mon Sep 19 07:54:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_obj_clone): singleton class should be attached
+ singleton object to. a patch by Satoshi Shiba <shiba AT rvm.jp>
+ at [ruby-dev:44460]. [Bug #5274]
+
+Sat Sep 17 23:34:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_data_type): inherit the core type in ripper so
+ that checks in core would work. [ruby-core:39591] [Bug #5331]
+
+Sat Sep 17 12:44:04 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * lib/find.rb (Find.find): add documentation that Find.find
+ without block returns an enumerator.
+
+Thu Sep 15 11:39:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (mark_entry, mark_key, mark_keyvalue): adjust callback
+ argument types.
+
+Thu Sep 15 01:44:10 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/tk/*: Change encoding from EUC-JP to UTF-8
+
+Wed Sep 14 11:43:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_fd_rcopy): added an argument guard.
+ Patch by NAKAMURA Usaku. [Bug #5306] [ruby-core:39435]
+
+Tue Sep 13 20:21:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/pstore.rb, test/test_pstore.rb: suppress warnings with -v.
+
+ * lib/pstore.rb (PStore): always open in binary mode even if
+ default encodings are set. [Bug #5311] [ruby-core:39503]
+
+Tue Sep 13 05:37:15 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (Init_IO): update BINARY comment. it should not change the
+ encoding of the result to ASCII-8BIT. [ruby-talk:387719]
+
+Mon Sep 12 19:55:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_select): fix to ignore an argument
+ modification of rb_thread_fd_select().
+ based on a patch by Eric Wong. [Bug #5306] [ruby-core:39435]
+ * thread.c (rb_fd_rcopy): New. for reverse fd copy.
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb
+ (test_old_select_false_positive): test for bug5306.
+
+ * ext/-test-/old_thread_select/old_thread_select.c (fdset2array):
+ New. convert fdsets to array.
+ * ext/-test-/old_thread_select/old_thread_select.c (old_thread_select):
+ return 'read', 'write', 'except' argument of rb_thread_select()
+ to ruby script.
+
+Mon Sep 12 13:38:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja (2.2.2), parse.y (rb_check_id): add
+ documents for rb_check_id().
+
+Mon Sep 12 12:53:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rake/file_list.rb (Rake::FileList#egrep): there is no need to
+ open files in binary mode.
+ see more details in https://github.com/jimweirich/rake/issues/74
+
+Mon Sep 12 12:42:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_exception.rb (TestException#test_exit_success_p):
+ assert also the cases when exiting with true and false.
+
+ * lib/test/unit/assertions.rb (assert_send): make arguments in
+ the default message clearer.
+
+Sun Sep 11 05:23:14 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/matrix.rb: Deal with subclasses of Matrix [redmine #5307]
+
+Sat Sep 10 13:38:20 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * dir.c (dir_s_aref):
+ * dir.c (dir_entries): Two small documentation fixes.
+ A patch from Aaron Lerch. [Bug #5302] [ruby-core:39404]
+
+Sat Sep 10 08:30:03 2011 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c (GC_PROFILE_MORE_DETAIL, CALC_EXACT_MALLOC_SIZE):
+ define macros only if they are not defined.
+ fixes: [Ruby 1.9 - Feature #5291]
+
+Sat Sep 10 08:25:47 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (bv_decls): parse.y relies on $$ = $1 before action
+ routines. a patch from Michael Edgar. [Bug #5303]
+ [ruby-core:39429]
+
+Sat Sep 10 01:37:55 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * sample/drb/dhasenc.rb: coding cookie of Emacs is coding,
+ not encoding.
+
+ * sample/mine.rb: ditto.
+
+Fri Sep 9 21:56:40 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_sqrt): Fix comment.
+ BigDecimal#sqrt requires argument. Reported by Makoto Kishimoto.
+ Thanks for your contribution. [Bug #5267] [ruby-dev:44452]
+
+Fri Sep 9 11:00:55 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/rubygems/test_gem_commands_help_command.rb: Add one
+ `require` because if run test-all with test/unit parallel
+ running, sometimes this test fails by some constants not found.
+ The error reason is some worker doesn't require the file needed by
+ this test. This issue is related to [ruby-core:36168].
+
+Fri Sep 9 10:22:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_select): fix a typo to initialize efds
+ properly. [Bug #5299] [ruby-core:39380]
+
+Fri Sep 9 02:02:09 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * template/yarvarch.ja:
+ Change encoding from Shift_JIS to UTF-8
+
+Thu Sep 9 01:14:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * sample/drb/README.rd.ja:
+ * sample/drb/dhasenc.rb:
+ * sample/mine.rb:
+ Change encoding from EUC-JP to UTF-8
+
+Thu Sep 8 21:03:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: import nkf 2.1.2 (be9c280)
+ Bump version number/release date only.
+
+Thu Sep 8 12:43:18 2011 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (Init_GC): defined GC::Profiler.raw_data. based on the
+ patch by Eric Hodel. [ruby-core:37857] [Bug #4991]
+
+Thu Sep 8 09:02:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (id2ref): objects which are unmarked but not in sweep_slots
+ are not dead.
+
+Thu Sep 8 07:44:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_declare_transcoder, load_transcoder_entry): no
+ longer need to limit the length of transcoder library name.
+
+Thu Sep 8 07:36:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/syck/lib/syck/types.rb: use toplevel Syck.
+ for the case someone define Syck::Syck (or YAML::Syck).
+
+Thu Sep 8 07:33:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (id2ref): unmarked object is already dead while lazy
+ sweeping, and to it cannot come back since other objects
+ referred from it might have been freed already.
+
+Wed Sep 8 03:48:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/readline/README.ja:
+ Change encoding from EUC-JP to UTF-8
+
+Wed Sep 8 02:59:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * test/rexml/test_encoding.rb:
+ Add require 'require 'rexml/document'
+
+Wed Sep 8 02:53:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * ext/nkf/nkf-utf8/nkf.c:
+ Change encoding from ISO-2022 to UTF-8
+
+Wed Sep 7 23:41:24 2011 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rexml/parsers/baseparser.rb, test/rexml/test_comment.rb:
+ allow a single hyphen in comment. [Bug #5278] [ruby-core:39289]
+ Reported by Thomas Fritzsche. Thanks!!!
+
+Wed Sep 7 17:27:18 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/yaml.rb: explicitly specify ::Object to avoid the collision with
+ Syck::Object.
+
+Tue Sep 6 21:06:49 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb (_run_suites): Now reports are written the
+ following order: Skip, Failure, Error. [Feature #5282]
+
+ * test_sorting.rb: test for above.
+
+ * test4test_sorting.rb: Ditto.
+
+ * lib/test/unit.rb (run): Put RUBY_DESCRIPTION before quitting.
+ [Feature #5282]
+
+Tue Sep 6 21:13:47 2011 Masaya Tarui <tarui@ruby-lang.org>
+
+ * win32/Makefile.sub (INSNS): change command line option -Ks to -Ku
+ for generate *.inc. because insns.def encoding has been changed SJIS
+ to UTF-8. if $BASERUBY is 1.9, -Ks cause an error. [Feature #5128]
+ (same as r33194)
+
+Tue Sep 6 15:55:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (load_transcoder_entry): concatenate paths directly.
+
+ * encoding.c (load_encoding): predefined encoding names are safe.
+ [ruby-dev:44469] [Bug #5279]
+
+ * transcode.c (load_transcoder_entry): ditto.
+
+Tue Sep 6 12:07:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c: enabled econv newline option.
+
+Tue Sep 6 06:44:57 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (dbl2ival): Fix Float#divmod and #round for 32 bit
+ platform. part 1 of [bug #5276]
+
+Tue Sep 6 06:44:25 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (flo_round): Fix criteria for 32 bits platform
+ part 2 of [bug #5276]
+
+Tue Sep 6 05:37:11 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * test/rinda/test_rinda.rb (test_core_03_notify): Fixed test failures
+ [ruby-dev:44430] [Ruby 1.9 - Bug #372]
+
+Mon Sep 5 20:59:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * insns.def: change encoding pragma for emacs (shift_jis to utf-8).
+
+Mon Sep 5 19:32:15 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * Makefile.in (INSNS): change command line option -Ks to -Ku for
+ generate *.inc. because insns.def encoding has been changed SJIS to
+ UTF-8. if $BASERUBY is 1.9, -Ks cause an error. [Feature #5128]
+
+Mon Sep 5 18:10:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * transcode.c (rb_econv_binmode): newline decorators are
+ exclusive.
+
+Mon Sep 5 15:03:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rubygems/test_gem_security.rb
+ (test_class_build_self_signed_cert): reset opt[:trust_dir] to apply
+ temporary Gem.user_home.
+
+Mon Sep 5 10:04:35 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * README.ja, README.EXT.ja: resolve conflicts. [ruby-dev:44459]
+
+Mon Sep 5 05:13:22 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (flo_round): Make Float#round round big values [bug
+ #5272]
+
+Mon Sep 5 04:28:25 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (int_round): Integer#round always returns an Integer [Bug
+ #5271]
+
+Sun Sep 4 22:28:50 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (default_port, default_imap_port,
+ default_tls_port, default_ssl_port, default_imaps_port):
+ added methods for consistency with Net::POP.
+ based on the patch by art lussos. [ruby-core:38997] [Bug #5198]
+
+Sun Sep 4 21:19:19 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+
+ * Change encoding from EUC-JP to UTF-8. [Feature #5128]
+
+Sun Sep 4 00:47:39 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * test/ruby/test_fiber.rb (TestFiber#test_no_valid_cfp):
+ add a test. Unlike TestThread#test_no_valid_cfp,
+ this test succeeds even if win32ole is required (see r33153).
+
+Sun Sep 4 00:11:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * variable.c (rb_const_set): show the previous definition
+ location. [EXPERIMENTAL]
+
+Sat Sep 3 23:56:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (sizeof_struct_dirent_too_small): check if struct
+ dirent.d_name is too small.
+
+ * configure.in (RUBY_MINGW32): take tool prefix from CC.
+
+Sat Sep 3 23:52:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (argf_next_argv): open in default text mode.
+ [ruby-core:39234] [Bug #5268]
+
+Sat Sep 3 18:40:57 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * lib/thread.rb (SizedQueue#max=): raise ArgumentError if max is not
+ positive number. patch by Masaki Matsushita.
+ [ruby-dev:44449] [Bug #5259]
+
+ * test/thread/test_queue.rb (test_sized_queue_initialize,
+ test_sized_queue_assign_max): add tests for it.
+
+Fri Sep 2 21:11:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (validate_enc_binmode, prep_stdio): default to text mode on
+ dosish platforms. [ruby-core:38822] [Bug #5164]
+
+ * transcode.c (rb_econv_prepare_options): keep default ecflags
+ unchanged if no options.
+
+Fri Sep 2 14:36:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_search_const_defined_class): search
+ ancestors only when global scope. [ruby-core:39227] [Bug #5264]
+
+Fri Sep 2 09:58:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_tokadd_string, parser_yylex): ignore a backslash
+ which prefixes an non-ascii character, which has no escape
+ syntax. [ruby-core:39222] [Ruby 1.9 - Bug #5262]
+
+Fri Sep 2 04:05:25 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: emit strings tagged as
+ ascii-8bit as binary in YAML.
+ * test/psych/test_string.rb: corresponding test.
+
+Fri Sep 2 01:07:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * numeric.c (flo_round): substitute machine dependent magic number.
+
+Thu Sep 1 17:31:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * insns.def (defineclass), vm_insnhelper.c (vm_get_cvar_base): see
+ also inherited constants for classes without superclass and
+ modules. [ruby-core:37698] [Bug #3423]
+
+Thu Sep 1 16:18:44 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * Release GVL while OpenSSL's public key generation.
+
+ t = Thread.new { print "."; sleep 0.1 }
+ key = OpenSSL::PKey::RSA.new(2048)
+ #=> Thread t works in parallel with public key generation if
+ OS/machine allows it.
+
+ This works with OpenSSL >= 0.9.8. From this version, it has new
+ public key generation function which allows us to interrupt the
+ execution while pkey generation iterations.
+
+ * ext/openssl/extconf.rb: Check existence of OpenSSL's new public key
+ generation function. (DH_generate_parameters_ex,
+ DSA_generate_parameters_ex and RSA_generate_key_ex.
+
+ * ext/openssl/ossl_pkey.{h,c} (ossl_generate_cb_2,
+ ossl_generate_cb_stop): Added new callback function for OpenSSL pkey
+ generation which handles Thread interruption by Ruby.
+ ossl_generate_cb_stop is the unblock function(ubf) for Ruby which
+ sets a stop flag. New pkey generation callback ossl_generate_cb_2
+ checks the stop flag at each iterations of OpenSSL and interrupts
+ pkey generation when the flag is set.
+
+ * ext/openssl/ossl_pkey_dsa.c (dsa_generate): Call
+ rb_thread_blocking_region with the above unblock function to release
+ GVL while pkey generation.
+
+ * ext/openssl/ossl_pkey_rsa.c (rsa_generate): ditto.
+
+ * ext/openssl/ossl_pkey_dh.c (dh_generate): ditto.
+
+ * test/openssl/test_pkey_{dh,dsa,rsa}.rb: Test it.
+
+Thu Sep 1 14:06:54 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_thread.rb (TestThread#test_no_valid_cfp): skip when
+ win32ole is required. in such case, win32ole redefines
+ Thread#initialize, and the block argument becomes to be not the top
+ of the thread, then this testcase always fails.
+
+Thu Sep 1 10:20:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{default_mode_on_dosish,
+ default_mode_on_unix,text_mode,binary_mode}): sorry for wrong test
+ committed in r33144. I'd misunderstood the spec of ruby's universal
+ newline.
+
+Thu Sep 1 09:27:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * variable.c (rb_autoloading_value): Fix the order of definitions.
+ It is used by autoload_defined_p.
+
+Wed Aug 31 17:28:23 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * variable.c (rb_autoload): There was a chance to run GC (from
+ rb_str_new2()) before finishing autoload_data_i construction. It
+ caused SEGV at rb_gc_mark() at autoload_i_mark.
+
+ * variable.c (rb_autoload_load): Move RB_GC_GUARD() to proper
+ position based on suggestion by CHIKANAGA Tomoyuki at
+ http://d.hatena.ne.jp/nagachika/20110826/ruby_trunk_changes_33070_33078
+
+ * variable.c (autoload_defined_p): Fix incompatible autoload behavior
+ that causes Rails crash. Class definition instruction defined in
+ 'defineclass' in insns.def always invokes rb_autoload_load for a
+ constant. It's invoked for every class definition regardless of
+ existence of autoload definition. rb_autoload_load checks if a
+ constant is defined as autoloaded, but new thread-safe autoload
+ returned different value if the constant is under autoloading.
+
+Wed Aug 31 17:20:56 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * Re-apply r33078, thread-safe autoload which is reverted at r33093.
+
+Wed Aug 31 16:28:04 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{default_mode_on_dosish,
+ default_mode_on_unix,text_mode,binary_mode}): tests for [Bug #5164].
+
+Wed Aug 31 15:54:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Merge json gem v1.5.4 (3dab4c5a6a97fac03dac).
+
+Wed Aug 31 13:09:41 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (flo_round): Avoid overflow by optimizing for trivial
+ cases [Bug #5227]
+
+Wed Aug 31 00:50:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (rb_w32_select_with_thread): and my typo. we all must
+ be more careful.
+
+Wed Aug 31 00:48:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * thread.c (rb_thread_select): critical typo in r33117.
+
+Wed Aug 31 00:30:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb
+ (TestOldThreadSelect#test_old_select_read_timeout): if the machine
+ is fast enough, the time used by code around IO.select may be smaller
+ than Time implement threshold.
+
+Wed Aug 31 00:04:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/-test-/old_thread_select/old_thread_select.c (old_thread_select):
+ typo.
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb
+ (TestOldThreadSelect#test_old_select_signal_safe): use SIGINT instead
+ of SIGUSR1 because the former is general and the latter is platform
+ dependent.
+
+Tue Aug 30 23:59:36 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/intern.h (rb_w32_fd_copy): implement
+ for rb_thread_select() in thread.c. the use of rb_fd_copy() is
+ introduced in r33117.
+ [Bug #5251] [ruby-core:39195]
+
+ * thread.c (rb_thread_select): must call rb_fd_init() before using
+ rb_fdset_t. see the implementations of rb_fd_init()s if you want to
+ know the reason.
+
+Tue Aug 30 22:34:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/dl/test_callback.rb (test_callback_with_string): prevents
+ temporary string from GC.
+
+Tue Aug 30 22:25:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * vm_insnhelper.c (vm_call_cfunc): revert r33112. RB_GC_GUARD macro
+ protect a VALUE from GC. It's not for general anti-optimizing
+ purpose.
+
+Tue Aug 30 11:06:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/json: Merge json gem 1.5.4+ (2149f4185c598fb97db1).
+ [Bug #5173] [ruby-core:38866]
+
+Tue Aug 30 09:57:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * lib/thread.rb (Queue#pop): fix a race against Thread.wakeup.
+ Patch by Masaki Matsushita <glass.saga at gmail dot com>
+ [Bug #5195] [ruby-dev:44400]
+
+Tue Aug 30 09:48:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * cont.c (fiber_entry): fix stack allocation failure on Debian
+ GNU/kFreeBSD.
+ Patch by Lucas Nussbaum <lucas at lucas-nussbaum dot net>.
+ [Bug #5241] [ruby-core:39147]
+
+Tue Aug 30 09:28:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_select): rewrite by using
+ rb_thread_fd_select(). old one is EINTR unsafe.
+ Patch by Eric Wong. [Bug #5229] [ruby-core:39102]
+
+ * test/-ext-/old_thread_select/test_old_thread_select.rb:
+ a testcase for rb_thread_select().
+ * ext/-test-/old_thread_select/old_thread_select.c: ditto.
+ * ext/-test-/old_thread_select/depend: ditto.
+ * ext/-test-/old_thread_select/extconf.rb: ditto.
+
+Tue Aug 30 09:08:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: fix a build failure on GNU Hurd.
+ Patch by Samuel Thibault <sthibault at debian dot org>. Thank you!
+ [Bug #5250] [ruby-core:39185]
+
+Sun Aug 29 23:22:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * test/ruby/test_numeric.rb (test_num2long): modify a test against the
+ change by r33108.
+
+Sun Aug 29 09:58:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * numeric.c (bit_coerce): A Fixnum and a Bignum are only permitted for
+ bitwise arithmetic with a Fixnum. #1792
+
+ * test/ruby/test_fixnum.rb: add tests for the above change.
+
+ * bignum.c (bit_coerce): A Fixnum and a Bignum are only permitted for
+ bitwise arithmetic with a Bignum. #1792
+
+ * test/ruby/test_bignum.rb: add tests for the above change.
+
+Sun Aug 28 15:38:17 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/date/date_parse.c (date_zone_to_diff): keep a temporary string
+ stored in variable while the contents buffer is being used.
+
+ * ext/date/date_parse.c (date_zone_to_diff): get rid of out of bounds
+ memory read. [ruby-dev:44409] [Bug #5213]
+
+Sun Aug 28 05:29:50 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.5.1 (r6596)
+ * test/minitest/*: ditto
+
+Sat Aug 27 20:46:05 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (rb_vm_rewrite_dfp_in_errinfo): change return type
+ to suppress a warning.
+
+ * vm_core.h: ditto.
+
+Sat Aug 27 19:04:06 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * internal.h (rb_strftime_timespec): moved from time.c and define only
+ if ruby/encoding.h is included.
+
+ * internal.h (rb_strftime): ditto.
+
+Sat Aug 27 18:53:51 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * proc.c (proc_new): force to rewrite errinfo when calling Proc.new in ensure.
+ [Bug #5234] [ruby-core:39125]
+ This code will be removed after changing throw mechanism (see r33064).
+
+ * vm.c (rb_vm_rewrite_dfp_in_errinfo): new function.
+
+ * vm.c (vm_make_env_each): changed accordingly.
+
+ * vm_core.h: ditto.
+
+ * bootstraptest/test_flow.rb: add tests for above.
+
+Sat Aug 27 18:44:06 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * internal.h (rb_strftime_timespec): move to time.c because it depends
+ encoding.h.
+
+Sat Aug 27 18:17:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * strftime.c (rb_strftime_with_timespec): get enc argument to specify
+ the encoding of the format. On Windows (at least Japanese Windows),
+ Time#strftime("%Z") includes non ASCII in locale encoding (CP932).
+ So convert locale to default internal. [ruby-core:39092] [Bug #5226]
+
+ * strftime.c (rb_strftime): ditto.
+
+ * strftime.c (rb_strftime_timespec): ditto.
+
+ * internal.h (rb_strftime_timespec): follow above.
+
+ * time.c (rb_strftime_alloc): ditto.
+
+ * time.c (strftimev): ditto.
+
+ * time.c (time_strftime): ditto.
+
+ * time.c (time_to_s): the resulted string of Time#to_s is always
+ ascii only, so this should be US-ASCII.
+
+ * time.c (time_asctime): ditto.
+
+Sat Aug 27 11:18:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * Revert r33078. It caused a Rails application NoMethodError.
+
+ /home/nahi/git/emptyApp/ruby/1.9.1/gems/rack-mount-0.6.14/lib/rack/mount/utils.rb:157: warning: toplevel constant ScanError referenced by Regin::Parser::ScanError
+ /home/nahi/git/emptyApp/ruby/1.9.1/gems/rack-mount-0.6.14/lib/rack/mount/vendor/regin/regin/parser.rb:17:in `parse_regexp': undefined method `scan_str' for #<Regin::Parser:0x00000002344548> (NoMethodError)
+
+Sat Aug 27 08:44:58 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 3.9.4. Typo and grammar fixes by Luke Gruber.
+ [Ruby 1.9 - Bug #5203]
+
+Sat Aug 27 07:53:34 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/open-uri.rb: Fix indentation of OpenURI::OpenRead#open. Use ++
+ instead of `' for method arguments in open-uri.rb
+
+Sat Aug 27 07:22:07 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/pathname/lib/pathname.rb: Fix typos and grammar mistakes. Patch
+ by Luke Gruber. [#5203]
+ * ext/pty/lib/expect.rb: ditto
+ * lib/mathn.rb: ditto
+ * lib/net/http.rb: ditto
+ * lib/open-uri.rb: ditto
+ * lib/ostruct.rb: ditto
+ * lib/tempfile.rb: ditto
+ * lib/thread.rb: ditto
+ * lib/weakref.rb: ditto
+ * sample/webrick/httpproxy.rb: ditto
+
+Sat Aug 27 04:03:18 2011 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c (iseq_data_to_ary): fix type of variable
+ (long -> unsigned long) to suppress a warning.
+
+Sat Aug 27 04:02:11 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_core.h: add a decl. of rb_autoloading_value().
+
+Fri Aug 26 19:12:08 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * variable.c: Make autoload thread-safe. See #921.
+
+ What's the problem?
+ autoload is thread unsafe. When we define a constant to be
+ autoloaded, we expect the constant construction is invariant. But
+ current autoload implementation allows other threads to access the
+ constant while the first thread is loading a file.
+
+ What's happening inside?
+ The current implementation uses Qundef as a marker of autoload in
+ Constant table. Once the first thread find Qundef as a value at
+ constant lookup, it starts loading a defined feature. Generally a
+ loaded file overrides the Qundef in Constant table by module/class
+ declaration at very beginning lines of the file, so other threads
+ can see the new Module/Class object before feature loading is
+ finished. It breaks invariant construction.
+
+ How to solve?
+ To ensure invariant constant construction, we need to override
+ Qundef with defined Object after the feature loading. For keeping
+ Qundef in Constant table, I expanded autoload_data struct in
+ Module to have a slot for keeping the defined object while feature
+ loading. And changed Module's constant lookup/update logic a
+ little so that the slot is only visible from the thread which
+ invokes feature loading. (== the first thread which accessed the
+ autoload constant)
+
+ Evaluation?
+ All test passes (bootstrap test, test-all and RubySpec) and added
+ 8 tests for threading behavior. Extra logics are executed only
+ when Qundef is found, so no perf drop should happen except
+ autoloading.
+
+ * variable.c (rb_autoload): Prepare new autoload_data struct.
+
+ * variable.c (rb_autoload_load): Load feature and update Constant
+ table after feature loading is finished.
+
+ * variable.c (rb_const_get_0): When the fetched constant is under
+ autoloading, it returns the object only for the thread which starts
+ autoloading.
+
+ * variable.c (rb_const_defined_0): Ditto.
+
+ * variable.c (rb_const_set): When the specified constant is under
+ autoloading, it sets the object only for the thread which starts
+ autoloading. Otherwise, simply overrides Qundef with constant
+ override warning.
+
+ * vm_insnhelper.c (vm_get_ev_const): Apply same change as
+ rb_const_get_0 in variable.c.
+
+ * test/ruby/test_autoload.rb: Added tests for threading behavior.
+
+Fri Aug 26 10:10:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.10. Fixes security issue in
+ creating ruby-format gemspecs. Fixes Gem.dir not being at the front
+ of Gem.path to fix uninstall and cleanup commands. Fixes gem
+ uninstall stopping on the first missing gem.
+
+Fri Aug 26 08:21:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * time.c (strftimev): Make Time#to_s default to US-ASCII encoding but
+ respect Encoding.default_internal. [ruby-core:39092]
+ * test/ruby/test_time.rb (class TestTime): Corresponding test.
+
+Thu Aug 25 09:43:16 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/lib/openssl/bn.rb: Hide copyright info from RDoc.
+ * ext/openssl/lib/openssl/digest.rb: ditto
+ * ext/openssl/lib/openssl/x509.rb: ditto
+ * ext/openssl/lib/openssl/cipher.rb: ditto
+
+Thu Aug 25 09:25:48 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/openssl/ossl_digest.c: Document OpenSSL::Digest::digest and add
+ an example to OpenSSL::Digest. Patch by Sylvain Daubert.
+ [Ruby 1.9 - Bug #5166]
+ * ext/openssl/lib/openssl/digest.rb (module OpenSSL): ditto
+
+Thu Aug 25 08:19:43 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (vm_make_env_each): work around to solve Bug #2729.
+ fixes: Bug #2729
+ a patch from Kazuki Tsujimoto <kazuki@callcc.net>
+ This problem is caused by changing dfp (dynamic env pointer)
+ from saved dfp. Saved dfp is pointed env in VM stack. However,
+ the dfp can be moved because VM copies env from VM stack to
+ the heap. At this copying, dfp was also changed. To solve this
+ problem, I'll try to change throw mechanism (not save target dfp,
+ but save target cfp).
+
+ * bootstraptest/test_flow.rb: add a test for above.
+
+Thu Aug 25 07:57:33 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * numeric.c (int_round): Fix Integer#round [ruby-core:39096]
+
+Thu Aug 25 07:00:00 2011 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.h, vm_insnhelper.c, vm.c, vm_method.c, insns.def:
+ Manage a redefinition of special methods for each classes.
+ A patch from Joel Gouly <joel.gouly@gmail.com>. Thanks!
+
+Thu Aug 25 06:51:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: Fixing psych version number.
+ * ext/psych/psych.gemspec: updating the gemspec.
+
+Thu Aug 25 06:11:35 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/nodes/node.rb: default `to_yaml` encoding to be
+ UTF-8.
+ * test/psych/test_encoding.rb: test yaml dump encoding.
+
+Thu Aug 25 01:24:33 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/fileutils/test_fileutils.rb (test_chmod_symbol_mode): Solaris
+ seems to behave the same as FreeBSD.
+
+Thu Aug 25 01:11:36 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/ruby/test_rubyoptions.rb (test_script_from_stdin): slave pty
+ should be manipulated because master pty may not be a tty on some
+ environment (e.g. Solaris). [Bug:#5222] [ruby-dev:44420]
+
+Wed Aug 24 15:13:56 2011 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.h, iseq.c, compile.c: Change the line number data structure
+ to solve an issue reported at [ruby-dev:44413] [Ruby 1.9 - Bug #5217].
+ Before this fix, each instruction has an information including
+ line number (iseq::iseq_insn_info_table). Instead of this data
+ structure, recording only line number changing places
+ (iseq::iseq_line_info_table).
+ The order of entries in iseq_line_info_table is ascending order of
+ iseq_line_info_table_entry::position. You can get a line number
+ by an iseq and a program counter with this data structure.
+ This fix reduces memory consumption of iseq (bytecode).
+ On my measurement, a rails application consumes 21.8MB for
+ iseq with this fix on the 32bit CPU. Without this fix, it
+ consumes 24.7MB for iseq [ruby-dev:44415].
+
+ * proc.c: ditto.
+
+ * vm_insnhelper.c: ditto.
+
+ * vm_method.c: ditto.
+
+ * vm.c (rb_vm_get_sourceline): change to use rb_iseq_line_no().
+
+Wed Aug 24 09:49:10 2011 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (defined): fix to checking class variable.
+ A patch by Magnus Holm <judofyr@gmail.com>. Thanks!
+
+ * test/ruby/test_variable.rb: add a test for above.
+
+Wed Aug 24 08:53:06 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 3.9.3. Fixes RDoc with `ruby -Ku`. Allows
+ HTTPS image paths to be turned into <img> tags. Prevents special
+ markup inside <tt> from being processed.
+
+Wed Aug 24 07:57:43 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.9. Fixes uninstalling multiple
+ gems and gem cleanup.
+
+Wed Aug 24 06:45:20 2011 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/minitest/*: Imported minitest 2.5.0 (r6557)
+ * test/minitest/*: ditto
+
+Wed Aug 24 00:38:22 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (update_coverage): skip coverage count up if the current
+ line is out of the way. rb_sourceline() is unreliable when source
+ code is big. [ruby-dev:44413]
+
+ * test/coverage/test_coverage.rb: add a test for above.
+
+Tue Aug 23 15:23:56 2011 Eric Hodel <drbrain@segment7.net>
+
+ * load.c (rb_f_require): Improve documentation of Kernel#require.
+ [Ruby 1.9 - Bug #5210]
+
+Tue Aug 23 11:27:26 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/zlib/zlib.c (gzfile_read_header): Ensure that each section of
+ gzip header is readable to avoid SEGV.
+
+ * test/zlib/test_zlib.rb (test_corrupted_header): Test it.
+
+Mon Aug 22 23:43:33 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * sprintf.c (rb_str_format): add RB_GC_GUARD to prevent temporary
+ strings from GC.
+
+Sun Aug 21 17:49:53 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * iseq.c (iseq_s_disasm): remove variable which is no longer used
+ since r33013.
+
+Sun Aug 21 14:20:58 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * configure.in: use LD_LIBRARY_PATH_64 on 64-bit Solaris.
+
+Sat Aug 20 13:19:52 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * iseq.c (iseq_s_disasm): fix a bug that may cause SEGV.
+
+ * test/ruby/test_method.rb (test_body): add a test for the above change.
+
+Sat Aug 20 10:43:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_read): return new string if nil
+ is explicitly given as a buffer ([Bug #5207]), otherwise set the
+ encoding. also removed dead code.
+
+Fri Aug 19 14:25:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (proc_spawn_v, proc_spawn): should not wait the
+ spawned process.
+
+ * process.c (proc_spawn_v): fix missing argument, and try with
+ /bin/sh only if failed with ENOEXEC.
+
+Fri Aug 19 14:12:57 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (idle): raises a Net::IMAP::Error when the
+ connection is closed. based on the patch by Hugo Barauna.
+ [Bug #5190] [ruby-core:38930]
+
+Fri Aug 19 13:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * configure.in: defines _DARWIN_UNLIMITED_SELECT if the target_os
+ is darwin.
+
+Fri Aug 19 13:14:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * thread.c: add a description for the behavior of select(2) on
+ Mac OS X 10.7 (Lion).
+
+Fri Aug 19 11:28:58 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/net/imap.rb (msg_att): accepts extra space before ')'.
+ based on the patch by art lussos. [Bug #5163] [ruby-core:38820]
+
+Wed Aug 17 23:01:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (cannot_be_coerced_into_BigDecimal):
+ remove duplication.
+
+Wed Aug 17 15:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (cannot_be_coerced_into_BigDecimal):
+ add a new function for raising error when an object cannot coerce
+ into BigDecimal. [Bug #5172]
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimalValueWithPrec): use
+ cannot_be_coerced_into_BigDecimal function.
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): ditto.
+
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_log): ditto.
+
+ * test/bigdecimal/test_bigdecimal.rb: test for the above changes.
+
+ * test/bigdecimal/testbase.rb (under_gc_stress): add a new utility
+ method to run tests under the condition of GC.stress = true.
+
+Wed Aug 17 10:16:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * rational.c (nurat_coerce): Rational#coerce should converts itself
+ into Complex if the argument is a Complex with non-zero imaginary
+ part. [Bug #5020] [ruby-dev:44088]
+
+ * test/ruby/test_rational.rb (test_coerce): test for the above change.
+
+Wed Aug 17 06:33:19 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_x509cert.c: Add class documentation for
+ OpenSSL::X509::Certificate.
+
+Wed Aug 17 04:54:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_pkey.c: corrected docs, OpenSSL::PKey::DH does
+ *not* support #sign/verify.
+
+Tue Aug 16 18:56:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm.c (ruby_threadptr_data_type): rename to hide.
+ [ruby-core:38972]
+
+Tue Aug 16 18:52:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * win32/mkexports.rb (Exports::Mswin#each_export): exclude Init_
+ and _threadptr_ functions, as well as mingw.
+
+Tue Aug 16 09:31:44 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/dl: Add documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #5192]
+
+Tue Aug 16 08:48:26 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/.document (fiddle): Remove duplicate entry
+ * ext/fiddle: Complete documentation of Fiddle. Patch by Vincent
+ Batts. [#5192]
+
+Tue Aug 16 08:00:15 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/socket: Make Socket documentation appear. Add documentation for
+ Socket, TCPServer, SOCKSSocket. Patch by Sylvain Daubert.
+ [Ruby 1.9 - Feature #5182]
+
+Mon Aug 15 09:58:55 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_ssl.c: Support disabling OpenSSL compression.
+
+ * test/openssl/test_ssl.rb: Add a test for it.
+ Thanks to Eric Wong for the patch.
+ [Ruby 1.9 - Feature #5183] [ruby-core:38911]
+
+Sun Aug 14 05:57:01 2011 Tanaka Akira <akr@fsij.org>
+
+ * test/socket/test_socket.rb (test_connect_timeout): added a test
+ based on a patch by Eric Wong. [ruby-core:38910]
+
+Sat Aug 13 22:17:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/mkconfig.rb: do not make the entries related to sitedir and
+ verdordir if disabled by --without options. [ruby-core:38922]
+ [Bug #5187]
+
+Sat Aug 13 17:03:22 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:38861]
+
+Sat Aug 13 09:39:07 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * test/date/test_*.rb: added tests.
+
+Sat Aug 13 09:36:19 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/date/date_parse.c (parse_ddd_cb): fix r32896. RB_GC_GUARD
+ insertion position was mistaken. [ruby-dev:44337] [Bug #5152]
+
+Sat Aug 13 09:26:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/core_ext.rb: Make Kernel#y private.
+ [ruby-core:38913]
+
+ * test/psych/test_yaml.rb: corresponding test.
+
+Sat Aug 13 09:05:16 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c (date_strftime_alloc): followed the change
+ of r32885.
+
+ * doc/NEWS-1.9.3: followed the above change.
+
+Sat Aug 13 08:55:38 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/scalar_scanner.rb: Only consider strings
+ with fewer than 2 dots to be numbers. [ruby-core:38915]
+
+Sat Aug 13 08:47:20 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: [ruby-core:38855].
+
+Sat Aug 13 03:41:37 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/uri/common.rb: Fix documentation of URI::Parser.new. Patch by
+ Steve Klabnik. [Ruby 1.9 - Bug #5177]
+
+Sat Aug 13 02:19:57 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/digest/digest.c: Add documentation for the Digest module. Patch
+ by Sylvain Daubert. [Ruby 1.9 - Bug #5167]
+
+Sat Aug 13 01:56:11 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rake: Update to Rake 0.9.2.2. Prevent pollution of toplevel
+ namespace by Commands. Remove unused variable and debugging
+ statement in tests.
+
+Fri Aug 12 11:39:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: Describe "no" configure option for site_ruby
+ and vendor_ruby. Patch by Vit Ondruch. [Bug #5187][ruby-core:38921]
+
+Fri Aug 12 09:00:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems 1.8.8. Fixes encoding of YAML gemspec
+ from gems. Github Issue #149
+
+Fri Aug 12 08:17:46 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ipsocket.c (init_inetsock_internal): use SOMAXCONN for
+ listen backlog.
+
+ * ext/socket/unixsocket.c (rsock_init_unixsock): ditto.
+
+ * ext/socket/lib/socket.rb (Addrinfo#listen): ditto.
+ (Socket.tcp_server_sockets_port0): ditto.
+
+ * ext/socket/mkconstants.rb: define SOMAXCONN as 5 if not available.
+
+ [ruby-core:38493]
+
+Fri Aug 12 03:24:35 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Import RDoc 3.9.2. Fixes TIDYLINK for HTML output.
+
+Thu Aug 11 15:37:42 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * variable.c (autoload_delete): An autoload entry is still in a
+ RCLASS_IV_TBL, not in a RCLASS_CONST_TBL, so take back the table
+ changed in r29600. And an autoload entry keeps not a
+ rb_const_entry_t but a NODE so remove rb_const_entry_t thing added
+ in r29602.
+
+Thu Aug 11 15:07:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (link_command): use LIBRUBYARG in rbconfig for
+ unbundled extensions. [ruby-core:38802] [Bug #5147]
+
+ * lib/mkmf.rb (init_mkmf): revert r32902. [ruby-core:38903]
+
+Wed Aug 10 23:03:55 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb: fix argument check in the previous commit.
+
+Wed Aug 10 22:12:28 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp): add :connect_timeout option.
+ (Addrinfo#connect_from): add :timeout option.
+ (Addrinfo#connect): ditto.
+ (Addrinfo#connect_to): ditto.
+ [ruby-core:38538]
+
+Wed Aug 10 21:27:19 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/net/pop.rb: fix typo in document.
+
+ * lib/net/http.rb: ditto.
+
+ * lib/net/imap.rb: ditto.
+
+Wed Aug 10 19:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * complex.c (nucomp_rationalize): calls rationalize of real part if
+ imaginary part is exactly zero. The patch is made by Marc-Andre
+ Lafortune. fixes [Bug #5178] [ruby-core:38885]
+
+ * test/ruby/test_complex.rb (test_rationalize): add a test for the
+ above change.
+
+ * complex.c (nucomp_to_r): fix RDoc comment. The patch is made by
+ Marc-Andre Lafortune.
+
+Wed Aug 10 14:11:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (init_mkmf): set $LIBRUBYARG regardless of shared
+ option. [ruby-core:38802] [Bug #5147]
+
+Wed Aug 10 02:53:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/net/http.rb: come back autoload. OpenSSL constant is used
+ some places, so it leads mistakes like HTTP.start.
+
+Tue Aug 9 22:57:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/date/date_parse.c (date_zone_to_diff): add RB_GC_GUARD.
+ [ruby-dev:44337] [Bug #5152]
+
+ * ext/date/data_parse.c (parse_ddd_cb): ditto.
+
+Tue Aug 9 14:25:47 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * ext/fiddle/conversions.c (generic_to_value): ffi_arg and ffi_sarg
+ should be used to handle shorter return value. fix [Bug #3861]
+ [ruby-core:32504]
+
+ * ext/fiddle/closure.c (callback): ditto
+
+ * ext/fiddle/conversions.h (fiddle_generic): ditto
+
+ * ext/fiddle/conversions.c (value_to_generic): char, short and int
+ are strictly distinguished on big-endian CPU, e.g. sparc64.
+
+Tue Aug 9 11:21:08 2011 Narihiro Nakamura <authornari@gmail.com>
+
+ * gc.c (gc_lazy_sweep): if sweep target slots are not found, we
+ try heap_increment() because it might be able to expand the
+ heap. [Bug #5127] [ruby-dev:44285]
+
+ * gc.c (gc_clear_mark_on_sweep_slots): if a sweeping was
+ interrupted, we expand the heap if at all possible.
+
+Tue Aug 9 12:20:33 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * test/fiddle/helper.rb (libc_so, libm_so): Solaris support added.
+ [ruby-core:38853] [Bug #5168]
+
+ * test/dl/test_base.rb (libc_so, libm_so): on Solaris, remove libc
+ and libm version numbers for detecting default libc and libm.
+
+Tue Aug 9 09:18:04 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/zlib/zlib.c (gzfile_wrap): Document encoding options.
+
+ * ext/zlib/zlib.c (rb_gzwriter_s_open): ditto
+
+ * ext/zlib/zlib.c (rb_gzreader_s_open): ditto
+
+Sun Aug 7 23:31:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * time.c (rb_strftime_alloc): raise ERANGE if width is too large.
+ Patch by Nobuyoshi Nakada. [Bug #4457] [ruby-dev:43285]
+
+ * test/ruby/test_time.rb (class TestTime): add a test for the
+ above change.
+
+Sun Aug 7 22:51:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * ext/openssl/ossl_asn1.c (decode_eoc): remove unused variables.
+ Patch by Eric Wong. [Feature #5157] [ruby-core:38798]
+
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode): ditto.
+
+ * ext/openssl/ossl_pkey.c (ossl_pkey_new_from_data): ditto.
+
+Sun Aug 7 22:37:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * configure.in: add -Wunused-variable to default CFLAGS.
+ Patch by Eric Wong. [Feature #5157] [ruby-core:38798]
+
+Sun Aug 7 15:37:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/digest/sha2/sha2ossl.c: use original SHA384_Final on DragonFly.
+
+Sun Aug 7 14:08:16 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * ext/objspace/objspace.c: fix typos in a document.
+
+Sun Aug 7 07:14:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * cont.c (HAVE_GETCONTEXT): see getcontext(3) because DragonFly BSD
+ x64 port doesn't have it.
+
+Sun Aug 7 00:42:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/tk/lib/tk/wm.rb (Tk::Wm.command): Add the missing receiver
+ before calling epath. patched by flori
+ https://github.com/flori/ruby/commit/aa9474d32e5f2c57f8b0e2e0c528a03f06a4d433
+
+Sat Aug 6 07:06:34 2011 Eric Hodel <drbrain@segment7.net>
+
+ * marshal.c (w_object): Fix exception message when _dump_data is not
+ defined on a T_DATA object.
+
+Fri Aug 5 22:16:20 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * numeric.c (rb_infinity, rb_nan): use WORDS_BIGENDIAN to get endian.
+ fix [Bug #5160] [ruby-dev:44356]
+
+Fri Aug 5 17:14:11 2011 Akinori MUSHA <knu@iDaemons.org>
+
+ * test/test_syslog.rb (TestSyslog#test_log): Do not be too
+ specific about the log line format. Fixes #5081.
+
+Fri Aug 5 15:57:10 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * complex.c (f_signbit): fix compile error in gcc4 on Solaris with
+ CFLAGS="-std=gnu99". [ruby-dev:44355] fix [Bug #5159]
+
+ * math.c: ditto.
+
+Fri Aug 5 15:55:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/ruby/test_object.rb: tests that respond_to? returns false.
+
+Fri Aug 5 13:32:43 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb, lib/xmlrpc/server.rb: should use
+ String#bytesize instead of String#size.
+
+Fri Aug 5 12:18:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * vm_eval.c (check_funcall): try respond_to? first if redefined.
+ [Bug #5158]
+
+Fri Aug 5 09:48:22 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Import RubyGems 1.8.7:
+ Added missing require for `gem uninstall --format-executable`.
+
+ The correct name of the executable being uninstalled is now displayed
+ with --format-executable.
+
+ Fixed `gem unpack uninstalled_gem` default version picker.
+
+ RubyGems no longer claims a nonexistent gem can be uninstalled.
+
+ `gem which` no longer claims directories are requirable files.
+
+ `gem cleanup` continues cleaning up gems if one can't be uninstalled
+ due to permissions. Issue #82.
+
+ Gem repository directories are no longer created world-writable.
+ Patch by Sakuro OZAWA. [Ruby 1.9 - Bug #4930]
+
+Fri Aug 5 07:00:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/io/console/test_io_console.rb (test_noctty): daemon() on
+ Fedora Rawhide seems not to detach the controlling terminal,
+ when the argument noclose is non-zero. ref: [Bug #5135]
+
+Thu Aug 4 23:48:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * thread_pthread.c (native_cond_signal): retry to call pthread_cond_signal
+ and pthread_cond_broadcast if they return EAGAIN in
+ native_cond_signal and native_cond_broadcast, respectively.
+ It is for the pthread implementation of Mac OS X 10.7 (Lion).
+ fixes #5155. [ruby-dev:44342].
+
+ * thread_pthread.c (native_cond_broadcast): ditto.
+
+ * thread_pthread.c (struct cached_thread_entry): stop using
+ pthread_cond_t and its functions directly.
+
+ * thread_pthread.c (register_cached_thread_and_wait): ditto.
+
+ * thread_pthread.c (use_cached_thread): ditto.
+
+Thu Aug 4 20:29:41 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * configure.in: when Solaris cc, use $(CC) to link shared libs.
+
+Thu Aug 4 20:19:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * error.c (report_bug): use a small message buffer instead of BUFSIZ.
+ It is needed for avoiding nested SIGSEGV on Linux.
+ Note: BUFSIZ is not proper buffer size. It's unrelated with maximum
+ filename length. :-/
+ [Bug #5139] [ruby-dev:44315]
+
+Thu Aug 4 16:08:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * tool/rbinstall.rb (gem): install all gemspecs under lib and ext.
+
+ * tool/rbinstall.rb (Gem::Specification): may not be defined when
+ cross-compiling and BASERUBY is 1.8.
+
+Thu Aug 4 11:30:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/missing.h: define __syscall on OpenBSD as r32702.
+
+Thu Aug 4 03:02:54 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * tool/rbinstall.rb: use rubygems to load gemspecs, copy actual
+ gemspecs on install rather than generate fake ones for all gems.
+
+Thu Aug 4 02:45:10 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * configure.in: set CXX variable to the C++ compiler that matches the
+ C compiler specified by CC variable (e.g. use g++-4.2 for gcc-4.2).
+
+Thu Aug 4 02:21:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/mkmf.rb (link_command): use static library only for bundled
+ extensions. [Bug #5147]
+
+Thu Aug 4 02:02:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/psych.gemspec: installing psych as a gem.
+
+Wed Aug 3 16:01:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * util.c, include/ruby/util.h (ruby_add_suffix): remove the function.
+ [Bug #5153] [ruby-core:38736]
+
+ * io.c (argf_next_argv): remove the call of above function.
+
+ * ext/-test-/add_suffix, test/-ext-/test_add_suffix.rb: remove the test
+ extension module because this is only for testing ruby_add_suffix().
+
+ * LEGAL: remove the mention about a part of util.c, because now we
+ removed the part.
+
+ * io.c (argf_next_argv): now the new filename is not guaranteed to
+ use, so should check the return value of rename(2).
+
+ * test/ruby/test_argf.rb (TestArgf#test_inplace_rename_impossible):
+ now we expect same result with other platforms on no_safe_rename
+ platforms (=Windows).
+
+Wed Aug 3 09:18:08 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/xmlrpc/webrick_testing.rb (WEBrick_Testing#start_server):
+ Like r32795, bind address should be specified.
+
+Wed Aug 3 07:46:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (enc_find): mistakenly remained !. [Bug #5150]
+
+Wed Aug 3 00:11:08 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/prettyprint.rb: update document. [ruby-core:36776]
+
+Tue Aug 2 22:04:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * gc.c (init_heap): allocate sigaltstack after heaps are allocated.
+ [ruby-dev:44315] [Bug #5139]
+
+ * vm.c (thread_free): use free because objspace is not ready.
+
+ * vm.c (th_init): use malloc because objspace is not ready.
+
+Tue Aug 2 20:10:16 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * test/testunit/test_parallel.rb: pass "--ruby" option to
+ test/testunit/tests_for_parallel/runner.rb. [Bug #5132] [ruby-dev:44303]
+
+Tue Aug 2 15:53:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * encoding.c (str_to_encoding): rename from to_encoding and
+ use str_to_encindex.
+
+ * encoding.c (str_to_encindex): split from to_encoding.
+
+ * encoding.c (rb_to_encoding): use str_to_encoding.
+
+ * encoding.c (rb_obj_encoding): don't bypass rb_encoding*.
+ If it uses rb_encoding*, it bypass encindex. If it uses encindex,
+ it doesn't bypass.
+
+ * encoding.c (enc_find): add shortcut for encoding object, use
+ str_to_encindex, and avoid bypass rb_encoding*.
+
+Tue Aug 2 12:03:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * hash.c (recursive_hash): hash value of emptied hash should be
+ equal to an empty hash. [ruby-core:38650]
+
+Tue Aug 2 11:42:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_enc_symname2_p): :! is valid symbol. [Bug #5136]
+
+Tue Aug 2 07:33:29 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/net/http/test_http.rb (TestNetHTTP_version_1_1_methods#test_timeout_during_HTTP_session):
+ If you connect to localhost, you should listen localhost.
+
+ * test/net/http/test_https.rb (TestNetHTTPS#test_timeout_during_SSL_handshake):
+ ditto.
+
+Tue Aug 2 06:18:15 2011 Luis Lavena <luislavena@gmail.com>
+
+ * lib/rubygems/installer.rb (class Gem): Correct path check on Windows
+ Possible fix for [Ruby 1.9 - Bug #5111]
+ * test/rubygems/test_gem_installer.rb (load Gem): ditto
+
+Mon Aug 1 20:12:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/test_process.rb (TestProcess#windows?): new method.
+
+ * test/ruby/test_process.rb (TestProcess#*): use above method.
+
+ * test/ruby/test_process.rb (TestProcess#test_execopts_redirect):
+ windows doesn't support FD_CLOEXEC.
+
+Mon Aug 1 15:45:23 2011 Eric Hodel <drbrain@segment7.net>
+
+ * test/rake/test_rake_functional.rb: Don't assume the binary name of
+ ruby is "ruby". [Ruby 1.9 - Bug #5114]
+ * test/rake/helper.rb: ditto
+
+Mon Aug 1 15:31:14 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/io/console/test_io_console.rb (TestIO_Console#test_sync):
+ Skip when PTY allocation failed (that's not our fault).
+
+Mon Aug 1 15:04:12 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+
+ * test/xmlrpc/test_webrick_server.rb (Test_Webrick#setup_http_server):
+ XMLRPC::Client.new3(), when called without host: argument, tries
+ to connect to a host where "localhost" resolves to. On the
+ other hand a WEBrick::HTTPServer.new(), when called without
+ BindAddress: argument, tries to listen all the address where
+ getaddrinfo(AF_UNSPEC) resolves to. This is a mismatch because
+ "localhost" might not resolve to one of those listening sockets.
+ We would better explicitly specify "localhost" here and if
+ failed, just skip the whole test.
+
+Mon Aug 1 14:24:56 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc.rb: Import RDoc 3.9.1. Fixes bugs in the RDoc::Markup
+ parser.
+
+Mon Aug 1 12:00:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * insns.def (concatstrings): don't use initial ASCII-8BIT string.
+ [ruby-core:38635] [Bug #5126]
+
+Sun Jul 31 22:57:16 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * enc/Makefile.in (ECHO1): Same as the recent fix in common.mk.
+ ":" in a make variable replacement cause a syntax error with
+ /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
+
+Sun Jul 31 21:16:02 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * complex.c (f_signbit): gcc4 on Solaris DOES have signbit but does
+ not have it on header.
+
+ * math.c: ditto.
+
+Sun Jul 31 21:09:04 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (node_name.inc): Use $(Q) for consistency.
+
+ * Makefile.in (INSNS): ditto.
+
+Sun Jul 31 21:19:51 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * lib/mkmf.rb (configuration:ECHO1): Same as the recent fix in
+ common.mk.
+ ":" in a make variable replacement cause a syntax error with
+ /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
+
+Sun Jul 31 20:39:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * common.mk (ECHO1): nmake does not allow parenthesis in make variable
+ replacement.
+
+Sun Jul 31 23:06:57 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (check_env): print debug messages to stderr.
+ [Feature #4871] [ruby-dev:43743]
+
+Sun Jul 31 22:50:23 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c (vm_make_env_each): don't save prev env value.
+ It is no longer used. [Feature #4871] [ruby-dev:43743]
+
+ * vm.c (check_env): changed accordingly.
+
+Sun Jul 31 20:21:36 2011 "Yuki Sonoda (Yugui)" <yugui@yugui.jp>
+
+ * common.mk (ECHO1): ":" in a make variable replacement cause a syntax
+ error with /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
+
+ * configure.in (NULLCMD): new check.
+
+ * Makefile.in (NULLCMD): Reflects checking in configure.
+
+ * win32/Makefile.sub (NULLCMD): new assignment.
+
+Sun Jul 31 18:58:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_pipe): pipe on cygwin can succeed half but fail
+ half.
+
+Sun Jul 31 11:31:07 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+
+ * vm.c: check if cfp is valid. [Bug #5083] [ruby-dev:44208]
+
+Sun Jul 31 09:18:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc: Update to RDoc 3.9. Fixed `ri []`, stopdoc creating an
+ object reference, nodoc for class aliases, verbatim === lines.
+
+Sun Jul 31 01:29:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * io.c (rb_io_each_byte): remove unused variable e.
+
+Sat Jul 31 01:23:45 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * test/bigdecimal/test_bigdecimal.rb (test_version): removed.
+
+Sat Jul 30 23:19:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * defs/default_gems: separate from tool/rbinstall.rb.
+
+Sat Jul 30 23:14:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_each_byte): rbuf can be refreshed during yield.
+ [Bug #5119]
+
+Sat Jul 30 22:35:50 2011 Naohisa Goto <ngotogenome@gmail.com>
+
+ * strftime.c (NEEDS): avoid SEGV due to integer overflow in
+ sparc-solaris2.10 and i686-linux. fix [Bug #4456] [ruby-dev:43284]
+
+Sat Jul 30 17:26:26 2011 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_win32ole_variant.rb: use skip method to skip the test.
+
+ * test/win32ole/test_win32ole_variant_outarg.rb: ditto.
+
+Sat Jul 30 14:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_version): version 1.1.0.
+
+ * ext/bigdecimal/bigdecimal.gemspec: turn into a default gem.
+
+ * tool/rbinstall.rb: ditto.
+
+Sat Jul 30 11:21:55 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_core.h (ALT_STACK_SIZE): use MINSIGSTKSZ*2 instead of SIGSTKSZ*2.
+ [ruby-core:38607]
+
+Sat Jul 30 10:39:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm.c (th_init): preallocate alternative stack.
+ NoMemoryError is better than rb_bug, of course.
+ Patch by Eric Wong. [ruby-core:38572][ruby-core:38594].
+
+ * signal.c (rb_register_sigaltstack): ditto.
+
+ * vm_core.h: moved ALT_STACK_SIZE definition from signal.c.
+ * vm.c (thread_free): use xfree() instead of free().
+
+Sat Jul 30 07:20:49 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (udp_server_sockets): unused variable
+ removed.
+ patch by Jeremy Evans. [ruby-core:38600]
+
+Fri Jul 29 23:56:32 2011 Tanaka Akira <akr@fsij.org>
+
+ * lib/securerandom.rb: call OpenSSL::Random.seed at the
+ SecureRandom.random_bytes call.
+ based on the patch by Masahiro Tomita. [ruby-dev:44270]
+
+Fri Jul 29 23:53:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * array.c (rb_ary_set_len): new function to set array length.
+
+ * vm_eval.c (method_missing): set the length of argv array, to mark
+ arguments.
+
+ * vm_eval.c (rb_apply): get rid of too large alloca.
+
+Fri Jul 29 20:48:39 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: fix typos.
+
+Fri Jul 29 20:28:56 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: use whitespaces as a separator.
+
+Fri Jul 29 18:59:07 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/mkconstants.rb: add documents for constants.
+ patch by Eric Hodel. [ruby-core:37853] [Bug #4989]
+
+Fri Jul 29 16:00:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * configure.in (enable_pthread): use -pthread on OpenBSD without
+ explicit option. patched by Jeremy Evans. [ruby-core:38572]
+
+Thu Jul 28 23:36:28 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * ext/fiddle/closure.c (callback): use rb_ary_tmp_new() instead of
+ xmalloc() to allocate an array for arguments of callback procedure,
+ to prevent arguments from being swept by GC. [ruby-core:38546]
+ [Bug #4929]
+
+Thu Jul 28 22:36:06 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_initialize): Avoid possible
+ SEGV from AES encryption/decryption. Processing data by
+ Cipher#update without initializing key (meaningless usage of Cipher
+ object since we don't offer a way to export a key) could cause SEGV.
+
+ In OpenSSL, the EVP which has EVP_CIPH_RAND_KEY flag (such as DES3)
+ allows uninitialized key, but other EVPs (such as AES) does not
+ allow it. Calling EVP_CipherUpdate() without initializing key causes
+ SEGV so we set the data filled with "\0" as the key by default. See
+ #2768.
+
+ * test/openssl/test_cipher.rb: test it.
+
+Thu Jul 28 14:25:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/rubygems/user_interaction.rb (Gem::StreamUI#tty?): typo.
+
+Thu Jul 28 12:32:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/callback/mkcallback.rb (gencallback): use PTR2NUM.
+
+ * ext/dl/cptr.c (rb_dlptr_aref, rb_dlptr_aset): check NULL pointer
+ dereference.
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): use rb_check_funcall.
+
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): fix wrapping condition.
+
+Thu Jul 28 04:53:31 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/delegate.rb: Move file-level documentation to the appropriate
+ classes.
+
+Thu Jul 28 02:15:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/dl/cfunc.c (dlcfunc_mark), ext/dl/cptr.c (dlptr_mark):
+ workaround to mark wrapped object. this is not a true fix,
+ because [Bug #4929] is caused by the interface design of DL.
+
+Thu Jul 28 00:28:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/fileutils/test_fileutils.rb: add OpenBSD case.
+ patched by Jeremy Evans [ruby-core:38530] see #5097
+
+ * test/ruby/test_process.rb: ditto.
+
+Wed Jul 27 22:46:59 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+
+ * test/rinda/test_rinda.rb (test_remote_array_and_hash):
+ add local variables to protect objects from GC. [ruby-dev:44253]
+ [Bug #5104]
+
+Wed Jul 27 17:55:54 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * include/ruby/missing.h: define __syscall if the platform has
+ __syscall in the library but doesn't define it in headers
+ for example Mac OS X.
+
+Wed Jul 27 15:39:14 2011 Eric Hodel <drbrain@segment7.net>
+
+ * object.c: Add usage documentation for BasicObject. Based on patch
+ by Thomas Sawyer. [Ruby 1.9 - Bug #5067]
+
+Wed Jul 27 12:24:17 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/uninstaller.rb: Add missing require and update
+ messaging to avoid confusion with uninstall --format-executable.
+ [Ruby 1.9 - Bug #4062]
+
+Wed Jul 27 09:34:24 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems: Update to RubyGems 1.8.6.1.
+
+Wed Jul 27 09:27:59 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_pkcs12.rb: Add test and intermediate certificates.
+ [ Ruby 1.9 - Feature #3793 ] [ruby-core:32088]
+
+Wed Jul 27 01:05:32 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval_error.c (rb_print_undef_str): new function to raise
+ NameError for undefined method.
+
+ * load.c (rb_mod_autoload_p), object.c (rb_mod_const_get),
+ variable.c (rb_f_untrace_var, set_const_visibility), vm_method.c
+ (rb_mod_{remove,undef,alias}_method, set_method_visibility):
+ remove inadvertent symbol creation. based on the first patch by
+ Jeremy Evans at [ruby-core:38447]. [Feature #5089]
+
+ * vm_method.c (obj_respond_to): fix the respond_to_missing? override
+ case. based on the patch by Jeremy Evans at [ruby-core:38417].
+ [Feature #5072]
+
+ * parse.y (rb_check_id): make the given name a symbol or a string.
+ based on the second patch by Jeremy Evans at [ruby-core:38447]
+
+Wed Jul 27 00:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d):
+ zero or negative precision is error. fixes #5098.
+ [ruby-dev:44210]
+
+ * test/bigdecimal/test_bigdecimal_util.rb: add test for the above
+ change.
+
+Wed Jul 27 00:48:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Float#to_d): modified for
+ specifying precision. fixes #5098. [ruby-dev:44210]
+
+ * test/bigdecimal/test_bigdecimal_util.rb: add test for the above
+ change.
+
+Wed Jul 27 00:45:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Integer#to_d): added
+ for symmetry to BigDecimal() function with an Integer.
+ fixes #5098. [ruby-dev:44210]
+
+ * test/bigdecimal/test_bigdecimal_util.rb: add test for the above
+ change.
+
+Wed Jul 27 00:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * ext/bigdecimal/lib/bigdecimal/util.rb (BigDecimal#to_d): added
+ for adapting other Numeric subclasses. [ruby-dev:44245]
+
+ * test/bigdecimal/test_bigdecimal_util.rb: test for the above change.
+
+Wed Jul 27 00:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * bigdecimal/bigdecimal.c (VpDup) a new function for duplicating
+ a BigDecimal.
+
+ * bigdecimal/bigdecimal.c (BigDecimal_new): support generating a new
+ BigDecimal from another BigDecimal using BigDecimal global function
+ or constructor. [ruby-dev:44245]
+
+Tue Jul 26 23:33:24 2011 Igor Zubkov <igor.zubkov@gmail.com>
+
+ * array.c: Fix typo. https://github.com/ruby/ruby/pull/36
+
+Mon Jul 25 23:51:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c: pre-allocate the unlinked_method_entry_list_entry struct to
+ avoid memory allocation during GC. based on a patch from Eric Wong.
+ [ruby-core:38498]
+
+Mon Jul 25 23:39:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/rake/test_rake_directory_task.rb (TestRakeDirectoryTask#
+ test_directory_win32): fixed wrong test.
+
+Mon Jul 25 22:36:11 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * proc.c (struct METHOD), gc.c (gc_marks), vm_method.c
+ (rb_gc_mark_unlinked_live_method_entries): fix SEGV bug.
+ rb_method_entry_t was free'd even when the method is still on the
+ stack if it is BMETHOD (i.e., Method#call). This is because
+ rb_method_entry_t is embedded in struct METHOD. This commit
+ separates them and marks the live method entries.
+ See [ruby-core:38449] in detail. fix [Bug #5047] [ruby-core:38171]
+
+Mon Jul 25 22:14:37 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * lib/xmlrpc/client.rb: Fix possible HTTP header formatting failure by
+ 'Basic' header. Long username caused the base64 String truncation in
+ HTTP header which is not allowed. See #5046.
+
+ * test/xmlrpc/test_webrick_server.rb: test it.
+
+Mon Jul 25 15:04:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/lib/openssl.rb: End of transition period introduced by
+ [ruby-dev:38018]. From the next version of 1.9.3, you should use
+ require "openssl"
+ instead of
+ require "openssl/ssl"
+ and
+ require "openssl/x509"
+
+Mon Jul 25 13:46:38 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/lib/openssl/x509.rb: Cosmetic change: move definition
+ introduced in r30152 to x509-internal.rb.
+
+Mon Jul 25 13:09:42 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): Avoid randomly generated
+ SSLError from SSLSocket just after invoking SSLSocket#close.
+ OpenSSL's SSL_shutdown could try to send alert packet and it might
+ set SSLerr(global error stack) as the result. It causes the next
+ SSL read/write operation to fail by unrelated reason.
+
+ By design, we're ignoring any error at SSL_shutdown() so we clear
+ global error stack after SSL_shutdown is called. See #5039.
+
+Sun Jul 24 20:29:53 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: refine the recvmsg test.
+
+Sun Jul 24 20:02:31 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: fix the recvmsg test.
+
+Sun Jul 24 08:42:51 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/extconf.rb: test recvmsg allocates file descriptors for
+ fd passing even with MSG_PEEK.
+
+ * ext/socket/ancdata.c: use the above test result.
+
+Sun Jul 24 01:04:50 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Restore behavior of
+ Gem::Specification#loaded. [Ruby 1.9 - Bug #5032]
+
+Sun Jul 24 00:05:00 2011 Jeremy Evans <merch-redmine@jeremyevans.net>
+
+ * error.c (rb_name_error_str): new function to raise NameError
+ with the name string but not ID.
+
+ * object.c, proc.c, variable.c: more removal of inadvertent symbol
+ creation. [Feature #5079]
+
+Sat Jul 23 21:14:00 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/cmath.rb (cbrt): should return a real number if possible.
+
+Sat Jul 23 20:12:52 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/rake/test_rake_functional.rb (setup): Use __FILE__ for the base
+ directory. Current directory is not the top source directory when
+ the building process runs on other than there.
+
+ * test/rake/test_rake_rake_test_loader.rb: ditto.
+
+ * test/rake/test_rake_task_argument_parsing.rb
+ (test_terminal_width_using_hardcoded_80): hardcoded 80 is used
+ when app.unix? is false.
+
+Sat Jul 23 20:11:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * ext/date/date_core.c: an issue that is same as [ruby-dev:44071].
+ * ext/date/date_strftime.c: identical to [ruby-dev:44112].
+
+Sat Jul 23 19:12:53 2011 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * test/win32ole/test_err_in_callback.rb (test_err_in_callback):
+ skip test if ADODB.connection is not available.
+
+Sat Jul 23 15:37:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * parse.y (rb_enc_symname_type): :$a!, @a! and so on are not
+ valid symbols, so they should be inspected with quotes.
+
+Sat Jul 23 17:06:25 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_update_max_fd): validate fd.
+
+ * ext/socket/rubysocket.h (rsock_discard_cmsg_resource): add
+ msg_peek_p argument for the declaration.
+
+ * ext/socket/ancdata.c (discard_cmsg): add msg_peek_p argument.
+ assume FreeBSD, NetBSD and MacOS X doesn't generate passed fd
+ when MSG_PEEK.
+ (rsock_discard_cmsg_resource): add msg_peek_p argument.
+ (bsock_recvmsg_internal): call rsock_discard_cmsg_resource with
+ msg_peek_p argument.
+
+ * ext/socket/unixsocket.c (unix_recv_io): call
+ rsock_discard_cmsg_resource with msg_peek_p argument.
+
+Sat Jul 23 14:38:28 2011 Eric Hodel <drbrain@segment7.net>
+
+ * test/rake*: Remove dependencies on flexmock and session gems.
+ [Ruby 1.9 - Bug #4987]
+
+Sat Jul 23 12:19:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_check_id): take care of attrset ID created
+ implicitly by local ID. [Bug #5084]
+
+ * parse.y (rb_check_id): conversion condition was inverse.
+ [Bug #5084]
+
+Fri Jul 22 21:46:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * vm_insnhelper.c (vm_call_cfunc): added volatile for a workaround
+ of cfp consistency error problem on OS X 10.7 (Lion). It's
+ suspected llvm optimization bug.
+ [Bug #5074] [ruby-dev:44185]
+
+Fri Jul 22 21:18:20 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/uri/generic.rb (WFKV_): unroll the loop of regexp.
+
+ * lib/uri/generic.rb (URI.decode_www_form_component): ditto.
+
+Fri Jul 22 21:06:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * object.c (rb_mod_{const,cvar}_defined, rb_obj_ivar_defined):
+ avoid inadvertent symbol creation in reflection methods. based
+ on a patch by Jeremy Evans at [ruby-core:38367]. [Feature #5072]
+
+ * vm_method.c (rb_mod_method_defined)
+ (rb_mod_{public,private,protected}_method_defined)
+ (obj_respond_to): ditto.
+
+ * parse.y (rb_check_id): new function returns already interned ID
+ or 0.
+
+Fri Jul 22 20:44:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_is_global_id, rb_is_attrset_id): add missing
+ predicates.
+
+Fri Jul 22 20:24:38 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * test/ruby/test_object.rb (TestObject#test_respond_to_missing):
+ 2nd argument of respond_to_missing? is not optional.
+
+Fri Jul 22 19:05:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_enc_symname2_p): get rid of potential out-of-bound
+ access.
+
+Fri Jul 22 13:55:59 2011 Eric Hodel <drbrain@segment7.net>
+
+ * lib/net/http.rb: Net::HTTP#finish is used to manually close
+ connections. [Ruby 1.9 - Bug #5045]
+
+Fri Jul 22 13:51:29 2011 Eric Hodel <drbrain@segment7.net>
+
+ * ext/readline/readline.c: Add examples for Readline.completion_proc=.
+ [Ruby 1.9 - Bug #5057]
+
+Fri Jul 22 13:03:12 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_hmac.c: Revert checking return type of
+ HMAC_Init_ex as it is not compatible with OpenSSL < 1.0.0.
+
+Fri Jul 22 12:10:21 2011 Eric Hodel <drbrain@segment7.net>
+
+ * tool/rbinstall.rb (default gems): Install executables into the fake
+ gem dir for Gem.bin_path. [#4485]
+
+Fri Jul 22 11:20:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_digest.c: Check return value of EVP_DigestInit_ex.
+ * ext/openssl/ossl_hmac.c: Check return value of HMAC_Init_ex.
+ Thanks, Jared Jennings, for the patch.
+ [ Ruby 1.9 - Bug #4944 ] [ruby-core:37670]
+
+Fri Jul 22 09:09:43 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * ext/openssl/ossl_engine.c: Avoid double free of ENGINE reference.
+ * test/openssl/test_engine.rb: Add a test for it.
+ Thanks to Ippei Obayashi for providing the patch.
+ [ Ruby 1.9 - Bug #5062 ] [ruby-dev:44173]
+
+Fri Jul 22 06:37:13 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/csv.rb: Do not modify CSV.generate's argument [ruby-core:38356]
+
+Thu Jul 21 20:59:59 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/ancdata.c (discard_cmsg): workaround for MacOS X Lion.
+
+Thu Jul 21 20:02:11 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (set_trace_func, thread_set_trace_func_m): reset tracing
+ state when set_trace_func hook is removed. This is workaround patch
+ to force to reset tracing state that is broken by continuation call.
+ a patch from James M. Lawrence. [Feature #4347] [ruby-core:34998]
+
+ * test/ruby/test_continuation.rb (class TestContinuation): add a test
+ for above. a patch from James M. Lawrence.
+
+Thu Jul 21 19:27:19 2011 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * node.c (dump_node): add today's knowledge. "init arguments (m)" and
+ "init arguments (p)" of compile.c indicates a Ruby code that
+ evaluates multiple assignments that is in method or block
+ parameters: def foo((m1,m2), (m3,m4), *r, (p1,p2), (p3,p4)); end
+ The former (init arguments (m)) evaluates the multiple assignments
+ before rest argument, that are (m1,m2) and (m3,m4). The letter
+ (init arguments (p)) does ones after rest argument, that are
+ (p1,p2) and (p3, p4).
+
+Thu Jul 21 18:11:07 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * enum.c (enum_inject): remove empty line to notify rdoc
+ Enumerable#reduce is alias. patched by milki@github.
+ https://github.com/ruby/ruby/pull/26
+
+Thu Jul 21 17:30:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * array.c (rb_ary_delete_at_m): use simple array literal in rdoc.
+ patched by samuel tonini. [ruby-core:38310] [Bug #5066]
+
+Thu Jul 21 17:14:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#each):
+ Allow HTTP/0.9 request which doesn't has any header or body.
+ patched by Felix Jodoin. [ruby-core:38040] [Bug #5022]
+
+Wed Jul 20 23:02:18 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * io.c (rb_update_max_fd): remove parentheses. they are not in
+ macro.
+
+Wed Jul 20 22:22:23 2011 Tanaka Akira <akr@fsij.org>
+
+ * include/ruby/intern.h (rb_update_max_fd): declaration moved from
+ internal.h.
+
+ * file.c: ditto.
+
+ * io.c: call rb_update_max_fd for each new fds.
+
+ * process.c: ditto.
+
+ * random.c: ditto.
+
+ * ruby.c: ditto.
+
+ * ext/io/console/console.c: ditto.
+
+ * ext/openssl/ossl_bio.c: ditto.
+
+ * ext/pty/pty.c: ditto.
+
+ * ext/socket/init.c: ditto.
+
+ * ext/socket/socket.c: ditto.
+
+ * ext/socket/ancdata.c: ditto.
+
+ * ext/socket/unixsocket.c: ditto.
+
+Wed Jul 20 15:16:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/dl/handle.c (dlhandle_sym): clear previous error with dlerror()
+ before calling dlsym(). [ruby-dev:44091] [Bug #5021]
+
+Wed Jul 20 07:16:26 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+
+ * NEWS: mention Kernel#warn. [ruby-core:38119] [Feature #5029]
+
+Tue Jul 19 16:40:45 2011 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+
+ * cont.c (cont_save_thread): fix missing semicolon.
+
+Tue Jul 19 16:25:15 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (UPDATE_MAXFD): removed.
+
+Tue Jul 19 16:07:45 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_update_max_fd): new function.
+
+ * internal.h (rb_update_max_fd): declare rb_update_max_fd.
+
+ * thread_pthread.c (rb_thread_create_timer_thread): update max fd when
+ timer thread pipe is created.
+
+Mon Jul 18 13:36:47 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych.rb: define a new BadAlias error class.
+
+ * ext/psych/lib/psych/visitors/to_ruby.rb: raise an exception when
+ deserializing an alias that does not exist.
+
+ * test/psych/test_merge_keys.rb: corresponding test.
+
+Mon Jul 18 00:00:46 2011 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/curses/curses.c: added the new class Curses::Pad, which
+ supports scrolling. patch by Eric Hodel. [Feature #4896]
+ [ruby-core:37206]
+
+Sun Jul 17 16:26:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_check_trusted): new function to check an object is
+ trusted.
+
+ * struct.c (rb_struct_modify), time.c (time_modify): check by the
+ above function to show proper class names. [Bug #5036]
+
+Sun Jul 17 15:30:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * error.c (rb_warn_m): accept multiple args in like puts. rdoc
+ patch by Erik Price at [ruby-core:38119]. [Feature #5029]
+
+Sun Jul 17 07:56:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+
+ * test/openssl/test_ssl_session.rb: add PEM SSL session without TLS
+ extensions. Use this as the default for the tests to ensure
+ compatibility with OpenSSL 0.9.7.
+ [ Ruby 1.9 - Bug #4961 ] [ruby-core:37726]
+
+Sat Jul 16 17:29:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (RUBY_UNIVERSAL_ARCH): restore arch flag.
+ Bug #4977
+
+Sat Jul 16 06:27:51 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/uri/common.rb (module): Remove optional parser argument to
+ Kernel#URI
+ [ruby-core:38061]
+
+ * lib/uri/generic.rb (module): ditto
+
+Sat Jul 16 03:19:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (is_socket, is_console): add prototypes to fix compile
+ problem with gcc introduced at r32549.
+ reported by Jon Forums. [Bug #5030] [ruby-core:38079]
+
+Sat Jul 16 00:55:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * time.c (time_dup): used rb_obj_class() instead of CLASS_OF().
+ The patch is made by Kazuki Tsujimoto. [Bug #5012] [ruby-dev:44071]
+
+ * test/ruby/test_time.rb (TestTime#test_getlocal_dont_share_eigenclass):
+ added a new test for eigenclass of time object.
+
+Fri Jul 15 19:11:00 2011 Kenta Murata <mrkn@mrkn.jp>
+
+ * bignum.c (bigsub_int): add RB_GC_GUARD. This patch is made by
+ Makoto Kishimoto. fixes #4223 [ruby-dev:42907]
+
+ * bignum.c (bigadd_int): ditto.
+
+Fri Jul 15 14:27:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c, include/ruby/win32.h (rb_w32_io_cancelable_p): renamed
+ from rb_w32_has_cancel_io(). now it takes a parameter as fd to check
+ the fd is console or not, because we cannot cancel console input even
+ if we have cancel_io function.
+
+ * io.c (WAIT_FD_IN_WIN32): call above function instead of the old one,
+ so now we can kill the thread which calls STDIN.gets.
+ the problem was reported by ko1 via IRC.
+
+Fri Jul 15 09:10:41 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/digest/sha2/sha2.c (SHA256_Update, SHA512_Update): avoid Bus
+ Error caused by unalignment access on Sparc-Solaris (and possibly on
+ other similar environment.) This patch just do memcpy always instead
+ of checking architecture. I see no perf drop on my 64bit env. For
+ more details, see #4320.
+
+ * test/digest/test_digest.rb: add test for unalignment access.
+
+Fri Jul 15 01:51:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * regint.h (PLATFORM_UNALIGNED_WORD_ACCESS): Power PC does not
+ allow unaligned word access.
+
+ * st.c (UNALIGNED_WORD_ACCESS): x86_64 allows unaligned word
+ access as well as i386.
+
+Thu Jul 14 12:19:34 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+
+ * ext/openssl/ossl.c (ossl_verify_cb): trap the exception from
+ verify callback of SSLContext and X509Store and make the
+ verification fail normally. Raising exception directly from callback
+ causes orphan resources in OpenSSL stack. Patched by Ippei Obayashi.
+ See #4445.
+
+ * test/openssl/test_ssl.rb
+ (test_exception_in_verify_callback_is_ignored): test it.
+
+Tue Jul 12 23:41:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * NEWS: add a description of Signal.trap change.
+
+Tue Jul 12 20:02:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (reserved_signal_p): reverted a part of r32523.
+ chikanaga noticed trap(:CHLD) has some realworld usecase.
+ * test/ruby/test_signal.rb (TestSignal#test_reserved_signal):
+ ditto.
+
+Tue Jul 12 17:12:45 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * vm_method.c (rb_add_method): should not call method_added hook
+ for undef operation. [Bug #5015]
+
+Tue Jul 12 16:58:44 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit.rb(Test::Unit::Options#process_args): Fix bug.
+ Fix process_args didn't return `@option` after r30939.
+
+Tue Jul 12 14:07:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (install_sighandler): fixed a race.
+
+Tue Jul 12 13:49:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * signal.c (sig_trap): don't permit to change a signal handler which
+ the interpreter reserved.
+ * signal.c (reserved_signal_p): ditto.
+ [Bug #2616] [ruby-core:27625]
+
+ * test/ruby/test_signal.rb (TestSignal#test_reserved_signal):
+ added a test for reserved signal.
+
+Tue Jul 12 11:58:28 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/setup.mak: support x86-amd64 cross compile environment.
+
+Mon Jul 11 23:22:28 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * time.c: can't compile time.c on AIX due to missing declaration for
+ ffs(). It is declared in strings.h on AIX.
+
+Mon Jul 11 15:54:24 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * process.c: removed signal() macro. It's no longer used.
+
+Mon Jul 11 15:02:24 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * numeric.c (rb_num2ull): use FIX2LONG instead of FIX2ULONG. see
+ rb_num2ulong(). fixed the problem of ObjectSpace._id2ref of IL32LLP64
+ platforms, introduced at r32433.
+
+Mon Jul 11 05:38:05 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+
+ * thread_pthread.c (get_stack): need to adjust stack addr for
+ [Bug #1813] on AIX.
+
+Mon Jul 11 01:16:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread_pthread.c (rb_thread_create_timer_thread): removed
+ rb_disable_interrupt()/rb_enable_interrupt().
+ * vm_core.h: ditto.
+ * process.c (static void before_exec): ditto.
+ * process.c (static void after_exec): ditto.
+ [Bug #4765] [ruby-dev:43571]
+
+ * eval_intern.h: removed rb_trap_restore_mask().
+ * vm_eval.c (rb_throw_obj): ditto.
+ * eval.c (setup_exception): ditto.
+
+ * signal.c: removed trap_last_mask.
+ * signal.c (trap_restore_mask): removed.
+ * signal.c (init_sigchld): comment clarification why signal block
+ is needed. and removed trap_last_mask operation.
+ * signal.c (trap_ensure): removed trap_last_mask operation.
+
+ * signal.c (rb_disable_interrupt, rb_enable_interrupt): made
+ static and removed sigdelset(SIGVTALRM) and sigdelset(SIGSEGV).
+
+ * process.c (rb_syswait): removed implicit signal handler change.
+
+Sun Jul 10 23:49:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * docs/NEWS-1.9.3: moved from NEWS.
+
+ * docs/ChangeLog-1.9.3: merged ChangeLog for 1.9.3.
+
+ * NEWS: NEWS for 1.9.4 that describes changes since 1.9.3
+
+ * ChangeLog: new ChangeLog for 1.9.4.
+
+Sun Jul 10 23:30:52 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+
+ * version.h (RUBY_VERSION): ruby_1_9_3 branch was forked.
+
+For the changes before 1.9.3, see doc/ChangeLog-1.9.3
+For the changes before 1.8.0, see doc/ChangeLog-1.8.0
+
+Local variables:
+coding: us-ascii
+add-log-time-format: (lambda ()
+ (let* ((time (current-time))
+ (system-time-locale "C")
+ (diff (+ (cadr time) 32400))
+ (lo (% diff 65536))
+ (hi (+ (car time) (/ diff 65536))))
+ (format-time-string "%a %b %e %H:%M:%S %Y" (list hi lo) t)))
+indent-tabs-mode: t
+tab-width: 8
+change-log-indent-text: 2
+end:
+vim: tabstop=8 shiftwidth=2
diff --git a/doc/ChangeLog-YARV b/doc/ChangeLog-YARV
new file mode 100644
index 0000000000..cbc51c5593
--- /dev/null
+++ b/doc/ChangeLog-YARV
@@ -0,0 +1,6917 @@
+# $Id: ChangeLog 590 2006-12-31 09:02:34Z ko1 $
+#
+# YARV ChangeLog
+# from Mon, 03 May 2004 01:24:19 +0900
+#
+
+Sun Dec 31 18:01:50 2006 Koichi Sasada <ko1@atdot.net>
+
+ * bin/* : ruby/trunk/bin 11437
+
+
+Sun Dec 31 17:42:05 2006 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : remove old Kernel#funcall definition
+
+
+2006-12-30(Sat) 07:59:26 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * catch up ruby/trunk 11437
+
+ * eval_intern.h : reorder tag initialization
+
+ * eval.c : fix to support __send!, funcall and prohibit funcall as
+ send
+
+ * eval_error.h, eval_jump.h, eval_safe.h : fix prototypes
+
+ * eval_method.h, vm.c : check re-definition at rb_add_method()
+
+ * yarvcore.h : fix typo
+
+ * compile.c : fix white spaces
+
+ * lib/delegate.rb : fix to support __send, ...
+
+ * lib/getoptlong.rb : fix to work on YARV
+
+ * lib/rss/parser.rb : use __send! instead of __send__
+
+ * sample/test.rb : comment out codes which use |&b| type block parameter
+
+ * ext/ripper/extconf.rb : turn off
+
+ * test/ripper/test_files.rb, test_parser_events.rb,
+ test_scanner_events.rb : fix to check it has ripper module
+
+ * vm_dump.c : remove showing file path length limitation
+
+ * yarvtest/test_eval.rb : use __send! instead of __send__
+
+
+2006-12-19(Tue) 11:46:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * doc/* : added
+
+ * ext/openssl : added
+
+ * ext/ripper : added
+
+ * test/openssl : added
+
+ * test/ripper : added
+
+ * misc : added
+
+ * rb/ -> tool/ : renamed
+
+ * common.mk : fixed for above change
+
+ * ruby_doc/* : move to topdir
+
+ * sample/* : added
+
+ * test2.rb : removed
+
+
+2006-12-15(Fri) 09:42:46 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : remove obsolete codes
+
+ * insns.def : fix a comment of getconstant
+
+
+2006-12-13(Wed) 16:26:06 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c, compile.c, compile.h, debug.c, debug.h,
+ insnhelper.h, insns.def, iseq.c, thread.c, thread_pthread.ci,
+ thread_pthread.h, thread_win32.ci, thread_win32.h, vm.c, vm.h,
+ vm_dump.c, vm_evalbody.ci, vm_opts.h.base, yarv.h,
+ yarv_version.h, yarvcore.c, yarvcore.h :
+ add a header includes copyright
+
+
+2006-12-12(Tue) 13:13:32 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/insns2vm.rb : add PREFETCH() statement
+
+ * vm.h : ditto
+
+ * yarvcore.h : fix LIKELY(x) and
+ remove main_thread_val field from yarv_vm_t
+
+ * yarvcore.c : ditto
+
+ * thread.c : support fork
+
+ * eval_thread.c : ditto
+
+ * process.c : ditto
+
+ * signal.c : ditto
+
+ * test/ruby/test_signal.rb :
+
+ * thread_pthread.ci : rename timer thread functions
+
+ * thread_win32.ci : ditto
+
+
+2006-11-10(Fri) 21:29:13 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix to compile arguments
+
+ * insns.def : fix to duplicate first array value on concatarray
+ instruction
+
+ * yarvtest/test_bin.rb : add a test for above change
+
+ * sample/test.rb : fix to catch up Ruby HEAD (fix to remove test about
+ module duplicate)
+
+
+2006-11-10(Fri) 12:49:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm_macro.def : fix to inherit visibility on
+ NODE_SUPER method invocation
+
+
+2006-11-10(Fri) 09:13:46 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * class.c : revert module duplicate inclusion
+
+ * parse.y : catch up current Ruby HEAD
+
+ * node.h : ditto
+
+ * compile.c : ditto
+
+ * gc.c : ditto
+
+ * iseq.c : ditto
+
+ * eval_thread.c : define Continuation (null class)
+
+ * vm_dump.c : fix to output backtrae to stderr
+
+ * yarvtest/test_block.rb : remove unsupported test
+
+ * yarvtest/test_class.rb : add a test about super
+
+ * yarvtest/test_syntax.rb : add a test about case/when
+
+
+2006-11-09(Thu) 10:22:59 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * call_cfunc.h -> call_cfunc.ci : renamed
+
+ * vm_evalbody.h, vm_evalbody.ci : ditto
+
+ * thread_pthread.h, thread_pthread.ci : separate declaration and
+ implementation
+
+ * thread_win32.h, thread_win32.ci : ditto
+
+ * thread.c : use *.ci instead of *.c as implementation
+
+ * vm.c : ditto
+
+ * common.mk : fix rules for above changes
+
+
+2006-11-08(Wed) 17:23:23 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm_dump.c : show C level backtrace (pointer only) with
+ backtrace() function (glibc feature)
+
+ * configure.in : ditto
+
+ * yarvcore.c : add NSDR method (show C level backtrace)
+
+ * error.c : fix indent
+
+
+2006-11-07(Tue) 13:17:10 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (rb_set_errinfo) : added
+
+ * ruby.h : ditto
+
+ * version.h : fix version number
+
+ * lib/webrick/utils.rb : fix to remove Thread.critical
+
+ * ext/dbm, dl, gdbm, iconv, io, pty, sdbm : added
+
+ * test/dbm, gdbm, io, logger, net, readline, sdbm, soap,
+ webrick, win32ole, wsdl, xsd : added
+
+
+2006-11-06(Mon) 22:32:18 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * array.c : import Ruby HEAD
+
+ * ext/socket/extconf.rb : ditto
+
+ * ext/socket/socket.c : ditto
+
+ * gc.c : ditto
+
+ * lib/date.rb : ditto
+
+ * lib/net/imap.rb : ditto
+
+ * lib/rss/0.9.rb : ditto
+
+ * lib/set.rb : ditto
+
+ * lib/soap/mapping/rubytypeFactory.rb : ditto
+
+ * lib/soap/mimemessage.rb : ditto
+
+ * lib/soap/property.rb : ditto
+
+ * lib/webrick/httprequest.rb : ditto
+
+ * lib/webrick/httputils.rb : ditto
+
+ * lib/xmlrpc/create.rb : ditto
+
+ * lib/xsd/codegen/gensupport.rb : ditto
+
+ * object.c : ditto
+
+ * ruby.h : ditto
+
+ * string.c : ditto
+
+ * version.h : ditto
+
+ * rb/ir.rb : fix to use "diffs" directory
+
+ * vm_dump.c : add "const"
+
+
+2006-11-06(Mon) 16:36:47 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_proc.c : remove "static" from external global variables
+
+ * eval_thread.c : ditto
+
+ * array.c : fix indent
+
+ * insns.def : add a suitable cast
+
+ * vm_macro.def : allow scalar value on splat arguments
+
+ * yarvtest/test_block.rb : fix to synchronize Ruby HEAD
+
+ * rb/insns2vm.rb : remove String#each for 1.9
+
+ * template/vm.inc.tmpl : ditto (remove String#each_with_index)
+
+
+2006-11-06(Mon) 13:22:34 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * iseq.c : fixed GC debugging outputs
+
+ * rb/parse.rb : fixed output format
+
+
+2006-11-04(Sat) 09:46:50 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix to duplicate "#{'foo'}" string
+
+ * yarvtest/test_bin.rb : add a test for above
+
+ * ext/readline/readline.c : import Ruby HEAD
+
+ * keywords : ditto
+
+ * lex.c : ditto
+
+ * parse.y : ditto
+
+ * lib/mkmf.rb : ditto
+
+ * test/ruby/test_hash.rb : fix to current specification
+
+ * test/ruby/test_string.rb : ditto
+
+
+2006-11-03(Fri) 20:58:36 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * ext/nkf/nkf-utf8/utf8tbl.h : missed to add
+
+ * configure.in : import ruby HEAD
+
+ * test/ruby/test_array.rb : ditto
+
+ * test/ruby/test_assignment.rb : ditto
+
+ * test/ruby/test_clone.rb : ditto
+
+ * test/socket/test_socket.rb : ditto
+
+ * test/socket/test_unix.rb : ditto
+
+ * test/strscan/test_stringscanner.rb : ditto
+
+ * test/testunit/collector/test_dir.rb : ditto
+
+
+2006-11-03(Fri) 20:22:24 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * array.c : import current ruby HEAD and apply API changes
+ This version has some known bugs
+
+ * bignum.c : ditto
+
+ * blockinlining.c : ditto
+
+ * class.c : ditto
+
+ * compile.c : ditto
+
+ * dir.c : ditto
+
+ * dln.c : ditto
+
+ * enum.c : ditto
+
+ * enumerator.c : ditto
+
+ * error.c : ditto
+
+ * eval.c : ditto
+
+ * eval_error.h : ditto
+
+ * eval_jump.h : ditto
+
+ * eval_load.c : ditto
+
+ * eval_proc.c : ditto
+
+ * ext/*
+
+ * file.c : ditto
+
+ * gc.c : ditto
+
+ * hash.c : ditto
+
+ * insns.def : ditto
+
+ * instruby.rb : ditto
+
+ * intern.h : ditto
+
+ * io.c : ditto
+
+ * iseq.c : ditto
+
+ * lib/*
+
+ * marshal.c : ditto
+
+ * math.c : ditto
+
+ * missing/vsnprintf.c : ditto
+
+ * mkconfig.rb : ditto
+
+ * node.h : ditto
+
+ * numeric.c : ditto
+
+ * object.c : ditto
+
+ * oniguruma.h : ditto
+
+ * pack.c : ditto
+
+ * parse.y : ditto
+
+ * prec.c : ditto
+
+ * process.c : ditto
+
+ * random.c : ditto
+
+ * range.c : ditto
+
+ * rb/ir.rb : ditto
+
+ * re.c : ditto
+
+ * regcomp.c : ditto
+
+ * regerror.c : ditto
+
+ * regexec.c : ditto
+
+ * regint.h : ditto
+
+ * regparse.c : ditto
+
+ * regparse.h : ditto
+
+ * ruby.c : ditto
+
+ * ruby.h : ditto
+
+ * rubytest.rb : ditto
+
+ * runruby.rb : ditto
+
+ * sample/test.rb : ditto
+
+ * signal.c : ditto
+
+ * sprintf.c : ditto
+
+ * st.c : ditto
+
+ * st.h : ditto
+
+ * string.c : ditto
+
+ * struct.c : ditto
+
+ * test/*
+
+ * thread.c : ditto
+
+ * time.c : ditto
+
+ * util.c : ditto
+
+ * variable.c : ditto
+
+ * version.h : ditto
+
+ * vm.c : ditto
+
+ * vm_dump.c : ditto
+
+ * vm_macro.def : ditto
+
+ * win32/*
+
+
+2006-10-31(Tue) 22:47:50 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y : fix NEWHEAP bugs (import HEAD)
+
+ * ruby.c, intern.h, yarvcore.c (rb_load_file) : change to
+ return parsed node pointer
+
+ * rb/ir.rb : add check mode
+
+
+2006-09-01(Fri) 22:05:28 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix a bug of peephole optimization and enable
+ regexp optimization
+
+
+2006-08-21(Mon) 05:27:48 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * lib/mathn.rb : remove "remove_method :gcd2"
+
+ * opt_insn_unif.def : unset opt setting
+
+ * opt_operand.def : ditto
+
+
+2006-08-18(Fri) 17:55:31 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : add dependency of yarvcore.h to thread.o
+
+ * gc.c : change comment line
+
+ * thread.c : remove some line break
+
+ * yarvcore.c : reoder initialize sequence to mark main thread
+
+
+2006-08-18(Fri) 16:51:34 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h : add a support for cache values per thread
+
+ * yarvcore.c : ditto
+
+ * gc.c : ditto
+
+ * thread.c : move a expression after acquiring lock
+
+ * compile.c : add a cast to remove warning
+
+
+2006-08-18(Fri) 02:07:45 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix to return rhs value on ATTRASGIN
+
+ * insns.def (setn) : add insn setn
+
+ * yarvtest/test_bin.rb : add tests for above
+
+
+2006-08-17(Thu) 22:46:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : clear callee_id ([yarv-dev:1073])
+
+
+2006-08-17(Thu) 22:14:15 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.h : fix error message
+
+
+2006-08-17(Thu) 12:23:52 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : change initilize routine order ([yarv-dev:1067])
+
+ * yarvcore.c (Init_yarv) : init th->machine_stack_start
+
+ * thread_pthread.h : add malloc value check ([yarv-dev:1066])
+
+ * insns.def (opt_eq) : fix typo ([yarv-dev:1072])
+
+ * yarvtest/test_opts.rb : add a test for above
+
+ * yarvtest/test_class.rb : add a test for last commit
+
+
+2006-08-17(Thu) 11:02:16 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * class.c (clone_method) : check undef-ed method ([yarv-dev:1068])
+
+
+2006-08-15(Tue) 15:07:43 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : fix opt_plus routine ([yarv-dev-en:149])
+
+ * yarvtest/test_opts.rb : add tests for above
+
+
+2006-08-06(Sun) 06:24:51 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : fix build rule (build only ruby binary when benchmark)
+
+ * yarvcore.[ch] : fix and add yarv_iseq_new_with_* API
+
+ * blockinlining.c : ditto
+
+ * compile.c : ditto
+
+ * compile.h : ditto
+
+ * iseq.c : ditto
+
+ * eval_method.h : check redefinition for specialized instruction
+
+ * insnhelper.h : ditto
+
+ * insns.def : ditto
+
+ * vm.c : ditto
+
+ * vm.h : ditto
+
+ * numeric.c : add Fixnum#succ
+
+ * thread.c : remove duplicated method Thread#current
+
+ * yarvcore.c : remove duplicated method Proc#clone
+
+ * yarvtest/test_opts.rb : added
+
+
+2006-07-20(Thu) 04:10:13 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix [yarv-dev:1041] problem (raise TypeError)
+
+ * eval.c : rb_funcall2 send as NOEX_PRIVATE and check scope
+
+
+2006-07-20(Thu) 03:38:46 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : fix [yarv-dev:1040] bug
+
+
+2006-07-18(Tue) 18:45:52 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * some files : set property "svn:eol-style" as native
+
+
+2006-07-18(Tue) 18:35:55 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * gc.h : fix a static function name
+
+ * vm.c : remove Japanese comments
+
+ * yarvcore.c : add a comment
+
+ * some files : set property "svn:eol-style" as native
+
+
+2006-07-18(Tue) 16:48:01 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : remove unused code
+
+ * compile.c : add checking value
+
+ * iseq.c : ditto
+
+ * yarvcore.c : fix yarv_th_eval prototype declaration
+
+ * yarvtest/yarvtest.rb : use compile instead of parse method
+
+
+2006-07-12(Wed) 15:18:58 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarv_version.h : 0.4.1
+
+ * Changes : ditto
+
+
+2006-07-12(Wed) 13:38:03 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : fix indent
+
+ * gc.h : fix syntax bug
+
+ * thread_pthread.h : vanish warnning message
+
+ * iseq.c : ditto
+
+ * compile.c : ditto
+
+ * thread.c : ditto
+
+ * vm.c : ditto
+
+ * yarvcore.c : prohibit tail call optimization to mark
+ iseq object
+
+ * yarvcore.h : add some allocator function declaration
+
+ * yarvtest/test_eval.rb : remove output
+
+
+2006-07-12(Wed) 05:01:23 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : undef alloc funcs
+
+ * eval_proc.c : ditto (use factory faction)
+
+ * thread.c : ditto
+
+ * vm.c : ditto
+
+ * iseq.c : fix compile option creation
+
+ * rb/allload.rb : use compile_file method
+
+ * rb/compile.rb : ditto
+
+ * rb/parse.rb : ditto
+
+ * template/insnstbl.html : hide mail addr
+
+
+2006-07-11(Tue) 21:34:29 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_dir.rb: new test test_JVN_13947696.
+
+
+2006-07-11(Tue) 21:26:41 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_alias.rb: new test test_JVN_83768862.
+
+
+2006-07-11(Tue) 11:33:49 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix compile error on C90
+
+
+2006-07-11(Tue) 10:40:23 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * disasm.c : removed
+
+ * iseq.c : added
+
+ * common.mk : ditto
+
+ * blockinlining.c : Get*Val => Get*Ptr
+
+ * eval.c : ditto
+
+ * yarvcore.c : ditto
+
+ * eval_proc.c : ditto
+
+ * vm_dump.c : ditto
+
+ * vm_macro.def : ditto
+
+ * signal.c : ditto
+
+ * vm.c : ditto
+
+ * thread.c : ditto
+
+ * compile.c : rename local variable insnobj => iobj
+
+ * compile.c : support yarv_compile_option_t
+
+ * gc.h : added
+
+ * insns.def : use OPT_CHECKED_RUN instead of IGNORE_OPTIMIZE
+
+ * rb/compile.rb : use compile option
+
+ * template/optinsn.inc.tmpl : fix function name
+
+ * vm_opts.h.base : change macros
+
+ * rb/insns2vm.rb : ditto
+
+ * yarv.h : fix yarvcore_eval_parsed parameter type
+
+ * yarvcore.c : fix some interfaces (functions)
+
+ * yarvcore.h : add a type yarv_compile_option_t
+
+
+2006-07-06(Thu) 13:45:20 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * lib/yasm.rb : pass builder object if block arity == 1
+
+
+2006-07-05(Wed) 11:23:50 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * lib/yasm.rb : fix method name
+
+ * vm.c (th_set_top_stack) : check toplevel or not
+
+
+2006-07-04(Tue) 20:05:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/compile.rb : added
+
+ * yarvtest/yarvtest.rb : disable load/store test
+
+
+2006-07-04(Tue) 18:17:15 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix some bugs about load iseq data
+
+ * disasm.c : ditto (store)
+
+ * eval.c (rb_f_local_variables) : fix bugs
+
+ * insns.def : fix otp_ltlt condition bug
+
+ * vm.c : ditto
+
+ * yarvcore.c : rename some functions
+
+ * yarvtest/yarvtest.rb : add iseq load/store tests
+ (to enable this, remove comment)
+
+
+2006-07-03(Mon) 01:54:23 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_thread.c : add parameter "th" to thread_set_raised
+
+ * yarvcore.h : ditto
+
+ * eval_intern.h : ditto
+
+ * eval.c : ditto
+
+ * eval_error.h : declare with ANSI style
+
+ * disasm.c : rename iseq_iseq2simpledata() to iseq_data_to_ary
+
+ * lib/yasm.rb : rename Instruction#to_simpledata to
+ Instruction#to_a
+
+ * yarvcore.c : ditto
+
+ * vm.c : fix bug (Proc.new{|*args| p args}.call(1) #=> 1)
+
+ * yarvtest/test_proc.rb : add a tests for above
+
+
+2006-06-21(Wed) 09:19:06 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : remove yarv_iseq_t#catch_table_ary and
+ add yarv_iseq_t#compile_data#catch_table_ary
+
+ * compile.h : ditto
+
+ * yarvcore.c : ditto
+
+ * yarvcore.h : ditto
+
+ * eval_thread.c : remove unused code
+
+ * thread.c : add rb_gc_mark_threads() (from eval_thread.c)
+
+
+2006-05-31(Wed) 21:26:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y : prohibit tail call optimization to mark vparsr
+ object
+
+
+2006-05-25(Thu) 15:37:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c : support NEW_ATTRASGN node
+
+ * class.c : skip undefined method to collect ([yarv-dev:999])
+
+ * yarvtest/test_class.rb : add a test for above
+
+ * compile.c : fix opt_regexpmatch1 condition
+
+ * lib/monitor.rb : fix [yarv-dev:1009]
+
+ * rb/insns2vm.rb : fix typo
+
+ * thread.c : prohibit unlock by not mutex owner thread
+
+ * vm_opts.h.base : change default option
+
+
+2006-05-18(Thu) 16:00:50 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * intern.h : fix prototype declarations for last re.c change
+
+
+2006-05-18(Thu) 12:12:03 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/runruby.rb : added
+
+ * thread.c (rb_thread_alone) : check if vm->living_threads
+ is available
+
+
+2006-05-18(Thu) 12:05:35 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * signal.c : not mask SIGSEGV
+
+ * thread.c : fix debug output on Win32
+
+ * thread.c, thread_pthread.h : add some debug prints
+
+ * yarvcore.c : mark machine registers on thread_mark
+
+
+2006-05-17(Wed) 18:09:20 +900 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (sys_warning): should not call a vararg function
+ rb_sys_warning() indirectly. [ruby-core:07886]
+
+
+2006-05-17(Wed) 16:41:41 +900 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * re.c (rb_reg_initialize): should not allow modifying literal
+ regexps. frozen check moved from rb_reg_initialize_m as well.
+
+ * re.c (rb_reg_initialize): should not modify untainted objects in
+ safe levels higher than 3.
+
+ * re.c (rb_memcmp): type change from char* to const void*.
+
+ * dir.c (dir_close): should not close untainted dir stream.
+
+ * dir.c (GetDIR): add tainted/frozen check for each dir operation.
+
+
+2006-05-07(Sun) 21:06:28 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c : remove Mutex#unlock_and_stop and add Mutex#sleep
+
+ * lib/monitor.rb : ditto
+
+ * lib/thread.rb : ditto
+
+ * thread_pthread.h : fix stack size
+
+ * thread_win32.h : fix sleep
+
+ * yarvcore.h : disable to use get/setcontext
+
+ * lib/webrick/server.rb : add experimental implementation
+ using thraeds pool
+
+
+2006-05-05(Fri) 13:59:00 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_signal.rb : disable a test
+
+ * thread.c : do trylock before lock on mutex_lock
+
+ * thread_win32.h : use CriticalSection instead of Mutex
+
+
+2006-05-05(Fri) 03:03:22 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : vtune rule make run test.rb
+
+ * disasm.c : fix syntax errors (on VC)
+
+ * yarvcore.c : ditto
+
+ * lib/thread.rb : Mutex#synchronize is defined here
+
+ * lib/*.rb : ditto
+
+ * signal.c : separate pthread or not
+
+ * thread.c : support lightweight wakeup
+
+ * thread_pthread.h : ditto
+
+ * thread_win32.h : ditto
+
+ * yarvcore.h : ditto
+
+ * yarvtest/test_thread.rb : restore last change
+
+
+2006-05-04(Thu) 18:11:43 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_thread.c : remove rb_thread_interrupt
+
+ * intern.h : ditto
+
+ * signal.c : change signal transfer route
+
+ * thread.c : ditto
+
+ * thread_pthread.h : ditto
+
+ * thread_win32.h : ditto
+
+ * yarv.h : support GET_VM()
+
+ * yarvcore.h : change yarv_thread_t/yarv_vm_t structure
+
+ * yarvtest/test_thread.rb : decrease threads to test
+
+
+2006-05-04(Thu) 00:26:18 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.h : experimental support of thread cache
+
+
+2006-04-25(Tue) 22:30:14 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h : remove struct yarv_cmethod_info, add
+ data structure for profiling and extend yarv_control_frame_t
+
+ * vm.c : make pop_frame() and apply above change
+
+ * eval.c : ditto
+
+ * vm_dump.c : ditto
+
+ * vm_macro.def : ditto
+
+ * insns.def (leave): use pop_frame() instead of
+ POP_CONTROL_STACK_FRAME() macro
+
+ * insnhelper.h : remove some macros
+
+ * yarvcore.c : change th_set_top_stack() prototype
+
+
+2006-04-18(Tue) 18:37:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, disasm.c : support export/import exception
+ information
+
+ * yarvcore.h : change "struct catch_table_entry" member variable
+ order
+
+
+2006-04-13(Thu) 17:11:30 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * bignum.c : import ruby 1.9 HEAD (Ruby 1.9.0 2006-04-08)
+
+ * dir.c : ditto
+
+ * enumerator.c : ditto
+
+ * ext/.document : ditto
+
+ * ext/extmk.rb : ditto
+
+ * ext/nkf/lib/kconv.rb : ditto
+
+ * ext/nkf/nkf-utf8/nkf.c : ditto
+
+ * ext/nkf/nkf-utf8/utf8tbl.c : ditto
+
+ * ext/nkf/nkf.c : ditto
+
+ * ext/nkf/test.rb : ditto
+
+ * ext/socket/.cvsignore : ditto
+
+ * ext/win32ole/sample/excel2.rb : ditto
+
+ * ext/win32ole/tests/testOLEMETHOD.rb : ditto
+
+ * ext/win32ole/tests/testOLEPARAM.rb : ditto
+
+ * ext/win32ole/tests/testOLETYPE.rb : ditto
+
+ * ext/win32ole/tests/testOLETYPELIB.rb : ditto
+
+ * ext/win32ole/tests/testOLEVARIABLE.rb : ditto
+
+ * ext/win32ole/tests/testOLEVARIANT.rb : ditto
+
+ * ext/win32ole/tests/testWIN32OLE.rb : ditto
+
+ * ext/win32ole/tests/testall.rb : ditto
+
+ * ext/win32ole/win32ole.c : ditto
+
+ * gc.c : ditto
+
+ * instruby.rb : ditto
+
+ * io.c : ditto
+
+ * lib/delegate.rb : ditto
+
+ * lib/fileutils.rb : ditto
+
+ * lib/find.rb : ditto
+
+ * lib/irb/ruby-lex.rb : ditto
+
+ * lib/mkmf.rb : ditto
+
+ * lib/net/http.rb : ditto
+
+ * lib/open-uri.rb : ditto
+
+ * lib/pathname.rb : ditto
+
+ * lib/rational.rb : ditto
+
+ * lib/rdoc/parsers/parse_rb.rb : ditto
+
+ * lib/rdoc/ri/ri_paths.rb : ditto
+
+ * lib/resolv.rb : ditto
+
+ * lib/test/unit/collector/objectspace.rb : ditto
+
+ * lib/webrick/httpservlet/cgihandler.rb : ditto
+
+ * math.c : ditto
+
+ * mkconfig.rb : ditto
+
+ * object.c : ditto
+
+ * oniguruma.h : ditto
+
+ * pack.c : ditto
+
+ * parse.y : ditto
+
+ * re.c : ditto
+
+ * re.h : ditto
+
+ * regcomp.c : ditto
+
+ * regerror.c : ditto
+
+ * regparse.c : ditto
+
+ * ruby.h : ditto
+
+ * rubytest.rb : ditto
+
+ * runruby.rb : ditto
+
+ * string.c : ditto
+
+ * test/digest/test_digest.rb : ditto
+
+ * test/pathname/test_pathname.rb : ditto
+
+ * test/ruby/envutil.rb : ditto
+
+ * test/ruby/test_float.rb : ditto
+
+ * test/ruby/test_pack.rb : ditto
+
+ * time.c : ditto
+
+ * util.c : ditto
+
+ * version.h : ditto
+
+ * win32/mkexports.rb : ditto
+
+ * win32/resource.rb : ditto
+
+ * win32/win32.c : ditto
+
+
+2006-04-11(Tue) 11:26:53 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/yasm.rb : move to lib/yasm.rb
+
+
+2006-04-09(Sun) 03:04:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : change to accept method iseq object when loading from
+ simple data
+
+ * yarvcore.c : add a debug output
+
+ * rb/yasm.rb : change some interfaces
+
+
+2006-04-07(Fri) 20:25:03 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix miss about range of catch "next"
+
+ * eval.c : add braces
+
+
+2006-04-07(Fri) 11:09:43 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : fix some make rules
+
+ * insns.def : rename some instructions name
+
+ * rb/insns2vm.rb : change some operand type name
+
+ * vm_evalbody.h : ditto
+
+ * template/insns.inc.tmpl : add YARV_MAX_INSTRUCTION_SIZE macro
+
+ * compile.c, disasm.c, yarvcore.c : support load/store iseq from/to simple
+ data structure such as array, literals, and so on
+
+ * rb/yasm.rb : supported
+
+ * vm.c : change interface of eval_define_method
+
+ * yarvcore.h : remove unused externals
+
+
+2006-03-08(Wed) 10:31:29 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/delegate.rb (DelegateClass): do not delegate #send and
+ #funcall.
+
+
+2006-02-27(Mon) 22:39:17 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/thread.rb: last commit causes busy loop, revert it. [yarv-dev:990]
+
+ * lib/thread.rb: non_block=true wrongly caused ThreadError.
+
+
+2006-02-27(Mon) 21:33:49 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : fix to display command line
+
+ * compile.c : fix comparison between a pointer and 0
+
+ * debug.c : fix to output stder
+
+ * disasm.c : add debug function
+
+ * vm_dump.c : ditto
+
+ * eval_proc.c : fix to skip class definition
+
+ * ruby.h : fix T_VALUE to T_VALUES
+
+ * gc.c : ditto
+
+ * node.h : fix prototypes
+
+ * vm.c : add VM_DEBUG macro
+
+ * vm.c : fix compile error on VC++
+
+ * vm.c : fix to inherit last lfp[0] on th_set_finish_env
+
+ * vm.c : fix to add one svar location for any frame
+
+ * vm_macro.def : ditto
+
+ * yarvcore.h : add YARV_CLASS_SPECIAL_P() and YARV_BLOCK_PTR_P()
+
+ * rdoc/ : removed
+
+ * insns.def : fix to propagete throw state
+
+
+2006-02-27(Mon) 13:54:47 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * ext/syslog: imported from Ruby CVS trunk HEAD.
+
+ * ext/racc: ditto.
+
+
+2006-02-27(Mon) 12:47:10 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * parse.y: follow coding style change.
+
+
+2006-02-27(Mon) 11:53:07 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/README: imported from Ruby CVS trunk HEAD.
+
+ * lib/gserver.rb: ditto.
+
+ * lib/readbytes.rb: ditto.
+
+ * lib/parsearg.rb: ditto.
+
+ * lib/racc: ditto.
+
+ * lib/rinda: ditto.
+
+
+2006-02-27(Mon) 11:27:19 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/thread.rb (Queue#pop): faster code. [yarv-dev:973]
+
+ * lib/thread.rb (Queue#pop): avoid to push same thread in to
+ @waiting.
+
+
+2006-02-23(Thu) 23:32:53 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/open3.rb: imported from Ruby CVS trunk HEAD (rev 1.12).
+
+
+2006-02-23(Thu) 15:10:09 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : support rb_frame_self()
+
+ * eval_intern.h (th_get_ruby_level_cfp) : return 0 if no cfp
+
+ * eval_load.c : comment out scope set
+
+ * yarvcore.c : fix to initialize/free process of iseq
+
+ * vm.c (th_invoke_proc) : fix to set special cref always
+
+ * yarvtest/test_proc.rb : add a test for above
+
+
+2006-02-22(Wed) 23:33:47 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : add rule "runruby"
+
+ * eval_thread.c : remove obsolete comment
+
+ * eval.c : remove unused functions
+
+ * signal.c : ditto
+
+ * gc.c : add rb_register_mark_object() and use it
+
+ * eval_load.c : ditto
+
+ * eval_proc.c : ditto
+
+ * ext/etc/etc.c : ditto
+
+ * ext/win32ole/win32ole.c : ditto
+
+ * ruby.h : ditto
+
+ * yarvcore.h : ditto
+
+ * thread.c : add rb_thread_run_parallel()
+
+ * yarvcore.c : change bootstrap
+
+
+2006-02-22(Wed) 19:27:33 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * ext/win32ole/.cvsignore : removed
+
+ * ext/win32ole/.document : ditto
+
+
+2006-02-22(Wed) 18:17:06 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : set Binding as YARVCore::VM::Binding
+
+
+2006-02-22(Wed) 12:54:45 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * ChangeLog : remove needless line
+
+
+2006-02-22(Wed) 12:49:02 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rubysig.h : remove CHECK_INTS
+
+ * eval.c : ditto
+
+ * eval_load.c : ditto
+
+ * ext/readline/readline.c : ditto
+
+ * thread.c : ditto
+
+ * win32/win32.c : ditto
+
+ * yarv_version.h : 0.4.0
+
+ * Changes : ditto
+
+
+2006-02-22(Wed) 11:36:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test.rb : removed
+
+
+2006-02-22(Wed) 11:12:17 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * README : renewed
+
+ * version.c : fixed version message
+
+ * yarvext/ : removed
+
+
+2006-02-22(Wed) 10:33:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * lib/.document : imported from Ruby 1.9 HEAD
+
+ * .document : ditto
+
+ * ext/.document : ditto
+
+ * lib/ftools.rb : ditto
+
+ * lib/rdoc/ : ditto
+
+ * eval_thread.c : remove unused functions
+
+ * process.c : ditto
+
+ * rb/insns2vm.rb : compare modified date of vm_opts.h and
+ vm_opts.h.base
+
+ * ruby.h : rename RValue to RValues
+
+ * gc.c : ditto
+
+ * vm.c : ditto
+
+
+2006-02-22(Wed) 06:32:10 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in : remove last commit
+
+
+2006-02-22(Wed) 06:18:53 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in : add default program prefix "-yarv"
+
+
+2006-02-22(Wed) 06:11:36 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : change default rule (same as HEAD)
+
+ * configure : removed
+
+ * eval.c : remove last commit
+
+ * vm.c : fix stack traverse
+
+ * yarvcore.c : initialize top of control frame
+
+ * version.c : 2.0
+
+ * version.h : ditto
+
+
+2006-02-22(Wed) 04:50:42 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : change to rewind C level control frame
+
+ * vm.c : change to initialize cfp#proc and fix comparison of
+ cfp and limit_cfp
+
+ * yarvcore.c : remove last commit
+
+
+2006-02-22(Wed) 03:25:56 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : initialize each stack of thread
+
+
+2006-02-22(Wed) 00:02:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c : fix synchornize return value ([yarv-dev:957])
+ and some synchornization error
+
+ * thread_pthread.h : add debug helper function
+
+
+2006-02-21(Tue) 20:54:28 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : fix place of rb_thread_terminate_all()
+
+ * eval_thread.c : remove unused functions
+
+ * yarv.h : remove GET_VM()
+
+ * eval_jump.h : ditto
+
+ * insns.def : ditto
+
+ * vm_dump.c :
+
+ * intern.h : change rb_thread_signal_raise/exit interface
+
+ * signal.c : ditto
+
+ * thread.c : ditto
+
+ * test/ruby/test_beginendblock.rb : use block with IO.popen
+
+ * thread_pthread.h : fix interrupt process
+
+ * thread_win32.h : ditto
+
+ * yarvcore.c : fix thread free process
+
+ * yarvcore.h : remove yarv_vm_t#thread_critical, etc
+
+
+2006-02-21(Tue) 12:42:44 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_thread.c : remove unused function rb_thread_schedule()
+
+ * thread.c : rename yarv_thread_schedule to rb_thread_schedule()
+
+ * thread.c, eval.c : fix to terminate all thread and barrier at
+ eval.c#ruby_cleanup()
+
+ * thread_win32.h : remove native_thread_cleanup()
+
+ * thread_pthread.h : ditto
+
+ * yarvcore.c : ditto
+
+ * yarvtest/test_thread.rb : separete assersions to tests
+
+
+2006-02-21(Tue) 02:13:33 +900 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (f_arglist): should set command_start = Qtrue for
+ command body. [ruby-talk:180648]
+
+
+2006-02-20(Mon) 20:41:07 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c : fix to synchronize signal_thread_list access
+ and fix typo
+
+
+2006-02-20(Mon) 17:54:58 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_proc.c : remove unused Binding functions and
+ set is_lambda of Proc used define_method
+
+ * yarvcore.c : support Proc#dup/clone, Binding#dup/clone
+
+ * sample/test.rb : remove unsupport features (Proc as Binding)
+
+
+2006-02-20(Mon) 16:28:59 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : add a dependency to vm.c on eval_intern.h
+
+ * eval_intern.h : fix to initialize tag->tag
+
+ * yarvtest/test_jump.rb : add tests for above
+
+ * eval_jump.h : use local variable
+
+
+2006-02-20(Mon) 15:13:24 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm3_thread_create_join.rb : added
+
+ * test/yaml/test_yaml.rb : imported from Ruby CVS trunk HEAD
+
+
+2006-02-20(Mon) 14:49:46 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/yaml.rb: imported from Ruby CVS trunk HEAD.
+
+ * lib/yaml: ditto.
+
+ * ext/syck: ditto.
+
+
+2006-02-20(Mon) 13:58:03 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support block parameter which is NODE_ATTRASGN
+
+ * yarvtest/test_block.rb : add tests for above
+
+ * compile.c : fix NODE_DASGN_CURR level check
+
+ * compile.c : fix "||=" (at firtst, check "defined? val")
+
+ * compile.c : fix NODE_MATCH3 (permute receiver and argument)
+
+ * yarvtest/test_bin.rb : add tests for above
+
+ * eval.c : add rb_each()
+
+ * test/ruby/test_signal.rb : increment a timeout value
+
+ * thread.c, yarvcore.h : fix "join" flow
+
+ * thread_pthread.h : ditto
+
+ * thread_win32.h : ditto
+
+ * yarvtest/test_thread.rb : add a test for above
+
+ * vm.h, vm.c, vm_dump.c, insns.def : add FRAME_MAGIC_LAMBDA and
+ support return from lambda (especially retrun from method defined
+ by "define_method")
+
+ * yarvtest/test_method.rb : add a test for above
+
+ * yarvcore.c : remove unused functions
+
+
+2006-02-20(Mon) 11:22:31 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_eval.rb: now Object#funcall is defined.
+
+
+2006-02-20(Mon) 11:04:32 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/irb/lc/ja/CVS: removed.
+
+
+2006-02-20(Mon) 10:55:59 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/mutex_m.rb: imported from Ruby CVS trunk HEAD.
+
+ * lib/observer.rb: ditto.
+
+ * lib/wsdl: ditto.
+
+ * lib/monitor.rb: ditto (removing Thread.critical=).
+
+ * lib/xsd: ditto.
+
+ * lib/soap: ditto.
+
+ * lib/drb.rb: ditto.
+
+ * lib/drb: ditto.
+
+
+2006-02-20(Mon) 10:49:31 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * yarvcore.c (Init_yarvcore): fix typo (duo -> dup).
+
+
+2006-02-19(Sun) 01:27:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : "return" from lambda{} break block
+
+ * eval.c : Unsupport Proc as Binding
+
+ * test/ruby/test_eval.rb : apply above changes
+
+ * yarvcore.c : remove unused function yarv_yield_values()
+
+
+2006-02-18(Sat) 03:19:36 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, insns.def : fix passing value when thread killed
+
+ * yarvtest/test_thread.rb : add tests for above
+
+
+2006-02-19(Sun) 01:19:42 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/thread.rb (SizedQueue): didn't work. This patch was
+ contributed by yukimizake. [yarv-dev:916]
+
+
+2006-02-18(Sat) 03:19:36 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, insns.def : fix passing value when thread killed
+
+ * yarvtest/test_thread.rb : add tests for above
+
+
+2006-02-18(Sat) 02:40:18 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm.c, vm_macro.def : change BMETHOD algorithm
+ ([yarv-dev:914])
+
+ * yarvtest/test_class.rb : add a test for above
+
+
+2006-02-17(Fri) 23:59:51 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, yarv.h : change th_invoke_proc() interface
+
+ * eval_proc.c : ditto
+
+ * signal.c : ditto
+
+ * thread.c : ditto
+
+ * yarvcore.c : ditto
+
+ * vm_macro.def : ditto and fix NODE_BMETHOD call
+
+ * vm.c : change name ("th_set_env()" to "push_frame()") and
+ change interface
+
+ * insns.def : ditto
+
+ * eval.c : remove proc_jump_error()
+
+ * benchmark/bm_app_answer.rb : added
+
+ * vm_opts.h.base : add optimize option
+
+
+2006-02-17(Fri) 13:37:57 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, ruby.h : add rb_errinfo()
+
+ * eval_error.h (error_pos) : fix process order
+
+ * bin/erb : imported from ruby 1.9
+
+ * bin/irb : ditto
+
+ * bin/rdoc : ditto
+
+ * bin/ri : ditto
+
+ * bin/testrb : ditto
+
+ * ext/curses/.cvsignore : ditto
+
+ * ext/curses/curses.c : ditto
+
+ * ext/curses/depend : ditto
+
+ * ext/curses/extconf.rb : ditto
+
+ * ext/curses/hello.rb : ditto
+
+ * ext/curses/mouse.rb : ditto
+
+ * ext/curses/rain.rb : ditto
+
+ * ext/curses/view.rb : ditto
+
+ * ext/curses/view2.rb : ditto
+
+ * ext/fcntl/.cvsignore : ditto
+
+ * ext/fcntl/depend : ditto
+
+ * ext/fcntl/extconf.rb : ditto
+
+ * ext/fcntl/fcntl.c : ditto
+
+ * ext/readline/README : ditto
+
+ * ext/readline/README.ja : ditto
+
+ * ext/readline/depend : ditto
+
+ * ext/readline/extconf.rb : ditto
+
+ * ext/readline/readline.c : ditto
+
+ * ext/win32ole/.document : ditto
+
+ * ext/zlib/doc/zlib.rd : ditto
+
+ * ext/zlib/extconf.rb : ditto
+
+ * ext/zlib/zlib.c : ditto
+
+ * lib/cgi/.document : ditto
+
+ * lib/cgi/session.rb : ditto
+
+ * lib/cgi/session/pstore.rb : ditto
+
+ * lib/shell/builtin-command.rb : ditto
+
+ * lib/shell/command-processor.rb : ditto
+
+ * lib/shell/error.rb : ditto
+
+ * lib/shell/filter.rb : ditto
+
+ * lib/shell/process-controller.rb : ditto
+
+ * lib/shell/system-command.rb : ditto
+
+ * lib/shell/version.rb : ditto
+
+ * lib/xmlrpc/.document : ditto
+
+ * lib/xmlrpc/README.rdoc : ditto
+
+ * lib/xmlrpc/README.txt : ditto
+
+ * lib/xmlrpc/base64.rb : ditto
+
+ * lib/xmlrpc/client.rb : ditto
+
+ * lib/xmlrpc/config.rb : ditto
+
+ * lib/xmlrpc/create.rb : ditto
+
+ * lib/xmlrpc/datetime.rb : ditto
+
+ * lib/xmlrpc/httpserver.rb : ditto
+
+ * lib/xmlrpc/marshal.rb : ditto
+
+ * lib/xmlrpc/parser.rb : ditto
+
+ * lib/xmlrpc/server.rb : ditto
+
+ * lib/xmlrpc/utils.rb : ditto
+
+ * rdoc/README : ditto
+
+ * rdoc/code_objects.rb : ditto
+
+ * rdoc/diagram.rb : ditto
+
+ * rdoc/dot/dot.rb : ditto
+
+ * rdoc/generators/chm_generator.rb : ditto
+
+ * rdoc/generators/html_generator.rb : ditto
+
+ * rdoc/generators/ri_generator.rb : ditto
+
+ * rdoc/generators/template/chm/chm.rb : ditto
+
+ * rdoc/generators/template/html/hefss.rb : ditto
+
+ * rdoc/generators/template/html/html.rb : ditto
+
+ * rdoc/generators/template/html/kilmer.rb : ditto
+
+ * rdoc/generators/template/html/old_html.rb : ditto
+
+ * rdoc/generators/template/html/one_page_html.rb : ditto
+
+ * rdoc/generators/template/xml/rdf.rb : ditto
+
+ * rdoc/generators/template/xml/xml.rb : ditto
+
+ * rdoc/generators/xml_generator.rb : ditto
+
+ * rdoc/markup/sample/rdoc2latex.rb : ditto
+
+ * rdoc/markup/sample/sample.rb : ditto
+
+ * rdoc/markup/simple_markup.rb : ditto
+
+ * rdoc/markup/simple_markup/fragments.rb : ditto
+
+ * rdoc/markup/simple_markup/inline.rb : ditto
+
+ * rdoc/markup/simple_markup/lines.rb : ditto
+
+ * rdoc/markup/simple_markup/preprocess.rb : ditto
+
+ * rdoc/markup/simple_markup/to_flow.rb : ditto
+
+ * rdoc/markup/simple_markup/to_html.rb : ditto
+
+ * rdoc/markup/simple_markup/to_latex.rb : ditto
+
+ * rdoc/markup/test/AllTests.rb : ditto
+
+ * rdoc/markup/test/TestInline.rb : ditto
+
+ * rdoc/markup/test/TestParse.rb : ditto
+
+ * rdoc/options.rb : ditto
+
+ * rdoc/parsers/parse_c.rb : ditto
+
+ * rdoc/parsers/parse_f95.rb : ditto
+
+ * rdoc/parsers/parse_rb.rb : ditto
+
+ * rdoc/parsers/parse_simple.rb : ditto
+
+ * rdoc/parsers/parserfactory.rb : ditto
+
+ * rdoc/rdoc.rb : ditto
+
+ * rdoc/ri/ri_cache.rb : ditto
+
+ * rdoc/ri/ri_descriptions.rb : ditto
+
+ * rdoc/ri/ri_display.rb : ditto
+
+ * rdoc/ri/ri_driver.rb : ditto
+
+ * rdoc/ri/ri_formatter.rb : ditto
+
+ * rdoc/ri/ri_options.rb : ditto
+
+ * rdoc/ri/ri_paths.rb : ditto
+
+ * rdoc/ri/ri_reader.rb : ditto
+
+ * rdoc/ri/ri_util.rb : ditto
+
+ * rdoc/ri/ri_writer.rb : ditto
+
+ * rdoc/template.rb : ditto
+
+ * rdoc/tokenstream.rb : ditto
+
+ * rdoc/usage.rb : ditto
+
+ * test/xmlrpc/data/bug_bool.expected : ditto
+
+ * test/xmlrpc/data/bug_bool.xml : ditto
+
+ * test/xmlrpc/data/bug_cdata.expected : ditto
+
+ * test/xmlrpc/data/bug_cdata.xml : ditto
+
+ * test/xmlrpc/data/bug_covert.expected : ditto
+
+ * test/xmlrpc/data/bug_covert.xml : ditto
+
+ * test/xmlrpc/data/datetime_iso8601.xml : ditto
+
+ * test/xmlrpc/data/fault.xml : ditto
+
+ * test/xmlrpc/data/value.expected : ditto
+
+ * test/xmlrpc/data/value.xml : ditto
+
+ * test/xmlrpc/data/xml1.expected : ditto
+
+ * test/xmlrpc/data/xml1.xml : ditto
+
+ * test/xmlrpc/test_datetime.rb : ditto
+
+ * test/xmlrpc/test_features.rb : ditto
+
+ * test/xmlrpc/test_marshal.rb : ditto
+
+ * test/xmlrpc/test_parser.rb : ditto
+
+ * test/xmlrpc/test_webrick_server.rb : ditto
+
+ * test/xmlrpc/webrick_testing.rb : ditto
+
+ * test/zlib/test_zlib.rb : ditto
+
+
+2006-02-17(Fri) 09:41:35 +900 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * thread.c (sleep_timeval): sleep should always sleep for
+ specified amount of time. [ruby-talk:180067]
+
+
+2006-02-17(Fri) 02:20:32 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_safe.h, ruby.h : remove ruby_safe_level and add
+ rb_safe_level() and rb_set_safe_level_force()
+
+ * eval.c : use above functions
+
+ * eval_jump.h : ditto
+
+ * eval_load.c : ditto
+
+ * eval_method.h : ditto
+
+ * eval_proc.c : ditto
+
+ * eval_thread.c : ditto
+
+ * gc.c : ditto
+
+ * signal.c : ditto
+
+ * variable.c : ditto
+
+ * ext/win32ole/win32ole.c : ditto
+
+ * vm.c (th_invoke_proc) : save and restore safe level
+
+ * yarvtest/test_proc.rb : add tests for above
+
+ * thread.c : remove unused functions
+
+
+2006-02-17(Fri) 01:08:23 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def : remove a setspecial second unused operand
+
+ * eval_load.c : remove unused variable th
+
+ * eval_proc.c, yarvcore.c : remove some functions from eval_proc.c
+ and move to yarvcore.c
+
+ * insns.def : fix to delete warnings
+
+ * sample/test.rb : comment out Proc#clone tests
+
+ * version.c : add constant RUBY_VM_DATE
+
+ * vm.c : fix some functions
+
+
+2006-02-16(Thu) 22:58:27 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm.c : use th_yield_setup_args at yield and Proc#call
+
+
+2006-02-16(Thu) 19:51:52 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix analysis of block parameter
+
+ * disasm.c : remove rb_bug() (temporarily)
+
+ * insns.def, vm.c : fix passing block parameter
+
+ * sample/test.rb : add "Proc = YARVCore::VM::Proc"
+
+ * test/ruby/test_readpartial.rb : disable on mswin32
+
+ * test/socket/test_tcp.rb : ditto
+
+ * thread.c : fix syntax error (for non GCC)
+
+
+2006-02-15(Wed) 22:34:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h : move rb_clear_cache_by_id position
+
+ * thread.c : fix Thread#kill
+
+ * test/ruby/test_readpartial.rb : enable tests except cygwin version
+
+ * test/ruby/test_signal.rb : ditto and enable timeout
+
+
+2006-02-15(Wed) 22:13:29 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/runit: forgot to commit.
+
+
+2006-02-15(Wed) 22:12:25 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/weakref.rb: do not use Thread.critical=.
+
+ * lib/singleton.rb: ditto.
+
+ * lib/timeout.rb: ditto.
+
+ * lib/thread.rb: ditto.
+
+ * test/inlinetest.rb: forgot to commit.
+
+
+2006-02-15(Wed) 21:34:17 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/test_pp.rb: imported from Ruby CVS trunk HEAD.
+
+ * test/test_shellwords.rb: ditto.
+
+ * test/test_set.rb: ditto.
+
+ * test/test_time.rb: ditto.
+
+ * test/test_ipaddr.rb: ditto.
+
+ * test/test_prettyprint.rb: ditto.
+
+ * test/test_tsort.rb: ditto.
+
+ * test/strscan: ditto.
+
+ * test/testunit: ditto.
+
+
+2006-02-15(Wed) 20:03:21 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h : duplicate NODE_METHOD at make an alias
+
+ * yarvtest/test_method.rb : add a test for above
+
+
+2006-02-15(Wed) 19:48:59 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/rss: imported from Ruby CVS trunk HEAD.
+
+
+2006-02-15(Wed) 19:47:51 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, compile.c, vm.c : remove methoddef, singletonmethoddef
+ instructions and make new insn definemethod
+
+ * yarvcore.c : set toplevel visibility to private
+
+
+2006-02-15(Wed) 17:39:16 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h :
+
+ * eval_jump.h, vm.c : localjump_error() and jump_tag_but_local_jump()
+ move to th_localjump_error and th_jump_tag_but_local_jump at vm.c
+
+ * eval.c : ditto
+
+ * eval_load.c : ditto
+
+ * insns.def : ditto
+
+ * vm.c : ditto
+
+ * vm.c (th_make_jump_tag_but_local_jump) : added
+
+ * opt_insn_unif.def : fix indnet (revert change)
+
+ * opt_operand.def : ditto
+
+ * rb/insns2vm.rb : fix error message
+
+ * thread.c : raise exception at join if illegal local jump
+
+
+2006-02-15(Wed) 14:21:45 +900 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ChangeLog: add local variables line to support Emacs.
+
+ * eval.c (rb_obj_instance_exec): add new method from 1.9.
+
+ * eval.c (rb_mod_module_exec): ditto.
+
+ * eval.c (yield_under_i): should not pass self as an argument to
+ the block for instance_eval. [ruby-core:07364]
+
+ * eval.c (rb_obj_instance_eval): should be no singleton classes for
+ true, false, and nil. [ruby-dev:28186]
+
+
+2006-02-14(Tue) 19:30:20 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * array.c : fix indent
+
+ * eval.c : fix block_given
+
+ * gc.c : add STACK_START and use it as a substitute for
+ rb_gc_stack_start
+
+ * vm.c : fix to raise error if th_yield doesn't have block given
+
+ * yarvcore.c : fix to skip iseq mark array at ObjectSpace.each_object
+
+
+2006-02-14(Tue) 18:15:03 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * configure.in : enable pthread by deafult
+
+ * ascii.c : import ruby 1.9 HEAD
+
+ * bignum.c : ditto
+
+ * compar.c : ditto
+
+ * configure : ditto
+
+ * defines.h : ditto
+
+ * dln.c : ditto
+
+ * dln.h : ditto
+
+ * enum.c : ditto
+
+ * enumerator.c : ditto
+
+ * euc_jp.c : ditto
+
+ * ext/win32ole/tests/testWIN32OLE.rb : ditto
+
+ * ext/win32ole/win32ole.c : ditto
+
+ * file.c : ditto
+
+ * hash.c : ditto
+
+ * io.c : ditto
+
+ * lex.c : ditto
+
+ * lib/irb/init.rb : ditto
+
+ * lib/rexml/document.rb : ditto
+
+ * main.c : ditto
+
+ * marshal.c : ditto
+
+ * math.c : ditto
+
+ * missing.h : ditto
+
+ * object.c : ditto
+
+ * oniguruma.h : ditto
+
+ * pack.c : ditto
+
+ * process.c : ditto
+
+ * random.c : ditto
+
+ * range.c : ditto
+
+ * rb/ir.rb : ditto
+
+ * re.c : ditto
+
+ * regcomp.c : ditto
+
+ * regenc.c : ditto
+
+ * regenc.h : ditto
+
+ * regerror.c : ditto
+
+ * regexec.c : ditto
+
+ * regint.h : ditto
+
+ * regparse.c : ditto
+
+ * regparse.h : ditto
+
+ * ruby.c : ditto
+
+ * ruby.h : ditto
+
+ * rubyio.h : ditto
+
+ * sjis.c : ditto
+
+ * sprintf.c : ditto
+
+ * st.c : ditto
+
+ * st.h : ditto
+
+ * struct.c : ditto
+
+ * test/ruby/envutil.rb : ditto
+
+ * test/ruby/test_struct.rb : ditto
+
+ * time.c : ditto
+
+ * utf8.c : ditto
+
+ * util.c : ditto
+
+ * util.h : ditto
+
+ * version.h : ditto
+
+ * win32/Makefile.sub : ditto
+
+ * win32/win32.c : ditto
+
+
+2006-02-14(Tue) 16:40:01 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c, eval_proc.c : fix rb_proc_arity
+
+ * eval.c : declare funcall same as send (temporarily)
+
+ * lib/thread.rb : added
+
+ * test/pathname/test_pathname.rb : imported from ruby 1.9
+
+ * test/scanf/data.txt : ditto
+
+ * test/scanf/test_scanf.rb : ditto
+
+ * test/scanf/test_scanfblocks.rb : ditto
+
+ * test/scanf/test_scanfio.rb : ditto
+
+ * test/socket/test_socket.rb : ditto
+
+ * test/socket/test_tcp.rb : ditto
+
+ * test/socket/test_udp.rb : ditto
+
+ * test/socket/test_unix.rb : ditto
+
+ * test/stringio/test_stringio.rb : ditto
+
+ * test/uri/test_common.rb : ditto
+
+ * test/uri/test_ftp.rb : ditto
+
+ * test/uri/test_generic.rb : ditto
+
+ * test/uri/test_http.rb : ditto
+
+ * test/uri/test_ldap.rb : ditto
+
+ * test/uri/test_mailto.rb : ditto
+
+
+2006-02-14(Tue) 15:59:28 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c : Change Thread.critical warnning message
+
+ * lib/webrick.rb : imported from ruby 1.9
+
+ * lib/webrick/accesslog.rb : ditto
+
+ * lib/webrick/cgi.rb : ditto
+
+ * lib/webrick/compat.rb : ditto
+
+ * lib/webrick/config.rb : ditto
+
+ * lib/webrick/cookie.rb : ditto
+
+ * lib/webrick/htmlutils.rb : ditto
+
+ * lib/webrick/httpauth.rb : ditto
+
+ * lib/webrick/httpauth/authenticator.rb : ditto
+
+ * lib/webrick/httpauth/basicauth.rb : ditto
+
+ * lib/webrick/httpauth/digestauth.rb : ditto
+
+ * lib/webrick/httpauth/htdigest.rb : ditto
+
+ * lib/webrick/httpauth/htgroup.rb : ditto
+
+ * lib/webrick/httpauth/htpasswd.rb : ditto
+
+ * lib/webrick/httpauth/userdb.rb : ditto
+
+ * lib/webrick/httpproxy.rb : ditto
+
+ * lib/webrick/httprequest.rb : ditto
+
+ * lib/webrick/httpresponse.rb : ditto
+
+ * lib/webrick/https.rb : ditto
+
+ * lib/webrick/httpserver.rb : ditto
+
+ * lib/webrick/httpservlet.rb : ditto
+
+ * lib/webrick/httpservlet/abstract.rb : ditto
+
+ * lib/webrick/httpservlet/cgi_runner.rb : ditto
+
+ * lib/webrick/httpservlet/cgihandler.rb : ditto
+
+ * lib/webrick/httpservlet/erbhandler.rb : ditto
+
+ * lib/webrick/httpservlet/filehandler.rb : ditto
+
+ * lib/webrick/httpservlet/prochandler.rb : ditto
+
+ * lib/webrick/httpstatus.rb : ditto
+
+ * lib/webrick/httputils.rb : ditto
+
+ * lib/webrick/httpversion.rb : ditto
+
+ * lib/webrick/log.rb : ditto
+
+ * lib/webrick/server.rb : ditto
+
+ * lib/webrick/ssl.rb : ditto
+
+ * lib/webrick/utils.rb : ditto
+
+ * lib/webrick/version.rb : ditto
+
+
+2006-02-14(Tue) 14:55:51 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def : support "defined?($1)", ...
+
+ * yarvtest/test_syntax.rb : add a test for above
+
+ * rb/makedocs.rb : fix template directory path
+
+ * vm.c : fix to handle break from proc
+
+
+2006-02-14(Tue) 12:42:59 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : fix rb_iterate hook
+
+ * yarvtest/test_block.rb : add a tests for above
+
+ * vm.c : remove unused comment
+
+
+2006-02-14(Tue) 12:01:06 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : fix to check passed block at block_given_p
+
+ * eval_proc.c : fix to pass block at Method#call
+
+ * runruby.rb : fix to apply ruby
+
+ * test/runner.rb : GC.stress (comment out)
+
+ * vm.c : fix indnet
+
+
+2006-02-14(Tue) 08:04:33 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/tempfile.rb: use Mutex instead of Thread.critical.
+
+ * lib/rss/dublincore.rb: |x,| -> |x,_| to avoid YARV bug (tmp).
+
+ * lib/rexml: imported from ruby CVS trunk HEAD.
+
+ * test/digest: ditto.
+
+ * test/fileutils: ditto.
+
+ * test/ostruct: ditto.
+
+ * test/erb: ditto.
+
+ * test/optparse: ditto.
+
+ * test/ruby/test_signal.rb: turn off a test to avoid unknown error
+ (tmp).
+
+
+2006-02-14(Tue) 07:52:03 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/digest: imported from ruby CVS trunk HEAD.
+
+ * test/fileutils: ditto.
+
+ * test/ostruct: ditto.
+
+ * test/erb: ditto.
+
+ * test/optparse: ditto.
+
+
+2006-02-14(Tue) 06:26:21 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, parse.y : support BEGIN{} (remove local scope)
+
+ * test/ruby/beginmainend.rb : fix to apply YARV's specification
+
+ * test/ruby/test_beginendblock.rb : enable BEGIN{} test
+
+ * signal.c : exit at double segv
+
+ * insns.def (preexe) : remove instruction "preexe"
+
+
+2006-02-14(Tue) 05:53:56 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * eval.c (ruby_cleanup): th->errinfo contains a NODE while
+ break'ing, check it before refering klass.
+
+
+2006-02-14(Tue) 05:45:07 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : fix stack calc of send
+
+ * sample/test.rb : remove SEGV causing code
+
+
+2006-02-14(Tue) 02:24:21 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_module.rb: list order is not a matter.
+
+ * test/csv: imported from ruby CVS trunk HEAD.
+
+
+2006-02-14(Tue) 02:06:25 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_beginendblock.rb: unlock tests.
+
+ * test/ruby/beginmainend.rb: new file (imported from ruby CVS
+ trunk HEAD).
+
+ * test/ruby/endblockwarn.rb: new file (imported from ruby CVS
+ trunk HEAD).
+
+ * test/ruby/test_file.rb: new file (imported from ruby CVS trunk
+ HEAD).
+
+
+2006-02-14(Tue) 01:42:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * error.c : fix include file positon
+
+ * test/ruby/test_signal.rb : skip test_exit_action on cygwin
+
+
+2006-02-14(Tue) 01:36:57 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_class.rb: new file (imported from rubicon).
+
+
+2006-02-14(Tue) 01:32:23 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_module.rb: ignore PP mixins.
+
+
+2006-02-14(Tue) 01:24:56 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_lambda.rb: removed (->(){...} syntax is
+ obsolete).
+
+
+2006-02-14(Tue) 01:20:54 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_module.rb: import many tests from rubicon.
+
+
+2006-02-14(Tue) 01:06:57 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix to avoid stack consistency error
+
+ * yarvtest/test_exception.rb : add a test for above
+
+
+2006-02-14(Tue) 00:42:47 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, vm_macro.def : rename VM_CALL_SUPER to VM_CALL_SUPER_BIT
+
+ * insns.def (send) : set a flag of super as fcall
+
+ * yarvtest/test_class.rb : add a test for above
+
+
+2006-02-14(Tue) 00:31:24 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_eval.rb: fix typo.
+
+ * test/ruby/test_signal.rb: unlock tests.
+
+
+2006-02-13(Mon) 23:53:27 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm_macro.def : fix NODE_ZSUPER dispatch and
+ fix error message when super without suitable method ([yarv-dev:846])
+
+ * yarvcore.h : add VM_CALL_SUPER definition
+
+ * yarvtest/test_method.rb : add a test of Module#private_class_method
+
+
+2006-02-13(Mon) 22:49:42 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : traverse all iseq to find super method ([yarv-dev:859])
+
+ * yarvtest/test_class.rb : add a test for above
+
+ * yarvcore.c : add clear iseq->defined_method_id
+
+ * signal.c : fix to prohibit double segv handler kicked
+
+
+2006-02-13(Mon) 22:09:12 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support NODE_DECL, NODE_CLASS with NODE_CLON3 prefix
+
+ * yarvtest/test_class.rb : add tests for above
+
+
+2006-02-13(Mon) 21:20:57 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix indent
+
+ * compile.c : fix to prohibit "redo" from eval expression
+
+
+2006-02-13(Mon) 20:36:06 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : fix constant search bug ([yarv-dev:788])
+
+ * yarvtest/test_class.rb : add a test of [yarv-dev:788]
+
+
+2006-02-13(Mon) 18:09:28 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_clone.rb : enable tests with Class#clone
+
+ * test/ruby/test_marshal.rb : ditto
+
+
+2006-02-13(Mon) 17:42:37 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * class.c : support Class#clone
+
+ * compile.c, insns.def : remove popcref
+
+ * yarvcore.h, vm.c, insns.def : remove yarv_thread_t#cref_stack
+
+ * eval.c, eval_intern.h, eval_load.c : ditto
+
+ * yarvtest/test_class.rb : add tests for singleton class
+
+ * gc.c : remove "FRAME *" unused variable
+
+ * insnhelper.h : fix COPY_CREF
+
+ * rb/mklog.rb : add default message
+
+ * vm_macro.def : support NODE_ZSUPER as method type
+
+
+2006-02-13(Mon) 00:11:17 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c : refoctoring with CFLAGS+=-Wunused
+
+ * eval.c : ditto
+
+ * eval_intern.h : ditto
+
+ * eval_load.c : ditto
+
+ * eval_method.h : ditto
+
+ * eval_proc.c : ditto
+
+ * eval_thread.c : ditto
+
+ * insns.def : ditto
+
+ * parse.y : ditto
+
+ * thread.c : ditto
+
+ * vm.c : ditto
+
+
+2006-02-13(Mon) 02:32:34 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_const.rb: show better message.
+
+ * test/ruby/test_eval.rb: ditto.
+
+ * test/ruby/test_module.rb: new file.
+
+
+2006-02-12(Sun) 22:22:35 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * array.c : revert last commit
+
+ * ascii.c : ditto
+
+ * bignum.c : ditto
+
+ * class.c : ditto
+
+ * compar.c : ditto
+
+ * defines.h : ditto
+
+ * dir.c : ditto
+
+ * dln.c : ditto
+
+ * dln.h : ditto
+
+ * enum.c : ditto
+
+ * enumerator.c : ditto
+
+ * error.c : ditto
+
+ * euc_jp.c : ditto
+
+ * file.c : ditto
+
+ * gc.c : ditto
+
+ * hash.c : ditto
+
+ * intern.h : ditto
+
+ * io.c : ditto
+
+ * lex.c : ditto
+
+ * main.c : ditto
+
+ * marshal.c : ditto
+
+ * math.c : ditto
+
+ * missing.h : ditto
+
+ * node.h : ditto
+
+ * numeric.c : ditto
+
+ * object.c : ditto
+
+ * oniguruma.h : ditto
+
+ * pack.c : ditto
+
+ * prec.c : ditto
+
+ * process.c : ditto
+
+ * random.c : ditto
+
+ * range.c : ditto
+
+ * rb/mklog.rb : ditto
+
+ * re.c : ditto
+
+ * regcomp.c : ditto
+
+ * regenc.c : ditto
+
+ * regenc.h : ditto
+
+ * regerror.c : ditto
+
+ * regex.h : ditto
+
+ * regexec.c : ditto
+
+ * regint.h : ditto
+
+ * regparse.c : ditto
+
+ * regparse.h : ditto
+
+ * ruby.c : ditto
+
+ * ruby.h : ditto
+
+ * rubyio.h : ditto
+
+ * rubysig.h : ditto
+
+ * signal.c : ditto
+
+ * sjis.c : ditto
+
+ * sprintf.c : ditto
+
+ * st.c : ditto
+
+ * st.h : ditto
+
+ * string.c : ditto
+
+ * struct.c : ditto
+
+ * time.c : ditto
+
+ * utf8.c : ditto
+
+ * util.c : ditto
+
+ * util.h : ditto
+
+ * variable.c : ditto
+
+ * version.c : ditto
+
+
+2006-02-12(Sun) 21:33:10 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * array.c : fix to ruby's indent
+
+ * ascii.c : ditto
+
+ * bignum.c : ditto
+
+ * blockinlining.c : ditto
+
+ * call_cfunc.h : ditto
+
+ * class.c : ditto
+
+ * compar.c : ditto
+
+ * compile.c : ditto
+
+ * compile.h : ditto
+
+ * debug.c : ditto
+
+ * debug.h : ditto
+
+ * defines.h : ditto
+
+ * dir.c : ditto
+
+ * disasm.c : ditto
+
+ * dln.c : ditto
+
+ * dln.h : ditto
+
+ * enum.c : ditto
+
+ * enumerator.c : ditto
+
+ * error.c : ditto
+
+ * euc_jp.c : ditto
+
+ * eval.c : ditto
+
+ * eval_error.h : ditto
+
+ * eval_intern.h : ditto
+
+ * eval_jump.h : ditto
+
+ * eval_load.c : ditto
+
+ * eval_method.h : ditto
+
+ * eval_proc.c : ditto
+
+ * eval_safe.h : ditto
+
+ * eval_thread.c : ditto
+
+ * file.c : ditto
+
+ * gc.c : ditto
+
+ * hash.c : ditto
+
+ * insnhelper.h : ditto
+
+ * insns.def : ditto
+
+ * intern.h : ditto
+
+ * io.c : ditto
+
+ * lex.c : ditto
+
+ * main.c : ditto
+
+ * marshal.c : ditto
+
+ * math.c : ditto
+
+ * missing.h : ditto
+
+ * node.h : ditto
+
+ * numeric.c : ditto
+
+ * object.c : ditto
+
+ * oniguruma.h : ditto
+
+ * opt_insn_unif.def : ditto
+
+ * opt_operand.def : ditto
+
+ * pack.c : ditto
+
+ * prec.c : ditto
+
+ * process.c : ditto
+
+ * random.c : ditto
+
+ * range.c : ditto
+
+ * re.c : ditto
+
+ * re.h : ditto
+
+ * regcomp.c : ditto
+
+ * regenc.c : ditto
+
+ * regenc.h : ditto
+
+ * regerror.c : ditto
+
+ * regex.h : ditto
+
+ * regexec.c : ditto
+
+ * regint.h : ditto
+
+ * regparse.c : ditto
+
+ * regparse.h : ditto
+
+ * ruby.c : ditto
+
+ * ruby.h : ditto
+
+ * rubyio.h : ditto
+
+ * rubysig.h : ditto
+
+ * signal.c : ditto
+
+ * sjis.c : ditto
+
+ * sprintf.c : ditto
+
+ * st.c : ditto
+
+ * st.h : ditto
+
+ * string.c : ditto
+
+ * struct.c : ditto
+
+ * test.rb : ditto
+
+ * thread.c : ditto
+
+ * thread_pthread.h : ditto
+
+ * thread_win32.h : ditto
+
+ * time.c : ditto
+
+ * utf8.c : ditto
+
+ * util.c : ditto
+
+ * util.h : ditto
+
+ * variable.c : ditto
+
+ * version.c : ditto
+
+ * vm.c : ditto
+
+ * vm.h : ditto
+
+ * vm_dump.c : ditto
+
+ * vm_evalbody.h : ditto
+
+ * vm_macro.def : ditto
+
+ * yarv.h : ditto
+
+ * yarv_version.h : ditto
+
+ * yarvcore.c : ditto
+
+ * yarvcore.h : ditto
+
+
+2006-02-12(Sun) 15:53:21 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * lib/abbrev.rb : added
+
+ * lib/base64.rb : ditto
+
+ * lib/cgi-lib.rb : ditto
+
+ * lib/csv.rb : ditto
+
+ * lib/date2.rb : ditto
+
+ * lib/eregex.rb : ditto
+
+ * lib/ipaddr.rb : ditto
+
+ * lib/irb.rb : ditto
+
+ * lib/irb/cmd/chws.rb : ditto
+
+ * lib/irb/cmd/fork.rb : ditto
+
+ * lib/irb/cmd/help.rb : ditto
+
+ * lib/irb/cmd/load.rb : ditto
+
+ * lib/irb/cmd/nop.rb : ditto
+
+ * lib/irb/cmd/pushws.rb : ditto
+
+ * lib/irb/cmd/subirb.rb : ditto
+
+ * lib/irb/completion.rb : ditto
+
+ * lib/irb/context.rb : ditto
+
+ * lib/irb/ext/change-ws.rb : ditto
+
+ * lib/irb/ext/history.rb : ditto
+
+ * lib/irb/ext/loader.rb : ditto
+
+ * lib/irb/ext/math-mode.rb : ditto
+
+ * lib/irb/ext/multi-irb.rb : ditto
+
+ * lib/irb/ext/save-history.rb : ditto
+
+ * lib/irb/ext/tracer.rb : ditto
+
+ * lib/irb/ext/use-loader.rb : ditto
+
+ * lib/irb/ext/workspaces.rb : ditto
+
+ * lib/irb/extend-command.rb : ditto
+
+ * lib/irb/frame.rb : ditto
+
+ * lib/irb/help.rb : ditto
+
+ * lib/irb/init.rb : ditto
+
+ * lib/irb/input-method.rb : ditto
+
+ * lib/irb/lc/error.rb : ditto
+
+ * lib/irb/lc/help-message : ditto
+
+ * lib/irb/lc/ja/CVS/Entries : ditto
+
+ * lib/irb/lc/ja/CVS/Repository : ditto
+
+ * lib/irb/lc/ja/CVS/Root : ditto
+
+ * lib/irb/lc/ja/error.rb : ditto
+
+ * lib/irb/lc/ja/help-message : ditto
+
+ * lib/irb/locale.rb : ditto
+
+ * lib/irb/notifier.rb : ditto
+
+ * lib/irb/output-method.rb : ditto
+
+ * lib/irb/ruby-lex.rb : ditto
+
+ * lib/irb/ruby-token.rb : ditto
+
+ * lib/irb/slex.rb : ditto
+
+ * lib/irb/version.rb : ditto
+
+ * lib/irb/workspace.rb : ditto
+
+ * lib/irb/ws-for-case-2.rb : ditto
+
+ * lib/irb/xmp.rb : ditto
+
+ * lib/jcode.rb : ditto
+
+ * lib/logger.rb : ditto
+
+ * lib/mailread.rb : ditto
+
+ * lib/mathn.rb : ditto
+
+ * lib/parsedate.rb : ditto
+
+ * lib/pathname.rb : ditto
+
+ * lib/ping.rb : ditto
+
+ * lib/pstore.rb : ditto
+
+ * lib/resolv-replace.rb : ditto
+
+ * lib/resolv.rb : ditto
+
+ * lib/rss.rb : ditto
+
+ * lib/rss/0.9.rb : ditto
+
+ * lib/rss/1.0.rb : ditto
+
+ * lib/rss/2.0.rb : ditto
+
+ * lib/rss/content.rb : ditto
+
+ * lib/rss/converter.rb : ditto
+
+ * lib/rss/dublincore.rb : ditto
+
+ * lib/rss/image.rb : ditto
+
+ * lib/rss/maker.rb : ditto
+
+ * lib/rss/maker/0.9.rb : ditto
+
+ * lib/rss/maker/1.0.rb : ditto
+
+ * lib/rss/maker/2.0.rb : ditto
+
+ * lib/rss/maker/base.rb : ditto
+
+ * lib/rss/maker/content.rb : ditto
+
+ * lib/rss/maker/dublincore.rb : ditto
+
+ * lib/rss/maker/image.rb : ditto
+
+ * lib/rss/maker/syndication.rb : ditto
+
+ * lib/rss/maker/taxonomy.rb : ditto
+
+ * lib/rss/maker/trackback.rb : ditto
+
+ * lib/rss/parser.rb : ditto
+
+ * lib/rss/rexmlparser.rb : ditto
+
+ * lib/rss/rss.rb : ditto
+
+ * lib/rss/syndication.rb : ditto
+
+ * lib/rss/taxonomy.rb : ditto
+
+ * lib/rss/trackback.rb : ditto
+
+ * lib/rss/utils.rb : ditto
+
+ * lib/rss/xml-stylesheet.rb : ditto
+
+ * lib/rss/xmlparser.rb : ditto
+
+ * lib/rss/xmlscanner.rb : ditto
+
+ * lib/rubyunit.rb : ditto
+
+ * lib/scanf.rb : ditto
+
+ * lib/shell.rb : ditto
+
+ * lib/singleton.rb : ditto
+
+ * lib/tsort.rb : ditto
+
+ * lib/weakref.rb : ditto
+
+ * eval_jump.c : removed
+
+
+2006-02-12(Sun) 15:39:09 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * parse.y : fix to remove including env.h
+
+ * yarvtest/test_exception.rb : fix syntax (add 'end')
+
+
+2006-02-12(Sun) 15:14:44 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * env.h : removed
+
+ * common.mk : remove env.h dependency
+
+ * compile.c, eval_intern.h : remove include env.h
+
+ * vm.c : ditto
+
+ * ruby.h, gc.c, error.c : remove T_SCOPE, T_VARMAP
+
+ * parse.y, eval.c : use rb_parse_in_eval() instead of ruby_in_eval
+
+ * yarvcore.c, yarvcore.h : add a prase_in_eval member to yarv_thread_t
+
+ * insns.def : add push value to throw instruction
+ for stack consistency
+
+ * yarvtest/test_exception.rb : add a test for above
+
+ * test/ruby/test_gc.rb : fix typo
+
+
+2006-02-12(Sun) 05:05:02 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, eval_intern.h, eval_load.c, eval_proc.c, node.h,
+ insnhelper.h, insns.def, vm.c, yarvcore.c, yarvcore.h :
+ change cref data structure and unify ruby_class and ruby_cbase
+ and some refoctoring
+
+
+2006-02-11(Sat) 23:41:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (methoddef) : fix method declaration in method
+
+ * thread.c : Thread.critical to show warning (no effect)
+
+
+2006-02-11(Sat) 20:20:18 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : fix [yarv-dev:831]
+
+ * yarvtest/test_class.rb : add a test for above
+
+
+2006-02-11(Sat) 14:29:01 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/mklog.rb : use svk
+
+ * error.c : remove newline
+
+ * eval.c (rb_block_call) : added
+
+ * eval_thread.c : remove some unused functions, comments
+
+ * thread.c : add comments (move from eval_thread.c) and support Mutex
+
+ * thread.c (rb_thread_select) : supported
+
+ * thread_pthread.h (native_mutex_trylock) : added (macro)
+
+ * thread_win32.h (native_mutex_trylock) : added
+
+ * yarvcore.c : remove unused code
+
+ * array.c : import ruby 1.9
+
+ * compar.c : ditto
+
+ * dln.c : ditto
+
+ * enum.c : ditto
+
+ * enumerator.c : ditto
+
+ * ext/digest/digest.c : ditto
+
+ * ext/digest/digest.h : ditto
+
+ * ext/digest/sha2/sha2.c : ditto
+
+ * ext/etc/etc.c : ditto
+
+ * ext/win32ole/win32ole.c : ditto
+
+ * hash.c : ditto
+
+ * intern.h : ditto
+
+ * io.c : ditto
+
+ * main.c : ditto
+
+ * missing.h : ditto
+
+ * missing/flock.c : ditto
+
+ * missing/isinf.c : ditto
+
+ * missing/vsnprintf.c : ditto
+
+ * lib/cgi.rb : ditto
+
+ * lib/complex.rb : ditto
+
+ * lib/delegate.rb : ditto
+
+ * lib/erb.rb : ditto
+
+ * lib/fileutils.rb : ditto
+
+ * lib/matrix.rb : ditto
+
+ * lib/mkmf.rb : ditto
+
+ * lib/optparse.rb : ditto
+
+ * lib/ostruct.rb : ditto
+
+ * lib/pp.rb : ditto
+
+ * lib/timeout.rb : ditto
+
+ * lib/tmpdir.rb : ditto
+
+ * lib/test/unit/autorunner.rb : ditto
+
+ * node.h : ditto
+
+ * object.c : ditto
+
+ * parse.y : ditto
+
+ * ruby.c : ditto
+
+ * sample/test.rb : ditto
+
+ * sprintf.c : ditto
+
+ * st.c : ditto
+
+ * test/ruby/test_whileuntil.rb : ditto
+
+ * test/runner.rb : ditto
+
+ * time.c : ditto
+
+ * lib/net/.document : added
+
+ * lib/net/ftp.rb : ditto
+
+ * lib/net/http.rb : ditto
+
+ * lib/net/https.rb : ditto
+
+ * lib/net/imap.rb : ditto
+
+ * lib/net/pop.rb : ditto
+
+ * lib/net/protocol.rb : ditto
+
+ * lib/net/smtp.rb : ditto
+
+ * lib/net/telnet.rb : ditto
+
+ * lib/open-uri.rb : ditto
+
+
+2006-02-10(Fri) 08:07:34 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def, yarvcore.h : support defined?(private_method) and
+ defined?(protected_method) (separate DEFINE_METHOD / DEFINE_FUNC)
+
+ * yarvtest/test_syntax.rb : add a test for above
+
+ * compile.c (iseq_compile_each) : fix NODE_RETURN bug
+ (double ensure invoke)
+
+ * yarvtest/test_flow.rb : add a test for above
+
+ * eval.c (get_errinfo) : fix to search $!
+
+ * yarvtest/test_exception.rb : add tests for above
+
+ * eval_safe.h : support $SAFE
+
+ * ext/socket/socket.c : import ruby 1.9
+
+ * gc.c (gc_mark_children) : fix making T_VALUE
+
+ * test/ruby/test_gc.rb : use GC.stress
+
+ * signal.c (sighandler) : send interrupt signal if thread blocked
+
+ * test/ruby/test_proc.rb : remove assert false
+
+ * test/ruby/test_readpartial.rb : change fail message
+
+ * test/ruby/test_signal.rb : remove assert false
+
+ * thread.c (thread_start_func_2) : set local_lfp/local_svar
+ at thread creation
+
+ * thread_pthread.h : export native_thread_interrupt
+
+ * thread_win32.h : export native_thread_interrupt
+
+ * version.h : import ruby 1.9
+
+ * vm.c (lfp_svar), yarvcore.h : fix to use Thread local svar
+
+ * yarvtest/test_thread.rb : add a test for above
+
+ * win32/Makefile.sub : import ruby 1.9
+
+ * win32/dir.h : ditto
+
+ * win32/setup.mak : ditto
+
+ * win32/win32.c : ditto
+
+ * yarvtest/yarvtest.rb : fix to remove using ARGV
+
+
+2006-02-10(Fri) 01:04:58 +0900 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while
+ invoking finalizers.
+
+ * gc.c (rb_gc_finalize_deferred): ditto.
+
+
+2006-02-08(Wed) 23:17:44 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_proc.rb: method names were wrongly duplicated.
+
+
+2006-02-08(Wed) 21:30:01 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * ext/nkf: added (imported from ruby CVS trunk HEAD).
+
+ * ext/nkf/depend: new file (rev 1.5).
+
+ * ext/nkf/extconf.rb: new file (rev 1.2).
+
+ * ext/nkf/nkf.c: new file (rev 1.12).
+
+ * ext/nkf/test.rb: new file (rev 1.7).
+
+ * ext/nkf/nkf-utf8/nkf.c: new file (rev 1.17).
+
+ * ext/nkf/nkf-utf8/config.h: new file (rev 1.4).
+
+ * ext/nkf/nkf-utf8/utf8tbl.c: new file (rev 1.6).
+
+ * ext/nkf/lib/kconv.rb: new file (rev 1.13).
+
+ * test/nkf: added (imported from ruby CVS trunk HEAD).
+
+ * test/nkf/test_kconv.rb: new file (rev 1.1).
+
+ * test/nkf/test_nkf.rb: new file (rev 1.1).
+
+
+2006-02-08(Wed) 21:07:36 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/find.rb: new file (imported from ruby CVS trunk HEAD,
+ rev 1.15).
+
+
+2006-02-07(Tue) 17:58:18 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def : support BEGIN{} and add preexe instruction
+
+ * insns.def : fix getspecial/setspecial instructions
+ to catch up svar change
+
+ * test/ruby/test_system.rb : remove stopper
+
+ * thread.c (rb_thread_fd_writable) : add a debug output
+
+ * thread.c (rb_thread_wait_fd) : add a debug output
+
+ * vm.c (lfp_svar) : refactoring and fix some problems
+
+ * vm_dump.c (yarv_bug) : add branch
+
+ * yarv.h : remove unused declarations
+
+ * yarvcore.c (vm_free) : VM object should not free by GC
+
+
+2006-02-07(Tue) 14:42:25 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, eval_load.c : remove rb_thread_start_1()
+
+ * eval.c : fix some prototypes and indents
+
+ * eval_thread.c, thread.c : move some functions
+ from eval_thread.c to thread.c
+
+ * signal.c (sighandler) : add line braek in error message
+
+ * yarvcore.c, yarvcore.h, thread.c : support ThreadGroup
+
+ * ruby.h, gc.c, vm.c : make new basic type RValue and T_VALUE.
+ RValue includes three values in itself. RValue is used as
+ svar
+
+
+2006-02-06(Mon) 23:51:41 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_hash.rb: import many tests from rubicon.
+
+
+2006-02-04(Sat) 18:36:41 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_array.rb: import many tests from rubicon.
+
+
+2006-02-04(Sat) 17:47:44 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_signal.rb (test_exit_action): lib/timeout.rb is
+ not implemented yet.
+
+
+2006-02-04(Sat) 17:42:31 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_readpartial.rb: lib/timeout.rb is not implemented
+ yet.
+
+
+2006-02-04(Sat) 16:22:38 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_pipe.rb: remove useless require.
+
+ * test/ruby/test_signal.rb: turn off the test case which causes
+ segmentation fault (tmp).
+
+
+2006-02-04(Sat) 08:19:50 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : add dependency to yarvcore.h on signal.o
+
+ * compile.c (iseq_compile_each) : fix [yarv-dev:795] problem
+ (prohibit "break", "next" jump from eval)
+
+ * eval.c : fix indent
+
+ * eval_thread.c, thread.c : remove some functions and move to thread.c
+
+ * insns.def, vm.c : fix [yarv-dev:799] and [yarv-dev:800]
+
+ * yarvtest/test_class.rb : add a test for above
+
+ * test/ruby/test_gc.rb : remove GC.debug_flag control
+
+ * test/ruby/test_readpartial.rb : disable
+
+ * test/ruby/test_signal.rb : disable
+
+ * thread.c : fix thread_debug() and many bugs
+
+ * thread.c (yarv_thread_s_new) : move living_threads setting
+
+ * thread.c (yarv_thread_join) : fix
+
+ * thread_pthread.h : add type native_thread_data_t (dummy)
+ and support interrupt blocking thread
+
+ * thread_pthread.h (native_thread_apply_priority) : added
+
+ * thread_win32.h : add type native_thread_data_t (dummy)
+ and support interrupt blocking thread
+
+ * yarvcore.h : use win32 thread system on cygwin and fix
+ some struct members
+
+ * yarvtest/test_thread.rb : added
+
+
+2006-02-03(Fri) 00:08:09 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_string.rb: import many tests from rubicon.
+
+
+2006-02-02(Thu) 23:20:13 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/envutil.rb: new file (imported from ruby trunk HEAD).
+
+ * test/ruby/marshaltestlib.rb: ditto.
+
+ * test/ruby/test_array.rb: ditto.
+
+ * test/ruby/test_beginendblock.rb: ditto.
+
+ * test/ruby/test_clone.rb: ditto.
+
+ * test/ruby/test_dir.rb: ditto.
+
+ * test/ruby/test_env.rb: ditto.
+
+ * test/ruby/test_file.rb: ditto.
+
+ * test/ruby/test_float.rb: ditto.
+
+ * test/ruby/test_fnmatch.rb: ditto.
+
+ * test/ruby/test_hash.rb: ditto.
+
+ * test/ruby/test_io.rb: ditto.
+
+ * test/ruby/test_marshal.rb: ditto.
+
+ * test/ruby/test_math.rb: ditto.
+
+ * test/ruby/test_pack.rb: ditto.
+
+ * test/ruby/test_path.rb: ditto.
+
+ * test/ruby/test_pipe.rb: ditto.
+
+ * test/ruby/test_rand.rb: ditto.
+
+ * test/ruby/test_range.rb: ditto.
+
+ * test/ruby/test_readpartial.rb: ditto.
+
+ * test/ruby/test_regexp.rb: ditto.
+
+ * test/ruby/test_settracefunc.rb: ditto.
+
+ * test/ruby/test_signal.rb: ditto.
+
+ * test/ruby/test_sprintf.rb: ditto.
+
+ * test/ruby/test_string.rb: ditto.
+
+ * test/ruby/test_stringchar.rb: ditto.
+
+ * test/ruby/test_struct.rb: ditto.
+
+ * test/ruby/test_symbol.rb: ditto.
+
+ * test/ruby/test_system.rb: ditto.
+
+ * test/ruby/test_time.rb: ditto.
+
+ * test/ruby/ut_eof.rb: ditto.
+
+
+2006-02-02(Thu) 22:53:44 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_proc.rb: test [yarv-dev:777].
+
+
+2006-02-01(Wed) 03:51:39 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * gc.c : add GC.debug_flag= method
+
+ * insns.def : support method definition in method
+
+ * yarvtest/test_method.rb : add tests for above
+
+
+2006-01-29(Sun) 11:40:26 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_proc.c (proc_alloc) : fix [yarv-dev:777]
+
+ * yarvtest/test_proc.rb : add a test for above
+
+ * insns.def : fix [yarv-dev:782] and add YARV_CHECK_INTS()
+
+ * yarvtest/test_class.rb : add a test for above
+
+ * thread_win32.h : fix [yarv-dev-en:23]
+
+ * vm.c (th_call0) : add YARV_CHECK_INTS()
+
+
+2006-01-09(Mon) 11:56:34 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * yarvcore.h: add prototype (remove warning).
+
+ * vm.c (th_invoke_proc): make save variables volatile.
+
+ * eval.c (eval): initialize local variables (remove warnings).
+
+ * eval_thread.c (rb_exec_recursive): ditto.
+
+ * yarvcore.c (thread_mark): ditto.
+
+ * vm.c (th_invoke_proc): ditto.
+
+ * eval.c: remove useless prototypes.
+
+
+2006-01-09(Mon) 10:25:12 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * eval_thread.c: rb_thread_join is required to build ruby on
+ Linux.
+
+ * compile.c: unify coding style.
+
+ * yarvcore.c: ditto.
+
+
+2006-01-06(Fri) 09:21:34 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * vm.c: coding style change only.
+
+
+2006-01-04(Wed) 14:12:47 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (ruby_init), eval_intern.h : use POP_TAG_INIT() at bootstrap
+
+ * eval_thread.c : remove unused functions and comments
+
+ * intern.h : expose rb_make_exception()
+
+ * signal.c : support signal
+
+ * thread.c (yarv_thread_execute_interrupts) : added
+
+ * thread_pthread.h (thread_timer) : set interrupt_flag of
+ current runnning threads
+
+ * vm.c (th_invoke_proc) : jump with JUMP_TAG() if some exception
+ occurres
+
+ * yarv.h : add yarv_set_current_running_thread_raw() for bootstrap
+
+ * yarvcore.c : add yarv_segv() and segv() method for test
+
+ * yarvcore.c (Init_yarvcore) : set yarv_thread_t#running_thread
+
+ * yarvcore.h : fix yarv_thread_t members
+
+
+2006-01-03(Tue) 22:25:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * disasm.c (insn_operand_intern) : fix to add child iseq
+
+ * eval.c, gc.c : remove obsolete static variables (ruby_scope,
+ ruby_dyna_vars, ruby_frame)
+
+ * eval.c (rb_mod_s_constants) : use ruby_cref()
+
+ * eval.c (eval) : use th_restore_klass()
+
+ * eval_proc.c (rb_f_binding) : use th_store_klass()
+
+ * insns.def (concatarray) : fix insn ([expr, *nil] => [expr])
+
+ * vm.c (th_set_env), insnhelper.h : remove macro
+
+ * vm.c (eval_get_cvar_base) : use get_cref
+
+ * vm.c (th_make_proc) : use th_store_klass()
+
+ * vm_macro.def (macro_eval_invoke_func) : fix option args size
+
+ * vm_macro.def (macro_eval_invoke_func) : raise stack overflow error
+
+ * yarvcore.h : add yarv_stored_klass_t type
+
+ * yarvcore.c : fix mark functions around yarv_stored_klass_t
+
+
+2006-01-01(Sun) 05:14:26 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * lib/benchmark.rb: new file (imported from original ruby, rev
+ 1.10).
+
+
+2006-01-01(Sun) 03:51:10 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * yarvcore.c: add prototype.
+
+ * re.c: remove warning: long -> unsigned long.
+
+ * debug.c: adjust coding style.
+
+ * yarv.h: ditto.
+
+
+2006-01-01(Sun) 03:43:33 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * variable.c: add prototype.
+
+ * eval.c: ditto.
+
+ * eval_load.c: ditto.
+
+
+2006-01-01(Sun) 02:41:21 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : add address analyse to vtune rule
+
+ * rb/vtlh.rb : added for above
+
+ * rb/insns2vm.rb, template/vm.inc.tmpl : insert #line directive
+ to reference above
+
+ * vm_macro.def (macro_eval_invoke_cfunc) : fix indent
+
+ * yarvtest/test_method.rb : fix indent, spacing
+ and add a test for alias
+
+
+2005-12-31(Sat) 12:42:05 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : add Intel VTune rule (make vtune)
+
+ * eval.c, yarvcore.h : fix to remove yarv_thread_t#local_*
+
+ * parse.y (top_local_init_gen) : fix a problem ([yarv-dev:765])
+
+ * yarvtest/test_eval.rb : add a test for above
+
+ * vm.c (thread_eval) :remove unused function
+
+ * yarvcore.c (Init_yarvcore) : remove YARVCore::Thread::eval method
+
+ * yarvcore.c (thread_eval) : remove unused function
+
+
+2005-12-31(Sat) 06:05:00 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (eval_search_super_klass) : pass block to method missing
+
+ * vm_macro.def (macro_eval_invoke_method) : ditto
+
+ * yarvtest/test_method.rb : add a test for above
+
+
+2005-12-31(Sat) 03:11:14 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c (eval), eval_proc.c (rb_f_binding) : save klass, etc to
+ binding and use it at eval
+
+ * eval_intern.h : ditto
+
+ * yarvtest/test_eval.rb : add tests for above
+
+ * yarvcore.c (th_get_special_cref) : added
+
+ * yarvcore.h : add a prototype of above
+
+ * vm.c (th_get_cref) : refactoring
+
+ * vm.c (eval_get_ev_const) : fix SEGV at A::B (A is not class/module)
+ ([yarv-dev:758])
+
+ * yarvtest/test_bin.rb : add a test for above
+
+ * rb/mklog.rb : use external diff command and show function name
+
+
+2005-12-30(Fri) 19:07:51 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c, yarvcore.h, eval.c, eval_proc.c : support
+ Ruby's Binding
+
+ * yarvcore.c : support TOPLEVEL_BINDING
+
+ * yarvtest/test_eval.rb : add tests for above
+
+
+2005-12-30(Fri) 13:12:28 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_eval.rb: more tests for
+ module_eval/instance_eval.
+
+
+2005-12-30(Fri) 05:06:49 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : add dependency (yarvcore.h) for gc.c
+
+ * eval.c, eval_intern.h, eval_load.c, eval_method.h,
+ insns.def, insnhelper.h, vm.c, yarvcore.c, yarvcore.h :
+ re-write class reference
+
+ * yarvtest/test_eval.rb : added
+
+ * yarvtest/test_proc.rb :
+
+
+2005-12-29(Thu) 12:27:12 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, yarvcore.h :
+ remvoe needless yarv_iseq_t#rewind_frame_size
+
+
+2005-12-29(Thu) 11:17:58 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : add dependency to test-all rule
+
+ * eval.c (rb_sourceline), vm.c (th_get_sourceline) :
+ fix to skip process if iseq is ifunc
+
+ * test/ruby/test_lambda.rb : assert(fail, ...) instead of assert_fail
+
+ * test/ruby/test_proc.rb : ditto
+
+ * vm_dump.c : fix stack dump (iseq name)
+
+ * vm_macro.def : store proc (block proc) to cfp#proc for GC mark
+
+ * yarvcore.c : mark above on thread_mark
+
+ * eval.c (exec_under) : replace block#self ([yarv-dev:751])
+
+
+2005-12-29(Thu) 01:56:46 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : fix setting of Proc cref ([yarv-dev:741])
+
+ * yarvcore.c : fix indent
+
+
+2005-12-29(Thu) 00:17:03 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * disasm.c : show (block) local variable simple (not as symbol)
+
+ * gc.c : fix syntax error
+
+
+2005-12-28(Wed) 23:35:06 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * class.c (method_entry) : fixed for undefed method ([yarv-dev:743])
+
+ * compile.c : fix errinfo dvar id (#$!)
+ and fix NODE_ERRINFO compilation
+
+ * eval_proc.c, yarvcore.c : support YARVCore::VM::Proc.new
+
+ * insns.def : remove useless TODO comments
+
+ * insns.def : fix to use strict array conversion on
+ checkarrayinclude
+
+ * insns.def : fix defined?(yield) ([yarv-dev:744])
+
+ * yarvcore.h : change yarv_iseq_t layout
+
+
+2005-12-28(Wed) 16:49:55 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_eval.rb: add TODO comment.
+
+ * test/ruby/test_iterator.rb: rename YARVCore::VM::Proc -> Proc
+ (tmp).
+
+ * test/ruby/test_lambda.rb: use assert_fail.
+
+ * test/ruby/test_proc.rb: ditto.
+
+
+2005-12-28(Wed) 16:28:35 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_clone.rb: removed (tmp).
+
+ * test/ruby/test_eval.rb: define missing method Object#funcall
+ (tmp).
+
+ * test/ruby/test_lambda.rb: turn off tests for "->".
+
+ * test/ruby/test_proc.rb: turn off tests for |&b|.
+
+ * test/ruby/test_proc.rb: turn off tests for $SAFE setter.
+
+
+2005-12-28(Wed) 15:31:46 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix calculation of stack_max
+
+ * eval.c (rb_iter) : fix block/retry handling
+
+ * yarvtest/test_flow.rb : add tests for above
+
+ * insns.def : fix block passing on super (super(&nil))
+
+ * vm_macro.def, insns.def : fix convert method of object to array
+
+ * yarvtest/test_method.rb : fix a test for above
+
+ * vm.c : fix backtrace generate algorithm
+
+
+2005-12-28(Wed) 10:36:45 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, compile.h : refactoring (remove self passing, etc)
+
+ * disasm.c : support showing ID of method/dynamic local variables
+
+ * rb/allload.rb : add verbose version (it's enable by $DEBUG)
+
+ * template/insns.inc.tmpl, template/insns_info.inc.tmpl,
+ template/minsns.inc.tmpl, template/opt_sc.inc.tmpl,
+ template/optinsn.inc.tmpl, template/optunifs.inc.tmpl,
+ template/vmtc.inc.tmpl : fix a comment
+
+ * variable.c (mod_av_set) : fix to clear inline cache ([yarv-dev:720])
+
+ * eval_method.h : fix to clear inline method cache
+
+ * vm.c, rb/insns2vm.rb, template/insns_info.inc.tmpl, compile.c,
+ insns.def, vm_evalbody.h, vm_macro.def :
+ fix operands types (ulong -> num_t, ...)
+
+ * vm_macro.def : fix to check SPECIAL_CONST_P() at splat array
+ ([yarv-dev:722])
+
+ * yarvcore.c : fix to throw syntax error
+
+ * yarvcore.h, eval.c, eval_error.h, eval_jump.h :
+ add yarv_vm_t#exit_code to fix problem at cleanup ([yarv-dev:723])
+
+ * insns.def : fix to invoke zsuper in method defined by define_method
+ ([yarv-dev:704])
+
+ * yarvtest/test_class.rb : add tests for above
+
+ * yarvtest/test_method.rb : fix comments
+
+
+2005-12-27(Tue) 01:52:07 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * array.c, intern.h, insns.def : expose rb_ary_replace and use it
+ in insns.def
+
+ * eval.c : fix to use SCOPE_* to NOEX_*
+
+ * eval_intern.h : remove SCOPE_*
+ and fix SCOPE_TEST() and SCOPE_SET(f)
+
+ * eval_load.c : save and store klass and visibility
+ at require and load
+
+ * eval_method.h : fix undefed method node ([yarv-dev-en:8])
+
+ * eval_proc.c : fix define_method ([yarv-dev:704])
+
+ * insnhelper.h, vm.h : remove GET_VM_STATE_VERSION(),
+ INC_VM_STATE_VERSION() and move these to vm.h
+
+ * insns.def : supportintg visibility
+
+ * node.h : remove NOEX_RECV
+
+ * variable.c, vm.c : add rb_vm_change_state() and use it in
+ remove_const
+
+ * vm.c, insns.def, yarvcore.h, yarvcore.c : add eval_push_cref(),
+ eval_pop_cref() and th_cref_init to manage current visibility
+
+ * yarv.h : add a prototype of rb_vm_change_state()
+
+ * yarvcore.h, insns.def : add defined_method_id and support
+ super in define_method scope
+
+ * yarvtest/test_class.rb : add tests for above
+
+
+2005-12-26(Mon) 20:44:38 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_basicinstructions.rb: new file.
+
+
+2005-12-26(Mon) 08:40:02 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c (eval_get_ev_const) : fix to skip nil
+
+
+2005-12-26(Mon) 08:27:15 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.h : fix GET_CVAR_EV_KLASS [yarv-dev:703]
+
+
+2005-12-26(Mon) 07:51:01 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : add emptstack insn for all NODE_RETURN
+ and optimize it if it's not needed
+
+ * yarvtest/test_flow.rb : add a test for above
+
+
+2005-12-26(Mon) 07:08:22 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, gc.c : add "gc_debug_flag" to debug gc
+
+ * insns.def : add emptstack
+
+ * compile.c, rb/insns2vm.rb, template/insns_info.inc.tmpl :
+ change interface of insn_stack_increase
+
+ * compile.c : fix return from ensure in method [yarv-dev:702]
+
+ * yarvtest/test_flow.rb : add tests for above
+
+
+2005-12-26(Mon) 02:15:02 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/ruby/test_alias.rb: do not use unimplemented defined?.
+
+
+2005-12-26(Mon) 02:00:11 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * test/runner.rb: new file.
+
+ * test/ruby/test_alias.rb: new file.
+
+ * test/ruby/test_clone.rb: new file.
+
+ * test/ruby/test_eval.rb: new file.
+
+ * test/ruby/test_iterator.rb: new file.
+
+ * test/ruby/test_lambda.rb: new file.
+
+ * test/ruby/test_proc.rb: new file.
+
+ * test/ruby/test_super.rb: new file.
+
+ * test/ruby/test_assignment.rb: new file.
+
+ * test/ruby/test_bignum.rb: new file.
+
+ * test/ruby/test_call.rb: new file.
+
+ * test/ruby/test_case.rb: new file.
+
+ * test/ruby/test_condition.rb: new file.
+
+ * test/ruby/test_const.rb: new file.
+
+ * test/ruby/test_defined.rb: new file.
+
+ * test/ruby/test_exception.rb: new file.
+
+ * test/ruby/test_gc.rb: new file.
+
+ * test/ruby/test_ifunless.rb: new file.
+
+ * test/ruby/test_method.rb: new file.
+
+ * test/ruby/test_trace.rb: new file.
+
+ * test/ruby/test_variable.rb: new file.
+
+ * test/ruby/test_whileuntil.rb: new file.
+
+
+2005-12-25(Sun) 07:40:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c, compile.c : fix block inlining
+
+ * rb/insns2vm.rb : fix to support tracing stack depth
+ with operands unification
+
+ * vm_dump.c : fix to print Qundef on stack dump
+
+
+2005-12-25(Sun) 01:45:55 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, compile.c, rb/insns2vm.rb, template/insns_info.inc.tmpl :
+ trace stack depth at compile time
+ and use it as cont_sp for exception handling
+
+ * yarvtest/test_exception.rb : add tests for above
+
+ * yarvtest/test_flow.rb : ditto
+
+ * Merry Xmas :)
+
+
+2005-12-24(Sat) 19:34:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, compile.h : fix ADD_CATCH_ENTRY and add LABEL#sp
+
+ * eval_jump.h : fix catch to remove illegal error
+
+
+2005-12-24(Sat) 09:05:23 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_method.h : change data structure for RClass#m_tbl
+
+ * class.c, eval.c, eval_proc.c : fix for above changes
+
+ * node.h, gc.c : change NODE_FBODY, NODE_METHOD members
+ for above changes
+
+ * insns.def : support private/protected visibility
+
+ * vm_macro.def : ditto
+
+ * vm.c : ditto
+
+ * thread.c : fix typo
+
+ * thread_pthread.h : fix typo
+
+ * thread_win32.h : fix typo
+
+ * eval.c, yarvcore.h : add yarv_thread_t#method_missing_reason
+ to pass method_missing reason and use it to build error message
+
+ * compile.c : use ADD_CALL instead of ADD_SEND for
+ NODE_X(D)STR, NODE_CONST (func)
+
+
+2005-12-22(Thu) 02:45:27 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarv_version.h, Changes : 0.3.3
+
+
+2005-12-20(Tue) 04:04:45 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix self::Const access
+
+ * yarvtest/test_bin.rb : add a test for above
+
+
+2005-12-20(Tue) 01:52:52 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : fix to expand VALUES value
+
+ * yarvtest/test_massign.rb : add a test for above
+
+
+2005-12-20(Tue) 01:32:35 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, insnhelper.h : fix cvar in singleton method/class
+
+ * yarvtest/test_bin.rb : add tests for above
+
+
+2005-12-20(Tue) 01:03:34 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, yarvcore.h : support all defined?() syntax
+
+ * compile.c : fix NODE_COLON2
+
+ * yarvtest/test_bin.rb : add or fix tests for above
+
+ * win32/* : update all
+
+
+2005-12-17(Sat) 10:46:08 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * vm_macro.def: fix printf type mismatch for LP64 system (again).
+
+ * parse.y: introduce descriptive macro for special values of
+ lvtbl->dvars.
+
+
+2005-12-17(Sat) 09:39:27 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * vm_macro.def (macro_eval_invoke_method): fix printf type mismatch
+ for LP64 system.
+
+
+2005-12-14(Wed) 03:49:40 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : change rescue/ensure iseq name
+
+ * eval.c, intern.h : fix a prototype
+
+ * insns.def, yarvcore.h : add trace_function
+
+ * vm.c : fix deadly bug (illegal pointer cast)
+
+ * vm_dump.c : remove unused local variables
+
+ * vm_macro.def : add parameter size check
+
+ * yarvtest/test_bin.rb : comment out 2 assertions
+
+
+2005-12-13(Tue) 03:55:27 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_proc.c : fix indent
+
+ * insns.def : fix getspecial instruction to return nil
+ if no entry
+
+ * yarvtest/test_syntax.rb : add a test for above
+
+ * lib/un.rb : added
+
+ * template/*.tmpl : fix typo
+
+
+2005-12-13(Mon) 01:38:17 +0900 Minero Aoki <aamine@loveruby.net>
+
+ * yarv.h: add prototypes.
+
+ * intern.h: ditto.
+
+ * eval.c: ditto.
+
+ * debug.c: ditto.
+
+ * thread_pthread.h: fix printf type mismatch for LP64 system
+ (Linux/AMD64).
+
+ * variable.c: ditto.
+
+ * object.c: ditto.
+
+ * gc.c: ditto.
+
+ * process.c: ditto.
+
+ * error.c: ditto.
+
+ * vm.c: ditto.
+
+ * vm.h: ditto.
+
+ * vm_dump.c: ditto.
+
+ * disasm.c: ditto.
+
+ * marshal.c: ditto.
+
+ * eval_thread.c: ditto.
+
+
+2005-12-11(Sun) 22:00:34 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : call "inherited" method when a class is inherited
+
+ * yarvcore.h : fix yarv_iseq_t field layout
+
+ * common.mk : add dependence on yarvcore.h to eval*.o files
+
+ * compile.c : fix NODE_POSTEXE logic
+
+ * insnhelper.h : use GC_GUARDED_PTR_REF instead of magic number
+
+ * eval_proc.c : fix indent
+
+ * configure : re-autoconf
+
+
+2005-12-10(Sat) 03:57:20 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : fix blockinlining.o build rule
+
+ * insns.def : remove logic for zsuper
+
+ * template/optinsn.inc.tmpl :
+
+ * vm.c : remove thread_yield_light_prepare, thread_yield_light_invoke
+
+ * compile.c : support NODE_ZSUPER with optargs, restarg
+
+ * yarvtest/test_class.rb : add tests for above
+
+
+2005-12-09(Fri) 01:13:37 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * array.c, numeric.c, range.c : add prototype of
+ block inlining function
+
+ * blockinlining.c, vm_opts.h.base : add block inlining flag
+
+ * common.mk, debug.h, debug.c : add debug_breakpoint() for gdb
+
+ * compile.c : fix to use size_t on compile_data_alloc(),
+ fix illegal cast, fix to set arg_simple at compiling block,
+
+ * compile.c, vm.c : fix NODE_NEXT, NODE_BREAK logic
+
+ * yarvtest/test_flow.rb : add a test for above
+
+ * yarvcore.c, yarvcore.h, compile.c, eval.c : remove
+ yarv_iseq_t#root_iseq and add yarv_iseq_t#local_iseq and fix
+ to use this member field
+
+ * eval_method.h : fix indent
+
+ * gc.c : fix indent
+
+ * insns.def, compile.c : remove "zsuper" instruction (use "super"
+ instead). This is because NODE_ZSUPER represent with only "super"
+ instruction
+
+ * yarvcore.c : add proc_arity
+
+
+2005-12-05(Mon) 03:58:30 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * array.c, blockinlining.c : support block inlining for Array#each
+
+ * disasm.c : fix catch table format
+
+ * insns.def : fix stack consistency error message
+
+ * vm.c : fix to skip pushing value at "next"
+
+ * yarvcore.h : move definision of
+ "struct iseq_compile_data_ensure_node_stack" to compile.c
+
+ * compile.c : fix ensure catch table creation
+
+ * yarvtest/test_flow.rb : add tests for above
+
+
+2005-12-03(Sat) 22:27:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c, compile.c, yarvcore.c, yarvcore.h,
+ numeric.c, range.c : collect block inlining logic to blockinlining.c
+
+
+2005-12-03(Sat) 20:24:07 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * blockinlining.c, common.mk : add blockinlining.c
+
+ * yarvcore.c, yarvcore.h, blockinlining.c, compile.c, compile.h,
+ gc.c, node.h, numeric.c, range.c :
+ support block inlining for Integer#times, Range#each
+
+ * compile.c : fix to set block redo/next point at last,
+ and fix NODE_OP_ASGN1
+
+ * compile.c, vm.c : add specialized instruction "opt_le"
+
+ * disasm.c : fix to show block, and to show catch type as string
+ and change node_name logic
+
+ * eval_thread.c : fix function type declaration
+
+ * insns.def : add instruction "putundef", "opt_checkenv"
+ to support block inlining and add stack check routine
+
+ * lib/cgi.rb : add global variable $CGI_DONTINPUT
+
+ * opt_operand.def : add some operand unification rules
+
+ * rb/insns2vm.rb : fix operand unification logic for BLOCKISEQ
+
+ * vm.c : fix exception handling routine (collect stack operations)
+
+ * vm_macro.def : fix macro_eval_invoke_bmethod
+
+ * yarvsubst.c : removed
+
+ * yarvtest/test_syn.rb : rename to yarvtest/test_syntax.rb
+
+ * yarvtest/yarvtest.rb : remove tempfile explicitly
+
+
+2005-11-30(Wed) 01:13:57 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : add vm_opts.h rule
+
+ * vm.c, insns.def : fix proc creation under class and block
+ environment
+
+
+2005-11-29(Tue) 16:39:07 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, eval_proc.c, vm.c, vm_macro.def :
+ support define_method and invoke NODE_BMETHOD method
+
+
+2005-11-29(Tue) 13:18:06 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : add iseq_add_mark_object, iseq_add_mark_object_compile_time
+ and use it to mark objects on iseq
+
+ * compile.h, compile.c : remove cast on NEW_CHILD_ISEQVAL, NEW_ISEQVAL
+ and interface
+
+ * compile.c, disasm.c, insns.def, vm_macro.def, rb/insns2vm.rb :
+ add BLOCKISEQ parameter type
+
+ * gc.c : fix garbage_collect to return true if only allocate memory
+
+ * vm.c : fix insertion order of proc/env
+
+ * vm_evalbody.h : add typedef yarv_iseq_t *BLOCKISEQ
+
+ * yarvcore.c, yarvcore.c : add idTimes
+
+ * yarvcore.c : fix proc_mark, env_mark around iseq mark
+
+
+2005-11-28(Mon) 09:02:57 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def, vm_evalbody.h : support super
+ with splat argument and block (and zsuper with block)
+
+ * yarvtest/test_class.rb : add tests for above
+
+ * compile.c, yarvcore.h, yarvcore.c, insns.def, time.c, string.c :
+ add opt_succ insn
+
+ * eval_method.h : fix indent
+
+ * eval_thread.c : apply cast to vanish a warning
+
+ * lib/tempfile.rb, lib/tmpdir.rb : added
+
+ * vm.c : eval_method_missing added
+
+ * vm_macro.def : refactoring
+
+
+2005-11-21(Mon) 21:21:33 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, compile.h, yarvcore.c : remove "iseqobj"
+ variables and rename to "iseq"
+
+
+2005-11-21(Mon) 07:31:50 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix block parameter error
+
+ * ext/* : added
+
+ * lib/optparse* : added
+
+ * benchmark/bm_so_sieve.rb : fix parameter
+
+
+
+2005-11-21(Mon) 03:47:28 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : optimize condition in literal
+
+ * thread_win32.h : fix win32 thread function prototype
+
+
+2005-11-20(Sun) 17:58:24 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix NODE_AND/OR bug
+
+ * eval.c : support rb_frame_this_func()
+
+
+2005-11-20(Sun) 12:32:31 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, yarvcore.c, yarvcore.h : support NODE_OPT_N
+
+ * compile.h : add macro ADD_CALL
+
+ * debug.c : add debug_v() and change to use only printf
+ on debug_id()
+
+ * sample/test.rb :
+
+ * vm.c : fix make_proc_from_block
+
+
+2005-11-19(Sat) 14:55:17 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * import ruby 1.9.0 (2005-11-18)
+
+
+2005-11-19(Sat) 06:08:37 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * lib/test : added
+
+
+2005-11-19(Sat) 05:48:50 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : useless jump elimination (if/unless destination)
+
+ * eval.c : rb_iter_break support,
+ fix rb_iterate (clear errinfo if break)
+
+ * eval_proc.c : support rb_node_arity (YARV_METHOD_NODE)
+
+ * insns.def : change variable name
+
+ * vm.c : fix th_invoke_yield and add th_iter_break()
+
+ * vm_dump.c : fix yarv_bug()
+
+ * yarvcore.c : fix proc_mark to check IFUNC node and add
+ global ruby method SDR() for debug
+
+ * yarvtest/test_syn.rb : add a test for all condition combination
+
+
+2005-11-15(Tue) 05:52:58 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * lib/forwardable.rb : added
+
+ * common.mk : remove "vm.o : CFLAGS += -fno-crossjumping" rule
+
+ * compile.c, yarvcore.h, insns.def : add FCALL/VCALL flag
+
+ * compile.c, insns.def : add onceinlinecache instruction
+
+ * eval.c : support $!, $@, raise (== raise $!)
+
+ * opt_operand.def : add some unification rule (send flags)
+
+ * vm.c : fix return process
+
+ * vm_macro.def : fix option prameters
+
+ * yarvtest/test_method.rb : add tests for above
+
+
+2005-11-15(Tue) 00:42:49 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : support rb_frame_pop() and rb_frame_callee(),
+ add rb_sourcefile(), rb_sourceline(),
+
+
+ * compile.c : support postposition while/until,
+ fix block parameter index
+
+ * yarvtest/test_syn.rb : add tests for above
+
+ * yarvcore.c : fix env_mark
+
+ * vm.h, yarvcore.h : move vm.h#cmethod_info to
+ yarvcore.h#yarv_cmethod_info
+
+ * vm.c : add th_get_sourceline()
+
+ * eval_intern.h : fix PASS_PASSED_BLOCK()
+
+ * eval_load.c : fix re-enter require (temporalily)
+
+ * insns.def : permit re-open class when superclass is same
+
+
+2005-11-11(Fri) 01:20:15 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : add "allload" rule
+
+ * compile.c, yarvcore.h, insns.def, vm_macro.def, disasm.c :
+ change arg_rest, arg_block offset (1)
+
+ * insns.def : add postexe instruction
+
+ * insns.def, vm.c : support rest block parameter
+
+ * yarvtest/test_block.rb : add tests for above
+
+ * rb/allload.rb : get path from ARGV
+
+ * vm_opts.h.base : set default off
+
+
+2005-11-01(Tue) 08:28:19 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/other-lang/eval.rb : fix path
+
+ * lib/English.rb, lib/cgi.rb, lib/complex.rb, lib/delegate.rb :
+ added
+
+
+2005-11-01(Tue) 08:18:33 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : push and pop values after checkincludearray for
+ stack caching
+
+
+2005-10-31(Mon) 15:37:09 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_app_mandelbrot.rb : added
+
+ * benchmark/bm_app_factorial.rb : fixed parameter
+
+ * benchmark/bm_so_count_words.rb, benchmark/run_rite.rb : use
+ real file
+
+ * common.mk : add "ext" rule, add some dependencies and add option
+ to bench-each rule (renamed from bench-item)
+
+ * compile.c : fix get_root_iseq_object (check iseq type),
+ support splat case/when. support //o (regexp)
+
+ * eval.c : support *_eval, fix rb_obj_call_init to pass block
+
+ * eval_jump.h : support throw/catch
+
+ * eval_load.c : save klass_nest_stack when require
+
+ * eval_method.h : fix ruby_cbase()
+
+ * insnhelper.h : GET_EV_KLASS checks toplevel or not
+
+ * insns.def, yarvcore.c : fix singleton method definition and fix
+ super class's method
+
+ * lib/shellwords.rb : use String() instead of String.new()
+
+ * vm.c : check class iseq or not when making Proc and
+ add eval_search_super_klass function
+
+ * vm.h : CMETHOD_INFO_P to yarvcore.h
+
+ * vm_macro.def : splat if object type is T_ARRAY
+
+ * vm_opts.h, vm_opts.h.base : rename to vm_opts.h.base
+ insns2vm.rb will copy it to build directory
+
+ * yarvcore.c : add Proc#[]
+
+ * yarvcore.h : change INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE
+ to 512
+
+ * yarvtest/test_* : invalidate splat non array code (like: "*1")
+
+ * yarvtest/yarvtest.rb : use tempfile instead of popen
+
+
+2005-10-28(Fri) 09:11:53 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvtest/test_method.rb : fix test
+
+
+2005-10-28(Fri) 08:43:29 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run_rite.rb : add -I options to run benchmark
+
+ * common.mk : pass options to some rules with RUNOPT
+ and add -I options
+
+ * compile.c : fix massign with constant
+
+ * yarvtest/test_massign.rb : add tests for above
+
+ * eval_load.c : fix load_wait()
+
+ * eval_method.h : support ruby_cbase()
+
+ * lib/*.rb : add or modify libraries to run on yarv
+ * parse.y : change to ANSI C style
+
+ * vm.c : fix making proc process under cfunc/ifunc environment
+
+ * vm_macro.def : fix block pass
+
+ * yarvtest/test_method.rb : add tests for above
+
+ * yarvcore.c : add yarv_obj_is_proc()
+
+ * eval.c : fix rb_obj_is_proc to use yarv_obj_is_proc()
+
+
+2005-10-27(Thu) 11:50:15 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * some files : import from ruby 1.9.0 (2005-10-12)
+
+
+2005-10-16(Sun) 14:50:02 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, compile.c, yarvcore.h, yarvcore.c : add insns "bitblt" and "answer"
+
+
+2005-10-11(Tue) 17:01:13 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarv_version.h, Changes : 0.3.2
+
+
+2005-10-11(Tue) 13:35:25 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : add YARV_CHECK_INTS()
+
+ * thread.c, thread_pthread.h, thread_win32.h : kick timer thread
+ when another thread kicked
+
+ * vm.c : remove debug print
+
+ * vm_opts.h : add OPT_CALL_THREADED_CODE
+
+ * yarvtest/yarvtest.rb : remove "\r" from answer
+
+
+2005-10-07(Fri) 09:36:36 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h : add member variable "interrupt_flag" to yarv_thread_t
+
+
+2005-10-05(Wed) 21:20:13 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eva.c, eval_thread.c, ruby.h, eval_error.h, eval_jump.h,
+ eval_load.c, thread.c, error.c, compile.h : remove ruby_errinfo
+
+ * thread_win32.h, thread_pthread.h : set stack size to 4KB
+
+ * vm.c : fix making env routine
+
+ * vm_dump.c, vm.h : support frame type "EVAL" and fix magic number
+
+ * yarvcore.c : fix some mark/free routine
+
+
+2005-10-05(Wed) 09:08:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, eval_intern.h, vm.c, eval_jump.h, yarvcore.h :
+ re-define PUSH/POP/EXEC/JUMP_TAG to use thread local tag
+
+ * inits.c, yarvcore.c : fix boostrap
+
+
+2005-10-03(Mon) 22:28:24 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix NODE_COLON2 bugs
+
+ * compile.h : fix debug routine
+
+ * disasm.c : add space between insn and operand
+
+ * insns.def : add comment of classdef, singletonclassdef
+
+ * vm.c, yarv.h : fix invoke_light routine
+
+ * yarvcore.c : fix to mark each threads
+
+
+2005-10-02(Sun) 05:55:34 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread_pthread.h : add "system_working" global variable
+
+
+2005-10-02(Sun) 01:23:44 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c : add raw gets (for test), and fix indent
+
+
+2005-10-01(Sat) 23:06:21 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread_win32.h, common.mk : add thread_win32.h
+
+ * thread.c : support _WIN32 thread
+
+ * thread.c, thread_pthread.h : fix some interface
+
+ * eval_thread.c : remove debug print
+
+ * gc.c : fix stack region
+
+ * win32/Makefile.sub : add -MD flag to LDFLAGS
+
+ * yarvcore.c : fix mark and sweep debug print
+
+ * yarvcore.h : fix VM#living_threads data type to st_table
+
+
+2005-10-01(Sat) 00:25:28 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, yarvcore.h : rename GIL (Global Interpreter Lock) to
+ GVL (Global VM Lock)
+
+ * thread_pthread.h : fix pthread mutex initialize
+
+
+2005-09-30(Fri) 20:11:19 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c : support join with timeout
+
+ * yarvcore.h : use GET_VM()
+
+
+2005-09-30(Fri) 14:59:29 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * thread.c, common.mk : add thread.c
+
+ * thread.c, gc.c, eval_thread.c, yarvcore.c, yarvcore.h :
+ support native thread (on pthread)
+
+ * insns.def : add YARV_CHECK_INTS() check
+
+ * yarv.h : add GET_VM() macro
+
+
+2005-09-29(Thu) 22:43:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_intern.h, eval_thread.c : move thread_status to eval_intern.h
+
+ * yarvcore.c : fix thread/vm value
+
+ * yarvcore.h : add some parameter to yarv_thread_t
+
+
+2005-09-29(Thu) 01:52:33 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, yarvcore.h : add line number on last end instruction
+
+ * vm.c : fix line no detection
+
+
+2005-09-28(Wed) 00:02:10 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk, eval_load.c, eval.c, eval_intern.h : add eval_load.c
+
+ * disasm.c : fix around block local variables
+
+ * eval_proc.c : fix typo
+
+
+2005-09-27(Tue) 16:45:20 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : remove debug print
+
+
+2005-09-27(Tue) 16:41:47 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : support Kernel.local_variables
+
+ * parse.y, yarvcore.c : move some functions
+ (rb_(backref|lastline)_(get|set)) from parse.y to yarvcore.c
+
+ * yarvcore.h : fix typo of YARV_PREVIOUS_CONTROL_FRAME
+
+
+2005-09-26(Mon) 18:51:29 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c, compile.c, parse.y, vm.c, yarvcore.h :
+ eval() works with binding (Env)
+
+ * vm.c : add th_set_eval_stack
+
+ * yarvtest/test_syn.rb : remove an assert "defined?(local_var)"
+
+
+2005-09-25(Sun) 19:30:59 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_vm2_send.rb : added
+
+ * common.mk : add rule "bench-item"
+
+ * eval_intern.h : add PASS_PASSED_BLOCK()
+
+ * eval_proc.c : support some functions
+
+ * rb/mklog.rb : added
+
+ * vm.c : fix prototype style and coding style
+
+ * yarv.h : add some prototypes of functions
+
+ * yarvcore.c, yarvcore.h, eval.c : yarv_thread_t#ifuncnode -> passed_block,
+ and add yarv_proc_t#safe_level
+
+
+2005-09-25(Sun) 11:01:17 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * some files : import from ruby 1.9.0 (2005-09-25)
+
+ * eval*, vm.c, vm_macro.def : remove frame, scope, ...
+
+ * yarvcore.c : remove yarv_block_given_p()
+
+ * yarvcore.h, insnhelper.h : move some macro from insnhelper.h to yarvcore.h
+ to use these in eval.c
+
+
+2005-09-24(Sat) 15:51:42 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval* : remove dependency to ruby_dyna_vars and ruby_class
+
+
+2005-09-23(Fri) 20:39:14 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval_*.[ch] : split eval.c to some files
+
+ * *.[ch] : import ruby 1.9.0 (2004-09-23)
+
+ * parse.y : remove dependency to ruby_dyna_vars and ruby_scope
+
+
+2005-09-15(Thu) 16:51:06 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, yarvcore.h : fix "for" scope
+
+ * yarvtest/test_block.rb : add tests for above
+
+
+2005-09-14(Wed) 06:11:43 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, vm_evalbody.h, vm.h, vm_dump.c,
+ compile.c, yarvcore.c : use #ifdef insted of #if for recognize
+ vm options
+
+ * vm_opts.h : fix default options
+
+
+2005-09-10(Sat) 14:10:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm_opts.h : added
+
+ * yarvcore.h, rb/insns2vm.h : use vm_opts.h
+
+
+2005-09-10(Sat) 04:53:22 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, insns.def, compile.c : add DEFINED_YIELD
+
+ * yarvtest/test_yield.rb : add test_1_ary_and_1_params
+
+ * insns.def : fix splat and svalue
+
+ * vm.c : fix to perform with proc with ifunc (incomplete)
+
+ * sample/test.rb : added (comment out unsupported features)
+
+ * common.mk : add rule "runtest"
+
+
+2005-09-09(Fri) 19:32:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, compile.c : add splatarray
+
+ * yarvtest/test_massign.rb : add tests for above
+
+
+2005-08-31(Wed) 22:55:15 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c (yarvcore_eval_parsed): fix to return value
+
+ * yarv_version.h, Changes : 0.3.1
+
+
+2005-08-20(Sat) 10:19:27 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/ir.rb : add some check
+
+ * import today's ruby HEAD
+
+
+2005-08-18(Thu) 23:29:52 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : fix object file extension
+
+ * rb/ir.rb : added (import ruby script)
+
+ * rb/diff.rb : removed
+
+ * import today's ruby HEAD
+
+
+2005-08-18(Thu) 12:59:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk : rule test -> test2, test1 -> test
+
+ * compile.c : fix when clause bug and splat arugment
+
+
+2005-08-17(Wed) 05:22:31 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix block local parameter setting routine and support
+ massign in block parameter initialze
+
+ * yarvtest/test_yield.rb : add tests for above
+
+ * insns.def, compile.c : support array concat (ex: "[x, *y]")
+
+ * yarvtest/test_bin.rb : add tests for above
+
+
+2005-08-16(Tue) 19:51:19 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support nested massign
+
+ * yarvtest/test_massign.rb : add tests for above
+
+
+2005-08-16(Tue) 10:25:29 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : support rb_yield_0 with 0 args
+
+
+2005-08-16(Tue) 09:09:21 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * lib/fileutils.rb : imported
+
+ * insns.def : fix yield argument (same as last commit)
+
+ * yarvtest/test_yield.rb : add tests for above
+
+
+2005-08-16(Tue) 08:29:47 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : fix to support rb_yield_0 with multiple values
+
+ * common.mk : add parse, run1p ruelse
+
+ * compile.c : support yield with ARGSCAT/SPLAT
+
+ * vm.c, insns.def : fix yield arguments to do compatible behaviour
+
+ * yarvtest/test_yield.rb : added for above
+
+
+2005-08-16(Tue) 06:00:17 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : fix to set klass_nest_stack on singleton
+ method definition
+
+ * yarvtest/test_method.rb : add a test for above
+
+
+2005-08-16(Tue) 05:34:48 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test1.rb : added. gdb and run1 rule run this script
+
+ * compile.c : fix error handled variable access
+
+ * yarvtest/test_exception.rb : add tests for above
+
+
+2005-08-16(Tue) 04:26:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * base ruby : ruby 1.9.0 (2005-08-15)
+
+
+2005-08-16(Tue) 03:54:17 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * common.mk, Makefile.in : move some rules to common.mk
+
+ * rb/diff.rb : added
+
+ * yarvtest/yarvtest.rb : fix to compare output last value
+
+
+2005-08-15(Mon) 18:27:58 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * Changes : 0.3.0
+
+
+2005-08-15(Mon) 17:56:09 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : fix to add prototype
+
+ * all files : propset svn:eol-style native
+
+
+2005-08-15(Mon) 10:48:53 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * eval.c : support rb_load
+
+
+2005-08-15(Mon) 09:42:01 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h : define SDR()
+
+ * vm_dump.c : stack_dump_raw() -> vm_stack_dump_raw()
+
+ * yarvtest/yarvtest.rb : add rite test scheme
+
+ * benchmark/run_rite.rb : added
+
+ * yarvcore.c, inits.c : add Init_vm()
+
+ * yarv.h : add some prototype declarations, GET_THREAD()
+
+ * eval.c : remove unused functions
+
+ * eval.c : support Kernel.eval, some schemes (same as evalc.patch)
+
+
+2005-08-15(Mon) 00:53:28 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarv_version.h : move configurations to yarvcore.h
+
+ * yarvcore.c : remove VALUE yarv_get_current_running_thread() and
+ add yarv_thread_t *yarv_get_current_running_thread(), ...
+
+ * yarvcore.h : yarv_thread_t#vm -> vm_value
+
+ * compile.c : fix "break from nested classes"
+
+ * yarvext/extconf.rb : use have_func instead of defined?(YARV_PACHED)
+
+ * depend : fix pass
+
+ * eval.c : change to kick VM
+
+ * version.c : fix to show yarv version
+
+ * common.mk : fix dependent
+
+ * inits.c : fix to kick Init_yarvcore
+
+
+2005-08-14(Sun) 02:05:15 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * README : add description
+
+ * yarvext/depend : move to topdir/depend
+
+2005-08-14(Sun) 01:50:43 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * merge yarv to ruby (prepare)
+
+ * make yarvext/ to build as extension
+
+
+2005-08-13(Sat) 09:36:26 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * evalc.patch, insns.def, compile.c : fix to support current
+ ruby HEAD.
+
+ * 0.2.3
+
+
+2005-08-08(Mon) 19:13:02 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * version.h, Changes : 0.2.2
+
+
+2005-08-08(Mon) 17:17:50 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.h, vm.c, insns.def, yarvcore.h, yarvcore.c :
+ remove yarv_iseq_t#iseq_dt and add yarv_iseq_t#encoded.
+ use yarv_iseq_t#encoded anytime
+
+ * vm_evalbody.h, vm.h, extconf.rb, version.h :
+ support call threaded code (incomplete)
+
+
+2005-08-01(Mon) 05:26:12 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : support yield with multiple values
+
+ * compile.c : fix dynavars
+
+ * yarvcore.h : fix to mark defined method
+
+
+2005-07-31(Sun) 23:27:24 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c, vm.c, insns.def : fix search object path
+
+ * compile.c : fix "for" statement
+
+ * vm_macro.def : fix rest, opt arguments
+
+
+2005-07-31(Sun) 14:52:06 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm_macro.def : fix block parameter
+
+ * compile.c : fix to unuse compile_data->in_ensure
+
+ * insns.def : add orphan check when return
+
+
+2005-07-31(Sun) 03:25:05 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, compile.c, yarvcore.h, insns.def :
+ support jump from rescue/ensure/class/module
+
+ * test/test_flow.rb : add tests for above fix
+
+
+2005-07-30(Sat) 04:44:33 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h : struct iseq_compile_data_ensure_node_stack is added
+
+ * compile.c : insert ensure clause before break/next/redo
+
+ * vm.c : fix return/break handling
+
+ * yarv.h, vm.c : fix lightweight yield
+
+ * vm.c, insns.def, vm_macro.def : change arguments of th_set_env (add sp)
+
+ * test/test_flow.rb : added
+
+ * test/yarvtest.rb : add ae_flow
+
+ * compile.c, vm_macro.def : add tail-call/tail-recursion optimization
+ (experimental)
+
+
+2005-07-29(Fri) 20:14:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : make_name_for_block and make_name_with_str
+ are added
+
+ * insns.def : fix if unmatched size arg size to yield
+
+ * test/test_block.rb : add test for above fix
+
+ * vm.c : add th_backtrace_each and fix backtrace notation
+
+ * yarvcore.c : set top level iseq name to "<main>"
+
+
+2005-07-29(Fri) 13:20:19 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h : fix yarv_iseq_t to pass VC (cl)
+
+ * vm_dump.c : ditto
+
+ * compile.h : ditto
+
+ * insnhelper.h : ditto
+
+ * vm_evalbody.h : include 'math.h'
+
+ * insns.def, vm.c : raise error when yield without block
+
+ * vm.c : implement thread_backtrace
+
+ * vm.c, yarvsubst.c, yarv.h : implement thread_yield_light_prepare and
+ thread_yield_light_invoke
+
+ * yarvcore.c : Integer#times uses yarv specific version
+
+
+2005-07-28(Thu) 21:35:09 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : add another mark function for thread/stack
+
+ * vm_evalbody.h : fix register allocation for x86_64
+
+ * vm.h : use asm for tc on x86_64
+
+
+2005-07-28(Thu) 20:17:09 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : add mark/free message to debug gc
+
+ * insnhelper.h, insns.def, vm_macro.def : remove and
+ add new RESTORE_REGS
+
+ * vm_evalbody.h : fix register allocation
+
+
+2005-07-28(Thu) 02:00:42 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, etc : change VM stack structure. re-write all
+ vm functions to do it
+
+ * vm_macro.def : added
+
+
+2005-07-08(Fri) 01:36:49 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : don't use fmod on AMD64
+
+
+2005-07-08(Fri) 00:14:22 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * Changes : added
+
+
+2005-07-07(Thu) 23:54:37 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * version.h : 0.3.0
+
+
+2005-07-07(Thu) 23:52:03 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * 0.2.1 : released
+
+
+2005-07-07(Thu) 23:50:22 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * version.h : 0.2.1
+
+
+2005-07-07(Thu) 23:47:55 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/insns2vm.rb, extconf.rb : add --[enable|disable]-opt-unify-all-combination
+ and --disable-opts
+
+ * vm.h : DISPATCH_ARCH_DEPEND_WAY is only enabled on GCC 3.x
+
+
+2005-07-06(Wed) 13:20:27 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * depend, rb/eval.rb : add ITEMS option to benchmark rule
+
+ * benchmark/* : changed
+
+ * benchmark/other-lang/* : added
+
+
+2005-07-04(Mon) 04:02:15 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h. yarvcore.c : add idDIV, idMOD, idEq, idLength
+
+ * compile.c, insns.def : add specialized insn for above method id
+
+ * test/test_bin.rb : add tests for above
+
+
+2005-07-03(Sun) 20:31:09 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c, yarvcore.h : remove cYarvThrowObject (unused)
+
+ * yarvcore.c, yarvcore.h, insns.def :
+ thread_object#stack_mark_poinetr
+
+ * depend, rb/eval.rb : BOPT, TOPT -> OPT
+
+
+2005-07-03(Sun) 13:53:47 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, compile.h : INSN_OBJECT, LABEL_OBJECT -> INSN, LABEL,
+ ISEQ_LINK_ELEMENT, ISEQ_LINK_ANCHOR -> LINK_ELEMENT, LINK_ANCHOR,
+ and some fixes
+
+ * tmpl/optinsn.inc.tmpl : ditto
+
+ * yarvcore.c, yarvcore.h : remove label_object, insn_object
+ prepare_iseq_build, cleanup_iseq_build are added
+
+ * insns.def : remove unused variable from send
+
+
+2005-07-02(Sat) 04:19:22 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : add GC protect for opt_aset
+
+
+2005-07-02(Sat) 03:49:17 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * extconf.rb : add option -fno-reorder-blocks to vm.asm rule
+
+ * insns.def : fix opt_aset bugs
+
+ * test/test_bin.rb : add tests for aset, aref
+
+
+2005-07-02(Sat) 03:05:12 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run.rb : fix output
+
+ * vm_evalbody.h : add register for x86_64
+
+ * rb/asm_parse.rb : fix to shor size and length
+
+
+2005-07-02(Sat) 02:56:31 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : move specialized instruction point (new_insn_send)
+
+ * insns.def : add opt_aref, opt_aset
+
+
+2005-07-01(Fri) 11:04:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.h : fix to pass VALUE type to new_insn_body
+
+ * insnhelper.h : add cast
+
+ * compile.c : fix getdynamic argument (0 == Qfalse -> I2F(0))
+
+
+2005-06-30(Thu) 23:34:10 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/eval.rb : add and fix some rules
+
+ * rb/insns2vm.rb : generate all
+
+ * benchmark/run.rb : add -r (ruby only) option
+
+
+2005-06-30(Thu) 23:25:23 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * tmpl/vmtc.inc.tmpl : add const prefix
+
+ * /rb/asm_parse.rb, extconf.rb : added and make assembler analised output
+
+ * opt_operand.def : add send operands unification
+
+ * insnhelper.h : add HEAP_CLASS_OF(obj)
+
+ * insns.def : fix opt_plus, opt_ltlt
+
+ * vm_evalbody.h : move _tag
+
+ * benchmark/run.rb : fix file select
+
+
+2005-06-30(Thu) 06:07:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * extconf.rb : add collect-usage-analysis option
+
+ * opt_operand.def, opt_insn_unif.def : add some rules
+
+
+2005-06-29(Wed) 23:28:44 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, extconf.rb, vm.h, compile.c :
+ DISPATCH_DIRECT_THREADED_CODE, DISPATCH_THREADED_CODE
+ -> OPT_DIRECT_THREADED_CODE, OPT_INDIRECT_THREADED_CODE.
+ if at least one of then is defined, OPT_THREADED_CODE is defined
+
+ * benchmark/* : fix name and parameters
+
+ * rb/eval.rb : added for YARV evaluation
+
+
+2005-06-29(Wed) 16:16:52 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run.rb : fix output format
+
+ * call_cfunc.inc -> call_cfunc.h
+
+ * vm.h : add sign by asm statement
+
+
+2005-06-28(Tue) 22:28:40 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : fix method search
+
+
+2005-06-28(Tue) 22:26:34 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * extconf.rb : fix options
+
+
+2005-06-28(Tue) 21:50:58 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run.rb : fix output format
+
+
+2005-06-28(Tue) 21:34:54 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * depend : add option TOPT to test rules
+
+ * benchmark/run.rb : fix output format
+
+
+2005-06-28(Tue) 21:15:54 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix opt_case_dispatch instruction
+
+ * benchmark/run.rb : output all usertimes when exit benchmark
+
+
+2005-06-28(Tue) 20:35:55 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * extconf.rb, compile.c, tmpl/optinsn.inc.tmpl, vm.c :
+ change extconf options
+
+2005-06-28(Tue) 13:20:59 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run.rb : add -y, --yarv-only option
+
+ * depend : add BOPT to tbench rule
+
+
+2005-06-27(Mon) 23:31:12 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * depend : add gdb rule
+
+ * vm.h : use inline assembler for x86 (to support gcc 3.4.x)
+
+
+2005-06-27(Mon) 20:04:10 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c, compile.c, disasm.c : remove unused variables
+
+ * vm.h, insnhelper.h, debug.h : fix to reduce warning
+
+ * vm.c, vm_dump.c : move VM state dump (debug) functions to vm_dump.c
+
+ * depend : adde reconf rule
+
+ * insnhelper.h :
+
+ * vm_evalbody.inc : rename to vm_evalbody.h
+
+
+2005-06-27(Mon) 16:50:31 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns2vm.rb : fix generating unif insn
+
+ * compile.c : add useless pop/swap insn elimination with stack caching
+
+ * depend : remove compiled.o dependency
+
+
+2005-06-26(Sun) 14:06:22 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run.rb : use tmpfile instead of popen
+
+ * rb/insns2vm.rb : fix generating insn unification logic
+
+ * opt_insn_unif.def : add some unification rules
+
+ * compile.c : add verify_list function and fix unification logic
+
+
+2005-06-22(Wed) 12:58:26 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, yarvcore.c, insns.def, compile.c : add mult optimization
+
+ * test/test_bin.rb : add test_fact
+
+
+2005-06-21(Tue) 22:34:07 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, compile.[ch], tmpl/optinsn.inc.tmpl, rb/insns2vm.rb :
+ change data structure (don't use Ruby's array to represent a
+ instruction sequence)
+
+ * disasm.c : add separator
+
+
+2005-06-14(Tue) 07:48:58 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support "for" statement
+
+ * test/test_block.rb : add test for above
+
+ * yarvcore.[ch] : add global id idEach
+
+
+2005-06-08(Wed) 22:30:44 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : add if/unless(L1) jump (L2) :L1 => unless/if(L2)
+ optimize (condition reversal) and fix typo
+
+
+2005-06-07(Tue) 08:29:41 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : fix to remove compiler warning
+
+ * version.h : 0.2.1
+
+
+2005-06-07(Tue) 08:16:22 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h : iseq_link_element changed to double linked list
+
+ * disasm.c : support dump struct iseq_link_element
+
+ * compile.c : use double linked list instead of array
+ for intermediate representation
+
+
+2005-06-06(Mon) 15:38:44 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, yarvcore.c : add link structure to insn and label object
+
+ * compile.h, compile.c : remove some variables in function top scope
+ of iseq_compile_each and some optimization (now working)
+
+
+2005-06-04(Sat) 16:12:59 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix previous commit
+
+
+2005-06-04(Sat) 15:56:21 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix stack caching (after jump state)
+
+
+2005-06-04(Sat) 09:12:13 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix some point for previous commit
+
+
+2005-06-04(Sat) 07:31:21 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def : optimize case/when statement
+ (dispatch on constant time)
+
+ * yarvcore.h, disasm.c, rb/insns2vm.rb : fixed for above
+ (CDHASH)
+
+ * test/test_syn.rb : add test for above
+
+
+2005-06-04(Sat) 03:41:29 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, yarvcore.c : add some temporary variable test
+ (it'll be vanished)
+
+ * compile.c : NODE_CASE optimize (use topn instead of dup/swap)
+
+
+2005-06-03(Fri) 00:54:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : apply flow optimization for while/until statement
+
+
+2005-03-04(Fri) 19:34:32 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/insns2vm.rb : fix category (comment)
+
+ * depend : remove space betweeen target name and colon
+
+
+2005-03-04(Fri) 15:55:51 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * tmpl/yarvarch.ja : fix typo
+
+
+2005-03-04(Fri) 13:30:19 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * depend : add a rule for jitcompile.o
+
+ * vm.h : fix a macro argument
+
+ * version.h : 0.2.0
+
+
+2005-03-03(Thu) 08:35:14 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * extconf.rb : remove vm_evalbody.inc call_cfunc.inc from clean target
+
+
+2005-03-03(Thu) 00:54:15 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * tmpl/insns.inc.tmpl : fixed typo
+
+ * insns.def : store th->pc to current pc
+
+
+2005-03-03(Thu) 00:31:47 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * tmpl/yarvarch.ja, doc/yarv.rb : write current architecture of yarv
+
+
+2005-03-01(Tue) 13:50:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c (yarvcore_eval_parsed) : added
+ (separeted from yarvcore_eval)
+
+ * yarvcore.c, compile.c : iseq_translate_direct_threaded_code
+ is moved to compile.c
+
+ * depend : add rule for yasmdata.rb
+
+ * rb/yasm.rb : support top-level and method-level assemble
+
+
+2005-02-26(Sat) 08:09:57 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/insns2vm.rb, compile.c, vm.h : change type long to OFFSET
+
+ * tmpl/yasmdata.rb.tmpl : added
+
+ * rb/insns2vm.rb : add yasmdata_rb method
+
+ * rb/yasm.rb : fix some interface (incomplete)
+
+ * compile.c : iseq_setup added
+
+ * yarvcore.c : YARVCore::InstructionSequence::Instruction#make added
+
+
+2005-02-24(Thu) 07:45:37 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/yasm.rb : added
+
+
+2005-02-24(Thu) 01:13:33 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : remove useless statements
+
+
+2005-02-24(Thu) 00:46:44 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/insns2vm.rb (InsnInfo) : add @is_sc attr and remove
+ is_sc method
+
+ * compile.c : fix NODE_CASE/NODE_WHEN bug (cond at 'when'
+ must not be popped)
+
+ * compile.c : support NODE_OP_ASGN1 to &&= and ||=
+
+ * test/test_bin.rb : add tests for above
+
+
+2005-02-23(Wed) 09:17:01 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, yarvcore.c : thread_svar added and fix svar location
+
+
+2005-02-21(Mon) 08:38:02 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h : make type "struct iseq_compile_data"
+
+ * yarvcore.h : iseq_object#insn_info_ary to iseq_object#insn_info_tbl
+
+
+2005-02-21(Mon) 05:24:01 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c (compile_string) : remove null check of node
+
+
+2005-02-19(Sat) 03:52:45 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * version.h : 0.1.1
+
+
+2005-02-18(Fri) 20:57:18 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, yarvcore.c : add idLTLT, idMethodMissing
+
+ * compile.c : suopport lval (or others) block parameter
+
+ * test/test_block.rb : add tests for above
+
+ * insns.def (send) : support method_missing
+
+ * test/test_method.rb : add tests for above
+
+ * insns.def : opt_ltlt and
+
+
+2005-02-18(Fri) 08:54:40 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/runc.rb : added
+
+ * benchmark/contrib/pentomino.rb : added opt_ltlt
+ and Float, String plus specialization
+
+
+2005-02-18(Fri) 07:49:42 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : remove debug print
+
+ * rb/aotcompile.rb : skip if yarvcore.so is not created
+
+
+2005-02-18(Fri) 06:46:13 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix block passing
+ and block argument
+
+
+2005-02-18(Fri) 05:52:41 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : thread_get_ev_const, thread_get_ev_defined is added
+ (separated from insns.def)
+
+ * insnhelper.h : GET_EV_KLASS(klass) is added
+ (separated from insns.def)
+
+ * yarvcore.h, insns.def, compile.c : support defined? expression (limited)
+
+ * test/test_syn.rb : tests for above is added
+
+ * compile.c, insns.def : support block passed method dispatch
+
+ * test/test_method.rb : tests for above is added
+
+ * compile.h : CALL_ARGS_SPLAT is removed
+
+
+2005-02-16(Wed) 13:32:37 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * disasm.c : fix ID to String method
+
+ * compile.c : NODE_SUPER, NODE_ZSUPER check 'poped'
+ and NODE_RETURN check outer type
+ and NODE_DREGX_ONCE supported (temporarily)
+
+ * test/test_syn.rb : add a test
+
+ * test/test_jump.rb : add a test
+
+
+2005-02-16(Wed) 06:07:41 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.[hc] : use Symbol instead of Fixnum to represent ID
+
+ * rb/insns2vm.rb : add attr_reader :insns, :insn_map
+
+ * vm.h, rb/insns2vm.rb : END_INSN have one arg
+
+ * jitcompile.c : jit compiler framework (experimental)
+
+ * rb/aotcompile.rb : refactoring
+
+ * compiled.c : add constant pool
+
+ * vm_evalbody.inc, call_cfunc.inc, vm.c : separeted from vm.c
+
+ * insns.def : fix return val
+
+ * depend : add rules for compiled.o
+
+
+2005-02-14(Mon) 13:09:01 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insnhelper.h, yarvcore.h: move YARV_METHOD_NODE to yarvcore.h
+
+ * yarvcore.h : add 2 members jit_compiled and iseq_orig
+ to struct iseq_object
+
+ * yarvcore.c : add yarv_jitcompile and global function jitcompile
+
+ * insns.def : insn opt_call_native_compiled added
+
+ * jitcompile.c : added
+
+
+2005-02-12(Sat) 05:38:51 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (putstring) : fixed to duplicate string object
+
+ * rb/insns2vm.rb, tmpl/optunifs.inc.tmpl, compile.c : support
+ instructions unification (aka super instruction)
+
+ * opt_insn_unif.def : added for above
+
+ * benchmark/bm_unif1.rb : added to measure efficiency of unification
+
+ * depend : fixed for above
+
+ * extconf.rb : add option --(enable|disalbe)-opt-insns-unification
+
+
+2005-02-11(Fri) 12:14:39 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c, vm.c, insns.def : permit to access svar from
+ cfunc environment
+
+ * test/test_method.rb : add tests for above
+
+
+2005-02-09(Wed) 19:31:06 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * ite.rb : added (ruby -rite [script file])
+
+
+2005-02-09(Wed) 02:25:43 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.[hc] : add member compile_data (hash) to iseq_object
+
+ * compile.c, yarvcore.h : check label is already set
+
+ * compile.c, extconf.rb : support __goto__ and __label__ statement
+
+
+2005-01-25(Tue) 12:49:27 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_block.rb : add break test to test_times
+
+
+2005-01-25(Tue) 03:34:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * extconf.rb : check ruby version if yarv patch is applied or not
+
+ * evalc.patch : fixed for rb_call_super and above check
+
+
+2005-01-25(Tue) 03:21:48 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/insns2vm.rb : refactoring (mainly, make InsnsDef::InsnInfo
+ to represent each instruction information)
+
+ * depend, rb/makedocs.rb : fixed for above
+
+ * yarvcore.c (thread_call_super) : added
+
+ * vm.c (thread_call_super) : added
+
+ * vm.h : add struct cmethod_info
+
+ * insns.def, vm.c : use cmethod_info to represent C method info
+
+ * insns.def : use iseq_object#klass_nest_stack
+ to search super/zsuper's class
+
+ * prosym.rb : removed
+
+ * ToDo : write todo things on wiki
+
+
+
+2005-01-18(Tue) 23:44:47 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run.rb : check ENV['RUBY'] to use ruby binary
+
+
+2005-01-10(Mon) 08:44:40 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * version.h : 0.1.0
+
+
+2005-01-09(Sun) 22:01:29 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * repository : svn propset svn:eol-style native *.c *.h tmpl/*.tmpl
+
+
+2005-01-09(Sun) 21:48:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : FREE_UNLESS_NULL, MARK_UNLESS_NULL macros are added
+
+ * yarvcore.c : some insn/label methods are added
+
+ * yarvcore.h : add structure menber "insns_ary" to iseq_object
+
+ * vm.c, insns.def (thread_eval_body) : return values with throw
+
+ * prosym.rb : added
+
+ * insns.def : add YARV_AOT_COMPILED and some procedure
+
+ * depend : add compiled.c
+
+ * compiled.c : added to build compiled Ruby program (C source)
+ by AOT compiler
+
+ * rb/aotcompile.rb : AOT compiler
+
+ * aotct.rb, rb/aotctest.rb : test and benchmark AOT compiler
+
+ * rb/allload.rb : added
+
+
+2005-01-09(Sun) 08:30:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c (yarv_yield_values) : added
+
+ * vm.c (thread_call0) : change interface. substitute rb_call0 in
+ yarv environment
+
+ * yarvcore.c (yarv_call0) : fix for above
+
+ * yarvcore.c (yarv_call0_cfunc) : removed
+
+ * yarvcore.c : change passing items for yarv_setup
+
+ * evalc.patch : fix for above
+
+ * benchmark/bm_lists.rb : fix (unsupport block passing)
+
+ * benchmark/run.rb : use full path to ruby
+
+ * insns.def (yield): raise error if argc > expected argc
+
+
+2005-01-08(Sat) 16:07:48 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * extconf.rb : add descrioptions
+
+ * compile.c : fix bugs (getinlinecache operands)
+
+ * yarvcore.c : initial value of yarvGlobalStateVersion
+ to 1
+
+
+2005-01-08(Sat) 14:39:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c, vm.c, evalc.patch : support making backtrace
+ (incompatible with current ruby interpreter)
+
+
+2005-01-08(Sat) 11:25:46 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * evalc.patch : commit for previous commit change
+
+ * yarvcore.h, compile.c, insns.def : MC to IC (inline cache),
+ and changed to using IC by set/getinlinecache
+
+
+2005-01-08(Sat) 10:04:33 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : add global variable sym[IC]FUNC
+
+ * yarvcore.c (yarv_iterate, yarv_call0_cfunc) : added
+ (each called from rb_iterate, rb_call0 with NODE_CFUNC)
+
+ * vm.c (stack_dump_raw) : fixed to prints more detail
+
+ * vm.c (stack_dump_th, stack_dump_thobj) : added to
+ dumps thread_object states (for VALUE, struct pointer)
+
+ * vm.c (thread_dump_regs) : added
+
+ * vm.c (thread_call0, thread_call0_cfunc, thread_invoke_yield,
+ thread_invoke_yield_cfunc), insns.def (yield, send) :
+ fixed, added to support IFUNC
+
+ * vm.c, yarvcore.c, insns.def : change type purpose
+ thread_object#block_ptr (it holds IFUNC block information,
+ so this type was changed to 'NODE *')
+
+ * vm.c (stack_dump_each) : fixed for above
+
+ * test/test_block.rb (test_ifunc) : test for above
+
+ * vm.c (get_block_objec, thread_make_env_object) : fixed bugs
+
+ * test/test_bin.rb (test_xstr) : remove `ls` test
+
+
+2005-01-06(Thu) 21:35:18 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarv : trying to support NODE_IFUNC (rb_iterate)
+
+
+2005-01-05(Wed) 06:50:42 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, insns.def, disasm.c, rb/insns2vm.rb, compile.[ch] :
+ support inline method cache
+
+ * extconf.rb : add -*-inline-method-cache (default: enable)
+
+ * test/test_method.rb : add a test for above
+
+ * benchmark/bm_poly_method.rb : added
+
+ * yarvcore.c : add option string
+
+
+2005-01-04(Tue) 17:15:41 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, compile.c : add compile_array and duparray insn
+ to optimize only literal array creation
+
+ * benchmark/bm_array.rb : added
+
+
+2005-01-04(Tue) 10:02:40 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * README : fix version
+
+
+2005-01-04(Tue) 09:57:25 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * ToDo : reflect current status
+
+
+2005-01-04(Tue) 09:43:54 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support NODE_VALUES, NODE_ARGSCAT, NODE_SPLAT
+
+ * test/test_massign.rb : add tests for above
+
+ * benchmark/bm_swap.rb : added
+
+
+2005-01-04(Tue) 06:25:45 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.h : COMPILE_ERROR break contol (instead of return)
+
+ * compile.c : support NODE_MASGN
+
+ * insns.def : change expandarray for massign and add topn insn
+
+ * test/test_massign.rb : added
+
+
+2005-01-03(Mon) 21:20:28 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : store block when create proc
+
+ * test/test_proc.rb : add a test for above change
+
+ * yarvcore.c : add global function "once"
+
+
+2005-01-02(Sun) 00:40:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_super.rb : fix bug (remove infinite loop)
+
+
+2005-01-01(Sat) 23:45:49 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_z?super.rb : added
+
+
+2005-01-01(Sat) 23:37:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bmx_so_object.rb : rename to benchmark/bm_so_object.rb
+
+
+2005-01-01(Sat) 23:19:02 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support NODE_OP_ASGN2, NODE_OP_ASGN_AND, NODE_OP_ASGN_OR,
+ NODE_SUPER, NODE_ZSUPER, NODE_MATCH
+
+ * insns.def : support super, zsuper (currently, super can't
+ handle with block)
+
+ * test/test_bin.rb : add test for op_asgin2, op_assgin_and/or
+
+ * test/test_class.rb : add test for super, zsuper
+
+
+2005-01-01(Sat) 20:39:29 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support NODE_MATCH
+
+ * yarvcore.c : fix yarv_svar bug (fix condition boundary)
+
+ * insnhelper.h : save cfp/lfp/dfp vars to thread_object (th)
+
+
+2005-01-01(Sat) 20:03:10 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * version.h : 0.0.1
+
+ * yarvcore.h : add idIntern declaration
+
+ * insns.def : add getspecial, setspecial.
+ implement getclassvariable, setclassvariable.
+ store lfp before reg match (opt_regexpmatch1)
+
+ * compile.c : support ditto, flipflop
+
+ * yarvcore.c : support svar
+
+ * test/test_syn.rb : add test for flipflop
+
+ * test/test_bin.rb : add test for dsym, cvar, backref
+
+
+2005-01-01(Sat) 09:09:32 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : add getspecial insn
+
+ * compile.c : support NODE_NTH_REF, NODE_BACK_REF
+
+
+2005-01-01(Sat) 06:53:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, compile.c : support alias, undef
+
+ * test/test_method.rb : test for above
+
+ * rb/insns2vm.rb : fix enbug
+
+
+2005-01-01(Sat) 06:00:32 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_jump.rb : add test (next with value)
+
+ * yarvcore.h, yarvcore.c, compile.c, compile.h :
+ raise compile error exception instead of rb_bug
+
+ * yarvcore.c, evalc.patch : support "require"
+
+ * test.rb : restore $" after evaluation with ruby
+
+ * rb/insns2vm.rb : remove unnecesary each
+
+
+2004-12-17(Fri) 18:56:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : fix newhash
+
+
+2004-12-15(Wed) 13:29:27 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : add version string
+
+ * compile.c : fix rescure clause bug
+
+
+2004-12-14(Tue) 22:46:30 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : add reput insn
+
+ * vm.h : show stack cache registers when stack dump
+
+ * rb/insns2vm.rb, compile.c : fix stack caching bugs
+
+
+2004-12-14(Tue) 00:51:58 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns2vm.rb, compile.c, tmpl/opt_sc.inc.tmpl : fix bugs
+
+ * rb/mixc-asm.rb : added
+
+
+2004-12-14(Tue) 00:17:02 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, yarvcore.c, compile.c : fix SC bugs
+ (SC state management)
+
+ * extconf.rb : add option -[enable|disable]-opt-stack-caching
+
+ * insns2vm.rb : accept CPPFLAGS options
+
+ * vm.c : support restrore register for pc
+
+
+2004-12-13(Mon) 16:53:42 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/insns2vm.rb : add macro INSN_IS_SC()
+
+
+2004-12-11(Sat) 10:51:44 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, compile.c : support singleton method definition
+
+ * test/test_method.rb : add test for above
+
+
+2004-12-11(Sat) 03:17:54 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/*.rb : modify
+
+ * extconf.rb : add $cleanfiles
+
+
+2004-12-08(Wed) 13:01:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def : change to disable stack caching
+
+
+2004-12-07(Tue) 19:37:13 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/insns2vm.rb : add default after
+
+ * insns.def : fix to work on stack caching
+
+
+2004-12-07(Tue) 15:07:13 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * depend : add some dependency to *.inc files
+
+ * vm.c : add "register" and asm("regname") descriptor
+
+ * rb/insns2vm.rb, compile.c : add stack caching support
+
+ * tmpl/opt_sc.inc.tmpl : added to above change
+
+ * rb/makedocs.rb : fix file path
+
+ * extconf.rb : fix option selection
+
+
+2004-12-06(Mon) 11:20:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * extconf.rb : add vm.asm target if compiler is gcc
+
+
+2004-12-06(Mon) 09:56:24 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.h : rename method_frame's member block to block_ptr
+
+ * extconf.rb : add "-fno-crossjumping" option when compiler
+ is gcc
+
+ * opt_operand.def : add unification insn send
+
+ * rb/insns2vm.rb : define symbol instead of declare const
+ variable (for more optmize on VC)
+
+ * insns.def : move enter point in send
+
+
+2004-12-06(Mon) 04:53:51 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, opt_operand.def, rb/insns2vm.rb, depend :
+ support operand unification
+
+
+2004-12-05(Sun) 03:16:10 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, insns.def : speed up throw/catch scheme
+
+
+2004-12-05(Sun) 01:47:05 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : fix catch handler bugs
+
+ * test/test_jump.rb : test_complex_jump added
+
+
+2004-12-03(Fri) 20:39:05 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/contrib/mcq.rb : added
+ (from URABE Syouhei)
+
+
+2004-12-03(Fri) 20:35:28 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : support break in rb_yield block
+
+
+2004-12-03(Fri) 14:26:35 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support block local variable in current
+ ruby specification (patche from Kent Sibilev)
+
+ * insns.def : support attr_* (patch from Kent Sibilev)
+
+
+2004-12-02(Thu) 21:04:27 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * opt_operand.def : added
+
+
+2004-12-02(Thu) 13:20:41 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c, vm.h, vm.c, insns.def, insnhelper.h, yarvutil.rb :
+ add usage analisys framework
+
+ * disasm.c : insn_operand_intern to separate function
+
+ * benchmark/run.rb : run each benchmark on another process
+
+
+2004-12-01(Wed) 10:26:49 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : yield check block is given
+
+ * benchmark/bm_lists.rb : rename to bmx_lists.rb
+ (because it's not work ... bug?)
+
+ * insns.def : opt_* support other type calc
+
+
+2004-11-30(Tue) 16:14:54 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_so_array.rb : added
+
+ * benchmark/bm_so_matrix.rb : added
+
+
+2004-11-30(Tue) 14:11:30 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/getrev.rb : added
+
+ * yarvcore.c : add YARVCore::REV, YARVCore::DATE constant
+
+
+2004-11-30(Tue) 13:05:42 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support NODE_OP_ASGN1 (incomplete)
+
+ * insns.def : add dupn
+
+
+2004-11-30(Tue) 08:52:01 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * version.h : 0.0.0.f
+
+
+2004-11-30(Tue) 08:43:59 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_class.rb : add test_initialize and test_to_s
+
+ * yarvsubst.c : use rb_funcall instead of yarv_funcall
+
+ * evalc.patch : fix ruby's patch
+
+ * benchmark/bm_so_*.rb : change naming rule. "bm_so_*" from
+ language shootout
+
+ * depend : tbench target item is ITEM env val (default: bmx_temp)
+
+ * vm.c : show raw address if environment is in heap at dumping stack trace
+
+ * vm.c : thread_call0 added
+
+ * vm.c : fix thread_yield_light_invoke
+
+ * yarv.h, yarvcore.c : remove yarv_funcall
+
+
+2004-11-29(Mon) 11:37:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test/test_proc.rb : add test test_nestproc
+
+ * yarvsubst.c : comment out yarv_Array_each
+
+ * insns.def : restore lfp/dfp after call_cfunc
+
+ * vm.c : fix stack dump routine
+
+ * vm.c : impliment thread_funcall (temporarily)
+
+ * yarv.h : add IS_YARV_WORKING(), SET_YARV_START(), SET_YARV_STOP()
+
+ * yarvcore.c : remove check with yarv_in_work
+
+ * evalc.patch : added
+
+
+2004-11-27(Sat) 00:19:52 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.c : free -> ruby_xfree
+
+
+2004-11-26(Fri) 02:11:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm,c : fix bug
+
+
+2004-11-22(Mon) 11:19:48 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/bm_ackermann.rb, bm_proc.rb, bm_simpleiter.rb,
+ bm_so_exception.rb, bm_wc.rb, wc.input added
+
+
+2004-11-22(Mon) 02:31:56 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_proc.rb : add some test
+
+ * yarvcore.c, vm.c : support yield in C method (as rb_yield)
+
+ * vm.c (thread_yield_light_(prepare|invoke)) : support lightweight
+ yield
+
+ * yarv.h : added
+
+ * yarvcore.c, yarv.h : support yarv_is_working, yarv_block_given_p,
+ yarv_yield, yarv_funcall (only dummy function)
+
+ * vm.c : thread_eval_body changed return value
+
+ * yarvsubst.c : added and add yarv_Integer_times, yarv_Array_each
+
+ * yarvcore.h : block_ptr is added to struct thread_object
+
+ * insns.def : pass block when C method call
+
+ * insnhelper.h : add GET_ISEQOBJ(cfp) macro
+
+
+2004-11-21(Sun) 07:25:49 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c : support Proc#call
+
+ * test/test_proc.rb : added
+
+
+2004-11-19(Fri) 18:04:10 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def, vm.c : support creating Proc object
+
+
+2004-11-15(Mon) 14:19:27 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def (send) : use clear_local_size to specify
+ clear local table vars.
+
+ * insns.def : block represent data shares lfp, dfp with frame data
+
+
+2004-11-13(Sat) 18:19:41 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, insns.def : add VM_CALL_ARGS_SPLAT_BIT and
+ VM_CALL_ARGS_BLOCKARG_BIT
+
+ * compile.c, compile.h : add ADD_SEND, ADD_SEND_R
+
+
+2004-11-10(Wed) 08:26:25 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * add "vm_" prefix to (block_object, proc_object, env_object)
+
+
+2004-11-03(Wed) 15:52:14 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, yarvcore.c, disasm.c, compile.c, insns.def, vm.c :
+ fix to move x86_64 (illegal cast, etc)
+
+
+2004-11-01(Mon) 04:45:54 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, compile.c, debug.c, version.h :
+ redesgin gc debug scheme (GC_CHECK())
+
+ * yarvcore.c : mark iseqobj->current_block on GC
+
+ * insns.def, compile.c : last "throw" in ensure/rescue block
+ use operand throwobj and before this insn, use "getdynamic 0, 1"
+
+ * benchmark/bm_temp.rb : move to benchmark bmx_temp.rb
+
+ * depend : change some targets
+
+
+2004-10-25(Mon) 19:57:58 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : push exception iseq to iseqobj->iseq_mark_ary
+ to mark for GC
+
+
+2004-10-10(Sun) 16:25:03 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : remove $_, $' area from method local frame
+ and provide that's special method local variables pointer(LFP[-1])
+
+ * disasm.c : change environment showing format
+
+ * yarvcore.(h|c) : add YarvProc, YarvEnv
+
+ * yarvcore.h : add arg_block field to iseq_object
+ and init -1 as default value
+
+
+2004-09-30(Thu) 19:50:48 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def : support passing splat argument
+
+ * compile.c, insns.def : support rest argument
+
+ * compile.c, insns.def : support optional argument initializer
+
+ * test/test_method.rb : add tests for above
+
+
+2004-09-29(Wed) 10:50:03 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix rescue clause popped
+
+ * benchmark/bm_random.rb : move to benchmark/bmx_random.rb
+
+
+2004-09-29(Wed) 01:25:35 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * many many files: change stack frame design
+
+
+2004-09-16(Thu) 08:51:37 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, yarvcore.h : support 'return' from method
+ in ensure clause
+
+
+2004-09-13(Mon) 21:56:40 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support inline cache constant access
+ on NODE_COLON2, NODE_COLON3
+
+ * depend : add 'vtest' rule(verbose test)
+
+
+2004-09-13(Mon) 10:58:44 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, yarvcore.h : support redo/next/break in
+ while/until
+
+
+2004-09-13(Mon) 08:50:19 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_jump.rb : added(correctly)
+
+ * benchamark/bm_(ensure|rescue|simplereturn).rb added
+
+
+2004-09-12(Sun) 23:30:20 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_jump.rb : added
+
+ * insns.def, compile.c : add 'putnil' insn
+
+ * compile.c : use '===' when rescue check
+
+ * insns.def : remove 'rescuecheck' insn
+
+ * compile.c : support retry in begin/rescue clause
+
+ * ToDo : added
+
+
+2004-09-08(Wed) 12:34:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvcore.h, yarvcore.c : add idThrow*
+
+ * insns.def, compile.c, vm.c : support retry, break,
+ next, redo, return(imcomplete)
+
+
+2004-09-03(Fri) 13:40:08 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : add nop after rescue body
+
+ * insns.def, vm.c : support stack rewind when thrown
+
+
+2004-09-01(Wed) 17:31:01 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_exception.rb : added
+
+
+2004-09-01(Wed) 13:15:14 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.c, insns.def : implementing exception handling
+
+
+2004-09-01(Wed) 00:18:54 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : add 'throw' insn
+
+ * compile.c : support 'rescue' and 'ensure' clause
+
+ * yarvcore.c, yarvcore.h : add 'catch_table' to iseq_struct
+
+
+2004-08-30(Mon) 19:06:12 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.h : NEW_ISEQOBJ don't pass self as parent
+
+ * compile.c : use NEW_CHILD_ISEQOBJ explicitly
+
+
+2004-08-29(Sun) 21:09:55 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : trying to implement rescue/ensure
+
+ * insns.def : fix yield bug(lfp, dfp link)
+
+
+2004-08-28(Sat) 13:52:15 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix dvar bug
+
+ * test/test_block.rb : add test
+
+ * insns.def, insnhelper.h : remove unused source code
+
+
+2004-08-28(Sat) 08:51:26 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support NODE_DASGN
+
+ * test/test_block.rb : add test
+
+
+2004-08-28(Sat) 08:13:04 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def : support access to instance variable
+
+ * test/test_class.rb : add test of instance variable
+
+ * benchmark/bm_block.rb : added
+
+
+2004-08-28(Sat) 07:48:43 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_block.rb : fix block parameter name
+
+
+2004-08-28(Sat) 07:27:52 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c, insns.def : support method call with block
+ and yield and add some functions
+
+ * compile.c, insns.def : support dynavars accessor
+
+ * test/test_block.rb : added
+
+ * vm.c : fix block parameter stack dump
+
+
+2004-08-27(Fri) 23:56:47 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c(iseq_compile) : remove parameter iseqtype
+ (this information can access via self)
+
+2004-08-27(Fri) 17:13:35 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_bin.rb : add test(absolute path constant)
+
+ * yarvcore.h, compile.c(iseq_compile) : change parameter
+
+ * insns.def(classdef) : fix bug
+
+
+2004-08-27(Fri) 04:53:13 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : support setconstant, getconstant, classdef,
+ moduledef
+
+ * vm.h : fix debug levels and so on
+
+ * vm.h : foo_WORD -> foo_WC
+
+ * test/test_class.rb : added
+
+
+2004-08-25(Wed) 17:51:50 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : fix getconstant/setconstant/classdef
+
+
+2004-08-25(Wed) 14:27:10 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * debug.[ch] : added
+
+ * compile.c, disasm.c : use debug interface
+
+ * compile.c : support some nodes
+
+ * compile.c, rb/insns2vm.rb : remove TS_CPATH
+
+ * insns.def : modify classdef/moduledef/singletonclassdef
+ and add popcref
+
+ * and others...
+
+
+2004-08-18(Wed) 20:16:45 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix case/when statement with empty else clause
+
+ * insns.def : enable compile
+
+ * yarvcore.h : add class search path scheme
+
+ * test/test_syn.rb : add switch/case test case
+
+ * tmpl/yarvarch.ja : update documents
+
+
+2004-05-22(Sat) 01:30:44 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvutil.rb : add eval_in_wrap
+
+ * test/test_*.rb : change to use eval_in_wrap
+
+
+2004-05-20(Thu) 02:50:32 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * support global variables
+
+ * benchmark/bm_*.rb : add some benchmarks
+
+ * compile.c : support NODE_ATTRASGN
+
+ * compile.c : add debugi(...)
+
+
+2004-05-19(Wed) 23:19:38 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * test/test_method.rb : added
+
+
+2004-05-19(Wed) 22:56:09 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : fix typo
+
+ * benchmark/run.rb : sort benchmark order by filename
+
+ * extconf.rb : use --enable/disable-xxx
+
+ * version.h : ditto(don't touch to change yarv options)
+
+
+2004-05-19(Wed) 21:18:55 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * yarvutil.rb : added
+
+ * test.rb, test/*, benchmark/run.rb : use yarvutil.rb
+
+ * version.h : USE_OPTIMIZED_REGEXP_MATCH added
+
+ * yarvcore.h : add idEqTilde
+
+ * yarvcore.c(yarvcore_parse, yarvcore_eval) : require file and line
+ parameter
+
+ * test/test_bin.rb : add regexp test
+
+ * benchmark/bm_regexp.rb : added
+
+
+2004-05-19(Wed) 13:57:31 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : add compile_dstr(self, node)
+
+ * compile.c : support NODE_MATCH2, NODE_MATCH3, NODE_DXSTR
+
+ * insns.def : add toregexp
+
+
+2004-05-18(Tue) 10:12:20 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support NODE_XDSTR
+
+ * test/test_bin.rb : add test for above change
+
+
+2004-05-18(Tue) 09:46:33 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def(send) : store regs before call_cfunc
+
+
+2004-05-18(Tue) 08:55:17 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : support NODE_DSTR, NODE_EVSTR
+
+ * compile.c : support NODE_XSTR
+
+ * insns.def : add tostring operation
+
+ * rb/makedocs.rb : fix directory path
+
+ * depend : add tbench rule
+
+ * yarvcore.h : add 'exten ID idBackquote'
+
+
+2004-05-18(Tue) 00:09:48 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * version.h : add USE_OPTIMIZED_BASIC_OPERATION
+
+ * yarvcore.h(struct thread_object) : add 'VALUE stat_insn_usage'
+
+
+2004-05-17(Mon) 11:28:55 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * version.h, insns.def, yarvcore.c : add FAKE_INLINE_METHOD_CACHE
+
+
+2004-05-17(Mon) 09:05:53 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * compile.c : fix generating opt_* insn process
+
+
+2004-05-17(Mon) 08:58:49 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/(bm_tarai.rb, bm_fib.rb) : added
+
+
+2004-05-17(Mon) 08:20:12 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/(bm_tak.rb, bm_reccount.rb) : added
+
+ * insns.def : test method cache(incomplete)
+
+ * insns.def : add expandarray insn
+
+ * yarvcore.c(iseq_init) : add parameter 'parent'
+
+
+2004-05-17(Mon) 01:49:48 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * benchmark/run.rb, bm_factorial.rb, bm_whileloop.rb : added
+
+ * insns.def(send) : set id to ruby_frame->orig_func
+
+ * check behavior on mswin32 and cygwin
+
+ * insns.def(send) : check stack overflow
+
+
+2004-05-16(Sun) 08:00:55 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * change frame structure(debugging)
+
+
+2004-05-14(Fri) 15:06:02 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns2vm.rb : support file name arguments
+
+
+2004-05-14(Fri) 04:33:09 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * insns.def : support (easy) constant
+
+
+2004-05-12(Wed) 01:51:48 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * rb/insns2vm.b : set directory prefix
+
+ * disasm.c : fix bug
+
+
+2004-05-12(Wed) 00:00:17 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.h, compiler.h, version.h : move *DEBUG defs to version.h
+
+
+2004-05-11(Tue) 23:00:11 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * vm.h, version.h, yarvcore.h : move gcc ver check to version.h
+ and include version.h from yarvcore.h
+
+
+2004-05-11(Tue) 19:16:26 +0900 Koichi Sasada <ko1@atdot.net>
+
+ * 0.0.0.d : imported
+
+
+Local variables:
+add-log-time-format: (lambda ()
+ (let* ((time (current-time))
+ (diff (+ (cadr time) 32400))
+ (lo (% diff 65536))
+ (hi (+ (car time) (/ diff 65536))))
+ (format-time-string "%Y-%m-%d(%a) %H:%M:%S +900" (list hi lo) t)))
+indent-tabs-mode: t
+tab-width: 8
+end:
diff --git a/doc/NEWS-1.8.7 b/doc/NEWS-1.8.7
new file mode 100644
index 0000000000..51fb5f1c6a
--- /dev/null
+++ b/doc/NEWS-1.8.7
@@ -0,0 +1,669 @@
+# -*- rdoc -*-
+
+= NEWS for Ruby 1.8.7
+
+This document is a list of user visible feature changes made between
+releases except for bug fixes.
+
+Note that each entry is kept so brief that no reason behind or
+reference information is supplied with. For a full list of changes
+with all sufficient information, see the ChangeLog file.
+
+== Changes since the 1.8.6 release
+
+=== Configuration changes
+
+* default C flags
+
+ Some C compiler flags may be added by default depending on your
+ environment. Specify optflags=.. and warnflags=.. as necessary to
+ override them.
+
+* vendor_ruby directory
+
+ A new library directory named `vendor_ruby' is introduced in
+ addition to `site_ruby'. The idea is to separate libraries
+ installed by the package system (`vendor') from manually (`site')
+ installed libraries preventing the former from getting overwritten
+ by the latter, while preserving the user option to override vendor
+ libraries with site libraries. (`site_ruby' takes precedence over
+ `vendor_ruby')
+
+ If you are a package maintainer, make each library package configure
+ the library passing the `--vendor' option to `extconf.rb' so that
+ the library files will get installed under `vendor_ruby'.
+
+ You can change the directory locations using configure options such
+ as `--with-sitedir=DIR' and `--with-vendordir=DIR'.
+
+=== Global constants
+
+* new constants
+
+ * RUBY_COPYRIGHT
+ * RUBY_DESCRIPTION
+
+=== Library updates (outstanding ones only)
+
+* new library
+
+ * securerandom
+
+* builtin classes
+
+ * Array#flatten
+ * Array#flatten!
+
+ Takes an optional argument that determines the level of recursion
+ to flatten.
+
+ * Array#eql?
+ * Array#hash
+ * Array#==
+ * Array#<=>
+
+ Handle recursive data properly.
+
+ * Array#index
+ * Array#rindex
+
+ Use a given block if no argument is given.
+
+ * Array#collect!
+ * Array#map!
+ * Array#each
+ * Array#each_index
+ * Array#reverse_each
+ * Array#reject
+ * Array#reject!
+ * Array#delete_if
+ * Array#select
+
+ Return an enumerator if no block is given.
+
+ Note that #map and #collect still return an array unlike Ruby 1.9
+ to keep compatibility.
+
+ * Array#pop
+ * Array#shift
+
+ Take an optional argument specifying the number of elements to
+ remove.
+
+ * Array#choice
+ * Array#combination
+ * Array#cycle
+ * Array#drop
+ * Array#drop_while
+ * Array#permutation
+ * Array#product
+ * Array#shuffle
+ * Array#shuffle!
+ * Array#take,
+ * Array#take_while
+
+ New methods.
+
+ * Binding#eval
+
+ New method.
+
+ * Dir#each
+ * Dir#foreach
+
+ Return an enumerator if no block is given.
+
+ * Enumerable::Enumerator
+
+ New class for various enumeration defined by the enumerator library.
+
+ * Enumerable#each_slice
+ * Enumerable#each_cons
+ * Object#to_enum
+ * Object#enum_for
+
+ New methods for various enumeration defined by the enumerator library.
+
+ * Enumerable#count
+ * Enumerable#cycle
+ * Enumerable#drop
+ * Enumerable#drop_while
+ * Enumerable#find_index
+ * Enumerable#first
+ * Enumerable#group_by
+ * Enumerable#max_by
+ * Enumerable#min_by
+ * Enumerable#minmax
+ * Enumerable#minmax_by
+ * Enumerable#none?
+ * Enumerable#one?
+ * Enumerable#take
+ * Enumerable#take_while
+
+ New methods.
+
+ * Enumerable#find
+ * Enumerable#find_all
+ * Enumerable#partition
+ * Enumerable#reject
+ * Enumerable#select
+ * Enumerable#sort_by
+
+ Return an enumerator if no block is given.
+
+ Note that #map and #collect still return an array unlike Ruby 1.9
+ to keep compatibility.
+
+ * Enumerable#inject
+
+ Accepts a binary operator instead of a block.
+
+ * Enumerable#reduce
+
+ New alias to #inject.
+
+ * Enumerable#to_a
+
+ Can take optional arguments and pass them to #each.
+
+ * Hash#eql?
+ * Hash#hash
+ * Hash#==
+
+ Handle recursive data properly.
+
+ * Hash#delete_if
+ * Hash#each
+ * Hash#each_key
+ * Hash#each_pair
+ * Hash#each_value
+ * Hash#reject!
+ * Hash#select
+ * ENV.delete_if
+ * ENV.each
+ * ENV.each_key
+ * ENV.each_pair
+ * ENV.each_value
+ * ENV.reject!
+ * ENV.select
+
+ Return an enumerator if no block is given.
+
+ * GC.stress
+ * GC.stress=
+
+ New methods.
+
+ * Integer#ord
+ * Integer#odd?
+ * Integer#even?
+ * Integer#pred
+
+ New methods.
+
+ * Integer#downto
+ * Integer#times
+ * Integer#upto
+
+ Return an enumerator if no block is given.
+
+ * IO#each
+ * IO#each_line
+ * IO#each_byte
+ * IO.foreach
+ * ARGF.each
+ * ARGF.each_line
+ * ARGF.each_byte
+
+ Return an enumerator if no block is given.
+
+ * IO#bytes
+ * IO#chars
+ * IO#each_char
+ * IO#getbyte
+ * IO#lines
+ * IO#readbyte
+ * ARGF.bytes
+ * ARGF.chars
+ * ARGF.each_char
+ * ARGF.getbyte
+ * ARGF.lines
+ * ARGF.readbyte
+
+ New methods.
+
+ * Method#name
+ * Method#owner
+ * Method#receiver
+ * UnboundMethod#name
+ * UnboundMethod#owner
+
+ New methods.
+
+ * Module#class_exec
+ * Module#module_exec
+
+ New methods.
+
+ * Numeric#step
+
+ Return an enumerator if no block is given.
+
+ * Object#instance_exec
+ * Object#tap
+
+ New methods.
+
+ * ObjectSpace.each_object
+
+ Return an enumerator if no block is given.
+
+ * Process.exec implemented.
+
+ * Range#each
+ * Range#step
+
+ Return an enumerator if no block is given.
+
+ * Regexp.union accepts an array of patterns.
+
+ * String#bytes
+
+ New method
+
+ * String#bytesize
+
+ New method, returning the size in bytes. (alias length and size)
+
+ * String#chars
+ * String#each_char
+ * String#lines
+ * String#partition
+ * String#rpartition
+ * String#start_with?
+ * String#end_with?
+
+ New methods. These are $KCODE aware unlike #index, #rindex and
+ #include?.
+
+ * String#each_byte
+ * String#each
+ * String#each_line
+ * String#gsub(pattern)
+
+ Return an enumerator if no block is given.
+
+ * String#upto
+
+ An optional second argument is added to specify if the last value
+ should be included.
+
+ * StopIteration
+
+ New exception class that causes Kernel#loop to stop iteration when
+ raised.
+
+ * Struct#each
+ * Struct#each_pair
+
+ Return an enumerator if no block is given.
+
+ * Symbol#to_proc
+
+ New method.
+
+ * __method__
+
+ New global function that returns the name of the current method as
+ a Symbol.
+
+* enumerator
+
+ * Enumerator is now a built-in module. The #next and #rewind
+ methods are implemented using the "generator" library. Use with
+ care and be aware of the performance loss.
+
+* ipaddr
+
+ * New methods
+ * IPAddr#<=>
+ * IPAddr#succ
+
+ IPAddr objects are now comparable and enumerable having these
+ methods. This also means that it is possible to have a Range
+ object between two IPAddr objects.
+
+ * IPAddr#to_range
+
+ A new method to create a Range object for the (network) address.
+
+ * Type coercion support
+ * IPAddr#&
+ * IPAddr#|
+ * IPAddr#==
+ * IPAddr#include?
+
+ These methods now accept a string or an integer instead of an
+ IPAddr object as the argument.
+
+* net/smtp
+
+ * Support SSL/TLS.
+
+* openssl
+
+ * New classes
+ * OpenSSL::PKey::EC
+ * OpenSSL::PKey::EC::Group
+ * OpenSSL::PKey::EC::Point
+ * OpenSSL::PKey::PKCS5
+ * OpenSSL::SSL::Session
+
+ * Documentation!
+
+ * Various new methods (see documentation).
+
+ * Remove redundant module namespace in Cipher, Digest, PKCS7, PKCS12.
+ Compatibility classes are provided which will be removed in Ruby 1.9.
+
+* shellwords
+
+ * Add methods for escaping shell-unsafe characters:
+ * Shellwords.join
+ * Shellwords.escape
+ * Array#shelljoin
+ * String#shellescape
+
+ * Add shorthand methods:
+ * Shellwords.split (alias shellwords)
+ * String#shellsplit
+
+* stringio
+
+ * StringIO#getbyte
+ * StringIO#readbyte
+
+ New methods. (aliases for compatibility with 1.9)
+
+ * StringIO#each_char
+ * StringIO#chars
+
+ New methods.
+
+ * StringIO#each
+ * StringIO#each_line
+ * StringIO#each_byte
+
+ Return an enumerator if no block is given.
+
+* tempfile
+
+ * Tempfile.open and Tempfile.new now accept a suffix for the
+ temporary file to be created. To specify a suffix, pass an array
+ of [basename, suffix] as the first argument.
+
+ Tempfile.open(['image', 'jpg']) { |tempfile| ... }
+
+* tmpdir
+
+ * New method:
+
+ * Dir.mktmpdir
+
+* uri
+
+ * added LDAPS scheme.
+ * Change for RFC3986:
+ * FTP
+ * URI('ftp://example.com/foo').path #=> 'foo'
+ * URI('ftp://example.com/%2Ffoo').path #=> '/foo'
+ * URI::FTP.build([nil, 'example.com', nil, '/foo', 'i').to_s #=> 'ftp://example.com/%2Ffoo;type=i'
+ * URI merge
+ * URI('http://a/b/c/d;p?q').merge('?y') == URI('http://a/b/c/d;p?y')
+ * URI('http://a/b/c/d;p?q').merge('/./g') == URI('http://a/g')
+ * URI('http://a/b/c/d;p?q').merge('/../g') == URI('http://a/g')
+ * URI('http://a/b/c/d;p?q').merge('../../../g') == URI('http://a/g')
+ * URI('http://a/b/c/d;p?q').merge('../../../../g') == URI('http://a/g')
+
+* rss
+
+ * 0.1.6 -> 0.2.4
+
+ * Fix image module URI
+
+ * Atom support
+
+ * ITunes module support
+
+ * Slash module support
+
+ * content:encoded with RSS 2.0 support
+
+=== Interpreter Implementation
+
+* passing a block to a Proc [experimental]
+
+ This implementation in current shape is known to be buggy/broken,
+ especially with nested block invocation. Take this as an
+ experimental feature.
+
+* stack trace
+
+ On non-SystemStackError exception, full stack trace is shown.
+
+=== Compatibility issues (excluding feature bug fixes)
+
+* String#slice! had some unintentional bugs and they have been fixed
+ because either they disagreed with documentation or their respective
+ behavior of #slice. Unfortunately, this causes some
+ incompatibilities in the following (somewhat rare) cases.
+
+ * #slice! no longer expands the array when an out-of-boundary value
+ is given.
+
+ # Ruby 1.8.6
+ a = [1,2]
+ a.slice!(4,0) #=> nil
+ a #=> [1,2,nil,nil]
+
+ # Ruby 1.8.7
+ a = [1,2]
+ a.slice!(4,0) #=> nil
+ a #=> [1,2]
+
+ * #slice! no longer raises an exception but returns nil when a
+ negative length or out-of-boundary negative position is given.
+
+ # Ruby 1.8.6
+ a = [1,2]
+ a.slice!(1,-1) #=> (raises IndexError)
+ a.slice!(-5,1) #=> (raises IndexError)
+
+ # Ruby 1.8.7
+ a = [1,2]
+ a.slice!(1,-1) #=> nil
+ a.slice!(-5,1) #=> nil
+
+* String#to_i, String#hex and String#oct no longer accept a sequence
+ of underscores (`__') as part of a number.
+
+ # Ruby 1.8.6
+ '1__0'.to_i #=> 10
+ '1__0'.to_i(2) #=> 2 # 0b10
+ '1__0'.oct #=> 8 # 010
+ '1__0'.hex #=> 16 # 0x10
+
+ # Ruby 1.8.7
+ '1__0'.to_i #=> 1
+ '1__0'.to_i(2) #=> 1
+ '1__0'.oct #=> 1
+ '1__0'.hex #=> 1
+
+ The old behavior was inconsistent with Ruby syntax and considered as
+ a bug.
+
+* date
+
+ * Date.parse
+
+ '##.##.##' (where each '#' is a digit) is now taken as 'YY.MM.DD'
+ instead of 'MM.DD.YY'. While the change may confuse you, you can
+ always use Date.strptime() when you know what you are dealing
+ with.
+
+* REXML
+
+ * REXML::Document.entity_expansion_limit=
+
+ New method to set the entity expansion limit. By default the limit is
+ set to 10000. See the following URL for details.
+
+ http://www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/
+
+* stringio
+
+ * StringIO#each_byte
+
+ The return value changed from nil to self. This is what the
+ document says and the same as each_line() does.
+
+* tempfile
+
+ * The file name format has changed. No dots are included by default
+ in temporary file names any more. See above for how to specify a
+ suffix.
+
+* uri
+
+ * See above for details.
+
+== Changes since the 1.8.5 release
+
+=== New platforms/build tools support
+
+* IA64 HP-UX
+
+* Visual C++ 8 SP1
+
+* autoconf 2.6x
+
+=== Global constants
+
+* RUBY_PATCHLEVEL
+
+ New constant since 1.8.5-p1.
+
+=== Library updates (outstanding ones only)
+
+* builtin classes
+
+ * New method: Kernel#instance_variable_defined?
+
+ * New method: Module#class_variable_defined?
+
+ * New feature: Dir::glob() can now take an array of glob patterns.
+
+* date
+
+ * Updated based on date2 4.0.3.
+
+* digest
+
+ * New internal APIs for C and Ruby.
+
+ * Support for autoloading.
+
+ require 'digest'
+
+ # autoloads digest/md5
+ md = Digest::MD5.digest("string")
+
+ * New digest class methods: file
+
+ * New digest instance methods: clone, reset, new, inspect,
+ digest_length (alias size or length), block_length()
+
+ * New library: digest/bubblebabble
+
+ * New function: Digest(name)
+
+* fileutils
+
+ * New option for FileUtils.cp_r(): :remove_destination
+
+* nkf
+
+ * Updated based on nkf as of 2007-01-28.
+
+* thread
+
+ * Replaced with much faster mutex implementation in C. The former
+ implementation, which is slow but considered to be stable, is
+ available with a configure option `--disable-fastthread'.
+
+* tk
+
+ * Updated Tile extension support based on Tile 0.7.8.
+
+ * Support --without-X11 configure option for non-X11 versions of
+ Tcl/Tk (e.g. Tcl/Tk Aqua).
+
+ * New sample script: irbtkw.rbw -- IRB on Ruby/Tk. It has no trouble
+ about STDIN blocking on Windows.
+
+* webrick
+
+ * New method: WEBrick::Cookie.parse_set_cookies()
+
+=== Compatibility issues (excluding feature bug fixes)
+
+* builtin classes
+
+ * String#intern now raises SecurityError when $SAFE level is greater
+ than zero.
+
+* date
+
+ * Time#to_date and Time#to_datetime are added as private methods.
+ They cause name conflict error in ActiveSupport 1.4.1 and prior,
+ which comes with Rails 1.2.2 and prior. Updating ActiveSupport
+ and/or Rails to the latest versions fixes the problem.
+
+* digest
+
+ * The constructor does no longer take an initial string to feed.
+ The following examples show how to migrate:
+
+ # Before
+ md = Digest::MD5.new("string")
+ # After (works with any version)
+ md = Digest::MD5.new.update("string")
+
+ # Before
+ hd = Digest::MD5.new("string").hexdigest
+ # After (works with any version)
+ hd = Digest::MD5.hexdigest("string")
+
+ * Digest::Base#==
+
+ * self == string
+
+ Automatic detection between binary digest values and hexadecimal
+ digest values has been dropped. It is always assumed that a
+ hexadecimal digest value is given for comparison.
+
+ * self == md
+
+ Digest objects are compared by the resulting digest values, not
+ by the exact vector states.
+
+* fileutils
+
+ * A minor implementation change breaks Rake <=0.7.1.
+ Updating Rake to 0.7.2 or higher fixes the problem.
+
+* tk
+
+ * Tk::X_Scrollable (Y_Scrollable) is renamed to Tk::XScrollable
+ (YScrollable). Tk::X_Scrollable (Y_Scrollable) is still available,
+ but it is an alias name.
diff --git a/doc/NEWS-1.9.1 b/doc/NEWS-1.9.1
new file mode 100644